From 6419e3d53a690608b8f5df02acbd5aafff879370 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 8 Apr 2024 23:54:06 +0100 Subject: [PATCH 01/75] chore(NA): update versions after v8.13.3 bump (#180299) This PR is a simple update of our versions file after the recent bumps. --- versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.json b/versions.json index 1f8467c72b636a..bfd9f121c27402 100644 --- a/versions.json +++ b/versions.json @@ -8,7 +8,7 @@ "currentMinor": true }, { - "version": "8.13.2", + "version": "8.13.3", "branch": "8.13", "currentMajor": true, "previousMinor": true From 0b450739b2ce8c4d5179d2a4c4e57f084282e51e Mon Sep 17 00:00:00 2001 From: Philippe Oberti Date: Mon, 8 Apr 2024 17:55:43 -0500 Subject: [PATCH 02/75] [Security Solution] fix endpoint filter flyout shown behind timeline (#180077) ## Summary This PR fixes an issue introduced in [this PR](https://github.com/elastic/kibana/pull/177087) where - in order to get the expandable flyout to work within timeline - we had to modify the `z-index` of the timeline modal ([here](https://github.com/elastic/kibana/pull/177087/files#diff-a4fef8db9f9e4c1a86b8fcc0f859b10420a1ff0c1c5c091eace92cf0643ca58c)) as well as the _secondary flyouts_ accessed through the `Take action` button in the flyout's footer. Obviously I had missed this endpoint filter flyout. https://github.com/elastic/kibana/assets/17276605/66fa62ce-6dde-43e5-b79b-9620b5c21d98 https://github.com/elastic/kibana/issues/179879 --- .../side_panel/event_details/flyout/footer.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/footer.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/footer.tsx index 97a7e9196ae4df..ea0df8fd3c684f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/footer.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/footer.tsx @@ -6,7 +6,7 @@ */ import React, { useCallback, useMemo, useState } from 'react'; -import { EuiFlyoutFooter, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiFlyoutFooter, EuiFlexGroup, EuiFlexItem, useEuiTheme } from '@elastic/eui'; import { find } from 'lodash/fp'; import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { isActiveTimeline } from '../../../../../helpers'; @@ -52,6 +52,12 @@ export const FlyoutFooterComponent = ({ scopeId, refetchFlyoutData, }: FlyoutFooterProps) => { + const { euiTheme } = useEuiTheme(); + const flyoutZIndex = useMemo( + () => ({ style: `z-index: ${(euiTheme.levels.flyout as number) + 3}` }), + [euiTheme] + ); + const alertId = detailsEcsData?.kibana?.alert ? detailsEcsData?._id : null; const ruleIndexRaw = useMemo( () => @@ -165,7 +171,12 @@ export const FlyoutFooterComponent = ({ /> )} {isAddEventFilterModalOpen && detailsEcsData != null && ( - + )} {isOsqueryFlyoutOpenWithAgentId && detailsEcsData != null && ( Date: Tue, 9 Apr 2024 00:58:34 +0200 Subject: [PATCH 03/75] Add connectors support for playground (#179676) ## Summary - Add connectors flyout to playground - Add set up gen-ai panel - Create feature connector id - Use encrypted objects on the server - Use management Locator for navigating to connectors management - Pass dependencies to embeddable app image image --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../impl}/llm/actions_client_llm.test.ts | 7 +- .../impl}/llm/actions_client_llm.ts | 14 +- .../impl/llm/helpers.test.ts | 27 ++++ .../impl/llm/helpers.ts | 13 ++ .../impl/llm/index.ts | 9 ++ .../impl}/llm/openai.ts | 14 +- .../impl/llm/types.ts | 40 +++++ .../impl/mock/mock_action_response/index.ts | 11 ++ .../tsconfig.json | 2 + .../api/conversations/conversations.ts | 4 +- .../use_bulk_actions_conversations.ts | 4 +- .../assistant/chat_send/use_chat_send.tsx | 7 +- .../impl/assistant/helpers.ts | 6 +- .../impl/assistant/prompt/helpers.test.ts | 16 +- .../impl/assistant/prompt/helpers.ts | 12 +- .../assistant/use_conversation/index.test.tsx | 6 +- .../impl/assistant/use_conversation/index.tsx | 8 +- .../use_conversation/sample_conversations.tsx | 4 +- .../impl/assistant_context/types.tsx | 18 +-- .../connectorland/connector_setup/index.tsx | 4 +- .../packages/kbn-elastic-assistant/index.ts | 4 +- .../common/connector_feature_config.ts | 15 ++ .../execute_custom_llm_chain/index.test.ts | 11 +- .../execute_custom_llm_chain/index.ts | 4 +- .../executors/openai_functions_executor.ts | 11 +- .../server/lib/langchain/helpers.test.ts | 19 +-- .../server/lib/langchain/helpers.ts | 7 +- .../server/lib/langchain/types.ts | 33 ---- .../server/routes/evaluate/post_evaluate.ts | 3 +- .../plugins/elastic_assistant/tsconfig.json | 1 - .../plugins/search_playground/common/types.ts | 16 ++ x-pack/plugins/search_playground/kibana.jsonc | 6 +- .../public/components/chat.tsx | 12 +- .../message_list/assistant_message.tsx | 4 +- .../components/message_list/user_message.tsx | 21 ++- ...up_connector_panel_for_start_chat.test.tsx | 72 +++++++++ .../set_up_connector_panel_for_start_chat.tsx | 94 ++++++++++++ .../public/components/start_chat_panel.tsx | 2 +- .../public/components/start_new_chat.tsx | 10 +- .../summarization_panel/open_ai_icon.tsx | 17 --- .../open_ai_key_callout.tsx | 40 ----- .../summarization_panel/open_ai_key_field.tsx | 65 -------- .../open_ai_key_flyout.tsx | 123 --------------- .../open_ai_summarization_model.tsx | 102 ------------- .../summarization_model.test.tsx | 46 ++++++ .../summarization_model.tsx | 98 ++++++++++++ .../summarization_panel.tsx | 48 ++---- .../summarization_panel_for_start_chat.tsx | 48 ------ .../examples/py_lang_client.test.tsx | 2 +- .../view_code/examples/py_lang_client.tsx | 2 +- .../search_playground/public/embeddable.tsx | 51 +++---- .../public/hooks/use_llms_models.test.ts | 130 ++++++++++++++++ .../public/hooks/use_llms_models.ts | 54 +++++++ .../public/hooks/use_load_connectors.test.ts | 113 ++++++++++++++ .../public/hooks/use_load_connectors.ts | 111 ++++++++++++++ .../public/hooks/use_management_link.test.ts | 70 +++++++++ .../public/hooks/use_management_link.ts | 32 ++++ .../public/hooks/use_user_profile.ts | 25 +++ .../search_playground/public/plugin.ts | 4 +- .../public/providers/playground_provider.tsx | 12 +- .../plugins/search_playground/public/types.ts | 26 +++- .../search_playground/server/plugin.ts | 20 ++- .../search_playground/server/routes.ts | 144 +++++++++++------- .../plugins/search_playground/server/types.ts | 6 + .../plugins/search_playground/tsconfig.json | 9 +- .../assistant/comment_actions/index.tsx | 4 +- .../assistant/get_comments/index.test.tsx | 4 +- .../public/assistant/get_comments/index.tsx | 6 +- .../server/connector_types/openai/index.ts | 2 + 69 files changed, 1289 insertions(+), 696 deletions(-) rename x-pack/{plugins/elastic_assistant/server/lib/langchain => packages/kbn-elastic-assistant-common/impl}/llm/actions_client_llm.test.ts (93%) rename x-pack/{plugins/elastic_assistant/server/lib/langchain => packages/kbn-elastic-assistant-common/impl}/llm/actions_client_llm.ts (91%) create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.test.ts create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.ts create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/llm/index.ts rename x-pack/{plugins/elastic_assistant/server/lib/langchain => packages/kbn-elastic-assistant-common/impl}/llm/openai.ts (95%) create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/llm/types.ts create mode 100644 x-pack/packages/kbn-elastic-assistant-common/impl/mock/mock_action_response/index.ts create mode 100644 x-pack/plugins/search_playground/public/components/set_up_connector_panel_for_start_chat.test.tsx create mode 100644 x-pack/plugins/search_playground/public/components/set_up_connector_panel_for_start_chat.tsx delete mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_icon.tsx delete mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_callout.tsx delete mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_field.tsx delete mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_flyout.tsx delete mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_summarization_model.tsx create mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.test.tsx create mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.tsx delete mode 100644 x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel_for_start_chat.tsx create mode 100644 x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts create mode 100644 x-pack/plugins/search_playground/public/hooks/use_llms_models.ts create mode 100644 x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts create mode 100644 x-pack/plugins/search_playground/public/hooks/use_load_connectors.ts create mode 100644 x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts create mode 100644 x-pack/plugins/search_playground/public/hooks/use_management_link.ts create mode 100644 x-pack/plugins/search_playground/public/hooks/use_user_profile.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/llm/actions_client_llm.test.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/actions_client_llm.test.ts similarity index 93% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/llm/actions_client_llm.test.ts rename to x-pack/packages/kbn-elastic-assistant-common/impl/llm/actions_client_llm.test.ts index c71a6583227485..9a0b98c02586ec 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/llm/actions_client_llm.test.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/actions_client_llm.test.ts @@ -10,8 +10,7 @@ import type { PluginStartContract as ActionsPluginStart } from '@kbn/actions-plu import { loggerMock } from '@kbn/logging-mocks'; import { ActionsClientLlm } from './actions_client_llm'; -import { mockActionResponse } from '../../../__mocks__/action_result_data'; -import { ExecuteConnectorRequestBody } from '@kbn/elastic-assistant-common'; +import { mockActionResponse } from '../mock/mock_action_response'; const connectorId = 'mock-connector-id'; @@ -30,14 +29,14 @@ const mockActions = { const prompt = 'Do you know my name?'; -const mockRequest: KibanaRequest = { +const mockRequest: KibanaRequest = { params: { connectorId }, body: { message: prompt, subAction: 'invokeAI', isEnabledKnowledgeBase: true, }, -} as KibanaRequest; +} as KibanaRequest; describe('ActionsClientLlm', () => { beforeEach(() => { diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/llm/actions_client_llm.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/actions_client_llm.ts similarity index 91% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/llm/actions_client_llm.ts rename to x-pack/packages/kbn-elastic-assistant-common/impl/llm/actions_client_llm.ts index 7b022c52434ce6..7dd11097eb6613 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/llm/actions_client_llm.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/actions_client_llm.ts @@ -11,8 +11,7 @@ import type { PluginStartContract as ActionsPluginStart } from '@kbn/actions-plu import { LLM } from '@langchain/core/language_models/llms'; import { get } from 'lodash/fp'; -import { ExecuteConnectorRequestBody } from '@kbn/elastic-assistant-common'; -import { getMessageContentAndRole } from '../helpers'; +import { getMessageContentAndRole } from './helpers'; const LLM_TYPE = 'ActionsClientLlm'; @@ -21,7 +20,8 @@ interface ActionsClientLlmParams { connectorId: string; llmType?: string; logger: Logger; - request: KibanaRequest; + request: KibanaRequest; + model?: string; traceId?: string; } @@ -29,19 +29,22 @@ export class ActionsClientLlm extends LLM { #actions: ActionsPluginStart; #connectorId: string; #logger: Logger; - #request: KibanaRequest; + #request: KibanaRequest; #traceId: string; // Local `llmType` as it can change and needs to be accessed by abstract `_llmType()` method // Not using getter as `this._llmType()` is called in the constructor via `super({})` protected llmType: string; + model?: string; + constructor({ actions, connectorId, traceId = uuidv4(), llmType, logger, + model, request, }: ActionsClientLlmParams) { super({}); @@ -52,6 +55,7 @@ export class ActionsClientLlm extends LLM { this.llmType = llmType ?? LLM_TYPE; this.#logger = logger; this.#request = request; + this.model = model; } _llmType() { @@ -80,7 +84,7 @@ export class ActionsClientLlm extends LLM { // hard code to non-streaming subaction as this class only supports non-streaming subAction: 'invokeAI', subActionParams: { - model: this.#request.body.model, + model: this.model, messages: [assistantMessage], // the assistant message ...(this.llmType === 'openai' ? { n: 1, stop: null, temperature: 0.2 } diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.test.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.test.ts new file mode 100644 index 00000000000000..c98300aa64c788 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.test.ts @@ -0,0 +1,27 @@ +/* + * 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. + */ + +import { Message } from '../schemas'; +import { getMessageContentAndRole } from './helpers'; + +describe('helpers', () => { + describe('getMessageContentAndRole', () => { + const testCases: Array<[string, Pick]> = [ + ['Prompt 1', { content: 'Prompt 1', role: 'user' }], + ['Prompt 2', { content: 'Prompt 2', role: 'user' }], + ['', { content: '', role: 'user' }], + ]; + + testCases.forEach(([prompt, expectedOutput]) => { + test(`Given the prompt "${prompt}", it returns the prompt as content with a "user" role`, () => { + const result = getMessageContentAndRole(prompt); + + expect(result).toEqual(expectedOutput); + }); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.ts new file mode 100644 index 00000000000000..4688ab122c4f31 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/helpers.ts @@ -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. + */ + +import { Message } from '../schemas'; + +export const getMessageContentAndRole = (prompt: string): Pick => ({ + content: prompt, + role: 'user', +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/llm/index.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/index.ts new file mode 100644 index 00000000000000..07015185eb5bbf --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export { ActionsClientChatOpenAI } from './openai'; +export { ActionsClientLlm } from './actions_client_llm'; diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/llm/openai.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/openai.ts similarity index 95% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/llm/openai.ts rename to x-pack/packages/kbn-elastic-assistant-common/impl/llm/openai.ts index c5ad258ba6eb4e..0e81cd1af155ef 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/llm/openai.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/openai.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + import { v4 as uuidv4 } from 'uuid'; import { KibanaRequest, Logger } from '@kbn/core/server'; import type { PluginStartContract as ActionsPluginStart } from '@kbn/actions-plugin/server'; @@ -17,8 +18,7 @@ import { ChatCompletionCreateParamsStreaming, ChatCompletionCreateParamsNonStreaming, } from 'openai/resources/chat/completions'; -import { ExecuteConnectorRequestBody } from '@kbn/elastic-assistant-common'; -import { InvokeAIActionParamsSchema } from '../types'; +import { InvokeAIActionParamsSchema } from './types'; const LLM_TYPE = 'ActionsClientChatOpenAI'; @@ -27,10 +27,11 @@ interface ActionsClientChatOpenAIParams { connectorId: string; llmType?: string; logger: Logger; - request: KibanaRequest; + request: KibanaRequest; streaming?: boolean; traceId?: string; maxRetries?: number; + model?: string; signal?: AbortSignal; } @@ -51,12 +52,13 @@ export class ActionsClientChatOpenAI extends ChatOpenAI { // ChatOpenAI class needs these, but they do not matter as we override the openai client with the actions client azureOpenAIApiKey = ''; openAIApiKey = ''; + model?: string; // Kibana variables #actions: ActionsPluginStart; #connectorId: string; #logger: Logger; - #request: KibanaRequest; + #request: KibanaRequest; #actionResultData: string; #traceId: string; #signal?: AbortSignal; @@ -68,6 +70,7 @@ export class ActionsClientChatOpenAI extends ChatOpenAI { logger, request, maxRetries, + model, signal, }: ActionsClientChatOpenAIParams) { super({ @@ -90,6 +93,7 @@ export class ActionsClientChatOpenAI extends ChatOpenAI { this.#actionResultData = ''; this.streaming = true; this.#signal = signal; + this.model = model; } getActionResultData(): string { @@ -173,7 +177,7 @@ export class ActionsClientChatOpenAI extends ChatOpenAI { temperature: completionRequest.temperature, functions: completionRequest.functions, // possible client model override - model: this.#request.body.model ?? completionRequest.model, + model: this.model ?? completionRequest.model, // ensure we take the messages from the completion request, not the client request messages: completionRequest.messages.map((message) => ({ role: message.role, diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/llm/types.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/types.ts new file mode 100644 index 00000000000000..85c970b1b948aa --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/llm/types.ts @@ -0,0 +1,40 @@ +/* + * 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. + */ + +import { + ChatCompletionContentPart, + ChatCompletionCreateParamsNonStreaming, +} from 'openai/resources/chat/completions'; + +export interface InvokeAIActionParamsSchema { + messages: Array<{ + role: string; + content: string | ChatCompletionContentPart[]; + name?: string; + function_call?: { + arguments: string; + name: string; + }; + tool_calls?: Array<{ + id: string; + + function: { + arguments: string; + name: string; + }; + + type: string; + }>; + tool_call_id?: string; + }>; + model?: ChatCompletionCreateParamsNonStreaming['model']; + n?: ChatCompletionCreateParamsNonStreaming['n']; + stop?: ChatCompletionCreateParamsNonStreaming['stop']; + temperature?: ChatCompletionCreateParamsNonStreaming['temperature']; + functions?: ChatCompletionCreateParamsNonStreaming['functions']; + signal?: AbortSignal; +} diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/mock/mock_action_response/index.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/mock/mock_action_response/index.ts new file mode 100644 index 00000000000000..dbc095a334cead --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/mock/mock_action_response/index.ts @@ -0,0 +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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const mockActionResponse = { + message: 'Yes, your name is Andrew. How can I assist you further, Andrew?', + usage: { prompt_tokens: 4, completion_tokens: 10, total_tokens: 14 }, +}; diff --git a/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json b/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json index d4d082d9c13e53..73f57730b9a673 100644 --- a/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json +++ b/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json @@ -19,5 +19,7 @@ "@kbn/zod-helpers", "@kbn/securitysolution-io-ts-utils", "@kbn/core", + "@kbn/actions-plugin", + "@kbn/logging-mocks", ] } diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts index c59c185c4334b0..5d7efc56fcc674 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts @@ -13,7 +13,7 @@ import { ApiConfig, Replacements, } from '@kbn/elastic-assistant-common'; -import { Conversation, Message } from '../../../assistant_context/types'; +import { Conversation, ClientMessage } from '../../../assistant_context/types'; export interface GetConversationByIdParams { http: HttpSetup; @@ -149,7 +149,7 @@ export interface PutConversationMessageParams { toasts?: IToasts; conversationId: string; title?: string; - messages?: Message[]; + messages?: ClientMessage[]; apiConfig?: ApiConfig; replacements?: Replacements; excludeFromLastConversationStorage?: boolean; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_bulk_actions_conversations.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_bulk_actions_conversations.ts index a0ae2475233ac1..053d9a8a082dce 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_bulk_actions_conversations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_bulk_actions_conversations.ts @@ -12,7 +12,7 @@ import { ELASTIC_AI_ASSISTANT_API_CURRENT_VERSION, ApiConfig, } from '@kbn/elastic-assistant-common'; -import { Conversation, Message } from '../../../assistant_context/types'; +import { Conversation, ClientMessage } from '../../../assistant_context/types'; export interface BulkActionSummary { failed: number; @@ -52,7 +52,7 @@ export interface BulkActionResponse { export interface ConversationUpdateParams { id?: string; title?: string; - messages?: Message[]; + messages?: ClientMessage[]; apiConfig?: ApiConfig; } diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx index 8f7b31bbe141ea..157e3e2579b6a1 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx @@ -8,11 +8,12 @@ import React, { useCallback } from 'react'; import { HttpSetup } from '@kbn/core-http-browser'; import { i18n } from '@kbn/i18n'; +import type { ClientMessage } from '../../assistant_context/types'; import { SelectedPromptContext } from '../prompt_context/types'; import { useSendMessage } from '../use_send_message'; import { useConversation } from '../use_conversation'; import { getCombinedMessage } from '../prompt/helpers'; -import { Conversation, Message, Prompt, useAssistantContext } from '../../..'; +import { Conversation, Prompt, useAssistantContext } from '../../..'; import { getMessageFromRawResponse } from '../helpers'; import { getDefaultSystemPrompt } from '../use_conversation/helpers'; @@ -126,7 +127,7 @@ export const useChatSend = ({ isEnabledRAGAlerts, }); - const responseMessage: Message = getMessageFromRawResponse(rawResponse); + const responseMessage: ClientMessage = getMessageFromRawResponse(rawResponse); setCurrentConversation({ ...currentConversation, @@ -184,7 +185,7 @@ export const useChatSend = ({ replacements: {}, }); - const responseMessage: Message = getMessageFromRawResponse(rawResponse); + const responseMessage: ClientMessage = getMessageFromRawResponse(rawResponse); setCurrentConversation({ ...currentConversation, messages: [...updatedMessages, responseMessage], diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts index 7ef52835544b60..bee0aa12d04e16 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts @@ -9,10 +9,12 @@ import { merge } from 'lodash/fp'; import { AIConnector } from '../connectorland/connector_selector'; import { FetchConnectorExecuteResponse, FetchConversationsResponse } from './api'; import { Conversation } from '../..'; -import type { Message } from '../assistant_context/types'; +import type { ClientMessage } from '../assistant_context/types'; import { enterpriseMessaging, WELCOME_CONVERSATION } from './use_conversation/sample_conversations'; -export const getMessageFromRawResponse = (rawResponse: FetchConnectorExecuteResponse): Message => { +export const getMessageFromRawResponse = ( + rawResponse: FetchConnectorExecuteResponse +): ClientMessage => { const { response, isStream, isError } = rawResponse; const dateTimeString = new Date().toLocaleString(); // TODO: Pull from response if (rawResponse) { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts index f264ee3e86018a..c41e956d59d50a 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { Message } from '../../assistant_context/types'; +import type { ClientMessage } from '../../assistant_context/types'; import { getCombinedMessage, getSystemMessages } from './helpers'; import { mockGetAnonymizedValue } from '../../mock/get_anonymized_value'; import { mockSystemPrompt } from '../../mock/system_prompt'; @@ -39,7 +39,7 @@ describe('helpers', () => { }); describe('when isNewChat is true and selectedSystemPrompt is defined', () => { - let result: Message[]; + let result: ClientMessage[]; beforeEach(() => { result = getSystemMessages({ isNewChat: true, selectedSystemPrompt: mockSystemPrompt }); @@ -63,7 +63,7 @@ describe('helpers', () => { describe('getCombinedMessage', () => { it('returns correct content for a new chat with a system prompt', async () => { - const message: Message = await getCombinedMessage({ + const message: ClientMessage = await getCombinedMessage({ currentReplacements: {}, isNewChat: true, promptText: 'User prompt text', @@ -85,7 +85,7 @@ User prompt text`); }); it('returns correct content for a new chat WITHOUT a system prompt', async () => { - const message: Message = await getCombinedMessage({ + const message: ClientMessage = await getCombinedMessage({ currentReplacements: {}, isNewChat: true, promptText: 'User prompt text', @@ -106,7 +106,7 @@ User prompt text`); }); it('returns the correct content for an existing chat', async () => { - const message: Message = await getCombinedMessage({ + const message: ClientMessage = await getCombinedMessage({ currentReplacements: {}, isNewChat: false, promptText: 'User prompt text', @@ -125,7 +125,7 @@ User prompt text`); }); it('returns the expected role', async () => { - const message: Message = await getCombinedMessage({ + const message: ClientMessage = await getCombinedMessage({ currentReplacements: {}, isNewChat: true, promptText: 'User prompt text', @@ -139,7 +139,7 @@ User prompt text`); }); it('returns a valid timestamp', async () => { - const message: Message = await getCombinedMessage({ + const message: ClientMessage = await getCombinedMessage({ currentReplacements: {}, isNewChat: true, promptText: 'User prompt text', @@ -185,7 +185,7 @@ User prompt text`); it('returns the expected content when `isNewChat` is false', async () => { const isNewChat = false; // <-- not a new chat - const message: Message = await getCombinedMessage({ + const message: ClientMessage = await getCombinedMessage({ currentReplacements: {}, getAnonymizedValue: mockGetAnonymizedValue, isNewChat, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts index 0266a4ae002c65..eb75e19bb79818 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts @@ -6,8 +6,8 @@ */ import { Replacements, transformRawData } from '@kbn/elastic-assistant-common'; +import type { ClientMessage } from '../../assistant_context/types'; import { getAnonymizedValue as defaultGetAnonymizedValue } from '../get_anonymized_value'; -import type { Message } from '../../assistant_context/types'; import type { SelectedPromptContext } from '../prompt_context/types'; import type { Prompt } from '../types'; import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from '../../content/prompts/system/translations'; @@ -18,12 +18,12 @@ export const getSystemMessages = ({ }: { isNewChat: boolean; selectedSystemPrompt: Prompt | undefined; -}): Message[] => { +}): ClientMessage[] => { if (!isNewChat || selectedSystemPrompt == null) { return []; } - const message: Message = { + const message: ClientMessage = { content: selectedSystemPrompt.content, role: 'system', timestamp: new Date().toLocaleString(), @@ -31,7 +31,9 @@ export const getSystemMessages = ({ return [message]; }; - +interface ClientMessageWithReplacements extends ClientMessage { + replacements: Replacements; +} export function getCombinedMessage({ currentReplacements, getAnonymizedValue = defaultGetAnonymizedValue, @@ -52,7 +54,7 @@ export function getCombinedMessage({ promptText: string; selectedPromptContexts: Record; selectedSystemPrompt: Prompt | undefined; -}): Message { +}): ClientMessageWithReplacements { let replacements: Replacements = currentReplacements ?? {}; const onNewReplacements = (newReplacements: Replacements) => { replacements = { ...replacements, ...newReplacements }; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx index 8623cf221ace8f..0cc7ddb8aed1e5 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx @@ -9,7 +9,7 @@ import { useConversation } from '.'; import { act, renderHook } from '@testing-library/react-hooks'; import { TestProviders } from '../../mock/test_providers/test_providers'; import React from 'react'; -import { ConversationRole } from '../../assistant_context/types'; +import { MessageRole } from '@kbn/elastic-assistant-common'; import { httpServiceMock } from '@kbn/core/public/mocks'; import { WELCOME_CONVERSATION } from './sample_conversations'; import { @@ -21,12 +21,12 @@ import { jest.mock('../api/conversations'); const message = { content: 'You are a robot', - role: 'user' as ConversationRole, + role: 'user' as MessageRole, timestamp: '10/04/2023, 1:00:36 PM', }; const anotherMessage = { content: 'I am a robot', - role: 'assistant' as ConversationRole, + role: 'assistant' as MessageRole, timestamp: '10/04/2023, 1:00:46 PM', }; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx index b39ea430d99948..d8740937b8f3e6 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx @@ -9,7 +9,7 @@ import { useCallback } from 'react'; import { ApiConfig } from '@kbn/elastic-assistant-common'; import { useAssistantContext } from '../../assistant_context'; -import { Conversation, Message } from '../../assistant_context/types'; +import { Conversation, ClientMessage } from '../../assistant_context/types'; import * as i18n from './translations'; import { getDefaultSystemPrompt } from './helpers'; import { @@ -30,7 +30,7 @@ export const DEFAULT_CONVERSATION_STATE: Conversation = { interface CreateConversationProps { cTitle: string; - messages?: Message[]; + messages?: ClientMessage[]; } interface SetApiConfigProps { @@ -42,7 +42,7 @@ interface UseConversation { clearConversation: (conversation: Conversation) => Promise; getDefaultConversation: ({ cTitle, messages }: CreateConversationProps) => Conversation; deleteConversation: (conversationId: string) => void; - removeLastMessage: (conversationId: string) => Promise; + removeLastMessage: (conversationId: string) => Promise; setApiConfig: ({ conversation, apiConfig, @@ -66,7 +66,7 @@ export const useConversation = (): UseConversation => { */ const removeLastMessage = useCallback( async (conversationId: string) => { - let messages: Message[] = []; + let messages: ClientMessage[] = []; const prevConversation = await getConversationById({ http, id: conversationId, toasts }); if (prevConversation != null) { messages = prevConversation.messages.slice(0, prevConversation.messages.length - 1); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx index 397d8b47955921..16e4d09e0dd2d8 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { Conversation, Message } from '../../assistant_context/types'; +import { Conversation, ClientMessage } from '../../assistant_context/types'; import * as i18n from '../../content/prompts/welcome/translations'; import { WELCOME_CONVERSATION_TITLE } from './translations'; @@ -45,7 +45,7 @@ export const WELCOME_CONVERSATION: Conversation = { replacements: {}, }; -export const enterpriseMessaging: Message[] = [ +export const enterpriseMessaging: ClientMessage[] = [ { role: 'assistant', content: i18n.ENTERPRISE, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx index 62d039f9771956..6f0f9782824250 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx @@ -5,27 +5,19 @@ * 2.0. */ -import { ApiConfig, Replacements } from '@kbn/elastic-assistant-common'; - -export type ConversationRole = 'system' | 'user' | 'assistant'; +import { ApiConfig, Message, Replacements } from '@kbn/elastic-assistant-common'; export interface MessagePresentation { delay?: number; stream?: boolean; } -export interface Message { - role: ConversationRole; +// The ClientMessage is different from the Message in that it content +// can be undefined and reader is the correct type which is unavailable in Zod +export interface ClientMessage extends Omit { reader?: ReadableStreamDefaultReader; - replacements?: Replacements; content?: string; - timestamp: string; - isError?: boolean; presentation?: MessagePresentation; - traceData?: { - transactionId: string; - traceId: string; - }; } export interface ConversationTheme { @@ -59,7 +51,7 @@ export interface Conversation { category: string; id: string; title: string; - messages: Message[]; + messages: ClientMessage[]; updatedAt?: Date; createdAt?: Date; replacements: Replacements; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx index e570dd7c6507c7..670ef817aeb4cb 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx @@ -15,7 +15,7 @@ import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/common/c import { ActionType } from '@kbn/triggers-actions-ui-plugin/public'; import { AddConnectorModal } from '../add_connector_modal'; import { WELCOME_CONVERSATION } from '../../assistant/use_conversation/sample_conversations'; -import { Conversation, Message } from '../../..'; +import { Conversation, ClientMessage } from '../../..'; import { useLoadActionTypes } from '../use_load_action_types'; import { StreamingText } from '../../assistant/streaming_text'; import { ConnectorButton } from '../connector_button'; @@ -111,7 +111,7 @@ export const useConnectorSetup = ({ // Create EuiCommentProps[] from conversation messages const commentBody = useCallback( - (message: Message, index: number, length: number) => { + (message: ClientMessage, index: number, length: number) => { // If timestamp is not set, set it to current time (will update conversation at end of setup) if ( conversation.messages[index].timestamp == null || diff --git a/x-pack/packages/kbn-elastic-assistant/index.ts b/x-pack/packages/kbn-elastic-assistant/index.ts index 7f2355038170ef..414a184fa57e39 100644 --- a/x-pack/packages/kbn-elastic-assistant/index.ts +++ b/x-pack/packages/kbn-elastic-assistant/index.ts @@ -99,8 +99,8 @@ export type { AssistantTelemetry, /** Conversation Interface */ Conversation, - /** Message Interface */ - Message, + /** Message interface on the client */ + ClientMessage, } from './impl/assistant_context/types'; /** Interface for defining system/user prompts */ diff --git a/x-pack/plugins/actions/common/connector_feature_config.ts b/x-pack/plugins/actions/common/connector_feature_config.ts index 4638387d31c5e0..588966b307db10 100644 --- a/x-pack/plugins/actions/common/connector_feature_config.ts +++ b/x-pack/plugins/actions/common/connector_feature_config.ts @@ -27,6 +27,7 @@ export const UptimeConnectorFeatureId = 'uptime'; export const SecurityConnectorFeatureId = 'siem'; export const GenerativeAIForSecurityConnectorFeatureId = 'generativeAIForSecurity'; export const GenerativeAIForObservabilityConnectorFeatureId = 'generativeAIForObservability'; +export const GenerativeAIForSearchPlaygroundConnectorFeatureId = 'generativeAIForSearchPlayground'; const compatibilityGenerativeAIForSecurity = i18n.translate( 'xpack.actions.availableConnectorFeatures.compatibility.generativeAIForSecurity', @@ -42,6 +43,13 @@ const compatibilityGenerativeAIForObservability = i18n.translate( } ); +const compatibilityGenerativeAIForSearchPlayground = i18n.translate( + 'xpack.actions.availableConnectorFeatures.compatibility.generativeAIForSearchPlayground', + { + defaultMessage: 'Generative AI for Search Playground', + } +); + const compatibilityAlertingRules = i18n.translate( 'xpack.actions.availableConnectorFeatures.compatibility.alertingRules', { @@ -100,6 +108,12 @@ export const GenerativeAIForObservabilityFeature: ConnectorFeatureConfig = { compatibility: compatibilityGenerativeAIForObservability, }; +export const GenerativeAIForSearchPlaygroundFeature: ConnectorFeatureConfig = { + id: GenerativeAIForSearchPlaygroundConnectorFeatureId, + name: compatibilityGenerativeAIForSearchPlayground, + compatibility: compatibilityGenerativeAIForSearchPlayground, +}; + const AllAvailableConnectorFeatures = { [AlertingConnectorFeature.id]: AlertingConnectorFeature, [CasesConnectorFeature.id]: CasesConnectorFeature, @@ -107,6 +121,7 @@ const AllAvailableConnectorFeatures = { [SecuritySolutionFeature.id]: SecuritySolutionFeature, [GenerativeAIForSecurityFeature.id]: GenerativeAIForSecurityFeature, [GenerativeAIForObservabilityFeature.id]: GenerativeAIForObservabilityFeature, + [GenerativeAIForSearchPlaygroundFeature.id]: GenerativeAIForSearchPlaygroundFeature, }; export function areValidFeatures(ids: string[]) { diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.test.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.test.ts index 4c182f2fb652af..42aaf49cd4f3ef 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.test.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.test.ts @@ -11,16 +11,17 @@ import { coreMock } from '@kbn/core/server/mocks'; import { KibanaRequest } from '@kbn/core/server'; import { loggerMock } from '@kbn/logging-mocks'; -import { ActionsClientLlm } from '../llm/actions_client_llm'; -import { ActionsClientChatOpenAI } from '../llm/openai'; import { mockActionResponse } from '../../../__mocks__/action_result_data'; import { langChainMessages } from '../../../__mocks__/lang_chain_messages'; import { ESQL_RESOURCE } from '../../../routes/knowledge_base/constants'; import { callAgentExecutor } from '.'; import { Stream } from 'stream'; +import { ActionsClientChatOpenAI, ActionsClientLlm } from '@kbn/elastic-assistant-common/impl/llm'; -jest.mock('../llm/actions_client_llm'); -jest.mock('../llm/openai'); +jest.mock('@kbn/elastic-assistant-common/impl/llm', () => ({ + ActionsClientChatOpenAI: jest.fn(), + ActionsClientLlm: jest.fn(), +})); const mockConversationChain = { call: jest.fn(), @@ -57,7 +58,7 @@ jest.mock('../elasticsearch_store/elasticsearch_store', () => ({ const mockConnectorId = 'mock-connector-id'; // eslint-disable-next-line @typescript-eslint/no-explicit-any -const mockRequest: KibanaRequest = {} as KibanaRequest< +const mockRequest: KibanaRequest = { body: {} } as KibanaRequest< unknown, unknown, any, // eslint-disable-line @typescript-eslint/no-explicit-any diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.ts index 12a8dd9b409d8f..807baef3b3ebe8 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/execute_custom_llm_chain/index.ts @@ -12,9 +12,8 @@ import { ToolInterface } from '@langchain/core/tools'; import { streamFactory } from '@kbn/ml-response-stream/server'; import { transformError } from '@kbn/securitysolution-es-utils'; import { RetrievalQAChain } from 'langchain/chains'; +import { ActionsClientChatOpenAI, ActionsClientLlm } from '@kbn/elastic-assistant-common/impl/llm'; import { ElasticsearchStore } from '../elasticsearch_store/elasticsearch_store'; -import { ActionsClientChatOpenAI } from '../llm/openai'; -import { ActionsClientLlm } from '../llm/actions_client_llm'; import { KNOWLEDGE_BASE_INDEX_PATTERN } from '../../../routes/knowledge_base/constants'; import { AgentExecutor } from '../executors/types'; import { withAssistantSpan } from '../tracers/with_assistant_span'; @@ -61,6 +60,7 @@ export const callAgentExecutor: AgentExecutor = async ({ request, llmType, logger, + model: request.body.model, signal: abortSignal, streaming: isStream, // prevents the agent from retrying on failure diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts index 4e037323bf034b..989e2935c82efa 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/openai_functions_executor.ts @@ -10,8 +10,8 @@ import { RetrievalQAChain } from 'langchain/chains'; import { BufferMemory, ChatMessageHistory } from 'langchain/memory'; import { ChainTool } from 'langchain/tools/chain'; +import { ActionsClientLlm } from '@kbn/elastic-assistant-common/impl/llm'; import { ElasticsearchStore } from '../elasticsearch_store/elasticsearch_store'; -import { ActionsClientLlm } from '../llm/actions_client_llm'; import { KNOWLEDGE_BASE_INDEX_PATTERN } from '../../../routes/knowledge_base/constants'; import { AgentExecutor } from './types'; import { withAssistantSpan } from '../tracers/with_assistant_span'; @@ -39,7 +39,14 @@ export const callOpenAIFunctionsExecutor: AgentExecutor = async ({ telemetry, traceOptions, }) => { - const llm = new ActionsClientLlm({ actions, connectorId, request, llmType, logger }); + const llm = new ActionsClientLlm({ + actions, + connectorId, + request, + llmType, + logger, + model: request.body.model, + }); const pastMessages = langChainMessages.slice(0, -1); // all but the last message const latestMessage = langChainMessages.slice(-1); // the last message diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts index 8aa3e52befa328..b7f967361e6062 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts @@ -6,14 +6,13 @@ */ import { KibanaRequest } from '@kbn/core-http-server'; -import type { Message } from '@kbn/elastic-assistant'; +import type { Message } from '@kbn/elastic-assistant-common'; import { AIMessage, BaseMessage, HumanMessage, SystemMessage } from '@langchain/core/messages'; import { ExecuteConnectorRequestBody } from '@kbn/elastic-assistant-common'; import { getLangChainMessage, getLangChainMessages, - getMessageContentAndRole, requestHasRequiredAnonymizationParams, } from './helpers'; import { langChainMessages } from '../../__mocks__/lang_chain_messages'; @@ -97,22 +96,6 @@ describe('helpers', () => { }); }); - describe('getMessageContentAndRole', () => { - const testCases: Array<[string, Pick]> = [ - ['Prompt 1', { content: 'Prompt 1', role: 'user' }], - ['Prompt 2', { content: 'Prompt 2', role: 'user' }], - ['', { content: '', role: 'user' }], - ]; - - testCases.forEach(([prompt, expectedOutput]) => { - test(`Given the prompt "${prompt}", it returns the prompt as content with a "user" role`, () => { - const result = getMessageContentAndRole(prompt); - - expect(result).toEqual(expectedOutput); - }); - }); - }); - describe('requestHasRequiredAnonymizationParams', () => { it('returns true if the request has valid anonymization params', () => { const request = { diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts index 52aa78e106c013..2013051ba5492c 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts @@ -6,7 +6,7 @@ */ import { KibanaRequest } from '@kbn/core-http-server'; -import type { Message } from '@kbn/elastic-assistant'; +import type { Message } from '@kbn/elastic-assistant-common'; import { AIMessage, BaseMessage, HumanMessage, SystemMessage } from '@langchain/core/messages'; import { ExecuteConnectorRequestBody } from '@kbn/elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen'; @@ -30,11 +30,6 @@ export const getLangChainMessages = ( assistantMessages: Array> ): BaseMessage[] => assistantMessages.map(getLangChainMessage); -export const getMessageContentAndRole = (prompt: string): Pick => ({ - content: prompt, - role: 'user', -}); - export const requestHasRequiredAnonymizationParams = ( request: KibanaRequest ): boolean => { diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts index fbf6e428d2265a..7ed79cfda0c47f 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts @@ -5,39 +5,6 @@ * 2.0. */ -import { - ChatCompletionContentPart, - ChatCompletionCreateParamsNonStreaming, -} from 'openai/resources/chat/completions'; import { ExecuteConnectorResponse } from '@kbn/elastic-assistant-common'; export type ResponseBody = ExecuteConnectorResponse; - -export interface InvokeAIActionParamsSchema { - messages: Array<{ - role: string; - content: string | ChatCompletionContentPart[]; - name?: string; - function_call?: { - arguments: string; - name: string; - }; - tool_calls?: Array<{ - id: string; - - function: { - arguments: string; - name: string; - }; - - type: string; - }>; - tool_call_id?: string; - }>; - model?: ChatCompletionCreateParamsNonStreaming['model']; - n?: ChatCompletionCreateParamsNonStreaming['n']; - stop?: ChatCompletionCreateParamsNonStreaming['stop']; - temperature?: ChatCompletionCreateParamsNonStreaming['temperature']; - functions?: ChatCompletionCreateParamsNonStreaming['functions']; - signal?: AbortSignal; -} diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts index 1fbf19b7924562..6b3cc92da1936a 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts @@ -17,6 +17,7 @@ import { PostEvaluateResponse, ExecuteConnectorRequestBody, } from '@kbn/elastic-assistant-common'; +import { ActionsClientLlm } from '@kbn/elastic-assistant-common/impl/llm'; import { buildRouteValidationWithZod } from '@kbn/elastic-assistant-common/impl/schemas/common'; import { ESQL_RESOURCE } from '../knowledge_base/constants'; import { buildResponse } from '../../lib/build_response'; @@ -24,7 +25,6 @@ import { ElasticAssistantRequestHandlerContext, GetElser } from '../../types'; import { EVALUATE } from '../../../common/constants'; import { performEvaluation } from '../../lib/model_evaluator/evaluation'; import { AgentExecutorEvaluatorWithMetadata } from '../../lib/langchain/executors/types'; -import { ActionsClientLlm } from '../../lib/langchain/llm/actions_client_llm'; import { indexEvaluations, setupEvaluationIndex, @@ -221,6 +221,7 @@ export const postEvaluateRoute = ( connectorId: evalModel, request: skeletonRequest, logger, + model: skeletonRequest.body.model, }); const { evaluationResults, evaluationSummary } = await performEvaluation({ diff --git a/x-pack/plugins/elastic_assistant/tsconfig.json b/x-pack/plugins/elastic_assistant/tsconfig.json index 8aa96c7b22bd98..207fbefce69e9b 100644 --- a/x-pack/plugins/elastic_assistant/tsconfig.json +++ b/x-pack/plugins/elastic_assistant/tsconfig.json @@ -19,7 +19,6 @@ "@kbn/licensing-plugin", "@kbn/securitysolution-es-utils", "@kbn/actions-plugin", - "@kbn/elastic-assistant", "@kbn/logging-mocks", "@kbn/core-elasticsearch-server-mocks", "@kbn/core-logging-server-mocks", diff --git a/x-pack/plugins/search_playground/common/types.ts b/x-pack/plugins/search_playground/common/types.ts index 145ddf085df24b..04aa8d10d01e0c 100644 --- a/x-pack/plugins/search_playground/common/types.ts +++ b/x-pack/plugins/search_playground/common/types.ts @@ -25,3 +25,19 @@ export enum APIRoutes { POST_CHAT_MESSAGE = '/internal/search_playground/chat', POST_QUERY_SOURCE_FIELDS = '/internal/search_playground/query_source_fields', } + +export enum LLMs { + openai = 'openai', + openai_azure = 'openai_azure', +} + +export interface ChatRequestData { + connector_id: string; + prompt: string; + indices: string; + citations: boolean; + elasticsearch_query: string; + summarization_model?: string; + source_fields: string; + doc_size: number; +} diff --git a/x-pack/plugins/search_playground/kibana.jsonc b/x-pack/plugins/search_playground/kibana.jsonc index 3f4837613fc9b2..a76967f25ea93b 100644 --- a/x-pack/plugins/search_playground/kibana.jsonc +++ b/x-pack/plugins/search_playground/kibana.jsonc @@ -11,8 +11,12 @@ "searchPlayground" ], "requiredPlugins": [ + "actions", + "encryptedSavedObjects", "navigation", - "security" + "security", + "stackConnectors", + "triggersActionsUi", ], "optionalPlugins": [ "cloud" diff --git a/x-pack/plugins/search_playground/public/components/chat.tsx b/x-pack/plugins/search_playground/public/components/chat.tsx index 2aec17816a2c08..ebcc218a9cd00a 100644 --- a/x-pack/plugins/search_playground/public/components/chat.tsx +++ b/x-pack/plugins/search_playground/public/components/chat.tsx @@ -25,7 +25,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { useAutoBottomScroll } from '../hooks/use_auto_bottom_scroll'; import { ChatSidebar } from './chat_sidebar'; import { useChat } from '../hooks/use_chat'; -import { ChatForm, ChatFormFields, MessageRole } from '../types'; +import { ChatForm, ChatFormFields, ChatRequestData, MessageRole } from '../types'; import { MessageList } from './message_list/message_list'; import { QuestionInput } from './question_input'; @@ -34,15 +34,15 @@ import { StartNewChat } from './start_new_chat'; import { TelegramIcon } from './telegram_icon'; import { transformFromChatMessages } from '../utils/transform_to_messages'; -const buildFormData = (formData: ChatForm) => ({ +const buildFormData = (formData: ChatForm): ChatRequestData => ({ + connector_id: formData[ChatFormFields.summarizationModel].connectorId!, prompt: formData[ChatFormFields.prompt], indices: formData[ChatFormFields.indices].join(), - api_key: formData[ChatFormFields.openAIKey], citations: formData[ChatFormFields.citations], - elasticsearchQuery: JSON.stringify(formData[ChatFormFields.elasticsearchQuery]), - summarization_model: formData[ChatFormFields.summarizationModel], + elasticsearch_query: JSON.stringify(formData[ChatFormFields.elasticsearchQuery]), + summarization_model: formData[ChatFormFields.summarizationModel].value, source_fields: JSON.stringify(formData[ChatFormFields.sourceFields]), - docSize: formData[ChatFormFields.docSize], + doc_size: formData[ChatFormFields.docSize], }); export const Chat = () => { diff --git a/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx b/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx index b917205999ba7c..324d2549065739 100644 --- a/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx +++ b/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx @@ -88,9 +88,9 @@ export const AssistantMessage: React.FC = ({ timestamp={ createdAt && i18n.translate('xpack.searchPlayground.chat.message.assistant.createdAt', { - defaultMessage: 'on {date}', + defaultMessage: 'at {time}', values: { - date: moment(createdAt).format('MMM DD, YYYY'), + time: moment(createdAt).format('HH:mm'), }, }) } diff --git a/x-pack/plugins/search_playground/public/components/message_list/user_message.tsx b/x-pack/plugins/search_playground/public/components/message_list/user_message.tsx index 3b0f51a5ccb873..73521bcdb493ea 100644 --- a/x-pack/plugins/search_playground/public/components/message_list/user_message.tsx +++ b/x-pack/plugins/search_playground/public/components/message_list/user_message.tsx @@ -5,41 +5,38 @@ * 2.0. */ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import moment from 'moment'; import { EuiComment, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { UserAvatar, UserProfileWithAvatar } from '@kbn/user-profile-components'; +import { UserAvatar } from '@kbn/user-profile-components'; +import { useUserProfile } from '../../hooks/use_user_profile'; import type { Message as MessageType } from '../../types'; import { CopyActionButton } from './copy_action_button'; -import { useKibana } from '../../hooks/use_kibana'; type UserMessageProps = Pick; export const UserMessage: React.FC = ({ content, createdAt }) => { - const { services } = useKibana(); - const [currentUserProfile, setCurrentUserProfile] = useState(); - - useEffect(() => { - services.security?.userProfiles.getCurrent({ dataPath: 'avatar' }).then(setCurrentUserProfile); - }, [services]); + const currentUserProfile = useUserProfile(); return ( + testingLibraryRender({children}); + +jest.mock('../hooks/use_kibana'); +jest.mock('../hooks/use_load_connectors'); + +const mockConnectors = { + '1': { title: 'Connector 1' }, + '2': { title: 'Connector 2' }, +}; + +describe('SetUpConnectorPanelForStartChat', () => { + beforeEach(() => { + (useKibana as jest.Mock).mockReturnValue({ + services: { + triggersActionsUi: { + getAddConnectorFlyout: () => ( +
Add Connector Flyout
+ ), + }, + }, + }); + (useLoadConnectors as jest.Mock).mockReturnValue({ + data: mockConnectors, + refetch: jest.fn(), + isLoading: false, + isSuccess: true, + }); + }); + + afterEach(() => { + jest.resetAllMocks(); + }); + + it('renders the empty state when there are no connectors', () => { + (useLoadConnectors as jest.Mock).mockReturnValueOnce({ + data: {}, + isLoading: false, + isSuccess: true, + }); + const { getByTestId } = render(); + expect(getByTestId('setupGenAIConnectorButton')).toBeInTheDocument(); + }); + + it('show the flyout when the button is clicked', async () => { + (useLoadConnectors as jest.Mock).mockReturnValue({ + data: {}, + isLoading: false, + isSuccess: true, + }); + const { getByTestId, queryByTestId } = render(); + + expect(queryByTestId('addConnectorFlyout')).not.toBeInTheDocument(); + + fireEvent.click(getByTestId('setupGenAIConnectorButton')); + await waitFor(() => expect(getByTestId('addConnectorFlyout')).toBeInTheDocument()); + }); +}); diff --git a/x-pack/plugins/search_playground/public/components/set_up_connector_panel_for_start_chat.tsx b/x-pack/plugins/search_playground/public/components/set_up_connector_panel_for_start_chat.tsx new file mode 100644 index 00000000000000..901646ab75e2ab --- /dev/null +++ b/x-pack/plugins/search_playground/public/components/set_up_connector_panel_for_start_chat.tsx @@ -0,0 +1,94 @@ +/* + * 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. + */ + +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiButton, EuiCallOut, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { GenerativeAIForSearchPlaygroundConnectorFeatureId } from '@kbn/actions-plugin/common'; +import { useKibana } from '../hooks/use_kibana'; +import { useLoadConnectors } from '../hooks/use_load_connectors'; +import { StartChatPanel } from './start_chat_panel'; + +export const SetUpConnectorPanelForStartChat: React.FC = () => { + const [connectorFlyoutOpen, setConnectorFlyoutOpen] = useState(false); + const [showCallout, setShowAddedCallout] = useState(false); + const { + services: { + triggersActionsUi: { getAddConnectorFlyout: ConnectorFlyout }, + }, + } = useKibana(); + const { + data: connectors, + refetch: refetchConnectors, + isLoading: isConnectorListLoading, + } = useLoadConnectors(); + const handleConnectorCreated = () => { + refetchConnectors(); + setShowAddedCallout(true); + setConnectorFlyoutOpen(false); + }; + + return connectors && !isConnectorListLoading ? ( + <> + {!!Object.keys(connectors).length && showCallout && ( + connector.title) + .join(', '), + count: Object.values(connectors).length, + }, + })} + iconType="check" + color="success" + data-test-subj="addedConnectorCallout" + /> + )} + {!Object.keys(connectors).length && ( + <> + + } + > + + + setConnectorFlyoutOpen(true)} + > + + + + + + {connectorFlyoutOpen && ( + setConnectorFlyoutOpen(false)} + /> + )} + + )} + + ) : null; +}; diff --git a/x-pack/plugins/search_playground/public/components/start_chat_panel.tsx b/x-pack/plugins/search_playground/public/components/start_chat_panel.tsx index c155dfd16828e7..4c19b3e28d1ba0 100644 --- a/x-pack/plugins/search_playground/public/components/start_chat_panel.tsx +++ b/x-pack/plugins/search_playground/public/components/start_chat_panel.tsx @@ -55,7 +55,7 @@ export const StartChatPanel: React.FC = ({ - +

{description}

diff --git a/x-pack/plugins/search_playground/public/components/start_new_chat.tsx b/x-pack/plugins/search_playground/public/components/start_new_chat.tsx index 4720f1122fae6a..981d55f5aab28e 100644 --- a/x-pack/plugins/search_playground/public/components/start_new_chat.tsx +++ b/x-pack/plugins/search_playground/public/components/start_new_chat.tsx @@ -9,8 +9,9 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiIcon, EuiTitle, useEuiTheme } import { FormattedMessage } from '@kbn/i18n-react'; import React from 'react'; import { useFormContext } from 'react-hook-form'; +import { useLoadConnectors } from '../hooks/use_load_connectors'; import { SourcesPanelForStartChat } from './sources_panel/sources_panel_for_start_chat'; -import { SummarizationPanelForStartChat } from './summarization_panel/summarization_panel_for_start_chat'; +import { SetUpConnectorPanelForStartChat } from './set_up_connector_panel_for_start_chat'; import { ChatFormFields } from '../types'; const maxWidthPage = 640; @@ -21,6 +22,7 @@ interface StartNewChatProps { export const StartNewChat: React.FC = ({ onStartClick }) => { const { euiTheme } = useEuiTheme(); + const { data: connectors } = useLoadConnectors(); const { watch } = useFormContext(); return ( @@ -51,7 +53,7 @@ export const StartNewChat: React.FC = ({ onStartClick }) => { - + @@ -63,7 +65,9 @@ export const StartNewChat: React.FC = ({ onStartClick }) => { fill iconType="arrowRight" iconSide="right" - disabled={!watch(ChatFormFields.openAIKey) || !watch(ChatFormFields.indices, []).length} + disabled={ + !watch(ChatFormFields.indices, []).length || !Object.keys(connectors || {}).length + } onClick={onStartClick} > ( - - - -); diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_callout.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_callout.tsx deleted file mode 100644 index 6438914915951d..00000000000000 --- a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_callout.tsx +++ /dev/null @@ -1,40 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -import { EuiButton, EuiCallOut } from '@elastic/eui'; - -import { i18n } from '@kbn/i18n'; - -interface OpenAIKeyCalloutProps { - openAIFlyOutOpen: () => void; -} - -export const OpenAIKeyCallout: React.FC = ({ openAIFlyOutOpen }) => { - return ( - -

- {i18n.translate('xpack.searchPlayground.sidebar.openAICallout.description', { - defaultMessage: - 'The AI Playground uses OpenAl models for summarization. Add your OpenAI API key to continue.', - })} -

- - {i18n.translate('xpack.searchPlayground.sidebar.openAICallout.buttonLabelText', { - defaultMessage: 'Add OpenAI API Key', - })} - -
- ); -}; diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_field.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_field.tsx deleted file mode 100644 index 2ac65c9e386d09..00000000000000 --- a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_field.tsx +++ /dev/null @@ -1,65 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiButton, EuiFieldPassword, EuiFlexGroup, EuiFormRow, keys } from '@elastic/eui'; -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { useFormContext } from 'react-hook-form'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { ChatFormFields } from '../../types'; - -export const OpenAIKeyField: React.FC = () => { - const [openAITempValue, setOpenAITempValue] = React.useState(''); - const { setValue, watch } = useFormContext(); - const openAIKey = watch(ChatFormFields.openAIKey); - const handleSaveValue = () => { - if (openAITempValue) { - setValue(ChatFormFields.openAIKey, openAITempValue); - } - }; - - return ( - - - { - if (keys.ENTER === key) { - handleSaveValue(); - } - }} - onChange={(e) => setOpenAITempValue(e.target.value)} - /> - - {openAIKey && openAIKey === openAITempValue ? ( - - - - ) : ( - - - - )} - - - ); -}; diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_flyout.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_flyout.tsx deleted file mode 100644 index 13d430e4f8aff5..00000000000000 --- a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_key_flyout.tsx +++ /dev/null @@ -1,123 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - EuiButton, - EuiButtonEmpty, - EuiFieldPassword, - EuiFlexGroup, - EuiFlexItem, - EuiFlyout, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiFlyoutHeader, - EuiFormRow, - EuiLink, - EuiSpacer, - EuiText, - EuiTitle, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import React, { useState } from 'react'; - -export interface OpenAIKeyFlyOutProps { - openAPIKey: string; - onClose: () => void; - onSave: (key: string) => void; -} - -export const OpenAIKeyFlyOut: React.FC = ({ - openAPIKey, - onClose, - onSave, -}) => { - const [apiKey, setApiKey] = useState(openAPIKey); - - const handleSave = () => { - onSave(apiKey); - onClose(); - }; - - return ( - - - -

- {i18n.translate('xpack.searchPlayground.sidebar.openAIFlyOut.headerTitle', { - defaultMessage: 'OpenAI API Key', - })} -

-
- -
- - - - - - - - } - > - - setApiKey(e.target.value)} - /> - - - - - - - - - - - - - - - - - - - -
- ); -}; diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_summarization_model.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_summarization_model.tsx deleted file mode 100644 index 322b8c1a613549..00000000000000 --- a/x-pack/plugins/search_playground/public/components/summarization_panel/open_ai_summarization_model.tsx +++ /dev/null @@ -1,102 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; - -import { - EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiIcon, - EuiSuperSelect, - EuiSuperSelectOption, - EuiToolTip, -} from '@elastic/eui'; - -import { i18n } from '@kbn/i18n'; -import { SummarizationModelName } from '../../types'; - -import { OpenAIIcon } from './open_ai_icon'; - -const renderSelectOptions = (label: string) => ( - - - - - {label} - -); - -const SummarizationModel: Array> = [ - { - value: SummarizationModelName.gpt3_5, - inputDisplay: renderSelectOptions(SummarizationModelName.gpt3_5), - }, - { - value: SummarizationModelName.gpt3_5_turbo_1106, - inputDisplay: renderSelectOptions(SummarizationModelName.gpt3_5_turbo_1106), - }, - { - value: SummarizationModelName.gpt3_5_turbo_16k, - inputDisplay: renderSelectOptions(SummarizationModelName.gpt3_5_turbo_16k), - }, - { - value: SummarizationModelName.gpt3_5_turbo_16k_0613, - inputDisplay: renderSelectOptions(SummarizationModelName.gpt3_5_turbo_16k_0613), - }, - { - value: SummarizationModelName.gpt3_5_turbo, - inputDisplay: renderSelectOptions(SummarizationModelName.gpt3_5_turbo), - }, -]; - -interface OpenAISummarizationModelProps { - openAIFlyOutOpen: () => void; - model: string; - onSelect: (key: string) => void; -} - -export const OpenAISummarizationModel: React.FC = ({ - model = SummarizationModelName.gpt3_5_turbo_1106, - onSelect, - openAIFlyOutOpen, -}) => { - const onChange = (value: string) => { - onSelect(value); - }; - - return ( - - <> - - {i18n.translate('xpack.searchPlayground.sidebar.summarizationModel.label', { - defaultMessage: 'Summarization Model', - })} - - - - - } - labelAppend={ - openAIFlyOutOpen()}> - {i18n.translate('xpack.searchPlayground.sidebar.summarizationModel.editLabel', { - defaultMessage: 'Edit OpenAI API key', - })} - - } - > - - - ); -}; diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.test.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.test.tsx new file mode 100644 index 00000000000000..c3331966a0e389 --- /dev/null +++ b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.test.tsx @@ -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. + */ + +import React from 'react'; +import { render as testingLibraryRender } from '@testing-library/react'; +import { SummarizationModel } from './summarization_model'; +import { useManagementLink } from '../../hooks/use_management_link'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; + +const render = (children: React.ReactNode) => + testingLibraryRender({children}); +const MockIcon = () => ; + +jest.mock('../../hooks/use_management_link'); + +const mockUseManagementLink = useManagementLink as jest.Mock; + +describe('SummarizationModel', () => { + beforeEach(() => { + mockUseManagementLink.mockReturnValue('http://example.com/manage-connectors'); + }); + + afterEach(() => { + jest.resetAllMocks(); + }); + + it('renders correctly with models', () => { + const models = [ + { name: 'Model1', disabled: false, icon: MockIcon, connectorId: 'connector1' }, + { name: 'Model2', disabled: true, icon: MockIcon, connectorId: 'connector2' }, + ]; + const { getByTestId } = render( + + ); + + expect(getByTestId('summarizationModelSelect')).toBeInTheDocument(); + expect(getByTestId('manageConnectorsLink')).toHaveAttribute( + 'href', + 'http://example.com/manage-connectors' + ); + }); +}); diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.tsx new file mode 100644 index 00000000000000..7b70e773def44c --- /dev/null +++ b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_model.tsx @@ -0,0 +1,98 @@ +/* + * 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. + */ + +import React, { useMemo } from 'react'; + +import { + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiIcon, + EuiIconTip, + EuiLink, + EuiSuperSelect, + EuiText, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiSuperSelectOption } from '@elastic/eui/src/components/form/super_select/super_select_control'; +import type { LLMModel } from '../../types'; +import { useManagementLink } from '../../hooks/use_management_link'; + +interface SummarizationModelProps { + selectedModel: LLMModel; + onSelect: (model: LLMModel) => void; + models: LLMModel[]; +} + +export const SummarizationModel: React.FC = ({ + selectedModel, + models, + onSelect, +}) => { + const managementLink = useManagementLink(); + const onChange = (modelName: string) => { + const model = models.find(({ name }) => name === modelName); + + if (model) { + onSelect(model); + } + }; + + const modelsOption: Array> = useMemo( + () => + models.map(({ name, disabled, icon, connectorId }) => ({ + value: name, + disabled, + inputDisplay: ( + + + + + {name} + + ), + })), + [models] + ); + + return ( + + {' '} + + + } + labelAppend={ + + + + + + } + > + + + ); +}; diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel.tsx index e9b926cf44eb46..77b152121f5b06 100644 --- a/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel.tsx +++ b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel.tsx @@ -5,51 +5,32 @@ * 2.0. */ -import React, { useState } from 'react'; +import React from 'react'; import { Controller, useFormContext } from 'react-hook-form'; +import { useLLMsModels } from '../../hooks/use_llms_models'; import { IncludeCitationsField } from './include_citations_field'; import { InstructionsField } from './instructions_field'; -import { ChatFormFields } from '../../types'; -import { OpenAIKeyFlyOut } from './open_ai_key_flyout'; -import { OpenAISummarizationModel } from './open_ai_summarization_model'; +import { ChatForm, ChatFormFields } from '../../types'; +import { SummarizationModel } from './summarization_model'; export const SummarizationPanel: React.FC = () => { - const { control } = useFormContext(); - const [isOpenAIFlyOutOpen, setIsOpenAIFlyOutOpen] = useState(false); - - const onCloseOpenAIFlyOut = () => { - setIsOpenAIFlyOutOpen(!isOpenAIFlyOutOpen); - }; - const handleOpenAIFlyOut = () => { - setIsOpenAIFlyOutOpen(true); - }; + const { control } = useFormContext(); + const models = useLLMsModels(); + const defaultModel = models.find((model) => !model.disabled); return ( <> - {isOpenAIFlyOutOpen && ( - ( - - )} - /> - )} - ( - field.onChange(model)} + models={models} /> )} /> @@ -57,7 +38,8 @@ export const SummarizationPanel: React.FC = () => { } /> diff --git a/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel_for_start_chat.tsx b/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel_for_start_chat.tsx deleted file mode 100644 index fe35bbae6ca898..00000000000000 --- a/x-pack/plugins/search_playground/public/components/summarization_panel/summarization_panel_for_start_chat.tsx +++ /dev/null @@ -1,48 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiLink } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useFormContext } from 'react-hook-form'; -import { OpenAIKeyField } from './open_ai_key_field'; -import { StartChatPanel } from '../start_chat_panel'; -import { ChatFormFields } from '../../types'; - -const openAIApiKeyLink = 'https://platform.openai.com/api-keys'; - -export const SummarizationPanelForStartChat: React.FC = () => { - const { watch } = useFormContext(); - - return ( - - - - ), - }} - /> - } - isValid={watch(ChatFormFields.openAIKey)} - > - - - ); -}; diff --git a/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.test.tsx b/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.test.tsx index 13f666a78f14dc..d0f56fd95cb2a5 100644 --- a/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.test.tsx +++ b/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.test.tsx @@ -17,7 +17,7 @@ describe('PY_LANG_CLIENT function', () => { const formValues = { elasticsearch_query: { query: {} }, indices: ['index1', 'index2'], - docSize: 10, + doc_size: 10, source_fields: { index1: ['field1'], index2: ['field2'] }, prompt: 'Your prompt', citations: true, diff --git a/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.tsx b/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.tsx index bb4543b7b8f0c5..4ade9c59724ae2 100644 --- a/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.tsx +++ b/x-pack/plugins/search_playground/public/components/view_code/examples/py_lang_client.tsx @@ -39,7 +39,7 @@ def get_elasticsearch_results(query): es_query = ${getESQuery(formValues.elasticsearch_query.query)} result = es.search(index="${formValues.indices.join(',')}", query=es_query, size=${ - formValues.docSize + formValues.doc_size }) return result["hits"]["hits"] diff --git a/x-pack/plugins/search_playground/public/embeddable.tsx b/x-pack/plugins/search_playground/public/embeddable.tsx index f2f5e3807a11f3..ce8d92b92421d3 100644 --- a/x-pack/plugins/search_playground/public/embeddable.tsx +++ b/x-pack/plugins/search_playground/public/embeddable.tsx @@ -5,36 +5,29 @@ * 2.0. */ -import React, { ComponentType, lazy, LazyExoticComponent, Suspense } from 'react'; -import type { App } from './components/app'; -import { PlaygroundProviderProps } from './providers/playground_provider'; -import type { Toolbar } from './components/toolbar'; +import React from 'react'; +import { dynamic } from '@kbn/shared-ux-utility'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { CoreStart } from '@kbn/core-lifecycle-browser'; +import { AppPluginStartDependencies } from './types'; -const lazyRender = -

( - Component: LazyExoticComponent> - ): React.FC> => - (props) => - ( - - - - ); +export const Playground = dynamic(async () => ({ + default: (await import('./components/app')).App, +})); -export const Playground = lazyRender>( - lazy(async () => ({ - default: (await import('./components/app')).App, - })) -); +export const PlaygroundToolbar = dynamic(async () => ({ + default: (await import('./components/toolbar')).Toolbar, +})); -export const PlaygroundToolbar = lazyRender>( - lazy(async () => ({ - default: (await import('./components/toolbar')).Toolbar, - })) -); +export const PlaygroundProvider = dynamic(async () => ({ + default: (await import('./providers/playground_provider')).PlaygroundProvider, +})); -export const PlaygroundProvider = lazyRender( - lazy(async () => ({ - default: (await import('./providers/playground_provider')).PlaygroundProvider, - })) -); +export const getPlaygroundProvider = + (core: CoreStart, services: AppPluginStartDependencies) => + (props: React.ComponentProps) => + ( + + + + ); diff --git a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts new file mode 100644 index 00000000000000..cb1e8e0a414e56 --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts @@ -0,0 +1,130 @@ +/* + * 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. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useLoadConnectors } from './use_load_connectors'; +import { useLLMsModels } from './use_llms_models'; +import { LLMs } from '../types'; + +jest.mock('./use_load_connectors', () => ({ + useLoadConnectors: jest.fn(), +})); + +const mockConnectors = { + [LLMs.openai]: { id: 'connectorId1', title: 'OpenAI Connector' }, +}; +const mockUseLoadConnectors = (data: any) => { + (useLoadConnectors as jest.Mock).mockReturnValue({ data }); +}; + +describe('useLLMsModels Hook', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns LLMModels with connectors available', () => { + mockUseLoadConnectors(mockConnectors); + + const { result } = renderHook(() => useLLMsModels()); + + expect(result.current).toEqual([ + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'Azure OpenAI', + value: undefined, + }, + { + connectorId: 'connectorId1', + disabled: false, + icon: expect.any(Function), + name: 'gpt-3.5-turbo', + value: 'gpt-3.5-turbo', + }, + { + connectorId: 'connectorId1', + disabled: false, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-1106', + value: 'gpt-3.5-turbo-1106', + }, + { + connectorId: 'connectorId1', + disabled: false, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-16k', + value: 'gpt-3.5-turbo-16k', + }, + { + connectorId: 'connectorId1', + disabled: false, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-16k-0613', + value: 'gpt-3.5-turbo-16k-0613', + }, + { + connectorId: 'connectorId1', + disabled: false, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-instruct', + value: 'gpt-3.5-turbo-instruct', + }, + ]); + }); + + it('returns LLMModels as disabled when no connectors are available', () => { + mockUseLoadConnectors({}); + + const { result } = renderHook(() => useLLMsModels()); + + expect(result.current).toEqual([ + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'Azure OpenAI', + value: undefined, + }, + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'gpt-3.5-turbo', + value: 'gpt-3.5-turbo', + }, + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-1106', + value: 'gpt-3.5-turbo-1106', + }, + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-16k', + value: 'gpt-3.5-turbo-16k', + }, + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-16k-0613', + value: 'gpt-3.5-turbo-16k-0613', + }, + { + connectorId: undefined, + disabled: true, + icon: expect.any(Function), + name: 'gpt-3.5-turbo-instruct', + value: 'gpt-3.5-turbo-instruct', + }, + ]); + }); +}); diff --git a/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts b/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts new file mode 100644 index 00000000000000..80073d9bb222c6 --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts @@ -0,0 +1,54 @@ +/* + * 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. + */ + +import { i18n } from '@kbn/i18n'; +import { OpenAILogo } from '@kbn/stack-connectors-plugin/public/common'; +import { ComponentType } from 'react'; +import { LLMs } from '../../common/types'; +import { LLMModel, SummarizationModelName } from '../types'; +import { useLoadConnectors } from './use_load_connectors'; + +const llmModels: Array<{ + llm: LLMs; + icon: ComponentType; + models: Array<{ label: string; value?: string }>; +}> = [ + { + llm: LLMs.openai_azure, + icon: OpenAILogo, + models: [ + { + label: i18n.translate('xpack.searchPlayground.openAIAzureModel', { + defaultMessage: 'Azure OpenAI', + }), + }, + ], + }, + { + llm: LLMs.openai, + icon: OpenAILogo, + models: Object.values(SummarizationModelName).map((model) => ({ label: model, value: model })), + }, +]; + +export const useLLMsModels = (): LLMModel[] => { + const { data: connectors } = useLoadConnectors(); + + return llmModels.reduce( + (result, { llm, icon, models }) => [ + ...result, + ...models.map(({ label, value }) => ({ + name: label, + value, + icon, + disabled: !connectors?.[llm], + connectorId: connectors?.[llm]?.id, + })), + ], + [] + ); +}; diff --git a/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts b/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts new file mode 100644 index 00000000000000..90460ef9e95235 --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_load_connectors.test.ts @@ -0,0 +1,113 @@ +/* + * 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. + */ + +import { loadAllActions as loadConnectors } from '@kbn/triggers-actions-ui-plugin/public/common/constants'; +import { useLoadConnectors } from './use_load_connectors'; +import { useKibana } from './use_kibana'; +import { act, renderHook } from '@testing-library/react-hooks'; +import { OpenAiProviderType } from '@kbn/stack-connectors-plugin/common/openai/constants'; + +const mockedLoadConnectors = loadConnectors as jest.Mock; +const mockedUseKibana = useKibana as jest.Mock; + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn(); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/constants', () => ({ + loadAllActions: jest.fn(), +})); + +jest.mock('./use_kibana', () => ({ + useKibana: jest.fn().mockReturnValue({ + services: { + http: {}, + notifications: { + toasts: { + addError: jest.fn(), + }, + }, + }, + }), +})); + +describe('useLoadConnectors', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('successfully loads and transforms connectors', async () => { + const connectors = [ + { + id: '1', + actionTypeId: '.gen-ai', + isMissingSecrets: false, + config: { apiProvider: OpenAiProviderType.OpenAi }, + }, + { + id: '2', + actionTypeId: 'slack', + isMissingSecrets: false, + }, + { + id: '3', + actionTypeId: '.gen-ai', + isMissingSecrets: false, + config: { apiProvider: OpenAiProviderType.AzureAi }, + }, + ]; + mockedLoadConnectors.mockResolvedValue(connectors); + + await act(async () => { + const { result, waitForNextUpdate } = renderHook(() => useLoadConnectors()); + await waitForNextUpdate(); + + await expect(result.current).resolves.toStrictEqual({ + openai: { + actionTypeId: '.gen-ai', + config: { + apiProvider: 'OpenAI', + }, + id: '1', + isMissingSecrets: false, + title: 'OpenAI', + }, + openai_azure: { + actionTypeId: '.gen-ai', + config: { + apiProvider: 'Azure OpenAI', + }, + id: '3', + isMissingSecrets: false, + title: 'OpenAI Azure', + }, + }); + }); + }); + + it('handles errors correctly', async () => { + const error = new Error('Test Error'); + mockedLoadConnectors.mockRejectedValue(error); + + await act(async () => { + const { waitForNextUpdate } = renderHook(() => useLoadConnectors()); + await waitForNextUpdate(); + + expect(mockedUseKibana().services.notifications.toasts.addError).toHaveBeenCalledWith( + error, + expect.any(Object) + ); + }); + }); +}); diff --git a/x-pack/plugins/search_playground/public/hooks/use_load_connectors.ts b/x-pack/plugins/search_playground/public/hooks/use_load_connectors.ts new file mode 100644 index 00000000000000..0198c5061923d0 --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_load_connectors.ts @@ -0,0 +1,111 @@ +/* + * 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. + */ + +import type { UseQueryResult } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; +import type { ServerError } from '@kbn/cases-plugin/public/types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; +import { loadAllActions as loadConnectors } from '@kbn/triggers-actions-ui-plugin/public/common/constants'; +import type { IHttpFetchError } from '@kbn/core-http-browser'; +import { i18n } from '@kbn/i18n'; +import { + OPENAI_CONNECTOR_ID, + OpenAiProviderType, +} from '@kbn/stack-connectors-plugin/public/common'; +import { UserConfiguredActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { useKibana } from './use_kibana'; +import { LLMs } from '../types'; + +const QUERY_KEY = ['search-playground, load-connectors']; + +type OpenAIConnector = UserConfiguredActionConnector< + { apiProvider: OpenAiProviderType }, + Record +>; + +const mapLLMToActionParam: Record< + LLMs, + { + actionId: string; + actionProvider?: string; + match: (connector: ActionConnector) => boolean; + transform: (connector: ActionConnector) => PlaygroundConnector; + } +> = { + [LLMs.openai_azure]: { + actionId: OPENAI_CONNECTOR_ID, + actionProvider: OpenAiProviderType.AzureAi, + match: (connector) => + (connector as OpenAIConnector).config.apiProvider === OpenAiProviderType.AzureAi, + transform: (connector) => ({ + ...connector, + title: i18n.translate('xpack.searchPlayground.openAIAzureConnectorTitle', { + defaultMessage: 'OpenAI Azure', + }), + }), + }, + [LLMs.openai]: { + actionId: OPENAI_CONNECTOR_ID, + match: (connector) => + (connector as OpenAIConnector).config.apiProvider === OpenAiProviderType.OpenAi, + transform: (connector) => ({ + ...connector, + title: i18n.translate('xpack.searchPlayground.openAIConnectorTitle', { + defaultMessage: 'OpenAI', + }), + }), + }, +}; + +type PlaygroundConnector = ActionConnector & { title: string }; + +export const useLoadConnectors = (): UseQueryResult< + Record, + IHttpFetchError +> => { + const { + services: { http, notifications }, + } = useKibana(); + + return useQuery( + QUERY_KEY, + async () => { + const queryResult = await loadConnectors({ http }); + + return Object.entries(mapLLMToActionParam).reduce>>( + (result, [llm, { actionId, match, transform }]) => { + const targetConnector = queryResult.find( + (connector) => + !connector.isMissingSecrets && + connector.actionTypeId === actionId && + (match?.(connector) ?? true) + ); + + return targetConnector ? { ...result, [llm]: transform(targetConnector) } : result; + }, + {} + ); + }, + { + retry: false, + keepPreviousData: true, + onError: (error: ServerError) => { + if (error.name !== 'AbortError') { + notifications?.toasts?.addError( + error.body && error.body.message ? new Error(error.body.message) : error, + { + title: i18n.translate('xpack.searchPlayground.loadConnectorsError', { + defaultMessage: + 'Error loading connectors. Please check your configuration and try again.', + }), + } + ); + } + }, + } + ); +}; diff --git a/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts b/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts new file mode 100644 index 00000000000000..609ce0f6e53f17 --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_management_link.test.ts @@ -0,0 +1,70 @@ +/* + * 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. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useManagementLink } from './use_management_link'; +import { useKibana } from './use_kibana'; + +jest.mock('./use_kibana', () => ({ + useKibana: jest.fn(), +})); + +describe('useManagementLink Hook', () => { + const mockGetUrl = jest.fn(); + + beforeEach(() => { + (useKibana as jest.Mock).mockReturnValue({ + services: { + share: { + url: { + locators: { + get: jest.fn().mockReturnValue({ + getUrl: mockGetUrl, + }), + }, + }, + }, + }, + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('generates the management link successfully', async () => { + const expectedUrl = + 'http://localhost:5601/app/management/insightsAndAlerting/triggersActionsConnectors'; + mockGetUrl.mockResolvedValue(expectedUrl); + const { result, waitForNextUpdate } = renderHook(() => useManagementLink()); + await waitForNextUpdate(); + + expect(result.current).toBe(expectedUrl); + expect(mockGetUrl).toHaveBeenCalledWith({ + sectionId: 'insightsAndAlerting', + appId: 'triggersActionsConnectors', + }); + }); + + it('return empty link when management locator is not found', async () => { + (useKibana as jest.Mock).mockReturnValueOnce({ + services: { + share: { + url: { + locators: { + get: jest.fn().mockReturnValue(undefined), + }, + }, + }, + }, + }); + + const { result } = renderHook(() => useManagementLink()); + + expect(result.current).toBe(''); + }); +}); diff --git a/x-pack/plugins/search_playground/public/hooks/use_management_link.ts b/x-pack/plugins/search_playground/public/hooks/use_management_link.ts new file mode 100644 index 00000000000000..bade602e10519b --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_management_link.ts @@ -0,0 +1,32 @@ +/* + * 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. + */ + +import { useEffect, useMemo, useState } from 'react'; +import { useKibana } from './use_kibana'; + +export const useManagementLink = () => { + const { + services: { share }, + } = useKibana(); + const managementLocator = useMemo( + () => share.url.locators.get('MANAGEMENT_APP_LOCATOR'), + [share] + ); + const [managementLink, setManagementLink] = useState(''); + useEffect(() => { + const getLink = async () => { + const link = await managementLocator?.getUrl({ + sectionId: 'insightsAndAlerting', + appId: 'triggersActionsConnectors', + }); + setManagementLink(link || ''); + }; + getLink(); + }, [managementLocator]); + + return managementLink; +}; diff --git a/x-pack/plugins/search_playground/public/hooks/use_user_profile.ts b/x-pack/plugins/search_playground/public/hooks/use_user_profile.ts new file mode 100644 index 00000000000000..74a056cd3add85 --- /dev/null +++ b/x-pack/plugins/search_playground/public/hooks/use_user_profile.ts @@ -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. + */ + +import { UserProfileWithAvatar } from '@kbn/user-profile-components'; +import { useQuery } from '@tanstack/react-query'; +import { useKibana } from './use_kibana'; + +export const useUserProfile = (): UserProfileWithAvatar | undefined => { + const { security } = useKibana().services; + + return useQuery( + ['useGetCurrentUserProfile'], + async () => { + return security.userProfiles.getCurrent({ dataPath: 'avatar' }); + }, + { + retry: false, + staleTime: Infinity, + } + ).data; +}; diff --git a/x-pack/plugins/search_playground/public/plugin.ts b/x-pack/plugins/search_playground/public/plugin.ts index 41eb85215eda1e..1b71fcdbad017e 100644 --- a/x-pack/plugins/search_playground/public/plugin.ts +++ b/x-pack/plugins/search_playground/public/plugin.ts @@ -7,7 +7,7 @@ import { CoreSetup, Plugin, CoreStart, AppMountParameters } from '@kbn/core/public'; import { PLUGIN_ID, PLUGIN_NAME } from '../common'; -import { PlaygroundToolbar, PlaygroundProvider, Playground } from './embeddable'; +import { PlaygroundToolbar, Playground, getPlaygroundProvider } from './embeddable'; import { AppPluginStartDependencies, SearchPlaygroundPluginSetup, @@ -35,7 +35,7 @@ export class SearchPlaygroundPlugin public start(core: CoreStart, deps: AppPluginStartDependencies): SearchPlaygroundPluginStart { return { - PlaygroundProvider, + PlaygroundProvider: getPlaygroundProvider(core, deps), PlaygroundToolbar, Playground, }; diff --git a/x-pack/plugins/search_playground/public/providers/playground_provider.tsx b/x-pack/plugins/search_playground/public/providers/playground_provider.tsx index 64748fb5d2aeab..0988336404cd84 100644 --- a/x-pack/plugins/search_playground/public/providers/playground_provider.tsx +++ b/x-pack/plugins/search_playground/public/providers/playground_provider.tsx @@ -8,15 +8,12 @@ import React from 'react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { FormProvider, useForm } from 'react-hook-form'; -import { ChatForm, SummarizationModelName } from '../types'; +import { ChatForm, ChatFormFields } from '../types'; const queryClient = new QueryClient({}); export interface PlaygroundProviderProps { - children: React.ReactNode; - defaultValues: { - indices: string[]; - }; + defaultValues?: Partial>; } export const PlaygroundProvider: React.FC = ({ @@ -26,10 +23,9 @@ export const PlaygroundProvider: React.FC = ({ const form = useForm({ defaultValues: { prompt: 'You are an assistant for question-answering tasks.', - docSize: 5, + doc_size: 5, source_fields: [], - summarization_model: SummarizationModelName.gpt3_5_turbo, - indices: defaultValues.indices, + indices: defaultValues?.indices || [], }, }); diff --git a/x-pack/plugins/search_playground/public/types.ts b/x-pack/plugins/search_playground/public/types.ts index 86c6c78ebaa643..0b4ad0dcc5b524 100644 --- a/x-pack/plugins/search_playground/public/types.ts +++ b/x-pack/plugins/search_playground/public/types.ts @@ -15,9 +15,11 @@ import { import { NavigationPublicPluginStart } from '@kbn/navigation-plugin/public'; import { SecurityPluginStart } from '@kbn/security-plugin/public'; import { HttpStart } from '@kbn/core-http-browser'; -import React from 'react'; +import React, { ComponentType } from 'react'; import { SharePluginStart } from '@kbn/share-plugin/public'; import { CloudSetup } from '@kbn/cloud-plugin/public'; +import { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui-plugin/public'; +import { ChatRequestData } from '../common/types'; import type { App } from './components/app'; import type { PlaygroundProvider as PlaygroundProviderComponent } from './providers/playground_provider'; import type { Toolbar } from './components/toolbar'; @@ -34,6 +36,7 @@ export interface SearchPlaygroundPluginStart { export interface AppPluginStartDependencies { navigation: NavigationPublicPluginStart; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; } export interface AppServicesContext { @@ -41,27 +44,26 @@ export interface AppServicesContext { security: SecurityPluginStart; share: SharePluginStart; cloud?: CloudSetup; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; } export enum ChatFormFields { question = 'question', citations = 'citations', prompt = 'prompt', - openAIKey = 'api_key', indices = 'indices', elasticsearchQuery = 'elasticsearch_query', summarizationModel = 'summarization_model', sourceFields = 'source_fields', - docSize = 'docSize', + docSize = 'doc_size', } export interface ChatForm { [ChatFormFields.question]: string; [ChatFormFields.prompt]: string; [ChatFormFields.citations]: boolean; - [ChatFormFields.openAIKey]: string; [ChatFormFields.indices]: string[]; - [ChatFormFields.summarizationModel]: string; + [ChatFormFields.summarizationModel]: LLMModel; [ChatFormFields.elasticsearchQuery]: { query: QueryDslQueryContainer }; [ChatFormFields.sourceFields]: string[]; [ChatFormFields.docSize]: number; @@ -103,11 +105,11 @@ export interface AIMessage extends Message { } export enum SummarizationModelName { - gpt3_5 = 'gpt-3.5-turbo', + gpt3_5_turbo = 'gpt-3.5-turbo', gpt3_5_turbo_1106 = 'gpt-3.5-turbo-1106', gpt3_5_turbo_16k = 'gpt-3.5-turbo-16k', gpt3_5_turbo_16k_0613 = 'gpt-3.5-turbo-16k-0613', - gpt3_5_turbo = 'gpt-3.5-turbo-instruct', + gpt3_5_turbo_instruct = 'gpt-3.5-turbo-instruct', } export interface ElasticsearchIndex { @@ -134,7 +136,7 @@ export type JSONValue = null | string | number | boolean | { [x: string]: JSONVa export interface ChatRequestOptions { options?: RequestOptions; - data?: Record; + data?: ChatRequestData; } export type CreateMessage = Omit & { @@ -191,3 +193,11 @@ export interface UseChatHelpers { ) => void; isLoading: boolean; } + +export interface LLMModel { + name: string; + value?: string; + icon: ComponentType; + disabled: boolean; + connectorId?: string; +} diff --git a/x-pack/plugins/search_playground/server/plugin.ts b/x-pack/plugins/search_playground/server/plugin.ts index 3bdcff27a817ed..9770254e76e601 100644 --- a/x-pack/plugins/search_playground/server/plugin.ts +++ b/x-pack/plugins/search_playground/server/plugin.ts @@ -7,11 +7,21 @@ import { PluginInitializerContext, CoreSetup, CoreStart, Plugin, Logger } from '@kbn/core/server'; -import { SearchPlaygroundPluginSetup, SearchPlaygroundPluginStart } from './types'; +import { + SearchPlaygroundPluginSetup, + SearchPlaygroundPluginStart, + SearchPlaygroundPluginStartDependencies, +} from './types'; import { defineRoutes } from './routes'; export class SearchPlaygroundPlugin - implements Plugin + implements + Plugin< + SearchPlaygroundPluginSetup, + SearchPlaygroundPluginStart, + {}, + SearchPlaygroundPluginStartDependencies + > { private readonly logger: Logger; @@ -19,11 +29,13 @@ export class SearchPlaygroundPlugin this.logger = initializerContext.logger.get(); } - public setup(core: CoreSetup) { + public setup( + core: CoreSetup + ) { this.logger.debug('searchPlayground: Setup'); const router = core.http.createRouter(); - defineRoutes({ router, log: this.logger }); + defineRoutes({ router, log: this.logger, getStartServices: core.getStartServices }); return {}; } diff --git a/x-pack/plugins/search_playground/server/routes.ts b/x-pack/plugins/search_playground/server/routes.ts index 17025f0101838e..dc5606f6136dae 100644 --- a/x-pack/plugins/search_playground/server/routes.ts +++ b/x-pack/plugins/search_playground/server/routes.ts @@ -6,16 +6,21 @@ */ import { schema } from '@kbn/config-schema'; -import { ChatOpenAI } from '@langchain/openai'; import { streamFactory } from '@kbn/ml-response-stream/server'; import { Logger } from '@kbn/logging'; -import { IRouter } from '@kbn/core/server'; +import { IRouter, StartServicesAccessor } from '@kbn/core/server'; +import { v4 as uuidv4 } from 'uuid'; +import { ActionsClientChatOpenAI } from '@kbn/elastic-assistant-common/impl/llm'; import { fetchFields } from './utils/fetch_query_source_fields'; import { AssistClientOptionsWithClient, createAssist as Assist } from './utils/assist'; import { ConversationalChain } from './utils/conversational_chain'; import { Prompt } from '../common/prompt'; import { errorHandler } from './utils/error_handler'; -import { APIRoutes } from './types'; +import { + APIRoutes, + SearchPlaygroundPluginStart, + SearchPlaygroundPluginStartDependencies, +} from './types'; export function createRetriever(esQuery: string) { return (question: string) => { @@ -28,7 +33,18 @@ export function createRetriever(esQuery: string) { }; } -export function defineRoutes({ log, router }: { log: Logger; router: IRouter }) { +export function defineRoutes({ + log, + router, + getStartServices, +}: { + log: Logger; + router: IRouter; + getStartServices: StartServicesAccessor< + SearchPlaygroundPluginStartDependencies, + SearchPlaygroundPluginStart + >; +}) { router.post( { path: APIRoutes.POST_QUERY_SOURCE_FIELDS, @@ -56,69 +72,93 @@ export function defineRoutes({ log, router }: { log: Logger; router: IRouter }) path: APIRoutes.POST_CHAT_MESSAGE, validate: { body: schema.object({ - data: schema.any(), + data: schema.object({ + connector_id: schema.string(), + indices: schema.string(), + prompt: schema.string(), + citations: schema.boolean(), + elasticsearch_query: schema.string(), + summarization_model: schema.maybe(schema.string()), + doc_size: schema.number(), + source_fields: schema.string(), + }), messages: schema.any(), }), }, }, errorHandler(async (context, request, response) => { + const [, { actions }] = await getStartServices(); const { client } = (await context.core).elasticsearch; + try { + const aiClient = Assist({ + es_client: client.asCurrentUser, + } as AssistClientOptionsWithClient); + const { messages, data } = await request.body; + const abortController = new AbortController(); + const abortSignal = abortController.signal; + const model = new ActionsClientChatOpenAI({ + actions, + logger: log, + request, + connectorId: data.connector_id, + model: data.summarization_model, + traceId: uuidv4(), + signal: abortSignal, + // prevents the agent from retrying on failure + // failure could be due to bad connector, we should deliver that result to the client asap + maxRetries: 0, + }); - const aiClient = Assist({ - es_client: client.asCurrentUser, - } as AssistClientOptionsWithClient); + let sourceFields = {}; + + try { + sourceFields = JSON.parse(data.source_fields); + } catch (e) { + log.error('Failed to parse the source fields', e); + throw Error(e); + } + + const chain = ConversationalChain({ + model, + rag: { + index: data.indices, + retriever: createRetriever(data.elasticsearch_query), + content_field: sourceFields, + size: Number(data.doc_size), + }, + prompt: Prompt(data.prompt, { + citations: data.citations, + context: true, + type: 'openai', + }), + }); - const { messages, data } = await request.body; + const stream = await chain.stream(aiClient, messages); - const model = new ChatOpenAI({ - openAIApiKey: data.api_key, - }); + const { end, push, responseWithHeaders } = streamFactory(request.headers, log); - let sourceFields = {}; + const reader = (stream as ReadableStream).getReader(); + const textDecoder = new TextDecoder(); - try { - sourceFields = JSON.parse(data.source_fields); - } catch (e) { - log.error('Failed to parse the source fields', e); - throw Error(e); - } + async function pushStreamUpdate() { + reader.read().then(({ done, value }: { done: boolean; value?: Uint8Array }) => { + if (done) { + end(); + return; + } + push(textDecoder.decode(value)); + pushStreamUpdate(); + }); + } - const chain = ConversationalChain({ - model, - rag: { - index: data.indices, - retriever: createRetriever(data.elasticsearchQuery), - content_field: sourceFields, - size: Number(data.docSize), - }, - prompt: Prompt(data.prompt, { - citations: data.citations, - context: true, - type: 'openai', - }), - }); - - const stream = await chain.stream(aiClient, messages); + pushStreamUpdate(); - const { end, push, responseWithHeaders } = streamFactory(request.headers, log); - - const reader = (stream as ReadableStream).getReader(); - const textDecoder = new TextDecoder(); + return response.ok(responseWithHeaders); + } catch (e) { + log.error('Failed to create the chat stream', e); - async function pushStreamUpdate() { - reader.read().then(({ done, value }: { done: boolean; value?: Uint8Array }) => { - if (done) { - end(); - return; - } - push(textDecoder.decode(value)); - pushStreamUpdate(); - }); + throw Error(e); } - - pushStreamUpdate(); - - return response.ok(responseWithHeaders); }) ); diff --git a/x-pack/plugins/search_playground/server/types.ts b/x-pack/plugins/search_playground/server/types.ts index bf28b884df0b1b..ecec570a85cafc 100644 --- a/x-pack/plugins/search_playground/server/types.ts +++ b/x-pack/plugins/search_playground/server/types.ts @@ -5,9 +5,15 @@ * 2.0. */ +import { PluginStartContract as ActionsPluginStartContract } from '@kbn/actions-plugin/server'; + // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchPlaygroundPluginSetup {} // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchPlaygroundPluginStart {} +export interface SearchPlaygroundPluginStartDependencies { + actions: ActionsPluginStartContract; +} + export * from '../common/types'; diff --git a/x-pack/plugins/search_playground/tsconfig.json b/x-pack/plugins/search_playground/tsconfig.json index 63f366614ffb59..e3a4150cbb6148 100644 --- a/x-pack/plugins/search_playground/tsconfig.json +++ b/x-pack/plugins/search_playground/tsconfig.json @@ -27,7 +27,14 @@ "@kbn/navigation-plugin", "@kbn/core-http-server", "@kbn/share-plugin", - "@kbn/cloud-plugin" + "@kbn/cloud-plugin", + "@kbn/actions-plugin", + "@kbn/shared-ux-utility", + "@kbn/core-lifecycle-browser", + "@kbn/stack-connectors-plugin", + "@kbn/cases-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/elastic-assistant-common" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx b/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx index 94776cfe744625..c17aeaebc4560c 100644 --- a/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/comment_actions/index.tsx @@ -7,7 +7,7 @@ import { EuiButtonIcon, EuiCopy, EuiFlexGroup, EuiFlexItem, EuiToolTip } from '@elastic/eui'; import { AttachmentType } from '@kbn/cases-plugin/common'; -import type { Message } from '@kbn/elastic-assistant'; +import type { ClientMessage } from '@kbn/elastic-assistant'; import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; @@ -22,7 +22,7 @@ import * as i18n from './translations'; import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features'; interface Props { - message: Message; + message: ClientMessage; } const CommentActionsComponent: React.FC = ({ message }) => { diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/index.test.tsx b/x-pack/plugins/security_solution/public/assistant/get_comments/index.test.tsx index 147cb39ae56000..884af527f4be08 100644 --- a/x-pack/plugins/security_solution/public/assistant/get_comments/index.test.tsx +++ b/x-pack/plugins/security_solution/public/assistant/get_comments/index.test.tsx @@ -5,11 +5,11 @@ * 2.0. */ +import type { MessageRole } from '@kbn/elastic-assistant-common'; import { OpenAiProviderType } from '@kbn/stack-connectors-plugin/public/common'; import { getComments } from '.'; -import type { ConversationRole } from '@kbn/elastic-assistant/impl/assistant_context/types'; -const user: ConversationRole = 'user'; +const user: MessageRole = 'user'; const currentConversation = { apiConfig: { actionTypeId: '.gen-ai', diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx b/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx index a7d1a00f802c1e..837a8d6f772f7b 100644 --- a/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx @@ -6,7 +6,7 @@ */ import type { EuiCommentProps } from '@elastic/eui'; -import type { Conversation, Message } from '@kbn/elastic-assistant'; +import type { Conversation, ClientMessage } from '@kbn/elastic-assistant'; import { EuiAvatar, EuiLoadingSpinner } from '@elastic/eui'; import React from 'react'; @@ -17,7 +17,7 @@ import { StreamComment } from './stream'; import { CommentActions } from '../comment_actions'; import * as i18n from './translations'; -export interface ContentMessage extends Message { +export interface ContentMessage extends ClientMessage { content: string; } const transformMessageWithReplacements = ({ @@ -26,7 +26,7 @@ const transformMessageWithReplacements = ({ showAnonymizedValues, replacements, }: { - message: Message; + message: ClientMessage; content: string; showAnonymizedValues: boolean; replacements: Replacements; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts index 3fa865209ba5ca..6fc6c0dd1482f1 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/openai/index.ts @@ -13,6 +13,7 @@ import { import { GenerativeAIForSecurityConnectorFeatureId, GenerativeAIForObservabilityConnectorFeatureId, + GenerativeAIForSearchPlaygroundConnectorFeatureId, } from '@kbn/actions-plugin/common'; import { urlAllowListValidator } from '@kbn/actions-plugin/server'; import { ValidatorServices } from '@kbn/actions-plugin/server/types'; @@ -39,6 +40,7 @@ export const getConnectorType = (): SubActionConnectorType => ( supportedFeatureIds: [ GenerativeAIForSecurityConnectorFeatureId, GenerativeAIForObservabilityConnectorFeatureId, + GenerativeAIForSearchPlaygroundConnectorFeatureId, ], minimumLicenseRequired: 'enterprise' as const, renderParameterTemplates, From 2ce82b3e263ab1774e98e0a48f1a5dae946a5b44 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 04:11:11 +0100 Subject: [PATCH 04/75] skip flaky suite (#180219) --- .../test_suites/observability/cases/attachment_framework.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts index dd157b9aa162fe..51ed4457e3de24 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts @@ -22,7 +22,8 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { const find = getService('find'); const toasts = getService('toasts'); - describe('Cases persistable attachments', function () { + // FLAKY: https://github.com/elastic/kibana/issues/180219 + describe.skip('Cases persistable attachments', function () { describe('lens visualization', () => { before(async () => { await svlCommonPage.login(); From b3599740affc1e92fa794a20fa4ac7d68ff76358 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 04:12:34 +0100 Subject: [PATCH 05/75] skip flaky suite (#180087) --- .../install_latest_bundled_prebuilt_rules.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/bundled_prebuilt_rules_package/trial_license_complete_tier/install_latest_bundled_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/bundled_prebuilt_rules_package/trial_license_complete_tier/install_latest_bundled_prebuilt_rules.ts index 8e90b423885aa8..5e147ee2b711b9 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/bundled_prebuilt_rules_package/trial_license_complete_tier/install_latest_bundled_prebuilt_rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/bundled_prebuilt_rules_package/trial_license_complete_tier/install_latest_bundled_prebuilt_rules.ts @@ -29,7 +29,9 @@ export default ({ getService }: FtrProviderContext): void => { /* attempt to install it from the local file system. The API response from EPM provides /* us with the information of whether the package was installed from the registry or /* from a package that was bundled with Kibana */ - describe('@ess @serverless @skipInQA install_bundled_prebuilt_rules', () => { + // + // FLAKY: https://github.com/elastic/kibana/issues/180087 + describe.skip('@ess @serverless @skipInQA install_bundled_prebuilt_rules', () => { beforeEach(async () => { await deleteAllRules(supertest, log); await deleteAllPrebuiltRuleAssets(es, log); From 15a20fe5b883295f372173b090a48bb93cfe48fa Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 01:39:37 -0400 Subject: [PATCH 06/75] [api-docs] 2024-04-09 Daily api_docs build (#180337) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/668 --- api_docs/actions.devdocs.json | 62 ++ api_docs/actions.mdx | 4 +- api_docs/advanced_settings.mdx | 2 +- ...ssistant_management_selection.devdocs.json | 43 +- .../ai_assistant_management_selection.mdx | 7 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/dataset_quality.mdx | 2 +- api_docs/deprecations_by_api.mdx | 4 +- api_docs/deprecations_by_plugin.mdx | 7 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.devdocs.json | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.devdocs.json | 585 ++++-------------- api_docs/embeddable_enhanced.mdx | 4 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.devdocs.json | 6 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.devdocs.json | 18 +- api_docs/fleet.mdx | 4 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.devdocs.json | 31 +- api_docs/image_embeddable.mdx | 7 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.devdocs.json | 54 +- api_docs/kbn_apm_synthtrace.mdx | 4 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bfetch_error.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ..._objects_base_server_internal.devdocs.json | 4 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- .../kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- .../kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.devdocs.json | 199 +++--- api_docs/kbn_elastic_assistant.mdx | 4 +- .../kbn_elastic_assistant_common.devdocs.json | 6 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- ..._esql_validation_autocomplete.devdocs.json | 17 + api_docs/kbn_esql_validation_autocomplete.mdx | 4 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_formatters.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_solution_nav_analytics.mdx | 2 +- api_docs/kbn_solution_nav_es.mdx | 2 +- api_docs/kbn_solution_nav_oblt.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.devdocs.json | 12 + api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.devdocs.json | 28 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.devdocs.json | 8 - api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/logs_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- .../observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 26 +- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.devdocs.json | 15 + api_docs/saved_search.mdx | 4 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.devdocs.json | 4 +- api_docs/search_playground.mdx | 4 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.devdocs.json | 4 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.devdocs.json | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.devdocs.json | 20 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.devdocs.json | 215 ++++++- api_docs/unified_histogram.mdx | 4 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 696 files changed, 1340 insertions(+), 1404 deletions(-) diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 1def8581a7ef9f..cc2d6d12496ab8 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -5593,6 +5593,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "actions", + "id": "def-common.GenerativeAIForSearchPlaygroundConnectorFeatureId", + "type": "string", + "tags": [], + "label": "GenerativeAIForSearchPlaygroundConnectorFeatureId", + "description": [], + "signature": [ + "\"generativeAIForSearchPlayground\"" + ], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "actions", "id": "def-common.GenerativeAIForSecurityConnectorFeatureId", @@ -5980,6 +5995,53 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "actions", + "id": "def-common.GenerativeAIForSearchPlaygroundFeature", + "type": "Object", + "tags": [], + "label": "GenerativeAIForSearchPlaygroundFeature", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "actions", + "id": "def-common.GenerativeAIForSearchPlaygroundFeature.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "actions", + "id": "def-common.GenerativeAIForSearchPlaygroundFeature.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "actions", + "id": "def-common.GenerativeAIForSearchPlaygroundFeature.compatibility", + "type": "string", + "tags": [], + "label": "compatibility", + "description": [], + "path": "x-pack/plugins/actions/common/connector_feature_config.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "actions", "id": "def-common.GenerativeAIForSecurityFeature", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 6bb5f4978d9830..2b231b9e018755 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 291 | 0 | 285 | 32 | +| 296 | 0 | 290 | 32 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 079c3bf8daea99..069653e10721ad 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.devdocs.json b/api_docs/ai_assistant_management_selection.devdocs.json index c9cb8b734799ed..c7233a2b94ecdd 100644 --- a/api_docs/ai_assistant_management_selection.devdocs.json +++ b/api_docs/ai_assistant_management_selection.devdocs.json @@ -4,15 +4,28 @@ "classes": [], "functions": [], "interfaces": [], - "enums": [], + "enums": [ + { + "parentPluginId": "aiAssistantManagementSelection", + "id": "def-public.AIAssistantType", + "type": "Enum", + "tags": [], + "label": "AIAssistantType", + "description": [], + "path": "src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], "misc": [], "objects": [], "setup": { "parentPluginId": "aiAssistantManagementSelection", - "id": "def-public.AiAssistantManagementSelectionPluginSetup", + "id": "def-public.AIAssistantManagementSelectionPluginPublicSetup", "type": "Interface", "tags": [], - "label": "AiAssistantManagementSelectionPluginSetup", + "label": "AIAssistantManagementSelectionPluginPublicSetup", "description": [], "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, @@ -23,15 +36,33 @@ }, "start": { "parentPluginId": "aiAssistantManagementSelection", - "id": "def-public.AiAssistantManagementSelectionPluginStart", + "id": "def-public.AIAssistantManagementSelectionPluginPublicStart", "type": "Interface", "tags": [], - "label": "AiAssistantManagementSelectionPluginStart", + "label": "AIAssistantManagementSelectionPluginPublicStart", "description": [], "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "aiAssistantManagementSelection", + "id": "def-public.AIAssistantManagementSelectionPluginPublicStart.aiAssistantType$", + "type": "Object", + "tags": [], + "label": "aiAssistantType$", + "description": [], + "signature": [ + "Observable", + "<", + "AIAssistantType", + ">" + ], + "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "deprecated": false, + "trackAdoption": false + } + ], "lifecycle": "start", "initialIsOpen": true } diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 576c59511ba37e..c498797d1c9258 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2 | 0 | 2 | 0 | +| 4 | 0 | 4 | 1 | ## Client @@ -31,3 +31,6 @@ Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs- ### Start +### Enums + + diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 050e803ed3235b..cf994e4e8a2dba 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 6bbce5cae9a6a2..62a97cbfc6e063 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index dfbf112cc4a7d5..4c30f15a7ab84a 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 674b0f66756a38..22b673f298c4cb 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 8246cb90cd40f9..1fe1393d79446c 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 6e28fd23d673a0..12cc2ef269d3a9 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index fe7fd4eb5ce81e..555391676a3141 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index c97ca36b4f6c23..18d986359336bc 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 77b653ef585f2a..9eb4ba40920888 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index d60d8da13f1772..95b77f9d1b1599 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 813e6ff93e6564..e9e8c503f98ee8 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 921b05a38d81c3..c74834631c0857 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index d1c27bf829825b..cc4cfb2a659b6f 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index e914f318c2a839..e9b9a3665bfdb7 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 85455b5cfe2c80..3d2bb309da694a 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index df7e0a592c6f63..6c172e3c190dd7 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 119c37dab280b0..270193472a61f4 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 906a1d3519c238..c7288fb51dfc0a 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 258e46e45f9bf2..2fcd7e23a55bf5 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 53934af395389c..f6a9224bba31ad 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 6c6ab5e3a21925..02f0b3a90a2565 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 20302a0f6002eb..cd2305a41f6d12 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 2fca1d0ead034f..e9ab6b57473c67 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 1f0455e0b450e2..1b696b8a2050e1 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index a55d48767ccd59..e4cd11417fe0a5 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 92324bd2ba5995..cd7b81c0d4c3f1 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 7546c5f20fa975..8bc0cb4e76497e 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 8f4ee21449ee6e..e43bf13ca293f1 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 25b8363b853156..77d41246b300a1 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 46b050a7c53a04..461d0d57114c98 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index da29a36e19c124..33dd9d423b06cc 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -28,7 +28,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | dashboard, dataVisualizer, stackAlerts, expressionPartitionVis | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | triggersActionsUi | - | -| | inspector, data, savedObjects, console, runtimeFields, indexManagement, dataViewEditor, unifiedSearch, embeddable, licensing, security, visualizations, savedObjectsTagging, dataViewFieldEditor, lens, dashboard, triggersActionsUi, cases, observabilityShared, banners, maps, @kbn/reporting-public, reporting, timelines, fleet, telemetry, cloudSecurityPosture, dashboardEnhanced, imageEmbeddable, graph, exploratoryView, monitoring, securitySolution, synthetics, uptime, dataViewManagement, eventAnnotationListing, filesManagement, uiActions, visTypeVislib | - | +| | inspector, data, savedObjects, console, runtimeFields, indexManagement, dataViewEditor, unifiedSearch, embeddable, licensing, security, visualizations, savedObjectsTagging, dataViewFieldEditor, lens, dashboard, triggersActionsUi, cases, observabilityShared, banners, maps, @kbn/reporting-public, reporting, timelines, fleet, telemetry, cloudSecurityPosture, dashboardEnhanced, graph, exploratoryView, monitoring, securitySolution, synthetics, uptime, dataViewManagement, eventAnnotationListing, filesManagement, uiActions, visTypeVislib | - | | | @kbn/core, visualizations, triggersActionsUi | - | | | ruleRegistry, securitySolution, synthetics, uptime, slo | - | | | alerting, discover, securitySolution | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 9f1b92f2e5ea84..0cb3080d3bb6f8 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -328,7 +328,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [shared.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/console/theme/shared.ts#:~:text=darkMode), [shared.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/console/theme/shared.ts#:~:text=darkMode) | - | +| | [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [shared.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/console/theme/shared.ts#:~:text=darkMode), [shared.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/console/theme/shared.ts#:~:text=darkMode) | - | @@ -963,8 +963,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [configure_image.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/image_editor/configure_image.tsx#:~:text=toMountPoint), [configure_image.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/image_editor/configure_image.tsx#:~:text=toMountPoint) | - | -| | [image_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/image_embeddable/image_embeddable_factory.tsx#:~:text=executeTriggerActions) | - | +| | [image_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/components/image_embeddable.tsx#:~:text=executeTriggerActions) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index b1d0f3373a8ad7..feebb2c797bbda 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 4dc8159298e43a..e8a9fe1e54a389 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index c96b5d54b33938..a21d782639c448 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index f845951d5045aa..751da77deed37f 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 582801605f7769..f6093273365c45 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.devdocs.json b/api_docs/elastic_assistant.devdocs.json index 0a3515831ff8b9..d018e3e4df09c9 100644 --- a/api_docs/elastic_assistant.devdocs.json +++ b/api_docs/elastic_assistant.devdocs.json @@ -1552,7 +1552,7 @@ "section": "def-common.KibanaRequest", "text": "KibanaRequest" }, - "" + "" ], "path": "x-pack/plugins/elastic_assistant/server/types.ts", "deprecated": false, diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index f7c972da6e024e..1e3f29199b8f50 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 0f441dcc254f05..5b50a692191033 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.devdocs.json b/api_docs/embeddable_enhanced.devdocs.json index 9900ae72dfb5d0..0447485d315cf9 100644 --- a/api_docs/embeddable_enhanced.devdocs.json +++ b/api_docs/embeddable_enhanced.devdocs.json @@ -11,14 +11,39 @@ "label": "apiHasDynamicActions", "description": [], "signature": [ - "(api: unknown) => api is ", + "(api: unknown) => api is Required void; dynamicActionsState$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" + }, + "<{ dynamicActions: ", + { + "pluginId": "uiActionsEnhanced", + "scope": "common", + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-common.DynamicActionsState", + "text": "DynamicActionsState" + }, + "; } | undefined>; }>>" ], "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", "deprecated": false, @@ -90,42 +115,7 @@ "section": "def-public.EmbeddableOutput", "text": "EmbeddableOutput" }, - ", any> & ", - { - "pluginId": "embeddableEnhanced", - "scope": "public", - "docId": "kibEmbeddableEnhancedPluginApi", - "section": "def-public.HasDynamicActions", - "text": "HasDynamicActions" - } - ], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.HasDynamicActions", - "type": "Interface", - "tags": [], - "label": "HasDynamicActions", - "description": [], - "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.HasDynamicActions.enhancements", - "type": "Object", - "tags": [], - "label": "enhancements", - "description": [], - "signature": [ - "{ dynamicActions: ", + ", any> & Partial<{ enhancements: { dynamicActions: ", { "pluginId": "uiActionsEnhanced", "scope": "public", @@ -133,175 +123,7 @@ "section": "def-public.DynamicActionManager", "text": "DynamicActionManager" }, - "; }" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.HasDynamicActions.setDynamicActions", - "type": "Function", - "tags": [], - "label": "setDynamicActions", - "description": [], - "signature": [ - "(newState: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.HasDynamicActions.setDynamicActions.$1", - "type": "Object", - "tags": [], - "label": "newState", - "description": [], - "signature": [ - "{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.HasDynamicActions.dynamicActionsState$", - "type": "Object", - "tags": [], - "label": "dynamicActionsState$", - "description": [], - "signature": [ - "{ source: ", - "Observable", - " | undefined; readonly value: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined; error: (err: any) => void; forEach: { (next: (value: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void): Promise; (next: (value: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void, promiseCtor: PromiseConstructorLike): Promise; }; getValue: () => { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined; pipe: { (): ", - "Observable", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", + "; }; setDynamicActions: (newState: { dynamicActions: ", { "pluginId": "uiActionsEnhanced", "scope": "common", @@ -309,40 +131,14 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - ", op5: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", + "; } | undefined) => void; dynamicActionsState$: ", { - "pluginId": "uiActionsEnhanced", + "pluginId": "@kbn/presentation-publishing", "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - ", op5: ", - "OperatorFunction", - ", op6: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", "<{ dynamicActions: ", { "pluginId": "uiActionsEnhanced", @@ -351,203 +147,9 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - ", op5: ", - "OperatorFunction", - ", op6: ", - "OperatorFunction", - ", op7: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - ", op5: ", - "OperatorFunction", - ", op6: ", - "OperatorFunction", - ", op7: ", - "OperatorFunction", - ", op8: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - ", op5: ", - "OperatorFunction", - ", op6: ", - "OperatorFunction", - ", op7: ", - "OperatorFunction", - ", op8: ", - "OperatorFunction", - ", op9: ", - "OperatorFunction", - "): ", - "Observable", - "; (op1: ", - "OperatorFunction", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, A>, op2: ", - "OperatorFunction", - ", op3: ", - "OperatorFunction", - ", op4: ", - "OperatorFunction", - ", op5: ", - "OperatorFunction", - ", op6: ", - "OperatorFunction", - ", op7: ", - "OperatorFunction", - ", op8: ", - "OperatorFunction", - ", op9: ", - "OperatorFunction", - ", ...operations: ", - "OperatorFunction", - "[]): ", - "Observable", - "; }; complete: () => void; closed: boolean; observers: ", - "Observer", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>[]; isStopped: boolean; hasError: boolean; thrownError: any; lift: (operator: ", - "Operator", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined, R>) => ", - "Observable", - "; unsubscribe: () => void; readonly observed: boolean; asObservable: () => ", - "Observable", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; operator: ", - "Operator", - " | undefined; subscribe: { (observerOrNext?: Partial<", - "Observer", - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>> | ((value: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void) | undefined): ", - "Subscription", - "; (next?: ((value: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void) | null | undefined, error?: ((error: any) => void) | null | undefined, complete?: (() => void) | null | undefined): ", - "Subscription", - "; }; toPromise: { (): Promise<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; (PromiseCtor: PromiseConstructor): Promise<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; (PromiseCtor: PromiseConstructorLike): Promise<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; }; }" + "; } | undefined>; }>" ], - "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", + "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -695,19 +297,91 @@ "label": "EnhancedEmbeddable", "description": [], "signature": [ - "E & ", + "E & Partial<{ enhancements: { dynamicActions: ", { - "pluginId": "embeddableEnhanced", + "pluginId": "uiActionsEnhanced", "scope": "public", - "docId": "kibEmbeddableEnhancedPluginApi", - "section": "def-public.HasDynamicActions", - "text": "HasDynamicActions" - } + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-public.DynamicActionManager", + "text": "DynamicActionManager" + }, + "; }; setDynamicActions: (newState: { dynamicActions: ", + { + "pluginId": "uiActionsEnhanced", + "scope": "common", + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-common.DynamicActionsState", + "text": "DynamicActionsState" + }, + "; } | undefined) => void; dynamicActionsState$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" + }, + "<{ dynamicActions: ", + { + "pluginId": "uiActionsEnhanced", + "scope": "common", + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-common.DynamicActionsState", + "text": "DynamicActionsState" + }, + "; } | undefined>; }>" ], "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "embeddableEnhanced", + "id": "def-public.HasDynamicActions", + "type": "Type", + "tags": [], + "label": "HasDynamicActions", + "description": [], + "signature": [ + "{ enhancements?: { dynamicActions: ", + { + "pluginId": "uiActionsEnhanced", + "scope": "public", + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-public.DynamicActionManager", + "text": "DynamicActionManager" + }, + "; } | undefined; setDynamicActions?: ((newState: { dynamicActions: ", + { + "pluginId": "uiActionsEnhanced", + "scope": "common", + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-common.DynamicActionsState", + "text": "DynamicActionsState" + }, + "; } | undefined) => void) | undefined; dynamicActionsState$?: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" + }, + "<{ dynamicActions: ", + { + "pluginId": "uiActionsEnhanced", + "scope": "common", + "docId": "kibUiActionsEnhancedPluginApi", + "section": "def-common.DynamicActionsState", + "text": "DynamicActionsState" + }, + "; } | undefined> | undefined; }" + ], + "path": "x-pack/plugins/embeddable_enhanced/public/embeddables/interfaces/has_dynamic_actions.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], "objects": [], @@ -746,27 +420,8 @@ "signature": [ "(uuid: string, getTitle: () => string | undefined, state: ", "DynamicActionsSerializedState", - ") => { dynamicActionsApi: ", - { - "pluginId": "embeddableEnhanced", - "scope": "public", - "docId": "kibEmbeddableEnhancedPluginApi", - "section": "def-public.HasDynamicActions", - "text": "HasDynamicActions" - }, - "; dynamicActionsComparator: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.StateComparators", - "text": "StateComparators" - }, - "<", - "DynamicActionsSerializedState", - ">; serializeDynamicActions: () => ", - "DynamicActionsSerializedState", - "; }" + ") => ", + "ReactEmbeddableDynamicActionsApi" ], "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts", "deprecated": false, diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 2bb082b449d9b6..1e1ac7f9823bdb 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 23 | 0 | 23 | 1 | +| 19 | 0 | 19 | 2 | ## Client diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 7afb79d966374c..ccea15a41b05e4 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 70dc479a81212d..a2fea1fca48769 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index b16015a4f2df42..ca8ba032090bf8 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 24d6ba0f433270..64e9dc1d3ea234 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 161009dccc4bb5..c7d01e28aa38f4 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 9053b8238068a9..8b8fd3124c46a6 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 007cb28ee5c201..40fbb3baef77e5 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 4afe9d7fb394ad..1842e41fbdb38b 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index e12f5abb494fbe..d4fe03a27488c5 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 9ef51379d13be4..d2ce2529c34c30 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 7c2f9d8d441410..426b3e894c2d14 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index ebe3ea5297dfd1..fe3132d43b9838 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index df3953bf39b3a4..05d37f39152841 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index a52a862a6c2591..45dac8bc591a7d 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 1948f4b7bbcdd7..2dcbc3e725e3bc 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index be83ecf6f296ef..a721f83789ab32 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index da840db723b2ec..83b4facc4355ca 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index eb81dc0d4eed8e..1c2d721606fb22 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index fbab485306507f..8082c62705d5d8 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 20b07f2331c926..f61549bff3637b 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index a57f3f1404b810..a4a06a57343443 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index f2e78558b79c95..bc0d95970bbcae 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index f7f6602d973509..7817b17b911525 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 719c694c0a80ec..873ae4eeda7f98 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.devdocs.json b/api_docs/files.devdocs.json index 05b4118d5b6284..117ba9c81c758d 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -587,7 +587,11 @@ }, { "plugin": "imageEmbeddable", - "path": "src/plugins/image_embeddable/public/plugin.ts" + "path": "src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx" + }, + { + "plugin": "imageEmbeddable", + "path": "src/plugins/image_embeddable/public/image_embeddable/get_image_embeddable_factory.tsx" }, { "plugin": "filesManagement", diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 6d613ba7ee2ce4..dca33b4bfda5d6 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index e2e8d109d99b01..54f8672adc4f68 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 36f3b583b6df99..204941b53c8368 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -21133,6 +21133,21 @@ "path": "x-pack/plugins/fleet/common/types/models/epm.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-common.Installation.latest_executed_state", + "type": "Object", + "tags": [], + "label": "latest_executed_state", + "description": [], + "signature": [ + "InstallLatestExecutedState", + " | undefined" + ], + "path": "x-pack/plugins/fleet/common/types/models/epm.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -21177,7 +21192,8 @@ "label": "status", "description": [], "signature": [ - "\"installed\" | \"already_installed\" | undefined" + "InstallResultStatus", + " | undefined" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/epm.ts", "deprecated": false, diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index f4b2b3a20d8a98..7dd730f7b3600a 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1235 | 3 | 1115 | 59 | +| 1236 | 3 | 1116 | 61 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 5c490675ea364b..5a5126d52f73a2 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index e3a5efc8449f28..6f90e18161ff39 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 5d46dee79ce6cd..bbf141188cef38 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.devdocs.json b/api_docs/image_embeddable.devdocs.json index de7b6757c0d1df..49be07321c31df 100644 --- a/api_docs/image_embeddable.devdocs.json +++ b/api_docs/image_embeddable.devdocs.json @@ -3,36 +3,7 @@ "client": { "classes": [], "functions": [], - "interfaces": [ - { - "parentPluginId": "imageEmbeddable", - "id": "def-public.ImageClickContext", - "type": "Interface", - "tags": [], - "label": "ImageClickContext", - "description": [], - "path": "src/plugins/image_embeddable/public/actions/image_click_trigger.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "imageEmbeddable", - "id": "def-public.ImageClickContext.embeddable", - "type": "Object", - "tags": [], - "label": "embeddable", - "description": [], - "signature": [ - "ImageEmbeddable" - ], - "path": "src/plugins/image_embeddable/public/actions/image_click_trigger.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - } - ], + "interfaces": [], "enums": [], "misc": [ { diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 6e008f13f9b366..134a1c6c8020f0 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; @@ -21,13 +21,10 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3 | 0 | 3 | 1 | +| 1 | 0 | 1 | 0 | ## Client -### Interfaces - - ### Consts, variables and types diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 28bf06beff4aba..d3c944161ed3b6 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 52a337a4e2d58c..f47b535d4443d0 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index fc2108b070246f..43efcdc00abb8d 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 20ecf75c3ae54c..3b182c03ff3a60 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 055be43a9923c8..36f8a4a66760f9 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 7adf81d32e0589..2de444dbc80a7e 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index a06853bf8f2fb0..d44e10f46d6c39 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 8636d93ae6d7dd..20dfe62b82f815 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 8b62828fe7493d..80ffdde13188ee 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index f4f5bb2d0dab51..f7d0e0c5e8f22b 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 23858e1b34dc0f..23cf2f15d9733b 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 6a9e028f8535d1..978fb21290e757 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 4e7acb57d0e9ce..cecdafb127a91a 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index afb2136113523e..d1e17ff371a040 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 9f8aefbed98c43..1b24604509548c 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index dc3397da5d1186..e544c11d45f76f 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 8c4c7dbe5ff246..f53d79d36d5013 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 048bc9d5049dc3..1cf72fd271ede7 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 6034c9c592ce52..c3892c730e82ee 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 93f676df6da04a..991b5b10e42886 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index e4cc95c39c218e..7fc9c9ea833eb6 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index b36c824ed74d8b..28c512272e5d22 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 6410c54b505221..7d1a4aa8be5fee 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index e03f14a14dfbce..5ec093e7bf9c8a 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 81b84bbc1ef1eb..49d7633ddbd499 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index 2d3c49ff1a3417..3eb44a004304fb 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -237,6 +237,38 @@ ], "returnComment": [] }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.ApmSynthtraceKibanaClient.getFleetApmPackagePath", + "type": "Function", + "tags": [], + "label": "getFleetApmPackagePath", + "description": [], + "signature": [ + "(packageVersion?: string | undefined) => string" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.ApmSynthtraceKibanaClient.getFleetApmPackagePath.$1", + "type": "string", + "tags": [], + "label": "packageVersion", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, { "parentPluginId": "@kbn/apm-synthtrace", "id": "def-server.ApmSynthtraceKibanaClient.fetchLatestApmPackageVersion", @@ -261,7 +293,7 @@ "label": "installApmPackage", "description": [], "signature": [ - "(packageVersion: string) => Promise" + "(packageVersion?: string | undefined) => Promise<{ version: string; }>" ], "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, @@ -275,15 +307,31 @@ "label": "packageVersion", "description": [], "signature": [ - "string" + "string | undefined" ], "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.ApmSynthtraceKibanaClient.uninstallApmPackage", + "type": "Function", + "tags": [], + "label": "uninstallApmPackage", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/apm/client/apm_synthtrace_kibana_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 436368231c36fa..f085d1958cd192 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 44 | 0 | 44 | 8 | +| 47 | 0 | 47 | 8 | ## Server diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 052006f1cff731..f7888af612aef0 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 7555d1ae41c5f0..8ec4ede23945b5 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index b8f571be2b5708..80345ae37e0110 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 708b4073b71ebc..be33e6c0498006 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index d5c7d2eaec0981..5adb0ff459a488 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 0666ce8089ebc9..c4293cd84f7460 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index b6145aabd5c8a0..9ffde581286c90 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 4ba0dd94744d3b..d0cc2145b80ef0 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index fce63e50b6af2e..8f58f8c815166a 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index bbb01379816689..ddd21cc2d22189 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index a0879ae5974803..d4d1bb2381cb2d 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 0b0dc035184802..8420da5fea111a 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 2e6ddb92cf0ef7..99977e8d2a287c 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 6001cba505769f..ed9861169c294d 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 972f332ee45187..2a5a6d7de33154 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index c4770d6bbe9188..f76f5884a3cd5e 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 230c71bb18096c..29a389674a50cf 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index e0129ff9de7516..7b73580a615e31 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 3b8884953a2418..0dc60fe4311f73 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index c596d462367e02..c1e93a72597165 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index e313cb1d37156b..18cdeb62a13ed4 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 63ba0308bdcca4..9298fd6ae09725 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index f0a3518897dfc3..d463c39db65ec5 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 1b39b0d2420a20..6682dc69621f7d 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index f8de5dfaac0299..042ebbeabfe8b1 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 66c3ad36252f7e..94f96aafe4f5e8 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 637afc023c53f7..ca55ee46b6ffc2 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index ca4e92f5055a21..ff33cd7a011ba0 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 36059879bc5106..7bfe53d26bda82 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index b214a89f2614cc..2526a387860570 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 3381380b93c88e..45fd9fb343bf0c 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index a2f20dcfa49627..8e7f97685e570f 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 133b51c8001851..18e27a4dddd8d0 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index da92ca8f1dc5fa..9dba56bcc3d06b 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 40ea2e5eb41e49..4dd9f63aa0099d 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index fb122893bb6fb1..a1250a657606c0 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index dc1ea81ade1aa9..342ed7c30bc514 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 65c2fa192bbf8c..2c786d411e609d 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index a1cefc79a5cd26..9899fb595e5f7a 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index fc8b17a875fc25..8c1ce22ad028d7 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 355488a25f69cb..e806aeedabd840 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 55ccd055f9919c..a8c046a4024fb0 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 28ab50a274d61d..d944b3142da429 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index f919e377a1e47a..75a4984a3ca68d 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 821340c743835f..71b9411bb9ea33 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index dbdf6d1d14ab42..57bd0dcfea8ffb 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index b183b7769baac6..3c6cd46c5d1f0c 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index c87fb295129bff..06fdc4ae0542ff 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index bddcd111b193df..ab09af40146d41 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 630163438e1d14..d5964715718fc3 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 85533d34b800fc..750c6a59ab94c7 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index fd03bcb56f1777..66a33d320e6e11 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index cf388cea99c9a5..916e7e850305b8 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index c7dfab7044e607..2c117a52a890ec 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 5c9cb87490b1db..58dcf8f4098226 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 3e2610b5d8f8f6..95115caaedc1c3 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 1e2ca895c7763e..7b6c688604861c 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index f402e55bc811b2..d8f86e3330dcb6 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 74af9889db693a..54b9cb5d3b829b 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index fff432e70874c9..3bd19cc625acf7 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 03ff52b79cf285..1b732c1233fe5e 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index a30f18d8500cbc..254bb87f13aa87 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 0c56c982870ee9..873dfce45ed134 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 2e2f89e203090f..fe3642dc0fdca4 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 3f27095ef16117..9f257ecf61e3e6 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 2adf3352ec33b3..414589d44c7d64 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 0c3461f4adc47f..4975247234a34f 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index fbe72aa2f3d8b1..471cc00a7710ac 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 4fa849010dcf91..697eadc32dd47f 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index e02e1f8cece6d7..e54d304f894b88 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index d4e69a4964f771..7c29b072edbd4d 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 4e07c7cde38f62..77cc3623700449 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 1c754ceb424908..0fadac749ba46a 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 104dda2d1da7ed..bda5b9deb98230 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index cccd2ac8ff69d3..9c855276bf8bd0 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index b19069993db6fc..2418af4e33bd52 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 2dff9097c52780..a30ff529285d45 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index d048fe4062f64a..807672fe84d020 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 0f7149644d45df..e7f4399da5da68 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index d9e1287fc88411..b759e3cda29c04 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 9f5653b7d0a54f..afbfedcab14b92 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 41ee29bc0838ac..14ebcb0b25fb9d 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index fb6009b346c065..740845c5e1757c 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index eb0984fa3474d0..9cfbafc832256c 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index d4bc170744a6bb..fa347b76943e0b 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 96697729f41391..b8ffc70b1ee2f0 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index a87dd9a655f68f..1fde0f4d99e196 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 5123528f73fc72..455cdb259daac7 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index b6429f88c726ef..a782ada34d7a4e 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 16ed5026b7e1ba..93e3ea056eca7a 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index de2f32476fdf97..8aa898440364c3 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index eb82219c6c0194..617897367896eb 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index cd67135cad8cfc..31033086cb4a6e 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index a3b75beaa018cb..74231f7f865ebe 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 911f208ae19449..5854767c310091 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 871e9900670f3d..a0662bad0a02b8 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index be746128fe53d4..901a79b4f4e0da 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index ea1bd83e06bb87..fee5c2b3b10510 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 2d067d4762bbac..873990a680f832 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index e782bd07d1d922..9bc1dc24fa95b8 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 00fa239921b337..e73092b5bc979b 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index e1f73ab5063ce2..7935ccc86e396f 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 1c56780da4ea83..be7476b82bbc02 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 3315f35b1db883..2d5c23170b2328 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 15e7292a5dccad..c94627a82060d5 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index c7454390e93605..58795f329fc0b1 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 5ff48ab7288c8b..e9ff5a8ac4d9ec 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index edc0730a2b7a3b..70ae07523eb161 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 1f81000fa52b68..a85f0fe88c804a 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 47180787f886bd..37df0c1e592d35 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index ce52095d2d0f4b..2503790119a8e5 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 5c4f749878f241..a8ffa746d32723 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 9f45c1238e21f6..ddb89c9d136880 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index fea237abe6af5a..e88575b768cac8 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 6986893c2224bf..824fa7ecf775f3 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 81e069e3ff1e8d..1195344c71af56 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 35c9cf4a25fc44..6813b43316f1e2 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 64bf5ec0779cf6..9d1c9dbcf8b274 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 7da333c1b467a2..eb62d918e57f05 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index fb50ddec60e523..1eae54dce38645 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 0b403d784db23d..7dd46b87e58297 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index dc12da3e59c69e..af73cf59883064 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index a93ad0ac4c9be7..ba827f73b8660e 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 54a050ee0ea40b..07a312b66ccc77 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 7c0784e6e58937..5044282c5038dc 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index d86bee3cd97025..7b8beaf9624b42 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 5c184bc0b23888..c9b36864164697 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 978866c1841d3f..cb1d701408dfe0 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 2c1c1fbe90d05d..39dc017cac4507 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index b047173e03968c..5d2cfa077aa8b3 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 697676d60b0b23..2800139f8038c3 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 6d83cca79b5377..8fa90c939e95f2 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 33239b1f68f6da..9b43f156f4809f 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index bab027f7c82a27..fd71ff97075164 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 6ca5684b274db3..c23520fbdd0092 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 392f1889811edb..419e8dca529233 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 4bb60744bb0196..59fa8ee9708c3c 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 3c4ed6ed5439aa..49b07366fde13b 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 89ad4b95f5d7de..a049473ea2a934 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 544baf3a90a46a..ab42d6107c4444 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 7f73a323cdeadd..9c53919a7e7c3d 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index c66b3e9deb90ed..7a3083406dd076 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 42a788a71bee4b..993e1944a10c2b 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index fc2da9cb1fb2ba..44fe734a5aa560 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 41552fc8165fce..7c3e4c5c59ed5b 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 39d2564e66e2b3..8ddfe78ee75d5c 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json b/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json index 000b94aa9f7e6f..9bdbbaf5c65b75 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_base_server_internal.devdocs.json @@ -2625,10 +2625,10 @@ }, { "parentPluginId": "@kbn/core-saved-objects-base-server-internal", - "id": "def-common.HASH_TO_VERSION_MAP.epmpackagesc1e2020399dbebba2448096ca007c668", + "id": "def-common.HASH_TO_VERSION_MAP.epmpackages8ce219acd0f6f3529237d52193866afb", "type": "string", "tags": [], - "label": "'epm-packages|c1e2020399dbebba2448096ca007c668'", + "label": "'epm-packages|8ce219acd0f6f3529237d52193866afb'", "description": [], "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/constants.ts", "deprecated": false, diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 8b6ff96b8e3b24..f4f2bf39d62d87 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 544b6053701512..1d8d1368eab28f 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index fe184e0ba08e6d..f570e412c6ce09 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 4714e1fc55ff1f..daf986cc892816 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 9033aa221d3096..7c6c265d55d62e 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index f7183a58081f90..154ff2964e8f86 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 603da73a9f911a..558637de0f9f55 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index e357d10bbbb7f7..c6df4f3bdc3bbb 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 14f408e031fd56..144a0929b8073a 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index f2d01484d8310e..7ae33ec872787e 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 30a88249edd210..1cad0bb5144d0f 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 6b75b4bc96506c..a4df2c6140a2a9 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index bf4efdf992e0c5..c76b6a60be5829 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 408076b5bed513..a00e6efe3c2366 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index f83f891de0be1e..eee4a1412b5cc8 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 0c9e7b4b64ca12..8485aa4f485e8d 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index 499f89d6326b6c..35aad6a8c0124c 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 1e537042cc992e..7a1e60238f451f 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 792ccc2b8e612c..ad9006f5c9f8a5 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index 18bb77e037d8e2..cb251b2eb1f535 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 92e08a3947aff0..6f1f15154e90e5 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index acacc9f2ea1a5a..2d7a73e6f9e335 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 14890e11fb10b3..ac10abccc0c44e 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 8aeaa909460187..271a18a7b0a1ac 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 248b132febc887..9046f7cdad12e6 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 1b7e72bc159590..80a3d22715e31e 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index a7d4fc13ff0dbd..42ee8e838239e7 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index cf9c8acfb8b2aa..b04121813e07c3 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 1ac2cb8cd39f8d..483fe768d4e24b 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index f96e8ea46372be..7a0ac983fe08f3 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 28ef28756bde0b..4e538695a24222 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index df31294fdb7bdd..7ec51c6963dc80 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 4c44d7e0920c6c..bb81c65107e859 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index bb5bb764d61c2d..3762e0e06d6ea9 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 0f7958451a8c38..3be4c75cd4eb35 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 75660f7759d1b1..092decc9a7a39b 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index ec32fbb5261248..b2df5c20193e6f 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index b30b3db610f54b..8c83e017d62748 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index f41acbc7f03fc7..da591b4ee67278 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index e06db39873b186..df8ad844844d9b 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 7fea5e7b793e69..48a53a4988afbb 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 234cb4727361fe..ad8d19ae844e97 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 0c78f7ba3c795f..a07e044c968afd 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 9ba03314a538c0..762b4a754bfebe 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index aaddce0669eee0..f7800f74edc39c 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 1da9a7312fe3a5..c8f6015dab39eb 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 758cef4a323d27..7739c8f7d0b0a7 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 6343911eee61a9..7168ca929d21e4 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 781f9f44132ffa..8c0f4bafe0172d 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 34831924070d1d..d58ccb38513880 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 725a6a5b2e2242..178f8f826a6246 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 6495cddb6ec123..82f4c02d6c6a07 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index d58c0473798e4d..53dc3136fde413 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 56d812cd80f50e..e912249fddb69a 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 43ee735012fe01..f04e7040f0fa1d 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index d49596a280f32f..72a716b6621664 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 8ef20c8adadd7e..db96badb6d431f 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 013fe422179bcf..f4963f0acaf01e 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index ec17b9acac3315..7d6c396b014bab 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 5b1bc697ab2da7..fa92e05f8bf2d0 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 864bf6f64c3a4c..599bdc2ff6323d 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index a60fa75177840a..68bd08c2431540 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 7450364f7923ed..9c4bda939a7d9d 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index b16ebc39234eee..2d30c7fc6b27ed 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 8f914d74240348..ef809050d499fe 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index d872e08d0a9de6..a7d20a99c51d7f 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index f5cabf21d107ea..cb82fd7029fb15 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index d83fe34dbcd23e..d0de0b2580e65c 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index c9cc03fbe38949..39a82eaa9e03a8 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 911d02d7428be1..f15f4ea7e8cf29 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 8a3db060438487..b395437ac0dcd3 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index ba21abc6ea8f20..a935eeda856021 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 81f278107c81ab..dcf65d1ad83b53 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 3316d8b859b919..4ca9dcdfea5d72 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 4e813cc93512fd..b8c89e65ca236f 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index b632966911d97c..645c3e7634bbf6 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 48c3c6a185f5dd..e5b75acbc6ec6b 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 313dacf9674629..4f71ef455d9b2d 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index d4777c9afab90d..02d580bca8e4e8 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index cf96fa4096845a..103ec0d613fbcb 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index d2e06fa630509a..10d0ad636af426 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.devdocs.json b/api_docs/kbn_elastic_assistant.devdocs.json index f723fffa6ee5b9..bf97e77f8fe401 100644 --- a/api_docs/kbn_elastic_assistant.devdocs.json +++ b/api_docs/kbn_elastic_assistant.devdocs.json @@ -1394,6 +1394,73 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/elastic-assistant", + "id": "def-public.ClientMessage", + "type": "Interface", + "tags": [], + "label": "ClientMessage", + "description": [], + "signature": [ + { + "pluginId": "@kbn/elastic-assistant", + "scope": "public", + "docId": "kibKbnElasticAssistantPluginApi", + "section": "def-public.ClientMessage", + "text": "ClientMessage" + }, + " extends Omit<{ timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; isError?: boolean | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, \"content\" | \"reader\">" + ], + "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/elastic-assistant", + "id": "def-public.ClientMessage.reader", + "type": "Object", + "tags": [], + "label": "reader", + "description": [], + "signature": [ + "ReadableStreamDefaultReader | undefined" + ], + "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/elastic-assistant", + "id": "def-public.ClientMessage.content", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/elastic-assistant", + "id": "def-public.ClientMessage.presentation", + "type": "Object", + "tags": [], + "label": "presentation", + "description": [], + "signature": [ + "MessagePresentation", + " | undefined" + ], + "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/elastic-assistant", "id": "def-public.CodeBlockDetails", @@ -1585,8 +1652,8 @@ "pluginId": "@kbn/elastic-assistant", "scope": "public", "docId": "kibKbnElasticAssistantPluginApi", - "section": "def-public.Message", - "text": "Message" + "section": "def-public.ClientMessage", + "text": "ClientMessage" }, "[]" ], @@ -1790,8 +1857,8 @@ "pluginId": "@kbn/elastic-assistant", "scope": "public", "docId": "kibKbnElasticAssistantPluginApi", - "section": "def-public.Message", - "text": "Message" + "section": "def-public.ClientMessage", + "text": "ClientMessage" }, "[] | undefined" ], @@ -1902,130 +1969,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message", - "type": "Interface", - "tags": [], - "label": "Message", - "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.role", - "type": "CompoundType", - "tags": [], - "label": "role", - "description": [], - "signature": [ - "\"user\" | \"system\" | \"assistant\"" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.reader", - "type": "Object", - "tags": [], - "label": "reader", - "description": [], - "signature": [ - "ReadableStreamDefaultReader | undefined" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.replacements", - "type": "CompoundType", - "tags": [], - "label": "replacements", - "description": [], - "signature": [ - "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.content", - "type": "string", - "tags": [], - "label": "content", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.timestamp", - "type": "string", - "tags": [], - "label": "timestamp", - "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.isError", - "type": "CompoundType", - "tags": [], - "label": "isError", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.presentation", - "type": "Object", - "tags": [], - "label": "presentation", - "description": [], - "signature": [ - "MessagePresentation", - " | undefined" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/elastic-assistant", - "id": "def-public.Message.traceData", - "type": "Object", - "tags": [], - "label": "traceData", - "description": [], - "signature": [ - "{ transactionId: string; traceId: string; } | undefined" - ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/elastic-assistant", "id": "def-public.PostKnowledgeBaseResponse", diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index af450cf60fae94..a2457c6d23ac8d 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 155 | 0 | 133 | 8 | +| 150 | 0 | 128 | 8 | ## Client diff --git a/api_docs/kbn_elastic_assistant_common.devdocs.json b/api_docs/kbn_elastic_assistant_common.devdocs.json index 3e3c410b6b2e57..e8ebc581b78dcc 100644 --- a/api_docs/kbn_elastic_assistant_common.devdocs.json +++ b/api_docs/kbn_elastic_assistant_common.devdocs.json @@ -1451,7 +1451,7 @@ "label": "ExecuteConnectorRequestBody", "description": [], "signature": [ - "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; }" + "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, @@ -1466,7 +1466,7 @@ "label": "ExecuteConnectorRequestBodyInput", "description": [], "signature": [ - "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; }" + "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, @@ -2810,7 +2810,7 @@ "label": "ExecuteConnectorRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ conversationId: Zod.ZodOptional; message: Zod.ZodOptional; model: Zod.ZodOptional; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; actionTypeId: Zod.ZodString; alertsIndexPattern: Zod.ZodOptional; allow: Zod.ZodOptional>; allowReplacement: Zod.ZodOptional>; isEnabledKnowledgeBase: Zod.ZodOptional; isEnabledRAGAlerts: Zod.ZodOptional; replacements: Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>; size: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; }, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; }>" + "Zod.ZodObject<{ conversationId: Zod.ZodOptional; message: Zod.ZodOptional; model: Zod.ZodOptional; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; actionTypeId: Zod.ZodString; alertsIndexPattern: Zod.ZodOptional; allow: Zod.ZodOptional>; allowReplacement: Zod.ZodOptional>; isEnabledKnowledgeBase: Zod.ZodOptional; isEnabledRAGAlerts: Zod.ZodOptional; replacements: Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>; size: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; conversationId?: string | undefined; message?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allow?: string[] | undefined; allowReplacement?: string[] | undefined; isEnabledKnowledgeBase?: boolean | undefined; isEnabledRAGAlerts?: boolean | undefined; size?: number | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index e8a17ce0cd3a22..962809e235dc8e 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 9f18cf37443883..5768870538315a 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 33cdaf49639d99..6a1cc0e23a167b 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 36f1329f0366f2..b721d4fd019479 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 499eb9ba9e9c97..cfcca407f92aba 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 139740cb534e19..5bde7157db0173 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 0c6301fd086595..0666bcfbc59ea7 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index ef2afbeacef3f5..df7d51a9b85c3a 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 742743176adef0..3ca89e0e1aef7d 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.devdocs.json b/api_docs/kbn_esql_validation_autocomplete.devdocs.json index e4e67121121f32..4cb8e32f3940c6 100644 --- a/api_docs/kbn_esql_validation_autocomplete.devdocs.json +++ b/api_docs/kbn_esql_validation_autocomplete.devdocs.json @@ -219,6 +219,8 @@ "section": "def-common.AstProviderFn", "text": "AstProviderFn" }, + ", options: ", + "CodeActionOptions", ", resourceRetriever: ", { "pluginId": "@kbn/esql-validation-autocomplete", @@ -313,6 +315,21 @@ "id": "def-common.getActions.$4", "type": "Object", "tags": [], + "label": "options", + "description": [], + "signature": [ + "CodeActionOptions" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getActions.$5", + "type": "Object", + "tags": [], "label": "resourceRetriever", "description": [], "signature": [ diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 9826114529b83e..a46b1b818f692f 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 192 | 0 | 183 | 7 | +| 193 | 0 | 184 | 8 | ## Common diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 496bfd6771b3e4..c467f84045aeed 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index b4b276455748c4..1cd65fa6c5586d 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index e42f51b471ca8c..b41621dc9b1536 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 9f9fb4a5d538ce..10dd45685232fe 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 5821be119a45d8..18b035ac4f07de 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 5d6d5322801213..1f17b2268494d1 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx index 4069e2905ffebb..f9e048ea3904f8 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index e3ddede52324c5..e78e19d7ddd4e4 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 305124aa2c9bef..548ad64a1d89d2 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 9a064980e4d0c5..caaa791d17a88f 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 0e603817a5660f..a403eaca484c06 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index dd0b71d2c6da5d..af26e70402db03 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index cecf8613893b68..6d1c2cf7c9fcb0 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 7b077d6872a99a..579befbe3a0db5 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 91bf61cda2670c..12646fefebbacd 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 3228cc0a7a32c2..3ca909d54644b0 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index ba19d95f844299..6d33c5ba664786 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index a8cb2c28e2399b..b751a46d7a5d18 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index dd13c8944b9950..610ae84ee4e954 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 0bc9327f050772..8efc7e04fa1238 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 254b29cc72b08f..e82bbfeec446b8 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index e02622ea2a6ede..9a0112e50404fd 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 5b68a5cde3147c..219ac4a68b7d33 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index d0a5f6ecca5440..aa0923f71d6591 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index c1a59a0d3b7a89..0a0a19917e4d08 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 356c524386d9bf..6d4c03f7ba753f 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 24a1f43821ffde..549ee6e8c52367 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 9bc92430cc547f..3417eecd15c104 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 9b8eaf263f2d72..bad86096e83c02 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 69bca1866ee70c..da198197b3007d 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 8fefb8e1be14e8..dff3e4eab7d5c6 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 06f468f1178784..d8532df39efa7f 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 38d013a7cb7cd9..18e04755e20816 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index bcd133a43ea373..bed5578154d7ae 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index b7a9d074db5d28..1f6d1e691c949f 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 2a5298add7b2ed..7f4d0312ae3009 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 0f5ba591cc5ce6..1388f3e6b9204d 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index efa3293efd1524..7e100e7b232219 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 730fed0df920bc..4979988d74ccc8 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 3bddcd7cafe16d..54a4a74442f62c 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 1b22c3b89cc9e9..c3932bf15841f3 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 02a8e96df91a09..4bdf446d7c3ead 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 62b630dfc529cb..101970034b5dcd 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 618ec0c98c5cf7..092d62d1c0c453 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 2da155401cabcd..64e663bee471bd 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 80e4a8f351bce3..37a89ff9fc57db 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 10755bdc2b5da8..55526aaa9b1dcd 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index ae364c87e00de1..04404303ea46ca 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 85d127104e65d6..a5d9cea9f292ce 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index b3fb0120161fc5..3bd64d9921c22b 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index b8f308b4e16cb8..c4ca5c9da0773c 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 2982532952cdd8..5eb49d79996e0f 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 279f18773b12ea..d854c2be95e178 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 12ead612f7a9b9..5b15774f791d73 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index d441a3da121c35..47d5dbe350ecaf 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 4ea9e803e07a6c..340128b8ac5a8a 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index c8903430ac9919..900d1120e01f88 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index c49e8951530e41..17f459a9fee393 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 7b4076c9263922..7b1b10a44f9920 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index deead20c2258ed..76d568b99ca845 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index ea76e2d20b0091..dda8c515859e5f 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 1a7e14cba74a8f..eba76f9eb44ad3 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index e8263071046597..379dfe8bf7c7e8 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 3695efdb3f0b06..e9a2165e2c1735 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index d91b2fb9b8fa2a..863368108a45b9 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 89883bd18c06f0..446ed31fe815b1 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index d6ec511d435421..9239f03eaf066e 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index 5f1e398aed0edd..ab30fd2d316c39 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index f94133f9ca0546..b0dc1e6e667778 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 491f9a95565352..8e3b56a8b44a6b 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index ce0c8d9e773949..b019ffd61ba39a 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index d7263b0f29e209..d353a8336a2f90 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index afafa1103c5eb3..86fc69cb122c99 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index a5608a2517b0c1..14d2ae00d05520 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 7917eedd4e088b..2b056678a1da75 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 06a9a8c283ef3e..f93edc0ae5c5f7 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 4bb13ff1c3b425..9acba4731f6a36 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index dab25dab44633b..5f28bcf92de01a 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index c3c2a6870d0e7f..4aa38bf139541e 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 64fdcce3a33aaf..70b093205de3e9 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index c7a9626e42bc08..198b42e486bc95 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 5b5d9001fefe44..e3c53199b000a6 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 2f92ed228ffc3d..9ca0b6a4dd577e 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index f759e7b83a0cc8..6ca08dedcc3f94 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 3906913f808f53..84314cb490309e 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 0aee7a698cd917..e1fdd540a5b0d4 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 7ce783cf54593c..b73c7b7c0e1fdb 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 2d958d4c651c32..723212a4d99b42 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 405f05a46579d3..5510dc14011506 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index dac4e24759637f..2c7c6a12fb5a3f 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 63ff5f46cffa12..f4bd9fd4528731 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index ce5f52da05b5c9..49f5f0abdc1de0 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 5f5179d1d09070..8c996bb81c824b 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index ed8d7bf49b20a2..6f9ad8ff7016e9 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 74a07b6021e001..c94d4372b8c13d 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index a4dc3471dfa126..d5c70f5482928b 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index bc7efabe746c8c..d6b4a3473427d9 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 3546d69bdcd81d..8123242594b1cd 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 9d08500d8bebe3..6cbd3f57dac651 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 4f714198073a9c..5a43fd796263f2 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index f5dfbecfff3fd3..84e1de9f622a38 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 58b6884d58b196..6305430098d5b8 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 5cb7889bf2dd97..2f5ad7dd538c06 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 9e3046e2af4256..18e757de4251b7 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 2c49fe542fbba4..154800afa9e278 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 0ee7387e17bd22..44d0bd60538b90 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index ec1ba0fc598c42..b7954271fff10a 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 647a1c3f9c36c9..901a4f0766885f 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 9b413cae382392..986e9b1fe3156d 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 6e37c9c820ed02..103ea8f4dc71bc 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 3c4ac0b7dcba9f..7b1974fe8b79b2 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index e89a51d601baff..46e14785e35f1e 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index b76c80e0095a53..116f4703c45e46 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 5555e05b864501..fc6451c130ea91 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 40392ae2fef7b0..632e486f9b07a5 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index bb9b6658c45472..4418ecadd619b6 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 7e38dea5b408c3..44dec84df0a6d6 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 34f7579d628e51..84af33d5277e07 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 85a5567bc4770b..34c1d2a8da1777 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 13b1a69f879032..aa347d33eb6375 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 6fb5096589ba77..f185237f2d9ca3 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 612fffe2f9e589..438c20df93a39a 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index f5945968c0849f..69d852fd04b694 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 6eeff1cd38a6f7..ce8b8e2a266b13 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 43790cc018bec0..3188f67f1bf0a6 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 9ae8b96470544f..7b4aef6e672744 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index cc526894eeeb30..540fcd95c2e3bf 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index b07e1e08bfa600..76f94658c26c27 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index c960a569cc4644..181fb4319d094a 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index bdf8ffe4882e87..3a7e7d1bfa9a5b 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 302633fcb0efd7..3f3a3463bec28b 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 09718ff97a2769..241f412b0c10d8 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 8f9601578bea6b..6e3ff1c8cc10ac 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 4e22ec1fc67402..6922d586b3c28c 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index fac93c6a36ec79..8c8ec7475ab220 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 0811e6355afdb1..5950a1210e375d 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 8cf39311914078..1f65c0b6f853d6 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index abd2b9a95ea712..68dce5f0f71c49 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 90331278203ede..5eeb9e3ec0794d 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 7fda966b99c511..2200c31b18058d 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 5c96a0c1983e83..3bcf3e402e9914 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 3a8b3a0710fb70..b76fb5ebb674c9 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index e53c859243ccc0..2f2cbec233218c 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 4506ba2b07bf97..2fde2dd64d2dc7 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 06f36055f4657d..d38e9c7b11de1e 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index d0fa768fee9c93..bed5cdc7aecfc6 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 700e87acf56e9c..efd6b470153d82 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index eb4a587644edba..703c6d6f47b5f0 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index a40b783b110c3c..a43ea8a7788c0f 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 97a1d03aebcbe4..29c4df1b840d7e 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 43e4c85a9fc152..8fe5dc31c9b263 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 1a2f1d579c433a..5f13351a1038e3 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 1643b91f3c5af1..b30651f29c43f1 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index bc42f5d1bea8da..91cfc04731263f 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 4ae636d5a62175..f7ea494a1f9e80 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 5ab005960a9763..c3e05dfc793eef 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index babfba55ab73a5..6dfa7805977c34 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index c8f44a539c03c5..20bae2ccdf6bb3 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 950bb45fd799fb..86421d23afefc2 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index f8ef68090d19b5..1be4f06e2994cb 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index e3d1b7704fc276..7bca06a10cfe61 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 06afb5777e1c08..9f523ddd21489e 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index bfc0b8b776b706..cb8d1cd8a1f87c 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index e1032cf82c531f..215b2433bb7277 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index bdad22089985e9..6ef98cb35531b4 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index b352958d6bc3e6..475099fdcfadc9 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 7dd443d2ee4643..70fb7b4ec2d15c 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 10859f0db9b1d5..3b0251a4988eab 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index accff664604ac4..988d785c1c5f36 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 92d993a7bac9d2..f6c1abddeba07d 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 48c471ac1598ab..854e0be1884594 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index f31f27f2588dce..57639f8a355c19 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 9897b33b83f8fe..458abf89e66aed 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index f2c3e3bc08d76c..6260aa0fa44340 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 67918d558b5c0d..b9151e7da91f6c 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index c283ac91aa1bc1..29c999e59bc453 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 88a0b0a25cf89b..f2161aea7da86d 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 66dc6821fcd854..5fa441ec16b2ba 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index fd6172f07953ca..cd6a279652ba76 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index b2bbc4b59a2d21..48d35622600534 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 93ba8c84397076..2eb70fef946d11 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 22ed0a58d9d93a..970a9e11d52a7a 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index b0b26e0b0b14eb..01d2bbd9b876af 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 5866c0649389ac..f5a9f6b4f41a4a 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 8e6311e44b1308..42b5a7b32304a4 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 6a927b29576ae7..ebfe04cc4e521b 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index d9ebb1669ae19e..6975323d44a93e 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 4e7009186c2a2c..db168728178dd7 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 8f25818ea97a38..b221b043f16d5f 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index ee869fdce917b6..3eb3d7f77df482 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 31b299e723a8c6..7abd45a25b3f10 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 84afae5d1ca812..678da9e16d48db 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index fecf37a4c9e850..6cebeb3f5f2750 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index f74c5191a0180a..2553c09c8f3db2 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index b3884521b2366c..4c999df43ccd0c 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index d01f73f11d5116..94c657d8bdd3f2 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index b1532607680fd1..232161658629cd 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index dfc51d0c60b991..d4ede9a3587a2f 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index da2f1c3007b555..d8e3f205143d22 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index 4a2f27e328115d..5447c781d8370d 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index a22f82cc39956a..246592fb224063 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index cf52d527940ddd..4eb6321e1752b3 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_solution_nav_analytics.mdx b/api_docs/kbn_solution_nav_analytics.mdx index b90f447cf14010..fa6208e9bb22bb 100644 --- a/api_docs/kbn_solution_nav_analytics.mdx +++ b/api_docs/kbn_solution_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-analytics title: "@kbn/solution-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-analytics plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-analytics'] --- import kbnSolutionNavAnalyticsObj from './kbn_solution_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_solution_nav_es.mdx b/api_docs/kbn_solution_nav_es.mdx index 2f979b961d37f9..7afb9a4db03080 100644 --- a/api_docs/kbn_solution_nav_es.mdx +++ b/api_docs/kbn_solution_nav_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-es title: "@kbn/solution-nav-es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-es plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-es'] --- import kbnSolutionNavEsObj from './kbn_solution_nav_es.devdocs.json'; diff --git a/api_docs/kbn_solution_nav_oblt.mdx b/api_docs/kbn_solution_nav_oblt.mdx index c1a417e637616e..ca844d45dbd1bd 100644 --- a/api_docs/kbn_solution_nav_oblt.mdx +++ b/api_docs/kbn_solution_nav_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-oblt title: "@kbn/solution-nav-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-oblt plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-oblt'] --- import kbnSolutionNavObltObj from './kbn_solution_nav_oblt.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 31f8cf57da292f..ff37f0d327d068 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 4f651b7758d103..e8d496b7cad9e4 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 6c27fc5097a638..ab63b032bd4ac4 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 53bba9d0ba8d5a..d972699c3aac95 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index b57d52eb8ff058..e72f03766a099c 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 4e9de7a686d395..1a7105a8f6b173 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 68a4cf44028d0e..9e72b7ac40d8b7 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index 695738093c0e9d..57593bc5cb59a1 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 4e2e5248f7a2cb..c5ce7e4642b159 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index eaf72c6d03d87a..b5a3c1033673f0 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 927a35f663483e..aa84b3f05453ca 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index ec0ca3f487d576..48a8930ae88860 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index f76a1d8c69ab7b..8486af9d861134 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 07a1625e64a0ef..cb1264f140300e 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 316cd769a31f0c..a6584c017c63f4 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 719865fb009315..26c63ab233cf43 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 2cd4ac6a049301..4179446ac503ce 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 88f034594f47b9..f5c1a55accf037 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.devdocs.json b/api_docs/kbn_ui_theme.devdocs.json index 1d1fb378e9a9ea..0a7cbe86f839c1 100644 --- a/api_docs/kbn_ui_theme.devdocs.json +++ b/api_docs/kbn_ui_theme.devdocs.json @@ -69,6 +69,18 @@ "deprecated": true, "trackAdoption": false, "references": [ + { + "plugin": "@kbn/monaco", + "path": "packages/kbn-monaco/src/esql/lib/esql_theme.ts" + }, + { + "plugin": "@kbn/monaco", + "path": "packages/kbn-monaco/src/esql/lib/esql_theme.ts" + }, + { + "plugin": "@kbn/monaco", + "path": "packages/kbn-monaco/src/esql/lib/esql_theme.ts" + }, { "plugin": "@kbn/monaco", "path": "packages/kbn-monaco/src/esql/lib/esql_theme.ts" diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index a7a92e94059a75..60308174e8f100 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index ec4fd4ad9eee7b..b5249585011464 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index d20aaaea690359..0626b174cfee00 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 44aac1322edd94..27bc90ca761e16 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index f1df460dd12ebd..ecdca11b291a27 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 81c8e6625baa4a..54ae1ca335ff32 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 8a641a3117a79c..26bc63c04e78fa 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 0c21fa5d41a8de..3349a5f196d831 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 1af0d7eed447dd..b7afa4cdbe4055 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 6bab006d44f449..dc1ef0540b80da 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 26e12f516bd36a..d897b7b24f4237 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.devdocs.json b/api_docs/kbn_visualization_utils.devdocs.json index b52439e9940d1f..e20561e6cecbae 100644 --- a/api_docs/kbn_visualization_utils.devdocs.json +++ b/api_docs/kbn_visualization_utils.devdocs.json @@ -61,23 +61,7 @@ "section": "def-common.DataView", "text": "DataView" }, - " | undefined; }) => { title: string; references: { id: string; name: string; type: string; }[]; state: { adHocDataViews?: { [x: string]: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - "; } | undefined; datasourceStates: { [x: string]: {}; formBased?: undefined; } | { formBased: {}; }; filters: ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[]; query: ", + " | undefined; }) => { references: { name: string; id: string; type: string; }[]; visualizationType: string; state: { visualization: {}; datasourceStates: Record; query: ", { "pluginId": "@kbn/es-query", "scope": "common", @@ -93,7 +77,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - "; visualization: {}; }; visualizationType: string; }" + "; filters: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[]; }; title: string; }" ], "path": "packages/kbn-visualization-utils/src/get_lens_attributes.ts", "deprecated": false, diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 87512d1585a8d7..644000718a0104 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index df8c972843017d..fb5c4ac4e6f0b1 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 5784eb4299d2f8..f32aa8d649f1d4 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 243e3a73dc3004..10eec934068cb2 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 9f1fcfc5529b18..24326d58a0310c 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 43fbab84ee60c2..bf38a7ad5febec 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -2960,14 +2960,6 @@ "plugin": "dashboardEnhanced", "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx" }, - { - "plugin": "imageEmbeddable", - "path": "src/plugins/image_embeddable/public/image_editor/configure_image.tsx" - }, - { - "plugin": "imageEmbeddable", - "path": "src/plugins/image_embeddable/public/image_editor/configure_image.tsx" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index d0b21bd47992ae..f2bbf56f5e05d1 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 3c6b31727ea390..9b838e6451bc0b 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 316c5ff854a56b..16d9e9b5504a69 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index abe2879cb2dd21..291c8fb74aff2a 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 9d82f91838e11b..7e4942ca77189f 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 78097aa481cad4..87720853ad12c2 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 5a83b6a8ef2646..72d8f837256b14 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 5329a28e78593e..4605d3463042e7 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 1898c238d6cc0e..790fb3db837b74 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 5129a2c71e6ca5..61a2e665ae05e0 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 5c51056b67f73b..fdf975321a1279 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index dd7912fe9957a5..c4e62e60ed6bce 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index e2b71819b05d6d..92f2aa1397bd68 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 98de91f46ecc9a..fa48610f4656b2 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 4b11687734c6e0..b5cc0e3f70bf70 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index f8158653237da1..d31324bd602286 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index c817ce81b77548..14dc6a4e552012 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index df631d61199046..2e5686ff9730b2 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index aa20c16f499c7b..9896f8ab4dd151 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 3262313c663b1b..b2376c5c72b73f 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index c2abda8123d045..f0a341de93c9e8 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 0bfe0bbdd59f4d..819a8cde67804f 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 922b355dfc4609..bacf4b5ab2563d 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 66a2c8addf6949..2746b68ad1b135 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index ba67a1c4f6f7e5..51c31f4fee8664 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index c334f92d47c0c1..0c139b2085447c 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index f84768b1da6523..b4a95fb3d34333 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 9f354432d92c64..df11bab29f74b1 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 3120250579bcf9..e65e610ae12984 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 1ae7a9b2b24ed8..a3a56cfe3b3fe0 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 4c88d8929235c8..cdab482fc7e655 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 2329f818f95285..2d75e6b2963236 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 2bc8e3a0d19b1c..69cd42366b586a 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,15 +21,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 46896 | 234 | 35598 | 1817 | +| 46905 | 234 | 35606 | 1826 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 291 | 0 | 285 | 32 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 296 | 0 | 290 | 32 | | | [@elastic/appex-sharedux @elastic/kibana-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 2 | 0 | 2 | 0 | -| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 2 | 0 | 2 | 0 | +| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 4 | 0 | 4 | 1 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 67 | 0 | 4 | 1 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 854 | 1 | 822 | 54 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | The user interface for Elastic APM | 29 | 0 | 29 | 127 | @@ -69,7 +69,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 45 | 0 | 31 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 559 | 1 | 453 | 8 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 23 | 0 | 23 | 1 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 19 | 0 | 19 | 2 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 53 | 0 | 46 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 99 | 3 | 97 | 3 | @@ -96,7 +96,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 84 | 0 | 84 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 2 | 0 | 2 | 0 | -| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1235 | 3 | 1115 | 59 | +| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1236 | 3 | 1116 | 61 | | ftrApis | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 72 | 0 | 14 | 5 | | globalSearchBar | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 0 | 0 | 0 | 0 | @@ -105,7 +105,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | grokdebugger | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/platform-onboarding](https://github.com/orgs/elastic/teams/platform-onboarding) | Guided onboarding framework | 59 | 0 | 58 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 151 | 0 | 111 | 1 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Image embeddable | 3 | 0 | 3 | 1 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Image embeddable | 1 | 0 | 1 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 4 | 0 | 4 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 230 | 0 | 225 | 3 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin visualizes data from Filebeat and Metricbeat, and integrates with other Observability solutions | 37 | 0 | 34 | 6 | @@ -162,12 +162,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 164 | 0 | 150 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 89 | 0 | 83 | 3 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 105 | 0 | 57 | 1 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the definition and helper methods around saved searches, used by discover and visualizations. | 79 | 0 | 78 | 3 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the definition and helper methods around saved searches, used by discover and visualizations. | 80 | 0 | 79 | 4 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 32 | 0 | 13 | 0 | | | [@elastic/kibana-reporting-services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 32 | 0 | 8 | 4 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Plugin hosting shared features for connectors | 19 | 0 | 19 | 3 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Plugin to provide access to and rendering of python notebooks for use in the persistent developer console. | 4 | 0 | 4 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 15 | 0 | 9 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 15 | 0 | 9 | 1 | | searchprofiler | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 409 | 0 | 199 | 2 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 195 | 0 | 124 | 37 | @@ -198,7 +198,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds UI Actions service to Kibana | 149 | 0 | 103 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 212 | 0 | 145 | 11 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains services reliant on the plugin lifecycle for the unified doc viewer component (see @kbn/unified-doc-viewer). | 10 | 0 | 7 | 2 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 55 | 0 | 23 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 62 | 0 | 29 | 5 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 152 | 2 | 113 | 23 | | upgradeAssistant | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 1 | 0 | @@ -245,7 +245,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 22 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 18 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 4 | 0 | 4 | 0 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 44 | 0 | 44 | 8 | +| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 47 | 0 | 47 | 8 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 191 | 0 | 191 | 28 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-qa](https://github.com/orgs/elastic/teams/kibana-qa) | - | 12 | 0 | 12 | 0 | @@ -473,7 +473,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 19 | 0 | 11 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 13 | 0 | 5 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 35 | 0 | 34 | 0 | -| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 155 | 0 | 133 | 8 | +| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 150 | 0 | 128 | 8 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 227 | 0 | 213 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 52 | 0 | 37 | 7 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 32 | 0 | 19 | 1 | @@ -483,7 +483,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 66 | 1 | 66 | 2 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 20 | 0 | 18 | 0 | -| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 192 | 0 | 183 | 7 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 193 | 0 | 184 | 8 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 39 | 0 | 39 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 38 | 0 | 14 | 1 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 57d20faf55a3e2..9e19f80faf4359 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index fa63d683dc19aa..d67d3155bad860 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 21283a8152255d..2dc48cbf31f8f0 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index ba278fb4bf70b6..50b8ca823d6584 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index d5f2cf72f61f55..378f67fa914bb7 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 4e0fc433707a0b..25ba5a64882c3c 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index b06014ee8c0c9a..5ccacdc72c281a 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 2c61e98041b263..346a8f10c1d023 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 1244f7232f860c..df848d2593560b 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index fd3b56a0bfaf1d..f2d481319dd3f1 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 51e5bbf70bb7c5..c66a6838c8ac62 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index a58da1237cb761..cd01b48176998c 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index cc80cf8937face..8d41f3c3b87bf8 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 866da22c1fdfe6..3c3aa1db55d08f 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.devdocs.json b/api_docs/saved_search.devdocs.json index daae9ae5829ab0..be730ab9c77a68 100644 --- a/api_docs/saved_search.devdocs.json +++ b/api_docs/saved_search.devdocs.json @@ -1610,6 +1610,21 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "savedSearch", + "id": "def-common.SavedSearch.visContext", + "type": "CompoundType", + "tags": [], + "label": "visContext", + "description": [], + "signature": [ + "VisContextUnmapped", + " | undefined" + ], + "path": "src/plugins/saved_search/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "savedSearch", "id": "def-common.SavedSearch.managed", diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 902f4a1cc8778c..62007df12de45f 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 79 | 0 | 78 | 3 | +| 80 | 0 | 79 | 4 | ## Client diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index c048e1e3d191b8..2410dde2476552 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index ca350629758c65..56a52e1786f4b2 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index cd50e3a276e926..73e1a9ebcf9281 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index a4daa0dc32a137..c70964598cf4f0 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.devdocs.json b/api_docs/search_playground.devdocs.json index ccbf3c593b016f..2a069c7157ede7 100644 --- a/api_docs/search_playground.devdocs.json +++ b/api_docs/search_playground.devdocs.json @@ -40,7 +40,9 @@ "label": "PlaygroundProvider", "description": [], "signature": [ - "React.FunctionComponent<{ children?: React.ReactNode; }>" + "React.FunctionComponent<", + "PlaygroundProviderProps", + " & { children?: React.ReactNode; }>" ], "path": "x-pack/plugins/search_playground/public/types.ts", "deprecated": false, diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 2402e00660eca9..81b578081a9534 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 15 | 0 | 9 | 0 | +| 15 | 0 | 9 | 1 | ## Client diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 858e187c42e8f7..44d79931370bff 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index a1528b152f5880..684856b5b2f8c2 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 46c7e9a32fd56f..58db74178245a1 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index b29acbb9a89a17..5943ccbd74667f 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index d8d0528817edc2..a1b3b5a2ae7519 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 71ec840efa6657..01e5448867dc41 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index a89b0c14590e93..dac3f15b65b1d6 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index bd7a3e192edfc6..6a99161fac99b4 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 6f3f4817112572..f1f74aa3d918be 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 102dd6b6493238..d9a15f97da0ab2 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 9a64d28af87daf..b5c59725b2e0ba 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index c9e27f0109d413..2afe9d860e954a 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 569f0e8a4c3617..1789b79a317b59 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index e36d09af10be51..f941edc5cfc7a1 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 345dcc098eed3e..0f42a37f8f8682 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index e07cffefcc0b8d..8066c04ee74391 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 3bbfd762030c93..ffc1e78451118e 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index f107e6f430f9de..b541a02069ab5c 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 2256028e637169..e8343accb5cadc 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index c22699d64f7235..4ac204fe5d1489 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 1f99cc3226fd59..edc45a050a4bc9 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index 10319c01212224..ff8b67cd77ae9e 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -4355,11 +4355,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.tsx" + "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.tsx" + "path": "x-pack/plugins/security_solution/public/timelines/components/timeline/tabs/query/index.tsx" }, { "plugin": "securitySolution", diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index d957c672b63dff..2c71dc852d95bc 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 7fde2ebaf75c69..0ddcd2565a5d44 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 3948f31aac3195..ff687c140dedfb 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index 5d398579e7d92b..aa8a658265dcfe 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -783,7 +783,7 @@ }, { "plugin": "imageEmbeddable", - "path": "src/plugins/image_embeddable/public/image_embeddable/image_embeddable_factory.tsx" + "path": "src/plugins/image_embeddable/public/components/image_embeddable.tsx" }, { "plugin": "embeddable", diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 4101b8565b7e83..262cd266b713ff 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.devdocs.json b/api_docs/ui_actions_enhanced.devdocs.json index 7eeb5a7446abf4..66263338b020e6 100644 --- a/api_docs/ui_actions_enhanced.devdocs.json +++ b/api_docs/ui_actions_enhanced.devdocs.json @@ -3365,7 +3365,15 @@ "label": "isCompatible", "description": [], "signature": [ - "(context: C) => Promise" + "(context: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.EmbeddableApiContext", + "text": "EmbeddableApiContext" + }, + ") => Promise" ], "path": "src/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts", "deprecated": false, @@ -3374,12 +3382,18 @@ { "parentPluginId": "uiActionsEnhanced", "id": "def-public.DynamicActionManagerParams.isCompatible.$1", - "type": "Uncategorized", + "type": "Object", "tags": [], "label": "context", "description": [], "signature": [ - "C" + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.EmbeddableApiContext", + "text": "EmbeddableApiContext" + } ], "path": "src/plugins/ui_actions_enhanced/public/dynamic_actions/dynamic_action_manager.ts", "deprecated": false, diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 5cadf44ecadfbe..aefabd9cccded6 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 80ebf56c9863ed..a81c3a92d37793 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.devdocs.json b/api_docs/unified_histogram.devdocs.json index e46f7f6dfc4a79..6b53c653dfdca3 100644 --- a/api_docs/unified_histogram.devdocs.json +++ b/api_docs/unified_histogram.devdocs.json @@ -3,6 +3,39 @@ "client": { "classes": [], "functions": [ + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.canImportVisContext", + "type": "Function", + "tags": [], + "label": "canImportVisContext", + "description": [], + "signature": [ + "(visContext: unknown) => boolean" + ], + "path": "src/plugins/unified_histogram/public/utils/external_vis_context.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.canImportVisContext.$1", + "type": "Unknown", + "tags": [], + "label": "visContext", + "description": [], + "signature": [ + "unknown" + ], + "path": "src/plugins/unified_histogram/public/utils/external_vis_context.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "unifiedHistogram", "id": "def-public.getBreakdownField", @@ -466,17 +499,25 @@ "section": "def-common.RequestAdapter", "text": "RequestAdapter" }, - " | undefined; isChartLoading?: boolean | undefined; table?: ", + " | undefined; isChartLoading?: boolean | undefined; onVisContextChanged?: ((nextVisContext: ", { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" + "pluginId": "unifiedHistogram", + "scope": "public", + "docId": "kibUnifiedHistogramPluginApi", + "section": "def-public.UnifiedHistogramVisContext", + "text": "UnifiedHistogramVisContext" + }, + " | undefined, externalVisContextStatus: ", + { + "pluginId": "unifiedHistogram", + "scope": "public", + "docId": "kibUnifiedHistogramPluginApi", + "section": "def-public.UnifiedHistogramExternalVisContextStatus", + "text": "UnifiedHistogramExternalVisContextStatus" }, - " | undefined; } & Pick<", + ") => void) | undefined; } & Pick<", "UnifiedHistogramLayoutProps", - ", \"className\" | \"children\" | \"query\" | \"filters\" | \"columns\" | \"container\" | \"onBrushEnd\" | \"disabledActions\" | \"timeRange\" | \"services\" | \"dataView\" | \"relativeTimeRange\" | \"renderCustomChartToggleActions\" | \"onFilter\" | \"withDefaultActions\" | \"abortController\"> & ", + ", \"className\" | \"children\" | \"query\" | \"filters\" | \"columns\" | \"container\" | \"onBrushEnd\" | \"disabledActions\" | \"timeRange\" | \"table\" | \"services\" | \"dataView\" | \"relativeTimeRange\" | \"renderCustomChartToggleActions\" | \"onFilter\" | \"externalVisContext\" | \"withDefaultActions\" | \"abortController\"> & ", { "pluginId": "@kbn/shared-ux-utility", "scope": "common", @@ -884,22 +925,16 @@ }, { "parentPluginId": "unifiedHistogram", - "id": "def-public.UnifiedHistogramState.currentSuggestion", + "id": "def-public.UnifiedHistogramState.currentSuggestionContext", "type": "Object", "tags": [], - "label": "currentSuggestion", + "label": "currentSuggestionContext", "description": [ "\nThe current Lens suggestion" ], "signature": [ - { - "pluginId": "lens", - "scope": "public", - "docId": "kibLensPluginApi", - "section": "def-public.Suggestion", - "text": "Suggestion" - }, - " | undefined" + "UnifiedHistogramSuggestionContext", + " | undefined" ], "path": "src/plugins/unified_histogram/public/container/services/state_service.ts", "deprecated": false, @@ -1137,9 +1172,129 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.UnifiedHistogramVisContext", + "type": "Interface", + "tags": [], + "label": "UnifiedHistogramVisContext", + "description": [ + "\nUnified Histogram type for recreating a stored Lens vis" + ], + "path": "src/plugins/unified_histogram/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.UnifiedHistogramVisContext.attributes", + "type": "CompoundType", + "tags": [], + "label": "attributes", + "description": [], + "signature": [ + "LensAttributes<\"lnsXY\", ", + { + "pluginId": "lens", + "scope": "public", + "docId": "kibLensPluginApi", + "section": "def-public.XYState", + "text": "XYState" + }, + "> | LensAttributes<\"lnsPie\", ", + "PieVisualizationState", + "> | LensAttributes<\"lnsHeatmap\", ", + { + "pluginId": "lens", + "scope": "public", + "docId": "kibLensPluginApi", + "section": "def-public.HeatmapVisualizationState", + "text": "HeatmapVisualizationState" + }, + "> | LensAttributes<\"lnsGauge\", ", + { + "pluginId": "lens", + "scope": "public", + "docId": "kibLensPluginApi", + "section": "def-public.GaugeVisualizationState", + "text": "GaugeVisualizationState" + }, + "> | LensAttributes<\"lnsDatatable\", ", + { + "pluginId": "lens", + "scope": "public", + "docId": "kibLensPluginApi", + "section": "def-public.DatatableVisualizationState", + "text": "DatatableVisualizationState" + }, + "> | LensAttributes<\"lnsLegacyMetric\", ", + { + "pluginId": "lens", + "scope": "common", + "docId": "kibLensPluginApi", + "section": "def-common.LegacyMetricState", + "text": "LegacyMetricState" + }, + "> | LensAttributes<\"lnsMetric\", ", + { + "pluginId": "lens", + "scope": "public", + "docId": "kibLensPluginApi", + "section": "def-public.MetricVisualizationState", + "text": "MetricVisualizationState" + }, + "> | LensAttributes" + ], + "path": "src/plugins/unified_histogram/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.UnifiedHistogramVisContext.requestData", + "type": "Object", + "tags": [], + "label": "requestData", + "description": [], + "signature": [ + "LensRequestData" + ], + "path": "src/plugins/unified_histogram/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.UnifiedHistogramVisContext.suggestionType", + "type": "Enum", + "tags": [], + "label": "suggestionType", + "description": [], + "signature": [ + "UnifiedHistogramSuggestionType" + ], + "path": "src/plugins/unified_histogram/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false } ], "enums": [ + { + "parentPluginId": "unifiedHistogram", + "id": "def-public.UnifiedHistogramExternalVisContextStatus", + "type": "Enum", + "tags": [], + "label": "UnifiedHistogramExternalVisContextStatus", + "description": [], + "path": "src/plugins/unified_histogram/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "unifiedHistogram", "id": "def-public.UnifiedHistogramFetchStatus", @@ -1250,17 +1405,25 @@ "section": "def-common.RequestAdapter", "text": "RequestAdapter" }, - " | undefined; isChartLoading?: boolean | undefined; table?: ", + " | undefined; isChartLoading?: boolean | undefined; onVisContextChanged?: ((nextVisContext: ", { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" + "pluginId": "unifiedHistogram", + "scope": "public", + "docId": "kibUnifiedHistogramPluginApi", + "section": "def-public.UnifiedHistogramVisContext", + "text": "UnifiedHistogramVisContext" + }, + " | undefined, externalVisContextStatus: ", + { + "pluginId": "unifiedHistogram", + "scope": "public", + "docId": "kibUnifiedHistogramPluginApi", + "section": "def-public.UnifiedHistogramExternalVisContextStatus", + "text": "UnifiedHistogramExternalVisContextStatus" }, - " | undefined; } & Pick<", + ") => void) | undefined; } & Pick<", "UnifiedHistogramLayoutProps", - ", \"className\" | \"children\" | \"query\" | \"filters\" | \"columns\" | \"container\" | \"onBrushEnd\" | \"disabledActions\" | \"timeRange\" | \"services\" | \"dataView\" | \"relativeTimeRange\" | \"renderCustomChartToggleActions\" | \"onFilter\" | \"withDefaultActions\" | \"abortController\">" + ", \"className\" | \"children\" | \"query\" | \"filters\" | \"columns\" | \"container\" | \"onBrushEnd\" | \"disabledActions\" | \"timeRange\" | \"table\" | \"services\" | \"dataView\" | \"relativeTimeRange\" | \"renderCustomChartToggleActions\" | \"onFilter\" | \"externalVisContext\" | \"withDefaultActions\" | \"abortController\">" ], "path": "src/plugins/unified_histogram/public/container/container.tsx", "deprecated": false, diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 17932661104bfc..b47143108ee8db 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 55 | 0 | 23 | 2 | +| 62 | 0 | 29 | 5 | ## Client diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index f7b7d49ccae159..73cd80a4a29285 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index c719c91c46cec8..cb78bf85e78272 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index bcd6f5590038d9..dc475fd61f1b15 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index bd6a2d3e70c61e..62c5d2a2345d79 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 33eb42a7804699..8c3b64bcf43c5f 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 25d98cf584a7d8..98d3c07d40e18a 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 9d6466bc5ce020..093abaf63fecec 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 25cfc3d03ef829..a2e07a3a38a978 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 2c0e33ef95c735..06494913d8cecb 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index f8fe40e874388a..ed62d26a1574a5 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 4e86941d8e217e..c152a081494615 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 65be55bf5f3e7d..742de8dce20f39 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 570cef6e63f167..40616929668d6a 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 52bfc5737fa88a..a79df0f9d13ea7 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index aee6d34b9610ea..137b4a1890a04e 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index c90b9e126df69b..3f6704c07ab907 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index b9608b3cca27c0..5acfdd673a123d 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-04-08 +date: 2024-04-09 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 51993dd3e9e06e53d8c5d6ee69dc88afc82f1c95 Mon Sep 17 00:00:00 2001 From: Julia Rechkunova Date: Tue, 9 Apr 2024 08:44:57 +0200 Subject: [PATCH 07/75] [Discover] Fix total hits footer updates in ES|QL mode (#179646) ## Summary This PR fixes the logic of subscribing to total hits count updates. Previously we used `useDataState` https://github.com/elastic/kibana/blob/main/src/plugins/discover/public/application/main/hooks/use_data_state.ts which basically ignores updates unless `fetchStatus` is different. In ES|QL mode for a query with `stats` command, updates don't trigger changes in `fetchStatus` which had a weird side effect on the grid footer message. We should probably evaluate whether it still makes sense to use `useDataState` instead of `useObservable` in other parts on the discover code base. Example of the issue: ![observables](https://github.com/elastic/kibana/assets/1415710/beafeeec-716e-4de8-83a0-edbad3f2d7bd) ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../layout/use_fetch_more_records.test.tsx | 41 ++++++++++--------- .../application/main/utils/fetch_all.ts | 12 +++++- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/plugins/discover/public/application/main/components/layout/use_fetch_more_records.test.tsx b/src/plugins/discover/public/application/main/components/layout/use_fetch_more_records.test.tsx index 68513445386867..5149bcc46df25a 100644 --- a/src/plugins/discover/public/application/main/components/layout/use_fetch_more_records.test.tsx +++ b/src/plugins/discover/public/application/main/components/layout/use_fetch_more_records.test.tsx @@ -43,16 +43,17 @@ describe('useFetchMoreRecords', () => { it('should not be allowed if all records are already loaded', async () => { const { result: { current }, - } = renderHook(() => - useFetchMoreRecords({ + } = renderHook((props) => useFetchMoreRecords(props), { + initialProps: { isTextBasedQuery: false, stateContainer: getStateContainer({ fetchStatus: FetchStatus.COMPLETE, loadedRecordsCount: 3, totalRecordsCount: 3, }), - }) - ); + }, + }); + expect(current.onFetchMoreRecords).toBeUndefined(); expect(current.isMoreDataLoading).toBe(false); expect(current.totalHits).toBe(3); @@ -61,16 +62,16 @@ describe('useFetchMoreRecords', () => { it('should be allowed when there are more records to load', async () => { const { result: { current }, - } = renderHook(() => - useFetchMoreRecords({ + } = renderHook((props) => useFetchMoreRecords(props), { + initialProps: { isTextBasedQuery: false, stateContainer: getStateContainer({ fetchStatus: FetchStatus.COMPLETE, loadedRecordsCount: 3, totalRecordsCount: 5, }), - }) - ); + }, + }); expect(current.onFetchMoreRecords).toBeDefined(); expect(current.isMoreDataLoading).toBe(false); expect(current.totalHits).toBe(5); @@ -79,16 +80,16 @@ describe('useFetchMoreRecords', () => { it('should not be allowed when there is no initial documents', async () => { const { result: { current }, - } = renderHook(() => - useFetchMoreRecords({ + } = renderHook((props) => useFetchMoreRecords(props), { + initialProps: { isTextBasedQuery: false, stateContainer: getStateContainer({ fetchStatus: FetchStatus.COMPLETE, loadedRecordsCount: 0, totalRecordsCount: 5, }), - }) - ); + }, + }); expect(current.onFetchMoreRecords).toBeUndefined(); expect(current.isMoreDataLoading).toBe(false); expect(current.totalHits).toBe(5); @@ -97,16 +98,16 @@ describe('useFetchMoreRecords', () => { it('should return loading status correctly', async () => { const { result: { current }, - } = renderHook(() => - useFetchMoreRecords({ + } = renderHook((props) => useFetchMoreRecords(props), { + initialProps: { isTextBasedQuery: false, stateContainer: getStateContainer({ fetchStatus: FetchStatus.LOADING_MORE, loadedRecordsCount: 3, totalRecordsCount: 5, }), - }) - ); + }, + }); expect(current.onFetchMoreRecords).toBeDefined(); expect(current.isMoreDataLoading).toBe(true); expect(current.totalHits).toBe(5); @@ -115,16 +116,16 @@ describe('useFetchMoreRecords', () => { it('should not be allowed for text-based queries', async () => { const { result: { current }, - } = renderHook(() => - useFetchMoreRecords({ + } = renderHook((props) => useFetchMoreRecords(props), { + initialProps: { isTextBasedQuery: true, stateContainer: getStateContainer({ fetchStatus: FetchStatus.COMPLETE, loadedRecordsCount: 3, totalRecordsCount: 5, }), - }) - ); + }, + }); expect(current.onFetchMoreRecords).toBeUndefined(); }); }); diff --git a/src/plugins/discover/public/application/main/utils/fetch_all.ts b/src/plugins/discover/public/application/main/utils/fetch_all.ts index 369a15e367af58..9504ffed7783a2 100644 --- a/src/plugins/discover/public/application/main/utils/fetch_all.ts +++ b/src/plugins/discover/public/application/main/utils/fetch_all.ts @@ -86,13 +86,21 @@ export function fetchAll( }); } + const shouldFetchTextBased = useTextBased && !!query; + // Mark all subjects as loading sendLoadingMsg(dataSubjects.main$, { recordRawType }); sendLoadingMsg(dataSubjects.documents$, { recordRawType, query }); - // histogram will send `loading` for totalHits$ + + // histogram for data view mode will send `loading` for totalHits$ + if (shouldFetchTextBased) { + sendLoadingMsg(dataSubjects.totalHits$, { + recordRawType, + result: dataSubjects.totalHits$.getValue().result, + }); + } // Start fetching all required requests - const shouldFetchTextBased = useTextBased && !!query; const response = shouldFetchTextBased ? fetchTextBased( query, From e5cf35247861e0d11a4cd91052ef0fc796735415 Mon Sep 17 00:00:00 2001 From: Khristinin Nikita Date: Tue, 9 Apr 2024 09:00:30 +0200 Subject: [PATCH 08/75] Keep whitespace for render exception values (#178497) ## Summary Keep whitespace for render exception values Related - https://github.com/elastic/kibana/issues/106003 Before, if there was space in the exception value, and the user would paste it, they would have different values https://github.com/elastic/kibana/assets/7609147/1660604a-d726-4552-81cd-6309de4a3ce8 After https://github.com/elastic/kibana/assets/7609147/bc386d6f-a5b8-4dbb-8c2b-dbfe18b4e5e1 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../__snapshots__/entry_content.test.tsx.snap | 12 ++++++++++-- .../entry_content/entry_content.helper.tsx | 12 ++++++++++-- .../components/exception_item_card/conditions.tsx | 12 ++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/__snapshots__/entry_content.test.tsx.snap b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/__snapshots__/entry_content.test.tsx.snap index bd4792360e0c94..f2b8ce9c2ec226 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/__snapshots__/entry_content.test.tsx.snap +++ b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/__snapshots__/entry_content.test.tsx.snap @@ -48,7 +48,11 @@ Object { - list_id + + list_id + @@ -101,7 +105,11 @@ Object { - list_id + + list_id + diff --git a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/entry_content.helper.tsx b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/entry_content.helper.tsx index e8d02dace3a815..260b361582ae33 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/entry_content.helper.tsx +++ b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/conditions/entry_content/entry_content.helper.tsx @@ -7,21 +7,29 @@ */ import React from 'react'; +import { css } from '@emotion/css'; import { EuiExpression, EuiBadge } from '@elastic/eui'; import type { ListOperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { ValueWithSpaceWarning } from '../../../..'; import { OPERATOR_TYPE_LABELS_EXCLUDED, OPERATOR_TYPE_LABELS_INCLUDED } from '../conditions.config'; import type { Entry } from '../types'; +const entryValueWrapStyle = css` + white-space: pre-wrap; +`; + +const EntryValueWrap = ({ children }: { children: React.ReactNode }) => ( + {children} +); const getEntryValue = (type: string, value?: string | string[]) => { if (type === 'match_any' && Array.isArray(value)) { return value.map((currentValue, index) => ( - {currentValue} + {currentValue} )); } - return value ?? ''; + return {value} ?? ''; }; export const getEntryOperator = (type: ListOperatorTypeEnum, operator: string) => { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx index 95e3f7c2118887..a75ef577c8c702 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/exception_item_card/conditions.tsx @@ -37,6 +37,10 @@ const OS_LABELS = Object.freeze({ windows: i18n.OS_WINDOWS, }); +const EntryValueWrap = styled.span` + white-space: pre-wrap; +`; + const OPERATOR_TYPE_LABELS_INCLUDED = Object.freeze({ [ListOperatorTypeEnum.NESTED]: i18n.CONDITION_OPERATOR_TYPE_NESTED, [ListOperatorTypeEnum.MATCH_ANY]: i18n.CONDITION_OPERATOR_TYPE_MATCH_ANY, @@ -93,9 +97,13 @@ export const ExceptionItemCardConditions = memo( const getEntryValue = (type: string, value: string | string[] | undefined) => { if (type === 'match_any' && Array.isArray(value)) { - return value.map((currentValue) => {currentValue}); + return value.map((currentValue) => ( + + {currentValue} + + )); } - return value ?? ''; + return {value} ?? ''; }; const getEntryOperator = (type: string, operator: string) => { From 97c0e1d44508bb620af24d377a57ebadbebfc90c Mon Sep 17 00:00:00 2001 From: Alex Szabo Date: Tue, 9 Apr 2024 09:46:03 +0200 Subject: [PATCH 09/75] [CI] Add integration tests ES serverless verification (#180317) ## Summary Prior to this change, we've only run Serverless-related FTR tests on the [ES Serverless verification & promotion job](https://buildkite.com/elastic/kibana-elasticsearch-serverless-verify-and-promote). This was not exactly complete coverage, by this, we've left out some of the serverless tests in the jest-integration set. This PR adds running (the complete) Jest Integration test set on the verification pipeline (we currently don't have a way to filter for serverless-related tests only), and this required the integration test startup code to start respecting the ES Serverless docker image override we use in the test setup. --- .../verify_es_serverless_image.yml | 6 +++--- .../src/create_serverless_root.ts | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml index eca77dc9f57f57..5be24f7d151cb1 100644 --- a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml +++ b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml @@ -2,7 +2,6 @@ ### Parameters for this job: # PUBLISH_DOCKER_TAG: if set to 1/true, passing runs will promote the tested ES Serverless tag to latest-verified. -# PUBLISH_MANIFEST: if set to 1/true, passing runs will upload the manifest attesting what (kibana + es) combination was used in the test # SKIP_VERIFICATION: if set to 1/true, it will skip running all tests # SKIP_CYPRESS: if set to 1/true, it will skip running the cypress tests # FTR_EXTRA_ARGS: a string argument, if passed, it will be forwarded verbatim to the FTR run script @@ -40,7 +39,7 @@ steps: - exit_status: '-1' limit: 3 - - label: "Pick Test Group Run Order" + - label: "Pick Test Group Run Order (FTR + Integration)" command: .buildkite/scripts/steps/test/pick_test_group_run_order.sh agents: queue: kibana-default @@ -48,9 +47,10 @@ steps: timeout_in_minutes: 10 env: FTR_CONFIGS_SCRIPT: 'TEST_ES_SERVERLESS_IMAGE=$ES_SERVERLESS_IMAGE .buildkite/scripts/steps/test/ftr_configs.sh' + JEST_INTEGRATION_SCRIPT: 'TEST_ES_SERVERLESS_IMAGE=$ES_SERVERLESS_IMAGE .buildkite/scripts/steps/test/jest_integration.sh' FTR_CONFIG_PATTERNS: '**/test_serverless/**' FTR_EXTRA_ARGS: '$FTR_EXTRA_ARGS' - LIMIT_CONFIG_TYPE: 'functional' + LIMIT_CONFIG_TYPE: 'functional,integration' retry: automatic: - exit_status: '*' diff --git a/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts b/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts index 4542c686453acf..03d4c62ea95b9e 100644 --- a/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts +++ b/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts @@ -77,6 +77,9 @@ function createServerlessES() { }); const es = new Cluster({ log }); const esPort = esTestConfig.getPort(); + const esServerlessImageParams = parseEsServerlessImageOverride( + esTestConfig.getESServerlessImage() + ); return { es, start: async () => { @@ -88,6 +91,7 @@ function createServerlessES() { clean: true, kill: true, waitForReady: true, + ...esServerlessImageParams, // security is enabled by default, if needed kibana requires serviceAccountToken esArgs: ['xpack.security.enabled=false'], }); @@ -155,3 +159,20 @@ function createServerlessKibana(settings = {}, cliArgs: Partial = {}) { serverless: true, }); } + +function parseEsServerlessImageOverride(dockerImageOrTag: string | undefined): { + image?: string; + tag?: string; +} { + if (!dockerImageOrTag) { + return {}; + } else if (dockerImageOrTag.includes(':')) { + return { + image: dockerImageOrTag, + }; + } else { + return { + tag: dockerImageOrTag, + }; + } +} From 42e92d8749023f56e4b94885b59a00977d5f71b7 Mon Sep 17 00:00:00 2001 From: Khristinin Nikita Date: Tue, 9 Apr 2024 09:59:36 +0200 Subject: [PATCH 10/75] unskip sourcerer tests (#178318) ## Unskip sourcerer tests The last 3 flaky test runs, with 100 ESS and 100 serverless tests per run were without sourcerer-related errors. Fix in sourcerer timeline file address situation, when fleet setup takes longer than test execution and some data view not present in the sourcerer on the moment of the test. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../detection_engine/sourcerer/sourcerer.cy.ts | 4 ++-- .../sourcerer/sourcerer_timeline.cy.ts | 7 ++++++- .../cypress/tasks/fleet_integrations.ts | 10 ++++++++++ .../cypress/tasks/sourcerer.ts | 3 ++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer.cy.ts index 50cc4c39956847..044318b16826d4 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer.cy.ts @@ -33,7 +33,7 @@ const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; // FLAKY: https://github.com/elastic/kibana/issues/177080 -describe.skip('Sourcerer', { tags: ['@ess', '@serverless'] }, () => { +describe('Sourcerer', { tags: ['@ess', '@serverless'] }, () => { before(() => { dataViews.forEach((dataView: string) => postDataView(dataView)); }); @@ -53,7 +53,7 @@ describe.skip('Sourcerer', { tags: ['@ess', '@serverless'] }, () => { }); // FLAKY: https://github.com/elastic/kibana/issues/177586 - describe.skip('Modified badge', () => { + describe('Modified badge', () => { it('Selecting new data view does not add a modified badge', () => { cy.get(SOURCERER.badgeModified).should(`not.exist`); openSourcerer(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer_timeline.cy.ts index b99b93dd956eea..7265f30b76f781 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/sourcerer/sourcerer_timeline.cy.ts @@ -31,6 +31,7 @@ import { saveSourcerer, } from '../../../../tasks/sourcerer'; import { openTimelineUsingToggle } from '../../../../tasks/security_main'; +import { waitForFleetSetup } from '../../../../tasks/fleet_integrations'; import { SOURCERER } from '../../../../screens/sourcerer'; import { createTimeline, deleteTimelines } from '../../../../tasks/api_calls/timelines'; import { getTimelineModifiedSourcerer } from '../../../../objects/timeline'; @@ -40,6 +41,10 @@ const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['logs-*', 'metrics-*', '.kibana-event-log-*']; describe('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { + before(() => { + waitForFleetSetup(); + }); + beforeEach(() => { cy.clearLocalStorage(); login(); @@ -58,7 +63,7 @@ describe('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }); // FLAKY: https://github.com/elastic/kibana/issues/173854 - describe.skip('Modified badge', () => { + describe('Modified badge', () => { it('Selecting new data view does not add a modified badge', () => { openTimelineUsingToggle(); cy.get(SOURCERER.badgeModified).should(`not.exist`); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/fleet_integrations.ts b/x-pack/test/security_solution_cypress/cypress/tasks/fleet_integrations.ts index bafc80b3835475..b60c6a8c5622fa 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/fleet_integrations.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/fleet_integrations.ts @@ -9,6 +9,8 @@ import { GET_INSTALLED_INTEGRATIONS_URL, InstalledIntegration, } from '@kbn/security-solution-plugin/common/api/detection_engine'; +import { login } from './login'; +import { visitGetStartedPage } from './navigation'; export const mockFleetInstalledIntegrations = (integrations: InstalledIntegration[] = []) => { cy.intercept('GET', `${GET_INSTALLED_INTEGRATIONS_URL}*`, { @@ -18,3 +20,11 @@ export const mockFleetInstalledIntegrations = (integrations: InstalledIntegratio }, }).as('installedIntegrations'); }; + +export const waitForFleetSetup = () => { + cy.intercept('POST', '/api/fleet/epm/packages/_bulk?prerelease=true').as('fleetSetup'); + cy.clearLocalStorage(); + login(); + visitGetStartedPage(); + cy.wait('@fleetSetup'); +}; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/sourcerer.ts b/x-pack/test/security_solution_cypress/cypress/tasks/sourcerer.ts index 2bf56c1bd7c661..c2ad653d91d76e 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/sourcerer.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/sourcerer.ts @@ -46,7 +46,8 @@ export const isDataViewSelection = (dataView: string) => { return cy.get(SOURCERER.selectActiveOption).should('contain', dataView); }; -export const openDataViewSelection = () => cy.get(SOURCERER.selectActiveOption).click(); +export const openDataViewSelection = () => + cy.get(SOURCERER.selectActiveOption).click({ force: true }); export const isKibanaDataViewOption = (dataViews: string[]) => { return dataViews.every((dataView) => { return cy.get(SOURCERER.selectListOption).should(`contain`, dataView); From 52cfdd6fc27d909e99d5d712ad6ce034c3bb46d1 Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:09:03 +0100 Subject: [PATCH 11/75] [Security Solution][Detection Engine] adds alert suppression for New Terms rule type (#178294) ## Summary - addresses https://github.com/elastic/security-team/issues/8824 - adds alert suppression for new terms rule type - fixes `getOpenAlerts` test function, which returned closed alerts as well ### UI Screenshot 2024-04-02 at 12 53 26 Screenshot 2024-04-02 at 12 53 46 ### Checklist - [x] Functional changes are hidden behind a feature flag Feature flag `alertSuppressionForNewTermsRuleEnabled` - [x] Functional changes are covered with a test plan and automated tests. Test plan: https://github.com/elastic/security-team/pull/9045 - [x] Stability of new and changed tests is verified using the [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner). Cypress ESS: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/5547 Cypress Serverless: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/5548 FTR ESS: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/5596 FTR Serverless: https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/5597 - [ ] Comprehensive manual testing is done by two engineers: the PR author and one of the PR reviewers. Changes are tested in both ESS and Serverless. - [x] Mapping changes are accompanied by a technical design document. It can be a GitHub issue or an RFC explaining the changes. The design document is shared with and approved by the appropriate teams and individual stakeholders. Existing AlertSuppression schema field is used for New terms rule, the one that used for Query and IM rules. ```yml alert_suppression: $ref: './common_attributes.schema.yaml#/components/schemas/AlertSuppression' ``` where ```yml AlertSuppression: type: object properties: group_by: $ref: '#/components/schemas/AlertSuppressionGroupBy' duration: $ref: '#/components/schemas/AlertSuppressionDuration' missing_fields_strategy: $ref: '#/components/schemas/AlertSuppressionMissingFieldsStrategy' required: - group_by ``` - [x] Functional changes are communicated to the Docs team. A ticket or PR is opened in https://github.com/elastic/security-docs. The following information is included: any feature flags used, affected environments (Serverless, ESS, or both). https://github.com/elastic/security-docs/issues/5030 --- ...s_upgrade_and_rollback_checks.test.ts.snap | 46 + .../create_persistence_rule_type_wrapper.ts | 39 +- .../server/utils/persistence_types.ts | 6 +- .../rule_schema/rule_request_schema.test.ts | 2 + .../model/rule_schema/rule_schemas.gen.ts | 1 + .../rule_schema/rule_schemas.schema.yaml | 2 + .../common/detection_engine/constants.ts | 1 + .../common/detection_engine/utils.test.ts | 8 +- .../common/experimental_features.ts | 5 + .../description_step/index.test.tsx | 2 +- .../components/step_define_rule/schema.tsx | 140 +- ...e_experimental_feature_fields_transform.ts | 30 +- .../pages/rule_creation/helpers.ts | 1 + .../rule_details/rule_definition_section.tsx | 44 +- .../logic/use_alert_suppression.test.tsx | 20 + .../logic/use_alert_suppression.tsx | 16 +- .../normalization/rule_converters.test.ts | 21 + .../normalization/rule_converters.ts | 4 + .../rule_schema/model/rule_schemas.ts | 1 + ...bulk_create_suppressed_alerts_in_memory.ts | 113 + .../new_terms/create_new_terms_alert_type.ts | 130 +- .../new_terms/multi_terms_composite.ts | 29 +- .../rule_types/new_terms/types.ts | 14 + .../wrap_suppressed_new_terms_alerts.test.ts | 142 ++ .../wrap_suppressed_new_terms_alerts.ts | 105 + ...bulk_create_suppressed_alerts_in_memory.ts | 188 ++ .../utils/bulk_create_with_suppression.ts | 35 +- .../utils/get_is_alert_suppression_active.ts | 45 + .../rule_types/utils/index.ts | 1 + .../partition_missing_fields_events.test.ts | 57 + .../utils/partition_missing_fields_events.ts | 16 +- ...rch_after_bulk_create_suppressed_alerts.ts | 75 +- .../utils/suppression_utils.test.ts | 125 + .../rule_types/utils/suppression_utils.ts | 86 + .../utils/wrap_suppressed_alerts.ts | 48 +- .../ecs_compliant/mappings.json | 3 + .../config/ess/config.base.ts | 1 + .../configs/serverless.config.ts | 3 + .../execution_logic/eql.ts | 4 +- .../execution_logic/esql.ts | 8 +- .../execution_logic/index.ts | 1 + .../execution_logic/machine_learning.ts | 4 +- .../execution_logic/new_terms.ts | 4 +- .../new_terms_alert_suppression.ts | 2230 +++++++++++++++++ .../execution_logic/query.ts | 14 +- .../execution_logic/saved_query.ts | 4 +- .../execution_logic/threat_match.ts | 10 +- .../threat_match_alert_suppression.ts | 4 +- .../execution_logic/threshold.ts | 6 +- .../threshold_alert_suppression.ts | 10 +- .../trial_license_complete_tier/timestamps.ts | 6 +- .../utils/alerts/get_alerts.ts | 48 + .../utils/alerts/get_open_alerts.ts | 38 +- .../detections_response/utils/alerts/index.ts | 1 + .../test/security_solution_cypress/config.ts | 1 + ...ws_suppression_serverless_essentials.cy.ts | 60 + .../common_flows_supression_ess_basic.cy.ts | 62 + ...tor_match_rule_suppression_ess_basic.cy.ts | 15 - .../rule_creation/new_terms_rule.cy.ts | 208 +- .../threshold_rule_ess_basic.cy.ts | 40 - ...threshold_rule_serverless_essentials.cy.ts | 42 - .../rule_edit/new_terms_rule.cy.ts | 108 + .../prebuilt_rules_preview.cy.ts | 1 + .../cypress/tasks/create_new_rule.ts | 25 +- .../serverless_config.ts | 3 + 65 files changed, 4069 insertions(+), 493 deletions(-) create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts create mode 100644 x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms_alert_suppression.ts create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_suppression_serverless_essentials.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_supression_ess_basic.cy.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_ess_basic.cy.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_serverless_essentials.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/new_terms_rule.cy.ts diff --git a/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap b/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap index af6c6fc1300221..0313aafa1be5e9 100644 --- a/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap +++ b/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap @@ -6811,6 +6811,52 @@ Object { }, Object { "properties": Object { + "alertSuppression": Object { + "additionalProperties": false, + "properties": Object { + "duration": Object { + "additionalProperties": false, + "properties": Object { + "unit": Object { + "enum": Array [ + "s", + "m", + "h", + ], + "type": "string", + }, + "value": Object { + "minimum": 1, + "type": "integer", + }, + }, + "required": Array [ + "value", + "unit", + ], + "type": "object", + }, + "groupBy": Object { + "items": Object { + "type": "string", + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + }, + "missingFieldsStrategy": Object { + "enum": Array [ + "doNotSuppress", + "suppress", + ], + "type": "string", + }, + }, + "required": Array [ + "groupBy", + ], + "type": "object", + }, "dataViewId": Object { "type": "string", }, diff --git a/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_wrapper.ts b/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_wrapper.ts index 8f6628298b4949..5436043cbfd81c 100644 --- a/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_wrapper.ts +++ b/x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_wrapper.ts @@ -361,7 +361,8 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper suppressionWindow, enrichAlerts, currentTimeOverride, - isRuleExecutionOnly + isRuleExecutionOnly, + maxAlerts ) => { const ruleDataClientWriter = await ruleDataClient.getWriter({ namespace: options.spaceId, @@ -376,6 +377,8 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper const writeAlerts = ruleDataClient.isWriteEnabled() && options.services.shouldWriteAlerts(); + let alertsWereTruncated = false; + if (writeAlerts && alerts.length > 0) { const suppressionWindowStart = dateMath.parse(suppressionWindow, { forceNow: currentTimeOverride, @@ -392,7 +395,12 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper }); if (filteredDuplicates.length === 0) { - return { createdAlerts: [], errors: {}, suppressedAlerts: [] }; + return { + createdAlerts: [], + errors: {}, + suppressedAlerts: [], + alertsWereTruncated, + }; } const suppressionAlertSearchRequest = { @@ -473,7 +481,12 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper }); if (nonSuppressedAlerts.length === 0) { - return { createdAlerts: [], errors: {}, suppressedAlerts: [] }; + return { + createdAlerts: [], + errors: {}, + suppressedAlerts: [], + alertsWereTruncated, + }; } const { alertCandidates, suppressedAlerts: suppressedInMemoryAlerts } = @@ -535,6 +548,11 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper } } + if (maxAlerts && enrichedAlerts.length > maxAlerts) { + enrichedAlerts.length = maxAlerts; + alertsWereTruncated = true; + } + const augmentedAlerts = augmentAlerts({ alerts: enrichedAlerts, options, @@ -548,7 +566,12 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper }); if (bulkResponse == null) { - return { createdAlerts: [], errors: {}, suppressedAlerts: [] }; + return { + createdAlerts: [], + errors: {}, + suppressedAlerts: [], + alertsWereTruncated: false, + }; } const createdAlerts = augmentedAlerts @@ -594,10 +617,16 @@ export const createPersistenceRuleTypeWrapper: CreatePersistenceRuleTypeWrapper createdAlerts, suppressedAlerts: [...duplicateAlerts, ...suppressedInMemoryAlerts], errors: errorAggregator(bulkResponse.body, [409]), + alertsWereTruncated, }; } else { logger.debug('Writing is disabled.'); - return { createdAlerts: [], errors: {}, suppressedAlerts: [] }; + return { + createdAlerts: [], + errors: {}, + suppressedAlerts: [], + alertsWereTruncated: false, + }; } }, }, diff --git a/x-pack/plugins/rule_registry/server/utils/persistence_types.ts b/x-pack/plugins/rule_registry/server/utils/persistence_types.ts index 1506ad1dd1109e..328e5185a2b804 100644 --- a/x-pack/plugins/rule_registry/server/utils/persistence_types.ts +++ b/x-pack/plugins/rule_registry/server/utils/persistence_types.ts @@ -52,11 +52,11 @@ export type SuppressedAlertService = ( params: { spaceId: string } ) => Promise>, currentTimeOverride?: Date, - isRuleExecutionOnly?: boolean + isRuleExecutionOnly?: boolean, + maxAlerts?: number ) => Promise>; -export interface SuppressedAlertServiceResult - extends Omit, 'alertsWereTruncated'> { +export interface SuppressedAlertServiceResult extends PersistenceAlertServiceResult { suppressedAlerts: Array<{ _id: string; _source: T }>; } diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts index 7393d3ad52fa45..ad06065f856bd1 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts +++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_request_schema.test.ts @@ -10,6 +10,7 @@ import { getListArrayMock } from '../../../../detection_engine/schemas/types/lis import { getCreateEsqlRulesSchemaMock, getCreateMachineLearningRulesSchemaMock, + getCreateNewTermsRulesSchemaMock, getCreateRulesSchemaMock, getCreateRulesSchemaMockWithDataView, getCreateSavedQueryRulesSchemaMock, @@ -1267,6 +1268,7 @@ describe('rules schema', () => { { ruleType: 'threat_match', ruleMock: getCreateThreatMatchRulesSchemaMock() }, { ruleType: 'query', ruleMock: getCreateRulesSchemaMock() }, { ruleType: 'saved_query', ruleMock: getCreateSavedQueryRulesSchemaMock() }, + { ruleType: 'new_terms', ruleMock: getCreateNewTermsRulesSchemaMock() }, ]; cases.forEach(({ ruleType, ruleMock }) => { diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts index d7a8b83ec28f4a..68c6a44ea45b18 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts +++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.gen.ts @@ -504,6 +504,7 @@ export const NewTermsRuleOptionalFields = z.object({ index: IndexPatternArray.optional(), data_view_id: DataViewId.optional(), filters: RuleFilterArray.optional(), + alert_suppression: AlertSuppression.optional(), }); export type NewTermsRuleDefaultableFields = z.infer; diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml index d3a09d83557279..d23662ee9791e0 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema/rule_schemas.schema.yaml @@ -737,6 +737,8 @@ components: $ref: './common_attributes.schema.yaml#/components/schemas/DataViewId' filters: $ref: './common_attributes.schema.yaml#/components/schemas/RuleFilterArray' + alert_suppression: + $ref: './common_attributes.schema.yaml#/components/schemas/AlertSuppression' NewTermsRuleDefaultableFields: type: object diff --git a/x-pack/plugins/security_solution/common/detection_engine/constants.ts b/x-pack/plugins/security_solution/common/detection_engine/constants.ts index 08af29c8f69c7e..7e3d7bac5c0f57 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/constants.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/constants.ts @@ -43,5 +43,6 @@ export const SUPPRESSIBLE_ALERT_RULES: Type[] = [ 'threshold', 'saved_query', 'query', + 'new_terms', 'threat_match', ]; diff --git a/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts b/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts index 1db75db42a7d8d..a61858a5888381 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/utils.test.ts @@ -231,11 +231,11 @@ describe('Alert Suppression Rules', () => { expect(isSuppressibleAlertRule('saved_query')).toBe(true); expect(isSuppressibleAlertRule('query')).toBe(true); expect(isSuppressibleAlertRule('threat_match')).toBe(true); + expect(isSuppressibleAlertRule('new_terms')).toBe(true); // Rule types that don't support alert suppression: expect(isSuppressibleAlertRule('eql')).toBe(false); expect(isSuppressibleAlertRule('machine_learning')).toBe(false); - expect(isSuppressibleAlertRule('new_terms')).toBe(false); expect(isSuppressibleAlertRule('esql')).toBe(false); }); @@ -253,11 +253,11 @@ describe('Alert Suppression Rules', () => { expect(isSuppressionRuleConfiguredWithDuration('saved_query')).toBe(true); expect(isSuppressionRuleConfiguredWithDuration('query')).toBe(true); expect(isSuppressionRuleConfiguredWithDuration('threat_match')).toBe(true); + expect(isSuppressionRuleConfiguredWithDuration('new_terms')).toBe(true); // Rule types that don't support alert suppression: expect(isSuppressionRuleConfiguredWithDuration('eql')).toBe(false); expect(isSuppressionRuleConfiguredWithDuration('machine_learning')).toBe(false); - expect(isSuppressionRuleConfiguredWithDuration('new_terms')).toBe(false); expect(isSuppressionRuleConfiguredWithDuration('esql')).toBe(false); }); @@ -274,11 +274,11 @@ describe('Alert Suppression Rules', () => { expect(isSuppressionRuleConfiguredWithGroupBy('saved_query')).toBe(true); expect(isSuppressionRuleConfiguredWithGroupBy('query')).toBe(true); expect(isSuppressionRuleConfiguredWithGroupBy('threat_match')).toBe(true); + expect(isSuppressionRuleConfiguredWithGroupBy('new_terms')).toBe(true); // Rule types that don't support alert suppression: expect(isSuppressionRuleConfiguredWithGroupBy('eql')).toBe(false); expect(isSuppressionRuleConfiguredWithGroupBy('machine_learning')).toBe(false); - expect(isSuppressionRuleConfiguredWithGroupBy('new_terms')).toBe(false); expect(isSuppressionRuleConfiguredWithGroupBy('esql')).toBe(false); }); @@ -300,11 +300,11 @@ describe('Alert Suppression Rules', () => { expect(isSuppressionRuleConfiguredWithMissingFields('saved_query')).toBe(true); expect(isSuppressionRuleConfiguredWithMissingFields('query')).toBe(true); expect(isSuppressionRuleConfiguredWithMissingFields('threat_match')).toBe(true); + expect(isSuppressionRuleConfiguredWithMissingFields('new_terms')).toBe(true); // Rule types that don't support alert suppression: expect(isSuppressionRuleConfiguredWithMissingFields('eql')).toBe(false); expect(isSuppressionRuleConfiguredWithMissingFields('machine_learning')).toBe(false); - expect(isSuppressionRuleConfiguredWithMissingFields('new_terms')).toBe(false); expect(isSuppressionRuleConfiguredWithMissingFields('esql')).toBe(false); }); diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index afcd9700e4caa6..cd98a9ef812e4a 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -170,6 +170,11 @@ export const allowedExperimentalValues = Object.freeze({ */ riskEnginePrivilegesRouteEnabled: true, + /** + * Enables alerts suppression for new terms rules + */ + alertSuppressionForNewTermsRuleEnabled: false, + /** * Enables experimental Experimental S1 integration data to be available in Analyzer */ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx index f341476c4d8f99..d76c86596d1d27 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/description_step/index.test.tsx @@ -575,7 +575,7 @@ describe('description_step', () => { }); describe('alert suppression', () => { - const ruleTypesWithoutSuppression: Type[] = ['eql', 'esql', 'machine_learning', 'new_terms']; + const ruleTypesWithoutSuppression: Type[] = ['eql', 'esql', 'machine_learning']; const suppressionFields = { groupByDuration: { unit: 'm', diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx index 49eba2d124d314..fd22c25308a273 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/schema.tsx @@ -19,9 +19,9 @@ import { import { isEsqlRule, isNewTermsRule, - isQueryRule, isThreatMatchRule, isThresholdRule, + isSuppressionRuleConfiguredWithGroupBy, } from '../../../../../common/detection_engine/utils'; import { MAX_NUMBER_OF_NEW_TERMS_FIELDS } from '../../../../../common/constants'; import { isMlRule } from '../../../../../common/machine_learning/helpers'; @@ -574,28 +574,18 @@ export const schema: FormSchema = { }, ], }, - groupByFields: { + newTermsFields: { type: FIELD_TYPES.COMBO_BOX, label: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.groupByFieldsLabel', + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.newTermsFieldsLabel', { - defaultMessage: 'Suppress alerts by', + defaultMessage: 'Fields', } ), - labelAppend: ( - - {i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.groupByFieldsLabelAppend', - { - defaultMessage: 'Optional (Technical Preview)', - } - )} - - ), helpText: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.fieldGroupByFieldHelpText', + 'xpack.securitySolution.detectionEngine.createRule.stepAboutRule.fieldNewTermsFieldHelpText', { - defaultMessage: 'Select field(s) to use for suppressing extra alerts', + defaultMessage: 'Select a field to check for new terms.', } ), validations: [ @@ -604,17 +594,36 @@ export const schema: FormSchema = { ...args: Parameters ): ReturnType> | undefined => { const [{ formData }] = args; - const needsValidation = - isQueryRule(formData.ruleType) || isThreatMatchRule(formData.ruleType); + const needsValidation = isNewTermsRule(formData.ruleType); + if (!needsValidation) { + return; + } + + return fieldValidators.emptyField( + i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.newTermsFieldsMin', + { + defaultMessage: 'A minimum of one field is required.', + } + ) + )(...args); + }, + }, + { + validator: ( + ...args: Parameters + ): ReturnType> | undefined => { + const [{ formData }] = args; + const needsValidation = isNewTermsRule(formData.ruleType); if (!needsValidation) { return; } return fieldValidators.maxLengthField({ - length: 3, + length: MAX_NUMBER_OF_NEW_TERMS_FIELDS, message: i18n.translate( - 'xpack.securitySolution.detectionEngine.validations.stepDefineRule.groupByFieldsMax', + 'xpack.securitySolution.detectionEngine.validations.stepDefineRule.newTermsFieldsMax', { - defaultMessage: 'Number of grouping fields must be at most 3', + defaultMessage: 'Number of fields must be 3 or less.', } ), })(...args); @@ -622,43 +631,42 @@ export const schema: FormSchema = { }, ], }, - groupByRadioSelection: {}, - groupByDuration: { + historyWindowSize: { label: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.groupByDurationValueLabel', + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.historyWindowSizeLabel', { - defaultMessage: 'Suppress alerts for', + defaultMessage: 'History Window Size', } ), helpText: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.fieldGroupByDurationValueHelpText', - { - defaultMessage: 'Suppress alerts for', - } - ), - value: {}, - unit: {}, - }, - suppressionMissingFields: { - label: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.suppressionMissingFieldsLabel', + 'xpack.securitySolution.detectionEngine.createRule.stepScheduleRule.historyWindowSizeHelpText', { - defaultMessage: 'If a suppression field is missing', + defaultMessage: "New terms rules only alert if terms don't appear in historical data.", } ), }, - newTermsFields: { + groupByFields: { type: FIELD_TYPES.COMBO_BOX, label: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.newTermsFieldsLabel', + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.groupByFieldsLabel', { - defaultMessage: 'Fields', + defaultMessage: 'Suppress alerts by', } ), + labelAppend: ( + + {i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.groupByFieldsLabelAppend', + { + defaultMessage: 'Optional (Technical Preview)', + } + )} + + ), helpText: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepAboutRule.fieldNewTermsFieldHelpText', + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.fieldGroupByFieldHelpText', { - defaultMessage: 'Select a field to check for new terms.', + defaultMessage: 'Select field(s) to use for suppressing extra alerts', } ), validations: [ @@ -667,36 +675,17 @@ export const schema: FormSchema = { ...args: Parameters ): ReturnType> | undefined => { const [{ formData }] = args; - const needsValidation = isNewTermsRule(formData.ruleType); - if (!needsValidation) { - return; - } + const needsValidation = isSuppressionRuleConfiguredWithGroupBy(formData.ruleType); - return fieldValidators.emptyField( - i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.newTermsFieldsMin', - { - defaultMessage: 'A minimum of one field is required.', - } - ) - )(...args); - }, - }, - { - validator: ( - ...args: Parameters - ): ReturnType> | undefined => { - const [{ formData }] = args; - const needsValidation = isNewTermsRule(formData.ruleType); if (!needsValidation) { return; } return fieldValidators.maxLengthField({ - length: MAX_NUMBER_OF_NEW_TERMS_FIELDS, + length: 3, message: i18n.translate( - 'xpack.securitySolution.detectionEngine.validations.stepDefineRule.newTermsFieldsMax', + 'xpack.securitySolution.detectionEngine.validations.stepDefineRule.groupByFieldsMax', { - defaultMessage: 'Number of fields must be 3 or less.', + defaultMessage: 'Number of grouping fields must be at most 3', } ), })(...args); @@ -704,17 +693,28 @@ export const schema: FormSchema = { }, ], }, - historyWindowSize: { + groupByRadioSelection: {}, + groupByDuration: { label: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.historyWindowSizeLabel', + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.groupByDurationValueLabel', { - defaultMessage: 'History Window Size', + defaultMessage: 'Suppress alerts for', } ), helpText: i18n.translate( - 'xpack.securitySolution.detectionEngine.createRule.stepScheduleRule.historyWindowSizeHelpText', + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.fieldGroupByDurationValueHelpText', { - defaultMessage: "New terms rules only alert if terms don't appear in historical data.", + defaultMessage: 'Suppress alerts for', + } + ), + value: {}, + unit: {}, + }, + suppressionMissingFields: { + label: i18n.translate( + 'xpack.securitySolution.detectionEngine.createRule.stepDefineRule.suppressionMissingFieldsLabel', + { + defaultMessage: 'If a suppression field is missing', } ), }, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts index c035fef5af6e44..67e55892fd8eba 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/step_define_rule/use_experimental_feature_fields_transform.ts @@ -7,6 +7,8 @@ import { useCallback } from 'react'; import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { isNewTermsRule } from '../../../../../common/detection_engine/utils'; /** * transforms DefineStepRule fields according to experimental feature flags @@ -14,9 +16,31 @@ import type { DefineStepRule } from '../../../../detections/pages/detection_engi export const useExperimentalFeatureFieldsTransform = >(): (( fields: T ) => T) => { - const transformer = useCallback((fields: T) => { - return fields; - }, []); + const isAlertSuppressionForNewTermsRuleEnabled = useIsExperimentalFeatureEnabled( + 'alertSuppressionForNewTermsRuleEnabled' + ); + + const transformer = useCallback( + (fields: T) => { + const isNewTermsSuppressionDisabled = isNewTermsRule(fields.ruleType) + ? !isAlertSuppressionForNewTermsRuleEnabled + : false; + + // reset any alert suppression values hidden behind feature flag + if (isNewTermsSuppressionDisabled) { + return { + ...fields, + groupByFields: [], + groupByRadioSelection: undefined, + groupByDuration: undefined, + suppressionMissingFields: undefined, + }; + } + + return fields; + }, + [isAlertSuppressionForNewTermsRuleEnabled] + ); return transformer; }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts index 924dc4a62fd701..fb45ca1efe2731 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/pages/rule_creation/helpers.ts @@ -490,6 +490,7 @@ export const formatDefineStepData = (defineStepData: DefineStepRule): DefineStep query: ruleFields.queryBar?.query?.query as string, new_terms_fields: ruleFields.newTermsFields, history_window_start: `now-${ruleFields.historyWindowSize}`, + ...alertSuppressionFields, } : isEsqlFields(ruleFields) && !('index' in ruleFields) ? { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx index 780ceaabf96510..4a9f97933b49bd 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx @@ -645,6 +645,28 @@ const prepareDefinitionSectionListItems = ( }); } + if ('new_terms_fields' in rule && rule.new_terms_fields && rule.new_terms_fields.length > 0) { + definitionSectionListItems.push({ + title: ( + + {i18n.NEW_TERMS_FIELDS_FIELD_LABEL} + + ), + description: , + }); + } + + if ('history_window_start' in rule) { + definitionSectionListItems.push({ + title: ( + + {i18n.HISTORY_WINDOW_SIZE_FIELD_LABEL} + + ), + description: , + }); + } + if (isSuppressionEnabled && 'alert_suppression' in rule && rule.alert_suppression) { if ('group_by' in rule.alert_suppression) { definitionSectionListItems.push({ @@ -682,28 +704,6 @@ const prepareDefinitionSectionListItems = ( } } - if ('new_terms_fields' in rule && rule.new_terms_fields && rule.new_terms_fields.length > 0) { - definitionSectionListItems.push({ - title: ( - - {i18n.NEW_TERMS_FIELDS_FIELD_LABEL} - - ), - description: , - }); - } - - if ('history_window_start' in rule) { - definitionSectionListItems.push({ - title: ( - - {i18n.HISTORY_WINDOW_SIZE_FIELD_LABEL} - - ), - description: , - }); - } - return definitionSectionListItems; }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx index cab113ecd13932..d5c9f1f07d007d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.test.tsx @@ -7,8 +7,28 @@ import { renderHook } from '@testing-library/react-hooks'; import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { useAlertSuppression } from './use_alert_suppression'; +import * as useIsExperimentalFeatureEnabledMock from '../../../common/hooks/use_experimental_features'; + +jest + .spyOn(useIsExperimentalFeatureEnabledMock, 'useIsExperimentalFeatureEnabled') + .mockReturnValue(false); describe('useAlertSuppression', () => { + it('should return isSuppressionEnabled false if rule Type exists in SUPPRESSIBLE_ALERT_RULES and Feature Flag is disabled', () => { + const { result } = renderHook(() => useAlertSuppression('new_terms')); + + expect(result.current.isSuppressionEnabled).toBe(false); + }); + + it('should return isSuppressionEnabled true if rule Type exists in SUPPRESSIBLE_ALERT_RULES and Feature Flag is enabled', () => { + jest + .spyOn(useIsExperimentalFeatureEnabledMock, 'useIsExperimentalFeatureEnabled') + .mockImplementationOnce(() => true); + const { result } = renderHook(() => useAlertSuppression('new_terms')); + + expect(result.current.isSuppressionEnabled).toBe(true); + }); + it('should return the correct isSuppressionEnabled value fot threat_match rule type', () => { const { result } = renderHook(() => useAlertSuppression('threat_match')); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx index ba1bb94a49ae36..f4d1b3d22e82b9 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/use_alert_suppression.tsx @@ -7,17 +7,29 @@ import { useCallback } from 'react'; import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { isSuppressibleAlertRule } from '../../../../common/detection_engine/utils'; +import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; export interface UseAlertSuppressionReturn { isSuppressionEnabled: boolean; } export const useAlertSuppression = (ruleType: Type | undefined): UseAlertSuppressionReturn => { + const isAlertSuppressionForNewTermsRuleEnabled = useIsExperimentalFeatureEnabled( + 'alertSuppressionForNewTermsRuleEnabled' + ); + const isSuppressionEnabledForRuleType = useCallback(() => { - if (!ruleType) return false; + if (!ruleType) { + return false; + } + + // Remove this condition when the Feature Flag for enabling Suppression in the New terms rule is removed. + if (ruleType === 'new_terms') { + return isSuppressibleAlertRule(ruleType) && isAlertSuppressionForNewTermsRuleEnabled; + } return isSuppressibleAlertRule(ruleType); - }, [ruleType]); + }, [ruleType, isAlertSuppressionForNewTermsRuleEnabled]); return { isSuppressionEnabled: isSuppressionEnabledForRuleType(), diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.test.ts index c2cade2c0146bd..0e9564f566e9ad 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.test.ts @@ -194,6 +194,27 @@ describe('rule_converters', () => { ); }); + test('should accept new_terms alerts suppression params', () => { + const patchParams = { + alert_suppression: { + group_by: ['agent.name'], + duration: { value: 4, unit: 'h' as const }, + missing_fields_strategy: 'suppress' as const, + }, + }; + const rule = getNewTermsRuleParams(); + const patchedParams = patchTypeSpecificSnakeToCamel(patchParams, rule); + expect(patchedParams).toEqual( + expect.objectContaining({ + alertSuppression: { + groupBy: ['agent.name'], + missingFieldsStrategy: 'suppress', + duration: { value: 4, unit: 'h' }, + }, + }) + ); + }); + test('should accept machine learning params when existing rule type is machine learning', () => { const patchParams = { anomaly_threshold: 5, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts index 8efad70feeb007..418689914889de 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/normalization/rule_converters.ts @@ -199,6 +199,7 @@ export const typeSpecificSnakeToCamel = ( filters: params.filters, language: params.language ?? 'kuery', dataViewId: params.data_view_id, + alertSuppression: convertAlertSuppressionToCamel(params.alert_suppression), }; } default: { @@ -345,6 +346,8 @@ const patchNewTermsParams = ( filters: params.filters ?? existingRule.filters, newTermsFields: params.new_terms_fields ?? existingRule.newTermsFields, historyWindowStart: params.history_window_start ?? existingRule.historyWindowStart, + alertSuppression: + convertAlertSuppressionToCamel(params.alert_suppression) ?? existingRule.alertSuppression, }; }; @@ -643,6 +646,7 @@ export const typeSpecificCamelToSnake = ( filters: params.filters, language: params.language, data_view_id: params.dataViewId, + alert_suppression: convertAlertSuppressionToSnake(params.alertSuppression), }; } default: { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts index deb853335bf24a..dfb19d3b35ba5f 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_schema/model/rule_schemas.ts @@ -268,6 +268,7 @@ export const NewTermsSpecificRuleParams = z.object({ filters: RuleFilterArray.optional(), language: KqlQueryLanguage, dataViewId: DataViewId.optional(), + alertSuppression: AlertSuppressionCamel.optional(), }); export type NewTermsRuleParams = BaseRuleParams & NewTermsSpecificRuleParams; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts new file mode 100644 index 00000000000000..8d39fcccee62e8 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/bulk_create_suppressed_alerts_in_memory.ts @@ -0,0 +1,113 @@ +/* + * 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. + */ +import type { SuppressedAlertService } from '@kbn/rule-registry-plugin/server'; + +import type { SuppressionFieldsLatest } from '@kbn/rule-registry-plugin/common/schemas'; +import type { + SearchAfterAndBulkCreateParams, + SearchAfterAndBulkCreateReturnType, + WrapSuppressedHits, +} from '../types'; + +import type { AlertSuppressionCamel } from '../../../../../common/api/detection_engine/model/rule_schema'; +import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../common/detection_engine/constants'; +import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema'; + +import { executeBulkCreateAlerts } from '../utils/bulk_create_suppressed_alerts_in_memory'; +import type { + BaseFieldsLatest, + WrappedFieldsLatest, + NewTermsFieldsLatest, +} from '../../../../../common/api/detection_engine/model/alerts'; +import { partitionMissingFieldsEvents } from '../utils/partition_missing_fields_events'; +import type { EventsAndTerms } from './types'; +import type { ExperimentalFeatures } from '../../../../../common'; + +interface SearchAfterAndBulkCreateSuppressedAlertsParams extends SearchAfterAndBulkCreateParams { + wrapSuppressedHits: WrapSuppressedHits; + alertTimestampOverride: Date | undefined; + alertWithSuppression: SuppressedAlertService; + alertSuppression?: AlertSuppressionCamel; +} +export interface BulkCreateSuppressedAlertsParams + extends Pick< + SearchAfterAndBulkCreateSuppressedAlertsParams, + | 'bulkCreate' + | 'services' + | 'ruleExecutionLogger' + | 'tuple' + | 'alertSuppression' + | 'alertWithSuppression' + | 'alertTimestampOverride' + > { + wrapHits: ( + events: EventsAndTerms[] + ) => Array>; + wrapSuppressedHits: ( + events: EventsAndTerms[] + ) => Array< + WrappedFieldsLatest + >; + eventsAndTerms: EventsAndTerms[]; + toReturn: SearchAfterAndBulkCreateReturnType; + experimentalFeatures: ExperimentalFeatures | undefined; +} +/** + * wraps, bulk create and suppress alerts in memory, also takes care of missing fields logic. + * If parameter alertSuppression.missingFieldsStrategy configured not to be suppressed, regular alerts will be created for such events without suppression + * This function is similar to x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts, but + * it operates with new terms specific eventsAndTerms{@link EventsAndTerms} parameter property, instead of regular events as common utility + */ +export const bulkCreateSuppressedNewTermsAlertsInMemory = async ({ + eventsAndTerms, + wrapHits, + wrapSuppressedHits, + toReturn, + bulkCreate, + services, + ruleExecutionLogger, + tuple, + alertSuppression, + alertWithSuppression, + alertTimestampOverride, + experimentalFeatures, +}: BulkCreateSuppressedAlertsParams) => { + const suppressOnMissingFields = + (alertSuppression?.missingFieldsStrategy ?? DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY) === + AlertSuppressionMissingFieldsStrategyEnum.suppress; + + let suppressibleEvents = eventsAndTerms; + let unsuppressibleWrappedDocs: Array> = []; + + if (!suppressOnMissingFields) { + const partitionedEvents = partitionMissingFieldsEvents( + eventsAndTerms, + alertSuppression?.groupBy || [], + ['event'] + ); + + unsuppressibleWrappedDocs = wrapHits(partitionedEvents[1]); + + suppressibleEvents = partitionedEvents[0]; + } + + const suppressibleWrappedDocs = wrapSuppressedHits(suppressibleEvents); + + return executeBulkCreateAlerts({ + suppressibleWrappedDocs, + unsuppressibleWrappedDocs, + toReturn, + bulkCreate, + services, + ruleExecutionLogger, + tuple, + alertSuppression, + alertWithSuppression, + alertTimestampOverride, + experimentalFeatures, + }); +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts index 398e73d6861f86..42ffec0b6236cb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/create_new_terms_alert_type.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { isObject } from 'lodash'; +import { isObject, chunk } from 'lodash'; import { NEW_TERMS_RULE_TYPE_ID } from '@kbn/securitysolution-rules'; import { DEFAULT_APP_CATEGORIES } from '@kbn/core-application-common'; @@ -16,13 +16,16 @@ import type { CreateRuleOptions, SecurityAlertType } from '../types'; import { singleSearchAfter } from '../utils/single_search_after'; import { getFilter } from '../utils/get_filter'; import { wrapNewTermsAlerts } from './wrap_new_terms_alerts'; -import type { EventsAndTerms } from './wrap_new_terms_alerts'; +import { wrapSuppressedNewTermsAlerts } from './wrap_suppressed_new_terms_alerts'; +import { bulkCreateSuppressedNewTermsAlertsInMemory } from './bulk_create_suppressed_alerts_in_memory'; +import type { EventsAndTerms } from './types'; import type { RecentTermsAggResult, DocFetchAggResult, NewTermsAggResult, CreateAlertsHook, } from './build_new_terms_aggregation'; +import type { NewTermsFieldsLatest } from '../../../../../common/api/detection_engine/model/alerts'; import { buildRecentTermsAgg, buildNewTermsAgg, @@ -35,14 +38,17 @@ import { createSearchAfterReturnType, getUnprocessedExceptionsWarnings, getMaxSignalsWarning, + getSuppressionMaxSignalsWarning, } from '../utils/utils'; import { createEnrichEventsFunction } from '../utils/enrichments'; +import { getIsAlertSuppressionActive } from '../utils/get_is_alert_suppression_active'; import { multiTermsComposite } from './multi_terms_composite'; +import type { GenericBulkCreateResponse } from '../utils/bulk_create_with_suppression'; export const createNewTermsAlertType = ( createOptions: CreateRuleOptions ): SecurityAlertType => { - const { logger } = createOptions; + const { logger, licensing } = createOptions; return { id: NEW_TERMS_RULE_TYPE_ID, name: 'New Terms Rule', @@ -104,6 +110,8 @@ export const createNewTermsAlertType = ( alertTimestampOverride, publicBaseUrl, inputIndexFields, + experimentalFeatures, + alertWithSuppression, }, services, params, @@ -137,6 +145,11 @@ export const createNewTermsAlertType = ( name: 'historyWindowStart', }); + const isAlertSuppressionActive = await getIsAlertSuppressionActive({ + alertSuppression: params.alertSuppression, + licensing, + isFeatureDisabled: !experimentalFeatures?.alertSuppressionForNewTermsRuleEnabled, + }); let afterKey; const result = createSearchAfterReturnType(); @@ -191,6 +204,32 @@ export const createNewTermsAlertType = ( const bucketsForField = searchResultWithAggs.aggregations.new_terms.buckets; const createAlertsHook: CreateAlertsHook = async (aggResult) => { + const wrapHits = (eventsAndTerms: EventsAndTerms[]) => + wrapNewTermsAlerts({ + eventsAndTerms, + spaceId, + completeRule, + mergeStrategy, + indicesToQuery: inputIndex, + alertTimestampOverride, + ruleExecutionLogger, + publicBaseUrl, + }); + + const wrapSuppressedHits = (eventsAndTerms: EventsAndTerms[]) => + wrapSuppressedNewTermsAlerts({ + eventsAndTerms, + spaceId, + completeRule, + mergeStrategy, + indicesToQuery: inputIndex, + alertTimestampOverride, + ruleExecutionLogger, + publicBaseUrl, + primaryTimestamp, + secondaryTimestamp, + }); + const eventsAndTerms: EventsAndTerms[] = ( aggResult?.aggregations?.new_terms.buckets ?? [] ).map((bucket) => { @@ -201,27 +240,61 @@ export const createNewTermsAlertType = ( }; }); - const wrappedAlerts = wrapNewTermsAlerts({ - eventsAndTerms, - spaceId, - completeRule, - mergeStrategy, - indicesToQuery: inputIndex, - alertTimestampOverride, - ruleExecutionLogger, - publicBaseUrl, - }); + let bulkCreateResult: Omit< + GenericBulkCreateResponse, + 'suppressedItemsCount' + > = { + errors: [], + success: true, + enrichmentDuration: '0', + bulkCreateDuration: '0', + createdItemsCount: 0, + createdItems: [], + alertsWereTruncated: false, + }; - const bulkCreateResult = await bulkCreate( - wrappedAlerts, - params.maxSignals - result.createdSignalsCount, - createEnrichEventsFunction({ - services, - logger: ruleExecutionLogger, - }) - ); + // wrap and create alerts by chunks + // large number of matches, processed in possibly 10,000 size of events and terms + // can significantly affect Kibana performance + const eventAndTermsChunks = chunk(eventsAndTerms, 5 * params.maxSignals); - addToSearchAfterReturn({ current: result, next: bulkCreateResult }); + for (let i = 0; i < eventAndTermsChunks.length; i++) { + const eventAndTermsChunk = eventAndTermsChunks[i]; + + if (isAlertSuppressionActive) { + bulkCreateResult = await bulkCreateSuppressedNewTermsAlertsInMemory({ + eventsAndTerms: eventAndTermsChunk, + toReturn: result, + wrapHits, + bulkCreate, + services, + ruleExecutionLogger, + tuple, + alertSuppression: params.alertSuppression, + wrapSuppressedHits, + alertTimestampOverride, + alertWithSuppression, + experimentalFeatures, + }); + } else { + const wrappedAlerts = wrapHits(eventAndTermsChunk); + + bulkCreateResult = await bulkCreate( + wrappedAlerts, + params.maxSignals - result.createdSignalsCount, + createEnrichEventsFunction({ + services, + logger: ruleExecutionLogger, + }) + ); + + addToSearchAfterReturn({ current: result, next: bulkCreateResult }); + } + + if (bulkCreateResult.alertsWereTruncated) { + break; + } + } return bulkCreateResult; }; @@ -229,7 +302,7 @@ export const createNewTermsAlertType = ( // separate route for multiple new terms // it uses paging through composite aggregation if (params.newTermsFields.length > 1) { - await multiTermsComposite({ + const bulkCreateResult = await multiTermsComposite({ filterArgs, buckets: bucketsForField, params, @@ -241,7 +314,12 @@ export const createNewTermsAlertType = ( runOpts: execOptions.runOpts, afterKey, createAlertsHook, + isAlertSuppressionActive, }); + + if (bulkCreateResult?.alertsWereTruncated) { + break; + } } else { // PHASE 2: Take the page of results from Phase 1 and determine if each term exists in the history window. // The aggregation filters out buckets for terms that exist prior to `tuple.from`, so the buckets in the @@ -326,7 +404,11 @@ export const createNewTermsAlertType = ( const bulkCreateResult = await createAlertsHook(docFetchResultWithAggs); if (bulkCreateResult.alertsWereTruncated) { - result.warningMessages.push(getMaxSignalsWarning()); + result.warningMessages.push( + isAlertSuppressionActive + ? getSuppressionMaxSignalsWarning() + : getMaxSignalsWarning() + ); break; } } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts index dc33626bbd5352..572443566f8d81 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/multi_terms_composite.ts @@ -21,8 +21,9 @@ import type { CompositeNewTermsAggResult, CreateAlertsHook, } from './build_new_terms_aggregation'; - -import { getMaxSignalsWarning } from '../utils/utils'; +import type { NewTermsFieldsLatest } from '../../../../../common/api/detection_engine/model/alerts'; +import { getMaxSignalsWarning, getSuppressionMaxSignalsWarning } from '../utils/utils'; +import type { GenericBulkCreateResponse } from '../utils/bulk_create_with_suppression'; import type { RuleServices, SearchAfterAndBulkCreateReturnType, RunOpts } from '../types'; @@ -47,6 +48,7 @@ interface MultiTermsCompositeArgsBase { runOpts: RunOpts; afterKey: Record | undefined; createAlertsHook: CreateAlertsHook; + isAlertSuppressionActive: boolean; } interface MultiTermsCompositeArgs extends MultiTermsCompositeArgsBase { @@ -72,7 +74,10 @@ const multiTermsCompositeNonRetryable = async ({ afterKey, createAlertsHook, batchSize, -}: MultiTermsCompositeArgs) => { + isAlertSuppressionActive, +}: MultiTermsCompositeArgs): Promise< + Omit, 'suppressedItemsCount'> | undefined +> => { const { ruleExecutionLogger, tuple, @@ -183,15 +188,15 @@ const multiTermsCompositeNonRetryable = async ({ const bulkCreateResult = await createAlertsHook(docFetchResultWithAggs); if (bulkCreateResult.alertsWereTruncated) { - result.warningMessages.push(getMaxSignalsWarning()); - return result; + result.warningMessages.push( + isAlertSuppressionActive ? getSuppressionMaxSignalsWarning() : getMaxSignalsWarning() + ); + return bulkCreateResult; } } internalAfterKey = batch[batch.length - 1]?.key; } - - return result; }; /** @@ -199,10 +204,14 @@ const multiTermsCompositeNonRetryable = async ({ * We will try to reduce it in twice per each request, three times, up until 125 * Per ES documentation, max_clause_count min value is 1,000 - so with 125 we should be able execute query below max_clause_count value */ -export const multiTermsComposite = async (args: MultiTermsCompositeArgsBase): Promise => { +export const multiTermsComposite = async ( + args: MultiTermsCompositeArgsBase +): Promise< + Omit, 'suppressedItemsCount'> | undefined +> => { let retryBatchSize = BATCH_SIZE; const ruleExecutionLogger = args.runOpts.ruleExecutionLogger; - await pRetry( + return pRetry( async (retryCount) => { try { const res = await multiTermsCompositeNonRetryable({ ...args, batchSize: retryBatchSize }); @@ -218,7 +227,7 @@ export const multiTermsComposite = async (args: MultiTermsCompositeArgsBase): Pr ].some((errMessage) => e.message.includes(errMessage)) ) { args.result.errors.push(e.message); - return args.result; + return; } retryBatchSize = retryBatchSize / 2; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts new file mode 100644 index 00000000000000..270ffefb6b448d --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/types.ts @@ -0,0 +1,14 @@ +/* + * 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. + */ + +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; +import type { SignalSource } from '../types'; + +export interface EventsAndTerms { + event: estypes.SearchHit; + newTerms: Array; +} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts new file mode 100644 index 00000000000000..e92bbad5989418 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.test.ts @@ -0,0 +1,142 @@ +/* + * 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. + */ +import { cloneDeep } from 'lodash'; + +import { + ALERT_URL, + ALERT_UUID, + ALERT_SUPPRESSION_DOCS_COUNT, + ALERT_INSTANCE_ID, + ALERT_SUPPRESSION_TERMS, + ALERT_SUPPRESSION_START, + ALERT_SUPPRESSION_END, +} from '@kbn/rule-data-utils'; +import { ALERT_NEW_TERMS } from '../../../../../common/field_maps/field_names'; +import { getCompleteRuleMock, getNewTermsRuleParams } from '../../rule_schema/mocks'; +import { ruleExecutionLogMock } from '../../rule_monitoring/mocks'; +import { sampleDocNoSortIdWithTimestamp } from '../__mocks__/es_results'; +import { wrapSuppressedNewTermsAlerts } from './wrap_suppressed_new_terms_alerts'; + +const ruleExecutionLogger = ruleExecutionLogMock.forExecutors.create(); + +const docId = 'd5e8eb51-a6a0-456d-8a15-4b79bfec3d71'; +const publicBaseUrl = 'http://somekibanabaseurl.com'; + +const alertSuppression = { + groupBy: ['source.ip'], +}; + +const completeRule = getCompleteRuleMock(getNewTermsRuleParams()); +completeRule.ruleParams.alertSuppression = alertSuppression; + +describe('wrapSuppressedNewTermsAlerts', () => { + test('should create an alert with the correct _id from a document and suppression fields', () => { + const doc = sampleDocNoSortIdWithTimestamp(docId); + const alerts = wrapSuppressedNewTermsAlerts({ + eventsAndTerms: [{ event: doc, newTerms: ['127.0.0.1'] }], + spaceId: 'default', + mergeStrategy: 'missingFields', + completeRule, + indicesToQuery: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], + alertTimestampOverride: undefined, + ruleExecutionLogger, + publicBaseUrl, + primaryTimestamp: '@timestamp', + }); + + expect(alerts[0]._id).toEqual('3b67aa2ebdc628afc98febc65082d2d83a116d79'); + expect(alerts[0]._source[ALERT_UUID]).toEqual('3b67aa2ebdc628afc98febc65082d2d83a116d79'); + expect(alerts[0]._source[ALERT_NEW_TERMS]).toEqual(['127.0.0.1']); + expect(alerts[0]._source[ALERT_URL]).toContain( + 'http://somekibanabaseurl.com/app/security/alerts/redirect/3b67aa2ebdc628afc98febc65082d2d83a116d79?index=.alerts-security.alerts-default' + ); + expect(alerts[0]._source[ALERT_SUPPRESSION_DOCS_COUNT]).toEqual(0); + expect(alerts[0]._source[ALERT_INSTANCE_ID]).toEqual( + '1bf77f90e72d76d9335ad0ce356340a3d9833f96' + ); + expect(alerts[0]._source[ALERT_SUPPRESSION_TERMS]).toEqual([ + { field: 'source.ip', value: ['127.0.0.1'] }, + ]); + expect(alerts[0]._source[ALERT_SUPPRESSION_START]).toBeDefined(); + expect(alerts[0]._source[ALERT_SUPPRESSION_END]).toBeDefined(); + }); + + test('should create an alert with a different _id if suppression field is different', () => { + const completeRuleCloned = cloneDeep(completeRule); + completeRuleCloned.ruleParams.alertSuppression = { + groupBy: ['someKey'], + }; + const doc = sampleDocNoSortIdWithTimestamp(docId); + const alerts = wrapSuppressedNewTermsAlerts({ + eventsAndTerms: [{ event: doc, newTerms: ['127.0.0.1'] }], + spaceId: 'default', + mergeStrategy: 'missingFields', + completeRule: completeRuleCloned, + indicesToQuery: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], + alertTimestampOverride: undefined, + ruleExecutionLogger, + publicBaseUrl, + primaryTimestamp: '@timestamp', + }); + + expect(alerts[0]._id).toEqual('3e0436a03b735af12d6e5358cb36d2c3b39425a8'); + expect(alerts[0]._source[ALERT_UUID]).toEqual('3e0436a03b735af12d6e5358cb36d2c3b39425a8'); + expect(alerts[0]._source[ALERT_URL]).toContain( + 'http://somekibanabaseurl.com/app/security/alerts/redirect/3e0436a03b735af12d6e5358cb36d2c3b39425a8?index=.alerts-security.alerts-default' + ); + expect(alerts[0]._source[ALERT_SUPPRESSION_DOCS_COUNT]).toEqual(0); + expect(alerts[0]._source[ALERT_INSTANCE_ID]).toEqual( + '01e43acf431fd232bbe230ac523a5d5d1e8a2787' + ); + expect(alerts[0]._source[ALERT_SUPPRESSION_TERMS]).toEqual([ + { field: 'someKey', value: ['someValue'] }, + ]); + }); + + test('should create an alert with a different _id if the space is different', () => { + const doc = sampleDocNoSortIdWithTimestamp(docId); + const alerts = wrapSuppressedNewTermsAlerts({ + eventsAndTerms: [{ event: doc, newTerms: ['127.0.0.1'] }], + spaceId: 'otherSpace', + mergeStrategy: 'missingFields', + completeRule, + indicesToQuery: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], + alertTimestampOverride: undefined, + ruleExecutionLogger, + publicBaseUrl, + primaryTimestamp: '@timestamp', + }); + + expect(alerts[0]._id).toEqual('f8a029df9c99e245dc83977153a0612178f3d2e8'); + expect(alerts[0]._source[ALERT_UUID]).toEqual('f8a029df9c99e245dc83977153a0612178f3d2e8'); + expect(alerts[0]._source[ALERT_URL]).toContain( + 'http://somekibanabaseurl.com/s/otherSpace/app/security/alerts/redirect/f8a029df9c99e245dc83977153a0612178f3d2e8?index=.alerts-security.alerts-otherSpace' + ); + }); + + test('should create an alert with a different _id if the newTerms array is different', () => { + const doc = sampleDocNoSortIdWithTimestamp(docId); + const alerts = wrapSuppressedNewTermsAlerts({ + eventsAndTerms: [{ event: doc, newTerms: ['127.0.0.2'] }], + spaceId: 'otherSpace', + mergeStrategy: 'missingFields', + completeRule, + indicesToQuery: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], + alertTimestampOverride: undefined, + ruleExecutionLogger, + publicBaseUrl, + primaryTimestamp: '@timestamp', + }); + + expect(alerts[0]._id).toEqual('cb8684ec72592346d32839b1838e4f4080dc052e'); + expect(alerts[0]._source[ALERT_UUID]).toEqual('cb8684ec72592346d32839b1838e4f4080dc052e'); + expect(alerts[0]._source[ALERT_NEW_TERMS]).toEqual(['127.0.0.2']); + expect(alerts[0]._source[ALERT_URL]).toContain( + 'http://somekibanabaseurl.com/s/otherSpace/app/security/alerts/redirect/cb8684ec72592346d32839b1838e4f4080dc052e?index=.alerts-security.alerts-otherSpace' + ); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts new file mode 100644 index 00000000000000..6aeb48e30fd99b --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/new_terms/wrap_suppressed_new_terms_alerts.ts @@ -0,0 +1,105 @@ +/* + * 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. + */ + +import type * as estypes from '@elastic/elasticsearch/lib/api/types'; +import objectHash from 'object-hash'; +import { TIMESTAMP } from '@kbn/rule-data-utils'; +import type { SuppressionFieldsLatest } from '@kbn/rule-registry-plugin/common/schemas'; +import type { + BaseFieldsLatest, + NewTermsFieldsLatest, + WrappedFieldsLatest, +} from '../../../../../common/api/detection_engine/model/alerts'; +import { ALERT_NEW_TERMS } from '../../../../../common/field_maps/field_names'; +import type { ConfigType } from '../../../../config'; +import type { CompleteRule, NewTermsRuleParams } from '../../rule_schema'; +import { buildReasonMessageForNewTermsAlert } from '../utils/reason_formatters'; +import { getSuppressionAlertFields, getSuppressionTerms } from '../utils'; +import type { SignalSource } from '../types'; +import type { IRuleExecutionLogForExecutors } from '../../rule_monitoring'; +import { buildBulkBody } from '../factories/utils/build_bulk_body'; + +export interface EventsAndTerms { + event: estypes.SearchHit; + newTerms: Array; +} + +export const wrapSuppressedNewTermsAlerts = ({ + eventsAndTerms, + spaceId, + completeRule, + mergeStrategy, + indicesToQuery, + alertTimestampOverride, + ruleExecutionLogger, + publicBaseUrl, + primaryTimestamp, + secondaryTimestamp, +}: { + eventsAndTerms: EventsAndTerms[]; + spaceId: string | null | undefined; + completeRule: CompleteRule; + mergeStrategy: ConfigType['alertMergeStrategy']; + indicesToQuery: string[]; + alertTimestampOverride: Date | undefined; + ruleExecutionLogger: IRuleExecutionLogForExecutors; + publicBaseUrl: string | undefined; + primaryTimestamp: string; + secondaryTimestamp?: string; +}): Array> => { + return eventsAndTerms.map((eventAndTerms) => { + const event = eventAndTerms.event; + + const suppressionTerms = getSuppressionTerms({ + alertSuppression: completeRule?.ruleParams?.alertSuppression, + fields: event.fields, + }); + + const instanceId = objectHash([suppressionTerms, completeRule.alertId, spaceId]); + + const id = objectHash([ + eventAndTerms.event._index, + eventAndTerms.event._id, + String(eventAndTerms.event._version), + `${spaceId}:${completeRule.alertId}`, + eventAndTerms.newTerms, + suppressionTerms, + ]); + + const baseAlert: BaseFieldsLatest = buildBulkBody( + spaceId, + completeRule, + event, + mergeStrategy, + [], + true, + buildReasonMessageForNewTermsAlert, + indicesToQuery, + alertTimestampOverride, + ruleExecutionLogger, + id, + publicBaseUrl + ); + + return { + _id: id, + _index: '', + _source: { + ...baseAlert, + [ALERT_NEW_TERMS]: eventAndTerms.newTerms, + ...getSuppressionAlertFields({ + primaryTimestamp, + secondaryTimestamp, + fields: event.fields, + suppressionTerms, + fallbackTimestamp: baseAlert[TIMESTAMP], + instanceId, + }), + }, + }; + }); +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts new file mode 100644 index 00000000000000..94d7003c4eb13e --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_suppressed_alerts_in_memory.ts @@ -0,0 +1,188 @@ +/* + * 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. + */ +import type { SuppressedAlertService } from '@kbn/rule-registry-plugin/server'; + +import type { SuppressionFieldsLatest } from '@kbn/rule-registry-plugin/common/schemas'; +import type { + SearchAfterAndBulkCreateParams, + SearchAfterAndBulkCreateReturnType, + WrapSuppressedHits, + SignalSourceHit, +} from '../types'; +import { MAX_SIGNALS_SUPPRESSION_MULTIPLIER } from '../constants'; +import { addToSearchAfterReturn } from './utils'; +import type { AlertSuppressionCamel } from '../../../../../common/api/detection_engine/model/rule_schema'; +import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../common/detection_engine/constants'; +import { partitionMissingFieldsEvents } from './partition_missing_fields_events'; +import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema'; +import { createEnrichEventsFunction } from './enrichments'; +import { bulkCreateWithSuppression } from './bulk_create_with_suppression'; +import type { ExperimentalFeatures } from '../../../../../common'; + +import type { + BaseFieldsLatest, + WrappedFieldsLatest, +} from '../../../../../common/api/detection_engine/model/alerts'; + +interface SearchAfterAndBulkCreateSuppressedAlertsParams extends SearchAfterAndBulkCreateParams { + wrapSuppressedHits: WrapSuppressedHits; + alertTimestampOverride: Date | undefined; + alertWithSuppression: SuppressedAlertService; + alertSuppression?: AlertSuppressionCamel; +} +export interface BulkCreateSuppressedAlertsParams + extends Pick< + SearchAfterAndBulkCreateSuppressedAlertsParams, + | 'wrapHits' + | 'bulkCreate' + | 'services' + | 'buildReasonMessage' + | 'ruleExecutionLogger' + | 'tuple' + | 'alertSuppression' + | 'wrapSuppressedHits' + | 'alertWithSuppression' + | 'alertTimestampOverride' + > { + enrichedEvents: SignalSourceHit[]; + toReturn: SearchAfterAndBulkCreateReturnType; + experimentalFeatures?: ExperimentalFeatures; +} +/** + * wraps, bulk create and suppress alerts in memory, also takes care of missing fields logic. + * If parameter alertSuppression.missingFieldsStrategy configured not to be suppressed, regular alerts will be created for such events without suppression + */ +export const bulkCreateSuppressedAlertsInMemory = async ({ + enrichedEvents, + toReturn, + wrapHits, + bulkCreate, + services, + buildReasonMessage, + ruleExecutionLogger, + tuple, + alertSuppression, + wrapSuppressedHits, + alertWithSuppression, + alertTimestampOverride, + experimentalFeatures, +}: BulkCreateSuppressedAlertsParams) => { + const suppressOnMissingFields = + (alertSuppression?.missingFieldsStrategy ?? DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY) === + AlertSuppressionMissingFieldsStrategyEnum.suppress; + + let suppressibleEvents = enrichedEvents; + let unsuppressibleWrappedDocs: Array> = []; + + if (!suppressOnMissingFields) { + const partitionedEvents = partitionMissingFieldsEvents( + enrichedEvents, + alertSuppression?.groupBy || [] + ); + + unsuppressibleWrappedDocs = wrapHits(partitionedEvents[1], buildReasonMessage); + suppressibleEvents = partitionedEvents[0]; + } + + const suppressibleWrappedDocs = wrapSuppressedHits(suppressibleEvents, buildReasonMessage); + + return executeBulkCreateAlerts({ + suppressibleWrappedDocs, + unsuppressibleWrappedDocs, + toReturn, + bulkCreate, + services, + ruleExecutionLogger, + tuple, + alertSuppression, + alertWithSuppression, + alertTimestampOverride, + experimentalFeatures, + }); +}; + +export interface ExecuteBulkCreateAlertsParams + extends Pick< + SearchAfterAndBulkCreateSuppressedAlertsParams, + | 'bulkCreate' + | 'services' + | 'ruleExecutionLogger' + | 'tuple' + | 'alertSuppression' + | 'alertWithSuppression' + | 'alertTimestampOverride' + > { + unsuppressibleWrappedDocs: Array>; + suppressibleWrappedDocs: Array>; + toReturn: SearchAfterAndBulkCreateReturnType; + experimentalFeatures?: ExperimentalFeatures; +} + +/** + * creates alerts in ES, both suppressed and unsuppressed + */ +export const executeBulkCreateAlerts = async < + T extends SuppressionFieldsLatest & BaseFieldsLatest +>({ + unsuppressibleWrappedDocs, + suppressibleWrappedDocs, + toReturn, + bulkCreate, + services, + ruleExecutionLogger, + tuple, + alertSuppression, + alertWithSuppression, + alertTimestampOverride, + experimentalFeatures, +}: ExecuteBulkCreateAlertsParams) => { + // max signals for suppression includes suppressed and created alerts + // this allows to lift max signals limitation to higher value + // and can detects events beyond default max_signals value + const suppressionMaxSignals = MAX_SIGNALS_SUPPRESSION_MULTIPLIER * tuple.maxSignals; + const suppressionDuration = alertSuppression?.duration; + + const suppressionWindow = suppressionDuration + ? `now-${suppressionDuration.value}${suppressionDuration.unit}` + : tuple.from.toISOString(); + + if (unsuppressibleWrappedDocs.length) { + const unsuppressedResult = await bulkCreate( + unsuppressibleWrappedDocs, + tuple.maxSignals - toReturn.createdSignalsCount, + createEnrichEventsFunction({ + services, + logger: ruleExecutionLogger, + }) + ); + + addToSearchAfterReturn({ current: toReturn, next: unsuppressedResult }); + } + + const bulkCreateResult = await bulkCreateWithSuppression({ + alertWithSuppression, + ruleExecutionLogger, + wrappedDocs: suppressibleWrappedDocs, + services, + suppressionWindow, + alertTimestampOverride, + isSuppressionPerRuleExecution: !suppressionDuration, + maxAlerts: tuple.maxSignals - toReturn.createdSignalsCount, + experimentalFeatures, + }); + + addToSearchAfterReturn({ current: toReturn, next: bulkCreateResult }); + + const alertsWereTruncated = + (toReturn.suppressedAlertsCount ?? 0) + toReturn.createdSignalsCount >= suppressionMaxSignals || + toReturn.createdSignalsCount >= tuple.maxSignals; + + return { + ...bulkCreateResult, + alertsWereTruncated, + }; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts index 5e7d0e9d884544..35d55ec7f39d2c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/bulk_create_with_suppression.ts @@ -21,6 +21,7 @@ import type { } from '../../../../../common/api/detection_engine/model/alerts'; import type { RuleServices } from '../types'; import { createEnrichEventsFunction } from './enrichments'; +import type { ExperimentalFeatures } from '../../../../../common'; export interface GenericBulkCreateResponse { success: boolean; @@ -30,6 +31,7 @@ export interface GenericBulkCreateResponse { suppressedItemsCount: number; createdItems: Array & { _id: string; _index: string }>; errors: string[]; + alertsWereTruncated: boolean; } export const bulkCreateWithSuppression = async < @@ -42,6 +44,8 @@ export const bulkCreateWithSuppression = async < suppressionWindow, alertTimestampOverride, isSuppressionPerRuleExecution, + maxAlerts, + experimentalFeatures, }: { alertWithSuppression: SuppressedAlertService; ruleExecutionLogger: IRuleExecutionLogForExecutors; @@ -50,6 +54,8 @@ export const bulkCreateWithSuppression = async < suppressionWindow: string; alertTimestampOverride: Date | undefined; isSuppressionPerRuleExecution?: boolean; + maxAlerts?: number; + experimentalFeatures?: ExperimentalFeatures; }): Promise> => { if (wrappedDocs.length === 0) { return { @@ -60,6 +66,7 @@ export const bulkCreateWithSuppression = async < createdItemsCount: 0, suppressedItemsCount: 0, createdItems: [], + alertsWereTruncated: false, }; } @@ -75,7 +82,7 @@ export const bulkCreateWithSuppression = async < const enrichAlertsWrapper: typeof enrichAlerts = async (alerts, params) => { enrichmentsTimeStart = performance.now(); try { - const enrichedAlerts = await enrichAlerts(alerts, params); + const enrichedAlerts = await enrichAlerts(alerts, params, experimentalFeatures); return enrichedAlerts; } catch (error) { ruleExecutionLogger.error(`Alerts enrichment failed: ${error}`); @@ -85,17 +92,19 @@ export const bulkCreateWithSuppression = async < } }; - const { createdAlerts, errors, suppressedAlerts } = await alertWithSuppression( - wrappedDocs.map((doc) => ({ - _id: doc._id, - // `fields` should have already been merged into `doc._source` - _source: doc._source, - })), - suppressionWindow, - enrichAlertsWrapper, - alertTimestampOverride, - isSuppressionPerRuleExecution - ); + const { createdAlerts, errors, suppressedAlerts, alertsWereTruncated } = + await alertWithSuppression( + wrappedDocs.map((doc) => ({ + _id: doc._id, + // `fields` should have already been merged into `doc._source` + _source: doc._source, + })), + suppressionWindow, + enrichAlertsWrapper, + alertTimestampOverride, + isSuppressionPerRuleExecution, + maxAlerts + ); const end = performance.now(); @@ -111,6 +120,7 @@ export const bulkCreateWithSuppression = async < createdItemsCount: createdAlerts.length, createdItems: createdAlerts, suppressedItemsCount: suppressedAlerts.length, + alertsWereTruncated, }; } else { return { @@ -121,6 +131,7 @@ export const bulkCreateWithSuppression = async < createdItemsCount: createdAlerts.length, createdItems: createdAlerts, suppressedItemsCount: suppressedAlerts.length, + alertsWereTruncated, }; } }; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts new file mode 100644 index 00000000000000..846fddb46b90e9 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts @@ -0,0 +1,45 @@ +/* + * 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. + */ + +import type { LicensingPluginSetup } from '@kbn/licensing-plugin/server'; + +import { firstValueFrom } from 'rxjs'; + +import type { AlertSuppressionCamel } from '../../../../../common/api/detection_engine/model/rule_schema'; + +interface GetIsAlertSuppressionActiveParams { + alertSuppression: AlertSuppressionCamel | undefined; + isFeatureDisabled: boolean | undefined; + licensing: LicensingPluginSetup; +} + +/** + * checks if alert suppression is active: + * - rule should have alert suppression config + * - feature flag should not be disabled + * - license should be platinum + */ +export const getIsAlertSuppressionActive = async ({ + licensing, + alertSuppression, + isFeatureDisabled = false, +}: GetIsAlertSuppressionActiveParams) => { + if (isFeatureDisabled) { + return false; + } + + const isAlertSuppressionConfigured = Boolean(alertSuppression?.groupBy?.length); + + if (!isAlertSuppressionConfigured) { + return false; + } + + const license = await firstValueFrom(licensing.license$); + const hasPlatinumLicense = license.hasAtLeast('platinum'); + + return hasPlatinumLicense; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts index 8f23da386f5c7c..ded79900750107 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/index.ts @@ -28,3 +28,4 @@ export const createResultObject = (state: TState) export * from './get_list_client'; export * from './validate_mutated_params'; export * from './build_timestamp_runtime_mapping'; +export * from './suppression_utils'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts index 8e515cf46e1c69..dfee32a058ba6d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.test.ts @@ -56,6 +56,63 @@ describe('partitionMissingFieldsEvents', () => { ], ]); }); + it('should partition when fields objects located in event property', () => { + expect( + partitionMissingFieldsEvents( + [ + { + event: { + fields: { + 'agent.host': 'host-1', + 'agent.type': ['test-1', 'test-2'], + 'agent.version': 2, + }, + _id: '1', + _index: 'index-0', + }, + }, + { + event: { + fields: { + 'agent.host': 'host-1', + 'agent.type': ['test-1', 'test-2'], + }, + _id: '1', + _index: 'index-0', + }, + }, + ], + ['agent.host', 'agent.type', 'agent.version'], + ['event'] + ) + ).toEqual([ + [ + { + event: { + fields: { + 'agent.host': 'host-1', + 'agent.type': ['test-1', 'test-2'], + 'agent.version': 2, + }, + _id: '1', + _index: 'index-0', + }, + }, + ], + [ + { + event: { + fields: { + 'agent.host': 'host-1', + 'agent.type': ['test-1', 'test-2'], + }, + _id: '1', + _index: 'index-0', + }, + }, + ], + ]); + }); it('should partition if two fields are empty', () => { expect( partitionMissingFieldsEvents( diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts index 6506a291da5615..f86a969dc60c30 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/partition_missing_fields_events.ts @@ -6,6 +6,7 @@ */ import pick from 'lodash/pick'; +import get from 'lodash/get'; import partition from 'lodash/partition'; import type { SignalSourceHit } from '../types'; @@ -15,16 +16,21 @@ import type { SignalSourceHit } from '../types'; * 1. first one, where no suppressed by field has empty value * 2. where any of fields is empty */ -export const partitionMissingFieldsEvents = ( - events: SignalSourceHit[], - suppressedBy: string[] = [] -): SignalSourceHit[][] => { +export const partitionMissingFieldsEvents = < + T extends SignalSourceHit | { event: SignalSourceHit } +>( + events: T[], + suppressedBy: string[] = [], + // path to fields property within event object. At this point, it can be in root of event object or within event key + fieldsPath: ['event'] | [] = [] +): T[][] => { return partition(events, (event) => { if (suppressedBy.length === 0) { return true; } + const eventFields = get(event, [...fieldsPath, 'fields']); const hasMissingFields = - Object.keys(pick(event.fields, suppressedBy)).length < suppressedBy.length; + Object.keys(pick(eventFields, suppressedBy)).length < suppressedBy.length; return !hasMissingFields; }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts index 73f7bfd4a6ba44..0a89dec4bd2519 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/search_after_bulk_create_suppressed_alerts.ts @@ -7,20 +7,14 @@ import type { SuppressedAlertService } from '@kbn/rule-registry-plugin/server'; -import { bulkCreateWithSuppression } from './bulk_create_with_suppression'; -import { addToSearchAfterReturn, getSuppressionMaxSignalsWarning } from './utils'; +import { getSuppressionMaxSignalsWarning } from './utils'; import type { SearchAfterAndBulkCreateParams, SearchAfterAndBulkCreateReturnType, WrapSuppressedHits, } from '../types'; -import { MAX_SIGNALS_SUPPRESSION_MULTIPLIER } from '../constants'; - -import { createEnrichEventsFunction } from './enrichments'; -import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema'; import type { AlertSuppressionCamel } from '../../../../../common/api/detection_engine/model/rule_schema'; -import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../common/detection_engine/constants'; -import { partitionMissingFieldsEvents } from './partition_missing_fields_events'; + interface SearchAfterAndBulkCreateSuppressedAlertsParams extends SearchAfterAndBulkCreateParams { wrapSuppressedHits: WrapSuppressedHits; alertTimestampOverride: Date | undefined; @@ -30,6 +24,7 @@ interface SearchAfterAndBulkCreateSuppressedAlertsParams extends SearchAfterAndB import type { SearchAfterAndBulkCreateFactoryParams } from './search_after_bulk_create_factory'; import { searchAfterAndBulkCreateFactory } from './search_after_bulk_create_factory'; +import { bulkCreateSuppressedAlertsInMemory } from './bulk_create_suppressed_alerts_in_memory'; /** * search_after through documents and re-index using bulk endpoint @@ -55,62 +50,20 @@ export const searchAfterAndBulkCreateSuppressedAlerts = async ( enrichedEvents, toReturn, }) => { - // max signals for suppression includes suppressed and created alerts - // this allows to lift max signals limitation to higher value - // and can detects threats beyond default max_signals value - const suppressionMaxSignals = MAX_SIGNALS_SUPPRESSION_MULTIPLIER * tuple.maxSignals; - - const suppressionDuration = alertSuppression?.duration; - const suppressionWindow = suppressionDuration - ? `now-${suppressionDuration.value}${suppressionDuration.unit}` - : tuple.from.toISOString(); - - const suppressOnMissingFields = - (alertSuppression?.missingFieldsStrategy ?? DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY) === - AlertSuppressionMissingFieldsStrategyEnum.suppress; - - let suppressibleEvents = enrichedEvents; - if (!suppressOnMissingFields) { - const partitionedEvents = partitionMissingFieldsEvents( - enrichedEvents, - alertSuppression?.groupBy || [] - ); - - const wrappedDocs = wrapHits(partitionedEvents[1], buildReasonMessage); - suppressibleEvents = partitionedEvents[0]; - - const unsuppressedResult = await bulkCreate( - wrappedDocs, - tuple.maxSignals - toReturn.createdSignalsCount, - createEnrichEventsFunction({ - services, - logger: ruleExecutionLogger, - }) - ); - - addToSearchAfterReturn({ current: toReturn, next: unsuppressedResult }); - } - - const wrappedDocs = wrapSuppressedHits(suppressibleEvents, buildReasonMessage); - - const bulkCreateResult = await bulkCreateWithSuppression({ - alertWithSuppression, - ruleExecutionLogger, - wrappedDocs, + return bulkCreateSuppressedAlertsInMemory({ + wrapHits, + bulkCreate, services, - suppressionWindow, + buildReasonMessage, + ruleExecutionLogger, + tuple, + alertSuppression, + wrapSuppressedHits, + alertWithSuppression, alertTimestampOverride, - isSuppressionPerRuleExecution: !suppressionDuration, + enrichedEvents, + toReturn, }); - - addToSearchAfterReturn({ current: toReturn, next: bulkCreateResult }); - - return { - ...bulkCreateResult, - alertsWereTruncated: - (toReturn.suppressedAlertsCount ?? 0) + toReturn.createdSignalsCount >= - suppressionMaxSignals || toReturn.createdSignalsCount >= tuple.maxSignals, - }; }; return searchAfterAndBulkCreateFactory({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts new file mode 100644 index 00000000000000..745dd089775205 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.test.ts @@ -0,0 +1,125 @@ +/* + * 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. + */ +import { + ALERT_SUPPRESSION_DOCS_COUNT, + ALERT_INSTANCE_ID, + ALERT_SUPPRESSION_TERMS, + ALERT_SUPPRESSION_START, + ALERT_SUPPRESSION_END, +} from '@kbn/rule-data-utils'; + +import { getSuppressionTerms, getSuppressionAlertFields } from './suppression_utils'; + +describe('getSuppressionAlertFields', () => { + const suppressionTerms = [ + { + field: 'agent.name', + value: ['agent-0'], + }, + ]; + const instanceId = 'mock-id'; + const fallbackTimestamp = '2020-10-28T06:30:00.000Z'; + const expectedTimestamp = '2022-02-24T06:30:00.000Z'; + + it('should return suppression fields', () => { + expect( + getSuppressionAlertFields({ + primaryTimestamp: '@timestamp', + fields: { '@timestamp': expectedTimestamp }, + suppressionTerms, + instanceId, + fallbackTimestamp, + }) + ).toEqual({ + [ALERT_SUPPRESSION_TERMS]: suppressionTerms, + [ALERT_SUPPRESSION_START]: new Date(expectedTimestamp), + [ALERT_SUPPRESSION_END]: new Date(expectedTimestamp), + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + [ALERT_INSTANCE_ID]: instanceId, + }); + }); + it('should set suppression boundaries from secondary timestamp field', () => { + expect( + getSuppressionAlertFields({ + primaryTimestamp: '@timestamp', + secondaryTimestamp: 'event.ingested', + fields: { 'event.ingested': expectedTimestamp }, + suppressionTerms, + instanceId, + fallbackTimestamp, + }) + ).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_START]: new Date(expectedTimestamp), + [ALERT_SUPPRESSION_END]: new Date(expectedTimestamp), + }) + ); + }); + it('should set suppression boundaries from fallback timestamp', () => { + expect( + getSuppressionAlertFields({ + primaryTimestamp: '@timestamp', + secondaryTimestamp: 'event.ingested', + fields: {}, + suppressionTerms, + instanceId, + fallbackTimestamp, + }) + ).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_START]: new Date(fallbackTimestamp), + [ALERT_SUPPRESSION_END]: new Date(fallbackTimestamp), + }) + ); + }); +}); + +describe('getSuppressionTerms', () => { + it('should return suppression terms', () => { + expect( + getSuppressionTerms({ + alertSuppression: { + groupBy: ['host.name'], + }, + fields: { 'host.name': 'localhost-1' }, + }) + ).toEqual([{ field: 'host.name', value: 'localhost-1' }]); + }); + it('should return suppression terms array when fields do not have matches', () => { + expect( + getSuppressionTerms({ + alertSuppression: { + groupBy: ['host.name'], + }, + fields: { 'host.ip': '127.0.0.1' }, + }) + ).toEqual([{ field: 'host.name', value: null }]); + }); + it('should return sorted suppression terms array value', () => { + expect( + getSuppressionTerms({ + alertSuppression: { + groupBy: ['host.name'], + }, + fields: { 'host.name': ['localhost-2', 'localhost-1'] }, + }) + ).toEqual([{ field: 'host.name', value: ['localhost-1', 'localhost-2'] }]); + }); + it('should return multiple suppression terms', () => { + expect( + getSuppressionTerms({ + alertSuppression: { + groupBy: ['host.name', 'host.ip'], + }, + fields: { 'host.name': ['localhost-1'], 'agent.name': 'test', 'host.ip': '127.0.0.1' }, + }) + ).toEqual([ + { field: 'host.name', value: ['localhost-1'] }, + { field: 'host.ip', value: '127.0.0.1' }, + ]); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts new file mode 100644 index 00000000000000..167f22dc1d52b2 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/suppression_utils.ts @@ -0,0 +1,86 @@ +/* + * 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. + */ + +import pick from 'lodash/pick'; +import get from 'lodash/get'; +import sortBy from 'lodash/sortBy'; + +import { + ALERT_SUPPRESSION_DOCS_COUNT, + ALERT_INSTANCE_ID, + ALERT_SUPPRESSION_TERMS, + ALERT_SUPPRESSION_START, + ALERT_SUPPRESSION_END, +} from '@kbn/rule-data-utils'; +import type { AlertSuppressionCamel } from '../../../../../common/api/detection_engine/model/rule_schema'; +interface SuppressionTerm { + field: string; + value: string[] | number[] | null; +} + +/** + * returns an object containing the standard suppression fields (ALERT_INSTANCE_ID, ALERT_SUPPRESSION_TERMS, etc), with corresponding values populated from the `fields` parameter. + */ +export const getSuppressionAlertFields = ({ + primaryTimestamp, + secondaryTimestamp, + fields, + suppressionTerms, + fallbackTimestamp, + instanceId, +}: { + fields: Record | undefined; + primaryTimestamp: string; + secondaryTimestamp?: string; + suppressionTerms: SuppressionTerm[]; + fallbackTimestamp: string; + instanceId: string; +}) => { + const suppressionTime = new Date( + get(fields, primaryTimestamp) ?? + (secondaryTimestamp && get(fields, secondaryTimestamp)) ?? + fallbackTimestamp + ); + + const suppressionFields = { + [ALERT_INSTANCE_ID]: instanceId, + [ALERT_SUPPRESSION_TERMS]: suppressionTerms, + [ALERT_SUPPRESSION_START]: suppressionTime, + [ALERT_SUPPRESSION_END]: suppressionTime, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + }; + + return suppressionFields; +}; + +/** + * returns an array of {@link SuppressionTerm}s by retrieving the appropriate field values based on the provided alertSuppression configuration + */ +export const getSuppressionTerms = ({ + alertSuppression, + fields, +}: { + fields: Record | undefined; + alertSuppression: AlertSuppressionCamel | undefined; +}): SuppressionTerm[] => { + const suppressedBy = alertSuppression?.groupBy ?? []; + + const suppressedProps = pick(fields, suppressedBy) as Record< + string, + string[] | number[] | undefined + >; + const suppressionTerms = suppressedBy.map((field) => { + const value = suppressedProps[field] ?? null; + const sortedValue = Array.isArray(value) ? (sortBy(value) as string[] | number[]) : value; + return { + field, + value: sortedValue, + }; + }); + + return suppressionTerms; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts index b8ccacb9e515f8..c4618735105438 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/wrap_suppressed_alerts.ts @@ -6,19 +6,9 @@ */ import objectHash from 'object-hash'; -import pick from 'lodash/pick'; -import get from 'lodash/get'; -import sortBy from 'lodash/sortBy'; import type { SuppressionFieldsLatest } from '@kbn/rule-registry-plugin/common/schemas'; -import { - ALERT_SUPPRESSION_DOCS_COUNT, - ALERT_INSTANCE_ID, - ALERT_SUPPRESSION_TERMS, - ALERT_SUPPRESSION_START, - ALERT_SUPPRESSION_END, - TIMESTAMP, -} from '@kbn/rule-data-utils'; +import { TIMESTAMP } from '@kbn/rule-data-utils'; import type { SignalSourceHit } from '../types'; import type { @@ -29,6 +19,7 @@ import type { ConfigType } from '../../../../config'; import type { CompleteRule, ThreatRuleParams } from '../../rule_schema'; import type { IRuleExecutionLogForExecutors } from '../../rule_monitoring'; import { buildBulkBody } from '../factories/utils/build_bulk_body'; +import { getSuppressionAlertFields, getSuppressionTerms } from './suppression_utils'; import type { BuildReasonMessage } from './reason_formatters'; @@ -62,20 +53,10 @@ export const wrapSuppressedAlerts = ({ primaryTimestamp: string; secondaryTimestamp?: string; }): Array> => { - const suppressedBy = completeRule?.ruleParams?.alertSuppression?.groupBy ?? []; - return events.map((event) => { - const suppressedProps = pick(event.fields, suppressedBy) as Record< - string, - string[] | number[] | undefined - >; - const suppressionTerms = suppressedBy.map((field) => { - const value = suppressedProps[field] ?? null; - const sortedValue = Array.isArray(value) ? (sortBy(value) as string[] | number[]) : value; - return { - field, - value: sortedValue, - }; + const suppressionTerms = getSuppressionTerms({ + alertSuppression: completeRule?.ruleParams?.alertSuppression, + fields: event.fields, }); const id = objectHash([ @@ -102,22 +83,19 @@ export const wrapSuppressedAlerts = ({ publicBaseUrl ); - const suppressionTime = new Date( - get(event.fields, primaryTimestamp) ?? - (secondaryTimestamp && get(event.fields, secondaryTimestamp)) ?? - baseAlert[TIMESTAMP] - ); - return { _id: id, _index: '', _source: { ...baseAlert, - [ALERT_SUPPRESSION_TERMS]: suppressionTerms, - [ALERT_SUPPRESSION_START]: suppressionTime, - [ALERT_SUPPRESSION_END]: suppressionTime, - [ALERT_SUPPRESSION_DOCS_COUNT]: 0, - [ALERT_INSTANCE_ID]: instanceId, + ...getSuppressionAlertFields({ + primaryTimestamp, + secondaryTimestamp, + fields: event.fields, + suppressionTerms, + fallbackTimestamp: baseAlert[TIMESTAMP], + instanceId, + }), }, }; }); diff --git a/x-pack/test/functional/es_archives/security_solution/ecs_compliant/mappings.json b/x-pack/test/functional/es_archives/security_solution/ecs_compliant/mappings.json index 1e2c79a11e26ef..7a0dd1798cf1de 100644 --- a/x-pack/test/functional/es_archives/security_solution/ecs_compliant/mappings.json +++ b/x-pack/test/functional/es_archives/security_solution/ecs_compliant/mappings.json @@ -67,6 +67,9 @@ "name": { "type": "keyword" }, + "ip": { + "type": "ip" + }, "uptime": { "type": "long" } diff --git a/x-pack/test/security_solution_api_integration/config/ess/config.base.ts b/x-pack/test/security_solution_api_integration/config/ess/config.base.ts index 4d622d08d6b411..ea8b375df7fc97 100644 --- a/x-pack/test/security_solution_api_integration/config/ess/config.base.ts +++ b/x-pack/test/security_solution_api_integration/config/ess/config.base.ts @@ -79,6 +79,7 @@ export function createTestConfig(options: CreateTestConfigOptions, testFiles?: s '--xpack.ruleRegistry.unsafe.indexUpgrade.enabled=true', '--xpack.ruleRegistry.unsafe.legacyMultiTenancy.enabled=true', `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', 'previewTelemetryUrlEnabled', 'riskScoringPersistence', 'riskScoringRoutesEnabled', diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/configs/serverless.config.ts index 137ee1f67b9b3b..9c7a64ed00c893 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/configs/serverless.config.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/configs/serverless.config.ts @@ -17,5 +17,8 @@ export default createTestConfig({ 'testing_ignored.constant', '/testing_regex*/', ])}`, // See tests within the file "ignore_fields.ts" which use these values in "alertIgnoreFields" + `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', + ])}`, ], }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/eql.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/eql.ts index 19b3943fd33b2a..2b7912cc611afe 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/eql.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/eql.ts @@ -33,7 +33,7 @@ import { getMaxSignalsWarning as getMaxAlertsWarning } from '@kbn/security-solut import { ENABLE_ASSET_CRITICALITY_SETTING } from '@kbn/security-solution-plugin/common/constants'; import { getEqlRuleForAlertTesting, - getOpenAlerts, + getAlerts, getPreviewAlerts, previewRule, dataGeneratorFactory, @@ -98,7 +98,7 @@ export default ({ getService }: FtrProviderContext) => { query: specificQueryForTests, }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).eql(1); const fullAlert = alerts.hits.hits[0]._source; if (!fullAlert) { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/esql.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/esql.ts index c3267aadb234b7..7fd34aff676903 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/esql.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/esql.ts @@ -17,7 +17,7 @@ import { ENABLE_ASSET_CRITICALITY_SETTING } from '@kbn/security-solution-plugin/ import { getPreviewAlerts, previewRule, - getOpenAlerts, + getAlerts, dataGeneratorFactory, previewRuleWithExceptionEntries, removeRandomValuedPropertiesFromAlert, @@ -83,7 +83,7 @@ export default ({ getService }: FtrProviderContext) => { }); const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).toBe(1); expect(removeRandomValuedPropertiesFromAlert(alerts.hits.hits[0]._source)).toEqual({ @@ -786,7 +786,7 @@ export default ({ getService }: FtrProviderContext) => { const createdRule = await createRule(supertest, log, rule); // first rule run should generate 100 alerts from first 3 batches of index documents - const alertsResponseFromFirstRuleExecution = await getOpenAlerts( + const alertsResponseFromFirstRuleExecution = await getAlerts( supertest, log, es, @@ -811,7 +811,7 @@ export default ({ getService }: FtrProviderContext) => { enabled: true, }); - const alertsResponse = await getOpenAlerts( + const alertsResponse = await getAlerts( supertest, log, es, diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/index.ts index 31c9b648e9cd35..7190ad93eeacb3 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/index.ts @@ -13,6 +13,7 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./esql')); loadTestFile(require.resolve('./machine_learning')); loadTestFile(require.resolve('./new_terms')); + loadTestFile(require.resolve('./new_terms_alert_suppression')); loadTestFile(require.resolve('./saved_query')); loadTestFile(require.resolve('./threat_match')); loadTestFile(require.resolve('./threat_match_alert_suppression')); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/machine_learning.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/machine_learning.ts index c02f92f1703db2..157228fe53c10c 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/machine_learning.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/machine_learning.ts @@ -37,7 +37,7 @@ import { import { executeSetupModuleRequest, forceStartDatafeeds, - getOpenAlerts, + getAlerts, getPreviewAlerts, previewRule, previewRuleWithExceptionEntries, @@ -96,7 +96,7 @@ export default ({ getService }: FtrProviderContext) => { // First test creates a real rule - remaining tests use preview API it('should create 1 alert from ML rule when record meets anomaly_threshold', async () => { const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).toBe(1); const alert = alerts.hits.hits[0]; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms.ts index 871bcbcfd01afa..f87595c0d7bb4d 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms.ts @@ -15,7 +15,7 @@ import { getCreateNewTermsRulesSchemaMock } from '@kbn/security-solution-plugin/ import { getMaxSignalsWarning as getMaxAlertsWarning } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_types/utils/utils'; import { ENABLE_ASSET_CRITICALITY_SETTING } from '@kbn/security-solution-plugin/common/constants'; import { - getOpenAlerts, + getAlerts, getPreviewAlerts, previewRule, dataGeneratorFactory, @@ -108,7 +108,7 @@ export default ({ getService }: FtrProviderContext) => { }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).eql(1); expect(removeRandomValuedPropertiesFromAlert(alerts.hits.hits[0]._source)).eql({ diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms_alert_suppression.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms_alert_suppression.ts new file mode 100644 index 00000000000000..654781617f0977 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/new_terms_alert_suppression.ts @@ -0,0 +1,2230 @@ +/* + * 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. + */ + +import { v4 as uuidv4 } from 'uuid'; +import expect from 'expect'; + +import { + ALERT_SUPPRESSION_START, + ALERT_SUPPRESSION_END, + ALERT_SUPPRESSION_DOCS_COUNT, + ALERT_SUPPRESSION_TERMS, + ALERT_LAST_DETECTED, + TIMESTAMP, + ALERT_START, +} from '@kbn/rule-data-utils'; +import { ENABLE_ASSET_CRITICALITY_SETTING } from '@kbn/security-solution-plugin/common/constants'; +import { getSuppressionMaxSignalsWarning as getSuppressionMaxAlertsWarning } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_types/utils/utils'; +import { getCreateNewTermsRulesSchemaMock } from '@kbn/security-solution-plugin/common/api/detection_engine/model/rule_schema/mocks'; +import { NewTermsRuleCreateProps } from '@kbn/security-solution-plugin/common/api/detection_engine'; + +import { DETECTION_ENGINE_SIGNALS_STATUS_URL as DETECTION_ENGINE_ALERTS_STATUS_URL } from '@kbn/security-solution-plugin/common/constants'; + +import { RuleExecutionStatusEnum } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_monitoring'; + +import { ALERT_ORIGINAL_TIME } from '@kbn/security-solution-plugin/common/field_maps/field_names'; +import { createRule } from '../../../../../../../common/utils/security_solution'; +import { + getOpenAlerts, + getPreviewAlerts, + previewRule, + previewRuleWithExceptionEntries, + patchRule, + setAlertStatus, + dataGeneratorFactory, +} from '../../../../utils'; +import { FtrProviderContext } from '../../../../../../ftr_provider_context'; +import { deleteAllExceptions } from '../../../../../lists_and_exception_lists/utils'; +import { EsArchivePathBuilder } from '../../../../../../es_archive_path_builder'; + +export default ({ getService }: FtrProviderContext) => { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const es = getService('es'); + const log = getService('log'); + + const { indexListOfDocuments, indexGeneratedDocuments } = dataGeneratorFactory({ + es, + index: 'ecs_compliant', + log, + }); + + const historicalWindowStart = '2019-10-13T05:00:04.000Z'; + + describe('@ess @serverless New terms type rules, alert suppression', () => { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + it('should suppress an alert during real rule executions', async () => { + const id = uuidv4(); + const firstTimestamp = new Date().toISOString(); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + from: 'now-35m', + interval: '30m', + query: `id: "${id}"`, + }; + + const historicalDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + { + host: { name: 'host-0', ip: '127.0.0.2' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + + const firstExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + { + host: { name: 'host-0', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + { + host: { name: 'host-0', ip: '127.0.0.4' }, + id, + '@timestamp': firstTimestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const createdRule = await createRule(supertest, log, rule); + const alerts = await getOpenAlerts(supertest, log, es, createdRule); + expect(alerts.hits.hits.length).toEqual(1); + + expect(alerts.hits.hits[0]._source).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-0'], + }, + ], + // suppression boundaries equal to original event time, since no alert been suppressed + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: firstTimestamp, + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }) + ); + + const secondTimestamp = new Date().toISOString(); + const secondExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.5' }, + id, + '@timestamp': secondTimestamp, + }, + ]; + // Add a new document, then disable and re-enable to trigger another rule run. The second doc should + // trigger an update to the existing alert without changing the timestamp + await indexListOfDocuments(secondExecutionDocuments); + + await patchRule(supertest, log, { id: createdRule.id, enabled: false }); + await patchRule(supertest, log, { id: createdRule.id, enabled: true }); + const afterTimestamp = new Date(); + const secondAlerts = await getOpenAlerts( + supertest, + log, + es, + createdRule, + RuleExecutionStatusEnum.succeeded, + undefined, + afterTimestamp + ); + expect(secondAlerts.hits.hits.length).toEqual(1); + expect(secondAlerts.hits.hits[0]._source).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-0'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, // timestamp is the same + [ALERT_SUPPRESSION_START]: firstTimestamp, // suppression start is the same + [ALERT_SUPPRESSION_END]: secondTimestamp, // suppression end is updated + [ALERT_SUPPRESSION_DOCS_COUNT]: 2, // 2 alerts from second rule run, that's why 2 suppressed + }) + ); + }); + + it('should NOT suppress and update an alert if the alert is closed', async () => { + const id = uuidv4(); + const firstTimestamp = new Date().toISOString(); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock(id, true), + new_terms_fields: ['host.ip'], + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + from: 'now-35m', + interval: '30m', + query: `id: "${id}"`, + }; + + const historicalDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + { + host: { name: 'host-0', ip: '127.0.0.2' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + + const firstExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const createdRule = await createRule(supertest, log, rule); + const alerts = await getOpenAlerts(supertest, log, es, createdRule); + expect(alerts.hits.hits).toHaveLength(1); + // Close the alert. Subsequent rule executions should ignore this closed alert + // for suppression purposes. + const alertIds = alerts.hits.hits.map((alert) => alert._id); + await supertest + .post(DETECTION_ENGINE_ALERTS_STATUS_URL) + .set('kbn-xsrf', 'true') + .send(setAlertStatus({ alertIds, status: 'closed' })) + .expect(200); + + const secondTimestamp = new Date().toISOString(); + const secondExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.5' }, + id, + '@timestamp': secondTimestamp, + }, + ]; + // Add new documents, then disable and re-enable to trigger another rule run. The second doc should + // trigger a new alert since the first one is now closed. + await indexListOfDocuments(secondExecutionDocuments); + + await patchRule(supertest, log, { id: createdRule.id, enabled: false }); + await patchRule(supertest, log, { id: createdRule.id, enabled: true }); + const afterTimestamp = new Date(); + const secondAlerts = await getOpenAlerts( + supertest, + log, + es, + createdRule, + RuleExecutionStatusEnum.succeeded, + undefined, + afterTimestamp + ); + expect(secondAlerts.hits.hits.length).toEqual(1); + expect(alerts.hits.hits[0]._source).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-0'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + }) + ); + }); + + it('should NOT suppress alerts when suppression period is less than rule interval', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:15:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.5' }, + id, + '@timestamp': secondTimestamp, + }, + ]; + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 20, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + from: 'now-35m', + interval: '30m', + query: `id: "${id}"`, + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: [ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toBe(2); + expect(previewAlerts[0]._source).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-0'], + }, + ], + [TIMESTAMP]: '2020-10-28T06:00:00.000Z', + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: firstTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + }) + ); + + expect(previewAlerts[1]._source).toEqual( + expect.objectContaining({ + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-0'], + }, + ], + [TIMESTAMP]: '2020-10-28T06:30:00.000Z', + [ALERT_SUPPRESSION_START]: secondTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + }) + ); + }); + + it('should suppress alerts in the time window that covers 3 rule executions', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:15:00.000Z'; + const thirdTimestamp = '2020-10-28T06:45:00.000Z'; + const historicalDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + { + host: { name: 'host-0', ip: '127.0.0.4' }, + id, + '@timestamp': firstTimestamp, + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.5' }, + id, + '@timestamp': secondTimestamp, + }, + ]; + const thirdExecutionDocuments = [ + { + host: { name: 'host-0', ip: '127.0.0.7' }, + id, + '@timestamp': thirdTimestamp, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ...thirdExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 2, + unit: 'h', + }, + missing_fields_strategy: 'suppress', + }, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + from: 'now-35m', + interval: '30m', + query: `id: "${id}"`, + }; + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 3, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: [ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-0'], + }, + ], + [TIMESTAMP]: '2020-10-28T06:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', // Note: ALERT_LAST_DETECTED gets updated, timestamp does not + [ALERT_START]: '2020-10-28T06:00:00.000Z', + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: thirdTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 3, // in total 3 alert got suppressed: 1 from the first run, 1 from the second, 1 from the third + }); + }); + + it('should suppress the correct alerts based on multi values group_by', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:15:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + 'agent.version': 1, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + 'agent.version': 1, + }, + { + host: { name: 'host-a', ip: '127.0.0.4' }, + id, + '@timestamp': firstTimestamp, + 'agent.version': 2, + }, + { + host: { name: 'host-b', ip: '127.0.0.1' }, + id, + '@timestamp': firstTimestamp, + 'agent.version': 2, + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.10' }, + id, + '@timestamp': secondTimestamp, + 'agent.version': 1, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + alert_suppression: { + group_by: ['host.name', 'agent.version'], + duration: { + value: 2, + unit: 'h', + }, + missing_fields_strategy: 'suppress', + }, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + from: 'now-35m', + interval: '30m', + query: `id: "${id}"`, + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', 'agent.version', ALERT_ORIGINAL_TIME], + }); + // 3 alerts should be generated: + // 1. for pair 'host-a', 1 - suppressed + // 2. for pair 'host-a', 2 - not suppressed + expect(previewAlerts.length).toEqual(2); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + { + field: 'agent.version', + value: ['1'], + }, + ], + [TIMESTAMP]: '2020-10-28T06:00:00.000Z', + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + expect(previewAlerts[1]._source).toEqual({ + ...previewAlerts[1]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + { + field: 'agent.version', + value: ['2'], + }, + ], + [TIMESTAMP]: '2020-10-28T06:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T06:00:00.000Z', + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: firstTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, // no suppressed alerts + }); + }); + + it('should correctly suppress when using a timestamp override', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const docWithoutOverride = { + id, + '@timestamp': firstTimestamp, + host: { name: 'host-a', ip: '127.0.0.2' }, + event: { + ingested: firstTimestamp, + }, + }; + const docWithOverride = { + ...docWithoutOverride, + host: { name: 'host-a', ip: '127.0.0.3' }, + // This simulates a very late arriving doc + '@timestamp': '2020-10-28T03:00:00.000Z', + event: { + ingested: secondTimestamp, + }, + }; + + await indexListOfDocuments([...historicalDocuments, docWithoutOverride, docWithOverride]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 2, + unit: 'h', + }, + missing_fields_strategy: 'suppress', + }, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + from: 'now-35m', + interval: '30m', + query: `id: "${id}"`, + timestamp_override: 'event.ingested', + }; + + // 1 alert should be suppressed, based on event.ingested value of a document + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', ALERT_ORIGINAL_TIME], + }); + + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + }); + + it('should deduplicate multiple alerts while suppressing new ones', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + 'agent.version': 1, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.4' }, + id, + '@timestamp': firstTimestamp, + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.5' }, + id, + '@timestamp': secondTimestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.6' }, + id, + '@timestamp': secondTimestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.7' }, + id, + '@timestamp': secondTimestamp, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + // large look-back time covers all docs + from: 'now-1h', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 4, + }); + }); + + it('should suppress alerts with missing fields', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + 'agent.version': 1, + id, + '@timestamp': historicalWindowStart, + }, + ]; + + const firstExecutionDocuments = [ + { + id, + '@timestamp': firstTimestamp, + host: { name: 'host-a', ip: '127.0.0.3' }, + }, + { + id, + '@timestamp': firstTimestamp, + host: { name: 'host-a', ip: '127.0.0.4' }, + }, + { + id, + '@timestamp': firstTimestamp, + host: { ip: '127.0.0.5' }, // doc 1 with missing host.name field + }, + { + id, + '@timestamp': firstTimestamp, + host: { ip: '127.0.0.6' }, // doc 2 with missing host.name field + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.10' }, + id, + '@timestamp': secondTimestamp, + }, + { + host: { ip: '127.0.0.11' }, // doc 3 with missing host.name field + id, + '@timestamp': secondTimestamp, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(2); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 2, + }); + + expect(previewAlerts[1]._source).toEqual({ + ...previewAlerts[1]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: null, + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 2, + }); + }); + + it('should not suppress alerts with missing fields if configured so', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + 'agent.version': 1, + id, + '@timestamp': historicalWindowStart, + }, + ]; + + const firstExecutionDocuments = [ + { + id, + '@timestamp': firstTimestamp, + host: { name: 'host-a', ip: '127.0.0.3' }, + }, + { + id, + '@timestamp': firstTimestamp, + host: { name: 'host-a', ip: '127.0.0.4' }, + }, + { + id, + '@timestamp': firstTimestamp, + host: { ip: '127.0.0.5' }, // doc 1 with missing host.name field + }, + { + id, + '@timestamp': firstTimestamp, + host: { ip: '127.0.0.6' }, // doc 2 with missing host.name field + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.10' }, + id, + '@timestamp': secondTimestamp, + }, + { + host: { ip: '127.0.0.11' }, // doc 3 with missing host.name field + id, + '@timestamp': secondTimestamp, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'doNotSuppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(4); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 2, + }); + + // rest of alerts are not suppressed and do not have suppress properties + previewAlerts.slice(1).forEach((previewAlert) => { + const source = previewAlert._source; + expect(source).toHaveProperty('id', id); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_DOCS_COUNT); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_END); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_TERMS); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_DOCS_COUNT); + }); + }); + + it('should suppress alerts for multiple new terms', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + { + host: { name: 'host-a', ip: '127.0.0.2' }, + id, + '@timestamp': historicalWindowStart, + }, + { + host: { name: 'host-b', ip: '127.0.0.3' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.11' }, // new entrance of host.ip + id, + '@timestamp': firstTimestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.2' }, + id, + '@timestamp': firstTimestamp, + }, + { + host: { name: 'host-b', ip: '127.0.0.1' }, // new combination of existing values + id, + '@timestamp': firstTimestamp, + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.20' }, // new entrance of host.ip + id, + '@timestamp': secondTimestamp, + }, + { + host: { name: 'host-c', ip: '127.0.0.1' }, // new entrance of host.name + id, + '@timestamp': secondTimestamp, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name', 'host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + // large look-back time covers all docs + from: 'now-1h', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', 'host.ip', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(3); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + 'kibana.alert.new_terms': ['host-a', '127.0.0.11'], + }); + expect(previewAlerts[1]._source).toEqual({ + ...previewAlerts[1]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-b'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: firstTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + 'kibana.alert.new_terms': ['host-b', '127.0.0.1'], + }); + + expect(previewAlerts[2]._source).toEqual({ + ...previewAlerts[2]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-c'], + }, + ], + [ALERT_ORIGINAL_TIME]: secondTimestamp, + [ALERT_SUPPRESSION_START]: secondTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + 'kibana.alert.new_terms': ['host-c', '127.0.0.1'], + }); + }); + + describe('rule execution only', () => { + it('should suppress alerts during rule execution only', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + const laterTimestamp = '2020-10-28T06:50:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.4' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.5' }, + id, + '@timestamp': laterTimestamp, + }, + // does not generate alert + { + host: { name: 'host-a', ip: '127.0.0.1' }, + id, + '@timestamp': laterTimestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: [ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [TIMESTAMP]: '2020-10-28T07:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', + [ALERT_ORIGINAL_TIME]: timestamp, + [ALERT_SUPPRESSION_START]: timestamp, + [ALERT_SUPPRESSION_END]: laterTimestamp, // suppression ends with later timestamp + [ALERT_SUPPRESSION_DOCS_COUNT]: 2, + }); + }); + + it('should suppress alerts during rule execution only for array field', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + + const historicalDocuments = [ + { + host: { name: ['host-a', 'host-b'], ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: ['host-a', 'host-b'], ip: '127.0.0.3' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: ['host-a', 'host-b'], ip: '127.0.0.4' }, + id, + '@timestamp': timestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: [ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a', 'host-b'], + }, + ], + [TIMESTAMP]: '2020-10-28T07:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', + [ALERT_ORIGINAL_TIME]: timestamp, + [ALERT_SUPPRESSION_START]: timestamp, + [ALERT_SUPPRESSION_END]: timestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + }); + + it('should suppress alerts with missing fields during rule execution only for multiple suppress by fields', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + agent: { name: 'agent-a', version: 10 }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + // no missing fields + { + host: { name: 'host-a', ip: '127.0.0.11' }, + agent: { name: 'agent-a', version: 10 }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.12' }, + agent: { name: 'agent-a', version: 10 }, + id, + '@timestamp': timestamp, + }, + // missing agent.name + { + host: { name: 'host-a', ip: '127.0.0.21' }, + agent: { version: 10 }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.22' }, + agent: { version: 10 }, + id, + '@timestamp': timestamp, + }, + // missing agent.version + { + host: { name: 'host-a', ip: '127.0.0.31' }, + agent: { name: 'agent-a' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.32' }, + agent: { name: 'agent-a' }, + id, + '@timestamp': timestamp, + }, + // missing both agent.* + { + host: { name: 'host-a', ip: '127.0.0.41' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.42' }, + id, + '@timestamp': timestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name', 'agent.version'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['agent.name', 'agent.version', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(4); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-a'], + }, + { + field: 'agent.version', + value: ['10'], + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + + expect(previewAlerts[1]._source).toEqual({ + ...previewAlerts[1]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-a'], + }, + { + field: 'agent.version', + value: null, + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + + expect(previewAlerts[2]._source).toEqual({ + ...previewAlerts[2]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: null, + }, + { + field: 'agent.version', + value: ['10'], + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + + expect(previewAlerts[3]._source).toEqual({ + ...previewAlerts[3]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: null, + }, + { + field: 'agent.version', + value: null, + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + }); + + it('should suppress alerts with missing fields during rule execution only', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + agent: { name: 'agent-1' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.4' }, + agent: { name: 'agent-1' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.5' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.6' }, + id, + '@timestamp': timestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['agent.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(2); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-1'], + }, + ], + [TIMESTAMP]: '2020-10-28T07:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', + [ALERT_ORIGINAL_TIME]: timestamp, + [ALERT_SUPPRESSION_START]: timestamp, + [ALERT_SUPPRESSION_END]: timestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + + expect(previewAlerts[1]._source).toEqual({ + ...previewAlerts[1]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: null, + }, + ], + [TIMESTAMP]: '2020-10-28T07:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', + [ALERT_ORIGINAL_TIME]: timestamp, + [ALERT_SUPPRESSION_START]: timestamp, + [ALERT_SUPPRESSION_END]: timestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + }); + + it('should not suppress alerts with missing fields during rule execution only if configured so', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + agent: { name: 'agent-1' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.4' }, + agent: { name: 'agent-1' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.5' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.6' }, + id, + '@timestamp': timestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name'], + missing_fields_strategy: 'doNotSuppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['agent.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(3); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-1'], + }, + ], + [TIMESTAMP]: '2020-10-28T07:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', + [ALERT_ORIGINAL_TIME]: timestamp, + [ALERT_SUPPRESSION_START]: timestamp, + [ALERT_SUPPRESSION_END]: timestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + + // rest of alerts are not suppressed and do not have suppress properties + previewAlerts.slice(1).forEach((previewAlert) => { + const source = previewAlert._source; + expect(source).toHaveProperty('id', id); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_DOCS_COUNT); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_END); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_TERMS); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_DOCS_COUNT); + }); + }); + + it('should not suppress alerts with missing fields during rule execution only if configured so for multiple suppress by fields', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + agent: { name: 'agent-a', version: 10 }, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + // no missing fields + { + host: { name: 'host-a', ip: '127.0.0.11' }, + agent: { name: 'agent-a', version: 10 }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.12' }, + agent: { name: 'agent-a', version: 10 }, + id, + '@timestamp': timestamp, + }, + // missing agent.name + { + host: { name: 'host-a', ip: '127.0.0.21' }, + agent: { version: 10 }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.22' }, + agent: { version: 10 }, + id, + '@timestamp': timestamp, + }, + // missing agent.version + { + host: { name: 'host-a', ip: '127.0.0.31' }, + agent: { name: 'agent-a' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.32' }, + agent: { name: 'agent-a' }, + id, + '@timestamp': timestamp, + }, + // missing both agent.* + { + host: { name: 'host-a', ip: '127.0.0.41' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.42' }, + id, + '@timestamp': timestamp, + }, + ]; + + await indexListOfDocuments([...historicalDocuments, ...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name', 'agent.version'], + missing_fields_strategy: 'doNotSuppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['agent.name', 'agent.version', ALERT_ORIGINAL_TIME], + }); + // from 8 injected, only one should be suppressed + expect(previewAlerts.length).toEqual(7); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-a'], + }, + { + field: 'agent.version', + value: ['10'], + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + + // rest of alerts are not suppressed and do not have suppress properties + previewAlerts.slice(1).forEach((previewAlert) => { + const source = previewAlert._source; + expect(source).toHaveProperty('id', id); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_DOCS_COUNT); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_END); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_TERMS); + expect(source).not.toHaveProperty(ALERT_SUPPRESSION_DOCS_COUNT); + }); + }); + + it('should deduplicate single alert while suppressing new ones on rule execution', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T05:45:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + const historicalDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.1' }, + 'agent.version': 1, + id, + '@timestamp': historicalWindowStart, + }, + ]; + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + id, + '@timestamp': firstTimestamp, + }, + ]; + const secondExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.5' }, + id, + '@timestamp': secondTimestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.6' }, + id, + '@timestamp': secondTimestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.7' }, + id, + '@timestamp': secondTimestamp, + }, + ]; + + await indexListOfDocuments([ + ...historicalDocuments, + ...firstExecutionDocuments, + ...secondExecutionDocuments, + ]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + missing_fields_strategy: 'suppress', + }, + // large look-back time covers all docs + from: 'now-1h', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 2, + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['host.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(2); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: firstTimestamp, + [ALERT_SUPPRESSION_START]: firstTimestamp, + [ALERT_SUPPRESSION_END]: firstTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 0, + }); + expect(previewAlerts[1]._source).toEqual({ + ...previewAlerts[1]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [ALERT_ORIGINAL_TIME]: secondTimestamp, + [ALERT_SUPPRESSION_START]: secondTimestamp, + [ALERT_SUPPRESSION_END]: secondTimestamp, + [ALERT_SUPPRESSION_DOCS_COUNT]: 2, + }); + }); + + it('should not suppress more than limited number 500 (max_signals * 5) for single new terms field', async () => { + const id = uuidv4(); + + await indexGeneratedDocuments({ + docsCount: 12000, + seed: (index) => ({ + id, + '@timestamp': `2020-10-28T06:50:00.${index}Z`, + host: { + name: `host-${index}`, + }, + agent: { name: 'agent-a' }, + }), + }); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId, logs } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + + expect(logs[0].warnings).toEqual( + expect.arrayContaining([getSuppressionMaxAlertsWarning()]) + ); + + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['agent.name', ALERT_ORIGINAL_TIME], + size: 1000, + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-a'], + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 499, + }); + }); + + it('should not suppress more than limited number 500 (max_signals * 5) for multiple new terms field', async () => { + const id = uuidv4(); + + await indexGeneratedDocuments({ + docsCount: 12000, + seed: (index) => ({ + id, + '@timestamp': `2020-10-28T06:50:00.${index}Z`, + host: { + name: `host-${index}`, + }, + agent: { name: 'agent-a' }, + }), + }); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name', 'agent.name'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId, logs } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + invocationCount: 1, + }); + + expect(logs[0].warnings).toEqual( + expect.arrayContaining([getSuppressionMaxAlertsWarning()]) + ); + + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: ['agent.name', ALERT_ORIGINAL_TIME], + size: 1000, + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'agent.name', + value: ['agent-a'], + }, + ], + [ALERT_SUPPRESSION_DOCS_COUNT]: 499, + }); + }); + + it('should generate up to max_signals alerts for single new terms field', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T06:05:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + + await Promise.all( + [firstTimestamp, secondTimestamp].map((t) => + indexGeneratedDocuments({ + docsCount: 20000, + seed: (index) => ({ + id, + '@timestamp': t, + host: { + name: `host-${index}`, + }, + 'agent.name': `agent-${index % 10000}`, + }), + }) + ) + ); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId, logs } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 1, + }); + expect(logs[0].warnings).toEqual( + expect.arrayContaining([getSuppressionMaxAlertsWarning()]) + ); + + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + size: 1000, + sort: ['agent.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(100); + }); + + it('should generate up to max_signals alerts for multiple new terms fields', async () => { + const id = uuidv4(); + const firstTimestamp = '2020-10-28T06:05:00.000Z'; + const secondTimestamp = '2020-10-28T06:10:00.000Z'; + + await Promise.all( + [firstTimestamp, secondTimestamp].map((t) => + indexGeneratedDocuments({ + docsCount: 20000, + seed: (index) => ({ + id, + '@timestamp': t, + host: { + name: `host-${index}`, + }, + 'agent.name': `agent-${index % 10000}`, + }), + }) + ) + ); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name', 'agent.name'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['agent.name'], + duration: { + value: 300, + unit: 'm', + }, + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId, logs } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T06:30:00.000Z'), + invocationCount: 1, + }); + expect(logs[0].warnings).toEqual( + expect.arrayContaining([getSuppressionMaxAlertsWarning()]) + ); + + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + size: 1000, + sort: ['agent.name', ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(100); + }); + }); + + describe('with exceptions', () => { + beforeEach(async () => { + await deleteAllExceptions(supertest, log); + }); + + it('should apply exceptions when suppression configured during rule execution only', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + const laterTimestamp = '2020-10-28T06:50:00.000Z'; + + const firstExecutionDocuments = [ + { + host: { name: 'host-a', ip: '127.0.0.3' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.4' }, + id, + '@timestamp': timestamp, + }, + { + host: { name: 'host-a', ip: '127.0.0.5' }, + id, + '@timestamp': laterTimestamp, + }, + ]; + + await indexListOfDocuments([...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.ip'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRuleWithExceptionEntries({ + supertest, + rule, + log, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + entries: [ + [ + { + field: 'host.ip', + operator: 'included', + type: 'match', + value: '127.0.0.4', + }, + ], + ], + }); + const previewAlerts = await getPreviewAlerts({ + es, + previewId, + sort: [ALERT_ORIGINAL_TIME], + }); + expect(previewAlerts.length).toEqual(1); + expect(previewAlerts[0]._source).toEqual({ + ...previewAlerts[0]._source, + [ALERT_SUPPRESSION_TERMS]: [ + { + field: 'host.name', + value: ['host-a'], + }, + ], + [TIMESTAMP]: '2020-10-28T07:00:00.000Z', + [ALERT_LAST_DETECTED]: '2020-10-28T07:00:00.000Z', + [ALERT_ORIGINAL_TIME]: timestamp, + [ALERT_SUPPRESSION_START]: timestamp, + [ALERT_SUPPRESSION_END]: laterTimestamp, // suppression ends with later timestamp + [ALERT_SUPPRESSION_DOCS_COUNT]: 1, + }); + }); + }); + + describe('enrichment', () => { + const config = getService('config'); + const isServerless = config.get('serverless'); + const dataPathBuilder = new EsArchivePathBuilder(isServerless); + const path = dataPathBuilder.getPath('auditbeat/hosts'); + const kibanaServer = getService('kibanaServer'); + + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/entity/risks'); + await esArchiver.load(path); + await esArchiver.load('x-pack/test/functional/es_archives/asset_criticality'); + await kibanaServer.uiSettings.update({ + [ENABLE_ASSET_CRITICALITY_SETTING]: true, + }); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/entity/risks'); + await esArchiver.unload(path); + await esArchiver.unload('x-pack/test/functional/es_archives/asset_criticality'); + }); + + it('should be enriched with host risk score', async () => { + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name'], + from: '2019-02-19T20:42:00.000Z', + history_window_start: '2019-01-19T20:42:00.000Z', + alert_suppression: { + group_by: ['host.name'], + missing_fields_strategy: 'suppress', + }, + }; + + const { previewId } = await previewRule({ supertest, rule }); + const previewAlerts = await getPreviewAlerts({ es, previewId }); + + expect(previewAlerts[0]?._source?.host?.risk?.calculated_level).toBe('Low'); + expect(previewAlerts[0]?._source?.host?.risk?.calculated_score_norm).toBe(23); + }); + + it('should be enriched alert with criticality_level', async () => { + const id = uuidv4(); + const timestamp = '2020-10-28T06:45:00.000Z'; + + const firstExecutionDocuments = [ + { + host: { name: 'zeek-newyork-sha-aa8df15', ip: '127.0.0.5' }, + user: { name: 'root' }, + id, + '@timestamp': timestamp, + }, + ]; + + await indexListOfDocuments([...firstExecutionDocuments]); + + const rule: NewTermsRuleCreateProps = { + ...getCreateNewTermsRulesSchemaMock('rule-1', true), + new_terms_fields: ['host.name'], + query: `id: "${id}"`, + index: ['ecs_compliant'], + history_window_start: historicalWindowStart, + alert_suppression: { + group_by: ['host.name'], + missing_fields_strategy: 'suppress', + }, + from: 'now-35m', + interval: '30m', + }; + + const { previewId } = await previewRule({ + supertest, + rule, + timeframeEnd: new Date('2020-10-28T07:00:00.000Z'), + }); + const previewAlerts = await getPreviewAlerts({ es, previewId }); + const fullAlert = previewAlerts[0]._source; + + expect(fullAlert?.['host.asset.criticality']).toBe('medium_impact'); + expect(fullAlert?.['user.asset.criticality']).toBe('extreme_impact'); + }); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/query.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/query.ts index 57f5c0c536dc1c..4e09b5868204f8 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/query.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/query.ts @@ -51,7 +51,7 @@ import { deleteAllExceptions } from '../../../../../lists_and_exception_lists/ut import { createExceptionList, createExceptionListItem, - getOpenAlerts, + getAlerts, getPreviewAlerts, getSimpleRule, previewRule, @@ -127,7 +127,7 @@ export default ({ getService }: FtrProviderContext) => { query: `_id:${ID}`, }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).greaterThan(0); expect(alerts.hits.hits[0]._source?.['kibana.alert.ancestors'][0].id).eql(ID); }); @@ -811,7 +811,7 @@ export default ({ getService }: FtrProviderContext) => { }, }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).eql(1); expect(alerts.hits.hits[0]._source).to.eql({ ...alerts.hits.hits[0]._source, @@ -841,7 +841,7 @@ export default ({ getService }: FtrProviderContext) => { await patchRule(supertest, log, { id: createdRule.id, enabled: false }); await patchRule(supertest, log, { id: createdRule.id, enabled: true }); const afterTimestamp = new Date(); - const secondAlerts = await getOpenAlerts( + const secondAlerts = await getAlerts( supertest, log, es, @@ -892,7 +892,7 @@ export default ({ getService }: FtrProviderContext) => { }, }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); // Close the alert. Subsequent rule executions should ignore this closed alert // for suppression purposes. @@ -917,7 +917,7 @@ export default ({ getService }: FtrProviderContext) => { await patchRule(supertest, log, { id: createdRule.id, enabled: false }); await patchRule(supertest, log, { id: createdRule.id, enabled: true }); const afterTimestamp = new Date(); - const secondAlerts = await getOpenAlerts( + const secondAlerts = await getAlerts( supertest, log, es, @@ -2357,7 +2357,7 @@ export default ({ getService }: FtrProviderContext) => { .set('elastic-api-version', '2023-10-31') .expect(200); - const alertsAfterEnable = await getOpenAlerts(supertest, log, es, ruleBody, 'succeeded'); + const alertsAfterEnable = await getAlerts(supertest, log, es, ruleBody, 'succeeded'); expect(alertsAfterEnable.hits.hits.length > 0).eql(true); }); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/saved_query.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/saved_query.ts index c44a5cb5293aed..5afbee73fa7279 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/saved_query.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/saved_query.ts @@ -16,7 +16,7 @@ import { ALERT_ORIGINAL_TIME, ALERT_ORIGINAL_EVENT, } from '@kbn/security-solution-plugin/common/field_maps/field_names'; -import { getOpenAlerts } from '../../../../utils'; +import { getAlerts } from '../../../../utils'; import { createRule, deleteAllRules, @@ -63,7 +63,7 @@ export default ({ getService }: FtrProviderContext) => { saved_id: 'doesnt-exist', }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); const alert = alerts.hits.hits[0]._source; expect(alert).eql({ ...alert, diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match.ts index 2188bf589d8c8a..678750342f4ee2 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match.ts @@ -38,7 +38,7 @@ import { import { RuleExecutionStatusEnum } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_monitoring'; import { getMaxSignalsWarning as getMaxAlertsWarning } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_types/utils/utils'; import { ENABLE_ASSET_CRITICALITY_SETTING } from '@kbn/security-solution-plugin/common/constants'; -import { previewRule, getOpenAlerts, getPreviewAlerts } from '../../../../utils'; +import { previewRule, getAlerts, getPreviewAlerts } from '../../../../utils'; import { deleteAllAlerts, deleteAllRules, @@ -175,7 +175,7 @@ export default ({ getService }: FtrProviderContext) => { const rule: ThreatMatchRuleCreateProps = createThreatMatchRule(); const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts( + const alerts = await getAlerts( supertest, log, es, @@ -356,7 +356,7 @@ export default ({ getService }: FtrProviderContext) => { }); const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts( + const alerts = await getAlerts( supertest, log, es, @@ -558,7 +558,7 @@ export default ({ getService }: FtrProviderContext) => { const createdRuleTerm = await createRule(supertest, log, termRule); const createdRuleMatch = await createRule(supertest, log, matchRule); - const alertsTerm = await getOpenAlerts( + const alertsTerm = await getAlerts( supertest, log, es, @@ -566,7 +566,7 @@ export default ({ getService }: FtrProviderContext) => { RuleExecutionStatusEnum.succeeded, 100 ); - const alertsMatch = await getOpenAlerts( + const alertsMatch = await getAlerts( supertest, log, es, diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match_alert_suppression.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match_alert_suppression.ts index 194af2d2ea9799..dec39659ae2562 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match_alert_suppression.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threat_match_alert_suppression.ts @@ -334,8 +334,8 @@ export default ({ getService }: FtrProviderContext) => { const secondDocument = { id, '@timestamp': secondTimestamp, - agent: { - name: 'agent-1', + host: { + name: 'host-a', }, }; // Add new documents, then disable and re-enable to trigger another rule run. The second doc should diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold.ts index 34c059d10bd876..97f1bcaf50c001 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold.ts @@ -27,7 +27,7 @@ import { getMaxSignalsWarning as getMaxAlertsWarning } from '@kbn/security-solut import { ENABLE_ASSET_CRITICALITY_SETTING } from '@kbn/security-solution-plugin/common/constants'; import { createRule } from '../../../../../../../common/utils/security_solution'; import { - getOpenAlerts, + getAlerts, getPreviewAlerts, getThresholdRuleForAlertTesting, previewRule, @@ -66,7 +66,7 @@ export default ({ getService }: FtrProviderContext) => { }, }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).toEqual(1); const fullAlert = alerts.hits.hits[0]._source; if (!fullAlert) { @@ -332,7 +332,7 @@ export default ({ getService }: FtrProviderContext) => { }, }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).toEqual(1); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold_alert_suppression.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold_alert_suppression.ts index 29098b7daeffb8..9a5763e95c51c0 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold_alert_suppression.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/execution_logic/threshold_alert_suppression.ts @@ -25,7 +25,7 @@ import { RuleExecutionStatusEnum } from '@kbn/security-solution-plugin/common/ap import { ALERT_ORIGINAL_TIME } from '@kbn/security-solution-plugin/common/field_maps/field_names'; import { createRule } from '../../../../../../../common/utils/security_solution'; import { - getOpenAlerts, + getAlerts, getPreviewAlerts, getThresholdRuleForAlertTesting, previewRule, @@ -85,7 +85,7 @@ export default ({ getService }: FtrProviderContext) => { interval: '30m', }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); expect(alerts.hits.hits.length).toEqual(1); // suppression start equal to alert timestamp @@ -122,7 +122,7 @@ export default ({ getService }: FtrProviderContext) => { await patchRule(supertest, log, { id: createdRule.id, enabled: false }); await patchRule(supertest, log, { id: createdRule.id, enabled: true }); const afterTimestamp = new Date(); - const secondAlerts = await getOpenAlerts( + const secondAlerts = await getAlerts( supertest, log, es, @@ -177,7 +177,7 @@ export default ({ getService }: FtrProviderContext) => { interval: '30m', }; const createdRule = await createRule(supertest, log, rule); - const alerts = await getOpenAlerts(supertest, log, es, createdRule); + const alerts = await getAlerts(supertest, log, es, createdRule); // Close the alert. Subsequent rule executions should ignore this closed alert // for suppression purposes. @@ -202,7 +202,7 @@ export default ({ getService }: FtrProviderContext) => { await patchRule(supertest, log, { id: createdRule.id, enabled: false }); await patchRule(supertest, log, { id: createdRule.id, enabled: true }); const afterTimestamp = new Date(); - const secondAlerts = await getOpenAlerts( + const secondAlerts = await getAlerts( supertest, log, es, diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/timestamps.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/timestamps.ts index 6ae4964ece45b1..108066830c6368 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/timestamps.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/trial_license_complete_tier/timestamps.ts @@ -14,7 +14,7 @@ import { } from '@kbn/security-solution-plugin/common/api/detection_engine'; import { ALERT_ORIGINAL_TIME } from '@kbn/security-solution-plugin/common/field_maps/field_names'; -import { getOpenAlerts, getEqlRuleForAlertTesting } from '../../../utils'; +import { getAlerts, getEqlRuleForAlertTesting } from '../../../utils'; import { createAlertsIndex, deleteAllRules, @@ -251,7 +251,7 @@ export default ({ getService }: FtrProviderContext) => { }; const createdRule = await createRule(supertest, log, rule); - const alertsOpen = await getOpenAlerts( + const alertsOpen = await getAlerts( supertest, log, es, @@ -330,7 +330,7 @@ export default ({ getService }: FtrProviderContext) => { timestamp_override_fallback_disabled: true, }; const createdRule = await createRule(supertest, log, rule); - const alertsOpen = await getOpenAlerts( + const alertsOpen = await getAlerts( supertest, log, es, diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts.ts new file mode 100644 index 00000000000000..21d8233c8496b5 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_alerts.ts @@ -0,0 +1,48 @@ +/* + * 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. + */ + +import type SuperTest from 'supertest'; +import type { Client } from '@elastic/elasticsearch'; +import type { ToolingLog } from '@kbn/tooling-log'; +import { + RuleExecutionStatus, + RuleExecutionStatusEnum, +} from '@kbn/security-solution-plugin/common/api/detection_engine/rule_monitoring'; +import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine'; + +import { refreshIndex } from '..'; +import { getAlertsByIds, waitForRuleStatus } from '../../../../../common/utils/security_solution'; + +export type GetAlerts = ( + supertest: SuperTest.SuperTest, + log: ToolingLog, + es: Client, + rule: RuleResponse, + status?: RuleExecutionStatus, + size?: number, + afterDate?: Date +) => ReturnType; + +/** + * returns all alerts: opened and closed + */ +export const getAlerts: GetAlerts = async ( + supertest, + log, + es, + rule, + status = RuleExecutionStatusEnum.succeeded, + size, + afterDate +) => { + await waitForRuleStatus(status, { supertest, log, id: rule.id, afterDate }); + // Critically important that we wait for rule success AND refresh the write index in that order before we + // assert that no Alerts were created. Otherwise, Alerts could be written but not available to query yet + // when we search, causing tests that check that Alerts are NOT created to pass when they should fail. + await refreshIndex(es, '.alerts-security.alerts-default*'); + return getAlertsByIds(supertest, log, [rule.id], size); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_open_alerts.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_open_alerts.ts index 66370e6236bf92..3f5fdf44a192cd 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_open_alerts.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/get_open_alerts.ts @@ -5,31 +5,19 @@ * 2.0. */ -import type SuperTest from 'supertest'; -import type { Client } from '@elastic/elasticsearch'; -import type { ToolingLog } from '@kbn/tooling-log'; -import { - RuleExecutionStatus, - RuleExecutionStatusEnum, -} from '@kbn/security-solution-plugin/common/api/detection_engine/rule_monitoring'; -import type { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine'; +import { ALERT_WORKFLOW_STATUS } from '@kbn/rule-data-utils'; +import { getAlerts } from './get_alerts'; +import type { GetAlerts } from './get_alerts'; -import { refreshIndex } from '..'; -import { getAlertsByIds, waitForRuleStatus } from '../../../../../common/utils/security_solution'; +/** + * returns only alerts with open status + */ +export const getOpenAlerts: GetAlerts = async (...args) => { + const alerts = await getAlerts(...args); + + alerts.hits.hits = alerts.hits.hits.filter( + (alert) => alert?._source?.[ALERT_WORKFLOW_STATUS] === 'open' + ); -export const getOpenAlerts = async ( - supertest: SuperTest.SuperTest, - log: ToolingLog, - es: Client, - rule: RuleResponse, - status: RuleExecutionStatus = RuleExecutionStatusEnum.succeeded, - size?: number, - afterDate?: Date -) => { - await waitForRuleStatus(status, { supertest, log, id: rule.id, afterDate }); - // Critically important that we wait for rule success AND refresh the write index in that order before we - // assert that no Alerts were created. Otherwise, Alerts could be written but not available to query yet - // when we search, causing tests that check that Alerts are NOT created to pass when they should fail. - await refreshIndex(es, '.alerts-security.alerts-default*'); - return getAlertsByIds(supertest, log, [rule.id], size); + return alerts; }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/index.ts index 2dba313d1bbcfb..1633b5c67f7a41 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/alerts/index.ts @@ -7,6 +7,7 @@ export * from './wait_for_alert_to_complete'; export * from './wait_for_alert_to_complete'; +export * from './get_alerts'; export * from './get_open_alerts'; export * from './remove_random_valued_properties_from_alert'; export * from './set_alert_status'; diff --git a/x-pack/test/security_solution_cypress/config.ts b/x-pack/test/security_solution_cypress/config.ts index fb34362f7fb9b5..364327bf83b069 100644 --- a/x-pack/test/security_solution_cypress/config.ts +++ b/x-pack/test/security_solution_cypress/config.ts @@ -45,6 +45,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.alerting.rules.minimumScheduleInterval.value=1s', '--xpack.ruleRegistry.unsafe.legacyMultiTenancy.enabled=true', `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', 'chartEmbeddablesEnabled', ])}`, // mock cloud to enable the guided onboarding tour in e2e tests diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_suppression_serverless_essentials.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_suppression_serverless_essentials.cy.ts new file mode 100644 index 00000000000000..a1aae6c8d7b49e --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_suppression_serverless_essentials.cy.ts @@ -0,0 +1,60 @@ +/* + * 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. + */ + +import { + selectThresholdRuleType, + selectIndicatorMatchType, + selectNewTermsRuleType, +} from '../../../../tasks/create_new_rule'; +import { login } from '../../../../tasks/login'; +import { visit } from '../../../../tasks/navigation'; +import { + ALERT_SUPPRESSION_FIELDS_INPUT, + THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX, +} from '../../../../screens/create_new_rule'; +import { CREATE_RULE_URL } from '../../../../urls/navigation'; + +describe( + 'Detection rules, Alert Suppression for Essentials tier', + { + tags: ['@serverless'], + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + ], + // alertSuppressionForNewTermsRuleEnabled feature flag is also enabled in a global config + kbnServerArgs: [ + `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', + ])}`, + ], + }, + }, + }, + () => { + beforeEach(() => { + login(); + visit(CREATE_RULE_URL); + }); + + it('Alert suppression is enabled for essentials tier for rule types that support it', () => { + // default custom query rule + cy.get(ALERT_SUPPRESSION_FIELDS_INPUT).should('be.enabled'); + + selectIndicatorMatchType(); + cy.get(ALERT_SUPPRESSION_FIELDS_INPUT).should('be.enabled'); + + selectNewTermsRuleType(); + cy.get(ALERT_SUPPRESSION_FIELDS_INPUT).should('be.enabled'); + + selectThresholdRuleType(); + cy.get(THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX).should('be.enabled'); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_supression_ess_basic.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_supression_ess_basic.cy.ts new file mode 100644 index 00000000000000..fbcc43e4652ae0 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows_supression_ess_basic.cy.ts @@ -0,0 +1,62 @@ +/* + * 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. + */ + +import { + THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX, + ALERT_SUPPRESSION_DURATION_INPUT, +} from '../../../../screens/create_new_rule'; + +import { + selectIndicatorMatchType, + selectNewTermsRuleType, + selectThresholdRuleType, + openSuppressionFieldsTooltipAndCheckLicense, +} from '../../../../tasks/create_new_rule'; +import { startBasicLicense } from '../../../../tasks/api_calls/licensing'; +import { login } from '../../../../tasks/login'; +import { visit } from '../../../../tasks/navigation'; +import { CREATE_RULE_URL } from '../../../../urls/navigation'; +import { TOOLTIP } from '../../../../screens/common'; + +import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; + +describe( + 'Detection rules, Common flows Alert Suppression', + { + tags: ['@ess'], + }, + () => { + describe('Create rule form', () => { + beforeEach(() => { + deleteAlertsAndRules(); + login(); + visit(CREATE_RULE_URL); + startBasicLicense(); + }); + + it('can not create rule with rule execution suppression on basic license for all rules with enabled suppression', () => { + // Default query rule + openSuppressionFieldsTooltipAndCheckLicense(); + + selectIndicatorMatchType(); + openSuppressionFieldsTooltipAndCheckLicense(); + + selectNewTermsRuleType(); + openSuppressionFieldsTooltipAndCheckLicense(); + + selectThresholdRuleType(); + cy.get(THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX).should('be.disabled'); + cy.get(THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX).parent().trigger('mouseover'); + // Platinum license is required, tooltip on disabled alert suppression checkbox should tell this + cy.get(TOOLTIP).contains('Platinum license'); + + cy.get(ALERT_SUPPRESSION_DURATION_INPUT).eq(0).should('be.disabled'); + cy.get(ALERT_SUPPRESSION_DURATION_INPUT).eq(1).should('be.disabled'); + }); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/indicator_match_rule_suppression_ess_basic.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/indicator_match_rule_suppression_ess_basic.cy.ts index 17c1e57fd85ed4..dd3c086224e497 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/indicator_match_rule_suppression_ess_basic.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/indicator_match_rule_suppression_ess_basic.cy.ts @@ -7,10 +7,6 @@ import { getNewThreatIndicatorRule } from '../../../../objects/rule'; -import { - ALERT_SUPPRESSION_FIELDS_INPUT, - ALERT_SUPPRESSION_FIELDS, -} from '../../../../screens/create_new_rule'; import { SUPPRESS_FOR_DETAILS, DETAILS_TITLE, @@ -20,7 +16,6 @@ import { ALERT_SUPPRESSION_INSUFFICIENT_LICENSING_ICON, } from '../../../../screens/rule_details'; -import { selectIndicatorMatchType } from '../../../../tasks/create_new_rule'; import { startBasicLicense } from '../../../../tasks/api_calls/licensing'; import { createRule } from '../../../../tasks/api_calls/rules'; import { login } from '../../../../tasks/login'; @@ -47,16 +42,6 @@ describe( startBasicLicense(); }); - it('can not create rule with rule execution suppression on basic license', () => { - selectIndicatorMatchType(); - - cy.get(ALERT_SUPPRESSION_FIELDS_INPUT).should('be.disabled'); - cy.get(ALERT_SUPPRESSION_FIELDS).trigger('mouseover'); - - // Platinum license is required, tooltip on disabled alert suppression checkbox should tell this - cy.get(TOOLTIP).contains('Platinum license'); - }); - it('shows upselling message on rule details with suppression on basic license', () => { const rule = getNewThreatIndicatorRule(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/new_terms_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/new_terms_rule.cy.ts index 3b77522dfbff53..cb05087f008aa1 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/new_terms_rule.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/new_terms_rule.cy.ts @@ -41,6 +41,9 @@ import { TIMELINE_TEMPLATE_DETAILS, NEW_TERMS_HISTORY_WINDOW_DETAILS, NEW_TERMS_FIELDS_DETAILS, + SUPPRESS_BY_DETAILS, + SUPPRESS_FOR_DETAILS, + SUPPRESS_MISSING_FIELD, } from '../../../../screens/rule_details'; import { getDetails, waitForTheRuleToBeExecuted } from '../../../../tasks/rule_details'; @@ -49,94 +52,153 @@ import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; import { createAndEnableRule, fillAboutRuleAndContinue, + fillDefineNewTermsRule, fillDefineNewTermsRuleAndContinue, fillScheduleRuleAndContinue, selectNewTermsRuleType, waitForAlertsToPopulate, + fillAlertSuppressionFields, + fillAboutRuleMinimumAndContinue, + createRuleWithoutEnabling, + skipScheduleRuleAction, + continueFromDefineStep, + selectAlertSuppressionPerInterval, + setAlertSuppressionDuration, + selectDoNotSuppressForMissingFields, } from '../../../../tasks/create_new_rule'; import { login } from '../../../../tasks/login'; import { visit } from '../../../../tasks/navigation'; import { CREATE_RULE_URL } from '../../../../urls/navigation'; import { openRuleManagementPageViaBreadcrumbs } from '../../../../tasks/rules_management'; -describe('New Terms rules', { tags: ['@ess', '@serverless'] }, () => { - describe('Detection rules, New Terms', () => { - const rule = getNewTermsRule(); - const expectedUrls = rule.references?.join(''); - const expectedFalsePositives = rule.false_positives?.join(''); - const expectedTags = rule.tags?.join(''); - const mitreAttack = rule.threat; - const expectedMitre = formatMitreAttackDescription(mitreAttack ?? []); - const expectedNumberOfRules = 1; - - beforeEach(() => { - deleteAlertsAndRules(); - login(); - }); +describe( + 'New Terms rules', + { + tags: ['@ess', '@serverless'], + env: { + // alertSuppressionForNewTermsRuleEnabled feature flag is also enabled in a global config + kbnServerArgs: [ + `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', + ])}`, + ], + }, + }, + () => { + describe('Detection rules, New Terms', () => { + const rule = getNewTermsRule(); + const expectedUrls = rule.references?.join(''); + const expectedFalsePositives = rule.false_positives?.join(''); + const expectedTags = rule.tags?.join(''); + const mitreAttack = rule.threat; + const expectedMitre = formatMitreAttackDescription(mitreAttack ?? []); + const expectedNumberOfRules = 1; + + beforeEach(() => { + deleteAlertsAndRules(); + login(); + visit(CREATE_RULE_URL); + selectNewTermsRuleType(); + }); + + it('Creates and enables a new terms rule', function () { + fillDefineNewTermsRuleAndContinue(rule); + fillAboutRuleAndContinue(rule); + fillScheduleRuleAndContinue(rule); + createAndEnableRule(); + openRuleManagementPageViaBreadcrumbs(); + + cy.get(CUSTOM_RULES_BTN).should('have.text', 'Custom rules (1)'); - it('Creates and enables a new terms rule', function () { - visit(CREATE_RULE_URL); - selectNewTermsRuleType(); - fillDefineNewTermsRuleAndContinue(rule); - fillAboutRuleAndContinue(rule); - fillScheduleRuleAndContinue(rule); - createAndEnableRule(); - openRuleManagementPageViaBreadcrumbs(); - - cy.get(CUSTOM_RULES_BTN).should('have.text', 'Custom rules (1)'); - - expectNumberOfRules(RULES_MANAGEMENT_TABLE, expectedNumberOfRules); - - cy.get(RULE_NAME).should('have.text', rule.name); - cy.get(RISK_SCORE).should('have.text', rule.risk_score); - cy.get(SEVERITY).should('have.text', 'High'); - cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); - - goToRuleDetailsOf(rule.name); - - cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); - cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); - cy.get(ABOUT_DETAILS).within(() => { - getDetails(SEVERITY_DETAILS).should('have.text', 'High'); - getDetails(RISK_SCORE_DETAILS).should('have.text', rule.risk_score); - getDetails(REFERENCE_URLS_DETAILS).should((details) => { - expect(removeExternalLinkText(details.text())).equal(expectedUrls); + expectNumberOfRules(RULES_MANAGEMENT_TABLE, expectedNumberOfRules); + + cy.get(RULE_NAME).should('have.text', rule.name); + cy.get(RISK_SCORE).should('have.text', rule.risk_score); + cy.get(SEVERITY).should('have.text', 'High'); + cy.get(RULE_SWITCH).should('have.attr', 'aria-checked', 'true'); + + goToRuleDetailsOf(rule.name); + + cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); + cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); + cy.get(ABOUT_DETAILS).within(() => { + getDetails(SEVERITY_DETAILS).should('have.text', 'High'); + getDetails(RISK_SCORE_DETAILS).should('have.text', rule.risk_score); + getDetails(REFERENCE_URLS_DETAILS).should((details) => { + expect(removeExternalLinkText(details.text())).equal(expectedUrls); + }); + getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); + getDetails(MITRE_ATTACK_DETAILS).should((mitre) => { + expect(removeExternalLinkText(mitre.text())).equal(expectedMitre); + }); + getDetails(TAGS_DETAILS).should('have.text', expectedTags); }); - getDetails(FALSE_POSITIVES_DETAILS).should('have.text', expectedFalsePositives); - getDetails(MITRE_ATTACK_DETAILS).should((mitre) => { - expect(removeExternalLinkText(mitre.text())).equal(expectedMitre); + cy.get(INVESTIGATION_NOTES_TOGGLE).click(); + cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', INVESTIGATION_NOTES_MARKDOWN); + cy.get(DEFINITION_DETAILS).within(() => { + getDetails(INDEX_PATTERNS_DETAILS).should('have.text', getIndexPatterns().join('')); + getDetails(CUSTOM_QUERY_DETAILS).should('have.text', rule.query); + getDetails(RULE_TYPE_DETAILS).should('have.text', 'New Terms'); + getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); + getDetails(NEW_TERMS_FIELDS_DETAILS).should('have.text', 'host.name'); + getDetails(NEW_TERMS_HISTORY_WINDOW_DETAILS).should('have.text', '51000h'); }); - getDetails(TAGS_DETAILS).should('have.text', expectedTags); - }); - cy.get(INVESTIGATION_NOTES_TOGGLE).click(); - cy.get(ABOUT_INVESTIGATION_NOTES).should('have.text', INVESTIGATION_NOTES_MARKDOWN); - cy.get(DEFINITION_DETAILS).within(() => { - getDetails(INDEX_PATTERNS_DETAILS).should('have.text', getIndexPatterns().join('')); - getDetails(CUSTOM_QUERY_DETAILS).should('have.text', rule.query); - getDetails(RULE_TYPE_DETAILS).should('have.text', 'New Terms'); - getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', 'None'); - getDetails(NEW_TERMS_FIELDS_DETAILS).should('have.text', 'host.name'); - getDetails(NEW_TERMS_HISTORY_WINDOW_DETAILS).should('have.text', '51000h'); - }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDetails(RUNS_EVERY_DETAILS).should('have.text', `${rule.interval}`); - const humanizedDuration = getHumanizedDuration( - rule.from ?? 'now-6m', - rule.interval ?? '5m' - ); - getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should('have.text', `${humanizedDuration}`); + cy.get(SCHEDULE_DETAILS).within(() => { + getDetails(RUNS_EVERY_DETAILS).should('have.text', `${rule.interval}`); + const humanizedDuration = getHumanizedDuration( + rule.from ?? 'now-6m', + rule.interval ?? '5m' + ); + getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should('have.text', `${humanizedDuration}`); + }); + + waitForTheRuleToBeExecuted(); + waitForAlertsToPopulate(); + + cy.get(ALERT_DATA_GRID) + .invoke('text') + .then((text) => { + expect(text).contains(rule.name); + expect(text).contains(rule.severity); + expect(text).contains(rule.risk_score); + }); }); - waitForTheRuleToBeExecuted(); - waitForAlertsToPopulate(); + it('Creates rule rule with time interval suppression', () => { + const SUPPRESS_BY_FIELDS = ['agent.hostname', 'agent.type']; + + fillDefineNewTermsRule(rule); + + // fill suppress by fields and select non-default suppression options + fillAlertSuppressionFields(SUPPRESS_BY_FIELDS); + selectAlertSuppressionPerInterval(); + setAlertSuppressionDuration(45, 'm'); + selectDoNotSuppressForMissingFields(); + continueFromDefineStep(); - cy.get(ALERT_DATA_GRID) - .invoke('text') - .then((text) => { - expect(text).contains(rule.name); - expect(text).contains(rule.severity); - expect(text).contains(rule.risk_score); + // ensures details preview works correctly + cy.get(DEFINITION_DETAILS).within(() => { + getDetails(SUPPRESS_BY_DETAILS).should('have.text', SUPPRESS_BY_FIELDS.join('')); + getDetails(SUPPRESS_FOR_DETAILS).should('have.text', '45m'); + getDetails(SUPPRESS_MISSING_FIELD).should( + 'have.text', + 'Do not suppress alerts for events with missing fields' + ); }); + + fillAboutRuleMinimumAndContinue(rule); + skipScheduleRuleAction(); + createRuleWithoutEnabling(); + + cy.get(DEFINITION_DETAILS).within(() => { + getDetails(SUPPRESS_BY_DETAILS).should('have.text', SUPPRESS_BY_FIELDS.join('')); + getDetails(SUPPRESS_FOR_DETAILS).should('have.text', '45m'); + getDetails(SUPPRESS_MISSING_FIELD).should( + 'have.text', + 'Do not suppress alerts for events with missing fields' + ); + }); + }); }); - }); -}); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_ess_basic.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_ess_basic.cy.ts deleted file mode 100644 index 39328f560bff8c..00000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_ess_basic.cy.ts +++ /dev/null @@ -1,40 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - ALERT_SUPPRESSION_DURATION_INPUT, - THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX, -} from '../../../../screens/create_new_rule'; - -import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; -import { startBasicLicense } from '../../../../tasks/api_calls/licensing'; -import { selectThresholdRuleType } from '../../../../tasks/create_new_rule'; -import { login } from '../../../../tasks/login'; -import { visit } from '../../../../tasks/navigation'; -import { CREATE_RULE_URL } from '../../../../urls/navigation'; -import { TOOLTIP } from '../../../../screens/common'; - -describe('Threshold rules, ESS basic license', { tags: ['@ess'] }, () => { - beforeEach(() => { - deleteAlertsAndRules(); - login(); - visit(CREATE_RULE_URL); - startBasicLicense(); - }); - - it('Alert suppression is disabled for basic license', () => { - selectThresholdRuleType(); - - cy.get(THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX).should('be.disabled'); - cy.get(THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX).parent().trigger('mouseover'); - // Platinum license is required, tooltip on disabled alert suppression checkbox should tell this - cy.get(TOOLTIP).contains('Platinum license'); - - cy.get(ALERT_SUPPRESSION_DURATION_INPUT).eq(0).should('be.disabled'); - cy.get(ALERT_SUPPRESSION_DURATION_INPUT).eq(1).should('be.disabled'); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_serverless_essentials.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_serverless_essentials.cy.ts deleted file mode 100644 index c26954ea7e37b3..00000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/threshold_rule_serverless_essentials.cy.ts +++ /dev/null @@ -1,42 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX } from '../../../../screens/create_new_rule'; -import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; -import { selectThresholdRuleType } from '../../../../tasks/create_new_rule'; -import { login } from '../../../../tasks/login'; -import { visit } from '../../../../tasks/navigation'; -import { CREATE_RULE_URL } from '../../../../urls/navigation'; - -describe( - 'Threshold rules, Serverless essentials license', - { - tags: ['@serverless'], - - env: { - ftrConfig: { - productTypes: [ - { product_line: 'security', product_tier: 'essentials' }, - { product_line: 'endpoint', product_tier: 'essentials' }, - ], - }, - }, - }, - () => { - beforeEach(() => { - deleteAlertsAndRules(); - login(); - visit(CREATE_RULE_URL); - }); - - it('Alert suppression is enabled for essentials', () => { - selectThresholdRuleType(); - - cy.get(THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX).should('be.enabled'); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/new_terms_rule.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/new_terms_rule.cy.ts new file mode 100644 index 00000000000000..7604903d2b47e1 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_edit/new_terms_rule.cy.ts @@ -0,0 +1,108 @@ +/* + * 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. + */ + +import { getNewTermsRule } from '../../../../objects/rule'; + +import { + SUPPRESS_FOR_DETAILS, + DEFINITION_DETAILS, + SUPPRESS_MISSING_FIELD, + SUPPRESS_BY_DETAILS, +} from '../../../../screens/rule_details'; + +import { + ALERT_SUPPRESSION_DURATION_INPUT, + ALERT_SUPPRESSION_FIELDS, + ALERT_SUPPRESSION_MISSING_FIELDS_SUPPRESS, +} from '../../../../screens/create_new_rule'; + +import { createRule } from '../../../../tasks/api_calls/rules'; + +import { RULES_MANAGEMENT_URL } from '../../../../urls/rules_management'; +import { getDetails } from '../../../../tasks/rule_details'; +import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; +import { login } from '../../../../tasks/login'; + +import { editFirstRule } from '../../../../tasks/alerts_detection_rules'; + +import { saveEditedRule } from '../../../../tasks/edit_rule'; +import { + selectAlertSuppressionPerRuleExecution, + selectDoNotSuppressForMissingFields, + fillAlertSuppressionFields, +} from '../../../../tasks/create_new_rule'; +import { visit } from '../../../../tasks/navigation'; + +const SUPPRESS_BY_FIELDS = ['agent.hostname', 'agent.type']; + +const rule = getNewTermsRule(); + +describe( + 'Detection rules, New terms, Edit', + { + tags: ['@ess', '@serverless'], + env: { + // alertSuppressionForNewTermsRuleEnabled feature flag is also enabled in a global config + kbnServerArgs: [ + `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', + ])}`, + ], + }, + }, + () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + }); + + describe('with suppression configured', () => { + beforeEach(() => { + createRule({ + ...rule, + alert_suppression: { + group_by: SUPPRESS_BY_FIELDS.slice(0, 1), + duration: { value: 20, unit: 'm' }, + missing_fields_strategy: 'suppress', + }, + }); + }); + + it('displays suppress options correctly on edit form and allows its editing', () => { + visit(RULES_MANAGEMENT_URL); + editFirstRule(); + + // check saved suppression settings + cy.get(ALERT_SUPPRESSION_DURATION_INPUT) + .eq(0) + .should('be.enabled') + .should('have.value', 20); + cy.get(ALERT_SUPPRESSION_DURATION_INPUT) + .eq(1) + .should('be.enabled') + .should('have.value', 'm'); + cy.get(ALERT_SUPPRESSION_FIELDS).should('contain', SUPPRESS_BY_FIELDS.slice(0, 1).join('')); + cy.get(ALERT_SUPPRESSION_MISSING_FIELDS_SUPPRESS).should('be.checked'); + + selectAlertSuppressionPerRuleExecution(); + selectDoNotSuppressForMissingFields(); + fillAlertSuppressionFields(SUPPRESS_BY_FIELDS.slice(1)); + + saveEditedRule(); + + cy.get(DEFINITION_DETAILS).within(() => { + getDetails(SUPPRESS_BY_DETAILS).should('have.text', SUPPRESS_BY_FIELDS.join('')); + getDetails(SUPPRESS_FOR_DETAILS).should('have.text', 'One rule execution'); + getDetails(SUPPRESS_MISSING_FIELD).should( + 'have.text', + 'Do not suppress alerts for events with missing fields' + ); + }); + }); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts index db39136abc9630..2a29e477447b57 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_management/prebuilt_rules/prebuilt_rules_preview.cy.ts @@ -326,6 +326,7 @@ describe('Detection rules, Prebuilt Rules Installation and Update workflow', () $state: { store: 'appState' }, }, ], + alert_suppression: undefined, }); const ESQL_RULE = createRuleAssetSavedObject({ diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts b/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts index 1a85088a240a1c..b3a5a39dbb1865 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/create_new_rule.ts @@ -32,6 +32,8 @@ import { convertHistoryStartToSize, getHumanizedDuration } from '../helpers/rule import { ABOUT_CONTINUE_BTN, ALERT_SUPPRESSION_DURATION_INPUT, + ALERT_SUPPRESSION_FIELDS, + ALERT_SUPPRESSION_FIELDS_INPUT, ALERT_SUPPRESSION_FIELDS_COMBO_BOX, ALERT_SUPPRESSION_MISSING_FIELDS_DO_NOT_SUPPRESS, THRESHOLD_ENABLE_SUPPRESSION_CHECKBOX, @@ -145,6 +147,7 @@ import { ruleFields } from '../data/detection_engine'; import { waitForAlerts } from './alerts'; import { refreshPage } from './security_header'; import { EMPTY_ALERT_TABLE } from '../screens/alerts'; +import { TOOLTIP } from '../screens/common'; export const createAndEnableRule = () => { cy.get(CREATE_AND_ENABLE_BTN).click(); @@ -541,14 +544,12 @@ export const fillDefineEqlRuleAndContinue = (rule: EqlRuleCreateProps) => { cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); }; -export const fillDefineNewTermsRuleAndContinue = (rule: NewTermsRuleCreateProps) => { +export const fillDefineNewTermsRule = (rule: NewTermsRuleCreateProps) => { cy.get(CUSTOM_QUERY_INPUT) .first() .type(rule.query || ''); cy.get(NEW_TERMS_INPUT_AREA).find(INPUT).click(); - cy.get(NEW_TERMS_INPUT_AREA).find(INPUT).type(rule.new_terms_fields[0], { delay: 35 }); - - cy.get(EUI_FILTER_SELECT_ITEM).click(); + cy.get(NEW_TERMS_INPUT_AREA).find(INPUT).type(`${rule.new_terms_fields[0]}{enter}`); cy.focused().type('{esc}'); // Close combobox dropdown so next inputs can be interacted with const historySize = convertHistoryStartToSize(rule.history_window_start); @@ -557,6 +558,10 @@ export const fillDefineNewTermsRuleAndContinue = (rule: NewTermsRuleCreateProps) cy.get(NEW_TERMS_INPUT_AREA).find(NEW_TERMS_HISTORY_SIZE).type('{selectAll}'); cy.get(NEW_TERMS_INPUT_AREA).find(NEW_TERMS_HISTORY_SIZE).type(historySizeNumber); cy.get(NEW_TERMS_INPUT_AREA).find(NEW_TERMS_HISTORY_TIME_TYPE).select(historySizeType); +}; + +export const fillDefineNewTermsRuleAndContinue = (rule: NewTermsRuleCreateProps) => { + fillDefineNewTermsRule(rule); cy.get(DEFINE_CONTINUE_BUTTON).should('exist').click({ force: true }); }; @@ -874,6 +879,18 @@ export const setAlertSuppressionDuration = (interval: number, timeUnit: 's' | 'm cy.get(ALERT_SUPPRESSION_DURATION_INPUT).eq(1).select(timeUnit); }; +/** + * Opens tooltip on disabled suppression fields and checks if it contains requirement for Platinum license. + * + * Suppression fields are disabled when app has insufficient license + */ +export const openSuppressionFieldsTooltipAndCheckLicense = () => { + cy.get(ALERT_SUPPRESSION_FIELDS_INPUT).should('be.disabled'); + cy.get(ALERT_SUPPRESSION_FIELDS).trigger('mouseover'); + // Platinum license is required, tooltip on disabled alert suppression checkbox should tell this + cy.get(TOOLTIP).contains('Platinum license'); +}; + export const checkLoadQueryDynamically = () => { cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).click({ force: true }); cy.get(LOAD_QUERY_DYNAMICALLY_CHECKBOX).should('be.checked'); diff --git a/x-pack/test/security_solution_cypress/serverless_config.ts b/x-pack/test/security_solution_cypress/serverless_config.ts index d0ee1613f6e4cc..2edfe8f1e36c99 100644 --- a/x-pack/test/security_solution_cypress/serverless_config.ts +++ b/x-pack/test/security_solution_cypress/serverless_config.ts @@ -34,6 +34,9 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { { product_line: 'endpoint', product_tier: 'complete' }, { product_line: 'cloud', product_tier: 'complete' }, ])}`, + `--xpack.securitySolution.enableExperimental=${JSON.stringify([ + 'alertSuppressionForNewTermsRuleEnabled', + ])}`, ], }, testRunner: SecuritySolutionConfigurableCypressTestRunner, From bafee563f4feaaf5081c137d04820eed7e7dad78 Mon Sep 17 00:00:00 2001 From: Robert Oskamp Date: Tue, 9 Apr 2024 10:32:19 +0200 Subject: [PATCH 12/75] [ML] Add tiny ELSER model to model list tests (#180308) ## Summary This PR adds a small ELSER-like model to the ML model list functional tests. Note that this model doesn't necessarily provide useful results and should be used for functional testing only. Thanks @qherreros for providing that down-sampled model! --- .../model_management/model_list.ts | 2 +- x-pack/test/functional/services/ml/api.ts | 5 + .../pt_tiny_elser/config.json | 17 + .../pt_tiny_elser/traced_pytorch_model.pt | Bin 0 -> 2135326 bytes .../pt_tiny_elser/vocabulary.json | 30526 ++++++++++++++++ 5 files changed, 30549 insertions(+), 1 deletion(-) create mode 100644 x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/config.json create mode 100644 x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/traced_pytorch_model.pt create mode 100644 x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/vocabulary.json diff --git a/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts b/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts index ee13a801ed84f1..b7180fcefdc315 100644 --- a/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts +++ b/x-pack/test/functional/apps/ml/short_tests/model_management/model_list.ts @@ -190,7 +190,7 @@ export default function ({ getService }: FtrProviderContext) { 'should display the stats bar with the total number of models' ); // +1 because of the built-in model - await ml.trainedModels.assertStats(37); + await ml.trainedModels.assertStats(38); await ml.testExecution.logTestStep('should display the table'); await ml.trainedModels.assertTableExists(); diff --git a/x-pack/test/functional/services/ml/api.ts b/x-pack/test/functional/services/ml/api.ts index bd4cd417c8af3c..71005aa57b4e43 100644 --- a/x-pack/test/functional/services/ml/api.ts +++ b/x-pack/test/functional/services/ml/api.ts @@ -66,6 +66,11 @@ export const SUPPORTED_TRAINED_MODELS = { description: 'Tiny/Dummy PyTorch model (zero_shot)', modelTypes: ['pytorch', 'zero_shot'], }, + TINY_ELSER: { + name: 'pt_tiny_elser', + description: 'Tiny ELSER model', + modelTypes: ['pytorch'], + }, } as const; export type SupportedTrainedModelNamesType = typeof SUPPORTED_TRAINED_MODELS[keyof typeof SUPPORTED_TRAINED_MODELS]['name']; diff --git a/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/config.json b/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/config.json new file mode 100644 index 00000000000000..d8494c1d2067c7 --- /dev/null +++ b/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/config.json @@ -0,0 +1,17 @@ +{ + "description": "Tiny ELSER model", + "model_type": "pytorch", + "inference_config": { + "text_expansion": { + "tokenization": { + "bert": { + "do_lower_case": true, + "with_special_tokens": true, + "max_sequence_length": 512, + "truncate": "first", + "span": -1 + } + } + } + } +} diff --git a/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/traced_pytorch_model.pt b/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/traced_pytorch_model.pt new file mode 100644 index 0000000000000000000000000000000000000000..330407df301e968f425e5da11520138827e5a191 GIT binary patch literal 2135326 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

=+x`GvifzX++r5}*UrDyU-i~YZMcA3Y<*;gs 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
Nv1AkE_U|pY3?2VGDkIL?}iWVDs}KZV#Ew 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⁣V;lxyaB^25XF{7=WF!N_0q)tjiWw#94ve21M6z1gnOS{10v=sHpnGFkN zZ(_PT2PZttNtMD4a7uecye6%H

-KoU6=#{?<=V?G9l6gq1P%Gwh*!^iH^I^#E2s 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 iY#7vl^k8z@POIsMb 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

H2%HW_oM-|bQ^zkLSs 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≫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

00!Yy^jBC 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Ì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 HtiRjKQO!z+hrwvZ$G?hnF- zr?08OR9SM&U4odq+~u;8`QVl60k`;;HJ zXk3E1r{_#3&UGT=%cJ-gdv5Wy2g^}NcQWf{k^qMqDv8VP$0Xpw87SL7fss;n!VA?~ zG2dhoHusI=>hTvuZq8_D&x zj1G4<9TTM06>_kCc?!;YBhM6aESH-DPSCh83{3v|!)6eN7g?2%uy7-`>0O4;KJ6f+ z&z&181i^Ic7|Hw^Lc(lK$y<-5P@R4hpLXqooo+9&ZfOYYxBN{dCp42}(gZJDyutVe zgHr~|an9{vvPCS5_+-U`?$i(}eI)?wN=HHX`CW{@tb^KTgGg$80XQi=b(y-n0_OCz6<%Wl-toB?4_}<&hqzfHHI4r(?Hz8mABGI2-{`8 z(ns67$?Zpp^rxx-zQ{4bki0;s$neDr-1#Wf5#_k!2^j_vS2$}MQRqv9*3%i(xPh~X!ZVLX9>BXYP21s<| zxQ#xMuqqy4FGJYoR%yQ2n_x0e_a@Dl_YAXDmXg1n#o&7<2X>nM;*rt-TxvhU-zj*H zD(wA0HXV^7ZkH$Gg1MUXMi9a>y+V*xNT-gLdYIxO8cUwM$XQG=R@8v9cr>KWoafC+T$d?$6cWmzaZvzIW;I12;i$cNUBoz9Cyo zrPzfhXJhHp30QOziCn%qE?OwgPWmIl^aM!5D~~uLIGvMB{`DrZp$=&7-V4UtL}5z# zI61TUDonjli&g5L@Z{$MeD;19>ITd}oim3xes?*3{c@d17ThKs3#PD2UoBBfW;LFY zf60HdjRy&?JD_uuAkcVe_ME#9b+Z42R$Lc2J!Y6UjqB+)&k|vkl|o@Ex92#0C7!l% zdj@Ja1ePmSkZ7GS&YA{A6{ z#~&-JQPg!2#9a(QnMV%%+frKKa4`d-kKcfe@}?-bI1;75TH`5`)BF;59-iTtMt$!} zz-S4_UfNdz`Rb41+|hO5rF<1NT*6>r@euY+=Gb)`_A=$Duyj>gh&4 zalf638K03RUx3E5FUa$2+OQ>5mkc!L@!s7qfB{_*_QTn5e6A%6n^Py?X>CI~CB%mu zYy1q`{H^i*P71rKuacAZXM(gz7OqmQ!HaM9LCjliu8&EG+B^*ix09iF>2vDWlf`sM zR6y&=Wo$!~4-EAca9#9%dhWmzoW^{HDz`xBm(0NxauSexv(Y%j<|Le3&E>*{{NR(S z8J_-ijVzN%fxuTPY~XwDGV^f{{C#%||6A8gt4}}2eSXpOzQZ%zllzoZK9J<*kUv3) zU4*Y1FW|eRL1KT)6`qK6!=A#$wBIfjY<^W^>1(&9lpnb)qoSh#+g1Ii=*3_+FzM_uzAo?x2B9#EH{?F+HmjY}yJ_+&#c@UfH zO$H;S=`C9m))zuxnRY(M^`3#L4y9CazcWw0n2)x8+B9~0FUp&gafN?jA{SS^xNA`b0u`+y_)(glkcCTZ{l#&;~i!^Rv>z2Oz?(hVoC z?o^N?QM1S(*VF&6QVFg+Qe}Td#$j$@3h`7J=e;Pc=UW|I3gKFoq<2a-gj*G2;I~XN z%KhFr&HPK%eo8}%Mk7SsiNn3+9%#2_8teEe7)*AxW7$+7-&F6=$F5zb!p>@tRlSP$ zdv_aty~*b(7f;5M6$>#!UJib5%)yeg^&nJdgj@MBko-BAmX!72ZxKW0(=9d38RneL zXJ2spkTBx?S{Gsk#falA8Ajj707Bc;;UC68m18H4-|2y>duzaH*&W(H+lR|7q~g7I zhOk=Xyy@UmSBP${q@yz~gKp*35ATM=m{&j6lH$dmh+VA`<5OYEj2wGLe+3ldwQp^3 zE_oumM~=&;eXqeG2_IO`d+U!%mL3q@CJFo8}Erl9LR7 z1$?Ph@Fh6%N||105X22Xr3gFK52Bb{DB&{Y)nA9 z@*1XNkmFkIPQ>e_A#i55B}82ng*_bqs<-4g?9O;gs>XF0BjE*nmxv_%vacDHWhXF# zFIYk|Z6WP-A~1vTc(?s9Z}vxXblK*ExcCiJmR{!1_ligDQ#Tf!>O5Z_E(evtK8*>)i1RAW&Hf5o9DKk=YbE>H%M1VA=VtMNUGVZ*7_7Fj z<1&DA@QVH!_?KvnKF=wy^Yc>Lb=8MAa!Lsti!9)_*Gaf@J0GTeumYZ}Dx8(!yiWe1 zbi>Pkwa#Iy;PKa~xWRuCp?ihdaONSu$MYxlD$S%u?Q_se?%hmtFO>*4UfQ6l(k7X0)c<`>F4a6D;kW`&41 z=Yek{^ZjzyuuK@C_!3euWoBH_&zG0Z6(&pQPUChbcjF zjCgkdfAdvIZ1NMt#M~S(HxXxI4lTwtQU;KtJ&Sf<*F}#X*J-qNFkfW(XE^X4L1BRo z>=sDiZ=Kr?9o@2w!VNdLlG6|Ul{R?4i{-VS|IQP9#QA=#+o_$0I9kIOEE5|=ZJkE` z=S~Ht`iVE~ah-q{$9VX;?FCp(>OcjJ8t~*gd)kxvIGiScwpl8eHAcZg`zlM&>pucH_|eJC-BpK4k%Qz{2o^%KX>NfoS@GZSf*0ra@;x6M+Y)iUT^Zc` z_X5f++A*rGh2MBYfJ|Izh3&r84(^U$@F9+W*!M049w@82>A z3VcEKoj*t3|GzH7c?Iqrm4zz@((v7$iR|C^7iq5N9Pn)9+_mv_&|B9_-wn>essnO0 z`^7Hc(DYX{R$v3NuN81qzK-h0D=-PKkJR=sJT8N$jhBMCoL^f%>GwQCGioZSih~>M zQhQ7^96Vr>QW+6Xk3l9O2p>=ACdDS}u+VP{^E)vXZfdRJ4WBuK%Z?(P!Dw`G9pHJS zX2QnxuRyEn5WTm&2!y0FVEl48s!7D4%BOIO8>cZQ(@S8-<|J6AYegsJ#Nc_aEntTS zAY=yT@^+rdKGkq+#4Qf_TJOFuq+X+!auVS)yVE-#oT~{o+tE z$3lUTwbL`z;2fBb9#!I(Et8?7`4c#*oyQR4+f;7PW>%@ai<^lXl1;0;;l$Y>Q2+E7 zihP8brGJ*=5r=uq%%;YaO zAiraF4t#j0h3BNjU~A$@RN8QdTsXX*k&$;nztzz=sap*)zO=xhDU(=D#h2jJs0n%+ z5Ajc7FJ1d98TITwlNk~v@Zl&Qr^Ph!7HPeNn+GzXrf(RgX~*I%okOU*au00176aLT z;vjWkBPQD^!pO-uQhUG)%s1B4g>8N~Hf0$Z5`179eV_-+lQdBFd@Fe(H<7pD)Hpv) zERjBm3gjn0GK2s8g_r}|Q(^V?V!pPR9+5RO!h@&lX?M|k@GJO_;D-Ak>aB@6Dl0gz z+Yc-pUk4j9Yxs0}CHEOmV~U(#lQfqh((fmP#s75RUVSjuuZhMa%L?*)WiG$@fiP2; zro_#FMZsY=$1(c22gj;says)s7@R0Yq7}I=(tHVa!gVzi9$$$iXKL{F4~pj+>xp-& z4yNo4fMcg7qOq$l9g_b?3VR#q@os;5R`DX;eTdr=cf6#(PuAi1y&H7ocp;PxWK!R0 z-)YXaTV&aV5^~vk1OH5V9C)wedVPO9p+Qib3D!%4-V;km+TbOgcit>=FhC0j6E(r{ zs|@4z-y4$-&t3GGi2`nLpMqU4Igin5U+{Oy!ovX^o9M0`+7DNf+1gRaSgKG>Z+r6c z`%{wW@r8RYXu*|jk??7_i2k@Ij%hMOxc0pyKR@qW%{`?CvhCGAo<`+tcyZhhs!g>> z_gjP#Vh)S$)sW)pZD5Y~U?g4z3`@PRj{9!>Eh`~grzS&xyB79M55+f8-)YJYF`U=e z#H-7S!mLJD`hCWB^uU#Pqf-TwWSe<&hqCcMj-g`dYy~Q1L#UdQMMt>jUg`A}ur1gC zJE!MEP>qCXhgk#+Mzg%9NgQu3wpq~uFL89#jD#aV){q9b5vlGA@?YB^( z-x$Vb?d80&PLOyf1w?uju;A8Bu-AJIKD`vEswmT^*oiwIWfQ|0DvU*7KaEnkQ5*gF z04ZJKK|K2Hn6III)Wm-ndB!*4hag4E{Q;m+E8buAZ=A z*@uzD(XS9i?DODWK|Cy&CdkYG&j#jm&vzg&jM+Nc-M8~eDu zOQ<|=@~IHAJXRf6q%QzzQyJ*rf1MO8;B%hp0`N3Wz;&gL91Ela?22Mx(3V2mDT4E7 z^I^y23siXSW%^OPiOjS-Mcc>q$YXnZ)XDvUuE&I#Cw=;09Jrl?bDg#CSUL?mz>>Gst8agn; zJc@t%J_`$L{77E38}4t^K>tkuKK3ujMq>?D$=ry4XWt`gqbi6w%oo_u8)LfrL@*;n zzfe)wf%B@yz+NesWR^8?_cD&b>urJ;qjezV!ys{S@B(L5P4KUfB*}SNY??zA-wYDq z?wLEFkoy^*ua)7M_{WgE!Nuq@f#RAE5{#br9Af!pCM!8Zio7oyBgK!mlA1VQGAbR4 z5?@l_*YH+84XY%pJoMR!^Qufxd$6V=`WHieq zz$`|A4Lqof3QRYoadYZD^9RV*OIolg^EY~ZxCEm=nn1w$F;CWKAtS$k9xORf%vU(0 z%RE*WgJz-zG3LQEGie?48`Qw1@3oNe@IAa(eh_C0O{Kr^7~Wa65p7Ca;bq=E>Ub_4 z+TQnI#P9$iaqr>B^V6vLClK@eoN)U$IjZ<$3T~c#4mKu#;^*b(fb>`eF}~@Fm1{mj zNYET?-;qg9$fyHYui^IRp?G|EEqNOg2QAyDG7lZDp{IcmY@C!wTT6U#&(}8o$C5nW z71Ic)4RL{nkKR=AbU#`jyGoCleE<-ch$h!hfd2|rs;2Xo>f0+27%-y)mCYz28-Oc= zUcx4;8K@R@3dRkasp?QD?&s(6zDx+ie>*?m>BJ|Hx_BBp?wpE}w#(7-{WMe<3!#eY z&17%f1G>QPJg$<_#A{+*n64&BC4Yz#k>*y?SoRg_WVqI->;Z^H9Ov>6V$f)83m$htyNG?fTz~T627Sp4%!okDMg>;5gf`70vtK3_Q3Q?K-W;z{r ziN+v~XOsJOE8s4jniCDdBA+53fhF4#v;?<^~q={p-8J-K`8B3a>R;Ci} zfBpzVL@MCX=4itADgdFl0=(xg%uJ0{W_te?;I0RgaAH>>T~Hvvq*zA5-WgB9QeXqS zxxg9QUO3{9o3`-W`Vr3PwSXnbt__8^WG|X29h3J2PTB#_tS)R*8@4&&4r=aT5 z0wtj*d1cjpkTjCUmtIjtW?OgQfu{-}Fe{k2`PqP0YY|LuiH3qF6S36V0B=N|Cusd^5vrdyPxBN`DKfufN%=-_D^BN&INIIs}(fy_Dc5M89pp>)*}lR)uF|P zb6CsHg^-vw?3tI2f~Cf+R`v<_lpqMJdxY5MQ#47a+6r)!=!A)r=MZ+s4_>y83M0O4 z4KqcI<7zDGvOxX>~R$J`{P2w%5@m~jdHBoqYH4uJQeO;iJ`pja?EbC^ZXr2 z48HvG3N`=MR_$8!mClaK<1z#sE423y4y~AuO|ObLH|k$%ZCejHp*9$%{RggacQp?$`cHjJ%7Jr{o5cQZ>L~Vx& z+0F3>zsy!)T1*+-_W3zn-Cl-fZ+$UYy%40f_7mCIVW@t{?WS#n;PsF#)#y6Iz1yQ< zi%SEQ*_(m6Q>;1HcnVkxgV8(BZ28qH6AqE%mS!SziO@NU@~TFA{3Pjk#^wK)Npd|e*H zPjifmzq%;+U?Rxf^o2d4FVVU_9fVmGoc<~hO;^kF%`yk5daD_HxK+H6l@Xi{Lc%7G2WM!Udi_jvRC7Xl= zo*Xl0br3Z_d6=&$(@qL&rm{Qbw=x^PheK5PVZ7eR!-w0R;Ph==*5cw0EMBkAe!AjA z*IlSY=YBnSR2V`sLN8*5NNR0j>0AETgO}vZK6%Ej(i(pBo+c08EoDo@#BhiEXTJPm zVc4FPMYq?8VP?xDrtOI^{1V^5ByKi=BP$2+pyo8Z`92m29_5dA%Ck4-Z=%iTdQfKJ zCyd*DpXlCLMLKp7>|Qqwl1^a1`Ae_(7B{%}%kc=>Ynz7M&2P!G5`A_Nx9d7_G#TWN|0dOeGw?cu z@a(e;sN1Ii97{sHT^)kYZNI^=UNS0eYycsz<*;A*BOj_)P?LdTm@;g{tf-FWJk_Eo zwQHPI1*PH7D#NMijcVf?z}aLVVU;ffY9|fnh>4Cuv*7w>q3o_bi;idh8NnO>Yh3 zHtmUlI+hh`hT!?mjn(Bf|?44Pe}PKo#Eho475 z(Z?B!KfU1@sfpmrJ_&ZotY$P?%K0RxiQ`TSMfj)|Lln%KaK*`3{1X3yYTio2h^#f# z^vHR7hwbL)if~!RwZ`Pfkw%=CCd9t;no1pKm&3|*34G`)%8VI*C5|DJ2~Bb!sZ0H_ zFIW~wSNuT{jUm)oKAqLsk_;{{W-&L@{n>-r@>EA74%bZA22HO2_SoE&4d5AtaMb@O_Fu|5#BGJ%rxALhh1Ct^WSRKk(T8dV69HTOaBgp z)(disnr?{rkbs|jt)Xp66z|EU0{GmNkCFS;sFT}TC^U{Iy7St=w^<5f-fOUL+QQ*= zN-%XkD`9HFIf-OkR2M;xwQ7~AvWHxi6*T~!XMLS;U1SRw0?OVKg||m8{Ubt zlZ~(7hMZQqe${*0)>n!X&re0Eu37Lw{~a0Fw~0w#J0I7KcK{oe2(P>3P`-{2&t&JB zK6fsF>Tx4He{n7FxSoI7KR1weUyCVgqCw|i5Ejfi17cIfAo}_=l%60(_hKfr^7f+T z+(i0P*#^GzYf&XL0`Ci@@(yavhWXFm)Mm(^#DZ&+nVZ)(;NlulcsP*8yViDx+ih6V z3*i|UWl%}FAKsu7+H>GZvlZssMZ(n1+gQE)6Ms{OJagA^5BhIQ2L6W6)OT(x^*ZJU zRWWARp_>ZXza2p2w*c@Q^g+^3o4X@7@fL{PC;xoKK&duf7G^t$C^H#cxw$9De-ZNo-by_gz_p^ z_+d`-GJK}Xc{mUFP<1}VOy_0TBI6BG^Vick-OuQ&#HCovacC`5qdI zVDE8%@&bRssVkegxdveCa4KE;_Ab4@#R@%UeX4`=@LrW56gVD|HJVtjuP z%GX)alM`m+v9H&83mlcuh|3aH3!Vp;RsTp-@^8*5@u+Hk$R2obMjM^a`eB0n0yf>g z3)Y5(K*xXz)2DHs?%ZNW{@b69Yqq4*EP-p_<+%#I%-@r#MN*h3Dur?RPieL36vh#p z;OBw4;I+IO!&>GOp5H|96=)~^lax~4oI zkG6P1Y-1{T4&THe`PbMIG0rjA?!)`<(l}8d4~{BIfSqRuL`ABSNmI(vyeyAw{MJlM zdY$2Y%39+3svFK#8sooJ@5wTES$54f0cQO3akO&$0@JpY)U2qU4?K?bJ}u1-rPtqq zUAF;lSWHHrpx+SqH58rGCX<`jH{nov8Fd&~hcj<&A@kpd(C&1uuYUgtx)^%F?+>kT zCUPNh{+B>I!>`f!u(hx-_#$Y{xq@zjH$m{+YIgMkPjEI-V}HJ&^mVMS>DAFK%;y_T zC~@L1+3djQi7ZLLT}E7gZciL;JRwHv_iCVi;daQV6=KX@hG4_GA%1HH=hX0*Wd-e& z$niOwVZ>gD8CueTmVd)g`)ft*yZk!XC(7|WJB8W2Zxiuqz!q>fN{1|UTi8x?`FY#I zFl=Rz@pWb#=kC?Pk<((#zxAn<)u`lo8kT^;cX>E*P4=R=dI2rJ8<4}O!I zAVoPA!Va6^f1D8?O_er_K*&wbkS=~zLdR_33qsdguDrZh~_Mw_zrHC;S~jp zjWOfp_kbEs@WY6YiRiif8bA4H6s+TC)9+{P(Mn8`op6!kJ)gUSyMnUt8|Q%!S5*S- z<$IX3?Nb@K0X2Mas2lXYwBwXRL(p6j2uu1>u|zkF2&PAq!(S9YEB*&%?rXq_wQJ!* zPY^V_O3>CBoE!Ji7`56vOh$Pei+<%o*6q@D@-t}`^=dv;JI{9~B)CmsH!Gb4fujbD z@~k3qr@9|-axhAbhGNCK7Am&hkG5Y6hPtzjz?e7UgD1za=-&khbUlUt(w#|%VF1j> zvo!7RW1JoJ1HXM9sfIu-n zSYCY;0)x+i<#r(yte6a^7$>N_%kd4CuLMV16J%N=am5Zj&O0c<7)P>T*QSWq`vjPM z-h)Il_X_@z4C9Aw-;O^A5_ezb?zic@ceBeO3jeeZ`nV4{pOy zXDKf5UXH^J2DNJxGpNIhcvvfZ2S15dQHT5`@R7^a9zMAR2M-m~yLqon6*iSZOmQ`8 z`fr670UL=+!WeZk2*V6zVM6u^v1X-{V9T+&@TdI{N|@Z{T|b@y{SAOMxBNlz3&&8i zmLu&?_Y#My`R9*Rz|Gb>^mN%8a&ql?-k9bwnlv8CdvyO620g5U zc{`0z-Zc!4Oxc5~0+}?{RULH8`oY3Xm{xuYCB8giXlcm=)6hAvP=7lwFQ5=dXI=)& zkLK_aAK~9biQ00v8F+AlFU$apVx<)iW#uaxIWrHBTu7aCQ$Z*-temweb z6McHM9JLN-nl3shNUl2l;s4+=E^TWEXx^)znA4g-a(zd@UC$KlaRScvD8e`YcH)1X zQ<>RslDIuzCgtn*@sbkPv)21^peNj%*k9Ga!K?Gx-|eAPJbg7C&``%!X?#-jPlDNa z@Cgo;>;pDL6c(1Y!J+M`I8DS1!hgF#X3>3U8M=b9;_g@!(1@nLCJ~W{i=^XoJosdZ zvF?)#XxHQjm~~f(RgM;AVnu#Z`I@tcv&ZnPl@?p|st=ye;`r?)iS%9&%S(mi$?*%9=Ec(z%7(h}kwN$P$}OTk_Aq z!V^lI_3IA}**(tfUncX8-r{;L8bcuJkk54|g_%=1&bay04P5+TJA~YQimMjKf!}3a zd}*^6p34amxgjf#I=Qu(de~Ia_lZMX7JMe>mKKHSs&Wt`yp;_y{7MuPW&l@i#s}5c;KM<# z7o@>49d0}E+wGglp*}rQ=_p3KxV_ij(-I)`Iue2{PoT||E4WNR3)k&`Ok>AWaR<8$ zM2nBY>4V>3(ZO+QIVK9Z6XGDV;~DWd>WJNIC!%?|C?irdg)w^5jwvP=aq}B>=K21U zyhYqyYhXh(*j^5%X#*ncCOLmxzdseNpIVZ2_v0`uB^*Eh6~VbD3t>l>B*@<|fs+UC z;{Z>_bWOzy8c!m4yp(zxk$oE1D;)*16h~+l<8p146FKhH0g^segI=m>S789Di?oO91bV)y$t3*rgupCGU6lsPX~G;TV{d36rQkXhAQ ze6oKR8hLX*jQ3Yyu&#sL7u}C-Uru6snGUL2chD!C$8y+X1@$ZO%&CTBs}*3v2?bWq_a4!nO)*wv7{k=HilHagSiQdp~GPo zJ%5Uiyzv|e*Sil#6Sz73D?zeS_awyDg`r9CA2L&UH7h%zka{`+Q5cDaY#lc`DIpE6 z4_4R6X>ffrRc91i699e767dx`6Z?8Amdk7m!ldRz`cAc-%7t2k)@?3xJS`X3m*mlj zJ_k@mtb`oACW*2m8RS=r9txLhfzYrwb~;L6@4OXgQQi$(4<^E8?)g8vjB|FM`U2x7 z#(4FWCPYmv$Hb3T&>ff!bNPI7=h+RqBTf&Vtdu~% zkgvK0v{x*GotsRs=6V*rcs+>ZCQXHe3&uT#g=>5P77BsB9Q z@%^zE5Tx%##%9bmajocs##lf2{#Akf(bx(-%Y*sj0}o*CF11?0CV!~d^$B{uOTgt@ z%@qH|L*jZ-_OfsZ&UoHL>Q%&;$S*_SyrCWCzg;GMhKJ#R(^Pg~lPJQ5FT^tLD)n7I z#<$LsVEij4GWSyjnevrfu5R;m<|U|tQO5;f(+n_8NeS2O)WDf5??M3d66K98(4)Kw zYG%4&Bi%}lg{;KUR>13v zSMdjRlThcYDJ+}QN21p}!)JSi@cxn|cwxx}+!4>`x%*_$_#bUFTc#5Jb#lFHzA3!j zBf{`^Si-b553t`g40VPEQN1i4MmHUY5cL#v-R%Zd2Q1jwpq1d!H-I7TLGUY6i=F2? zfk{Vy@;{2sG_1z2i^G&k6AhvyO%fF;G@QMjLkxxX^e zpj?>UK3s;2dIi~Sx!Yjv=6RUB^o6l^o(sJm!MV|{ox-hU#W3*1nCPd3K}6{@IL#yx zsg~sOMNO4->O}$O=Q(}y%B+#Ncsjwe3v;2f=L($DI{-XGE!L&3Hwxu0z-XxDYX&A+rRQo>i@v53I$eEq7CXpGcj_KBityNK|Z}wU}mpbOM_$< zaqnCW;CL+HF?l8D5SE4UW9vz>*lbi3Oh@BI4rtv`NAI4W1F{>fvD#rSd;Mi6?mxv6 zvyA~5vGp*HP7DOYXgf}_aNC5=s~IH2>S3T7n}IQ6Lp1MV04=|B8k|BD(EXw; zKfl=*Q^ix!z1tL`D`qlr&O0kMYDqCZJ9oh9K!4t$b1SLt%lj~wUyM(y{=uFf10?pc zCs`H#8&5qmhAo!!jBCm{x80FeYTzHjuNIGnvt#bydsUeCBu|z5KM;-`nc48}1P_|PEV6Q>YQI@Bs8_3A9RjSZ@H~x)9r_0e!zD)Jw1kK&wogE-uH*v%n6WK zHwwDTCc)doaisbEZ1#-AQat}in6;e}N|!H+Mo|?_#`do_uAP1ugLI`p&fqZW(LCH@ zFo!B0F=gW-KSNL7SMtznBW)LvCtb_dGFy)>!KA6lD5U?CSG)EW{k+_m=2k}VT#oCq zX?mmlfnha#S1SkKKb*&$InUssnJwI&{|!IAQbj8@F&I6)iQUvnF)wlXBwUGZdqs)Qz3lf$4Kq_U)WRn76c^#=X==d&MUhdhaq_lwJZ$z5bAqfG^Mya*8jg z8Af;O)uP{G0w*4P$8+3g#;!b!<~=QfHRf-@D*qDc_KY=-{ksxdcsJqW6PDLj{tD*Z zoC{Z0b>T6Qe>C=iFS!#W%-&us!oJ&f49gsDz(xJ_cs%D1+P?`y=0qs8t}=r)5e?*F zkq(pai`zf`wE&kh2YG%I#lYTAfU*0g1ohe;pxp(jLzI$>Y2ICquV+N|Im^Za!|W%8YVZm}h#cF>23l5bL;0B|NklvmQO_kX{Ry z*W{6tNpta1&pRq*n80`aHb$*iWkO`-9$4-06ug3>VC+@|M$TJK{lA{21qzpFPj)EP zh{{9ic8Dy>-2-&w9t<{|V43B+vF-d;q7y$tY|~$mW}Rj{cw-(8*b!ViV<|OHFh~3B zLdaJsCHPETetal{Z5K(tAeE_;Bq)9I`vew{hb5^M28|B{7(Y`fxqn^l*BT+ar5B$8z4gUEndMjppXl zQS4qkOnvi=EbtLwp9yeWp=x(9E1iuW+~erP#cI@Su{=|5pu|p)&Eo&*d_{9RL|Gw6 z4g9v_96j~5o>YmAkcXq@yv>~>R88^+@fJ9Tsypw~QqL9|^P1y#6tEVKR%NNG`LRz?Rcs3C++DZSkXQ7Om zJkGjui9gaUz?wY?1LO4(_|EYFwrom+DNGQSH$UY^?YTt$HI9-+PIa7%L+k_qHc}m)C`_=B|Lu@n%wS z<1&dl*oL=bOsLYyvI@IBevtBT77?xp1RR>rhGt}fBIAmCv*j4cwjyj%)P=_hNE~#J z^GuB7_?HDniMZZdUZ3B7N;qfbiRub?u9JtG-tQ$snU{%;$qG;+QP7=i0Uax)aO#fhVN%+NgH9LZhzWd-yRxB9CC(^$wD#0SO5^_!jz}_H#go_ps zF(Cy@iumG#Kh84TB zQpi1SHpq$I;k+2juQiB;9wCl#wfP}_eTMLL#wC8~vE{_|ryK-ENHGKXTrT&ZKmYlX zHRXCipNQm882GNKfQw2m3IEqEGV<{Oui_cQZn*7de2eSe%id6=;>Y~xi|Comkxz#q zM8yo#6iZEVX0jZ-mD z@@5jd*Wn2fa&p9vVJ9%tPYVsiZcwEQ!4O>kp1*T&6$TwT0sa$Z8G~`IyY0Lc-f;W* zJukgMrM#DXsx8Lripz0NK{Mt#T&E+&{Vxml?Nje4I zHXMa}K?hJ^&t|amPXa}pyg=xd0BzQ;q@4*%N8u+(=yK>yCn#4^UCJnQYCuaALT>9LJkF3IE?H_0dfNLA3{b zlOun5ZC0%nxvUSw&o}~QFX|vDzy=pTmI2XI3()s{5M;Y$bNBijRE$hS=l&a@IewHh zO(DD^mMx^l@+z5xLC{=27h~s*)5Q1gsHrr7N%lyy*S69PtDR|b&ul8_U<%2SCLGHN z$S;m_JfYqa^=8S_+JtQtf4A1bIp-kS-knUeW=Qkji3qW?p5EiSksrv>8c+D|<`5Pr zO7cW3bMV!!yIj|0BTk)_0&cc-Tu18xzD`|2>kbL9y98g;t=_-+51SuT`4Bhq{?$5a zpmv@paI-G8usGvk=Tca_GzaS+wt{vPmu0dRCO+5m;n+MLoLIGzWv)j7Z|4S#?z}=q zbC2SVoyX~iw?V)@eGPl&Jfi$wXP!=-Ho9%|;#pr^LACn5X~f?HSP?IUTDLY}Te=0e z!`}>(-y!tQPJ<^8^WlM+2)L&$iMgyTz+MUu1jV=B5EnZLmeUr|(XQ9%eB(7wfM>?dtq)?d z>NZ}J%q0|ZD5ooU!!)qlpG@NR(1Q}0{5hQPNY+*XReZVrpZZkRJ3y59KH|E=kqva& z;7VAKXO9w!c38@FWF%!gAY-VRWcLN(w8PQ3A;}a@X^&F%{z}O5RAjd~|29t9ohs~P7aDW6L0%Z zma3mUjtvjBn49ifA@x!gR9pRq|2R(W!3(0;{ab{crP9Uu4+Ytkfe8@D&5+OD`AN5N zQTh7CmN4^LHTa)c0bjNB*!m5!L_hH@j$Dj{P2=Dapm>%smK;^t$u)^>OZ1Jb?ZQ(C+V^tKqtP>>P-d%#4Bq8Rd^i_=O;X3(E zf9NtJZ|WGlgl!Sar_HM#P>duk zL?W(I4Ra>&sZIM7yv6MREvjD8JUs(&;20=A+oaI6SDg)MQ-nP`{?LcZR?yl#*D+>d z2dGpZVx>=U*|_daoTqsl1aC}$-_QOLo#M;5bjBs9Z;yfffj?;eF<&SX%D}zXx4|Hn zm-%?G5p(`cWVdWPh+2d3G^l<7?B+VM2Ub{M+`uXP#Xk%B>fK=A`yW1BpU=NFSpd$j zSwnvI&S2!t`@qgkl-(Gq&g3~YRm5yt&g^#&MNQ|4R9fX2J+77qf9_o;(Z4sq#$S_| zn~$s@f-Z#%juAM1DjvKFCqu&ab~@dO%dBT6!-@E7SXCJUZ%**(fIu{iuewZrEYV@Y zi-CX8QxvJvb_{lIBhMO-p|ML0ZtVOFOE)BNpS$BY!~HLrw;=|CrQPwtbqglK{EG3j zg|-lHITJ693b6r8C?Edq#Y5_9c6kn;towaiOX>n3m@ohcy`2?X|!Yks?xrOpP z4$<5EY3Q}n03-rj=<^V5X2G^1W3SjK*!uV%Pw{U*&0B85Tpdcq%za|4<03x3Rn>!i z+vORTXBl{I{wRb7JED528%b}e#4+t2@E-UDip8%;jP)D*BX7fQ7jA?U9a;9+(G?)| z+L5U)wPcc9oA92?Wqvqqf$I}faGX24EjDr8DEUm(Iy?>Ktc2MsmoDJk)=O~W&2lWf zx{KB|8-bs99yH98#TmJr_o^Y5P}#|7{89l=Rvm+r=X&wuKS?ZZ@PQx$0d|M>2%R+l z7!1sb0mDvtELEMu9uzwQ)0T`I@iVjvMd(`)idcT-={=z?_|ysq=Fvz zchM_0E9k#tgV=F$J2#V*U{~+s{H-e%z(k=-m~2r2bY?%E+AfD}-}e#C53=|vqLqAJ zbO=j#`+{SP5*s}Jg;d}IG#?#=r`yb^W0WI!_ww-1gln+GhGDj6&E}j{^`_>OM#lSotC+Q2baqY9Cyq8`AjC`5^ zEPUZjEL4`^rB-oBHrD}(Z#{J2h!yw_XmInF^{8rl3otJk^R(RH>#kSWU+=@SkG_bV z^;(!Kn)h3 zf&)r3L1i5agLi^qG>^}3yd%aO$qK;f^IsbK7st~;YEM3F@-rPJ3 zLS?hDdteXhf4>51&U#Gw>5rVRaR;%Njw-)3&hg(u>IrYZJ(+RPl(iF2;fY=;giVj8 z<5I43lMy4xSZz>Xe75eQ>*6z^Wqb-fb9@qZ94H0-+g@btF%eeidLVDhfhycx|A8J= z=H|vZcQA9gMn(AAizIbG5C1EjO1*b1M)ko~D616be=}Ln>8YV#o=_tUJPER0=^xF*yA;g z8GU2Qu9&kImd;uR$9pS{R9H!jtk+`=<{7cbvqUiwU*3Gb0)7YAWvvc>LMu;X)5&F>B%t*QD$hC& zhoq)4o8B0ZedR2*G@1o>1fLq6*EGS-nQ|cT^)PnN-vc|2=z*(U9qo>ogREE*#8vcL*a3D{=4oF0PlRRqnsGi^MEm1xaf;CaiHVcQ2A;9WDid z`u=F%!ZCUFOm+aCUEEHNmV1MlQXsfL@+S&=H$q)(Ai3@R5_}scbN-TRyv=zklz&`< zcg)(3j%V{>dIQCdLXHTY6osen&jzJIRW|t3Lv;7mhEWA4D$|>W#mSd&=oIH?x-U<| z+p-{ajtKkULpOQSTFGk`b;AX1HQX%ZI_JK$hC<~blK3_QUbYS6t7%e@6?+C&9ejtp zu6R5@{T2yNNCVgKNtn67pE^%AgtDvJY@~va@!ym}zKzEK4Rsa8f@?!0Oz15-Y!BoM zB!3{^PV3{D>%O${X)lU%+#<5VjV4z;2DypNAl&;26%Wkf=WySPo&(Xa?p_-`*|is! zXv~GciF+V5UJCAhiNOo&Mu~}1DF5cAd|1ay3eG^tJPy^cJ30E$MVQQWyePuC)dA8F4XaBH(Mb zzJlZ8Y=Y3rl}!D%Jp9NuP@_3%Q0^hlo;gzrBk!lvb05w^=E6SmQ|A?0T{J@0p6e5w z{e-+`cXZrugGy-yytJGy^ehagtBODJHBp29woRv7Td&YJt&!w{Pa|*99PaNG1VMGv zLa6)|M)y1qCq4xfCi`1s*T3I5U*8lOK*Gq>guJ{{noXArE7fk^Gv~Lae5k z9-cja8K3Rt915LXQ0Bi0in`CyuQ$H)z9bLQ^IjJ~^6+E&PbH3?`^eIUPuV0R#{rCI z57Vvo_sPxfDsZ=zq5pzQso^d?xcl}yS@fGvjP6N-&F4$7R`M))p#BAyMi{djPg|qz z=NJ5Zz1c7-w;sxVq(EEFW8P8D;b5RukMxTpm>z0CmoHJ6{W`<=MbSdk{L{!~X9vi? zUH)`W!f!0yJ`93FD)cOUjIDhS=$PLToOI|OTwVIsIB5ERaBt`iv8i;%bzk!_{;&^N zJGi56(q**ax=FJ;71@o^y^!-#i5ZpOjeE1wc+PvraLc=AIN5UtV>DF*o*vR-{+@h| zWt{J+QBfFsi@2WPxrHn@Vqywn#_(R;XNaB6d1;R%V`9NIoVI%lYw-LXzTJ`xKF^&{ zirs)`R1EnyqDttF0=Y^f&;V!oZ{58=GC*8B;c-j(BW6$}@D+FQ39s@AE zAVUTO3P}h15;cOBL4i~VR!+#_X&-%#@_W{E`(+(wU7#OGu9jc~5;*r?fhe-A@hD&~ zL?ueDavn81B3Q@mUxO|gS0%~7S_NIuHtm6WWuO_0ru6lcF3Pmk8HasjBCrmg}@M` z)p2yAsyL4M_`>!%ESk2gWi8%r1B1#DQqoh7vna zBN5!(N6Nn~#eCx>cyv^TH7r?=5yDqNXR9w=T*BQ2KD{Qip1}3$1!Q0JN@l6G54{!E zf%;Lw^rw#o<=eUwlWucZI!_U%?ahEj)v2sORwEp_^_kX7Mi9nA0@pr@#Om5>(C%hV z_6-Wcn;q}ry7~%Ix_dYAa!$bL-X&ldC`bJ-<&oCC)=19B;6R-eN&XuJu~1K|W(rcB zz6%E9^S~^8X8|%i=Y3Pfy3TQ zWW4wxJQ_{Gy1q?ed536vaW^ST|hr4l1}ffgNLgeX!535@+wUN^)44yG&TR=y}O~v zJCNRwOFT=+UduJ8m+4B1w1e=;x1VUuv4IYnJc631swDc|ay%-<%@2~E(w-k4P_XPI z+Mg_@Gw*AGnsx=r35iCj*t3}XaUtDyc_FBqE3g_-H}EjWEy*H>&~oA+ZB;#jvmzhi z;H^rS`BWN5))kT}zX!ypB%AhV*pUB}SO_rA2hVf?R^8tp^si{MYNvhR_r@pGI5HJ} zlu*=iljODMS`x8V54^Q<2zo8e*bs|E7@NC?yuPCg{zW6e=ia)7I!l@0ft#2g*F^Wc ziX$BoeMHanB&>at0$Ta;m{1qZmy}jxu7)lE1#vyrX;r72ty41a{|aQ@m_G8AQZN z;V0*}F7E$?$SRRLll;I^t^oA%=aTr;C{pNk2%mEA=THqfbXOMw8EYGI*fRp__n$?% zB?a)&R30|3Sps7cepK*SNQJiUMSe1r^BB)p(A;E?3D;BTtbcFupKT)??0-*gJRXO( z-|Bwi=(|UtW~4)Ya{Il&f%|mzqi9?h zE`xJaxXh@@a**gb4U)?%c}Khi*j0z?Na*Mj`up!>#wS6Fi78P<)jk)x@lF^0&emh| z9Y-uU_ln*<910?Ti(p}t5UhXW$lvSb4?mJG!1XmnsOP2$SLHqM#Qq`JXwyNC=|+$x zFZg&@co!rtdPQH1q>y&yB_wJ}4VY?QBTt=1Q6b+8YXTB*vavf1dsmU}r7v*SCIc*9 zMDX;MNgO*eiGMV#1;xzgvMK*5L*#pc*^=sP3Nw+Ju{MWe>Ni$6o7}{Hh2^9)C4;9T z&GDryvZ$xW1u)@-L!rb=a@I{0!jCu+-_e=$zTzG__|Dz1^LjG*oKsFG)}(=k>kuK@ zo<{4uYRK-!xmcG{LhbFX=}q}nP*8Xat1BA#))%WGCGaB^l(~m`Wk2aiS}px1W`(v3 zI!NA9ePHxOAwsB_CjJW`N(S%Y{F6;Me}LN!wARxtze{Lf{9G(}vy(`loe8hqTj2D- zD{!1&fl`~#R9GF10fRHE@lT97>P(cwl(G-hDA)&XD8!Nn74cBJ-GvUX9Kf>5LTX+6 z7`-M$k(d4qojsIE#E;4`-XEtBQ?qQiWF8H!p^C85XeyKUT?7x;eB)QgzC#Vpzw2K) zkG4gokUZ%|5P8*4udkA)`CB+Y*U#g?7rcvhul9k_jonbNIu!0p&H(M^8uUEcGZ#i)j+bBu;*yOT*&n-)F}5n|jc7Qund+!@s-16rQm zTyBI%c(X;YT~7)>WKJZt56XDe7XT#cufw0*H+)&ib#!h*C%wAcN<5Fm>aYX}K=_Z2tOK)7+d97{C{IX0jy6pIJ(nsTMt z%a(pP|B)77f4UvKF1|{|{NIxz6*)ZNIuRBaI5X`M`$0W+CM&Xf9Qu-;Livi5#Ng=^ zcIEyKT%NBQZfp5``IlXfXz*eI5T6_MU( zQM3s*_p30U`%>`NZ;p?W9E0O6`QV-z3JPsQ{Av4!>DBuiaUNA>PTDl#>-EX}?qi}< zL#!T6pI*c`GIZ*gl0i(GddPSTh&Kh*bl{36>wS*4(lo^w&6NH%5 zF@Kzw3b=2>Vn|5)K(%F_1A-QcrZ@46u0J(SHygr;6L+aYX9+a)+#wZXx`YNzW_+)- z@>5f?P_|16E*e$fmB=Yj@M0OBe4Ioa`L4tZ8sVs@A(*JEgZ2A>d?;|W(un96lxGtrIFg@3I3LZY^SOt5ELGG@^n*!D%rl6&{}ANVKY;J<0lZj040iubK%0&qxMB7@^t36U8N(XP<(C5(x+EX6 zJVr6U_A;KCuSCskAH%fmh>Yu36i|$U^;b5~0LSgnvA-BHFI~o6-o13~Ol79v!*cZU z3npco?qckM2zX)s3dJ^rWfttn>n6l_L(ae&^m=8kCp1KBlY@t0as46#Z zRGUJA1X55f_P+6I8%;c*9ZO#}O0Y%3JyfAj1y?QL7~gq9>_h#PC_H-}Y5N{Y&S5=0 zW#Wm??8_h~tOvES^_f~3HTKjZJ$9N)A?{z^inD&N;eP%PiS8*+*lecDtopnZkL=yY zP6?St=DJuiOf>p|$#D#b3eUJR;%~YmGglW)Jz+{z~?0cnbu1~K4!7-6^2D1{T z3JYL?>L_Hg`b?O^ZS1HFr02A4Apjo{yTe5|v_hPTIOoHY@?SvL?scG7BBsHV{vOC4 zxsPkRyosYh1mR1GkrVJ5`sEvO{sSpg4xYt^E2onyno9UqB89qt%A+p^+acI zbgIZ%491!4r95$*J69aSo}7eYq2;_@zZ|?c}$32Gscev;2P03Y~C!)u86Hsa5SCRm$zh1VKU z2Szsoj8*dc>C}<+V5;&1>^;*_Rh7Z3QZqnk(o{yVMiqp)j^&C zIO~)I`%s$V{xzn+KQj^H+Dbq*{U$v`LNM4$40XDtv1Af~{oEJT{A=$)s&f=>`+JfP zCrhzv`x@BnBggmo!sRWpt57&(0j7@hfb*=A_}{W#<6DJ=BgTCtD6SXGHLvOb?l? z5SHH=fZGrxR|EyprBh^P06GK4#G?RHo~lr4h|I%2@Z!}#ULygfH#|0YAUN&!5a31|>z3aY1*$jS{_@GO*bX~$>N>cGp; z7oH6z+b!_Zu5_e9@9EvR2=wU)AT$15!Bxxma~+hg=saf;Yput*tL%T$lhScSYWxas z*_;YI-nWGQe)EIZ)%=OS*fS5S{G?&}={vA5AsJSu`at#3iQs=^GjlaUiMo$f(sqmG z=-uprzn{r7N%rB~1VIoN+Z^NO0n=HjLmY4HeIX1v$-w;;mh6Z8G%!5DW#%`VbN<9l z;A5|kuap)++Dt3{+-yC}RWPIZPbQJTG94IduY+eb*0kRv0haGR0IK>@%vhf(aSdFJ zoP!ZQJLKW{qryzp^*J<}+My3t;h8y0(W}D`rYE4LQ>Da7dQM>1f&1usfP(pl9m743g6BOf2Y zG%hbCVkZt3t3+9=D~&XHrxhd*b>U64Pc4ChZz#DOI@@zdjI z2<+gpIE$X(`p25Erfe$2WOUM1k>2#k^o?j8E5*j$*$S%r;u-HPTz;FMiM48(sL~Na z`c`-&GqDinLK1kZH^KtTJyiG-cVB3d0QEch@J;Fy)#ADXvO&tgjz}_$L?iQmjqES6&n2{i+ub2lXKjt(&OKbk-NG|dDVB4MtwESNx z5j=PZS#c>KD5qbb$rra^3hA$**MO zP8Y-rKL^b|1@?^3BT%xaBWn)j@`~m-p?=;49BH@$rr#4WVMz}D%e%%~*is0Z8O9(s zI*~a)JAyj-%><{#lc?>ARnT&F5p>S?F|=4Z4_|TjWY4g#JeOtJR8{r@b~HSJn}MAm z8I%tuNk8a+dkqb|PzCbswxv<=L)=|7b$uXBvMm0B6k|CGLNN(O<&^l`f}Y z^UC-5IRh{tN)a3@5<$IJ0p&8tH6snmkVe-2=X$JAF6jke|b*I6S7&9Ts#b zX9KOSbHbFCr{t9CGVBa!qym>G^X`1BhFnc9`uy}E)r*&gKl>_RNv8_i?%Ij+!ME^8 zEcbh9{f_T9Me~pE6enVPVinJzMdP5BMQ;jF>;8O-(3Nk@dC_)7h0@0Uz!fq27~L! zGaOuaop@SgpjZRPx(dy~3H1`}h}(X!+9J*zpI${jcsRgFxExavB#H0C^&l`$fSJ5% zF}(Td3ohCHoa^U3=YF_Ns~u#S*DqEe|LjT7Zja=$SsbgSS{bBm_kra6d5ovuT==Aw z1XKL0_-iG@(0Y#xjD6N2^Uu5^2EwjX_Et;MpxQ@J%XJ~ji6_=k` zz@N(HVO-p2vt!0`pg7Z<7Nrj!D{o zc(&2oFk+PmyJ<^GpXNK2 z%XJ<&i`(vN@ryz?LrN;gx+ro%iP;CrOSLwm(lQ5bmp*9BHjDyq1tlM!Y2b#bLntjG zOFUamaphwpzT3^yoTDlkp8Q_UXtlo~>M;VC@p=|Wt3=Z5sN10XR1=<@n!x%91keo8 z<5*OG72-yp!{SIkTAk5O)=bLB;j`ahLiuc5**G08cIH(`|477+AwO92u9$NUyrqwp z9VSCkYlut13P?)3L9?#xgEvWG_(rdnb7?ft3#x&@-a8CBXX;3Qp9a*XZ>PELwlL+N z5}V|Fo5pc>_S~Fyd}~ufx-uTaW9KQj^OPTMJL?BqbOfepy5DFe~ZmRNeepH6r- z7se0u;L3f+arH83=*#6gr<}uv<-U7UB)Hj2a}7z)eokizI)b{>NqnnY1d}fK;oAN* zTz$%iMA(!-XMZPXY%j;Q@f%P)7y`mm58_R=eAK?)OVms1jB}_h-B{_(?MHy5_zGeh zFC1qnZo;;{R_fN}OQY_ILfA}Mxb2q@uJd}xUqL^jC7Vat3oI%r`BtO}aeaFW6aM-* zPjoxW;@n^15cDXJuk`j5o(PJDcQ3!fab<=q46DKumvp%vxh>w)a;0igV(_}G2LDWR zMll?g6q6nN%Fc9-1lWB z=wz(cgej0HaYkE)}5h1xO@ z67-=SvMVsLLx5S*_>=yb<4-9LphIO7&8Rjf49}F|^9UDITs;jJ<5xT25Oj$~n%y*6$gFM(5U;>fU52hj;q!kZ=X zbigwl?c8=j&_z8=%T#2YWYn0iZ;!$g&WLMQ9Lt^ga_lNL0uH1oQ4JZSOYbMc=Xeva zI>g|B%@7D2sHMGCQ}$(#u!A0N&9Mcg^A@>GEaB4qgp%l#aQShxsG{B23BSEl07 z`HTt^KW{8>OQV~ndecVzX!28Z20T?eOr}5P`k^+R)#99{@85f@`|xsnfDIj)S#YlWDS!3$^@lY<`W z9Uw4qF{-7`!@rwl*g{@CDXfdFIR7=ln0;f*dElzh!($7+d!`Mx%6Dl0hI;b4SP5sJ zTRq>tUMylzF3n)_Het?2{)VJd+H4Qdi(&I zoqLXXIzPDH%vRW#>xrRbXJ}4+GgW_3iSsW1rcaOVhE5l*i=vo`?tyV+YEKk-{ZbW| z&NBwX=%dDCO5S8?k`mK;cM;PzEsI2%O=CwZ=7QFzUhKOr#@?R9&5&bfz-ZGree~aY zEE?lD*}7XW?%Q#)ZNpOtx$g*5EM~EBkFM|!es~BC)^6~G`_7)9SPBO&2w|V$Vs_k} zkMaA8@bQA1{E6>3!_Bjypt`t=SE_CYuDSKZEPoR7WN$Lrd*C$eTkDUBt=vvUx*AO; zU%&%Cf64SUzTEs}27cSA#2j3<1!|^d@SLR6QCND2-r;4zE`5J`uwWdgHEO~M%*B?u zzI2CGIvPk#!A1AFN#%#hF#dck`blM?$o6W?u)WOB-EIrB6$RPD(@a3~&{fF$ss&7| z6~ps42k9|=9@Hf(Eut<-Em;2PGf6Xb1>+}5-1pPC!6Qjm{9vkpKD(Vcj$$Q-XWfS7 zg&D}InnKH+({QxuH5GrCfjf_GMULjQS0KCU?V!J8I<8gnVQF zr!l-egQZj{nol3R5@fDbOl5N~>Vk%zF_cs-fUZ?$^p;dKrZvxjIVcKuTQbSK_on!7 zt2WdYZ%4)9uMk&OK^JT{0NL}GsIul`n((&<9Ji&x`2O{1DxX20OnXTm$|i$LW*+#v zG2nCmB0Tn30&=C-$WNj7B>UD1Msvy))b?m6UrV?>+Ljx5e&bbAstHM`_Rh*k+ltv}{V9csa^lTe}MfO=l^2l%WNld3Zhu2{Gz#9mph+~tWmywXdG=gmaJ$tB#G z=mc4l7I56)w{S^Q5>9T&!Jt=Ku=J`QA5Glg$SXm%L#7%9du|ee{UPPY2 z134muTGI3>tzWY;J@i^KQ>=c&ww1CkJkzZ+1Uz%HaC^ zz3C`sSBwJV(#=K69X|h3fBUrq62Ffft#_yf^nw)GMrooyKP$W_e$&X6tvL~;};w5WPMKuz-tOzVp zb0gtJCXD*RdHC$M4_YKj;G62-Wd4j!^d#Kb*HOurU7SkQ3(wPcBTl&6`wY)lEd|Ru z?m$+M96dXr2A7jUh|`ws==gXMYCxo+#uHyw#CAoXwd)a(QsAioP;Kh}`D~FQy%&ia!*I*VR~9)no!*0a_S&v7bD- zx)APj4l2W;N^otEVNy#jVUKbF?pq9#pKN=6dl^Yyf-MxNEN zm0?#spNSHuMVTP`Zt^x^5pGxZ#oR}pXgw>NCRPj5?epzm)4hr8UiBoH=_x}-R<6T! zTF1HjuNB%o)j&5cI2?ANlcZT?z`UF)NGxdNC4WbHh3j`n-5w){_pfC2Yy;@?4I8Nb z_w8VO%NNb=>Vp0IRuEkA7^R}0fZ?Yp(4SlmVt=Ni_+Bo1A>l~3cn(mXpHpC+crR^! zd=kv#rlYC0DFg?Ug2-<#2szgc^_L&Pr&;%bFMI*M1?BP$T3Oh(%Z%@HPnj6!#L!oN zX0fVvzR1bp;nrbW_`00I8i8n9t1tm(aom@I+-tOBe+cZ^*b7GfX*Aqz6`SOr22ETy zoK2R4|3YK&ko_Rfp>H)^vpop-gT{2_w^Z0N4tVIQC4AR=iu+Y8;mO|;QX4J@)mvmi zP~|2*?;&_xKZj!$I{`aM3?BIff{E-$bXsGDbx82syPME-fb+(3UV<;_(#VXmLa+=CgU?u8tEaA5*#;yMT4*mi)N{vT`*OvZK6Yq>1i6&h?1iAvwJ z*q>Iz{08wVm=);2ZwOF_YNGJu` zV1H#Ep8LstUbN<*&w=@TAEPRo`}{lAXuru5d)I~U^)AA_xTODGxRN6i((a2uVAHre~Ap=}q{c*t=16ivKi914Dw zO6>D?cgFnc4Wik6ihOjmhWoaa@UcA!EU!;sy)Uakq)!Epx1o_PpVSL|S8X6mI2(p~ zSFxEVcA-kCCjQA3Vczt#;O4m^m}uIDRkt@A>jhNdfr=bns-z#@dp!VsX4^46BnWqU zjDWJODG0_(FsffR5>Ka<>@JZ;DDQeeZrQG3T3(HjCch@U+nY*e{5_3I8MpYa--Mu9 zyEt^5bs>w=%;A;2D6CBNK}G#0wCkCT7pHSBHK%!CnsSVkteZtvDoV2U&*HJg&kA;* zNPu035-14#f(vhA;o$WHlu2!-SHz`R5d$A=laj@g<2S*>c_G=ktsJf9o0co)iBt$L zlVA?p$wExjJv!jQ@i)9`Kz)WaJ(9c;lpDK1bgGK+fh1r0E1(G#9+@ylbr*8qC!8nt z;tDvV9YaK7_oH1F=f|EViZP{;Az-SXBoVp z2ZKW4_}95$BkO~MgCFr`wLhpH+JIJ5%jwD!d&p$o514D%!+-yyf&TD208zS5xYJIQ znSJ0GjcWIX|50?_@l?KV95=F8iDV^IsE7(V_w^`ArASLkDNS0mQ+<_@5urpVWlLFQ zpL1W26s59DX-H`j8IdyL_x%3$hvU4C=iK*oeLnBEh^aW~J?RY@iznbM)(kr)bIz$X z$EZZ38XoJ~gnhEl(Ko-6{Hr6luuT2u1OLJJI!(X=nFg}7LKvpjL9pk0X2IQK|Z7tEzFW>OSLN7tvZcqdu;>{ zI!5tn({}LfP^RytQ~BlhIsb&*0G5^sGd*tWn1a+`xZ0{oK02Sr;sSrc$(#Q$vmzLx zZ<<2nByk+h|AfVp6rq>nnvtAZqPI(!8P490IxeAb{`7tHHTj889@Wuy&8Zf{Wr;3h`mqytx5hiu}9eO{M+q)P#VDN(Tyl>k*=yjEq z*kUb=2lIBJ)$+;s+2jpo_vh0(#b{!^a!g?45R1RgY$62{`$$=#Hn)S0AQn|oP}|M* zb}aYc%9JuZ-X4mpy$vv6Yy*2q%M$Kh`A!FK6afiJN6qdgTH!Mw7`SGJU&J=?`dLei zSg!*ie)*^|Z~@Auh;WREa{Q&KNSB)4B(I08LEEShHg{~nk0al(TT7nFx2va8rlwS4 zLo^QPhwz6w6`4`_T#VZ?foXI(MIR{yLYr14isc=Ijxv3k72*ilj#<{p~n5f9*!71xYX-%Z1G2 zt>AEU4aTNTWMbq4K>M01Thh}FYxgT)sn=BKkbFfGoC(&C`$Aux`OEvmvFM^!2(!0{ zGKAic$AlAaalG4gqBZ!OhKY89Lvbd~4!I(j$xg=B!(DvcC6Do$mpPm^j;HSuWbk;G zESk-^P%>2c5B;Bg=CR@e-2TcRvep*Bi-Kgd(|k*}TX2p7Z%uH#T|`$%WMg8yB^_P)k502T$3JWUh_2H z=7YrCiF9CeP!JMdPrY8ZV)fYonCZlI7~C)6r)5Rt*3Bh&Bls$n*zuVj;M_`mo-rW0 z6;1r8Qv z-s#vSP@?sxipVkPaq#5wIU2j2n@uU}gW01=*#AJ2s>#d((*^#t=!Gid-C+;qZ(Om7 z$g<0J6u^1q-^A;>E>YDIV|>dlz}lAr&ZDh|stIezl6hxQ!zUOn*uQ{b!2_DLED|mF zSK*1!EcjYnLC!erCx_IyOsrZC8Lj`!Tc7R=?~=99u8x~6XvN|_g9u#yUVyci2+D5h zBx|l$Ld@9=L9|x}m={`sn2rzVJdkI=`a8-b=c!vUDcyx@A6PKj>> z%3Rjf@bw>bl3N7^@#@eRCIZYdSx_j_#(biQmGvPc>d76dmZ!ze)un>JQgx)pR0o@#d$?yae+>8tXNl{>(B0QIBkV zm?s7$sn^kE!87Es<4U9c<4n;22z`Ob^oXqjadZ(vA;fs1YI4cA#AKZn6 zfq1lh$tRbtE8>S4xln#d7c5mMolA8AgN9n+q_&xs&DrLXHO-FOk=nKaayBQ5a{?Xvq9RQOWB4NRjO5As$5Xxuvk@4Ag zED}$g#ZN0DFnb}#-CytxRM#a#T~8pcCxTgbGQ?Fpl-!gJ7Ac6NyMv{5H>ku@jeWK+a zKgq+BGGx8b6mu5dE~d3RS*F!kMp}OS5+t zzOA@QU90TKma0MClgY2JcxEP+ZMp6Y3pL!O3xf5Dwn0Lg5DvB_rXYB0Ys} z{j5XiJqGr@et;&iQM}%^1Mt2fQ{esGAO5^+s?917MG&0vn*?%5QmGoj(%oB2#DIc!jt|3Aa~sv_R2+|_)m^; zX{x~7JM)rOD=LHcoz?W~xf!gGR~>YG&q9;nJNVzvS2WKvl!!Ph!DE>L&f6(Qq%6WL z;ucC<-0WD25>1!j#7MNjYLhmOhIr!0R&92+=N%~Lk`-aa^@4-p4N#`j1AA<%aD8?p zZF}5C3*EEm-w8YM%3f*a-3i{?@E(}9fJ-oJSWoW_d=%&| zN+H(AH3U*++hExZ1(;iYjr*=tz`nscI;)-Yr`+WH4a?+Vt?vd*uNqHZ$Zf?5&qKj5 zOB-?y+u)^boX>^l!mB?NBN$7Wj?;P!Xyc1$exlvc1$&iuK-96-xOJ&E6LgF7GQ|d= zN{Je{a8AM7O}ohIo}cv1`@HAl|7@lkRg@Ssy5%Sie5lSnxm|pE&INyQ5`NBB-F>4o=n$N;3 zE9X;{2a_;5^aw;Bd<<4E71{T_KS*+80JVpbN&TZk9Bj-gJgO-w;v~XK0-4KS^O8^gbO$1(75ocU}F*ln``WmYY_o;ye6nT z<-x}4jAOm0UBHPVpNY5qcy_VL9JbhU6S4cOf)k&-5xh&Y#eS~qlwn#x9@MO%e_hA$ zPLCalKlPT(@At=vakcPd^fyFqTMn&499Me957MA!2Z}#NDUu4D)>O@t2}?mSZ#Uj$ zuW+nCr^ddhISk_dhA1>49Qz~UVc^hZ3}jb;L-cD}eJ2eY&OXJ57Y)gc4jat+IS>1; zs$+zi5o4XldB6o(z~3yy#(t2+nNy;9PW68HhI@d`w%@~B?Yj~}B^1$5Q5xLae!w=Z zqp;g21cm~?V)~kMsJNjXo-7k%U&S#{V)cU@inxq-&lJIJ^JO^6ydL%%cT?BFHBk7q zj!NYJqaTukp*Pcp_m*=7hNWh~2F_I%@GYABJUk{?yJt2`9d_e+Z0tbQO|zh<%#w+> zSd1q;KH{(v%kOdb1;!b#}5$rxOk#~0URCqD01)(d&v7k&AD~nda`f3?kC(30N7HQ$qUk9kWO*QXqY&Xcw z4#eFqvarZN04pr6lE!?lqY0^)ocoU4le&n-^H~~#_XO>3T|7oK13z7kfrX(abRTmU z!YBPC#d$SoBv7v;FE$= z9^8j*C#!fh8T-JnzaDH1n`u%n$Dmr+LW*+K=xm2$NGoz6Tx}-n+j@w7;kyAU^X8C{ zA8+YAsWJLKY8+F$<~Gj1*#MPtDjW}^gqy{1|6hM*;lk7E%n~VCSRi!)7CN`#zDi$Q zb!-tdTy_HCHLvjaNH5vWd8&`N>G0${c0%^jRQk50916}YXQpp=1^=}R;qi@h>boZh z|2vtBj<@EZ>BL+rZ1V<+d2{I6uZt||ntHgt|2llN(-${{EP*+7sTMDPi=n^MBxWEg ziPo)>XYYN!40C5Z$NM+*cv`E9$bm!2SmdgNUp+_Y;kRGGsJVfD3|)+y-W!t>frUh8 zksPjGFrM-77h@D9&zLPf+D#8A$U|ds1Wa~+jC1wuu_Hkq4CboftaLe;^ROC!Q4ur` zjHYJub2#r}HPl~x1NDxRaf4+GPiKhZKmQY9)vP%;Qpr6U_b8Q`C0l{n(^S-%)P*H0 z1uzJ!m{op>g3((y;Z~~>BUnywkIzAJwxB>zHsAth7ZzgMLT$!$=Wo)meHcO_f(mqUf=OcgD?z@%!UEyb{MP+1Eo(v@Oez00k89rYp)N}q94#zOc62GEQNC? zJW%)41DaR+oXR?=(GMSjaQxpeFxeW2Evw4OIuRojD$A!62ZCX)%c1#>46l|smF5fgE&*UAzZM<7tq8m80q^{aACR$+~1ldxMePmhEfioH;Yo|zyS1p z7D8TMo&tdZbGXk(7Ux&VhF`_$0!Cyuf&Ww>T(}9$w}pUvRVd6mFbRo9BurI#0SDr5 z!1;O#E!BHzWZp!aWBvio&gq9z10VRxy{97o+QB<+1&#%9&#?U*Gs8U@PA1+Y#;Tve zV8>)I`yL1SH&Y-|*^(HrQgEj*3@^X&L=lcV$Xi!VXBIRIR;QSdabkQL`tdQpoy+J( zq=t~-r%z~zsN?Z4ofBw7-k7GL%r02e- zt{pBQQZPu{My=?g1-`g0dMeMXgUfv8J|mJ_%V5sk1k_tE2fepj@w#*`mc6h*hecvc zvcx;E(C))NPwsW@l;a;=v=c*~tRw%NxM%o&1{BmLLr$|0Tb(uy?zT$8pKZy|${fNk zn%7bG>{+m0JPyvrNikzCzo3ozNQtEoIv#onfs@445457s)7@L8hp=h|Mpv9MjxKPb!G z3*XqP!kiSeset` zXPr8%?jf+f{|rvjS%=$BRuZw^Jcyd%Ly}&Xl0|1TU~~I@$Xx#kq*8=HMQsN!BYh(N zXnF}B-NSIDkuw&02}t+9>tw==K0%++HQu&@YS3fvgO#ToBPkz8AKAwc*_|GO*5&Hd z>GDdrdH*ok_3S6-8NG#uak{{Mkz+&}g&5!5PH?QbAUGOv4I1~Iz+XQn!1b`Bbb8no zSnL>!jVb@owJ(@gzSfT2webdw29-el0tx2!l~h>hk4Q^9$eY$M5DJbaXM}BdL+VPb z=B>rFPGl46R?UFNZ9%a5WD@w8O0oBRe29DV6Ii|OC?vTmL&e|QG;BQ&&ojSae6Is3 zY2Xo0Ydw5tEP)%;JYe3FOd=Y(6{aSgdpK) zoY&{?79WdKFK%Go_8g+W(w|n_J|z(qt{`ZzfX{!YV443r%3tjdMi(sbtu;4C3d zA>*mczFwG=`T~x+O=D}vasBx}xA6XSLY8bkNn+hD5#IA3c&cOr?5b;{<7R6ywNjew zLmh@Ja?9p&07_69Cx@CLvNTdf9~-Vd;5ZrqP#<>|lsc6_+Cu;~dp6Th17r4)+Z6U= z0r&Z}NQALlBXG!f5NbjVz>3SPM(_K^<=&=2c@e?4(wP|OcplZpJ_CDi65IAW2`BH- zLB%O*OwRM2gdFgKsP`e<+);>$symD7&m17*xdxQQMxf1^3^ZyU0{@f*9&&fw=KK;t z{l|R#l46JN#4N~Jvt%sKQGn!`D+TZWeuX{j3Ss@`0gK%Zvru-i6DZVbv4xS5@E{=t z=M)vux3L6QHaU|wzW#Lkk602PX8`R17s>2+AM)L@9?~`>!Vf1KX421XsA1+uEBxd+y+4HF#d_5dxH*>E)|g>I8fMExUU#hczmODJidyXUj~xX zLYLqmF9seaU7>rIr4gxJPwD$#PtaIA3BTbL+?75Pr4R4Lw!}&_&zZvXWF5elI2&}l z`Ed5U18U8<0@&XIx~^MLX5wo0%C7l%Wuysb)b9tU77J1@b_Ea2l*jfB;&{Z@i00&I zg79Ngc4MS7R68sM-l!XPh-;wSAr-v3;SW!K=`$L>PL~-~^#lJa)%5s+T4-LGPKICU z;l@A0sJZS9{rc-CX{*koL)w|7dH-S9dV_mD^>KW&#ZU0k6EE_b*6=PGmEg?tIq1^$ z7>DdP;F;dNkUZ`qDr|H`xA)aJ$^AJnHi|gc`67_litaHsMdr>EF_7jM=#aU7iOldx(=##Yd~=! zmmiO6!huIhyyahd;roXVc<_-usZyK_Zx3I9Z*EiIY`-v`H#ft!J%4GZ&Mdsx4De@a zI&n6g2a+qAsPklbdj0n(E%2HP8Ip!LGK_GnPK-UQ3QWxAS7d4t=hytrq27wSNa^O? zAZ=}g7wg)o)_n&!8S|Osl_i40R~Ovk$@09{pCAUP2MTp|_+Q2yxcp+Dpmpe!AiuUA zp5J^-7g)K0Ri2#%Z<{1@+PwFqlhR zgOmMNiNeW7;Dv}m&yOxpI+|xucWNgVWE+Dzrohpq->}Dz&vX296pqGqkZWmw1XD8S z;@#D;_}647jEpHT=LZ(RMve`aRToMo8q8wX@$^64EF)5%5weG87 zmApQgul*43Jkw(hVR!e2NT z56LaVjlpuvu&*tMTwV*_+?>vfu}1UNQ~BTJ9@2q#*U_FV#V77h@oQuV{5};8a*F26 zjP6R5JgC4qGE1<^bsBqXW;`%I3y7rNjar-_)CwI2@`*@MI1#k64H3~t+>4K+dcNK8izgyu=$C9MT; z@Sz^7pP7W(doBuG=B2>3_f|O6r9q}$j}Z(H`=LOgiWeyD))rkcz!mw&w0(v90PL}rh%J79^#UGX_iU22Jwd1aD4b<@@o5G)SD`U zd;Jy==RGp?&X3cK^~$@TFoUpiP7ZW_UI3&$_(UuB=5U->eP%?+3xgizlmzJ~;6U<5 z+%yu54!@c)H<;^0&0GPI!{L~vdlXL{8AnBRvWQW_6~5DxEtox`!L&@j%)fsk2&*0U zl3_y$sPQNx3bmUFhcCv1MIzWWIUE-Eyud!~{bX_SLs&TU6*^z9CoV5DvC3i{8g*S2 zT&a4_`%uzK*2!}_m{T4!=TQgzF8WVWKR$-@8m~=oKQbXNTd(Us}AYf5?-l&cftPmK>Kq zoAbc@Aa|E<1?ewM$ncW@77SC{l!g4-jMbQuc!q?k9})arFV5WPxr$N~=X03_C3xwl z2+nhl^VZdV!E4F4ar<$O&u;XRJB!$Z&TktSuuH&4W*4AGCl^0ydlBaa+#NBcia3!% z*uE{8nm08=Ghde7o3H=^d&`Jx-4!zQ-%O&MQcQ;y7Quoefz%5EATvpUbZ@VK^>OL& zx5EcsoeF@2v)#Ng&cA21&Yhm@R0SKOop7Pum+H2+11-^qKb>tLG{Z+Aq8bQq=Y#>@ zE`o+-ErEzV|FD0;Z)|h!;x%&4!K)6I(A25RY$*Ruj^{eSr+IN;lP${bGjRglF%#r- z{i*lcovGft1tjO(|Jgy0L0rCvY;5(RAIC?+-Pd>d?qmvybgkt1dR?ZA|4n5=k4n(_ zEsJ1J%?AvziK5E~vT4}yXgoHTV?WOw#9+CDT%NWBQwGIh_D&uvJXe^#Kkqz)F*OsW4U_)lq+aDH^+FlMQs3bVf?DF$;(2Qw>wl4fqeztLvexGYA$pdJ@s4 zcfh%!iEJzQL0mu0f;}bewB>stTuYO}I<4n|)P?i3>%1rEvyKw6JE;v|~N$alO z$LPX3+Sw7#Kc?Z1_EjOUHerDHXOud63^vhyahvPQNS< zAL$9GK$BNnpnS*}M}J(W4@-_=)yqxPIW>F0&9CI%Qd-{$DtCS}na_wUxfVy%*&-&VXILG4ls#%R4{cYxrrun(*!t`kjhIu;TNQr=cN&z#zpMzn>F5WSWi+7g(ki$g zzC=)Gw*w8om6Oa*qMXl!;>wafu-P^M>+LxIwuUZ@_Z8qDvj`ZNvH(xt%%Xb?FJgJE zHWo#Av4`CqX?$Ze#@wg^t?gHE_Rm2`Rq$sLCpY2o;t;`y`J?n%U_PF%xJI|WuM(&` zE`Zy@9uW|HIAb#2Lojx#OaoLSmP_jiA zg0gl)`mK08SS^4JYS(!A0vEIqO^0bJ{+RYlidhJ^b%S~BX@8!$o@5`?B4-9&#Ew6e`tbTjRw4);RJs;9&tlwD$$*Bo#?MV zM;n#hVZ4Dh+&aA&&Mpg~#q)Du(mEwnjnRO+BPk?%RW8M5E$DdSLAcH(F7aQF)*@Rm z@#i-B+_Ia7pOA+G!Ktv-;JQD3oZdSAO zsqPubA6H1uzdeb|Ry4q$Ik^~UBFc(VbuMF1p}JrtJsYM;eH^tgN=Xss2~TIP%~NBW zTc*I374^iYw26jnybD{$YvbPE@%(o$I7c|Q1Lj-2h4jsu*!8;%?f?5GIBJ!S&MQxW z+WVuptiu&9e({3K0*Wnd(o9p=eV7UpaIbJbY_D^|d%5bMaj2PZ>^=c5hPdJfBaT-x zV+xa*`GZ{gRSm)ZE=>E6?EFWqO%~yvjjA~McMQ}9Wk~HV3nnEk70Ty}6QHK3am+IyFdTGy?EkeHnRSJ|BWsh%w{tMdG_$6?nb+ z6Ir+UBphNwsK~J$)D_E6@x2C=4oh>hB4I4`G(e3pE?1L09=ASPPcy_BOib09bU5^hNC=B;eefB;^lb$LJV4l#uvHpXoY-`-~8jlB2~+=z^t0jwUHHrmmtD~&H5{ElP85>NhQ@%&FtDnI z_;dNCa{g3Q;h*RAx2_{ty9ylWB&P37AFXj4!MvmA!8raBmpv21-!3B@r>2y8&(+6f zMU~?_B4116 z7F^Oih&SG!!iC=l$;85yIN3l7^&dYZjk`s8PrgnC2Q_t`!pA(g&~^p8`MtO~MU+u% zeNO9~_tJ+Vy%y^}oQH?G<#bZ1ElKY^4EM$+;l#5d>@(f#IL(doN;QYm!f{bJ#<&J5=G(sG)#3CX225m=G@hHRCU zf%B#!?252rUf;=T!RZ|n*&h?q@hgvG>~h{gMGG^!@s2F^=P9!KBloc0>;OI!ScAm! z3@BZ&lsa)|pmj#Cz)tNI4j8=_OkUuDF)QzZ!QCplD|b9xo6yJmP%p+f|6{Ol?sXie z#xKeA41jBAZ-a9RA0sP_$fHx0uufD5Ru(369NSE|>zW5Pwj3MQ?=sYk-at7$A8bgu zi+sNXlFUXzROL9LuzDVBWag?oBp$@kkVPn54lx-1rHa)q{BFrM}V&cg~R#cntx+|3dEmX-wbE=j7B+Q<$ap ziTX895D3eDp)RS?Y}%yHaQb!!jOpe;o7E*j#*H!({X&(?X*9#Xi*Atn(->t-H-mqh zJG~>-iJvvnIHni_w@fp^w01V?#CV|Z9)L+EGfC&-8ko509QAA3L$yDNu|K=LaD7)0 zs*Zht-I+ziE;j&_k{4m5f4hk?=iH0oEFS7Gy*!u*HeW z%-GsE>hjf({#e$^a~WQTE1o;^N{jXqhHZq8BF@exDHhpANqh4<4wP?>OP zw7%SiM%LrmT`6Ux)2bW7t9J;3l+Cbs?r#g9AOmjB*8rkNI|QM{ij1FYDe;{jiUn$t z%nzTBL@4wIpC`y5hR149c{RtNH1vak@<^Qb-)*>kVFT3@@22Ax9t4*qfuL28MBg+2 zXtGzk;6|YYjDGVca~{s(-0Te~p_YY*tJh+CdjfGDZ_6)qxJoi=0_p0c4j3GpN?j*m=T6*yQ`(Af_sfb|9? zEE`z^13mlTs(u{GKZt;%Y&)@z{X|c71(V_IKjhEQEi|fF4(}#DBAXWmVQRvBLD~2$ ziV>mU*ZY~?`RzgE=8J(%q%AB+l*cn{5FW2oBQjStnO2=nC>)VuF1074Gx!L8`DMX^ z=0*~^?j`KL_5`*yt-`(U)QR4I=IrfSF}y34j1kLB8Pl7V%wdilvO0#s-pg_He*RSU zqOl)cCE-mUF8q&P{Bxgv8hMRLvopw^57NMH;oKD?u~>Ll3@uOAfuVgL@fiGy(to$Y z*w4>oos}BMy$X^<3&+_U z`ZbE()BB0phFQF4Pem}Oz=aMoe0+S=h@3g<3IXOHp|)6xEsyjgux$%UR`%o5UM@Ex zt3_pXl-N7}KGF|kEXMzlM#;$!$S>CeFnVMHGvmxfG#;;s#swvezP1$;d(2*?>PENO~I?+-6P@}DYur06?;wpkw?uDrLW!;?9tm zlmhyH9Y}59O*p);5KjLaB%sxc^OR=5X^yGT_-!(SCnqt^{5hB*7s7cX5232lQOavk z!j76RctWZPH2EtrwV(xJLU@>aori5V<7ql?2d4GBr@n3vaLQ;e@Fr}9akf&NSHTz3 z91uH}Ak%_9<@(_L zAs$>u^U=J-8hbv!g|GhQI8()^_y)&>jURuBN+eytKK^&Q$;p*GjWn zd*5*`!Ek6>t;`zhm4M?xV_;LBKx=^<87k@maj9C41%4H7^hz^|o#UC~C1#vIYB$`B z(_){`vJ|u^h-1l78TRYlMBr(Eqiu#oC>C)6ZgcM6f2I+5W4s=j@JNpaM)lFteyy;7 zatg|SdIgqtd*DW_FNhqUM9gga;il9-aD9*kDkhs@=gUV#cH{(!9M?+zI&Tn6+IAnO zW~ouD^CE20GGWF$SC*Oi^&K_0&Vl8;GI~RJ2FloJ-~oXLK-3Tkqa|3k(*(*kNi%^W zD^a+24OzJ6F-i{yQ0YYzS+Bi2c~J(pvFLj{K4|$t{U02Fyh+MLckyXhk)woRJ}tCX zItT2-!*SO%O`LD>fv9s?_v-;Od773&aNEcjH*Kx;_(!uN&}IXs=ylL{v*ru zOfl%>Z7wS-$v6sS&`w{@%X8%mJv_qo^R~Lfx}j8T^L#*?#!Bd?x%1fhz~!6`63IS& zU0#xC0s1?baNHGjkkswL*^9&JgVIFw`KbuJ>2kE-oE?0jqr40@pBNAMQo)pJ=;g^W z`(EVpmTKhPjoc9s~#q+q=!@9 zgY)fkh|RMeTJ=yDd~#kAXORii^Z7Wo>zRN&Il$+2d*{$MNx@8bPBA=5c#fO7F5>IA zrS!~uZSGFF2=%tBfKAK*c^W%kVD)AyO-$%6g#GZ7MTX!2UMp*^QochSb&8xtrQkz^q69M*hUxBJjW&iG4 zgLmCS1idrcsHmhnbV#u_8)EUyAM`2OSZEzfY1!aj^%$LLr_?i`u z@m@1HK3M{dc;iAh&zj9jc$~tRVORKfK8}3&X-%i^|3R%=OwmoFm;Tz=2|gLt@bR=Q zx*lqwH*^3i&P1cxIXx0vrbA7{rqMZG1Jv6j2}et3uu~4tMxTNfi)H=Mmdf~uX zXuT*+qJ)p2D#P7T4hITk@6Kc-UOhsg`8DY8TuZC!Ntw2NF~bc!7^5@npm!=tq}tRQZ`d{q?wqPXAg-4nB^8i4P`2 zp6+d$`X`2eTd9c@PY`BT{aJ%&Mv8gKhR<<@N(%M-qYIy&b4>Y#_hD-{9~zwVAu60uFUE;ylD);&f1k0$AFBWbp45iv8lh`nEG$o${?VBC+1xaxx;^SQKxZrD5v{teZWua2Ma zmB%b}xe`bJ-7;WiyNrhyCsi1a-z7wS-2vQI&&L$c%j8yy8MM^c5|S`TpB?)kSlX^f z3p56yw;~#9M{m%IZQ*fm>0&XlpV=E-jE|%VNX0nME!x zk})L9y5jMzOA?(eIg!qIk|;QJFNF7W6UU6p+RPkNbb=av9xHax5yi*qz%%n84kw9V z-`*+Yql7!8x-Wvvt}1R9SAgx~g5a5-9HZALk4z{x>zb53NXLmywpjgw>!hmerd8?V;BD|JP)TYBo%o+HWlOTa zc9|oy*zqRHWgfySKAfLup$}{w_m$3neF^1U_Cr#X0Q0|8;M_VjC_NYgiC;a*Jl8DD z8rlb*ioqb&Fdd70mFceo_aM?S3@oy)Q!CeGkX*DL8g)j0 z`3*Dom!Z^HHqomN!Yj%w&#!bYcG)(<>;um*z9^EvC2|F1SjMA&;Z7)nIGU%Rj}w*@ z(3RhkIY)O0HG8YVC^p>U6&Qq~^72UZ)t}DPczHnnq<1*DO^pOR%mCk8jv)Iw8D`Yj zVeW-g6gd+N>sopRGlui<8|#@n5wGAl(%bw z>{u`qbnk+cL#~i>{{G^Z6@i@3?Wz!XN1wzCr^b<7m`l@42I<%{3dd_EFm3O4!2-WtOlW;g z<{lMgcKuV~DG)K3pJGLZ^OTtrpJ&s8zkcETKB^Z(3iBzBS zo_9Fp(+6K3k;WwMv}l@)!OD|Z{i_G@*Xs#P*v=`azR?PI8%Lt2xC$xXb)D-23Gm=^ zNBUH4F($5v#-(NR*oW#WRQO0RJWW3ho675{+&wi`gxbSV&Oz^OtB*6EF<7=il^N#T z9UVITkg)HAz-P{SOrJ5G+L&m=NMsN!-FAqlzfPN(m%=fyG*iHM^?S5=E6E%z`$X%O zKc>sXn$Uad9*c;5$HDBn4h$r1h3S7I$<8G&QS+EAwqEwor_3}$MOLwl2m>)aFY zvwJUm3S0`8#%e)t+d1OEox`37-zWJp3ShW)3#yI$g?sfId08PN+??GEmd|t+zwr#!xchW+^q-Gso$B&SJK@G|KyS(%hLlpz9P%7TcSk*?EG0d-sC) z_p_jX`LD&|p%&Vo+(s?)92w!c4fOg0LohwU%>*kf(Q|VW>b>~`BI$3b{f#oP; zi9+bD6a_s&S72+g3HhcY3bTI}@w)QIGYJQ)c=qDkQLZ7M?5|K{mFA8@q*oxC$Z#BL zo)FCWAuUMan8Bq#pOVZi@u-*AjP5S#jE&w5$W&iOMr*q;D`1$+Q7M7+9RdsA%wQk} z-%#Y_6|@;U3P(aN(9|puHsL+T;F$@c|lDk;NQ2Q6VbH=D3k6)EH%)RNIc zeXQ8KkSXBHuxdmVz9g#CU^Q!a@=TOW-8z8#Pio_%${%F22Y0R)pNEa1IZ%9o<8JBC z6TGpv1%HvXJf8X;+J5v7ozM0CWb~aNuOX018F?ce+6)`_Cvy4e35?{Q2KwQZ9tMsd z<~1G)MKwnQW=(KC_;7R764yxbIC}~>-)$i~7L9;%;Cp-(U5DSh9?{(0Avmo3l0M#d zjQ84v@K!FF4_oWS*oIGTCAXTKq3_5q{_A(&sCxOJ;E!erl$2YMfql)GnjD3Ee--#E z=Y_^ypQ&qC65Vj-Dv7a_WP;7wV9WD78XZ0l-bW-sPseQ{CpZXMpWQ*}+!a_KJfF>r zG$G=uPJ&w3a_T#|g|@K*NS-Ew2Vfej+dD$+Tff4Fm{weAuZD|nI?&x$x&4x{DaJ^) z;5yIG_)z+`fZoaF{aSy6Bp(ms>fm}oQWWr&8ElI=4foe^9`l$B5V8Fi z&XifhpW^+jq-2FE`6iW1a^G&mc`u@I)Oj<0{~C)U%9>yklmRXubm2;XG8B6jbH9(< zt+dzBVW$cRtWKj+Cj#-;Jnpmd%MlF5Ytc(9Hem1CY&>XQgVH8)2oplUWY;)i{6C7$ zJ1(d9jpN!|TB1}+DjFJ+&V3ytDGgG>7H4PgR>!;xcbRb&6_|ZzGtYCl1>F~= zxa?W)X@7=3)xI8&dp2@-*eM_8MP0``E#9Q2{5FnxIi6Ei;yD>Lw$^{GvccXY4&<+! zL*^wj=AOY-9O-@uYxt~;b!Hw6U;8Ssn_^6i+t2?x%Rsn|o=Kw=%Ujb|2pIbHZkI zb$*xcMWlB{qMcweC-u;cD0YwHvu}r>U!n*M=1)Kal}gxUxRJ|p2%{@n#MxC!W8g)g zE~u#46ZNfH81eoDR>yUrUgTOZX12l{>)SN{N&+Sj7oOd63*=9o<8y_Ucx5OT#d@n? zU+Wtt=gnPmYWijBB|MS3p1#Z6?HL34^4Xa2<_U6XQ*r$`b*T32VOpDi!y%0vBKvqf z8~e%y{M=4s64`^-{g*I47u~Tg^ch}0oq!9RR~kg(_bb zk!9YGXn^FX^~%o07{9rZnXkp~c^*lU{Nvxqe9!Y_#`H|8-s1~V+264&P?G%aJ*aAQ!sCDvT3r8=-=j8R{_h5yW2Aw0HfJH)Y9UrB^X|Aed6>Ml1MXG5 z1+RGm#>BN3*RQNWk6&hN>aZ4#TReix2lHw5xnKAg_u}ryLfo9b$9RSJK91^^!TFST z)MIiAk(qiP?>=`x<9BMXL3<46YXzwO*MN5NIdU)UW3cDT4iqy@W$GOUacjVQPGIT= z`-JXMgLQQda{FGe#cp7f;F5{=(kIDLu@sRMY zh4@q|VT*0r`*5>ncY}N=o)iq;Pghjc2i$5fG>=u5PEyX_CtpXXoDJZeS zkZ#GyMThBKQ2#R&ems3b2gdPtl*el9)+Ko~WbGwlo#(>#XFGzNj4av=`lDXcTJYjK zS2hh|oQ2vHJd`(z_g=UW)4zXV{6k0V@SF*nVp^=Z^jvH^x*Ajm;P z|2ie`y@)b6y*HwTJ@?=VpACBdG7a4{N*JZDB2eiZKqE4gxS`k8FuA!3KW`eM+x0}b z;s)NCw|*225`v&PJQ;`09x;XUCbBabacqA(L^VpKx$S#r!#soOc=qxJ6wN50M_q;4 zF@DBe$@+LQ$LknaZJbJytauh*nF=f2nt_`qs=z3pq0Vu=K_#B>*=<*4*!59^-6?Yu zpIzCHQg%q}woKz*p4h?tKAnqa3WMplRjWZ?u9-e~rH<7H^2qm)&9FDq8V0vmz}-<7 zkSclJbgJ?YeE2yAYHATYeLApk8_yiyoC-!+uJC%nPrS0^8wt~RhZ2)C@YjxV!Q<6M z%oXcq`l;?El`_jCO{F8W<3}7w$0ozUj3dCh+wonPS)j>@bL|fuNx&Qyn!a_S&u&{- z%CljF2hHKCxD$PTrHth4{D_ra=@`oU6IM?dVeYORN3Ghw(d(;5`19Cd5He_hZ)ZQ! zh7-fE<aMY z)p%6Dc7-|ehQ*@+wk*?bMm~N>C9!LN3W9o?8BeWEuq)~nDOlYH7cK&c*rW==-V?Yt zwfD&r1!Ek4I0m=gJq8!z_fa{!bGRuc6i@CGrp~TNuMD@fRP&F??Tbnl^m!1GadQx!cusU17-y`>_P9$#gML;BX8U39s zgVE`$P-tf~-i&!~73fhzPwx&yvtec4-C2e~haIW#w+Wo0qJU1{XuvHD7~j zQ|H>D*y<>~JEa$b=D4E2{dRulD+f@z0NDo{(Nt(W7_-MhTV- zcMh03?H=Eu@Bn)18~Ge-g00R)7`jIhH06z{+dnUeeHDX4Vz1$i+qM~e37w>^PbP|8=ZN|J)p6K9Eh|l?~ zUE`i{Y;|=XrpWP`O&=MsT$qKT1F3xWc^w38VbLi67FAvl2i+^iv$nfF62+HG!NdDA zgc`pm`!l}sT#suocDxpD+Mo_m9!3H)^~r3es2)Zq>2e=Tg)rRZ0#!IEg!y|@;i*d$ zs0p$KepPxXC9w|kds4yfpfqbd@g2_=IEjC>_cjg*@jdg4_IP_`7d~Muu+V25d#3gV z6#vbFgPWQKyK>UVbJtEm$buKdZwl`rJDvu5W6klJxflL(c|%e|wArH0Iqa!$No#fY zT;_UG3a*jsrg@v!k=y;s=VLYFVCRSe?g?8VX#L2r*JsVaOM1J}X~Hv{_t%c!nWqcB zN3UXyqH0iOZYzA|z3htHEAi=p8*o54k3PP!78EePdGB*&{J90sdEyfk=8if{?9Rb?3s%BU z`3ZQjf0)tn8Vjp_ITCw^{os7UAEP)))=)Bp)R;bnf8VAu$D9_RxAGMBVb*bY+Qav9 z0ye=VH(7S`LTOY#dJ7dhmSS%pOBC{Dt>4bO16M9jVyE?=6m-9o1r494(Eniqe1G1C zQx`;GkA67}2yt+F#~)bPRweMao&@LG{|O>{1F6Nv$q=~BnT@P4VT&0r926UZTOT*j z;zmPkIT?k$2~C(-X@-vte+W*=JA+wfE8SX^hks^!W7LsI;-SWOB5NzbE6(+{)MN|v-5`Fb7u+|Kj^de zd-Ibzp38@f$0^|1vYyU<{r`!M3cfXyVSC!-aqzMOx`-Kb(JO2*VMzw_-`hlH-pFRO z>`1}`$Esk{3J+{p6ANwov&fN_pSadSnOk~&J4#+RgZlFqXi!)_&EH!L&(_|f^G>d! zZl>a_#RXkZJK2gi4EBS6?@B0KevuUZk){U2?l@~@E=Gl(rG~N-&}Hv^n7hA$Syz4v zMV9GMX4H?WhHvC|sTM3Gd!mVy6YIFli2H9{50fEO3}J8pq$&=P#@jdGt(*$i&DD~1 z|AHZZ#wDt`?+WBxdk5}a7hreS1lHdy3$LB?!BI9yKTLxyF=fog zjghp^=meQFtj>Q&(;*@J0lB!V0P6PkKzBtq{Q-DOI8tGfa5PY%+ZvDG7EO#rR*{6flyt#oxl~v3%!i5I*)6Y;DqMQ_gb?{yPBU zjT*7OssY;h`ERDE67L%2hyMqP;7>#s7)rZhLyjmIZ5hJ~M=C;%CXcB%U3F}>#sWF&y!_X;vC7PM--yR`!^{4!U`8|`yx22Fi4*cil7<2 z4bDndAhS$?-*I}=f!9mnSZE<>h!V%Y&Z>Ae=sc)JBvCuNsch8?eh13;d*a<*K;HFb zSefyiB)^LXNyU89US0;iBSz49U?I;>EvJrwreKp(Ox@!?(PcxknYVoigXX4;C#Io` z_+mjbf9|=Wrh|8QhMQn%A67>L=-#jbn|2EOx#)^H(b6&l2|Kam-yw=p7ef zHbQj;u|1MQEOu7nz6FnF$9%SAzwk`XPInc->$Vv9RWXUGw%P(CB*z_;m%~M`bKvWl zXJmukAl&*sz$m^hM#X1|f-@V_K|qyp%~mlk-BlJo&Mn5f!%xxLWfj(*vLFFRWVrTe z2K4JhV+a`g2X{6)a>73c$+64R$gDX>KqX$ATsKo7?Z*@agXS-xJhcL%jrvgjzCKsF zk>^K-98pfI32TDnIg=Hq!M1WW9Q|U>ym+V&g|2d}%=W`P_s$OWek)*$`v{&M9*dGT zVbEEV0t%)bBs#tyuq?+|d=mF4=6Ulljn?AGs*MfttV~SLG|jVai84Az?vViWJ<_5?vCpWw54%q z(NDN@BbE40i1&ruo=((F$8h)3iy=q1hE_WAeT)hhV(?=Hs_egx@g;X4&#?yoZT4pp zBlTT7hxq8?q@&ALiv1ql=|BcS^e+HxBbo>>Wkq(ZEfd=Fmr<1xRw< zqe3{iY&tcNQO5q(D7^3UiEg<21g2_af_e3Lwrj!-(vC=_KL*i=vzv+L^|#DB;ad1- zA&m-~@6hDs6o0?%CW+lG_&c~1cTQGdkNn<@bA~36ApwJ7z86W{zD`gpPa~(ZUxUNz z65hX{$U0tmg)>uBV78q({;X^TNk1n{6gPq`?f$UCB@~N&GO$Qa5)6iKf&$MKxT)`q ziD#D5eN`;V2tJ|_-=lS&k`B^m)w!C9e$-;aVsv)OC(~TQA<$ZgQ_YNr2dbJ}sC$sW zl6sNRMaSszSuTRL8KHP{LoL<*QcJcP`QcE~6r9^Lm0NUfHhyCAa0$N`BuuklgIqjB zUt55+*PlZ09btT_nu8u%0IRo5W!HuIqoS%BXRldGYzyw8cI-Q_@+wEAM>=p_gTWdd{Y{E8t=8`DHv=1Xzm4-MGADu1CxvIKR1q@rEM8f-f?8{(I^vfV@1 zaFzk@B3LzngeR$h{}EN%z)UA&tPAMMfZyc6bZgB2Y=G_6X)vOC2`4wdCV{Qx#GLQ@ zow(PI-HGp^YuXWf!LwiQ|NID-A1uXf4n@3=CJYr~Qw5#=i!rnK7G32M2pRJ!`H#qg z%~e+_^bum@*hdKHb572O$NJnEL)fm4lgg?L%rl(M7wAe<2J?(E@vI1dwYj*;Kcy3 z@;plpzwf1@CML6PSxg7VvuSiW-OB~X^K{0Kl zuP4RALjHYnZ{0zBb6o~aPhG_Fm?Y?QXeR%;sIprZE++Y!x!56P3e)zhgV0bj-LX6! zs!wcy$_34gyP6~}pCgBz^*2x^H63>)TarKLbEq;cgfLD51Z8TRLEXzHsd>$)7PJFP z`8}-0k2dSFtjk1w(K;r(rwV*Ro{?-~2UbfT(Cn_CIBIno^FAFDoH$&GUh-N*bmujJ z$*pKSr9BU)pSGb>K6K#Xio9_&yO^2OFGl|ylT2i(#i$?#uPY#yN zW%~rb(L-1n`Fs)OaXYZdCmqY`j^NMNA3*ix5t8A2k~BrRa*<*`$j#;I+#j8cArEG1t>LclomOAnYV5La#=YXD zu)VnfCEb59_ZF29i4t|*X|B&ba52MFeir_!>IS_ZyNOKQyAcx3@jYylNdA`PMuoIi z0blw=qmDc9fM+3myu1kiTV)Ndg=fHIYB-F}n$1mBA0R$^^Pq56I{dWFVV=%9MVcFe z1fn6iXtj;!!18_0QKlPU}7zEFf28dH$7`}4r2O)NVyezch z4is5~t>iblaMK?m;Z_O@)pMxRC2KP2cmSHey?`xxRlpuebCl+Dpnm)_Et28)u#?V`biO~SHR}*Pt{qLD zWN2^>FNE2gYh|F}agNRm+JN2e!DxLv48OK5g3JFN3hsVf!1~&R69=zxV0A8s9x@8W z9B*md*ZBw5qzwu@OdYWF$xYm#vmGAXo5+mwI0c2;IY`NS+I2?njp2VIb-RFK{^I!=C zOE|GzD9ml>vY??&`BXw%g0nu*M*EirGYOwk;8#IB&{%s=e(?%lov?!vwx8JJd5o## z^N=o+c;>+(sA>^{7k{q6#1SP3_RZp*U6J_jYzLfbiiXaLN=0yYdyeYN`Yv+zaM=oeQ*uGi&HYwLUspe}8P-)BCjt65q0QOsXVSMwo` z%5%BjQiB*guMID0h6>(wYv2x{R_L^ujPbRziPPuvpqQ6}|LpC!*}goJvSlAm@fISn z-$Uscu`*5w)I`OGDKAIoF zJ6DvUM>!K)b-Q4}&sL&nD8`%*Bp9f#hiUVp(BVrd76!7Mp`s5o^j48u58{}JmD{;- zlmAie+4^*(U^ZrNdH@H%pTOze(NH;k1iNbQf%ndZ@RaY#rmG9A!+BN!hL$jEm~FUq z=YE{p-AVSGoQql)htRU`BIBpD0<7~tQ>$+hY?s$d2>&*WlL}wJ`bmYbs^KQg@OVu^ z9`i2SZU2bYln?xKhT$y#K6=H`8m;tB;EEHkc&Df#+a7)$q?eYHF-NbVW6y0GJF%Wz zOwA;UCPuVRR*S1HNhK?m&w}P#o)}Xg#SY)7fPk4lsk4Lu#E$2%-+m{0`K9qWAQr>- z1p@iI3hiQML&kA8jNG#luD}c2kQ|O@&MGlqv^~i|e=Srvu-y7nni~6}@sFTW|1uHs z<(P&5V=lkdl@w`i!lw1Jn83LNGao4vzaVA0b<<7^?RG(1!xhjK@`GHoP~^@<+{RKF zBf)^WC{+6-K*iB;`e}U$=qVi$#LlHH!d176&68})ez6Kro?>q6*8JU2ak1IF(oGQO`HGhz#mIKfYhF1 z$k<5WlW{1duV_JA)RA|l7%j9F=A9_pd8neuy ziT>+p#+O_(JmcM`Q@yKb?BqX?7c&ATIz>>*)l!*|1I#}iBV7FR2(EJe3PHIxSmg2F z`9*^vI6UDr1i$+RvPT%`K@GA$-4nVNM-iXIZW!e|k88FF0o#)TJ^_2cOyWC8UOS27 zmo7ua*;(|qtv34e`~2s5`cx!_Vz7oIH1s4x?LZbtntp`5gfLhdV1gr)3sCvaX{da( z1Y=QB zYU4eOyklp55k6P%B=k@fj_ogiZf_}C{`Cvob-ziEjf*BHPpI&&9)9*=p^O8*t#t0U z8fL>;Bd|E+k2N-7=%?=r9?R4rI>`yG_)M*0wIbLxU*zv&ZaB^8A-S_e7y2~B*$-FD zx%aw%Da_^G<4aoF{F^TTmKx8X}hb!8`kPxjv&bM(ao= zuqoB#-dta-&=WxU+1If5TmW9^{6_C+og->rKfzN+6UfSshZB3>$#e{` z3v@w7D~Na8nNxqC6s$2M;B;luPdXyOQch`=_F8sIjn|0T3Uu@0?T(5hU@5rpc{d=ORbVUw-p8No&1;6%A#)`0CuU0qy!^B+9b z+yoMp!`MHw7rXDa@h)#Y{J3qo;G4-i`blyw|K3ceb$k{!+*X%out}oL(r0w+-6O;% zbqeEueJwTeI01t#moRhmB4sArV1$%o1YxaVbP90!EC%#!9288o*2#CCUL zcs3Tp!xYH6uVXlWqgvdW&AU7_S};xfF;QPuMnS3^WzJ>6*80~N(GdlwK1D#x<6g3l z=Xl%Pw?f|;W^Bc*B>JN(0(+y*z@=mV$nCJPI8$d~6A7D7UFBvIt0+tAuW=kC@=wr< z4~F=zS{FH`rp2C2o{X_~PSSs4hQQ?fajH{l23x1>Wf ze(@Rk6N7@Dx-gg@paX%c&%hDOXV!yrLgCQQezfg-ixy2Nq7aZLReD7R>nx+#?5b9L?dG&{uWvbX7ZS z8yAj3?K99?d@`FVzmcXp?4>7^7r~YMTnM@*1xw>Sv32|i$(Y#+1D2baACUu~DlrWo z3(g9zO)%r;49c;8oz-C5s3jYpJc_67v%&Oz7P)fv6_t>vg_aEl)YbX|FxI`eGs~ZR zf0&3rEF2-(%bL!d6bbVS!eO1|E7+dk0tTPz8ajQ zwQ0=E>7;9kE6Tg{(kn0gF~7qMa$}Yd`D5m=c49NsSFV6Qor!pQsxf(2cougqEW?)E z7V_T*794I=!I!`!%u`-0nD1N$xwlPFLADUyO3nk*s#9>;sDLcc69pp~h?Q#g=8*^QI4UnUba(v7Z4o6Y-~KETp*}X6i45 za7kk|(coc@U|HgA^jj&;K2|$T){Rxit?Vp3Ej|XuyUj;ZB+6Bkt8$(5)mV?keI$6R zA(o_VWNwF!lDF-JaG=U~w%42xxV9;iL~2F}tgi;cqn0X|EPfJ0rJq`#H<2RSG_y!s z-ECYOqXs5xt=aC@YQdj#GVH10Xkxp9rCvvJ$*H;tXzud>LjS#BZt3tj-Vp^@_Pqg~ zX{ocF7*0zXlaY~(K(#W$&VKfS8ch^th70fG`wLEJ%bQ=UEyv(&KR99_rir}eXoWLcNKx|o}Mn(nAdf-PI!~UW4ksw+n@{2reJ}Z#T(_oXo){y3H z{gC(}44afQptMby6S<@euh(BARiEt9cApD5d3Z7X{pJ_(Z+RoI9=wG*uanLP>dvJT zQtCn4MU-j@uAtMCQIc&u6Ke+>sPN=kkXcuYZ)S>f8CO$?ZL%Sos5^p={C+p0_!Ir` z>zPVpkFKR!fLbev(Xq$W20SVLy{RzkSuR%m^$3of2w z+_e#&k0p8nvbH~F#1pddmvaEFsg6Xmmj+n4xq@ncUJGWnVc_Qa(Yhpf9&W}&{O_j> zC-=P`=@o%MDM*5g-Oz}oQ$O?lM=QMaMTBjNGeuhso*_O ztrmp>b4ZNu-20%-6A7+ydpe4~7{+JG+3=|36D&1o!`PCeWMun(M(*nw=1$flh@5nY zvD|YJ9;}F_?)|^0#*0Esu$}@x_HD)zmqxg}=LntgY9;-YsDc+lU-EN`IMlFaNb0AV zOhKy=Dw~=?=*KELWb94ougHQm zPlloRt2Qi3s>I06<;;Q^H*ohfLrm@I0XoMG{p?TRb-Tsvc(aZ0D)a_~ls3_*CpAs~ zo(ZwveOjTa+?Dw}Q30EayzuwebEMPPlTNowgJ|7+OS-J~-y})(xJp43}hw{=(G3!3Ji74(~| zkgkA3n#XX%tl4Bv>TPL&Fr}#BA|y@gO5I%^xPusUp_~#JN|NEAj2G`It8n4t2~; zy3hJH$(lC~G~an*|F&cza1F-Coj(Pq<+kIs1sQO&A&soH>>&U6Giuy|Xp;BnB{+GE zqN?h0{P!jme(lmhe%J?bBVV!Qv>&tYf+qIe9*gU`v(U0Z0v_MI-qgnD84R>KU@GrK zQJ5Y^Wy-annPA%7Gq#shYDG4)XS!t{_NjR-*jETmpLk2#b_;2 zu=fY+I%7;!U4mw<9dxvFC5YDUq20FUNq%?_F8Y26GCQ|eRo2dgpNAhYV)dEu@Wvu+ z8M6#$Jd%TqRU)WdT?EoUL-Eda9lW@<0OqMj(QhTU$!PT(bm*@JT7MsNH+6&bwFZ10 zVZo(+o7iZopA12vVYoj;mVNkn1G)B3i8YanqRZu_U~xnl^*Z4UI}07Gmo@K%w6+;s z#tKK^3W~@b7j0bSF_)bYcL;M#?78}?dcL-Nmq=EhqVa*zIP1_ifuguEXm5;%y}mrt zsZE4de|iSf7&7QRc*IKS7{c2X= zmn;fT3g@uSwkEK|BoD{Dk_Yia6YybHG-m9Vq`6~a;dZbk2H&lLTT=Ik&dnp(k(ml@ zuJ_1}$QG1b`;S>X#|CUIF9_nC3aMB2Rd`-{l5$Vdabil8ppfU9nz#;w;w>>O@Uo&4 z0&>u>DjkvxqM6qr-@*3qeU!b@h|&?FxHD=4zEu7OQ}#Zj>RF)}lqbnF{`Uy>Sc|ji zn;sLFXZ##^M3XBBvtm{!R6~nu_ZGn!{)6r-0M;XVuDV;8mkPcNdrSL*~2DYX- zV|@QL7#Fz?BNM)nlu=bE&ACgT`duX|!}`#8sRfSQU4YhR?qtn1ME$y#@Hy>0s&yvf z*}QUGy=FJaiGG4$^?jJAa*U?usB%Lc%V7JYHni7s0UL`-SbA6%=_w&@{Ll>;v*$JV zC8V66?_P`{ry{7q9d%Sq+XK6n++gNBEypKiBYaoD9nw7&(Os<9`bCQ{J-z-YSgy6_ z_ZQo^q53b3?O7XKbQ^H1{dK0m=QotQ9D;bC78?2ASXS~^hTtIU1D6+`$GuWRuvg_9 zH7P8hgEBSDg-;d4_2bJXPNIvk9K-viPqt9QlzNij{evt$Gae>i*XO*qR$+I%FzMVc zPjqgN$M!{0B-~$^yZl~=^-L^dnmwa&eR3SCz3e6(HD8+&Up>Moz7aIxLOuzr{Q;jJ z@a~Uk@~}r%m9xEg$vW=63tayEQgGc?f=ddn#w9LWh=$k`IQ#xFmFhi-dm?nGgPR!+ z4D|?-WyfLXlW%lZNFN^bzsUPQO}W7MT=rtos`+~MFAK-X&3DEdIioCy3oEtA08eN;vTL@C2v2Op*xClKHn-(=CUh(5 z%NHYi{29)CKR~3(O=@4Xge+Tqk+LFdvGmjxTy-&m=wFp1pRy#V;DI#_uHS;Qszo@Z zafxJQ&K}|-{8iv}QURMT|D{2S>&Wr7H;DU&7Z8#=6%;-gaVDD=;*`JI?3Y!4p={KN zF0TIs;jcJ68SsVN?G|IF6ibi?yA;`zl_uO7qiXPdvkKGRZ>9&7?@-$>JRel8ge-fo z8(V`ez{`^R)+h9I1P`O+$z1yjaNRhHbSzTD?c4tHS(3@5{x8q#5=}+PkDrO;$antl z<)|3zhgI_yqHV4WY`H%jBIS(nfK4p!DrmsUTPiRqSE{KXZyjcLFUC{ex@4)h2zz=V z3dVhAQ7l#*rxvMjZ$H_g{%IAi=}m#a(oc+CmUI=b?(71-m&e^@573u^IUwbCiI_TN z!DL?rHgtLo?416BoO^o;CfRAhpSy&5{;3AdbQ9vW)sbD-p8{Pn3+eNOLHac<74Dq- zf&Q_vh|fZ4o$TMH+!X`#&qQ(7MwaKT*L`DBU5CjYtxu4Bp%AUaZ;`Jbc_*h)0!ob$ zg0(Hti2F_PU)vxV9M_0d(*!8BJ(Dgj@1Rd+@t@0mKMdT=XSXMZ1AF#4KJ3?HXB^sr zkN=wB!ImUi*(1y6(Q3#e88PzpQ45`W^fO8RnFQB)hjUF!KY7s`%Ji=m;pWD)g8SJ} zDr|on`s^=(+e5y;H%^jO+pNxc#|3cfo^muY`7uoRpaTWLF=%RapDBH}gg!~gCJtjB zk|8Z!_`NS0P7l`7_b!s$v00UZkAWA+%bo+EKbj2@io&c~t^@Hp!#jlKL)ef*9cY+) zhr}0%!oI;e@Ad;Cb|T?N};ytd@K(s6OAh6%u&<=uMn|`4idw`Vy}0Y~y=6-O!L43y1nILT>yPfw{y9+_EtO zT(8$tE%qU4`j8G|7fFD{z7u5Zr#4Eqm_h*W9iQM60-Mu*;VG-LATp2Nf41u4Fdl)t zBhi9HnONxK`HYUEZ^_4Jo9T)AXlhEA;(_e1P3gz4;l2TRZi3==TX| z-4>^#b(^tt6Z*!hCznD%t*hWhC@ve|mP4at9JeFzJVd022H(Dah zeK)k@*)j$s?XVR*GrNp8pP9kZLQTQB6LHX&G9Gtlr9tSIJJ9{I8;@l^hr~&z;d!Dk zJK-5WyMGeE`%+(nvV01@ns5`Es=m`JUS}X?zTvV0!7asp}zhUL^SQOJMRlpTM;2&!paZ6NH*wq=%y~H65^v zBa`**U|Q~vrtP!-kdtLC7%HJepQ|{-2l4I9BAmzm6n%?zJaad$rVkF3S}{hC!UA4N}doc}>U z%Jn-z`<)q4TDc8ATTa5}T~pWt{P*ECKRc}ZY>&nE=c%%WJoBp}m%glE&}q~OLKX@@ zWXV~$x2~5Q>yX3WJ_7Km^Punfy~-QQG3>Z#MQNeF+4+g=V%{4XGjCO|gcoHpbURw8G8>OSlGhx?P zf1;A###l_rr#ao#XsYoH2NDx-Ze1DAckl+;ce9&ZqcrJ}Yj*_VTeg9JNiKL|0R&$0 zf!e!)a3dm{YOZ>Mkt2T~^N@fTwtXZX&rj3tFH(4ajRmB8=YUdZJ0zE?v7gS|Cx5gK z;=;YF@Nv^1ct<`Llz%HHADeqI*dUW^^$vl!}1?x3qTojk65 zinq>OC;9yQOXY$-$gO+?ekX-!-9$vK`?EO7$I%cH0K0N z_f8Z+yH|#|^K2O%<>w>mas4nCTWLnrE3`MIzm4f<60}V3>OxeKauvj-?_>!cp8%oIn(xhtq7&96WqAk)(_f zVtVfDQ?oTum+Y<}N9M8@mZ^Ddco)UHj!p+^q| zQ4XqTF~1B-C5D>dVgklEY2(Jm8O#iydivK=i0$;sqMbZXs&E5?fWkom|{QLkr z35To7XTjF$Uf5Ky7&i7$!rn{8N8D8C^|FUX-zUgMsKHga_f2nxIvGpjIM`hx3&Bd# z)U;2SeX_KWT&}G}(e39!MROdt{R%(x?@CAYz+`YWpTuc=ON4{VS98}+WWto$eBVy& zAchXl#9`TT$Vgg^^PB7N^qR5klDY!W6gt4Wsi(kcy;Pi$xgR~ra|jRc#`1=v)cm0{ zw|g2<{W~%Bq2NRu+k|j(GhD9WknY}&KT(KBr!}CcdjDSw879K8ERHVr(2!2kuihW8tcHJbpip=Fi&6X99TMkD)9{ zCf5bJ#WGagAO>~C^r1m>0TUUsg#SN#@p;(cjt`)5F;i0XO0NbOUx>@GfjBs32BJ162M! zg(YV#(W7JpER@~|>OLu9TR;+U?P+M}{uUH+RNw~x`)(28iKR1kW4-($QfeZ?nszi} zYo;>29$t(#65;g3uvDupG&vpHJq%y-dvC^{Zw z6=y+yP9WasYlL_8b+bQg8Kp{f#SjST-1p>ZX#l(F zjxcx~FD2Xdt%h^PF<@EJKnL!o;6$Yd)c5cTTqo&`6FeL6+eSU&rY6q{|5+=@%PxW4 z}TpYBN=A&*$CQ53rW)zCtp_hfs362?oRcF zp5TjEb|M>}Y_p*E7N2X1A25f!5gB&Ma^(A`Q&{)h$0W9UF4b;`A|*|Z=$@;`J-e_M zTBk{~k8erx9O7w2pFit2$yb1GvymXTdo6Bz`2~wA?!q;0J3N|Li&Od(@w#;hZ8gwl zz6#}{;srnJi<9`gOy6QIPRNJ!?kf{q-8X^TWT}daUu%-ewG2D&{vQ0ue+D}>^N|^N zAvnJ-6vM-d!Qk@=<{B1*!gmX(duE6m^=9FbCz^QE(-5}J6%j12zKtbI;^BKhEneF1 zOa{TZ&AND#sVS(N`xEDE{)z$Z+ts~CpxY+|zs0iu4D9IgSZsD`oXJ{^N0drQI zhu3^|$YDn|ye}TZ+KH5dPs}*zz&_ZxwF7tVx&piG{?T)WfUCk|!I>E0j-+HXZmUFV zQ!U)DYKYo=AI<+}8(g2nXQBKZaLCA*wGVy`cP$q~?E*{OEftEVlp`VEu>s_c6{Bar z7iizgz;Vq<Ajpf^sLV%epzif4we${mI=+;-exsEDsVB%o)|IYFOoCM=yz(J|y7 z$y|2?@M*wHR|DWta2TIw$)QZB4yZdCk&yArz+&r845}ESpH1dsYVE!};Mcco^wxyLs!@`3(W}k-QGIFr~TMa6%9?zMK zxPr!x64dUcnDRCqS{8PYhL_s}L*X*4*e)^RzQ2|B+Q*ULz3bQ;;rW8xqlIX`_X3?& z8~}607P4!4b*-HnqOtp=KL!WH(rLkeu*LHO?#`@+(^qzpL4&if+$fs7UJ*nyHVLtH zuHtC+-#h&8oCt1N*#T2jhrx2C2#Vg%!_+Pgxr|z}>zX4x5LyPtMPs?XOXJ}>pQWZB zfZJZ&Pj{Gw!o@%Ju%uoTmff+Uq2hme@0t)O#F)c^mElN~>p@|eCcH3~q*vzF;(aUx zL)T9F>&hSz8Zf2F|2m;+8Sg5)*NT=4XOgIE-jJw0kG8Zcah4{rU^ONIuFhBru78)J zvbGfW-6ll{^r3m6 z6XXa-y*gm!b2UEe*Nd4)<*@SKy8khB9{yOpVHh{EXC#V}kxD};;ym|3R1#8tX=!hY zrlKKRM6&lv$f%60_qk64g@#g*SriqerBq7&&OhK|z2`j7eP7r23u`jA>WFap7trTo+>%?P@|52&FB7Aah6@0pS82)qe#=l|} z0uRAAa>hS}hEKl0+}v%=+NdYP^KFvUJn1Yx%$-BWJ=l#BDuLijD)HFYH>RTZjEMKF zU4lNVEZ97!5UvgLJ4eqk+}^^c#QXhWlIG55$uk1!;qjNCQYw>5w6f&=ZZ}+Pe3jnp z`ob(+vXta}+lX_WoZ*_R6Ai2kfxDG|pniER>U?(rAHV-hmzb}Dw&T3FMbQWXJJs>K zhb7Dt55lVs8_~qG7P~$C`TXo{`0VXZyCsL<&e0S!yJ!FvvmTH=qZ)WT*8&gC)?iQM zd_%3=|3Gj1N4j+1TUZ=X%q*QhAHK|Zh8s?W!8Vz2v>OeAq`}ZCsa@4nBS!{s`drjD zd;weRyK#w=C2N@T64W$}xju6ZLAlu$+W-9>I582tqe_Z1`7eMDWfagKZ=d4#bJ>i_ zrup>0loEQ9XC_qUe8RV9cf!BF7pd=N0XZ4(1m8bPlWEWTu|wyUsYH+tb&Knw!8i37 zH_c?w$efQ67k4oRUoU~^R*DPsE}_SXLX1?ALGRb*Fo{1Oeo5GbF^7%tQ+EoPP-#Z4 z>56(}}98U1v+F zbYm904l>3${qZoH?}?sT5lpqhjff^Zoz`*6d%f3GcwWj%+9WB#6(J*9sSQ6Bk?tvteQr@Eb9kJ^P8x| z-~9sZ_^jbML-cC)#IdWTNS6IJ&|Rrc(~6%6yql89JD*jk9uZMx-_;F6MQ@35J6-9Q>wQHBLv3KseBOEdN(t-SA!u7;d@ zCkiL`!~@(2AXoQ2BqdL6xe0$>Lu7Ru?sJ)pKVNBa(Dw;C3$qS;yUIC{{|h z^onsQ@r&Wlf^u?YwkK?=(P2N`u7{@{H?fMGh0p4Lm;~86(A~L?T^OJ*7}zEciSgN> zbN?Ke$t1&n?v*%g=S`jqRmZ#JgYnAKN_ZN)(zJZ(GHUD^!KfRw!;BU6uxa1~200RfKN(y9$mKOOeGlJ~KOyHj?T=A5_~XiXD12&>!-b_r+S`qsU*x z-fJ@_`foahCu`AV;lF9z!sGNyTMvA-2q(ua7obz-Bj|lw20`n(U~pRlt-)cL&&8MR#p8+ZOAmLb+yJIwPZc$U}!J};ztw1p^t z)}$9V_@Hp(eY$vs1djdji14RJc;qI|%@f|iYG&;pGoc*=T^Kg|%3R#OM-OVb z9vZNN?+;9T3NcJI@m{@c*5HZ71HsHwKDWJCeh%zW?jv36 z%u%88B22fj0Daq5Otp@t4PCxCZ|!XCoV*pX>!tCy`e#AKo(Dy{f+$ILoCu-txS>96`e21+6^#X0) zUd3}|br3LdlvdO!z&pPhvh}DheV!wP`KJr%leNF8n=j%0Eza=ini7tWnF_aKDzNQ! zFdi25ClhLYA!>OBj$Au{TI&nopy(pdo*FVrMVC4$@!CKuLfzm;zTZ9HPggNR27)#JL%Y(Q1aB|9`i5Ofb2Gq zN9(vpcyP`u#y5e1+7>Z3QFa@bw5fA>gGJC%E-m1g80(M~NeRCpW(U zFHKFrI$?AAP)1eY>fgchq^CjnrwnK;KY%ZJW{l};QSQO`yLjP3dY=^&P(F@!~;UF%!EJl?h(Bw8`1OndU9^w zU8GxhZ|IBhTtvz`)I7hDd6N{v`{8uKB{7sND&zBx)xj97sKdT8?*RSL+dQw*540y) zb1grLss6gf#Qm>3F52Q*Roq0tP2P^ye)KebsQrrE9I?h6=>ocR8qYr*y=l5kVEwicA_>zdqr=bi>G)?8pv%V{whtVmr7fkE@9T3tziH6 z7bZ_@F*QB@2^Q?t6_gEh2;`;11i6ho6a0V>In@$mFBSmjdk3OD1C!-EbbC z3ldwRgZ7gb(@j6?V4tEk-Fm#3Y%WbFd@dPRDrJ#w+=FHTsv2p~5NG9?BX#VOHXo6&>6vQ}Wjob9wiaUbc}VFN8u zQfx-zdF;^8rfO}gu=i6aF&+*F9tsB8Aza;8x~z zw;}Z^jKxh}V=yW!1Uv6pQmLbbsFBU$y3KDeb+q5qUeiM0eO!S|erJq_ranbSUk5Vr z%{lm&=8cZ^JdfdBBp&~|3hVbJ3RIpqFgcYQ4wQ zX`Re~$dCzVB#(vPdLiVbBWIf=1|?ry7-O|`OdU~Ud&cyWvwnycBQHU?k$->iy>;0T zZQl2B6@D*00l%%b!O4XKruEZZXzMWtvi|)D6n! zu0HIW@rtl!xQmdD(?~;j3*KL}3~E6cX5TnVYkXxnXf=h^M;YGrkSI7NR1UtKn{iT? z9(idr8+NuBVUE-+y7BEW9xu27dwcajMl=jQ+2@wqcRO4!GW^=Z= z(wyChK90Hd7B^(MQlEEx9=mg!X}j|%9^b9Nyo=n3i!9B!d=i7dVqZd`>s5N(RuYaU z7SbB;=cYAh17RlN*|QP;Waq+6C~IVi(K3J|QQ2fgxdyAVAqi`mmDnFC*Qr1M&a<`P zJ=V>Ba6a~eK#(WJ4*%>BWOUsnQURg3`Nmgbv^^Kai?8BTT^X)MRvEaKbll}@A{eY4 z&;77&p^-Kh>6tz|FvyID>&1Rm2BVhTMNuv8OH&zL{+i!am0iM*tIoiv_ik=nhyhNV zZv#^DePoMgI!sG@izD6zOtdek?7}^{&MYDslL8@?=Qi z^J6A49^m)Bgc;u@iD_9oF{+5aYjmv!L6$2V74<{+`!(dtvJ|}d?-4bbejc=c*HIH0 zb9C^#58|#m=(A)3KKO86kaXuWSD9Qa0HU%Z>|&@ZN)t@4m3l7@vH z2hfA}-stk5CGCZjai8^wi32wfxv0dMz4hT)tr&2Vn+SWXqy(mqO~u)% z*FY%4p9$W^(DgOyychH;4HnIE^PzBM zjLGPEG3~GalIE>!2K{shN(4cy7z7r3!+T#wV$r$1m9J zwgW!ttVQNl1dK_&K%PCbf$;v_C_Miu=4GmLuWtA;&lXsc19r*~VLAjOBEsC#o{2Q* z!~;w-)`Mb^I6AP9gVC;fIMWK4;{OlT`L4Dwf2ItdA>cE{Vyse-7gop|C9?Vv&~3!R zcL_hbPsb4N%#&jeJQD+>&?d-v8A1Oz#^L3JV$yfkjD2SAhaDm}h&#`x|L%N>=#LYE zApZVVe0n1UvQsc;!7?;d^`(~|3BX-1f-aAVhvf#AkP*Lt4E>UaA$ub@o!22avAKwh zo0yHkCF%HHKak322jJ(n1loCN0(WuP87qsFSa+vwI5H*yv%hDc#qk!jJAVSLHZ7nV zS1g4&It$1Op{3jzmtf9o(L1u;Acf}VN}I}G=*H!8q39Sd&N`S#lV{EWzA`z*bbSrP ztRv+hVz`D~xZ^!>+u9FZCdW+*jT)fc{w~<-w9q;F*=T7Ik10OZn7FTvqj$6{tD!%AHN5SC*58OlOj``ZeC{C?U_>N1Ylw{Z`emus>IexHC?(+K*4 z|2`WWla{=Re@x{*{>Vh@XePsbliKRhfQY2RL8N271J&Va7fm5IBqT zz3o+~<(7tH|C}cAG=N-i4S_U|H?VpEhdMLW=*(wf4w?G_q`JI7z(^G-o*BFyb1V7eRSdtc8-l}p8N9gS1A3I|qUX~aP&Y@O z^%oC=U(dpbA7@AI*xI19h(10Ft45jgM*MD!?;i4V$8e$d@cGGD`mbA-bZ@4Dp~n9h zJME*e)9xP=**hIIGcTjo^A2cuI*p5#(uK@pZOBbhL($S(kTUFmfeY^7qyb58*ljx* zS67YQmOH3z?s~GTG885$9R;}{N9aHCk`_;0#5)nE(TJ!+aK*$9;tJJ4y%J70Z4?_P0OLF5c$)VZG4w(PJ47JS; z;;cbuFYVL7PjT=72dd(`cXMT+B(?MyKUnqm4KCLe$YL z8da%9Q!K)n;rCj&tMN2OItUXx?^r6jq*U;^rySqjUI|{hSD<^QF0-tvo*W*Eq2Wht zaWl_<_;x1@^HYYY;0)hk9=^_R(`%{rBOM(0rwzU1oMC9g0BN^TVNFWq;n)KuY;3xZ zQhSq$nBgA$Q*{Ps<+gy$8Y`kNITL4zI^&YtM?kOj3(8*~B2FLO;H$qi+jSxeQ;z%K z9?ulq<2wpT)-iDKRRr$cc!92K?WRhOGhxdmg!*L-RM$g+y)qzgdJUvNT)6>$8Vkc? zgHw$B%wSf4F;8TA|Hg^9A&j5Z3r>8uJLrFd4tj<}2>>tvYql%F~Ea@!=F<9P~ zLZ^Jaik;tcNtbgHY?c@lDD1p~C6&V9n{JIJ+5WiLq#BghWZG9j|WW-5Uc5 zm|2Ua{Yfh!E>j097Alfp4_UVL=q*~}^PSwDIhoCre1uX*bh*9K6`*vgj$}L>p|y!y zaN5{(a`xL{aA^BQw#8c0tqWT5o7YJ)I2b|a2N7!d<}&(^--1i@Oz6P&HB?oy20n+X zvvR&wq`+jMV2a6CNNf`4V%BnG>c`298ozV?;%tQ@OJsO&k}tek#dmL=U(!dra)An^ zGX`V_oUA-g7M&}^>N^aMyVr&nZ_9BpgYYgIo=@`2|>3x~ub1iGSEpiXI{!17%;@8n$yFKa{L^9z1Xmn+Yzdfb44zfJgQ zx(=k;IKjJ@df0PD5BE_`JntyZy*ND?_ok_FlQNo^oA0f`rRgNPE}R96?wO$L);W~E zsU&JrlvY@-rPs~Ik$-7c{O5Z)d?<4w2acRYV>T3fda_abst7AKqmZn3=_PR&-O)fY z6-t$&u=VsD_;-q*?fg*SI-N7A?4o6KuBZ&T_4^!&%Hn;1f4`6kc5zs=%Mircq?x3| z0Th22Oin+S;35`HAZNdBBi<>oIM#Cvn5D6B$@&VO_?Jr(%Z(vE-3Y@!TVVFCsUVr- z2oKjBgT(ju$t3AZC>@f6(^t;M`67Mfrt~M+p;1Tm3}l6zg-MltL$N?*frjdxfyfcj^joq5IXDif7GI|85DVTpJA5?IPNV+mBewJ1M`bM z2sRPy4)jFX>l~b{Yb0sWsVMll5IVoUfN2Ti=n4Dryu&>eiYw;9+8CZ0m@5aeX(edY zsmv}n84=w1_LuA+4@gluq3Lod;GC~6*lP2be%S2*r<5A#;51WQ*=9}O9$dz=5c&l* z4~yZ{Q7JNiUm~+s3vgoDT{`*lKf+Itxr4Lh;qTTa#-4^^Wivur#uj?3uLP$^%p?w< z)p&PrE;_qQq6NR->6)|^Tg=qB8EKJZ%3TMT`f)#hUalr&Zx05>Pl9&l54qdO`|d6r zLh`T!HeM0|9iL;gVel&*_DaE`Gqbq~iLJQk`vSO|eU9p#c#eHmzL42e4QJDTQsS=7 zMfg9bQYu4K%6bO6q|Ab4N9VwxPzfy9zZh>mPeWhrC19~ghrPl@(ZAj8RQwp9-F*3l z3JEu(sNQAReqoT>s!bv%5?=_qa&`)Stx|$5p1m|O)Eai(KTOZ@yHNMj5jb3Wj_k;L z#r(VW6SsP0(KE3Y5MS_?NJiU|_>urB>SjwjcSOMAJJ+z}8&rL%n#|=-xy39Wvk25K zD?-hCf3&q$CtopSZCp56QGa(Ij<$T0~24R-?t*5uk zm*RMy-SVtGm)e(%AyFD1>5C>MJR_EZC)VGFMY{9Q>_`M1P$oFf&8#XtF9LMeCcv1g zar_tC0v$?+aqWNW@qWSwB&TO^1{ebkDj%R#={y>oUj-)X^EARRHa-xe-4ZUy=!c`ZRRSzexkeSf$7A=WE8rjSo)+FS<=O*U z@#u^uY;xD+^6S*7MfW1=8fOi`hUYMPOdYIEm(TBwVHG-VlU)CO z#9gHUb{~CD_kEiWlEM<;(6<#F;=M8Nm^V^~9{3)S54s2ML({gSDBtvxAwAu6yElQl zgYmFfrIBjoTmap!rGl9*m#P1k5xg0@9e@3~43i>X3HIkVA+hm-2&2XDI^hV8(a(>!E!}7vHdrZeeHN2Ub^ZFa?-P5<1K0Mwh90R zi)21`cZTOXK4*~MQD!d(@1ZehLXHWSiNr*j6J^?HBL%??JuicyjA@GHOq{jH*4; zVciaYOj?}^!fpcMGQkWNcDyyQ8=s2_Dg*RJcmdokD@D7oU$9Da6(|*{aPJ>x!QPVR zbk@`_pk|Q^v#ig7k&7Mv){G&phyF0NvOkEo!X|P`s0iIH>~PALlki{1SU6z*0IhTz zO(v+mgn_4dG`g(`UtaWrM^K2G(m^OXB*e{6w&G`ED!6`yHvfBg4?mu4g^IYRc*-UL zwv6hbeYgn5?dG#>2`sh*YT%1)9b~TBTXOz$2ORfW0n$N|Xt+oOnjNnT*y@{f?Y7T! zhVCQy`e`TccuO^XaY_`^ruEWly~kL%p$2W@yP#4{hJANPh08Q}gaRXZ?o)3$MEeTC z$SMc;r1l!ttE_=xmusZvU@2pvYKd-!7kOsRVb~Tk3l9DB0ClpG=j^Scjf-F7v^OK< zidQKAzg0#%durjL^Gmp!w255#YQRla7C@=bX;djh+*9Xes?X(;v%kE^kxk)9i^RD~ z&s-{WJ%~DdQf60#&&Jkf8P2$hzl+~hf|yghTfK^Rll1w*#s7lnuN-yKzL|jR^+}{j zwww`nv!e2{E&otSm4$^aq{nc8|L~qD4(swK9=!={oyifiuhrm zGO8Fm*$5N&stexmypQD$?(p#70`&E$=UuuHbCGJDdnFzW5K?>Djq7NX(mlHNi53@GRV%nOGz8+=7n#Bj-9+A32ATBl#8i8xV7=jc=4^2jRy4j4 z=-)p|C;uB{T6tc>y`rx;)DnS})nV||?Jc?I-ht{Pmq<-v8N}ATrE9||QUwX_{h!&` zryYSo%2D7_?24B%#o^DD;i}a5=VZ=|DQJ0mH}2GUEeJO{k0q}saQ{`AvVA)@L1%RB{6EIh)*y z;-_n%*1QiszLbVr2R@S0Vn3oUb%NB}2Ep@rZy?sO5w@jFWA*=5@I1;nIM~%qy(jXH zd5 zStl7P%BM^~8U$zNlFyemkS%t3RNhvR*pfA{+ITLG$`s%X=W%?Neje|SxJg96>B6S# zuj#4--|5sX8>#f`BlyMcG9_dpT<+21Q1u}m_;(O$w|kPmjt+44qZ>)96wnTzk5tw} zlvCo*Rv#9O(sag+zT1~fH7-{Qem>Y))%<=EtDi9zt_8P)vuQ0pkWk{rUns)mQ=CCE z@(S?~E~bYs#K7L`4fRtPh)G@vA5I{pwZ zgoq+#oLzr~uH7(|m0o-U%^xVU=QBfqQ+0)BOfS}LiUcvEG2DnT?>)aiiMu6p3}*R= zLdio{s_>sGtKZzgbLjcLVF2I9SbY|ZbYDQaf`A_Ke?{tIc;`-x6==TB75vq8MK!BC zxvkAG@tsdh{l9M77fQ4ppgAM zl%Mzzj%cXUB+7ft;xqB{jn6EH>e>py$RE3-BtZ1@js=#QWHhVWC5@NkK!(62~ z=wjp#A@jyj>!=Q*IK!4+nxsiGIX&(s`%Y9})*a zWdRP%t;RORBuL`f(Z`JK$P_u?{(j9MpSwTNQDsvcc9vvQN5r@*))DlF^jXuU?n?Uh zv^z)}`a*Pl09Ib%KaT+oP<=2LWO4}mtIrme+}REZ?fmTFUKPSDK0{v@h59a<#Ah$h zdp><1xqTxL_aYO+WUA@&+-#g5wu_XyRuG3>vtfF>8|mQY!&2RJTwsZCPq&14z1G0< z8!0uMH<5l47GT}5GpRkGBv7)ng^crMsG*}nD)Qs;kNe6BsUly(S&UlAIbAQDk$1Ahg}>gk1wo_!O1NZM zeJSma6JmGHQe;n6Zh^K}Ca*$cx0E%+n zxI=6hJk5VVQ2H3qJDCl;>kcC`@3!esmKn_YWkoM_^Xy%bMDPoljFoxY;L4$&yIJ z&SBYcUwlBmgF&k-O0ECP^97F5T@(J0!p*l#6WXpYSKiD5d&O(ylivz1_2^Srd`pLI z92-rxOk566HvWWIk-J0>c2+HV)sAV~d$D*p1q&8T5)A*c23MnXki4At-?_SjS5Goz z+!cfC_B?mqDVs6%_(Q5o3-P}MdA8_G3j8R)h#H|?aGJj#e`&e^zIVrgnQuQ9CT9cl zN1b7(DzT!qXP9_r17uIMl4*ZAc=6%_2FC_asR?Z~U(Oh<)pOzc9$9K|N}HR$sEeL| zk%aTO>nNU@0ty>WK)>7sOz7pa@u$DiH>P=5oBD(2uZ|aJv^bOK>z)wdIfs8=j}6WRGRN4opMuVFn`{1#tbJ zCIlIXa(UXhbl{&ASngRvct;Wd0apbi!RZ{TanHT3jx6xg?& z295AXyi?Z>IrDHBn3@TSV){7ygBRrNYY@EJKTdGyL9#$bMWya&ilpuQDssl@>L_ls?JhUeaQDs-09D~*B!5CRdGDWyRKaRXi$RI~WM#$rkOt8}Ig4Kc3*%h;VKsZ5|z4&Y$ z?QGbCNBivAli|W#Zt5DEEjE)LHqRBP2d;om!zO6zzlOU0{6Jr9oWYshk!Rh`#o_t4 zUSz4LEncpv#en)?9F3g`)g%J9Dufg7)SX1ARRvQP=An|i68tLo~Ug#r!{kimt9-DpDgFG7-0RbITv2;lbemB3wRPkAnkuDpw z`IAhm_FROg@86KWbsiX)Ttjs=^zrhDGk)AEfKw@D_~7O1HhMv3+R<;dN6eV3kI9sxEp{2)js4BtTvq*#Ptlyw9i(aj|n$8Lenp$b78 z-@dlcXu-?L&&hEAF4`Tn1-|cHf}4&+;a9Z={B=GGs&wRFhPnwR3aLWUdIlX&z9OD8 z&*F~Xvp{|OG<EO~~1Ng9F8M?UJL9O*-@-FETe!evk&0kev zNY?`Jx6Q;6>0bQSzKYH$SHV-2vrt~46SkgyE0FzZ1DnP#Vk_R9$0J+Sfcx{S>blk@ z$S+?YaG9Y@pKmB3fhY7}eQziASXL*{TFT>pv@M`HQ2@0iJWJu~d^+aPT6BubH95FH z8pQJxAv`?*9?g1>uicKra|vm#j+B9xqc26XNt{NDD_wlLpS*e}4eugLX^qcB>};Qk zzx7hcz9Mf(**qJ{x2E$9@px)B;VITH+7H)5jUlf280nlW%;l^vgB3S^&>1{y?#VqR zSeD^L7hU;)4u2*??t&uF-7LYywn?!4DPrvB79s37^9|!lwNQM45z*rs@SWji#;~w~ zpLG`DLZw7TOJz0}uCNJekGw*itJV12hk>YTQ@Hi`7F%u4LCv2@_}q6Aw~u*3Pi{Rsw(C~&)H+~zaRO5EVDO#JnBJbQA?QMCB7cg{)L?jm2WEOHgJw`VS^aJ+eo^%$>wX`n`@~$Zpvu78y{PxG& z7njhBiO>1|_YQp1kSMsZrx9%@%%Ene`!IE#I*Cc!2}(O^OeY_ng}L6R@OI@C3>nI2 z9xghHHl`nmS>+z|?R!bJcf{f;D@E2n*cH>B@L(a z*z~Om81nQXYDz5x70(jpM*eEtXehQK9mx}6aLuL@E&Xoby?qays69y__stD}v8%K5qDF}MsUnK*1 zVYsZXp0ou|#=z5ZP_X?b9dQ-Hb3Z1q_ofM<*v(3^N~-{kcy8U)VWKK$Kg|R0U1YZW`f`P3xOY|3m<%=;a7;4x*3cd? z+cY=z0;5%&jSXM2$^QDUmEi_T+~%EPc&65z3Z0CB1i2z2Ic+^G^%nsd*=u-a>;Uu1 zdJH>yS%O>c*-v)>!kB)Ea&hiO#SK-He)z2N!7AJP&ci5C+k@R`w# z`YGo@=zu@6@vG4(IsxasYr#`j_k#D{qAIi~WZL&M6Td}%Fmm4=S1huF1v^X7XzC4! zpBRYq|C@ui&5uHv(**Ebl?n+5zT$;3YE1oZ8Hfur;X9nCuw>d%lnFP%*W&G@%DR^L z?H{5IC(J?b#{_y`#fhk#vFFdmXCQHr3LdEA-DoF2Ldn`r9GhoOjZ}Tv-tuM`{jrJO z@>#%@U;9Ho7wm$?M`pvr`F(VFz!3MxuZJ$aYx7^t4c=2(#4gEAjEdz>{*Fo~y_cVs>!8NapK+WVV1eR~14xNQnmBZ@=%c5Umf8}Y& z+iXgL=l#LG{`FY(U4#?5z>)3dbMT!1Mm(Th2pi(G;h2971Wp~nqb|xg<*XFwr(VJd zszFd~yhtF@)X3mNE3jK0fQs;j=>Bb{9|waVO;ibYPhCwmneT$LhAh^cI)vWNx#XsA z3Ow8wiO*^*VA8fNs92Z@1$_r`Z(mxaL{2CS-S*-+h`zWf|0gj$zm+(bR>1BHQB-@Z z9k39`^YRL4l3g>*ikyx%h7-wK%OALjc2VtbNg&z%lW3IG(#A9O{PRE!Vy{QRV1)v= z@WnNlXfu&pnJ>qAS7k$*%OinHqzfI+-cRqjJ%gQA6LECL3$pBdFP-_g1g|TbLYRI% zuD|00`}?i2Ztdl&o|jG_QK}7!D<|Tbp7%s$<$XN3UWMcip2XIqqxfZQ9Znf{5;nM= z7Hn;>1LgNYf|R%h>^wFT7}qSmBhKO2P0>(gTS(jzl5s7aj}KimK;y#z^n@B9V^s6Z)*9U}a_)#H9Tub$d1m*0n0&Z0$g- z-TaO3T)46aGbPyh0Yij~|41Lm_An3Lgu%RETdMvhjiy@3aPy-T;K%AAI5ue|+`IUk z_nz5vHUY+*N@OLhEr_DRPsCUoEs877ZxPd+y@k8zLFCO>Z-rtgcCIcD!P_T9)Z zZCBV{`RIlU+${HoMJ-FYjHunP{rpalJGqv9m|Rq)d}0yb1y$!{+fBKP4i&iOkTN^< z^<3^)U>SHGxLh?Mvj((E4)JXMcXaP73)A3_cQMMr7v_FC33?87aJ{mc3{6jDrn?%` zX`hCOctfCIN7XexOPh&fuNAwmRtz3Z=_lpK`C0kVW^nqs1|7sB!K=lLXeO0o z?p%K=JGYm7>K|tAZ&$@8vrtUi^OSUdnme&{V%QsKs|%y`Q5VSW=T`Kd;}KL!8_U-IoegWo<_gL!Ex=>n7WCAb12UoUJrhC!rY^ZW!$&!5dN9S5QVs(gvurS9DrHW12 zXL}>)hc~6D-nthuRm4Hv;WHzITVZtR6#~f5c&&?HhP}5^&pm-XBu- z12ioUg2DC*zSp`3{{He1EXy2(U3&u&>>ogie;*dCI|r||BjHh1IcSY(p~u&)hb57z z7_IRc?wvWoxRXIIdPs&R3 ztd1a<&oi;^<#>?6VLt?!&w`rj^%%1+4?+&j2iKz6r09BjFT+|_t;X3!L}G+N-? zt5eh|DFG@+&!OGDF*v7Bn3MB&CY|kzAoQCEuAVuAvl6>brmg%ZxGHj;r0lp(&Ap=0 zSy2hUc5_5-^%(ZpqPwsmNegsM74d@qJdE)X;DM=2;hOUls<0_iuKkWj}1FdsUUO=L~lya5CPi$S3y9XJ&51Lo{E#K(J=o zT}WUfU=RNs$TIj2+Z!}FiT9H1sAU}X)=h%>Q=?#@PKFfS%)-$6R18mjN_$ls@yYIU z;3J+&ozKkRZrHX960ODIfujxQ3^m-81E==1hdP{c;n+-m^bGv{=!$# zC?$t{G6cQPZ6F3^QdRHWGa+_WJ_@yVljty8>@Z!-M06a2y{cK{%BUYY`hTUBLw)f2 zc^|sD&V;VfD{v@9jniHl4SG6tw99%Gn|&jSsCFcP-H#f$=U)sWXV;Ozb*1oQ={wVq z>Abfg^Dn(FH-I|R)OgN}JH7E>J7{O#ggt$esH^Wp2yLsz^XBz9r!WIt*G|Q_`xoF2 ze1M}HJz*em1=c>DiViDB;mffexbuSd*wc6Tv^})y^TFMC@8v|$EZ>Nm6sF>hyU(FY zFqPZ$;RvXRCQ@~W>o9MfDkHaN39S8BN1e=!u*i7~JN@u`;>j~hx;Bfz-ksY7(i7KF zgO&SXhf4sYxT<0G-(sRxCx^S#LNH?K4P0&CfPw%M+|X(S(wd&QJ^33AQJxIv+9mJ^ zr;6#b72#sYSaA7$m7MTX0hKY*$k=(Id`l;FylW`fwXqgmHfVFXaxaPgylG@PdXNOW zg-|-i1YK;JQQYAKuDrGa%1_C&h5`I%>HYw-=XfFp9}2E3rG29Qnv+G-5 z081Xer7y3^z-yag+BSPEY7IVyaUx~t#QkJu?20B4r%nlutoq5{4XvT!jyc|J{KOo7 zTa6wsEJ3EIo_Gj#K!n~My2GUr-K3_G8{mtbd>A<^T%f_%rT$V##ULB~XwN-7ie+UO07Q?mP z!#HX80C~AW3o}pM63o>vqaw3ZQ2A*$J?0_CRo2Il480Vnq8@0arUuO)rD0|065PCG z3zPk#Kv15PK|;P8vu|9xcrJ+@rmBbH7Yhw;-1!XN&kV#w|0kLX>d3m;#o%*W1|Ezl zfOs+qw@FLG22nX^%FN(dL1{R$a4PkCZ%>$QWoVeS7A88BSG6x~j^;2}*@jFL^Foz>Ss z_G>&T+O;1URXZBwludn4>k{3(dQdzYi}TN36sS2HLqJ6m-7xVSvAkYIcb!xLbF!euxAn=p+Q@qG@X0Z;1GAjiar}Sgch97GVqM;>2{kXgLd>!3N@ z9QU`BGFGpez<>TZqF{f77I^dLuj?|RLET&!UR44`~W8hPs05 z#9>n%@z*q_k1AK-+)G8w#mF!W&JcpNk!ECT*E7-+&iA%$%h7b24BzvAg7n&A3<@3( z*Ct+pM^Vclz{wjtt|_y9waMra%I|OHA&i};1^FdY+1ws4n0oFG@2fe6au3znAino@ zbPYl~K7fJP^LX@?D{Sw6T&20&9}J^bWlm<>l-@wSs}lGi zP(L=7RG3{QV|vtS=;ICa#Y9=II?o35#sm4fO46ALKYIw)N9(kk`?p z>Vg*PU%~I+%Osg2kKC#=J|q$GBNZoOT?z1#`+xXrF9Q4Pi^!UHmYhSUJnO9)UDawUiy7loKxm2>NK!AbI_^kvzu%*||p(WziiO5tw_ha;l20f03fgM|s--d$5 zLRHigY{cZjk035SAKl`|K;1hL?g@WZu?SKH>$$1$Yi9^S zuqtpXnc@=&?jsXuE1#(fH0UK~`94#rkTtkozD9K{qUeCG7aVzyKtm+h@6j$OI8+bs ztuKL9NGxN{=ebqIzL`7wx(M*1f4vuCNQLJ;w@)^>35p5K(qXdJ@Rp zl!bHqkDy+KGmh&XC-_`@iX{EEgc-Ad6inSj-p}-gXq7nPg31u?%o73!o% zp?#|W=#CmvBBaF?M0c4pLowiIl#11>rlNoCOgPoEgs*kos~UYbl^L@olqyb1!IE2_ z;YUUR^jQ`{ooP6vm^?!(mvAfzIRil-x^UbpaTwpJ$$HrgQIUuHX<_w0vSigW5EDNM zTh-HW5p^Uy5^aDyLt&QmA;UCeDAGk8=`ZKy5-kJbj%9OZF_l z(55-;wQAm<6jh7U*1RTqHeK|x_F|M0p2XdhxJ%CHUw|;}jwePnqqYPfF!_I!=T zoMysC9n&Eq8U&YJyN6;w#$nZ`Sje!EWWVpXfSxgKu=7_e9_H^2XZF<5vGqCdGdBP> z2^hTHC`Xhle?#c^Q?TVu82Qp`iuaW7k_oE~us&Rkd$#o?+*{7`{qHG|;-L%7%QNe6 zxkO5p2F~N^&UtfN`!#T?Oe?w9ca=tI9EAz2F*iy7K9=m;OWBNa+H_wV_VtJ1Q}G!j zyO{r(X)*SDYnGID93D_`K1xt17_-}R2{I{)RKxm6ARZu<+Pj&{V-qrURMDxbndn43itf6}>CRS9@pCJr?8H z?NWciFnJXYk2wPC_we1IPkr#BOo+`M6(()-7Lo5J5z+6!N#cY(FxFpQseQLr-hE-4C{OQQeWr=gDmVWPYQSG*V?kvos0 z%?bGFxjIRn5eDmuPh!wPBWB!-80>TXieF=`*v z`uvG*KnaMYUWT+SLfmzc^CZf61J682BDIlA2v0iZxl=O*#Y;NK$w4tzs6G_5m}sgw zPXb>K^Xag`$xN%bD7(jT3CDfo(XGL>anx!s=?yKVQ@2;jgF2E z=66D-vH7wCR4c`schc^~&Lb^ET98%Tp$A97)f?gZ|M_e@yyrjYgs_;&b^F^TM` zrBQ>iFePCvWM>+(W~p)XF5HCp6;fP|;tPm%vZeUnQQ|YJgjP+cg1XJm;f%H!LdbOd z!QTbGUav#(!z!%Y#T-J*q;a$53TB3dIGG(a8@^|Lf$$B%=&L*j6<4bvCYIB6a+l#& z=2BK(bq;&cb1goa-2)#6)X9tergWnFSvWKFOEAPLv#+b>gJMwyWbz)y=ICNL+U7;& z{lvLFCwbPC$3B{UQ&Avc-N@`SNG5MbB-n$QGT2-$LRX2HvC?`wsau>gr2m$LTS}9; z1f62oI6j-)*>F!-0sLTp@&IxHOQ#Qnhmc+66UHRb!! zhH=GMd?be1>C=twi4FAm{d6>Vc7|4LI)&ag-Vprg5wlHl9OekU!TQf$g1N6}K=)}W zSaqif8mwdJ*W?#)szr<0WuFITdZGAGMws*IjD^~gx#0h5K8(7Z;4?wvxLd=NcJ~cJ zczc{+wYE09K~0&H(hI@U&c~r#^)h@^yN@^TzoNZ$T}6o|DZ zP&1yD(m!|>f&!Iks?}-y$nj2vt_9o-4OMoGPy+R4ztHvuFBs6cPrCIN!gfZIDYDxO z`7wRuZrv}s`$r^I2t5mTSs9qG*2lQ=%mvrmHgH>z55a3~h<{}(_4gA(h1!?II`bBm zSN@<%JsW9)q9^%QB9C^i0uu86Ce1%5&b_lS6&(8;0(yt!IG5lt7__MdmhWl?t>iQK z@x?0m^2&_NRQ)ZO+ZM6YUM`tTf7DYRwx^lpV|kM&88uBf?>M>M`v z?1$1JPqOfZ2wAg1i4Q#<6$Fwy)4|~LO~!itTNpL+ z!E?GXRH1hbbYB;Ry3;{$#eXb@hWW#j(Io0K)Bt;Y^QuDrQ|3Hot8ru3zkpqC=fHhN z91eLXV|QFPdX0=_YfAKR>gF0u{S^;WP8|U6J{i>2Z9$QIPEh-I7xCHc&Mt1<3R?R&T#ccE4JS`R20Ru1`sLGAf8J8_6ThHSb7^o(y+mP77*hogq2Fh2(>G zBp%4(X98-ftcT_pu5is&G>NXDDtUiN?WHanT)zlKj!%ScT~(~vpeV45yUaYTKMp-+ z=5Ud}8>#$QMxXAN;ZBbkf=zEi=(TCvp~&z!Dc1giFVAYjj;(88(b-98|JM~h1x@GD zd&XnL>APTJDb6L{crB2qpMr(_|G?Gp7O?#KY3lQ_8>0%2&^GlXQn>Xtbr}~)Rs=4E zQXy$}>3&0IiXeqv5Sxo{2S3o<^h}hfc?opNYBVy~Kp#t4qt3ruba1jBr>33GH0Z_% zeo!^872b%1`>~lEO z^sa&dE}XQL@jYg72`25b8Y?p8Gg|20Aujw=Z&S1uws2Ok@#|$coHYqW5?yg*uMCJy ziNo3LUvQJeF2QRFj(RSRLn-$HNIr3cC`Wjav(DFuogDA336x^T{WwJn*8BtuU!-rB zO~IBQKHTnBa|n&&84@8en7}hmWsz@R{49he8g`H=YR@|sr?8w-AAa*4ftmG*tCQv?A=4uXPDhxv_A3GUO1Tq41kuqRzkVUau1 zgewyuWbr&0w@U-?h%yGVMVS8UJ(PNVCNcw-sP*_6SgTin_`?Oy$KIGXoCKzH~PwRjK$-{sI=}8(HyfF>}IZpMW*#+_2lhTeSa1RZuH}u z37arur8vt~xC)Lf*I_MquHaJNkKGd|0fxwGvY07JRa4O@U-3)K?%L>s) z=`%jsIY1)vS9$@UemSQg3&FHg+@gYHVPX zgwv_zqHelI;yl{FFa-Z19oB!HEeN@;h0jU>7=LC3NN$gV@CCwrcK9k&aX$vqEw01d z$CwnBv05NOPdQfLu@Xgy-5LpGrak{`K8EM| z6G>;#1lq9LmfaL%$lYkv#e}RlI@RGXu8|BD*lj;S86Xi^JK|`z2_iZZP^u6MkA80l~#nn3rhBd1s{x zPHD*EyR@ggO8PME`lila=xhg%`UCK%$FNcp?xV&1aWM7r4N&9fdflIYqsiZiq_(UY z@2A;d#T0FB`}Es{Y2S_BDzcojn>H89^Y=526j6Rh3|3}KQ0SY$_umuI?_4r!@g1AN zx)w&%P8N){cS7s6NklzTp4k}JPw(b0$F2IcIBugMOgH=iN3%=dt;;jGbwU#N&-NhB z3O^w=eG&%0kY`uj;5lyVtzoB933c}w%c`_X&d=T;OQQpYNb^`u5jnsb?@&--f*;Lhjebgm3f z>N__JEod}|&f7{GpC5x0`*K8L^W$KjDzmq069p4BVUhQ9W<0_g*; z_^6-^H%K#rG4mBk!G%KHG+m$j)>(=ZL)6(za1GaX-#|mY;}f&Fg@ET;*q0s$B94ba z>g^Ts?bZdjpxA`kq5Y`5ri%*g(8j`0JDj|2wjkqvF@OTkv^Vn(6w|G zh`XwBrJH;)-AEfls&sJ9xHYEazjOWFz47 z2j283YS4eD6Y0e4a$IKf1y_$egn6V-V3)QCwD2aq`(rLQ&%%frt{fx|I#-~{^*8+* z|BD$|c8h29+X7n$h_Y$W%nd_ zCYKLi-sz$CWNS$6iN@jN5Ln6o_2PT&K(R-HbO zISwW`#?vZnp_jUBVfIW-kT)>``KTxG@Afc#IVTIu``%Ysy-a2}yg~PDXh2_um3aHL zD) z6ka-L3Hf)6FnsI8%IbfA>HI4uuz&0T`5+X{cio(5RirD}9cvI=Unv4r9=W)Engf3+ z;Q3#^KcP@W2j(cAf&q6=+$bB#Oc8Ivm;Ropc-|D==CzwoV)7vK_FmXplm~U~5#W+^ z04JTUHRtoZ0*B&R2p&t>gYh?LWjlX=y?qaQK54S|qWKx-pZA!@2`H;DiyeRR6O5gg z&%dvh(4U|AZ|v#U<|bk8kQ(w4!qbhxy(5JTw%g;|fd>#{{1-G;9`KpF*BCuzFL7Vp#Z zISX=16R`fAJf?QO5;Sb?B=du2;rX#DRkR}vqfd0f%V&d?HkH~qwInAc}XqinBB0n@Q!# z2k_WGooSltNkvvkl8S#@&|qCRzBN|?k1}W2ENo9o+pnST$7opVBg}SAk%Mjd)6CCe z1AO`u3kT<05L&zd-@LFw3I7Jz=~BqN@0o`NfjmR(>5j%1Y^7s4Uhsnh> z&T~I{ESE-Q+b{UU`Yy!x?Zk+*PG;YU*s7hr@no0#NmyUgSe3-hp*=oxN%9Jg{7g51 zd&i=oUqqkPSIlM#tpm_RnG^hyUkQ(f3-Of12wqt|7DnGiRaRML3T_THqTiF5I9!l} zM>aVjjnE?xCRl>OU?I6RJ_6E5QbBv~7o1r?hKoOOk9Iyk1#u0NIosTcf)~+?sb7a9 z(>cu?OcIgaq1Y^AKw`DZu{WJ*?@!&-nK54!WcA54|g+gRVuJaoZ$e zZeXZ}u(D=!cI;;I->5w9;MpDyr8{v*xPf_H8w?$RvzdkEoq`7KQKqi48@(5(a?8h; zfu_L=upAO*XD_dYyfww>oGr{rzRaK(uo7~YtfMY!(O@-S67-WSG5vlHN`=j-teDpd zV&|{JpnD;swR?sjarfzM7+^457@?SLd3e5%4u5yyn+(>Nl{=oUHe$ZMi%q}y|;=L!bY^HWS zZVny50trzzcY6d#xs}4^Tt)OPxy^Wd4#AR@8{yknzAL!2htVs%kE^7D;l~40Xk@O? z9UC=R2Zw90!R`n>zsDGr@9u>Undhi?bqMboenu|T1!7Ob1(FqVkgopGE>JW52MY$i zqHe+n4Z3c_XcuYYwS~KRX1Xb#*ZhJ<6K`SMg#z^N9;T}=CxRQ_p=dr=PNW-WpqN1| zX*an}Z?K;1D`EWeMB7=H9=ND8pa;T!sbz) zo|a<5PJ3l35I*snj#y{ns>E@~mQBW&Zz}NW`%=98Y%*C;k$|q!hFtNx5!&-jRnS~k zi|o1}`Z8xDQ#nJ7E1CEbg_mEWR%2wTgYOt{n;MMAe4`+mpPPGEB$As^3SjrxAC%wx zW(4<2;fl+8;0ZA^m>4@JHnjd)z zw)1(i>mz=6hWFZa&psgtn;L-T0sQ~Q)CgvLNd|}vFt~aDYuxbC4#&>-WCn!81gXcwN6n~}dONuA$@DWcaml zJ?vux$-|qL>`0dt{SkZ_UH5xo_pY(bs+84`5%82GZ^?s0v&y#kw=0Pjc=@)JrS{~R0r83#*Q}GivWys^5_iMr5YAx(B z)8}@r`3sLeN0>(}p9J224njlbaz0me1gCzOMTo*!z}`x1?O#pfVhS)l|1$HRhy+`d zb_OgH~1A`DMQ3Z;73;{ z){?w87W7kp7FL#r(a`~8?q~tw85~}CXhJ7+iX{=TCz`mnB#Eiv{E_~-f`1f+A>@-X z^5iJ?Z9*)0oUw=ZOBc`-XTJaG`hoOU)**ISXFnayB6?IiSVo5=fD!kGjtCL;N6lz9}7V`FlethIaa`gUQgxL86g zP11qMmw|sfGRdvm@z@f37WicuD=fmn&DL-#`;R{(#x5fwS4Y6m@ClaHsIWyM>!E(* zMp9nb1EUT_AfCJtf^iL=Rp&EqmbvEtp1*)jjT^XbsGS^9tHIN^)j5YtRoHpan9Dpf zjQdKe$(O{v0wFhh(%`+Eb6eAbm#Pf8$xk-IrbrV$p-;p*DK6ntjfAd)p^$rMhVQJh@9KKg2lpG6BwM8MxDF8lgY7-34Sqz7%DGtvaBI_>f zMz4&yto);NG`bqfJFQ>hjR{-$ncD-{Br8FV-DDuIITHVkS7hgA%pl967GT(;cY@#N zPEe=Kp2UMz(4T{)RpULM)6ltb)YHU^%xqoX=b=YtJ$$kJ=2#n&N*# zl0^_UH`R%1%IPkEjNevQ*iYDW*La@iourZW%S5T z9X!FU1J!xE;T`@3{X7}&Q~w~Wsy>hThom_l!|!ml{vAHkdWm12UgXn}V=?yMbRruX zjKL{mnbQ_CKxfT4CaU`lNzr-$#fq~L`Tgma#yI?Vjj&!jd*H^S2Cxr7C>_Si!CRR0)EM9V z3B<_F&9w1CD7HfYxf9{aH?Aus+vI&-6%hID9eJ)D4oVTO z?97CZRJ|~i9(PQ^Nh_7`ccUUFOpRcQ>kvIYHBnGnK9O^@=lu@5GtoQQP$0-k#-}zZ zWZ{SooqR8mK0bX39>mAvJ?lD*fyJC)f(K5{Fc9Q_9D&!%l#mf*V&Mxp=IQHDs1g6o zwCo*%yQ2bTm-lLL_%RL5BnDxs&Uv^k{}Y~D?!?3f4YFpW1fCj3;gs}2IN__!cCIQU ztDoqD<@yZJU8W5iR{bLp-;WAb@Y&~YH-q5Xbc%()C%}Ja3aPe+C@t)?p?-@~!0==d z@z}osV}5wkNE>_dcU=k;%>6($UR2{(rOmJ|xD5jLnnHxs4w$;Rr|KTR=Q~g$g-TgY zRPf|m)$y?=pmr|N-0z75iB#x7A9n^-+PyF_DS&4$P6IDE#@sW_DU6t#ib@y2ZYg=m2xjV7*qmLOo45O*oa7Pmd$4C2>{ z$bf1ew#@Y;@2EJZ6j+EY&E@E@+6;HeD6>(Ql{mfoO6+9oR{CFa6vxq-amOXfj3gz2vfva7lrZfX(wD4yao1t|IR$kJ^sJHcBb#68xG$CneL0wvRHzhRdfZNWUcZ1ttVLZm1QGDFTx3- zL9#?G9<=w&!HIwBiB~c|6AG$_Q+0@jmV9qXM3Ly1FCx*>4oJR+lhK!Y@TyFbTeH-P z-H_%Y`20u*m+B=E&*)Z^hBoL>sO4SdJ^1X^9PVMh0Meh`ghAIwcke5DayQ+=?=r7Qs(?m9IP5q14PFg*u~+0NX&bYZ=lOiW*hkMv z^P@f7YW+XNci8%&QW0o>YyEPaiR}>IYEO zL5Iy&9tTyfQqZfTL%5CCL8ka6cDj#HhjShfw#x}OH*2sPN>=b0glw|VW*mHJlIMQ4 z2+d!%JQr8kAESDonm`If;rLA(xK%R>J5$8zoswvb%FQMZ`%9^`|3qeAX)|yGk#tLQ z53GDDNtEX`L0sZXqBeUzi1wW(%c>vYD8B<;+E#{688aE?TOtk{@!ZW#eDEAohR)&GWp0JJRQphVC{-m7mQWnOK6EveCp&%?UQtS&$X^2hpEg!u10u zFu%QlUVo>>Zqv%eHBCgDY)u*56_)@CLk?) z1X9k%n006|D!TGHn4`~8=ARYP_zfgBP!BZQWLcshiD?Xfrrmmhyq&xm#@-$WKezL9 z($H7XbL=+_P_@JHDor%S)r17ymcTQ!UjxG$fcx?!%=_;dEZ*}QPp)+%vdhbG;N?}C zV_Gfn5l*AW>=Nf8nwxl&D19y`VtTq*e=L;o z(u_sU2K9& zs5ovY>8B-Kk{BNsifOznVY{UUZP>mO8eZ}C@yv;6ey{@ObbG<9^Ev3w`^Mk2WY8^Z za^a%96q@XA`uWCx^|cw zVZi>nx(#Yy^^+AVn!tMbEa*F)0$#U1F;Z{C1@Gltz`Qzz7N`u7?myYoXYp1D+|`A* zOsgsod zj(Jb}Q#CoisZ#LJXFJFiX`<^Z7f7wEfi9N}I?LiTM5&wxe~A@z>(R-md!>nZwA#Y- z>{cv%dy;3j#1W}aPs#BcZ7`~q4|03&k(`SaIAM1rKHFf9`)=>T^_uh8#;OPs-oFQ$ z7s`OmiY?%nlLw0D?=#+GH)4(Ya&U~i!{{&bg@q=W(6mUB%TXw%PDhT>uj^ybYAw$< z7a0PF&3uMzbq6}J=A4U~HcX$Di7S3qW7;hRT;`lkxf7=$n7`k;XEq2*%ud1P4Gm1U zt~&X$=q5^jAEl2~AHvl&WoT1*2TGMC@J`|^%&1?BCoUDB;HH=0>i$AJ*}5FOyqmyG zX%btXEW%p4gu&huIq38%3ww^H!*=82g3@CT%w3zGKw(@qNj}?vHj^Jh-5(jyJa!hm zzG|^<8|{eR+#Zs*&B2s89Ti~I1{4;uybDE#{yZBY?m_Qa{&N*z;l z;d2Z@2Hhy-+yVQ#U*o!OfaK6=W`cNliCL8`wBguk)RYRP zVS~nSuuK%?9e?8_lVf_hG>)V zZlN2TeV$FtD$;Rjm<)I6eJ+|NyF;Gaak#lE9gYUSAlI}4!2Wq19vQtZn6dF5B;EL1 zq3JaXj|wi};qS-kXB!FDsxFOYybVTwBY%96F3kQI7Xs@NE3lpm#3c3C*d8FoJN1+x zeJk&_e0f1IbJjl!8_Ug~{PqQ_%dvv6^Ve~!nHATna}O6cj-@l>F2kIaPPo`%9s0H2 zAem=Akvl0RP;V3ngUheMUB7d5)x#vR{EslKx-y=N#9(~w7f%%b=+Xn$gp2a)X0EKb zPR^|e#csa)!W|BwyBk}0r$rd9UGSPFwS-|{hztg;cm_?~r-^4{02-@qu97<(il3FF z;78jTlwB2177Zm}#jH>~Q~ePOtR(65Lx-?$^9}q@WiHvX%LoljW`O8#Gh$#CGBdM9ljPX z+~|gLD=pa5>Piq0`5fCTngKViKvCB}bknpjS`}6s*^j$#=k!FoD{u`kJ~ zq&P?oOe3ccOX2vqy@EB82~?n+$QWJMe}udtY3zk zYnFhG-xe(Dea+u!sWp9r_9u-*L=Sr5}gP~5Eus^!^LpDm2o370QGkEbv6 zX>7qKR*#u|gZ7Z1)&gg~9i8l##-he(H!)XDg za5HrpIL%p0RO*7@i_sum;xC1_4DIpgBtuG$?WaPvlOX;@HqR-jhpvqc(7sa^kLG?P zS5yZu?3O)*T%03lzHtZZRLoIMdNRADKbMXaJfV(yANlW|C*Acb8cz%))3}*B@WVhE z9*^*jax;Bc+r#g7{^PqZlWM`sZom21oyYO+&tfVb+)mmqFMu}L%fw8vnIxyHu`ADI z(PcGRbmfdpsQMrY(`}c*Nc#a4$u`3+1BsCM?;R}Nd5zTNM$*p%JRh;;9%Ftanp~US z47)Ye;rM$4_`cZ#mK_|=&YY=Dbhca2#N~?EIrTAq3MvEDsvvNQP(#hXQGb&?s>{W~ zl7vE!2}y2D7?#aXFAf* zh8r?J_0xc?{gn;9TpD(K55#>ApXfiO2oOk2!{Y}x;NBKdwm`=iLeu7A%I%3TpHt)c zF7ufB1>gAn^)T6K>IWojF`1&V8U(fiT=jP%D!q{B`O5cb?n57I=HRa7>kp&VA{JG++jYWvo-w^sqUK0 z$<4n4Pg_hu^5H?aFBT4B{$b40Fn!oHMib%>CXm@HJupV&F_c|+gNIKQ(^U2__$yYD zU#1N(6rzM>{(!+eW6$4En|;_4ibca_pc(p%sJ~jumLKSVF$EUbnlK5L*vb%DM`xP5 zZ!Vjl@Pr9_9e|@jv&pTb%dl^T8l+qrrt_R;R#_!Wa-N!I5cA6ey_Y#}E+X=F9p0wr@Y-QpVB+OSN8dcylzNc4+O5r%D;^`0 z6b*6JpP#gFlMvinFqZTBJD*dWdJE(`UyxzGOZ+)~I#~MT)3ZU+uqM@r^Ne^+{QceN z#)gwr=2JLC>q}CZqxZ-XgD@swMI8OdAslQK;&$EGkEe(y>G*IT6rX&crv!)5SoaBa zvhpWGwqkgrjqd^tY{mKwXQ_&VJl~Twft_>hadOf-47I4BditMe)KXdUK|hr|`1YFU zAM}FdKj(9j^cJR7r{l_YM?sF zO@9n-+2#OaQWQA@H%%ye^cz2yzhok|DRRCE*>E{F5!ZBRfs|YqD&MSwdfVN&Ya-v! zbF z6EI)Z9Xe+GrqAweMN>5;+Pa{ZY@I)YzBBivf1elOXWumN+;9MGTs-MNl>#~|-w@VM z=m%zRKd#sLLp$0-p}%Gm%o|?~V(N>qcy=IjMn8-A`CH=kPY)p>Tn5tKDzh5z%c$*? zD8^vZPYg)?$^7*U;?FTpG2~t*(t2HdFi-}z{eY_S89e7@75@EGhCzWrxZX?vT~`{& z=zkjQq;lS)+~W(n{t@ue&l2>7&!S{}8MFrL;D(_DdcrOqZW>Gg_vg7(-8~mgJaV8k zN&-x}T~PF)19;D0#$Gz41)r+lQTdSP0^b}d2-tTP*~vHH`M^xrd36D87({>TCKCSPdyL@~VcYZAQoXoK<3M)8;GM{u~( z5B|U2((?m{&AUxqsaQmg;J;}@F!ViLuwl74+x7b*k?NOX&o_=o>!v6&C{+b2kB8}+ znkMt>C(FQ5tyz#^I1d`6uc6C|LpW`{4CsZ8rFzOi&=}WCL!YNmv7Qz5-N7#cE$1n? z*Qx>L^xJT~ot7|d%`L22nhF{czi^skJscP|#COwT(0b$-N!c+O?KcXMka9;16d1$%n9QAY;cQ4gpBoUO zvwly7(s^>N3ihpbo?iM7|-6gLREg=MOg(!>eze?Efn4{$*0}u zZNFS|ad#F={{E&*CH7O7&U2_6JjisOTuK(5%)yzfqChBWFKWEn3TMM&aQac+#r|(0 z2!Aa`tC6u7C{YA|v#ZD_ZxJl*lP8SFa~OA~3WTojgd^sKj9G6DGu*Kmi27Wl88VOFEAq)!&k{>)QlM1(oEKy%75& z>@38&e}yZ2ztqsx53l@Pj#(9F@Yvi>L}b+tDyqhJ?d^}?cWoW^k>+a~XGvEcKYK4%fPQ^z&P>u52R>_o^PD`gaCH#OP;sPHDR*&r%_sc%bP5Se zH|70wI$Wb#8(ikU9ce4W$f4f*RFUV&J8k5dTrrM#VDV*CQ8<9dN1O1XVIyA2=X3u{ z#b9h=F!9Q@X4R%2gFR>Of?vcVCRX2^4tv((&r&tc_Uv2IGCf@oxNLppkri_Ar>_u} z4al(X7QKa6y^MwyMMKu-mFRQe9egU1p?TY$k$Wk(Xh!)fex@eLDb5k)^4r&f z`&lQ595au+U&YVyfB%NXK_>XYE){>-X49r>Mf}D8o`sKh;D6b%58;OZu43?i@xowuRowNW_g(6-k6|Hd$1~k`HMQ>E0{*;r!fAkc_7g=2IeY zbxfq9!sE!wNz&+U{R%x3a^U5RYj|pYG}IMU)5^`fqf}`nwq04myT0NXElEx4r=3hS z*Nbt(=a)gSQ5=37zJfL5=5ae?EHV0}Fxq>2z)#r?DER%PO0<15Gs`^{F1_xj$t(6( z=><+9Z|oZYr%7P@nIqtRMin<|s)4~ZY39pbGm?0#0SZT+&|W<`G`l$hT3;=h7mH-T zbyx*#|E$NQ-f5UuS3^anl|iN75DgfMFz?I<5K)&z?F;(wHqxIu{}ko!U9E#D?!1%p zl^hvwG-K`Fz1jM-=A0o)jwDmnWT$%W%uC3Y%$Va?g?iD zRk7O z^(|z$xgss#^g;p`tUbtHlWrtFb>E?&>y==UBS)qyOOV?|)x;_>iQ4O&2A{6`U@ppM z!c`BTUaUE@ug*sbQi|toPmh1$@q!C8@-D5fwe|if^Yv0 z;l9XZID6I^{S=~s?Qz3h1&dfw#-DB-yh5Oi{3A zW*8UasNFJXxcQA1+n11*q8MCR9|V5F9E7zMG0LTfzf1 zMUu&D`#liN_vMO$u|UHNcM{vbN>`}Rw<^PwbZ8M$L0f!a%rVRiTd81FHcl?kiIxp`e=o9Vv!b<+~~ zNJAGI%r`_|^OGo+{G7O769WgH0nz>36}-C|NrJK2-UE+;0xHJ>=(4-$u!F zLn|1QCJuiu1QPdpV{+rwW4h#3B0ev9L>Ip@M|H0;Xi->$aVPFU)=MEi3;czD&&jYK zB2)0(<4**-ts%x=7;|@oF%Qbsac9YEnDMQYn4OTu^4))7#MKW(5AF@kf$i-N#$BcCwWK<|MuC)IuR#$4_;z`TU;9d*g;o|$wTGy(4+$$-4G)%qn z9U=d`2CK0xAJx{3gM{ppaQ^!y$PzY#tr7V&Su-4@nw9XKloBgCBV zCswW70rh8PxB?GXqIt{&-Bpr7#MA+03-)2l3Q=%-UxHWXY{6+?$MSda*-$B`1NZG} zfpiALn+GAlYK`)2ZyPLUlSp3AIC3$@i$*hm1gK5Qh1hBQ+|VJKe48Z#m;IX1N?#M>WnYl>3NcKb1)swYti=Z(foZ?gMkkJ5 z0!OcJpg&d|?(Dlpo=K0vE3gM*@9B^uDdzCx*im%8EQY7|nP9}k3)C`Y9`DZEk0zgs z=DSCzaWNj|_~d_z&NQ6LuZzQGB4m~!WGImg70zCdQl>PbG-{@l22v{hOGKF>Lnw2E zB2>cJ>ro=2kW{3UMkORsit2sdkG{BE&vDM#d#&H^zKg4PUmGUE)pO5j@_;RV>5d|n zx-w|BeHJ+F_yK({EZ4ACq$~_4+NLY zXZZ?$`3Lt{;rv5SdG_HOc_FoSc;r_eZ`FemR1dsHj30OrLu-E`{yvLWQK16Ax2~cN z+;@P1DG%qozX6YzJtb?3{o&>ZDO|-Ipn*l^L}4f$hV30N(^HO3kTYZxmz)3{*+Q$P zFgviBEzYQTbW)|BBCZ1`0S-JtIC_D54u*cX?LY_Z+RS;?*Tqz1ix&`fl^LlYzK2I- zbLm(22jq0X1Jby_A7jE4m=`C~sjy-mf4cZf^7&d7v3FF10Ar5TFet`6_|i$FT{dt$ zHy){2_kgZQkB7!d7C?55Q^l7vQHCb)56(RX=hREUbGIk8bM>Zr6~Fn;(=DLDcOJPM zd6}%VZ=*w6J;Xjwn3;R85;EEA5K8QM6XiL+!u>G1MmGd5^u&Si&{^;xJ*4o8IY=se zMDMy}xPQo(z33H8n~hdO2scactrGzD;XC5wG!25iCD^j8?KDXzp6=S`1vUR1@au~t zEDd{0m&rDgVd)~cA2N+ev$KV!DWBlT)F_<%={8!Ye})B}08=O5BN6f~Aeep=X7zRQ zZ%(|5i?>Umu#Yw5D|yo7`DgLY!K<($vjznN%5dS@^VVg{1z4eHwIo|>2prRf$%wBi z9G+B$-s$4t+gQxAn!f{oyG20FWC`S_$}lk{C!yt-Do&p;2Muid(L?(dOuXocZ|4_c z*!V|MspCoxOuUJ;PvzjlMSplKF%5JB#^}T3H2iK@f(v|9a8`#i!d+qZXh}Z*MYs;t zje5s7T`vM6MSWH_OYV@kT_-pWRS3OUCdz0(6lRioy$CD63;nI<;KQ*A&|ho@+m4;& zywwKKu~Q%W;Rv4zI-fouQn%qRjx7PD_84}*^bE3`7J}B@qv(*dmdrWl zjeEkC@X@{RNJjmc-4a*0KF}FRJemR9WKN^dGiekVi-B>)rEK+2Vb;(!3$&&=gRMwA z4XhF8IulE&SXT z+B7(AF9S9QW6^F;H2u3+lcjInc+RVgu}XS`ERId0U*Bm$dB$N(O75T<-iC}=*B}kr z5(XD%NJIAda@;(DBbi!?GOX+>_+8yz$*l-6RKo}0S~_f9au*j%--i^=G3@N&4Wff@ zKq5Yi?65fpKfb!~BEGs=uT?IBCo8W*zsYoZbnG^^v`>PgOCA%ex8LAv{RA@vc@`dhpYi0+qWN7QyQGBe|>^HfD~isg0g%r!!Fv@6Mt!v{b% zrx1fabKSuO?(9Gz*ORYUh`tGu@wyn>%sw zoK%`Vu$Qh7*~q+|lLzhl?qX152uS_T1(R1gc-%Q0muy%L>wbPEi)+(x+ui`a@(C4o zMraBisqiH6raCmeK8p9GE}Lh2rWA7OkAmZR#KZL`v9(4GO7@q6ck*23j_GVB*lQ~M z6Ai#E>Zu$T@ixAAzKegsavZ)`gk$uVuMpLc3twx?d2defp)aYak~hg5*G(^hy_KqP zvG@e`o+_bJIDgZ5qX@_fTt_>8OF*w}4qBRDfvI=A={oN7Z&8&G=DpcPKN}+X(RdOz zO`1-^#}vRvx(DBMbn=={eB{>;{34URQs@>>TU2^b0xR=;>FIJa)Y~RV+2>-gdYLi^ zRA|Dz%dg4$vTEuvWh1H?Phg7!!=b@pBEW011)Y2qxnKdP`~qzU)wAU&x`is+%P3fX>iAx z&&SE+=;f$F^6}rW5cB4!0(&HIDvmj=gkhz7bopF8o?D|V9y#MtX&;aYi+As*Z>6~$ za_JuGEf$HV-NN}!cIRPru{BhyzJarDyWw;CT>9Uu|4?wABSua*Llc81K(H~FaXj`P z7&*qn-+F82TDT$DZ8`|j7H6s0vZ?60){GtcuLKIBxqe=z4mvD|r~jt<(=Nk{nDkH| z@5p%4`h_zWUVBU&5DEK7DGWkGHlgfLWHk;QMSIleJhFbC-P~ z6*?T3wNMDP+d%<$v;vOkR z;jIpuP0J>4>IKlM%NtIYD4>$?T9De3f;R?5nCj$7=uoK4-c%idIs3L@!jLG(z?{O~ zvTEXgU8c-@=y%2!!}-WoPhoZc3BZgmTd}JB0WQ!LW#2E6BxT#xY5vk^y4k&-s0Mlw zRa%7ItGqySTQvT6%Mg4^M`?WV26Az6E=nFdg#D^I81Ye#Sw{I|DzF7AX^(c8v z4g5p1hdt0(CyUtL;rz*KCz8{_+VJ0wHRO5CSN?Wm9{q2IB7|)&CJVW_c932Yz6g3t z9&z2q>-8Ft^~9EGUSG%?Wa6Ohj0sevXHwyyiP)LZK-`>z!6~X4%%fsygTz+&BV_|c zYmB-5NjQ<}n*n|cy!e(MKf?B*H*`0oB!BBJ!PWRBbpGvlsxtd8 zP8`_C>{2s_lEB5b#4GruXP2#`2pn2<3j6+#ouvEFNZw)xP-dP9Vbjg2aL>{%9C)u1Cx#mGVc`* zz+dfLSZT5nv-X5=T(V4XsBnVrE_tYb6HH2DWO#4u7LtPF5ro&11K+!wD^nKVgu|;} z)6fgMFhKh$Ie7ah92u+TX22;}yfp*9+v}k3%u@98^W%$*Z^LHaMbvzr6g7Pzi_Mv{ zK*(DU^fG3_%y0Er-W`L>YCAF7OCD-IFG0n5raYhh#pH_R5b$KS<1b+uYOZn!z6K7H zno3uUEV~KGCt6_-TaG13%dq!s3JK;qDpzKA(bTF$T-3N6nskI{QC$+bn%9hBT!!t& zZ!@gFD9HXE3Fm$JE5e+1*bX7)y(s-#ws5j%xAJeEt!oeOIVK zcptXM#gS}<3bdW|6dH_Hp?;bg(!@dX{=POWOm_wipJM(AD-GtqMaPI%>Lp_GQ-x{o zjH#^H^_W}^n*&Y(MIiJt3?3%jqvx(n#;=RcL-CUW(y1H*z8u?SaJehW>CFeJB@JZF zr)%V`;S-W(>Br?@haphVn{OuF0b%mW#BxpzZ7TRzS?+cK{_n!cF-ky7#pAeg+=iy+ zO{5N~?YQTvGb|Izq#X|?fx%W2oZmMWR=@d7qW9?YPj|%ONT)o`@YQBUM-(8@DVHCo zwE<$@T2fijop?av1}e)1!= zdQj)L!Puw#5U=~)hc$AIz}|7BN8= z8WI~y@O|M~kl3@H_poV*{P28ey-JQxXI7r1ueSaJr&2AfYv{u-+kT>WMoy)g;So$6 zwMAPq5j4HBmX;jY4yR@d;!pm5y2U|*JesA=r2Wl+sHhy^4_JWv9Zh!s&pD)3MU-vs zF2|(-_Bfhb41K8&QRqPkt#3>OKhZ8cm=r`bW@}?}xGD8DmSY1QCNL8Xx5K~pP z`Mr2Cdjs3>>HuU(y5m|KdtS(1K9wH$2GRKnC?7r%K9>I@%ZjsczNHQ0@V5XJ0)lZp z?+)EN{~5=dJxo%5r$AasA3ops6^|b4p+2R2NG;fa2_pi~cPAKy*X2>aQy0m$-LFWk zSrvF(`HeiIR4N`|!-vPh%--a1YI^quCf?GAJ?)BUxp*_)(XwTqHf_P9T0Q7uz&XC8 zB8m5^e!S#4i3y8*O}npd2it}Bu~mIClycB*4Ut_C?%5MGGnqPaBM~3I)jUs!KiF2 zf9=uDM9OG8-!^6m{<(OPZg%nqV}&r@e;Wf(azqKt9DY)pBZxZvym-CYQPodJc704D^1UI_;@at$kiU}d^ zpBl-{wo+ixuP_i@5d^VERER~8Fua?-7)(KeEb!$^W%jN0eYo;G9v8c-qS<^6n)0a_|CuU+u$}<3 zcxDj^pH)V7wpiirG66i`k-L{cN`hQ)F?$~7 zb#~F^&Ff+5CxW+f#>h{tT|~zwv~o;ChzYp z`U{ZON$iltMaUWp!olN~G+^sV@ITUo#@5Ern;C;oQU@`7Vhin_m;m#ua>(C-Z7B3Q z2%EkxL7rnGdc5O0_}qDOolhC5+G+yHtA_b$?Keqp!=1`6LmO~*juXBsm=DS%8zm~U zV7cONoUASbeeaSnD7+2Veknn>mks2#XeboRf8e!%2Rt2fg^$c+=sjaf(Ln`dYKnPj z!vb)9PdJU9ZAc{eFKH-ucDsFkBHU4o<#&H_0pE8f^oIFf{`p5U*)RzW@No|&^BsQ? zi{4Snx39!XxpJJhMu^#^vXT5(e-B4TTFB*hE%3B(8ejuW|mM)26t2U4s<=vdunc>FRArFSXeM`Itd;%p(FRvRQvg!6#N zoC4(uAF;?Vkf)tRSmR%%pv;|5H*q5VJVXN^fIhRK6EZ>SAWX?Oty(nX}Wi8X-o?&&E#eUXbvO#@37^K-(B+jGy!{$8 zsqap1=JNb41gxFP>aL8&!*W9WB_#vo`>`(M-B|(2qRv=2C4^LdQYX>V0av}YhoRqT z)N;@QO>#P*`&Bw|m(Hcfo~|OBx~*~WNC8z4euUB9g>-kH6b63gc1sQuaL&FV5dYXt zmpM7(=A+ZV)}|VAV_Jz~RWYb;Jx8T;dx+!ggY@IgIk+=|%gs$mqDism(bzZ{yqvG& z^p=GnGSvtjkIYB&t%^*s{$#vaDh5hl*O6z|Px((aPsGw(WyqWR9ZWX%ay_9we6eU2 z9!OF`t(y%H6Ly~#UvvU?Qak@q$pZA*_?>R_w4gs7Zu9b=){?3`7cgEKf)2Uy7?Jpt zSczxRr}NBVox)x8yP(E1^bR4rJmX*v5oNrk96)Yr6|7GFfoquSI54xBp0g5#RPJB% zDsKbw-CJOzp#?jyE(aVX&k#wuR9xJD5$Z}bS;yXPx@FBEbnD#4flv|lgXBD@J7NT% z!hNCGzlJ|37fzg}NaLD-XBc5LLN0P$&bAXe48N6=(Joqz*QZn~P&DT{4#|ro7`wH~q)$(Rktm9W zgmq!K?DA{=x#JVS&}0~N4dhv~nj$C`e?byu2T7gFdYt*b6peo=<5mMPoReh^dfeY> zxZ9D~S#V~9R*Ku_iZN?T0PB}m;VrEzFcKV!WoM?*Wn4$=L-QnJ{-KA8{5VQ4Za;z@ zRm1exoV)PM9O<9pcGNu)iqnjw*cax%cyHQg!gH56j@$eMZ{MuPp{`=MYcWoW<|^VB zjVj{dGt8^uat#*@tDtGb3R*h;a5H)#=44bDu3OuUsasydti8QNOUMGx4ieg)zDDVt?9V$KP-eop2t1Pi#lwByCJKlf>d}cj5Jt zB16hb;339T)-I4I5>*t8CB>QH-)xL6$6JKop{;U93J;rF;&YJgK*$P zC|G=(l>d-qH1qz#E}dHFReDZ3gCeOx*FW%aF{YaaR`XXR`oKSKmbKsc4RMHnf)~4* z=^JB5Ds*@PTW@cOPMjxoWkWnqFt;CWb#-FMvRCk2!W`c1{({Gfwvm@z_i_0(AF^b) z3|gl5gS_)WW)+u*QBzzDa;+!$Mn5&#`{`k*Gb0A|lSbf$rWkAU^)58#2jQ!}I+%W_ zmplv{!V$+R2o+Fc4AxABi2cI&R#1bTnDY=$t@HztcV6sWe;}L?7cQ>7hG)hWpsZgP z-r#m2=fv(|iG~s*FjEJWF1q8R@3tiQr3+~~6@)RiQD_jGiFaSdTE9M#K*VRp!=u(1 zm>A#<6TLrJtIZ1G`sMFIbDcD`?d+=TQCx-LmqPG(O)|cs)! zE15iqUExm(KV0FzlJ&yk9p~VcND?viIYnmvok(tOkEhxnv*@mk%dlETi+jy_fkUsu zrM6Yz5^;%hT8xqOMO=8J;TEop6-Fo3)l~8ngGXFup=*FHt^Pg%GtPE_Ti7Tm?EXY= zA6m|JR?d-oqT4aS>q(0 zv6AGln+7_sQ^qfC=jpM=%e1S{iQ}NGg#A0sVXfB%9MEt?PqFtnI$w_U+o6KxYEN+9 zBMIn!!ukDP^r58AQP7{AiBEpN!@up{!FN?IIPnW$t%({44ozd54@`u0({A9EF`lnLZyf&5Zk~@TcaWmoVw`wj?bP?j0 z3xLI*mFVX>gPC6Tni$E;v6_uHaml%SZvJo{9=S-mcKWd)9YLxy5Qrs*{#-D4>KfeU)+ASekES`2} zp0d81EDaZ$U!l09C`9q2KuJK39ba~ZKR7!JuYR_pO4i~`UC&B>NXrefEK8Qo2}#B^ zVOQv9))=1}inG;y3T&b8aag`;F?|Y76?TWbP)UCmk^MbN?#}=iI`oTvI1`AQkE`-T z7g)lUft~Qrp7X-D#-aAF>oiDD6}NG-vi#*KJV_@Bj@k7DmuOXB+H_ZFc%jY=>d(Z$ z>-n_RZ2(rj=U2{?O~nR@iSY1F7;Ly0iLbXfT5ppL;t#c(k$mf&2wH~L(IuR(vityj z{(T45W=pfD-o~JofC;&va|T^HO^AG19QZp@@;zRg4YXf`<>#yU;i^R-^ZXQluuTkC zyZpr|YK!TdXdzaAMm!ns4M&&KbSWL)#*Xl{pue2oOD9H z%f;67D&;^_NCl6SWYD-raVX?AOfDWfk4I)r#(IU7Sa;z7{3I++54XU8y;^9iy_0Bd zXeMGJZurPQ1CrA}b4=lQUdLP^Cg|w^$rOphu>Pwg`u!!Go7l%+KiiTOjcKUV&<_I9 zr}p5QVaEJCG)9**=`g6|gGOhbbMGf7GNDHqs=YZ+!Ut=dvQwF=oGwB615a>;%W^3D z!ui_&NWxWR&fj;>hHiKMNHB=ZnihizCr;q_S^&58LAd7b zXDXU9kMY-v=D&}=faYR~bo_V$9N}{v=htd%=&E?kQWdX!G+}_;zga>p#5>SUUKuxh zctPacPNC><9sVmxC-<2+(y@O&eA0V|yO!+1jWMqh7`r4y&76Qd2qC|PtI8JkpibtV)3#NNW@g^Ph7dYT+r6@s$*SJ0%n z2nLhO@zk?H)SOvP9Tz0=77CH@?gT1gF%9l*^}?xqF4Os=jvgD( zVxmfh`P}&fX83@`X{Z`fT$@(3sFBS-zE=E+h(*()^=xmy7(U;<5!-!K z@yWepp8M!KQ24ok@eit@V-5W%(_)TF8LQz}y9-;Zu>gtcL0+C_KK=R zz<8lO=r$sLoiLZm>lWjzP1nh@f*i%JIZxN zW~B?UH_e7gv)mQFG@Fd0S;wI={4to6y~k@SZ=z6}G4snuo*LZD$GH0(htNfzQF(m^ z97QD=J&nh-#v>nZhD5@IEz_|&?H4YXtjQWQs=!pAYbeVXMlCbsss1=a)Yi#^f142F zHeZ59>($Xu8MZiS{v*J!2z=mLXnov#2J5RoN*fl6ftvO(+O_n8*Ayu>aE>`1epJ2+A9!B-XKI^I%LdQlB@ZCQ$!OT$3*c^p-Z34kw&5-{1+)H=Az z2C|j3*;)4aRH9=7t9|`0@k|+qu39Ht#%1OWT}#n7KM$HY=E^?qZu6ZkJrF=k{KM>Zo@km5k`fdT4S)28yq@$ zk5-+3%U`Y~M!9StkVHi{>3v_L5?EjirF^(F<63SP&#N%)#TBAmi129oK3! z5#giTu%r6O__|3hJ)Z}=R&%~Xc4n9aFE{coQ3*^`Y^Sq25c{?lLrGV&;9WsIFa~* zxN)9w72ZRztWtv;f~Vm1r=__0SseZIpEY^Qw}UwYT+eK{l6U*}56Dnq;DLZLT76oC z4+DkZV!$K}@)m?!AraVDIvL(we+tK=NBKK0?Bw$NPsr479ym?!8!1_^9Y2-?V`nSp z92{ScljKgrOUH1$uXPnhho&K@%Yv<|DZ40TA;c_FWEVaVU>!IQlqXvO*H`Su*?wto z@7!dls$YszYa;Ppn;C17uoK+>i7^UpUfAN_h%&w>`jzl1TFCdkG<&|u?)9`ml=J4T7?0x~^4 z6WX~xmHL_)=p1EBnP`lF27@oqz+&XD~-6}EW@WVK|{ZTsdcgV5D2ZPB46#*;H!agF+ zb&=!b-;i|iLGZpJ4tD}v;Im{ieR83im|opVM{Uya$7gY7>ShDx+}t4O+5ZduycV(F z?x`^{!5mj}vM)?cZsU9o_xKeif9dk5PxS7CYI3|L7pf;I@_k~I@qBI^4AgS&4QPhH zGw*_9S0d*N;@*3)nbzCqi!j$@m-4!1m%)yNe{kX5O%NI5dc=8>M1ve<4aUrH=x;GS zm4Az#SuG3omZ9{?pYM3GK$_UN4WjMkR^G?ldMei`|P%C-H# zwDsn2I&vk|VFu(FNn6=r%nlx1EDo=MpOh4{QOy`(jYqeh2Gwm8iR~ z1&s{3f^lVD{Nt_DnENfqvHQkJx-Z=mq%toMKZzVn-e`mFhvwqi^moK$I@gW2xC8yA zHqdiTm~|-61;3aLkacV$9yu992F0U^pOq%9X$yrYc_sGWwFkI)r8qk7eohisABUe? zrm|n(T*hZ?BDEJ10a3RIqPtib$6{4*U*|6CnJXqUKPN|FbM$gBZUDSZ@<79;ld83x zMEzz7@P6We+YLYAs?Kw`a%~vhDw{>~jx+Ewc#xm{XbQgkyBCi4Rp5s6KlqKKiM-XC zJ$U<8HL5w9@T9*0CCxWk(coxn?qa-5iSVWCn;^usSQ=c7j+6#V{6Xb+9IIHoVwm zfHT%T<*oV`g*tL_%w-)hP|%D3QS-Yb;ByaLQx{<`&PzZ|mu|jyrY5|qT*V6!l3|SA zX`r{vep*qXi|?w$*gbDJA2*tleYe-3z&scBLEK90RXq$(UtOnK!~S4CQxR^(UW4y} zvAEH=pD-CeshD&d?%32$_$#C;gF_o|QJ59`F1!ct{yd4ItA}{MN9#~!)tQ(q&-weLu$#s`-Buto0p8t!?H7}yg zvYT+)XFfNdxdQ*)U5En{GLX3t$aMe{=|7(cu#!__axYbLbbTXO^*e@h7@fxI`DUCm zC>K*cDl*dt&+*H+f#uIj10?0AKCAm}0x4cB%Q+_G*`5RID@6>?qtdcVcywPYS}fxD za39(U$y$o#o0?!S@f!Hpbm87N4dhUFKc-F$fL89F5%5Ei(cSQrF1?+B>VH!36X%Ue zHx*%dzXSLlU2l=zUk*}5yJ^v@nWS(*6Y4k(kk2D3C~!Cvle*r3cmWUdm)*q{zgfTm zXVJm=BWnEi7F%ya|JTb~UXE90!@I~U`(MinfM&cP-188AceDz3aU9jaUN zP`+_G_#J#nwF|G)h{UDfWpy3fnuKxGB%KT{b0=w&Tj&?J_gLwr%9!3QMqYRVPvf8n zt~WUa{M9mGe(ndHG>hdwf7!;HGdBdZ3QmLHoN6Kxmw<96clj~upoU;4|A24tyYSj_+ZK2AhHj?kXlX-Fqsfw*Oehu&*I;u0mMRU(9_ zIL^WfD{=PMj*YN<`8k~Z>;o*ka-3YBDo=|x&BZkl^LTp(EU3?h+d!WV!h=yuv??nC zk{S%JoA+V)b3W&2|Bvicnwq^n2m z?S+_0M`B3#@zXrH?b2wJQpSrJK1>fAiL+-83o=l^LL@iy3HK{NX(?UYb)*hHYnm}r z{F|-!9h7I?Oy-dImID5n);!)GPc4`gw+P?YZKTgE=91NV6=)LXh|8xD{_84NYzmiQ zQ^SRr#PDAF{>36l-kZStXVS(KzMzKtFa;O3=fdGdXP|F?KYh3IPi02zDH54q#dQWA zpy%FNgd#th;MYpsr`JH9y*NaLjnTp{^<=7?2D|+IS^T-A1QsRE!x)_k+_jqPSr!a{ zTB;P$Px{J}sgA(*7EA81}bgjSl+tLdChq^VTc*{DFXPYt3zq&1z&eJR) zlRP}B!&orwF$saI<9d}pS9{Q%ma|yvWzKZjqw}~`Z9TS1Zbmaddny``3v!SJ_EKI% zBP1U0+dYT2sZF?IsGr*r@iFJ9DaMcO$8D+Y979Nt!Qx#cd(KmsVcP<=k8fJ5EeeD6 zY!GSm45Fb1=g=f>2V60pi^Rtlz1O@XGc4YN)LMNech4Vi)(s(lA6|p(#)B~Dt1G1D zyTNZRgC_XsB+mFWkz@G#k~r?%JDYn>m)86Tlb$XDtnlWEbgS_4_b-Gim;H%C_8Qtg z_Z}~-@+J(P9RjtZI@VtEq+soV0rKQy3B6IhA7*+f!QE&>jA~Z~(+*8o^f?Nab(o@2 ze-exZy%>my7Os`!v+4o+FGl4uNv&g zNCFXIE4Zk80e6hvp@m^DU_$t5{4N~Eox4-f>97Fo;U~~ncUwTaE|hu{J1_~>#jv;2 zgn27zz;tUz(;$chJLwdRI;_LXkuip-L2mB7V61Y~Z8eP07)`>?zf7D2kGD-(R#=Z7H$#r}*mIF`_iPt;~Bz z2#(h+16$ddbZ_cbO#Wp8Cj^a2)8B)P*F*t4zhesg;y7}7jy2#ssjY%&WYhBG`REn{ z)TKEG@84^OkUdk_?lTKO?_?8ROR@yP-DiNmG6TAu|8jGTi|}8>bx8Kjt@OVp#V+CY zJ?9>7U`qogG8giMVau+Sc%iX~Unr6QHJ{SxO8z9q|K<$Xcy54Sc-)(|L>RH@FUKJw zu!`QZTL;5)uk%hj_wyocrepTF71YjG1l@15*>wY}z++bm4S2o|TnLI7l%URGA?BMr zqk?nyfcI5(_K&d?^bK3FFDzPcp;sZlQp=h(`=`i$ef1CTUVRQJPo&wb+9%}STnl2y z@h~hjL+G$&C_HLd4##o==|(6;`_?tMDrh?XIUtGKtEBn;8cSj4v*}dyZV45=Xav(% zNw9euWssCQ8Ft)`#Dc5Y^hBEuuRd`f*gZLnc}F|ZgY!6?P1rzx|EMHN){8+r+KDjl zV!&7^2BgA%ksspjcr51vakBToD9uLL`c#E~va}H9p1zM;A5=hna2cIr?Sn=8dkEZ& zf%@E!ndr_Q8 z#v5xrAn5)sGNM$95=p1vk##T5>Us#f@|3aasXrA|OoMeVsz|BXdHD0?63{p)4E^(* z+IT52DXMY!ci|}L4$Q>I8;Lz{;{@6slWsF}v=cis$|_eI$6fl7>qBj;R@Sj`BFII*7PVGQs36nM~i zg|GFQq1W`Ka76M5WX@A&Q-@FSB-8DAFX&v{ZLbPzzHH`l^LC(FTYwigJ|+((X49m} z=eRqj1FCG0r<*uOmFG3U%Zhu^>Py8uMox!<3`{X8%NKZYD17@JFbfAzzL^3 zsocImsJT#2zbB@E?H+xmf#cO^S}Z2&+8*q$EFr8Jmcm$NQCy*)PwV>4Ku^H~3+J@K zAKRQ zB&KnEetd}_Tl;)51}}L>_aC2(naY_M-plP;{|mr{xgu;yuox`8?umyt?k3KazBD($ z9J?l6#Qj`G$71F=ckRrnz2t< zG2GPMYi(V(f;lfd3sRVB#BpD9E_avt2ib@+LpS-A21%+Lcy#?~(+2JU21F zWK$uqYX?s7>*UoulY)Y=$FwTKtWnc{EA`G4xHoy~4+o=a(>`2+kFAcH$QCGqmRXZ!^t0eH;51RjU# zgJiEV%-RzHi3u!suWO_op6OIqD2?uwTu*wlLWs$MM0h0>%U7z1MQee#kWl;`=KRax zt2o=iFi7Fp2`l_Fv7DEzwh{DX2Fcl^3^+F<3G;#+N#|ZsMsY~Ia5FNUQ!_?M*M?PP|f5+Wsp6H2K;`{3-MGDJak{d z%<~aqJu9b@Z^;zWwu?e%630iFV7SaHzDblm`Mk&;125>}1p6qQQm@VI zn01Z3I6DbS=Z=wY`IkZIq%ZCyfMS_R@ZhF8Bg*e1`EL+CcX)AF-648f(+v8p`^g!9 zS@zq(I63dLU+>9 zeESzV-9#Jv|D7Q(_Xb1rF%vqblY!nYhUDqwb@ z^et*|dM2ib?}7E&BWSSbAV$teM4elaII!Ui+)6rz(brdlwoEI3$jO3H_@qcKPrr=g zd;RcWzX={2RiH0UvG7n|1;l&@z-x31`sxPq_D+}xqVu@9t?5GY7_88Bp%d!HmLb#Z z&Ut=9acE~Jo|c`4pFi7S_+N7nD`#o>dp^t-Isl8*l^D~@N68`gbEJImK3+Yn2){*# z$(mGMI^%C9=_xh<3rEiF{cizUTvuoQah<@_ldGWLnGo?)&#f&*_^41inaSL51VdeF zY~;}hKKUR)<$8D^vT6%{3!aZ}#sc|E^OK?d#yg_nIn1*Xyg)XU3NfYJ-frFWI@lh_ z?IrbMdATvl>_0O?S~cyd#*ZyDPc#JI`%5u_k5@s?nNGUT&YCWs5{mLi3dxVKT$25* z1DbA|!-AMNj&I1hyz4ZW*9C<*em)8ZGg^rMAqntZcNbh#K0>JUBJA?=VdTb&fr*$~ zdC#ec_wCJVq7hNS`=(e)aT4c$JCzBis~(_i-D$e&ZW?v8{{e-UuYkrU$IF?^;bodX)d^ch91PlMV@^1P-nvJ6mpP({+#h~!Oa(9SmJOZvv4*D(hv2Nu zZQQ3K504)rm{o?tU%w5EctbSI6fNL=%1FWl?|9Va9kbpP-NCoK7ev{m7I^-cGe+rZ zlHV7nf#b3v;^N;&tdiO)3nZm*mn(P23VDFHEiL(;o|+J$(g%sM`cS3S$N5YqV(45! zx>Zb>ZMzkVP4h3{U)KT}UGM+`lJqfu?^YB@L9)=VjhM-sQ|$xes1~aLUcY6*A>Iwm z*FU2k8WOmzWEl>q{-cLNk-9z(p&fR8G}>Z}f8tgN{VX?~q;0goXNv1^)xHaGqjC>C zjF3S*@P-UGoC5v0Y&`H(lg7PX!4@1`2vSf0%lVrUPt4)BnfTCC zUyp-T^&#@<#~9ti_viVnwZb90RBM+3S1S298v95*$^YpNuiCGoPwXua=V-}N#~hjO z30lF5sn=EjbBo-_zJEgP_BHHbL5`DXZ$Q~e)9q&)mq?0 zL_a;7c!amZ>?3*o`w?6^-U|_nBT1dW3F@R72DBmw??2*0LPaY4^(muGg)u02_e15h z89rDxVT@#0Yk^Os6Ph))Rr(K1g;FXDXE%F5d(Bk{6lmogwT>XU-luV|`){xrSHf3i zYM2?c1E0>m1$US_QV}I(JyNdDKDW1{-UT_(xLT3DB0U+Gum4U>`3bmTh7$xUkMI{Q zR=|g|XTxnzDctm`f!`HyiipW3^SCDpH#Fpk-}32LX#dUHU2iqyu5-h;B?9Exq|@*% z?IhMsuw=G&jnm+u{dkGljT_c$uxHK)F+Ht2(E8F({YW^pRodE&&bBwOru7KE z&UUnJ3{WELPfo`7D%;7Yb;dNW^)=SuQr_D}b#@E){I^W0Be|JPP;w>*3=S+sz265> z$JPQpPE5dOI?crKy(FyB?c!BirC9Ers;*AQP#us{#^zXDp zez;Ww{{FL?j#kHGzG*mAzIsar?1XX9N)Ky48sdpX+^*n|FQzqrpn``FKt_-V7^&~Y zvA>3}`dI?>cnD&VXb^8(pCenc_AS25>mYk2x1slE7b3eTi}ZcqSfC9TaQ~etKz4HO z=Y%nc;R=TAe-YkpUYzFX4INn`Cgmc%@ZFCDGmd1Yb?op)rO55P!}EDoR{o{f6^c^1Kdi z=~V-czk$y)Bf0+rz^RjyaeCq_&?zXzL;GiPtIJamA*#g4a!$~i<3*4*Fah@*xrJHr zA>elGEf{2H)Bl#wrL}IEkm_Dx9dttq6Tcimr^idF_^NEw8RE{5Pd`AKC6B)?z!|J= zIQVny@Msfqkn7&u=K6%zMv^?om&QbDYCLIu04kXl*aXD{FrT5<(c&q*`trIzqIvq9K47wkdwaDZ7)N9!J@HX#O z=^1J^C5_+Yl8IXmH{#X67IHW^3Ht&c(T_(nL9_e{p4@X3b&q60;O-8ZA^aYGTusCr z_t!jDS_Qhkp5iS&8bF_2a)Mi%b+KvV30@GF%bg4R$^R%i&pOwbIwx|_`jsf#dh{r|s^(Ks;5r4N71Siu z7wm(^AuTI~>hW`NO%a9dyKcemzB6=tXgx@e9|MoHWTd;Y>y{04%FRBA(@&$>N5=T&liTQ>qy)~SkcHJt zim}#EzdCE|3H-}mj7v0w>C1;7h?V0Xs9hEa>k?Dpn0F81O?yY9kB;+(zt>~(?+`4R zzkq)*TZVp6GUR{H=>XUH3s|oMe*EL7IFn<&9{yZ%5r1Bo3%yOH@Gy21EuXd0JKJYK z+ix3qadrl4Ciaroo;3~Bnm7*4+!@T~kW_xe+D)kLC(Y_Fu7|Qc1?JB7NqAt&3}Wq9 zMRV#mP&MIbcooQb0k7Afezg?)Z@xJ7UlvI=%wK|wu1!bH+CI|h`iDO1Hw4r1Diqoi z0Y`3AxC@f(u~;#V*BM5RyqJ#N&b8!0dNQx%a#ghmtq0YkaX=VHD$B7#Q`{r?&k7p( zQD}=nX)`&dh6(#$b`$UQtulPtuYmUo6d~|NG&)KY(Szq7P#!r%?tfasYIrXqxsN8G zu1^M?@>2-syf1^5)2~AD*DpBnh$+7-HGmfCPuN1i@p0<4Y6on1w3Qx|*a)o|zvw%;3E(Io%@{|=aC@K|n#5+1;zDsey=yam zi2OGCqlSb3-QSeNm6BA|dgs35nBK z4pSm*;7NBIeRyh!dMN$EhCq%X%ekTbuUWvWl0J+V&mczmiO>{b%IxKLfL471R%s=W zdt!lfYHu8z44g?jUH*aEd}j#HcEOIr40Y+=3K0f5B<4R4zPPwDo*GkPZ1NJR-{yQ= z%e|xKJbVflcW!|<1z$;`LI_>Qozbnh&fSbJnmF|R99f{H$91O$(KGA~ZM7dKo_D#o zJC3bsi>i(GV>klAB^#Hkz~6c1 z>>X)g-V*UD%;z{;%J>WB8>eILDi73sHV>}66amG90T{Qfie4Gj#jOVt>0if4DgXww zrBM_;-4R!Ruf?CwU*YY#Se|0x7Sbs56JO&j&^__t+F%fFMzYBgR43RI_?Laa98$Eq_9Hm5NalC*+K0j5TmH$1Fz5K15 zP7jEOqSdpoXm2WZB$ZUh*A#(d)O+F-7{kjgsHEkL4}|WU3*!M^#8p>~IhJr1Z(ni- zr@rO5cLl=G;1@ogOhncBX?QBcncQk}zzLI#annC3Xm+;2Q04pPx<8@%J6#Qv4J@H} zoPj-x8ff{m1cg5r(-1jNGO#8UGgDHLI&t31-L@Z!;yiYMLnWCh8@28FiAJR~`*`D1@D2)rM#UWvm23$Q z%!jf5n*_e|YQ?H$v)Kv9cjMLYCU~~5inj5jST~y%++XF)Ftxe`4{3Qu&qnZ!rERNe0g4n3T9uV z4lkVW(!r|g;d6-3UYdi;rn(*!G%qRLj%IN$7v?( zJ|zk36UyceaufKQ}>$)d2ahH4b9mHk0i#4H$cJA*&g5 z2Q;L&L8^cjoA_lRJzs6f$ouPIV!%Q8&#)NPzcj#&ts``@yf$Mp{FWTg3Lx7p>QJC{ z2X3;Rg$ccU@;F@vw#DX=do$M)U=7UY=2xNVpDL6;J`Y8Aso}0`cKj%fENVG=iOL3= zW66&d)i&!4*sx=Itlb8A=6mij5SF_`u+#!)UwVZ$(l20UjUeogh==KI@~nc82A&y~ z0v)>&TB_NDvlGOa!G(=P+`$Nw5{|(S_hKHu+nklJ&ckKN*Fg5?UPu!v=AWMIh+BX8 zaa;f~ra|L1-F(6q^v8`aDay&NYw?XXVi!p%f_oKp8BYc!64$j^2=Be+_L*E+> zX7fiY%)20gH-oa!V`UU%=+tAEj2yAh=%F=za?mKg9MXM_uza2cK4@En67!=m$?Y;2 zByNYl!V#$AaES z{xHDQ<@<1+_$V0}^hM7?6DIe{JlehNAC=wci2a=VXT-4?4G)Ro6`09BHESU|x7G5D zEmpx(Ej}KoIfoSweQ<^Ibqo-hgK%9AZ>HCRaOO6~@<1#$N3~Kt0R!;%vBGV){^3T! zxfpjzk<>n)#T)yP1mnH?P*_U=J2puZcgY{5!77~`e!CThMvg)4Uf|78iGr)ut)LZg z8W$>N;y+uit1*+yrD`n)C!;!?*{+I#uPsm@{31lhy?}j3Lf{O?B#O+Q4JHNx?4NtK zSbA*;ns3Fxt&ex`l|??5zIsi+?VrO>{t*k_(RWE=&om;MR|H4o_QTwYIpA@xnY!J4 ziWN#rKh&yGgbztb_hPf+VTorYequW0Amar&Yxkstou582@POw+w0v>ceiNZOsE zXYRe`er65}-u|N6JwM5Mi%3*@r9&3ChQXRYG0-v78dnx%f#s!0G@Kd=T8r0n&Ydvq zm74*ti&9AFr6m3pH*MzNG!y!6;%%7VrU12~qHyBZWTtJe4`g$1Wdl;xG;rz%B2nzm zd)Idach5LLG#3l7gLxHZ-T6I;951Nm<8yK|(GXV6U4l2#vZ3<}rLP;TamF$w#_;xY zcwlMu8bQ3PzO+yx%>j%}kw~L2EyRqKCk5UVDKL z7Q0)JS!J>K#{VJh%f3SHct%0x*PB@Vyop2`tz(w2Q9wr66{ia)lB1&+i8Vw}m6Of9 ztSo7=`s7v8a%nwZWJxV7;@-O4)vn|86EXaG*QP?o&LZ;6sQ}x*FGr(BZFo4HV_K!H zqr8mi;2z!%Kkek9Cf^iY{EpCBZd-7D%15l@4V&-%sz_~fO(EPcfUZqiM!wai!R`mM zc{2JJP~)=$5e}cu+Gm!~P~~sc-+d3@UnNgs`O*e`cM7u)HI_16nRXESVK;fZsuW{( z7~vTwFOGe!&%a%314lLda8h6y4qxR{-=5iw@TIM=?SuyN@T@kG4c!E)y$P77U{0ruZ|7#grL;Fh z7C)T{QzMS8H+o-^=h~u>@XSoklI&yt)-n-OjRLO!QDA z^BLYQbHd<}Q8K$>HsDlSVujsA@sktoY1z#i=a>h-3IUI1><6z zPIsPIMORj6vz1@N(I`oh_3*EO$)~^LANwMzy+Hg%dHFX>%o?nNO1udlA=s9NfZN&{i`4~1S8_w!q zCe3py@k=Mym7mgqUEDb}VF@4K`zGMchv%W$B93l$3xJH)S5VTe%m1eT7ymvGgj>S_ zSg`gfU3bxl75X^<$D7B{*j0v^cSsp~?!F?#MTgmkLSVAyuzAJ_-sjEOf3P^T6Y>0A_%8`x6<=I18Dl`JpQu_C!-ug zI!@w0)RU>8`+rP2uk5AMz8tLjoWGF$_}@W%^RNQtPMriBiDKBIU1qL-^bt>`l4EfDcVXN~Tl9S_ z0(0*w;i($H8-JdG*z65_whXb5$x(p&SFOc6tK|KBAvMA`EOKk%p(R$&B#<}+!YQ&A($n{OI8OfHuWkah1f zc+2*7g4nGKpmp^J3A4yS5IcdDZ=S;Kh9sEkCJze}_mM?`Q<>4Scd)xf4TPH)lSt*8 z@aOqVrsvoJ=yKc$X_Jf4W3D1@iLZs@+9Ra!PCa;y41mVed0?wyUG??rFdcq##e9LE z30bq{GHx4KM+A5LqE3qqnbw&cmw3i7y%Dz-w~5N)qvj9rH~BgmE?dmJm7>IRe-iEc zw*)3^xamEiH5idHxga?^_+nvUh@v+@;teuFHVuVI<`%$lG5< z5Ifl(;`e`ptFug))rQ%?7B!RWx2~Y8+gEf>SqhD>YGIXeF7zrc#tkr$XegzUu06&W zUwH=IdW^`SVHNi125b84Cb9CZ;+Y=VOHlO%wb3p+%AL%_5TDwr(~$5U>X$&vgBh}-a}Z$&Pz>*Y$a zCx7K#ebh~-huwyk+XXr1izy~Kl)zYyKYhCF9{CqN4T40UW4XHm6wYm@u^WZ3JGB!t zW7d<1eg*iED8q(*3PnwyBr>*733aWfFsi+C;gWSW#umlVIPX>>+@68ncn~`EFA#-A z>5!bP#a`bm$KJhZ&l{bgPT9U1^vEp(cP0T2&T*ss3lrFBZc9Ke!2qgXu7M&AY3v{6 za{doiqUfee$a^Nr%5PPJ2|OYAk#EO8UG|T+uSi*S#6x3 zIu&kZI>A8H4Ek*EQmhd@OrLB_;u}gRGp*hNOgT>rhW5vD+)j?07}r8C1!Yr5^Dap8; z(Pu9WPG*Vv8r)r8Lt|aaFmh-jYaLk(A0&>LyDe-da$AGIw|kspeHyWK_OGf-mRo}S zBtG#sYUg^xUBu(73)X8@!Me#;=-PE%FrUjdzk7L-yw}qMse&T%<;x_z`1u=|e%ug0 zUDl!^cEXHXyfr^qY6$jhxkU^A#naKV!*C~(Tf4g^V}nZ_#&Ldug!(8NKIs)a(Ah*c zTUp_t%RM;ui8}}L(s9`kAFp=4qTyNk@ax`LIuglca+0<2+S*c(I~sugM~Cn2= zSUtLWx+J^u<5YTdh76PcVT8ZsW*Xc#dVu%OUqO{EZ!o1}9aR4rg|#csL06V-)tp~EdBf$Kz<2rC5E%M~O|t9Q>AepieD)#iTqg#XXkFB19s47MHJk7qtQf}Ste3HK0S zOfZ4#DsKU?C)}M$n&T4*EQQexud!k8R_52g0F>kSbFCkO>B=}RM_ZFfZ3Cq+YqKD; zQn3L9cXx z@8d$Apu-cI`luJ|T{)J*uSI;7Df!@PGZSC7Zl)3C>iBB;)#~eiPr<&_m;9Yx66iKt zip>!JN-W1s@btP#Y*5jCjCoy8d(K?}ZukV=)mL zy(e>7qJuxP`6ojaU~!lh9$&(-Ascn^)OD8h7oOzJE)IsYhIF`9EkkX7ilD?;2bP#T zhv#ow_*JVTL0i6wjz!*~ThnjR{a!`%Q=ttU`Bef$AMyV)2H4Hl4HhO4R6+)~mR zm4|bclvvl<56Gg|{$S)Xo8Sd41l-B)iW=yYy$jF1J4k4-7S@g2q#Hcr z@!Jl2xV>U8%t+6I=iIsfzhysht7#>Tu8zQlaYtgtvj){!B`Dy(f|-B0g#>CxnrlAR z$JS#W#5esdbw6njzqdDIPhLA5pK%B0aoNDTSi@7A>_98pIzYWq0o6-xgKoS5Gu$|h z4R5=JAqNj&G!X^Yb=H`soefhZoMGVQ61;Rzgpn*#$D@lb!RW?FzD9un&KX*X?hC8o z%>@@IX>P!T6O$RYp4rTrVR6z}yBplK#QBzHuApP#P2?m(aapYqcJ4lllLWq^oWK@SJ>j=SWVa=zziLMzpxzNFC1cA-dNFYTWNakHaMN zy0ZwD#&4jvc+v1l=|9MdTLe~TC$e=tvZxwh00zAKWNgF{61l%krT!-D5OS)bi6VHT z32FSlEAS*c0`w$DA!oBDon~we7a{{uefm%Q>^6_Cc_4x!J>S7+qBYot|3aU0N!9!E zTzQon?~yrK3z#IwFqG9#!Jvsd0R(H^NX}r5n9bj#~E1E7@hqGeMnJ;$$u6r0WrUwTxEk&F$zpDWn zNBuFxXCL$1R+7#Ov7%f&2bU=QBY6@_z@sA!mOAgjJf&6~S**roGiv#TOCRIgE1@{Q zh?}o|5QmHB4}+v=Gwk2xjjsdSN&B@aG+=xo+wgNQ*_Zzbz6kyVQ*9mIlZFVMT|pdi zU2un2ue}^Pgm;?zY&$^yjhny%or|!zdp_FC6@zOIYZ$vVIpl)rUMMJ1X0Gz{Q8ro^ z?{BMtdGbXNta}o8HXGnLcc#&Jt;?+Kv%wUrG~{MTxIj6N4oZ39Y2UZd@0vyLaFdfX zMP2;pU<{r<%YavVn=+F6WK&-i6H(zymcwQ4hO=Lj)Ae)*8;?oIwR%w&I? zm!h+>6*EKsHc|iahSZ;44evDrAym2!yv}j&&>vT0=7cI})EnTho0tPHp9%0Yq7Ney@$RqnfD7OqH!`IKEOnnmQZGJ*`glgdS zAq9B8)si$P43O0OckthYQ8IIyIumtJ4Knt)L5)Ex+|A9P&Ruo%Q{GBO)xi{a`!Dlk zFO8yvmI>EaG2`+W-Z0^L4qABn&}ff)F!W;{{T#$~mFp>LaJlqP zQ5fad4q_dNSe@n#Ei0CjbsG+#b%Y!ob!)&+sRl&FOa>i-b}>`ft8{6lDdchchbwOx zJ)cqxeM^1uU35Q02nuoTty_>JA;~1i%tw!j;t+Z4GMweS1J42@@t2<@lWlnzv&b;qYD)zX}=impL2(ZTOB0*$79Xq1pJ}mPC7~X)C+1`(&3ZcT&B@Xkv;rK z3dWDB!L{e=tnK3~BrE4E?D`Z+R%#i8NBAx@yZVRDf0;>Av^=S0=`sF3=RW?OZTe`{ zk%EHzWwF%Th`-=U0gn8vrKayTLZW4#xz2<#c)h&Je29BvDzw`U3Qcd&=Rys7=A@AC ze^)b1L7-t`n)Q?H}7+CRGQmjt8w zmAn6q3g9W})#TZWQ1S%gpgGKz7%2sEorzWm{o_OWPo9EgiT!Zv`UH|O_ZjIQk!CYL z#bEtRappj~4ZqAe1C+FkS+Vctu$9XRCnW3R9Iw43djA1z+jtO5zvWf`rsqJ7MB(02 zuHP5pj;B5rpuYYr=sx^|q&zn@6FU}xeOsfzpzR?2PqG%`W%rWJeG$0tE+_kV{2!5Q z??mBQA3=?CmR4Vz#Tz7Xp$ zZwfqH7K$4^U-0C(bMctbLY&{u;Lipbti1Y}diV)q(bTmtkygO2Z>PXIYZksdArH)Y z3G>`nSvb-ig&~iWQQ*m1wCJ~@m16HukUxRRoGy&_R4zi)wkJ4wC=Fx&c@mk3eKTHO(8w?ct!#-M%i#ZO1j)y3l z!=)UgH^xKI3xANzkYk0-j??6z+ZgjZly~z{3}o1*;_D_KoRP>ZY__wCl!-QpbsYA#M+?6naO&ZF? ztvwku#;ujE-28|R?K*;3eV$k;&!&ojuH3nN8dJn^fZJv^;OU>`xT3TXB)D#kw`(;S zt4zhxr$zh{F?Iejlh5dfO|acTm&Ok%E1xe=R|XI0p{)N#Fn=#I%jOb1cO;P=sy69KVAj# zM@BeVB@kRz@M-eT4*0A0itLCRB9WUXu!&2727Ou2mKK`OyE@xgJC7|mbTS&tyCTeG zH)!C45)_6DekMd$RCo_VeT!ihFiy$6RjH`=;`%#czBHh z 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ǺRFw_^O2()Va+KhSLBGqB?Qs+EmWP@tqee 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 UAN- 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�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

|+GkEf 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

%pm;27GFBp{ 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 Sxrnwc90fG_Pn-Q;w*Lp8Ol~#+ literal 0 HcmV?d00001 diff --git a/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/vocabulary.json b/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/vocabulary.json new file mode 100644 index 00000000000000..55d65ab4f26dce --- /dev/null +++ b/x-pack/test/functional/services/ml/resources/trained_model_definitions/pt_tiny_elser/vocabulary.json @@ -0,0 +1,30526 @@ +{ + "vocabulary": [ + "[PAD]", + "[unused0]", + "[unused1]", + "[unused2]", + "[unused3]", + "[unused4]", + "[unused5]", + "[unused6]", + "[unused7]", + "[unused8]", + "[unused9]", + "[unused10]", + "[unused11]", + "[unused12]", + "[unused13]", + "[unused14]", + "[unused15]", + "[unused16]", + "[unused17]", + "[unused18]", + "[unused19]", + "[unused20]", + "[unused21]", + "[unused22]", + "[unused23]", + "[unused24]", + "[unused25]", + "[unused26]", + "[unused27]", + "[unused28]", + "[unused29]", + "[unused30]", + "[unused31]", + "[unused32]", + "[unused33]", + "[unused34]", + "[unused35]", + "[unused36]", + "[unused37]", + "[unused38]", + "[unused39]", + "[unused40]", + "[unused41]", + "[unused42]", + "[unused43]", + "[unused44]", + "[unused45]", + "[unused46]", + "[unused47]", + "[unused48]", + "[unused49]", + "[unused50]", + "[unused51]", + "[unused52]", + "[unused53]", + "[unused54]", + "[unused55]", + "[unused56]", + "[unused57]", + "[unused58]", + "[unused59]", + "[unused60]", + "[unused61]", + "[unused62]", + "[unused63]", + "[unused64]", + "[unused65]", + "[unused66]", + "[unused67]", + "[unused68]", + "[unused69]", + "[unused70]", + "[unused71]", + "[unused72]", + "[unused73]", + "[unused74]", + "[unused75]", + "[unused76]", + "[unused77]", + "[unused78]", + "[unused79]", + "[unused80]", + "[unused81]", + "[unused82]", + "[unused83]", + "[unused84]", + "[unused85]", + "[unused86]", + "[unused87]", + "[unused88]", + "[unused89]", + "[unused90]", + "[unused91]", + "[unused92]", + "[unused93]", + "[unused94]", + "[unused95]", + "[unused96]", + "[unused97]", + "[unused98]", + "[UNK]", + "[CLS]", + "[SEP]", + "[MASK]", + "[unused99]", + "[unused100]", + "[unused101]", + "[unused102]", + "[unused103]", + "[unused104]", + "[unused105]", + "[unused106]", + "[unused107]", + "[unused108]", + "[unused109]", + "[unused110]", + "[unused111]", + "[unused112]", + "[unused113]", + "[unused114]", + "[unused115]", + "[unused116]", + "[unused117]", + "[unused118]", + "[unused119]", + "[unused120]", + "[unused121]", + "[unused122]", + "[unused123]", + "[unused124]", + "[unused125]", + "[unused126]", + "[unused127]", + "[unused128]", + "[unused129]", + "[unused130]", + "[unused131]", + "[unused132]", + "[unused133]", + "[unused134]", + "[unused135]", + "[unused136]", + "[unused137]", + "[unused138]", + "[unused139]", + "[unused140]", + "[unused141]", + "[unused142]", + "[unused143]", + "[unused144]", + "[unused145]", + "[unused146]", + "[unused147]", + "[unused148]", + "[unused149]", + "[unused150]", + "[unused151]", + "[unused152]", + "[unused153]", + "[unused154]", + "[unused155]", + "[unused156]", + "[unused157]", + "[unused158]", + "[unused159]", + "[unused160]", + "[unused161]", + "[unused162]", + "[unused163]", + "[unused164]", + "[unused165]", + "[unused166]", + "[unused167]", + "[unused168]", + "[unused169]", + "[unused170]", + "[unused171]", + "[unused172]", + "[unused173]", + "[unused174]", + "[unused175]", + "[unused176]", + "[unused177]", + "[unused178]", + "[unused179]", + "[unused180]", + "[unused181]", + "[unused182]", + "[unused183]", + "[unused184]", + "[unused185]", + "[unused186]", + "[unused187]", + "[unused188]", + "[unused189]", + "[unused190]", + "[unused191]", + "[unused192]", + "[unused193]", + "[unused194]", + "[unused195]", + "[unused196]", + "[unused197]", + "[unused198]", + "[unused199]", + "[unused200]", + "[unused201]", + "[unused202]", + "[unused203]", + "[unused204]", + "[unused205]", + "[unused206]", + "[unused207]", + "[unused208]", + "[unused209]", + "[unused210]", + "[unused211]", + "[unused212]", + "[unused213]", + "[unused214]", + "[unused215]", + "[unused216]", + "[unused217]", + "[unused218]", + "[unused219]", + "[unused220]", + "[unused221]", + "[unused222]", + "[unused223]", + "[unused224]", + "[unused225]", + "[unused226]", + "[unused227]", + "[unused228]", + "[unused229]", + "[unused230]", + "[unused231]", + "[unused232]", + "[unused233]", + "[unused234]", + "[unused235]", + "[unused236]", + "[unused237]", + "[unused238]", + "[unused239]", + "[unused240]", + "[unused241]", + "[unused242]", + "[unused243]", + "[unused244]", + "[unused245]", + "[unused246]", + "[unused247]", + "[unused248]", + "[unused249]", + "[unused250]", + "[unused251]", + "[unused252]", + "[unused253]", + "[unused254]", + "[unused255]", + "[unused256]", + "[unused257]", + "[unused258]", + "[unused259]", + "[unused260]", + "[unused261]", + "[unused262]", + "[unused263]", + "[unused264]", + "[unused265]", + "[unused266]", + "[unused267]", + "[unused268]", + "[unused269]", + "[unused270]", + "[unused271]", + "[unused272]", + "[unused273]", + "[unused274]", + "[unused275]", + "[unused276]", + "[unused277]", + "[unused278]", + "[unused279]", + "[unused280]", + "[unused281]", + "[unused282]", + "[unused283]", + "[unused284]", + "[unused285]", + "[unused286]", + "[unused287]", + "[unused288]", + "[unused289]", + "[unused290]", + "[unused291]", + "[unused292]", + "[unused293]", + "[unused294]", + "[unused295]", + "[unused296]", + "[unused297]", + "[unused298]", + "[unused299]", + "[unused300]", + "[unused301]", + "[unused302]", + "[unused303]", + "[unused304]", + "[unused305]", + "[unused306]", + "[unused307]", + "[unused308]", + "[unused309]", + "[unused310]", + "[unused311]", + "[unused312]", + "[unused313]", + "[unused314]", + "[unused315]", + "[unused316]", + "[unused317]", + "[unused318]", + "[unused319]", + "[unused320]", + "[unused321]", + "[unused322]", + "[unused323]", + "[unused324]", + "[unused325]", + "[unused326]", + "[unused327]", + "[unused328]", + "[unused329]", + "[unused330]", + "[unused331]", + "[unused332]", + "[unused333]", + "[unused334]", + "[unused335]", + "[unused336]", + "[unused337]", + "[unused338]", + "[unused339]", + "[unused340]", + "[unused341]", + "[unused342]", + "[unused343]", + "[unused344]", + "[unused345]", + "[unused346]", + "[unused347]", + "[unused348]", + "[unused349]", + "[unused350]", + "[unused351]", + "[unused352]", + "[unused353]", + "[unused354]", + "[unused355]", + "[unused356]", + "[unused357]", + "[unused358]", + "[unused359]", + "[unused360]", + "[unused361]", + "[unused362]", + "[unused363]", + "[unused364]", + "[unused365]", + "[unused366]", + "[unused367]", + "[unused368]", + "[unused369]", + "[unused370]", + "[unused371]", + "[unused372]", + "[unused373]", + "[unused374]", + "[unused375]", + "[unused376]", + "[unused377]", + "[unused378]", + "[unused379]", + "[unused380]", + "[unused381]", + "[unused382]", + "[unused383]", + "[unused384]", + "[unused385]", + "[unused386]", + "[unused387]", + "[unused388]", + "[unused389]", + "[unused390]", + "[unused391]", + "[unused392]", + "[unused393]", + "[unused394]", + "[unused395]", + "[unused396]", + "[unused397]", + "[unused398]", + "[unused399]", + "[unused400]", + "[unused401]", + "[unused402]", + "[unused403]", + "[unused404]", + "[unused405]", + "[unused406]", + "[unused407]", + "[unused408]", + "[unused409]", + "[unused410]", + "[unused411]", + "[unused412]", + "[unused413]", + "[unused414]", + "[unused415]", + "[unused416]", + "[unused417]", + "[unused418]", + "[unused419]", + "[unused420]", + "[unused421]", + "[unused422]", + "[unused423]", + "[unused424]", + "[unused425]", + "[unused426]", + "[unused427]", + "[unused428]", + "[unused429]", + "[unused430]", + "[unused431]", + "[unused432]", + "[unused433]", + "[unused434]", + "[unused435]", + "[unused436]", + "[unused437]", + "[unused438]", + "[unused439]", + "[unused440]", + "[unused441]", + "[unused442]", + "[unused443]", + "[unused444]", + "[unused445]", + "[unused446]", + "[unused447]", + "[unused448]", + "[unused449]", + "[unused450]", + "[unused451]", + "[unused452]", + "[unused453]", + "[unused454]", + "[unused455]", + "[unused456]", + "[unused457]", + "[unused458]", + "[unused459]", + "[unused460]", + "[unused461]", + "[unused462]", + "[unused463]", + "[unused464]", + "[unused465]", + "[unused466]", + "[unused467]", + "[unused468]", + "[unused469]", + "[unused470]", + "[unused471]", + "[unused472]", + "[unused473]", + "[unused474]", + "[unused475]", + "[unused476]", + "[unused477]", + "[unused478]", + "[unused479]", + "[unused480]", + "[unused481]", + "[unused482]", + "[unused483]", + "[unused484]", + "[unused485]", + "[unused486]", + "[unused487]", + "[unused488]", + "[unused489]", + "[unused490]", + "[unused491]", + "[unused492]", + "[unused493]", + "[unused494]", + "[unused495]", + "[unused496]", + "[unused497]", + "[unused498]", + "[unused499]", + "[unused500]", + "[unused501]", + "[unused502]", + "[unused503]", + "[unused504]", + "[unused505]", + "[unused506]", + "[unused507]", + "[unused508]", + "[unused509]", + "[unused510]", + "[unused511]", + "[unused512]", + "[unused513]", + "[unused514]", + "[unused515]", + "[unused516]", + "[unused517]", + "[unused518]", + "[unused519]", + "[unused520]", + "[unused521]", + "[unused522]", + "[unused523]", + "[unused524]", + "[unused525]", + "[unused526]", + "[unused527]", + "[unused528]", + "[unused529]", + "[unused530]", + "[unused531]", + "[unused532]", + "[unused533]", + "[unused534]", + "[unused535]", + "[unused536]", + "[unused537]", + "[unused538]", + "[unused539]", + "[unused540]", + "[unused541]", + "[unused542]", + "[unused543]", + "[unused544]", + "[unused545]", + "[unused546]", + "[unused547]", + "[unused548]", + "[unused549]", + "[unused550]", + "[unused551]", + "[unused552]", + "[unused553]", + "[unused554]", + "[unused555]", + "[unused556]", + "[unused557]", + "[unused558]", + "[unused559]", + "[unused560]", + "[unused561]", + "[unused562]", + "[unused563]", + "[unused564]", + "[unused565]", + "[unused566]", + "[unused567]", + "[unused568]", + "[unused569]", + "[unused570]", + "[unused571]", + "[unused572]", + "[unused573]", + "[unused574]", + "[unused575]", + "[unused576]", + "[unused577]", + "[unused578]", + "[unused579]", + "[unused580]", + "[unused581]", + "[unused582]", + "[unused583]", + "[unused584]", + "[unused585]", + "[unused586]", + "[unused587]", + "[unused588]", + "[unused589]", + "[unused590]", + "[unused591]", + "[unused592]", + "[unused593]", + "[unused594]", + "[unused595]", + "[unused596]", + "[unused597]", + "[unused598]", + "[unused599]", + "[unused600]", + "[unused601]", + "[unused602]", + "[unused603]", + "[unused604]", + "[unused605]", + "[unused606]", + "[unused607]", + "[unused608]", + "[unused609]", + "[unused610]", + "[unused611]", + "[unused612]", + "[unused613]", + "[unused614]", + "[unused615]", + "[unused616]", + "[unused617]", + "[unused618]", + "[unused619]", + "[unused620]", + "[unused621]", + "[unused622]", + "[unused623]", + "[unused624]", + "[unused625]", + "[unused626]", + "[unused627]", + "[unused628]", + "[unused629]", + "[unused630]", + "[unused631]", + "[unused632]", + "[unused633]", + "[unused634]", + "[unused635]", + "[unused636]", + "[unused637]", + "[unused638]", + "[unused639]", + "[unused640]", + "[unused641]", + "[unused642]", + "[unused643]", + "[unused644]", + "[unused645]", + "[unused646]", + "[unused647]", + "[unused648]", + "[unused649]", + "[unused650]", + "[unused651]", + "[unused652]", + "[unused653]", + "[unused654]", + "[unused655]", + "[unused656]", + "[unused657]", + "[unused658]", + "[unused659]", + "[unused660]", + "[unused661]", + "[unused662]", + "[unused663]", + "[unused664]", + "[unused665]", + "[unused666]", + "[unused667]", + "[unused668]", + "[unused669]", + "[unused670]", + "[unused671]", + "[unused672]", + "[unused673]", + "[unused674]", + "[unused675]", + "[unused676]", + "[unused677]", + "[unused678]", + "[unused679]", + "[unused680]", + "[unused681]", + "[unused682]", + "[unused683]", + "[unused684]", + "[unused685]", + "[unused686]", + "[unused687]", + "[unused688]", + "[unused689]", + "[unused690]", + "[unused691]", + "[unused692]", + "[unused693]", + "[unused694]", + "[unused695]", + "[unused696]", + "[unused697]", + "[unused698]", + "[unused699]", + "[unused700]", + "[unused701]", + "[unused702]", + "[unused703]", + "[unused704]", + "[unused705]", + "[unused706]", + "[unused707]", + "[unused708]", + "[unused709]", + "[unused710]", + "[unused711]", + "[unused712]", + "[unused713]", + "[unused714]", + "[unused715]", + "[unused716]", + "[unused717]", + "[unused718]", + "[unused719]", + "[unused720]", + "[unused721]", + "[unused722]", + "[unused723]", + "[unused724]", + "[unused725]", + "[unused726]", + "[unused727]", + "[unused728]", + "[unused729]", + "[unused730]", + "[unused731]", + "[unused732]", + "[unused733]", + "[unused734]", + "[unused735]", + "[unused736]", + "[unused737]", + "[unused738]", + "[unused739]", + "[unused740]", + "[unused741]", + "[unused742]", + "[unused743]", + "[unused744]", + "[unused745]", + "[unused746]", + "[unused747]", + "[unused748]", + "[unused749]", + "[unused750]", + "[unused751]", + "[unused752]", + "[unused753]", + "[unused754]", + "[unused755]", + "[unused756]", + "[unused757]", + "[unused758]", + "[unused759]", + "[unused760]", + "[unused761]", + "[unused762]", + "[unused763]", + "[unused764]", + "[unused765]", + "[unused766]", + "[unused767]", + "[unused768]", + "[unused769]", + "[unused770]", + "[unused771]", + "[unused772]", + "[unused773]", + "[unused774]", + "[unused775]", + "[unused776]", + "[unused777]", + "[unused778]", + "[unused779]", + "[unused780]", + "[unused781]", + "[unused782]", + "[unused783]", + "[unused784]", + "[unused785]", + "[unused786]", + "[unused787]", + "[unused788]", + "[unused789]", + "[unused790]", + "[unused791]", + "[unused792]", + "[unused793]", + "[unused794]", + "[unused795]", + "[unused796]", + "[unused797]", + "[unused798]", + "[unused799]", + "[unused800]", + "[unused801]", + "[unused802]", + "[unused803]", + "[unused804]", + "[unused805]", + "[unused806]", + "[unused807]", + "[unused808]", + "[unused809]", + "[unused810]", + "[unused811]", + "[unused812]", + "[unused813]", + "[unused814]", + "[unused815]", + "[unused816]", + "[unused817]", + "[unused818]", + "[unused819]", + "[unused820]", + "[unused821]", + "[unused822]", + "[unused823]", + "[unused824]", + "[unused825]", + "[unused826]", + "[unused827]", + "[unused828]", + "[unused829]", + "[unused830]", + "[unused831]", + "[unused832]", + "[unused833]", + "[unused834]", + "[unused835]", + "[unused836]", + "[unused837]", + "[unused838]", + "[unused839]", + "[unused840]", + "[unused841]", + "[unused842]", + "[unused843]", + "[unused844]", + "[unused845]", + "[unused846]", + "[unused847]", + "[unused848]", + "[unused849]", + "[unused850]", + "[unused851]", + "[unused852]", + "[unused853]", + "[unused854]", + "[unused855]", + "[unused856]", + "[unused857]", + "[unused858]", + "[unused859]", + "[unused860]", + "[unused861]", + "[unused862]", + "[unused863]", + "[unused864]", + "[unused865]", + "[unused866]", + "[unused867]", + "[unused868]", + "[unused869]", + "[unused870]", + "[unused871]", + "[unused872]", + "[unused873]", + "[unused874]", + "[unused875]", + "[unused876]", + "[unused877]", + "[unused878]", + "[unused879]", + "[unused880]", + "[unused881]", + "[unused882]", + "[unused883]", + "[unused884]", + "[unused885]", + "[unused886]", + "[unused887]", + "[unused888]", + "[unused889]", + "[unused890]", + "[unused891]", + "[unused892]", + "[unused893]", + "[unused894]", + "[unused895]", + "[unused896]", + "[unused897]", + "[unused898]", + "[unused899]", + "[unused900]", + "[unused901]", + "[unused902]", + "[unused903]", + "[unused904]", + "[unused905]", + "[unused906]", + "[unused907]", + "[unused908]", + "[unused909]", + "[unused910]", + "[unused911]", + "[unused912]", + "[unused913]", + "[unused914]", + "[unused915]", + "[unused916]", + "[unused917]", + "[unused918]", + "[unused919]", + "[unused920]", + "[unused921]", + "[unused922]", + "[unused923]", + "[unused924]", + "[unused925]", + "[unused926]", + "[unused927]", + "[unused928]", + "[unused929]", + "[unused930]", + "[unused931]", + "[unused932]", + "[unused933]", + "[unused934]", + "[unused935]", + "[unused936]", + "[unused937]", + "[unused938]", + "[unused939]", + "[unused940]", + "[unused941]", + "[unused942]", + "[unused943]", + "[unused944]", + "[unused945]", + "[unused946]", + "[unused947]", + "[unused948]", + "[unused949]", + "[unused950]", + "[unused951]", + "[unused952]", + "[unused953]", + "[unused954]", + "[unused955]", + "[unused956]", + "[unused957]", + "[unused958]", + "[unused959]", + "[unused960]", + "[unused961]", + "[unused962]", + "[unused963]", + "[unused964]", + "[unused965]", + "[unused966]", + "[unused967]", + "[unused968]", + "[unused969]", + "[unused970]", + "[unused971]", + "[unused972]", + "[unused973]", + "[unused974]", + "[unused975]", + "[unused976]", + "[unused977]", + "[unused978]", + "[unused979]", + "[unused980]", + "[unused981]", + "[unused982]", + "[unused983]", + "[unused984]", + "[unused985]", + "[unused986]", + "[unused987]", + "[unused988]", + "[unused989]", + "[unused990]", + "[unused991]", + "[unused992]", + "[unused993]", + "!", + "\"", + "#", + "$", + "%", + "&", + "'", + "(", + ")", + "*", + "+", + ",", + "-", + ".", + "/", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + ":", + ";", + "<", + "=", + ">", + "?", + "@", + "[", + "\\", + "]", + "^", + "_", + "`", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "{", + "|", + "}", + "~", + "\u00a1", + "\u00a2", + "\u00a3", + "\u00a4", + "\u00a5", + "\u00a6", + "\u00a7", + "\u00a8", + "\u00a9", + "\u00aa", + "\u00ab", + "\u00ac", + "\u00ae", + "\u00b0", + "\u00b1", + "\u00b2", + "\u00b3", + "\u00b4", + "\u00b5", + "\u00b6", + "\u00b7", + "\u00b9", + "\u00ba", + "\u00bb", + "\u00bc", + "\u00bd", + "\u00be", + "\u00bf", + "\u00d7", + "\u00df", + "\u00e6", + "\u00f0", + "\u00f7", + "\u00f8", + "\u00fe", + "\u0111", + "\u0127", + "\u0131", + "\u0142", + "\u014b", + "\u0153", + "\u0192", + "\u0250", + "\u0251", + "\u0252", + "\u0254", + "\u0255", + "\u0259", + "\u025b", + "\u0261", + "\u0263", + "\u0268", + "\u026a", + "\u026b", + "\u026c", + "\u026f", + "\u0272", + "\u0274", + "\u0279", + "\u027e", + "\u0280", + "\u0281", + "\u0282", + "\u0283", + "\u0289", + "\u028a", + "\u028b", + "\u028c", + "\u028e", + "\u0290", + "\u0291", + "\u0292", + "\u0294", + "\u02b0", + "\u02b2", + "\u02b3", + "\u02b7", + "\u02b8", + "\u02bb", + "\u02bc", + "\u02be", + "\u02bf", + "\u02c8", + "\u02d0", + "\u02e1", + "\u02e2", + "\u02e3", + "\u02e4", + "\u03b1", + "\u03b2", + "\u03b3", + "\u03b4", + "\u03b5", + "\u03b6", + "\u03b7", + "\u03b8", + "\u03b9", + "\u03ba", + "\u03bb", + "\u03bc", + "\u03bd", + "\u03be", + "\u03bf", + "\u03c0", + "\u03c1", + "\u03c2", + "\u03c3", + "\u03c4", + "\u03c5", + "\u03c6", + "\u03c7", + "\u03c8", + "\u03c9", + "\u0430", + "\u0431", + "\u0432", + "\u0433", + "\u0434", + "\u0435", + "\u0436", + "\u0437", + "\u0438", + "\u043a", + "\u043b", + "\u043c", + "\u043d", + "\u043e", + "\u043f", + "\u0440", + "\u0441", + "\u0442", + "\u0443", + "\u0444", + "\u0445", + "\u0446", + "\u0447", + "\u0448", + "\u0449", + "\u044a", + "\u044b", + "\u044c", + "\u044d", + "\u044e", + "\u044f", + "\u0452", + "\u0454", + "\u0456", + "\u0458", + "\u0459", + "\u045a", + "\u045b", + "\u04cf", + "\u0561", + "\u0562", + "\u0563", + "\u0564", + "\u0565", + "\u0569", + "\u056b", + "\u056c", + "\u056f", + "\u0570", + "\u0574", + "\u0575", + "\u0576", + "\u0578", + "\u057a", + "\u057d", + "\u057e", + "\u057f", + "\u0580", + "\u0582", + "\u0584", + "\u05be", + "\u05d0", + "\u05d1", + "\u05d2", + "\u05d3", + "\u05d4", + "\u05d5", + "\u05d6", + "\u05d7", + "\u05d8", + "\u05d9", + "\u05da", + "\u05db", + "\u05dc", + "\u05dd", + "\u05de", + "\u05df", + "\u05e0", + "\u05e1", + "\u05e2", + "\u05e3", + "\u05e4", + "\u05e5", + "\u05e6", + "\u05e7", + "\u05e8", + "\u05e9", + "\u05ea", + "\u060c", + "\u0621", + "\u0627", + "\u0628", + "\u0629", + "\u062a", + "\u062b", + "\u062c", + "\u062d", + "\u062e", + "\u062f", + "\u0630", + "\u0631", + "\u0632", + "\u0633", + "\u0634", + "\u0635", + "\u0636", + "\u0637", + "\u0638", + "\u0639", + "\u063a", + "\u0640", + "\u0641", + "\u0642", + "\u0643", + "\u0644", + "\u0645", + "\u0646", + "\u0647", + "\u0648", + "\u0649", + "\u064a", + "\u0679", + "\u067e", + "\u0686", + "\u06a9", + "\u06af", + "\u06ba", + "\u06be", + "\u06c1", + "\u06cc", + "\u06d2", + "\u0905", + "\u0906", + "\u0909", + "\u090f", + "\u0915", + "\u0916", + "\u0917", + "\u091a", + "\u091c", + "\u091f", + "\u0921", + "\u0923", + "\u0924", + "\u0925", + "\u0926", + "\u0927", + "\u0928", + "\u092a", + "\u092c", + "\u092d", + "\u092e", + "\u092f", + "\u0930", + "\u0932", + "\u0935", + "\u0936", + "\u0937", + "\u0938", + "\u0939", + "\u093e", + "\u093f", + "\u0940", + "\u094b", + "\u0964", + "\u0965", + "\u0982", + "\u0985", + "\u0986", + "\u0987", + "\u0989", + "\u098f", + "\u0993", + "\u0995", + "\u0996", + "\u0997", + "\u099a", + "\u099b", + "\u099c", + "\u099f", + "\u09a1", + "\u09a3", + "\u09a4", + "\u09a5", + "\u09a6", + "\u09a7", + "\u09a8", + "\u09aa", + "\u09ac", + "\u09ad", + "\u09ae", + "\u09af", + "\u09b0", + "\u09b2", + "\u09b6", + "\u09b7", + "\u09b8", + "\u09b9", + "\u09be", + "\u09bf", + "\u09c0", + "\u09c7", + "\u0b95", + "\u0b9a", + "\u0b9f", + "\u0ba4", + "\u0ba8", + "\u0ba9", + "\u0baa", + "\u0bae", + "\u0baf", + "\u0bb0", + "\u0bb2", + "\u0bb3", + "\u0bb5", + "\u0bbe", + "\u0bbf", + "\u0bc1", + "\u0bc7", + "\u0bc8", + "\u0ca8", + "\u0cb0", + "\u0cbe", + "\u0d9a", + "\u0dba", + "\u0dbb", + "\u0dbd", + "\u0dc0", + "\u0dcf", + "\u0e01", + "\u0e07", + "\u0e15", + "\u0e17", + "\u0e19", + "\u0e1e", + "\u0e21", + "\u0e22", + "\u0e23", + "\u0e25", + "\u0e27", + "\u0e2a", + "\u0e2d", + "\u0e32", + "\u0e40", + "\u0f0b", + "\u0f0d", + "\u0f42", + "\u0f44", + "\u0f51", + "\u0f53", + "\u0f54", + "\u0f56", + "\u0f58", + "\u0f60", + "\u0f62", + "\u0f63", + "\u0f66", + "\u1019", + "\u10d0", + "\u10d1", + "\u10d2", + "\u10d3", + "\u10d4", + "\u10d5", + "\u10d7", + "\u10d8", + "\u10d9", + "\u10da", + "\u10db", + "\u10dc", + "\u10dd", + "\u10e0", + "\u10e1", + "\u10e2", + "\u10e3", + "\u1100", + "\u1102", + "\u1103", + "\u1105", + "\u1106", + "\u1107", + "\u1109", + "\u110a", + "\u110b", + "\u110c", + "\u110e", + "\u110f", + "\u1110", + "\u1111", + "\u1112", + "\u1161", + "\u1162", + "\u1165", + "\u1166", + "\u1167", + "\u1169", + "\u116a", + "\u116d", + "\u116e", + "\u116f", + "\u1172", + "\u1173", + "\u1174", + "\u1175", + "\u11a8", + "\u11ab", + "\u11af", + "\u11b7", + "\u11b8", + "\u11bc", + "\u1d2c", + "\u1d2e", + "\u1d30", + "\u1d35", + "\u1d3a", + "\u1d40", + "\u1d43", + "\u1d47", + "\u1d48", + "\u1d49", + "\u1d4d", + "\u1d4f", + "\u1d50", + "\u1d52", + "\u1d56", + "\u1d57", + "\u1d58", + "\u1d62", + "\u1d63", + "\u1d64", + "\u1d65", + "\u1d9c", + "\u1da0", + "\u2010", + "\u2011", + "\u2012", + "\u2013", + "\u2014", + "\u2015", + "\u2016", + "\u2018", + "\u2019", + "\u201a", + "\u201c", + "\u201d", + "\u201e", + "\u2020", + "\u2021", + "\u2022", + "\u2026", + "\u2030", + "\u2032", + "\u2033", + "\u203a", + "\u203f", + "\u2044", + "\u2070", + "\u2071", + "\u2074", + "\u2075", + "\u2076", + "\u2077", + "\u2078", + "\u2079", + "\u207a", + "\u207b", + "\u207f", + "\u2080", + "\u2081", + "\u2082", + "\u2083", + "\u2084", + "\u2085", + "\u2086", + "\u2087", + "\u2088", + "\u2089", + "\u208a", + "\u208d", + "\u208e", + "\u2090", + "\u2091", + "\u2092", + "\u2093", + "\u2095", + "\u2096", + "\u2097", + "\u2098", + "\u2099", + "\u209a", + "\u209b", + "\u209c", + "\u20a4", + "\u20a9", + "\u20ac", + "\u20b1", + "\u20b9", + "\u2113", + "\u2116", + "\u211d", + "\u2122", + "\u2153", + "\u2154", + "\u2190", + "\u2191", + "\u2192", + "\u2193", + "\u2194", + "\u21a6", + "\u21c4", + "\u21cc", + "\u21d2", + "\u2202", + "\u2205", + "\u2206", + "\u2207", + "\u2208", + "\u2212", + "\u2217", + "\u2218", + "\u221a", + "\u221e", + "\u2227", + "\u2228", + "\u2229", + "\u222a", + "\u2248", + "\u2261", + "\u2264", + "\u2265", + "\u2282", + "\u2286", + "\u2295", + "\u2297", + "\u22c5", + "\u2500", + "\u2502", + "\u25a0", + "\u25aa", + "\u25cf", + "\u2605", + "\u2606", + "\u2609", + "\u2660", + "\u2663", + "\u2665", + "\u2666", + "\u266d", + "\u266f", + "\u27e8", + "\u27e9", + "\u2c7c", + "\u2ea9", + "\u2ebc", + "\u2f65", + "\u3001", + "\u3002", + "\u3008", + "\u3009", + "\u300a", + "\u300b", + "\u300c", + "\u300d", + "\u300e", + "\u300f", + "\u301c", + "\u3042", + "\u3044", + "\u3046", + "\u3048", + "\u304a", + "\u304b", + "\u304d", + "\u304f", + "\u3051", + "\u3053", + "\u3055", + "\u3057", + "\u3059", + "\u305b", + "\u305d", + "\u305f", + "\u3061", + "\u3063", + "\u3064", + "\u3066", + "\u3068", + "\u306a", + "\u306b", + "\u306c", + "\u306d", + "\u306e", + "\u306f", + "\u3072", + "\u3075", + "\u3078", + "\u307b", + "\u307e", + "\u307f", + "\u3080", + "\u3081", + "\u3082", + "\u3084", + "\u3086", + "\u3088", + "\u3089", + "\u308a", + "\u308b", + "\u308c", + "\u308d", + "\u3092", + "\u3093", + "\u30a1", + "\u30a2", + "\u30a3", + "\u30a4", + "\u30a6", + "\u30a7", + "\u30a8", + "\u30aa", + "\u30ab", + "\u30ad", + "\u30af", + "\u30b1", + "\u30b3", + "\u30b5", + "\u30b7", + "\u30b9", + "\u30bb", + "\u30bf", + "\u30c1", + "\u30c3", + "\u30c4", + "\u30c6", + "\u30c8", + "\u30ca", + "\u30cb", + "\u30ce", + "\u30cf", + "\u30d2", + "\u30d5", + "\u30d8", + "\u30db", + "\u30de", + "\u30df", + "\u30e0", + "\u30e1", + "\u30e2", + "\u30e3", + "\u30e5", + "\u30e7", + "\u30e9", + "\u30ea", + "\u30eb", + "\u30ec", + "\u30ed", + "\u30ef", + "\u30f3", + "\u30fb", + "\u30fc", + "\u4e00", + "\u4e09", + "\u4e0a", + "\u4e0b", + "\u4e0d", + "\u4e16", + "\u4e2d", + "\u4e3b", + "\u4e45", + "\u4e4b", + "\u4e5f", + "\u4e8b", + "\u4e8c", + "\u4e94", + "\u4e95", + "\u4eac", + "\u4eba", + "\u4ebb", + "\u4ec1", + "\u4ecb", + "\u4ee3", + "\u4eee", + "\u4f0a", + "\u4f1a", + "\u4f50", + "\u4f8d", + "\u4fdd", + "\u4fe1", + "\u5065", + "\u5143", + "\u5149", + "\u516b", + "\u516c", + "\u5185", + "\u51fa", + "\u5206", + "\u524d", + "\u5289", + "\u529b", + "\u52a0", + "\u52dd", + "\u5317", + "\u533a", + "\u5341", + "\u5343", + "\u5357", + "\u535a", + "\u539f", + "\u53e3", + "\u53e4", + "\u53f2", + "\u53f8", + "\u5408", + "\u5409", + "\u540c", + "\u540d", + "\u548c", + "\u56d7", + "\u56db", + "\u56fd", + "\u570b", + "\u571f", + "\u5730", + "\u5742", + "\u57ce", + "\u5802", + "\u5834", + "\u58eb", + "\u590f", + "\u5916", + "\u5927", + "\u5929", + "\u592a", + "\u592b", + "\u5948", + "\u5973", + "\u5b50", + "\u5b66", + "\u5b80", + "\u5b87", + "\u5b89", + "\u5b97", + "\u5b9a", + "\u5ba3", + "\u5bae", + "\u5bb6", + "\u5bbf", + "\u5bfa", + "\u5c07", + "\u5c0f", + "\u5c1a", + "\u5c71", + "\u5ca1", + "\u5cf6", + "\u5d0e", + "\u5ddd", + "\u5dde", + "\u5dff", + "\u5e1d", + "\u5e73", + "\u5e74", + "\u5e78", + "\u5e7f", + "\u5f18", + "\u5f35", + "\u5f73", + "\u5f8c", + "\u5fa1", + "\u5fb7", + "\u5fc3", + "\u5fc4", + "\u5fd7", + "\u5fe0", + "\u611b", + "\u6210", + "\u6211", + "\u6226", + "\u6238", + "\u624b", + "\u624c", + "\u653f", + "\u6587", + "\u65b0", + "\u65b9", + "\u65e5", + "\u660e", + "\u661f", + "\u6625", + "\u662d", + "\u667a", + "\u66f2", + "\u66f8", + "\u6708", + "\u6709", + "\u671d", + "\u6728", + "\u672c", + "\u674e", + "\u6751", + "\u6771", + "\u677e", + "\u6797", + "\u68ee", + "\u694a", + "\u6a39", + "\u6a4b", + "\u6b4c", + "\u6b62", + "\u6b63", + "\u6b66", + "\u6bd4", + "\u6c0f", + "\u6c11", + "\u6c34", + "\u6c35", + "\u6c37", + "\u6c38", + "\u6c5f", + "\u6ca2", + "\u6cb3", + "\u6cbb", + "\u6cd5", + "\u6d77", + "\u6e05", + "\u6f22", + "\u702c", + "\u706b", + "\u7248", + "\u72ac", + "\u738b", + "\u751f", + "\u7530", + "\u7537", + "\u7592", + "\u767a", + "\u767d", + "\u7684", + "\u7687", + "\u76ee", + "\u76f8", + "\u7701", + "\u771f", + "\u77f3", + "\u793a", + "\u793e", + "\u795e", + "\u798f", + "\u79be", + "\u79c0", + "\u79cb", + "\u7a7a", + "\u7acb", + "\u7ae0", + "\u7af9", + "\u7cf9", + "\u7f8e", + "\u7fa9", + "\u8033", + "\u826f", + "\u8279", + "\u82b1", + "\u82f1", + "\u83ef", + "\u8449", + "\u85e4", + "\u884c", + "\u8857", + "\u897f", + "\u898b", + "\u8a01", + "\u8a9e", + "\u8c37", + "\u8c9d", + "\u8cb4", + "\u8eca", + "\u8ecd", + "\u8fb6", + "\u9053", + "\u90ce", + "\u90e1", + "\u90e8", + "\u90fd", + "\u91cc", + "\u91ce", + "\u91d1", + "\u9234", + "\u9547", + "\u9577", + "\u9580", + "\u9593", + "\u961d", + "\u963f", + "\u9673", + "\u967d", + "\u96c4", + "\u9752", + "\u9762", + "\u98a8", + "\u98df", + "\u9999", + "\u99ac", + "\u9ad8", + "\u9f8d", + "\u9fb8", + "\ufb01", + "\ufb02", + "\uff01", + "\uff08", + "\uff09", + "\uff0c", + "\uff0d", + "\uff0e", + "\uff0f", + "\uff1a", + "\uff1f", + "\uff5e", + "the", + "of", + "and", + "in", + "to", + "was", + "he", + "is", + "as", + "for", + "on", + "with", + "that", + "it", + "his", + "by", + "at", + "from", + "her", + "##s", + "she", + "you", + "had", + "an", + "were", + "but", + "be", + "this", + "are", + "not", + "my", + "they", + "one", + "which", + "or", + "have", + "him", + "me", + "first", + "all", + "also", + "their", + "has", + "up", + "who", + "out", + "been", + "when", + "after", + "there", + "into", + "new", + "two", + "its", + "##a", + "time", + "would", + "no", + "what", + "about", + "said", + "we", + "over", + "then", + "other", + "so", + "more", + "##e", + "can", + "if", + "like", + "back", + "them", + "only", + "some", + "could", + "##i", + "where", + "just", + "##ing", + "during", + "before", + "##n", + "do", + "##o", + "made", + "school", + "through", + "than", + "now", + "years", + "most", + "world", + "may", + "between", + "down", + "well", + "three", + "##d", + "year", + "while", + "will", + "##ed", + "##r", + "##y", + "later", + "##t", + "city", + "under", + "around", + "did", + "such", + "being", + "used", + "state", + "people", + "part", + "know", + "against", + "your", + "many", + "second", + "university", + "both", + "national", + "##er", + "these", + "don", + "known", + "off", + "way", + "until", + "re", + "how", + "even", + "get", + "head", + "...", + "didn", + "##ly", + "team", + "american", + "because", + "de", + "##l", + "born", + "united", + "film", + "since", + "still", + "long", + "work", + "south", + "us", + "became", + "any", + "high", + "again", + "day", + "family", + "see", + "right", + "man", + "eyes", + "house", + "season", + "war", + "states", + "including", + "took", + "life", + "north", + "same", + "each", + "called", + "name", + "much", + "place", + "however", + "go", + "four", + "group", + "another", + "found", + "won", + "area", + "here", + "going", + "10", + "away", + "series", + "left", + "home", + "music", + "best", + "make", + "hand", + "number", + "company", + "several", + "never", + "last", + "john", + "000", + "very", + "album", + "take", + "end", + "good", + "too", + "following", + "released", + "game", + "played", + "little", + "began", + "district", + "##m", + "old", + "want", + "those", + "side", + "held", + "own", + "early", + "county", + "ll", + "league", + "use", + "west", + "##u", + "face", + "think", + "##es", + "2010", + "government", + "##h", + "march", + "came", + "small", + "general", + "town", + "june", + "##on", + "line", + "based", + "something", + "##k", + "september", + "thought", + "looked", + "along", + "international", + "2011", + "air", + "july", + "club", + "went", + "january", + "october", + "our", + "august", + "april", + "york", + "12", + "few", + "2012", + "2008", + "east", + "show", + "member", + "college", + "2009", + "father", + "public", + "##us", + "come", + "men", + "five", + "set", + "station", + "church", + "##c", + "next", + "former", + "november", + "room", + "party", + "located", + "december", + "2013", + "age", + "got", + "2007", + "##g", + "system", + "let", + "love", + "2006", + "though", + "every", + "2014", + "look", + "song", + "water", + "century", + "without", + "body", + "black", + "night", + "within", + "great", + "women", + "single", + "ve", + "building", + "large", + "population", + "river", + "named", + "band", + "white", + "started", + "##an", + "once", + "15", + "20", + "should", + "18", + "2015", + "service", + "top", + "built", + "british", + "open", + "death", + "king", + "moved", + "local", + "times", + "children", + "february", + "book", + "why", + "11", + "door", + "need", + "president", + "order", + "final", + "road", + "wasn", + "although", + "due", + "major", + "died", + "village", + "third", + "knew", + "2016", + "asked", + "turned", + "st", + "wanted", + "say", + "##p", + "together", + "received", + "main", + "son", + "served", + "different", + "##en", + "behind", + "himself", + "felt", + "members", + "power", + "football", + "law", + "voice", + "play", + "##in", + "near", + "park", + "history", + "30", + "having", + "2005", + "16", + "##man", + "saw", + "mother", + "##al", + "army", + "point", + "front", + "help", + "english", + "street", + "art", + "late", + "hands", + "games", + "award", + "##ia", + "young", + "14", + "put", + "published", + "country", + "division", + "across", + "told", + "13", + "often", + "ever", + "french", + "london", + "center", + "six", + "red", + "2017", + "led", + "days", + "include", + "light", + "25", + "find", + "tell", + "among", + "species", + "really", + "according", + "central", + "half", + "2004", + "form", + "original", + "gave", + "office", + "making", + "enough", + "lost", + "full", + "opened", + "must", + "included", + "live", + "given", + "german", + "player", + "run", + "business", + "woman", + "community", + "cup", + "might", + "million", + "land", + "2000", + "court", + "development", + "17", + "short", + "round", + "ii", + "km", + "seen", + "class", + "story", + "always", + "become", + "sure", + "research", + "almost", + "director", + "council", + "la", + "##2", + "career", + "things", + "using", + "island", + "##z", + "couldn", + "car", + "##is", + "24", + "close", + "force", + "##1", + "better", + "free", + "support", + "control", + "field", + "students", + "2003", + "education", + "married", + "##b", + "nothing", + "worked", + "others", + "record", + "big", + "inside", + "level", + "anything", + "continued", + "give", + "james", + "##3", + "military", + "established", + "non", + "returned", + "feel", + "does", + "title", + "written", + "thing", + "feet", + "william", + "far", + "co", + "association", + "hard", + "already", + "2002", + "##ra", + "championship", + "human", + "western", + "100", + "##na", + "department", + "hall", + "role", + "various", + "production", + "21", + "19", + "heart", + "2001", + "living", + "fire", + "version", + "##ers", + "##f", + "television", + "royal", + "##4", + "produced", + "working", + "act", + "case", + "society", + "region", + "present", + "radio", + "period", + "looking", + "least", + "total", + "keep", + "england", + "wife", + "program", + "per", + "brother", + "mind", + "special", + "22", + "##le", + "am", + "works", + "soon", + "##6", + "political", + "george", + "services", + "taken", + "created", + "##7", + "further", + "able", + "reached", + "david", + "union", + "joined", + "upon", + "done", + "important", + "social", + "information", + "either", + "##ic", + "##x", + "appeared", + "position", + "ground", + "lead", + "rock", + "dark", + "election", + "23", + "board", + "france", + "hair", + "course", + "arms", + "site", + "police", + "girl", + "instead", + "real", + "sound", + "##v", + "words", + "moment", + "##te", + "someone", + "##8", + "summer", + "project", + "announced", + "san", + "less", + "wrote", + "past", + "followed", + "##5", + "blue", + "founded", + "al", + "finally", + "india", + "taking", + "records", + "america", + "##ne", + "1999", + "design", + "considered", + "northern", + "god", + "stop", + "battle", + "toward", + "european", + "outside", + "described", + "track", + "today", + "playing", + "language", + "28", + "call", + "26", + "heard", + "professional", + "low", + "australia", + "miles", + "california", + "win", + "yet", + "green", + "##ie", + "trying", + "blood", + "##ton", + "southern", + "science", + "maybe", + "everything", + "match", + "square", + "27", + "mouth", + "video", + "race", + "recorded", + "leave", + "above", + "##9", + "daughter", + "points", + "space", + "1998", + "museum", + "change", + "middle", + "common", + "##0", + "move", + "tv", + "post", + "##ta", + "lake", + "seven", + "tried", + "elected", + "closed", + "ten", + "paul", + "minister", + "##th", + "months", + "start", + "chief", + "return", + "canada", + "person", + "sea", + "release", + "similar", + "modern", + "brought", + "rest", + "hit", + "formed", + "mr", + "##la", + "1997", + "floor", + "event", + "doing", + "thomas", + "1996", + "robert", + "care", + "killed", + "training", + "star", + "week", + "needed", + "turn", + "finished", + "railway", + "rather", + "news", + "health", + "sent", + "example", + "ran", + "term", + "michael", + "coming", + "currently", + "yes", + "forces", + "despite", + "gold", + "areas", + "50", + "stage", + "fact", + "29", + "dead", + "says", + "popular", + "2018", + "originally", + "germany", + "probably", + "developed", + "result", + "pulled", + "friend", + "stood", + "money", + "running", + "mi", + "signed", + "word", + "songs", + "child", + "eventually", + "met", + "tour", + "average", + "teams", + "minutes", + "festival", + "current", + "deep", + "kind", + "1995", + "decided", + "usually", + "eastern", + "seemed", + "##ness", + "episode", + "bed", + "added", + "table", + "indian", + "private", + "charles", + "route", + "available", + "idea", + "throughout", + "centre", + "addition", + "appointed", + "style", + "1994", + "books", + "eight", + "construction", + "press", + "mean", + "wall", + "friends", + "remained", + "schools", + "study", + "##ch", + "##um", + "institute", + "oh", + "chinese", + "sometimes", + "events", + "possible", + "1992", + "australian", + "type", + "brown", + "forward", + "talk", + "process", + "food", + "debut", + "seat", + "performance", + "committee", + "features", + "character", + "arts", + "herself", + "else", + "lot", + "strong", + "russian", + "range", + "hours", + "peter", + "arm", + "##da", + "morning", + "dr", + "sold", + "##ry", + "quickly", + "directed", + "1993", + "guitar", + "china", + "##w", + "31", + "list", + "##ma", + "performed", + "media", + "uk", + "players", + "smile", + "##rs", + "myself", + "40", + "placed", + "coach", + "province", + "towards", + "wouldn", + "leading", + "whole", + "boy", + "official", + "designed", + "grand", + "census", + "##el", + "europe", + "attack", + "japanese", + "henry", + "1991", + "##re", + "##os", + "cross", + "getting", + "alone", + "action", + "lower", + "network", + "wide", + "washington", + "japan", + "1990", + "hospital", + "believe", + "changed", + "sister", + "##ar", + "hold", + "gone", + "sir", + "hadn", + "ship", + "##ka", + "studies", + "academy", + "shot", + "rights", + "below", + "base", + "bad", + "involved", + "kept", + "largest", + "##ist", + "bank", + "future", + "especially", + "beginning", + "mark", + "movement", + "section", + "female", + "magazine", + "plan", + "professor", + "lord", + "longer", + "##ian", + "sat", + "walked", + "hill", + "actually", + "civil", + "energy", + "model", + "families", + "size", + "thus", + "aircraft", + "completed", + "includes", + "data", + "captain", + "##or", + "fight", + "vocals", + "featured", + "richard", + "bridge", + "fourth", + "1989", + "officer", + "stone", + "hear", + "##ism", + "means", + "medical", + "groups", + "management", + "self", + "lips", + "competition", + "entire", + "lived", + "technology", + "leaving", + "federal", + "tournament", + "bit", + "passed", + "hot", + "independent", + "awards", + "kingdom", + "mary", + "spent", + "fine", + "doesn", + "reported", + "##ling", + "jack", + "fall", + "raised", + "itself", + "stay", + "true", + "studio", + "1988", + "sports", + "replaced", + "paris", + "systems", + "saint", + "leader", + "theatre", + "whose", + "market", + "capital", + "parents", + "spanish", + "canadian", + "earth", + "##ity", + "cut", + "degree", + "writing", + "bay", + "christian", + "awarded", + "natural", + "higher", + "bill", + "##as", + "coast", + "provided", + "previous", + "senior", + "ft", + "valley", + "organization", + "stopped", + "onto", + "countries", + "parts", + "conference", + "queen", + "security", + "interest", + "saying", + "allowed", + "master", + "earlier", + "phone", + "matter", + "smith", + "winning", + "try", + "happened", + "moving", + "campaign", + "los", + "##ley", + "breath", + "nearly", + "mid", + "1987", + "certain", + "girls", + "date", + "italian", + "african", + "standing", + "fell", + "artist", + "##ted", + "shows", + "deal", + "mine", + "industry", + "1986", + "##ng", + "everyone", + "republic", + "provide", + "collection", + "library", + "student", + "##ville", + "primary", + "owned", + "older", + "via", + "heavy", + "1st", + "makes", + "##able", + "attention", + "anyone", + "africa", + "##ri", + "stated", + "length", + "ended", + "fingers", + "command", + "staff", + "skin", + "foreign", + "opening", + "governor", + "okay", + "medal", + "kill", + "sun", + "cover", + "job", + "1985", + "introduced", + "chest", + "hell", + "feeling", + "##ies", + "success", + "meet", + "reason", + "standard", + "meeting", + "novel", + "1984", + "trade", + "source", + "buildings", + "##land", + "rose", + "guy", + "goal", + "##ur", + "chapter", + "native", + "husband", + "previously", + "unit", + "limited", + "entered", + "weeks", + "producer", + "operations", + "mountain", + "takes", + "covered", + "forced", + "related", + "roman", + "complete", + "successful", + "key", + "texas", + "cold", + "##ya", + "channel", + "1980", + "traditional", + "films", + "dance", + "clear", + "approximately", + "500", + "nine", + "van", + "prince", + "question", + "active", + "tracks", + "ireland", + "regional", + "silver", + "author", + "personal", + "sense", + "operation", + "##ine", + "economic", + "1983", + "holding", + "twenty", + "isbn", + "additional", + "speed", + "hour", + "edition", + "regular", + "historic", + "places", + "whom", + "shook", + "movie", + "km\u00b2", + "secretary", + "prior", + "report", + "chicago", + "read", + "foundation", + "view", + "engine", + "scored", + "1982", + "units", + "ask", + "airport", + "property", + "ready", + "immediately", + "lady", + "month", + "listed", + "contract", + "##de", + "manager", + "themselves", + "lines", + "##ki", + "navy", + "writer", + "meant", + "##ts", + "runs", + "##ro", + "practice", + "championships", + "singer", + "glass", + "commission", + "required", + "forest", + "starting", + "culture", + "generally", + "giving", + "access", + "attended", + "test", + "couple", + "stand", + "catholic", + "martin", + "caught", + "executive", + "##less", + "eye", + "##ey", + "thinking", + "chair", + "quite", + "shoulder", + "1979", + "hope", + "decision", + "plays", + "defeated", + "municipality", + "whether", + "structure", + "offered", + "slowly", + "pain", + "ice", + "direction", + "##ion", + "paper", + "mission", + "1981", + "mostly", + "200", + "noted", + "individual", + "managed", + "nature", + "lives", + "plant", + "##ha", + "helped", + "except", + "studied", + "computer", + "figure", + "relationship", + "issue", + "significant", + "loss", + "die", + "smiled", + "gun", + "ago", + "highest", + "1972", + "##am", + "male", + "bring", + "goals", + "mexico", + "problem", + "distance", + "commercial", + "completely", + "location", + "annual", + "famous", + "drive", + "1976", + "neck", + "1978", + "surface", + "caused", + "italy", + "understand", + "greek", + "highway", + "wrong", + "hotel", + "comes", + "appearance", + "joseph", + "double", + "issues", + "musical", + "companies", + "castle", + "income", + "review", + "assembly", + "bass", + "initially", + "parliament", + "artists", + "experience", + "1974", + "particular", + "walk", + "foot", + "engineering", + "talking", + "window", + "dropped", + "##ter", + "miss", + "baby", + "boys", + "break", + "1975", + "stars", + "edge", + "remember", + "policy", + "carried", + "train", + "stadium", + "bar", + "sex", + "angeles", + "evidence", + "##ge", + "becoming", + "assistant", + "soviet", + "1977", + "upper", + "step", + "wing", + "1970", + "youth", + "financial", + "reach", + "##ll", + "actor", + "numerous", + "##se", + "##st", + "nodded", + "arrived", + "##ation", + "minute", + "##nt", + "believed", + "sorry", + "complex", + "beautiful", + "victory", + "associated", + "temple", + "1968", + "1973", + "chance", + "perhaps", + "metal", + "##son", + "1945", + "bishop", + "##et", + "lee", + "launched", + "particularly", + "tree", + "le", + "retired", + "subject", + "prize", + "contains", + "yeah", + "theory", + "empire", + "##ce", + "suddenly", + "waiting", + "trust", + "recording", + "##to", + "happy", + "terms", + "camp", + "champion", + "1971", + "religious", + "pass", + "zealand", + "names", + "2nd", + "port", + "ancient", + "tom", + "corner", + "represented", + "watch", + "legal", + "anti", + "justice", + "cause", + "watched", + "brothers", + "45", + "material", + "changes", + "simply", + "response", + "louis", + "fast", + "##ting", + "answer", + "60", + "historical", + "1969", + "stories", + "straight", + "create", + "feature", + "increased", + "rate", + "administration", + "virginia", + "el", + "activities", + "cultural", + "overall", + "winner", + "programs", + "basketball", + "legs", + "guard", + "beyond", + "cast", + "doctor", + "mm", + "flight", + "results", + "remains", + "cost", + "effect", + "winter", + "##ble", + "larger", + "islands", + "problems", + "chairman", + "grew", + "commander", + "isn", + "1967", + "pay", + "failed", + "selected", + "hurt", + "fort", + "box", + "regiment", + "majority", + "journal", + "35", + "edward", + "plans", + "##ke", + "##ni", + "shown", + "pretty", + "irish", + "characters", + "directly", + "scene", + "likely", + "operated", + "allow", + "spring", + "##j", + "junior", + "matches", + "looks", + "mike", + "houses", + "fellow", + "##tion", + "beach", + "marriage", + "##ham", + "##ive", + "rules", + "oil", + "65", + "florida", + "expected", + "nearby", + "congress", + "sam", + "peace", + "recent", + "iii", + "wait", + "subsequently", + "cell", + "##do", + "variety", + "serving", + "agreed", + "please", + "poor", + "joe", + "pacific", + "attempt", + "wood", + "democratic", + "piece", + "prime", + "##ca", + "rural", + "mile", + "touch", + "appears", + "township", + "1964", + "1966", + "soldiers", + "##men", + "##ized", + "1965", + "pennsylvania", + "closer", + "fighting", + "claimed", + "score", + "jones", + "physical", + "editor", + "##ous", + "filled", + "genus", + "specific", + "sitting", + "super", + "mom", + "##va", + "therefore", + "supported", + "status", + "fear", + "cases", + "store", + "meaning", + "wales", + "minor", + "spain", + "tower", + "focus", + "vice", + "frank", + "follow", + "parish", + "separate", + "golden", + "horse", + "fifth", + "remaining", + "branch", + "32", + "presented", + "stared", + "##id", + "uses", + "secret", + "forms", + "##co", + "baseball", + "exactly", + "##ck", + "choice", + "note", + "discovered", + "travel", + "composed", + "truth", + "russia", + "ball", + "color", + "kiss", + "dad", + "wind", + "continue", + "ring", + "referred", + "numbers", + "digital", + "greater", + "##ns", + "metres", + "slightly", + "direct", + "increase", + "1960", + "responsible", + "crew", + "rule", + "trees", + "troops", + "##no", + "broke", + "goes", + "individuals", + "hundred", + "weight", + "creek", + "sleep", + "memory", + "defense", + "provides", + "ordered", + "code", + "value", + "jewish", + "windows", + "1944", + "safe", + "judge", + "whatever", + "corps", + "realized", + "growing", + "pre", + "##ga", + "cities", + "alexander", + "gaze", + "lies", + "spread", + "scott", + "letter", + "showed", + "situation", + "mayor", + "transport", + "watching", + "workers", + "extended", + "##li", + "expression", + "normal", + "##ment", + "chart", + "multiple", + "border", + "##ba", + "host", + "##ner", + "daily", + "mrs", + "walls", + "piano", + "##ko", + "heat", + "cannot", + "##ate", + "earned", + "products", + "drama", + "era", + "authority", + "seasons", + "join", + "grade", + "##io", + "sign", + "difficult", + "machine", + "1963", + "territory", + "mainly", + "##wood", + "stations", + "squadron", + "1962", + "stepped", + "iron", + "19th", + "##led", + "serve", + "appear", + "sky", + "speak", + "broken", + "charge", + "knowledge", + "kilometres", + "removed", + "ships", + "article", + "campus", + "simple", + "##ty", + "pushed", + "britain", + "##ve", + "leaves", + "recently", + "cd", + "soft", + "boston", + "latter", + "easy", + "acquired", + "poland", + "##sa", + "quality", + "officers", + "presence", + "planned", + "nations", + "mass", + "broadcast", + "jean", + "share", + "image", + "influence", + "wild", + "offer", + "emperor", + "electric", + "reading", + "headed", + "ability", + "promoted", + "yellow", + "ministry", + "1942", + "throat", + "smaller", + "politician", + "##by", + "latin", + "spoke", + "cars", + "williams", + "males", + "lack", + "pop", + "80", + "##ier", + "acting", + "seeing", + "consists", + "##ti", + "estate", + "1961", + "pressure", + "johnson", + "newspaper", + "jr", + "chris", + "olympics", + "online", + "conditions", + "beat", + "elements", + "walking", + "vote", + "##field", + "needs", + "carolina", + "text", + "featuring", + "global", + "block", + "shirt", + "levels", + "francisco", + "purpose", + "females", + "et", + "dutch", + "duke", + "ahead", + "gas", + "twice", + "safety", + "serious", + "turning", + "highly", + "lieutenant", + "firm", + "maria", + "amount", + "mixed", + "daniel", + "proposed", + "perfect", + "agreement", + "affairs", + "3rd", + "seconds", + "contemporary", + "paid", + "1943", + "prison", + "save", + "kitchen", + "label", + "administrative", + "intended", + "constructed", + "academic", + "nice", + "teacher", + "races", + "1956", + "formerly", + "corporation", + "ben", + "nation", + "issued", + "shut", + "1958", + "drums", + "housing", + "victoria", + "seems", + "opera", + "1959", + "graduated", + "function", + "von", + "mentioned", + "picked", + "build", + "recognized", + "shortly", + "protection", + "picture", + "notable", + "exchange", + "elections", + "1980s", + "loved", + "percent", + "racing", + "fish", + "elizabeth", + "garden", + "volume", + "hockey", + "1941", + "beside", + "settled", + "##ford", + "1940", + "competed", + "replied", + "drew", + "1948", + "actress", + "marine", + "scotland", + "steel", + "glanced", + "farm", + "steve", + "1957", + "risk", + "tonight", + "positive", + "magic", + "singles", + "effects", + "gray", + "screen", + "dog", + "##ja", + "residents", + "bus", + "sides", + "none", + "secondary", + "literature", + "polish", + "destroyed", + "flying", + "founder", + "households", + "1939", + "lay", + "reserve", + "usa", + "gallery", + "##ler", + "1946", + "industrial", + "younger", + "approach", + "appearances", + "urban", + "ones", + "1950", + "finish", + "avenue", + "powerful", + "fully", + "growth", + "page", + "honor", + "jersey", + "projects", + "advanced", + "revealed", + "basic", + "90", + "infantry", + "pair", + "equipment", + "visit", + "33", + "evening", + "search", + "grant", + "effort", + "solo", + "treatment", + "buried", + "republican", + "primarily", + "bottom", + "owner", + "1970s", + "israel", + "gives", + "jim", + "dream", + "bob", + "remain", + "spot", + "70", + "notes", + "produce", + "champions", + "contact", + "ed", + "soul", + "accepted", + "ways", + "del", + "##ally", + "losing", + "split", + "price", + "capacity", + "basis", + "trial", + "questions", + "##ina", + "1955", + "20th", + "guess", + "officially", + "memorial", + "naval", + "initial", + "##ization", + "whispered", + "median", + "engineer", + "##ful", + "sydney", + "##go", + "columbia", + "strength", + "300", + "1952", + "tears", + "senate", + "00", + "card", + "asian", + "agent", + "1947", + "software", + "44", + "draw", + "warm", + "supposed", + "com", + "pro", + "##il", + "transferred", + "leaned", + "##at", + "candidate", + "escape", + "mountains", + "asia", + "potential", + "activity", + "entertainment", + "seem", + "traffic", + "jackson", + "murder", + "36", + "slow", + "product", + "orchestra", + "haven", + "agency", + "bbc", + "taught", + "website", + "comedy", + "unable", + "storm", + "planning", + "albums", + "rugby", + "environment", + "scientific", + "grabbed", + "protect", + "##hi", + "boat", + "typically", + "1954", + "1953", + "damage", + "principal", + "divided", + "dedicated", + "mount", + "ohio", + "##berg", + "pick", + "fought", + "driver", + "##der", + "empty", + "shoulders", + "sort", + "thank", + "berlin", + "prominent", + "account", + "freedom", + "necessary", + "efforts", + "alex", + "headquarters", + "follows", + "alongside", + "des", + "simon", + "andrew", + "suggested", + "operating", + "learning", + "steps", + "1949", + "sweet", + "technical", + "begin", + "easily", + "34", + "teeth", + "speaking", + "settlement", + "scale", + "##sh", + "renamed", + "ray", + "max", + "enemy", + "semi", + "joint", + "compared", + "##rd", + "scottish", + "leadership", + "analysis", + "offers", + "georgia", + "pieces", + "captured", + "animal", + "deputy", + "guest", + "organized", + "##lin", + "tony", + "combined", + "method", + "challenge", + "1960s", + "huge", + "wants", + "battalion", + "sons", + "rise", + "crime", + "types", + "facilities", + "telling", + "path", + "1951", + "platform", + "sit", + "1990s", + "##lo", + "tells", + "assigned", + "rich", + "pull", + "##ot", + "commonly", + "alive", + "##za", + "letters", + "concept", + "conducted", + "wearing", + "happen", + "bought", + "becomes", + "holy", + "gets", + "ocean", + "defeat", + "languages", + "purchased", + "coffee", + "occurred", + "titled", + "##q", + "declared", + "applied", + "sciences", + "concert", + "sounds", + "jazz", + "brain", + "##me", + "painting", + "fleet", + "tax", + "nick", + "##ius", + "michigan", + "count", + "animals", + "leaders", + "episodes", + "##line", + "content", + "##den", + "birth", + "##it", + "clubs", + "64", + "palace", + "critical", + "refused", + "fair", + "leg", + "laughed", + "returning", + "surrounding", + "participated", + "formation", + "lifted", + "pointed", + "connected", + "rome", + "medicine", + "laid", + "taylor", + "santa", + "powers", + "adam", + "tall", + "shared", + "focused", + "knowing", + "yards", + "entrance", + "falls", + "##wa", + "calling", + "##ad", + "sources", + "chosen", + "beneath", + "resources", + "yard", + "##ite", + "nominated", + "silence", + "zone", + "defined", + "##que", + "gained", + "thirty", + "38", + "bodies", + "moon", + "##ard", + "adopted", + "christmas", + "widely", + "register", + "apart", + "iran", + "premier", + "serves", + "du", + "unknown", + "parties", + "##les", + "generation", + "##ff", + "continues", + "quick", + "fields", + "brigade", + "quiet", + "teaching", + "clothes", + "impact", + "weapons", + "partner", + "flat", + "theater", + "supreme", + "1938", + "37", + "relations", + "##tor", + "plants", + "suffered", + "1936", + "wilson", + "kids", + "begins", + "##age", + "1918", + "seats", + "armed", + "internet", + "models", + "worth", + "laws", + "400", + "communities", + "classes", + "background", + "knows", + "thanks", + "quarter", + "reaching", + "humans", + "carry", + "killing", + "format", + "kong", + "hong", + "setting", + "75", + "architecture", + "disease", + "railroad", + "inc", + "possibly", + "wish", + "arthur", + "thoughts", + "harry", + "doors", + "density", + "##di", + "crowd", + "illinois", + "stomach", + "tone", + "unique", + "reports", + "anyway", + "##ir", + "liberal", + "der", + "vehicle", + "thick", + "dry", + "drug", + "faced", + "largely", + "facility", + "theme", + "holds", + "creation", + "strange", + "colonel", + "##mi", + "revolution", + "bell", + "politics", + "turns", + "silent", + "rail", + "relief", + "independence", + "combat", + "shape", + "write", + "determined", + "sales", + "learned", + "4th", + "finger", + "oxford", + "providing", + "1937", + "heritage", + "fiction", + "situated", + "designated", + "allowing", + "distribution", + "hosted", + "##est", + "sight", + "interview", + "estimated", + "reduced", + "##ria", + "toronto", + "footballer", + "keeping", + "guys", + "damn", + "claim", + "motion", + "sport", + "sixth", + "stayed", + "##ze", + "en", + "rear", + "receive", + "handed", + "twelve", + "dress", + "audience", + "granted", + "brazil", + "##well", + "spirit", + "##ated", + "noticed", + "etc", + "olympic", + "representative", + "eric", + "tight", + "trouble", + "reviews", + "drink", + "vampire", + "missing", + "roles", + "ranked", + "newly", + "household", + "finals", + "wave", + "critics", + "##ee", + "phase", + "massachusetts", + "pilot", + "unlike", + "philadelphia", + "bright", + "guns", + "crown", + "organizations", + "roof", + "42", + "respectively", + "clearly", + "tongue", + "marked", + "circle", + "fox", + "korea", + "bronze", + "brian", + "expanded", + "sexual", + "supply", + "yourself", + "inspired", + "labour", + "fc", + "##ah", + "reference", + "vision", + "draft", + "connection", + "brand", + "reasons", + "1935", + "classic", + "driving", + "trip", + "jesus", + "cells", + "entry", + "1920", + "neither", + "trail", + "claims", + "atlantic", + "orders", + "labor", + "nose", + "afraid", + "identified", + "intelligence", + "calls", + "cancer", + "attacked", + "passing", + "stephen", + "positions", + "imperial", + "grey", + "jason", + "39", + "sunday", + "48", + "swedish", + "avoid", + "extra", + "uncle", + "message", + "covers", + "allows", + "surprise", + "materials", + "fame", + "hunter", + "##ji", + "1930", + "citizens", + "figures", + "davis", + "environmental", + "confirmed", + "shit", + "titles", + "di", + "performing", + "difference", + "acts", + "attacks", + "##ov", + "existing", + "votes", + "opportunity", + "nor", + "shop", + "entirely", + "trains", + "opposite", + "pakistan", + "##pa", + "develop", + "resulted", + "representatives", + "actions", + "reality", + "pressed", + "##ish", + "barely", + "wine", + "conversation", + "faculty", + "northwest", + "ends", + "documentary", + "nuclear", + "stock", + "grace", + "sets", + "eat", + "alternative", + "##ps", + "bag", + "resulting", + "creating", + "surprised", + "cemetery", + "1919", + "drop", + "finding", + "sarah", + "cricket", + "streets", + "tradition", + "ride", + "1933", + "exhibition", + "target", + "ear", + "explained", + "rain", + "composer", + "injury", + "apartment", + "municipal", + "educational", + "occupied", + "netherlands", + "clean", + "billion", + "constitution", + "learn", + "1914", + "maximum", + "classical", + "francis", + "lose", + "opposition", + "jose", + "ontario", + "bear", + "core", + "hills", + "rolled", + "ending", + "drawn", + "permanent", + "fun", + "##tes", + "##lla", + "lewis", + "sites", + "chamber", + "ryan", + "##way", + "scoring", + "height", + "1934", + "##house", + "lyrics", + "staring", + "55", + "officials", + "1917", + "snow", + "oldest", + "##tic", + "orange", + "##ger", + "qualified", + "interior", + "apparently", + "succeeded", + "thousand", + "dinner", + "lights", + "existence", + "fans", + "heavily", + "41", + "greatest", + "conservative", + "send", + "bowl", + "plus", + "enter", + "catch", + "##un", + "economy", + "duty", + "1929", + "speech", + "authorities", + "princess", + "performances", + "versions", + "shall", + "graduate", + "pictures", + "effective", + "remembered", + "poetry", + "desk", + "crossed", + "starring", + "starts", + "passenger", + "sharp", + "##ant", + "acres", + "ass", + "weather", + "falling", + "rank", + "fund", + "supporting", + "check", + "adult", + "publishing", + "heads", + "cm", + "southeast", + "lane", + "##burg", + "application", + "bc", + "##ura", + "les", + "condition", + "transfer", + "prevent", + "display", + "ex", + "regions", + "earl", + "federation", + "cool", + "relatively", + "answered", + "besides", + "1928", + "obtained", + "portion", + "##town", + "mix", + "##ding", + "reaction", + "liked", + "dean", + "express", + "peak", + "1932", + "##tte", + "counter", + "religion", + "chain", + "rare", + "miller", + "convention", + "aid", + "lie", + "vehicles", + "mobile", + "perform", + "squad", + "wonder", + "lying", + "crazy", + "sword", + "##ping", + "attempted", + "centuries", + "weren", + "philosophy", + "category", + "##ize", + "anna", + "interested", + "47", + "sweden", + "wolf", + "frequently", + "abandoned", + "kg", + "literary", + "alliance", + "task", + "entitled", + "##ay", + "threw", + "promotion", + "factory", + "tiny", + "soccer", + "visited", + "matt", + "fm", + "achieved", + "52", + "defence", + "internal", + "persian", + "43", + "methods", + "##ging", + "arrested", + "otherwise", + "cambridge", + "programming", + "villages", + "elementary", + "districts", + "rooms", + "criminal", + "conflict", + "worry", + "trained", + "1931", + "attempts", + "waited", + "signal", + "bird", + "truck", + "subsequent", + "programme", + "##ol", + "ad", + "49", + "communist", + "details", + "faith", + "sector", + "patrick", + "carrying", + "laugh", + "##ss", + "controlled", + "korean", + "showing", + "origin", + "fuel", + "evil", + "1927", + "##ent", + "brief", + "identity", + "darkness", + "address", + "pool", + "missed", + "publication", + "web", + "planet", + "ian", + "anne", + "wings", + "invited", + "##tt", + "briefly", + "standards", + "kissed", + "##be", + "ideas", + "climate", + "causing", + "walter", + "worse", + "albert", + "articles", + "winners", + "desire", + "aged", + "northeast", + "dangerous", + "gate", + "doubt", + "1922", + "wooden", + "multi", + "##ky", + "poet", + "rising", + "funding", + "46", + "communications", + "communication", + "violence", + "copies", + "prepared", + "ford", + "investigation", + "skills", + "1924", + "pulling", + "electronic", + "##ak", + "##ial", + "##han", + "containing", + "ultimately", + "offices", + "singing", + "understanding", + "restaurant", + "tomorrow", + "fashion", + "christ", + "ward", + "da", + "pope", + "stands", + "5th", + "flow", + "studios", + "aired", + "commissioned", + "contained", + "exist", + "fresh", + "americans", + "##per", + "wrestling", + "approved", + "kid", + "employed", + "respect", + "suit", + "1925", + "angel", + "asking", + "increasing", + "frame", + "angry", + "selling", + "1950s", + "thin", + "finds", + "##nd", + "temperature", + "statement", + "ali", + "explain", + "inhabitants", + "towns", + "extensive", + "narrow", + "51", + "jane", + "flowers", + "images", + "promise", + "somewhere", + "object", + "fly", + "closely", + "##ls", + "1912", + "bureau", + "cape", + "1926", + "weekly", + "presidential", + "legislative", + "1921", + "##ai", + "##au", + "launch", + "founding", + "##ny", + "978", + "##ring", + "artillery", + "strike", + "un", + "institutions", + "roll", + "writers", + "landing", + "chose", + "kevin", + "anymore", + "pp", + "##ut", + "attorney", + "fit", + "dan", + "billboard", + "receiving", + "agricultural", + "breaking", + "sought", + "dave", + "admitted", + "lands", + "mexican", + "##bury", + "charlie", + "specifically", + "hole", + "iv", + "howard", + "credit", + "moscow", + "roads", + "accident", + "1923", + "proved", + "wear", + "struck", + "hey", + "guards", + "stuff", + "slid", + "expansion", + "1915", + "cat", + "anthony", + "##kin", + "melbourne", + "opposed", + "sub", + "southwest", + "architect", + "failure", + "plane", + "1916", + "##ron", + "map", + "camera", + "tank", + "listen", + "regarding", + "wet", + "introduction", + "metropolitan", + "link", + "ep", + "fighter", + "inch", + "grown", + "gene", + "anger", + "fixed", + "buy", + "dvd", + "khan", + "domestic", + "worldwide", + "chapel", + "mill", + "functions", + "examples", + "##head", + "developing", + "1910", + "turkey", + "hits", + "pocket", + "antonio", + "papers", + "grow", + "unless", + "circuit", + "18th", + "concerned", + "attached", + "journalist", + "selection", + "journey", + "converted", + "provincial", + "painted", + "hearing", + "aren", + "bands", + "negative", + "aside", + "wondered", + "knight", + "lap", + "survey", + "ma", + "##ow", + "noise", + "billy", + "##ium", + "shooting", + "guide", + "bedroom", + "priest", + "resistance", + "motor", + "homes", + "sounded", + "giant", + "##mer", + "150", + "scenes", + "equal", + "comic", + "patients", + "hidden", + "solid", + "actual", + "bringing", + "afternoon", + "touched", + "funds", + "wedding", + "consisted", + "marie", + "canal", + "sr", + "kim", + "treaty", + "turkish", + "recognition", + "residence", + "cathedral", + "broad", + "knees", + "incident", + "shaped", + "fired", + "norwegian", + "handle", + "cheek", + "contest", + "represent", + "##pe", + "representing", + "beauty", + "##sen", + "birds", + "advantage", + "emergency", + "wrapped", + "drawing", + "notice", + "pink", + "broadcasting", + "##ong", + "somehow", + "bachelor", + "seventh", + "collected", + "registered", + "establishment", + "alan", + "assumed", + "chemical", + "personnel", + "roger", + "retirement", + "jeff", + "portuguese", + "wore", + "tied", + "device", + "threat", + "progress", + "advance", + "##ised", + "banks", + "hired", + "manchester", + "nfl", + "teachers", + "structures", + "forever", + "##bo", + "tennis", + "helping", + "saturday", + "sale", + "applications", + "junction", + "hip", + "incorporated", + "neighborhood", + "dressed", + "ceremony", + "##ds", + "influenced", + "hers", + "visual", + "stairs", + "decades", + "inner", + "kansas", + "hung", + "hoped", + "gain", + "scheduled", + "downtown", + "engaged", + "austria", + "clock", + "norway", + "certainly", + "pale", + "protected", + "1913", + "victor", + "employees", + "plate", + "putting", + "surrounded", + "##ists", + "finishing", + "blues", + "tropical", + "##ries", + "minnesota", + "consider", + "philippines", + "accept", + "54", + "retrieved", + "1900", + "concern", + "anderson", + "properties", + "institution", + "gordon", + "successfully", + "vietnam", + "##dy", + "backing", + "outstanding", + "muslim", + "crossing", + "folk", + "producing", + "usual", + "demand", + "occurs", + "observed", + "lawyer", + "educated", + "##ana", + "kelly", + "string", + "pleasure", + "budget", + "items", + "quietly", + "colorado", + "philip", + "typical", + "##worth", + "derived", + "600", + "survived", + "asks", + "mental", + "##ide", + "56", + "jake", + "jews", + "distinguished", + "ltd", + "1911", + "sri", + "extremely", + "53", + "athletic", + "loud", + "thousands", + "worried", + "shadow", + "transportation", + "horses", + "weapon", + "arena", + "importance", + "users", + "tim", + "objects", + "contributed", + "dragon", + "douglas", + "aware", + "senator", + "johnny", + "jordan", + "sisters", + "engines", + "flag", + "investment", + "samuel", + "shock", + "capable", + "clark", + "row", + "wheel", + "refers", + "session", + "familiar", + "biggest", + "wins", + "hate", + "maintained", + "drove", + "hamilton", + "request", + "expressed", + "injured", + "underground", + "churches", + "walker", + "wars", + "tunnel", + "passes", + "stupid", + "agriculture", + "softly", + "cabinet", + "regarded", + "joining", + "indiana", + "##ea", + "##ms", + "push", + "dates", + "spend", + "behavior", + "woods", + "protein", + "gently", + "chase", + "morgan", + "mention", + "burning", + "wake", + "combination", + "occur", + "mirror", + "leads", + "jimmy", + "indeed", + "impossible", + "singapore", + "paintings", + "covering", + "##nes", + "soldier", + "locations", + "attendance", + "sell", + "historian", + "wisconsin", + "invasion", + "argued", + "painter", + "diego", + "changing", + "egypt", + "##don", + "experienced", + "inches", + "##ku", + "missouri", + "vol", + "grounds", + "spoken", + "switzerland", + "##gan", + "reform", + "rolling", + "ha", + "forget", + "massive", + "resigned", + "burned", + "allen", + "tennessee", + "locked", + "values", + "improved", + "##mo", + "wounded", + "universe", + "sick", + "dating", + "facing", + "pack", + "purchase", + "user", + "##pur", + "moments", + "##ul", + "merged", + "anniversary", + "1908", + "coal", + "brick", + "understood", + "causes", + "dynasty", + "queensland", + "establish", + "stores", + "crisis", + "promote", + "hoping", + "views", + "cards", + "referee", + "extension", + "##si", + "raise", + "arizona", + "improve", + "colonial", + "formal", + "charged", + "##rt", + "palm", + "lucky", + "hide", + "rescue", + "faces", + "95", + "feelings", + "candidates", + "juan", + "##ell", + "goods", + "6th", + "courses", + "weekend", + "59", + "luke", + "cash", + "fallen", + "##om", + "delivered", + "affected", + "installed", + "carefully", + "tries", + "swiss", + "hollywood", + "costs", + "lincoln", + "responsibility", + "##he", + "shore", + "file", + "proper", + "normally", + "maryland", + "assistance", + "jump", + "constant", + "offering", + "friendly", + "waters", + "persons", + "realize", + "contain", + "trophy", + "800", + "partnership", + "factor", + "58", + "musicians", + "cry", + "bound", + "oregon", + "indicated", + "hero", + "houston", + "medium", + "##ure", + "consisting", + "somewhat", + "##ara", + "57", + "cycle", + "##che", + "beer", + "moore", + "frederick", + "gotten", + "eleven", + "worst", + "weak", + "approached", + "arranged", + "chin", + "loan", + "universal", + "bond", + "fifteen", + "pattern", + "disappeared", + "##ney", + "translated", + "##zed", + "lip", + "arab", + "capture", + "interests", + "insurance", + "##chi", + "shifted", + "cave", + "prix", + "warning", + "sections", + "courts", + "coat", + "plot", + "smell", + "feed", + "golf", + "favorite", + "maintain", + "knife", + "vs", + "voted", + "degrees", + "finance", + "quebec", + "opinion", + "translation", + "manner", + "ruled", + "operate", + "productions", + "choose", + "musician", + "discovery", + "confused", + "tired", + "separated", + "stream", + "techniques", + "committed", + "attend", + "ranking", + "kings", + "throw", + "passengers", + "measure", + "horror", + "fan", + "mining", + "sand", + "danger", + "salt", + "calm", + "decade", + "dam", + "require", + "runner", + "##ik", + "rush", + "associate", + "greece", + "##ker", + "rivers", + "consecutive", + "matthew", + "##ski", + "sighed", + "sq", + "documents", + "steam", + "edited", + "closing", + "tie", + "accused", + "1905", + "##ini", + "islamic", + "distributed", + "directors", + "organisation", + "bruce", + "7th", + "breathing", + "mad", + "lit", + "arrival", + "concrete", + "taste", + "08", + "composition", + "shaking", + "faster", + "amateur", + "adjacent", + "stating", + "1906", + "twin", + "flew", + "##ran", + "tokyo", + "publications", + "##tone", + "obviously", + "ridge", + "storage", + "1907", + "carl", + "pages", + "concluded", + "desert", + "driven", + "universities", + "ages", + "terminal", + "sequence", + "borough", + "250", + "constituency", + "creative", + "cousin", + "economics", + "dreams", + "margaret", + "notably", + "reduce", + "montreal", + "mode", + "17th", + "ears", + "saved", + "jan", + "vocal", + "##ica", + "1909", + "andy", + "##jo", + "riding", + "roughly", + "threatened", + "##ise", + "meters", + "meanwhile", + "landed", + "compete", + "repeated", + "grass", + "czech", + "regularly", + "charges", + "tea", + "sudden", + "appeal", + "##ung", + "solution", + "describes", + "pierre", + "classification", + "glad", + "parking", + "##ning", + "belt", + "physics", + "99", + "rachel", + "add", + "hungarian", + "participate", + "expedition", + "damaged", + "gift", + "childhood", + "85", + "fifty", + "##red", + "mathematics", + "jumped", + "letting", + "defensive", + "mph", + "##ux", + "##gh", + "testing", + "##hip", + "hundreds", + "shoot", + "owners", + "matters", + "smoke", + "israeli", + "kentucky", + "dancing", + "mounted", + "grandfather", + "emma", + "designs", + "profit", + "argentina", + "##gs", + "truly", + "li", + "lawrence", + "cole", + "begun", + "detroit", + "willing", + "branches", + "smiling", + "decide", + "miami", + "enjoyed", + "recordings", + "##dale", + "poverty", + "ethnic", + "gay", + "##bi", + "gary", + "arabic", + "09", + "accompanied", + "##one", + "##ons", + "fishing", + "determine", + "residential", + "acid", + "##ary", + "alice", + "returns", + "starred", + "mail", + "##ang", + "jonathan", + "strategy", + "##ue", + "net", + "forty", + "cook", + "businesses", + "equivalent", + "commonwealth", + "distinct", + "ill", + "##cy", + "seriously", + "##ors", + "##ped", + "shift", + "harris", + "replace", + "rio", + "imagine", + "formula", + "ensure", + "##ber", + "additionally", + "scheme", + "conservation", + "occasionally", + "purposes", + "feels", + "favor", + "##and", + "##ore", + "1930s", + "contrast", + "hanging", + "hunt", + "movies", + "1904", + "instruments", + "victims", + "danish", + "christopher", + "busy", + "demon", + "sugar", + "earliest", + "colony", + "studying", + "balance", + "duties", + "##ks", + "belgium", + "slipped", + "carter", + "05", + "visible", + "stages", + "iraq", + "fifa", + "##im", + "commune", + "forming", + "zero", + "07", + "continuing", + "talked", + "counties", + "legend", + "bathroom", + "option", + "tail", + "clay", + "daughters", + "afterwards", + "severe", + "jaw", + "visitors", + "##ded", + "devices", + "aviation", + "russell", + "kate", + "##vi", + "entering", + "subjects", + "##ino", + "temporary", + "swimming", + "forth", + "smooth", + "ghost", + "audio", + "bush", + "operates", + "rocks", + "movements", + "signs", + "eddie", + "##tz", + "ann", + "voices", + "honorary", + "06", + "memories", + "dallas", + "pure", + "measures", + "racial", + "promised", + "66", + "harvard", + "ceo", + "16th", + "parliamentary", + "indicate", + "benefit", + "flesh", + "dublin", + "louisiana", + "1902", + "1901", + "patient", + "sleeping", + "1903", + "membership", + "coastal", + "medieval", + "wanting", + "element", + "scholars", + "rice", + "62", + "limit", + "survive", + "makeup", + "rating", + "definitely", + "collaboration", + "obvious", + "##tan", + "boss", + "ms", + "baron", + "birthday", + "linked", + "soil", + "diocese", + "##lan", + "ncaa", + "##mann", + "offensive", + "shell", + "shouldn", + "waist", + "##tus", + "plain", + "ross", + "organ", + "resolution", + "manufacturing", + "adding", + "relative", + "kennedy", + "98", + "whilst", + "moth", + "marketing", + "gardens", + "crash", + "72", + "heading", + "partners", + "credited", + "carlos", + "moves", + "cable", + "##zi", + "marshall", + "##out", + "depending", + "bottle", + "represents", + "rejected", + "responded", + "existed", + "04", + "jobs", + "denmark", + "lock", + "##ating", + "treated", + "graham", + "routes", + "talent", + "commissioner", + "drugs", + "secure", + "tests", + "reign", + "restored", + "photography", + "##gi", + "contributions", + "oklahoma", + "designer", + "disc", + "grin", + "seattle", + "robin", + "paused", + "atlanta", + "unusual", + "##gate", + "praised", + "las", + "laughing", + "satellite", + "hungary", + "visiting", + "##sky", + "interesting", + "factors", + "deck", + "poems", + "norman", + "##water", + "stuck", + "speaker", + "rifle", + "domain", + "premiered", + "##her", + "dc", + "comics", + "actors", + "01", + "reputation", + "eliminated", + "8th", + "ceiling", + "prisoners", + "script", + "##nce", + "leather", + "austin", + "mississippi", + "rapidly", + "admiral", + "parallel", + "charlotte", + "guilty", + "tools", + "gender", + "divisions", + "fruit", + "##bs", + "laboratory", + "nelson", + "fantasy", + "marry", + "rapid", + "aunt", + "tribe", + "requirements", + "aspects", + "suicide", + "amongst", + "adams", + "bone", + "ukraine", + "abc", + "kick", + "sees", + "edinburgh", + "clothing", + "column", + "rough", + "gods", + "hunting", + "broadway", + "gathered", + "concerns", + "##ek", + "spending", + "ty", + "12th", + "snapped", + "requires", + "solar", + "bones", + "cavalry", + "##tta", + "iowa", + "drinking", + "waste", + "index", + "franklin", + "charity", + "thompson", + "stewart", + "tip", + "flash", + "landscape", + "friday", + "enjoy", + "singh", + "poem", + "listening", + "##back", + "eighth", + "fred", + "differences", + "adapted", + "bomb", + "ukrainian", + "surgery", + "corporate", + "masters", + "anywhere", + "##more", + "waves", + "odd", + "sean", + "portugal", + "orleans", + "dick", + "debate", + "kent", + "eating", + "puerto", + "cleared", + "96", + "expect", + "cinema", + "97", + "guitarist", + "blocks", + "electrical", + "agree", + "involving", + "depth", + "dying", + "panel", + "struggle", + "##ged", + "peninsula", + "adults", + "novels", + "emerged", + "vienna", + "metro", + "debuted", + "shoes", + "tamil", + "songwriter", + "meets", + "prove", + "beating", + "instance", + "heaven", + "scared", + "sending", + "marks", + "artistic", + "passage", + "superior", + "03", + "significantly", + "shopping", + "##tive", + "retained", + "##izing", + "malaysia", + "technique", + "cheeks", + "##ola", + "warren", + "maintenance", + "destroy", + "extreme", + "allied", + "120", + "appearing", + "##yn", + "fill", + "advice", + "alabama", + "qualifying", + "policies", + "cleveland", + "hat", + "battery", + "smart", + "authors", + "10th", + "soundtrack", + "acted", + "dated", + "lb", + "glance", + "equipped", + "coalition", + "funny", + "outer", + "ambassador", + "roy", + "possibility", + "couples", + "campbell", + "dna", + "loose", + "ethan", + "supplies", + "1898", + "gonna", + "88", + "monster", + "##res", + "shake", + "agents", + "frequency", + "springs", + "dogs", + "practices", + "61", + "gang", + "plastic", + "easier", + "suggests", + "gulf", + "blade", + "exposed", + "colors", + "industries", + "markets", + "pan", + "nervous", + "electoral", + "charts", + "legislation", + "ownership", + "##idae", + "mac", + "appointment", + "shield", + "copy", + "assault", + "socialist", + "abbey", + "monument", + "license", + "throne", + "employment", + "jay", + "93", + "replacement", + "charter", + "cloud", + "powered", + "suffering", + "accounts", + "oak", + "connecticut", + "strongly", + "wright", + "colour", + "crystal", + "13th", + "context", + "welsh", + "networks", + "voiced", + "gabriel", + "jerry", + "##cing", + "forehead", + "mp", + "##ens", + "manage", + "schedule", + "totally", + "remix", + "##ii", + "forests", + "occupation", + "print", + "nicholas", + "brazilian", + "strategic", + "vampires", + "engineers", + "76", + "roots", + "seek", + "correct", + "instrumental", + "und", + "alfred", + "backed", + "hop", + "##des", + "stanley", + "robinson", + "traveled", + "wayne", + "welcome", + "austrian", + "achieve", + "67", + "exit", + "rates", + "1899", + "strip", + "whereas", + "##cs", + "sing", + "deeply", + "adventure", + "bobby", + "rick", + "jamie", + "careful", + "components", + "cap", + "useful", + "personality", + "knee", + "##shi", + "pushing", + "hosts", + "02", + "protest", + "ca", + "ottoman", + "symphony", + "##sis", + "63", + "boundary", + "1890", + "processes", + "considering", + "considerable", + "tons", + "##work", + "##ft", + "##nia", + "cooper", + "trading", + "dear", + "conduct", + "91", + "illegal", + "apple", + "revolutionary", + "holiday", + "definition", + "harder", + "##van", + "jacob", + "circumstances", + "destruction", + "##lle", + "popularity", + "grip", + "classified", + "liverpool", + "donald", + "baltimore", + "flows", + "seeking", + "honour", + "approval", + "92", + "mechanical", + "till", + "happening", + "statue", + "critic", + "increasingly", + "immediate", + "describe", + "commerce", + "stare", + "##ster", + "indonesia", + "meat", + "rounds", + "boats", + "baker", + "orthodox", + "depression", + "formally", + "worn", + "naked", + "claire", + "muttered", + "sentence", + "11th", + "emily", + "document", + "77", + "criticism", + "wished", + "vessel", + "spiritual", + "bent", + "virgin", + "parker", + "minimum", + "murray", + "lunch", + "danny", + "printed", + "compilation", + "keyboards", + "false", + "blow", + "belonged", + "68", + "raising", + "78", + "cutting", + "##board", + "pittsburgh", + "##up", + "9th", + "shadows", + "81", + "hated", + "indigenous", + "jon", + "15th", + "barry", + "scholar", + "ah", + "##zer", + "oliver", + "##gy", + "stick", + "susan", + "meetings", + "attracted", + "spell", + "romantic", + "##ver", + "ye", + "1895", + "photo", + "demanded", + "customers", + "##ac", + "1896", + "logan", + "revival", + "keys", + "modified", + "commanded", + "jeans", + "##ious", + "upset", + "raw", + "phil", + "detective", + "hiding", + "resident", + "vincent", + "##bly", + "experiences", + "diamond", + "defeating", + "coverage", + "lucas", + "external", + "parks", + "franchise", + "helen", + "bible", + "successor", + "percussion", + "celebrated", + "il", + "lift", + "profile", + "clan", + "romania", + "##ied", + "mills", + "##su", + "nobody", + "achievement", + "shrugged", + "fault", + "1897", + "rhythm", + "initiative", + "breakfast", + "carbon", + "700", + "69", + "lasted", + "violent", + "74", + "wound", + "ken", + "killer", + "gradually", + "filmed", + "\u00b0c", + "dollars", + "processing", + "94", + "remove", + "criticized", + "guests", + "sang", + "chemistry", + "##vin", + "legislature", + "disney", + "##bridge", + "uniform", + "escaped", + "integrated", + "proposal", + "purple", + "denied", + "liquid", + "karl", + "influential", + "morris", + "nights", + "stones", + "intense", + "experimental", + "twisted", + "71", + "84", + "##ld", + "pace", + "nazi", + "mitchell", + "ny", + "blind", + "reporter", + "newspapers", + "14th", + "centers", + "burn", + "basin", + "forgotten", + "surviving", + "filed", + "collections", + "monastery", + "losses", + "manual", + "couch", + "description", + "appropriate", + "merely", + "tag", + "missions", + "sebastian", + "restoration", + "replacing", + "triple", + "73", + "elder", + "julia", + "warriors", + "benjamin", + "julian", + "convinced", + "stronger", + "amazing", + "declined", + "versus", + "merchant", + "happens", + "output", + "finland", + "bare", + "barbara", + "absence", + "ignored", + "dawn", + "injuries", + "##port", + "producers", + "##ram", + "82", + "luis", + "##ities", + "kw", + "admit", + "expensive", + "electricity", + "nba", + "exception", + "symbol", + "##ving", + "ladies", + "shower", + "sheriff", + "characteristics", + "##je", + "aimed", + "button", + "ratio", + "effectively", + "summit", + "angle", + "jury", + "bears", + "foster", + "vessels", + "pants", + "executed", + "evans", + "dozen", + "advertising", + "kicked", + "patrol", + "1889", + "competitions", + "lifetime", + "principles", + "athletics", + "##logy", + "birmingham", + "sponsored", + "89", + "rob", + "nomination", + "1893", + "acoustic", + "##sm", + "creature", + "longest", + "##tra", + "credits", + "harbor", + "dust", + "josh", + "##so", + "territories", + "milk", + "infrastructure", + "completion", + "thailand", + "indians", + "leon", + "archbishop", + "##sy", + "assist", + "pitch", + "blake", + "arrangement", + "girlfriend", + "serbian", + "operational", + "hence", + "sad", + "scent", + "fur", + "dj", + "sessions", + "hp", + "refer", + "rarely", + "##ora", + "exists", + "1892", + "##ten", + "scientists", + "dirty", + "penalty", + "burst", + "portrait", + "seed", + "79", + "pole", + "limits", + "rival", + "1894", + "stable", + "alpha", + "grave", + "constitutional", + "alcohol", + "arrest", + "flower", + "mystery", + "devil", + "architectural", + "relationships", + "greatly", + "habitat", + "##istic", + "larry", + "progressive", + "remote", + "cotton", + "##ics", + "##ok", + "preserved", + "reaches", + "##ming", + "cited", + "86", + "vast", + "scholarship", + "decisions", + "cbs", + "joy", + "teach", + "1885", + "editions", + "knocked", + "eve", + "searching", + "partly", + "participation", + "gap", + "animated", + "fate", + "excellent", + "##ett", + "na", + "87", + "alternate", + "saints", + "youngest", + "##ily", + "climbed", + "##ita", + "##tors", + "suggest", + "##ct", + "discussion", + "staying", + "choir", + "lakes", + "jacket", + "revenue", + "nevertheless", + "peaked", + "instrument", + "wondering", + "annually", + "managing", + "neil", + "1891", + "signing", + "terry", + "##ice", + "apply", + "clinical", + "brooklyn", + "aim", + "catherine", + "fuck", + "farmers", + "figured", + "ninth", + "pride", + "hugh", + "evolution", + "ordinary", + "involvement", + "comfortable", + "shouted", + "tech", + "encouraged", + "taiwan", + "representation", + "sharing", + "##lia", + "##em", + "panic", + "exact", + "cargo", + "competing", + "fat", + "cried", + "83", + "1920s", + "occasions", + "pa", + "cabin", + "borders", + "utah", + "marcus", + "##isation", + "badly", + "muscles", + "##ance", + "victorian", + "transition", + "warner", + "bet", + "permission", + "##rin", + "slave", + "terrible", + "similarly", + "shares", + "seth", + "uefa", + "possession", + "medals", + "benefits", + "colleges", + "lowered", + "perfectly", + "mall", + "transit", + "##ye", + "##kar", + "publisher", + "##ened", + "harrison", + "deaths", + "elevation", + "##ae", + "asleep", + "machines", + "sigh", + "ash", + "hardly", + "argument", + "occasion", + "parent", + "leo", + "decline", + "1888", + "contribution", + "##ua", + "concentration", + "1000", + "opportunities", + "hispanic", + "guardian", + "extent", + "emotions", + "hips", + "mason", + "volumes", + "bloody", + "controversy", + "diameter", + "steady", + "mistake", + "phoenix", + "identify", + "violin", + "##sk", + "departure", + "richmond", + "spin", + "funeral", + "enemies", + "1864", + "gear", + "literally", + "connor", + "random", + "sergeant", + "grab", + "confusion", + "1865", + "transmission", + "informed", + "op", + "leaning", + "sacred", + "suspended", + "thinks", + "gates", + "portland", + "luck", + "agencies", + "yours", + "hull", + "expert", + "muscle", + "layer", + "practical", + "sculpture", + "jerusalem", + "latest", + "lloyd", + "statistics", + "deeper", + "recommended", + "warrior", + "arkansas", + "mess", + "supports", + "greg", + "eagle", + "1880", + "recovered", + "rated", + "concerts", + "rushed", + "##ano", + "stops", + "eggs", + "files", + "premiere", + "keith", + "##vo", + "delhi", + "turner", + "pit", + "affair", + "belief", + "paint", + "##zing", + "mate", + "##ach", + "##ev", + "victim", + "##ology", + "withdrew", + "bonus", + "styles", + "fled", + "##ud", + "glasgow", + "technologies", + "funded", + "nbc", + "adaptation", + "##ata", + "portrayed", + "cooperation", + "supporters", + "judges", + "bernard", + "justin", + "hallway", + "ralph", + "##ick", + "graduating", + "controversial", + "distant", + "continental", + "spider", + "bite", + "##ho", + "recognize", + "intention", + "mixing", + "##ese", + "egyptian", + "bow", + "tourism", + "suppose", + "claiming", + "tiger", + "dominated", + "participants", + "vi", + "##ru", + "nurse", + "partially", + "tape", + "##rum", + "psychology", + "##rn", + "essential", + "touring", + "duo", + "voting", + "civilian", + "emotional", + "channels", + "##king", + "apparent", + "hebrew", + "1887", + "tommy", + "carrier", + "intersection", + "beast", + "hudson", + "##gar", + "##zo", + "lab", + "nova", + "bench", + "discuss", + "costa", + "##ered", + "detailed", + "behalf", + "drivers", + "unfortunately", + "obtain", + "##lis", + "rocky", + "##dae", + "siege", + "friendship", + "honey", + "##rian", + "1861", + "amy", + "hang", + "posted", + "governments", + "collins", + "respond", + "wildlife", + "preferred", + "operator", + "##po", + "laura", + "pregnant", + "videos", + "dennis", + "suspected", + "boots", + "instantly", + "weird", + "automatic", + "businessman", + "alleged", + "placing", + "throwing", + "ph", + "mood", + "1862", + "perry", + "venue", + "jet", + "remainder", + "##lli", + "##ci", + "passion", + "biological", + "boyfriend", + "1863", + "dirt", + "buffalo", + "ron", + "segment", + "fa", + "abuse", + "##era", + "genre", + "thrown", + "stroke", + "colored", + "stress", + "exercise", + "displayed", + "##gen", + "struggled", + "##tti", + "abroad", + "dramatic", + "wonderful", + "thereafter", + "madrid", + "component", + "widespread", + "##sed", + "tale", + "citizen", + "todd", + "monday", + "1886", + "vancouver", + "overseas", + "forcing", + "crying", + "descent", + "##ris", + "discussed", + "substantial", + "ranks", + "regime", + "1870", + "provinces", + "switch", + "drum", + "zane", + "ted", + "tribes", + "proof", + "lp", + "cream", + "researchers", + "volunteer", + "manor", + "silk", + "milan", + "donated", + "allies", + "venture", + "principle", + "delivery", + "enterprise", + "##ves", + "##ans", + "bars", + "traditionally", + "witch", + "reminded", + "copper", + "##uk", + "pete", + "inter", + "links", + "colin", + "grinned", + "elsewhere", + "competitive", + "frequent", + "##oy", + "scream", + "##hu", + "tension", + "texts", + "submarine", + "finnish", + "defending", + "defend", + "pat", + "detail", + "1884", + "affiliated", + "stuart", + "themes", + "villa", + "periods", + "tool", + "belgian", + "ruling", + "crimes", + "answers", + "folded", + "licensed", + "resort", + "demolished", + "hans", + "lucy", + "1881", + "lion", + "traded", + "photographs", + "writes", + "craig", + "##fa", + "trials", + "generated", + "beth", + "noble", + "debt", + "percentage", + "yorkshire", + "erected", + "ss", + "viewed", + "grades", + "confidence", + "ceased", + "islam", + "telephone", + "retail", + "##ible", + "chile", + "m\u00b2", + "roberts", + "sixteen", + "##ich", + "commented", + "hampshire", + "innocent", + "dual", + "pounds", + "checked", + "regulations", + "afghanistan", + "sung", + "rico", + "liberty", + "assets", + "bigger", + "options", + "angels", + "relegated", + "tribute", + "wells", + "attending", + "leaf", + "##yan", + "butler", + "romanian", + "forum", + "monthly", + "lisa", + "patterns", + "gmina", + "##tory", + "madison", + "hurricane", + "rev", + "##ians", + "bristol", + "##ula", + "elite", + "valuable", + "disaster", + "democracy", + "awareness", + "germans", + "freyja", + "##ins", + "loop", + "absolutely", + "paying", + "populations", + "maine", + "sole", + "prayer", + "spencer", + "releases", + "doorway", + "bull", + "##ani", + "lover", + "midnight", + "conclusion", + "##sson", + "thirteen", + "lily", + "mediterranean", + "##lt", + "nhl", + "proud", + "sample", + "##hill", + "drummer", + "guinea", + "##ova", + "murphy", + "climb", + "##ston", + "instant", + "attributed", + "horn", + "ain", + "railways", + "steven", + "##ao", + "autumn", + "ferry", + "opponent", + "root", + "traveling", + "secured", + "corridor", + "stretched", + "tales", + "sheet", + "trinity", + "cattle", + "helps", + "indicates", + "manhattan", + "murdered", + "fitted", + "1882", + "gentle", + "grandmother", + "mines", + "shocked", + "vegas", + "produces", + "##light", + "caribbean", + "##ou", + "belong", + "continuous", + "desperate", + "drunk", + "historically", + "trio", + "waved", + "raf", + "dealing", + "nathan", + "bat", + "murmured", + "interrupted", + "residing", + "scientist", + "pioneer", + "harold", + "aaron", + "##net", + "delta", + "attempting", + "minority", + "mini", + "believes", + "chorus", + "tend", + "lots", + "eyed", + "indoor", + "load", + "shots", + "updated", + "jail", + "##llo", + "concerning", + "connecting", + "wealth", + "##ved", + "slaves", + "arrive", + "rangers", + "sufficient", + "rebuilt", + "##wick", + "cardinal", + "flood", + "muhammad", + "whenever", + "relation", + "runners", + "moral", + "repair", + "viewers", + "arriving", + "revenge", + "punk", + "assisted", + "bath", + "fairly", + "breathe", + "lists", + "innings", + "illustrated", + "whisper", + "nearest", + "voters", + "clinton", + "ties", + "ultimate", + "screamed", + "beijing", + "lions", + "andre", + "fictional", + "gathering", + "comfort", + "radar", + "suitable", + "dismissed", + "hms", + "ban", + "pine", + "wrist", + "atmosphere", + "voivodeship", + "bid", + "timber", + "##ned", + "##nan", + "giants", + "##ane", + "cameron", + "recovery", + "uss", + "identical", + "categories", + "switched", + "serbia", + "laughter", + "noah", + "ensemble", + "therapy", + "peoples", + "touching", + "##off", + "locally", + "pearl", + "platforms", + "everywhere", + "ballet", + "tables", + "lanka", + "herbert", + "outdoor", + "toured", + "derek", + "1883", + "spaces", + "contested", + "swept", + "1878", + "exclusive", + "slight", + "connections", + "##dra", + "winds", + "prisoner", + "collective", + "bangladesh", + "tube", + "publicly", + "wealthy", + "thai", + "##ys", + "isolated", + "select", + "##ric", + "insisted", + "pen", + "fortune", + "ticket", + "spotted", + "reportedly", + "animation", + "enforcement", + "tanks", + "110", + "decides", + "wider", + "lowest", + "owen", + "##time", + "nod", + "hitting", + "##hn", + "gregory", + "furthermore", + "magazines", + "fighters", + "solutions", + "##ery", + "pointing", + "requested", + "peru", + "reed", + "chancellor", + "knights", + "mask", + "worker", + "eldest", + "flames", + "reduction", + "1860", + "volunteers", + "##tis", + "reporting", + "##hl", + "wire", + "advisory", + "endemic", + "origins", + "settlers", + "pursue", + "knock", + "consumer", + "1876", + "eu", + "compound", + "creatures", + "mansion", + "sentenced", + "ivan", + "deployed", + "guitars", + "frowned", + "involves", + "mechanism", + "kilometers", + "perspective", + "shops", + "maps", + "terminus", + "duncan", + "alien", + "fist", + "bridges", + "##pers", + "heroes", + "fed", + "derby", + "swallowed", + "##ros", + "patent", + "sara", + "illness", + "characterized", + "adventures", + "slide", + "hawaii", + "jurisdiction", + "##op", + "organised", + "##side", + "adelaide", + "walks", + "biology", + "se", + "##ties", + "rogers", + "swing", + "tightly", + "boundaries", + "##rie", + "prepare", + "implementation", + "stolen", + "##sha", + "certified", + "colombia", + "edwards", + "garage", + "##mm", + "recalled", + "##ball", + "rage", + "harm", + "nigeria", + "breast", + "##ren", + "furniture", + "pupils", + "settle", + "##lus", + "cuba", + "balls", + "client", + "alaska", + "21st", + "linear", + "thrust", + "celebration", + "latino", + "genetic", + "terror", + "##cia", + "##ening", + "lightning", + "fee", + "witness", + "lodge", + "establishing", + "skull", + "##ique", + "earning", + "hood", + "##ei", + "rebellion", + "wang", + "sporting", + "warned", + "missile", + "devoted", + "activist", + "porch", + "worship", + "fourteen", + "package", + "1871", + "decorated", + "##shire", + "housed", + "##ock", + "chess", + "sailed", + "doctors", + "oscar", + "joan", + "treat", + "garcia", + "harbour", + "jeremy", + "##ire", + "traditions", + "dominant", + "jacques", + "##gon", + "##wan", + "relocated", + "1879", + "amendment", + "sized", + "companion", + "simultaneously", + "volleyball", + "spun", + "acre", + "increases", + "stopping", + "loves", + "belongs", + "affect", + "drafted", + "tossed", + "scout", + "battles", + "1875", + "filming", + "shoved", + "munich", + "tenure", + "vertical", + "romance", + "pc", + "##cher", + "argue", + "##ical", + "craft", + "ranging", + "www", + "opens", + "honest", + "tyler", + "yesterday", + "virtual", + "##let", + "muslims", + "reveal", + "snake", + "immigrants", + "radical", + "screaming", + "speakers", + "firing", + "saving", + "belonging", + "ease", + "lighting", + "prefecture", + "blame", + "farmer", + "hungry", + "grows", + "rubbed", + "beam", + "sur", + "subsidiary", + "##cha", + "armenian", + "sao", + "dropping", + "conventional", + "##fer", + "microsoft", + "reply", + "qualify", + "spots", + "1867", + "sweat", + "festivals", + "##ken", + "immigration", + "physician", + "discover", + "exposure", + "sandy", + "explanation", + "isaac", + "implemented", + "##fish", + "hart", + "initiated", + "connect", + "stakes", + "presents", + "heights", + "householder", + "pleased", + "tourist", + "regardless", + "slip", + "closest", + "##ction", + "surely", + "sultan", + "brings", + "riley", + "preparation", + "aboard", + "slammed", + "baptist", + "experiment", + "ongoing", + "interstate", + "organic", + "playoffs", + "##ika", + "1877", + "130", + "##tar", + "hindu", + "error", + "tours", + "tier", + "plenty", + "arrangements", + "talks", + "trapped", + "excited", + "sank", + "ho", + "athens", + "1872", + "denver", + "welfare", + "suburb", + "athletes", + "trick", + "diverse", + "belly", + "exclusively", + "yelled", + "1868", + "##med", + "conversion", + "##ette", + "1874", + "internationally", + "computers", + "conductor", + "abilities", + "sensitive", + "hello", + "dispute", + "measured", + "globe", + "rocket", + "prices", + "amsterdam", + "flights", + "tigers", + "inn", + "municipalities", + "emotion", + "references", + "3d", + "##mus", + "explains", + "airlines", + "manufactured", + "pm", + "archaeological", + "1873", + "interpretation", + "devon", + "comment", + "##ites", + "settlements", + "kissing", + "absolute", + "improvement", + "suite", + "impressed", + "barcelona", + "sullivan", + "jefferson", + "towers", + "jesse", + "julie", + "##tin", + "##lu", + "grandson", + "hi", + "gauge", + "regard", + "rings", + "interviews", + "trace", + "raymond", + "thumb", + "departments", + "burns", + "serial", + "bulgarian", + "scores", + "demonstrated", + "##ix", + "1866", + "kyle", + "alberta", + "underneath", + "romanized", + "##ward", + "relieved", + "acquisition", + "phrase", + "cliff", + "reveals", + "han", + "cuts", + "merger", + "custom", + "##dar", + "nee", + "gilbert", + "graduation", + "##nts", + "assessment", + "cafe", + "difficulty", + "demands", + "swung", + "democrat", + "jennifer", + "commons", + "1940s", + "grove", + "##yo", + "completing", + "focuses", + "sum", + "substitute", + "bearing", + "stretch", + "reception", + "##py", + "reflected", + "essentially", + "destination", + "pairs", + "##ched", + "survival", + "resource", + "##bach", + "promoting", + "doubles", + "messages", + "tear", + "##down", + "##fully", + "parade", + "florence", + "harvey", + "incumbent", + "partial", + "framework", + "900", + "pedro", + "frozen", + "procedure", + "olivia", + "controls", + "##mic", + "shelter", + "personally", + "temperatures", + "##od", + "brisbane", + "tested", + "sits", + "marble", + "comprehensive", + "oxygen", + "leonard", + "##kov", + "inaugural", + "iranian", + "referring", + "quarters", + "attitude", + "##ivity", + "mainstream", + "lined", + "mars", + "dakota", + "norfolk", + "unsuccessful", + "##\u00b0", + "explosion", + "helicopter", + "congressional", + "##sing", + "inspector", + "bitch", + "seal", + "departed", + "divine", + "##ters", + "coaching", + "examination", + "punishment", + "manufacturer", + "sink", + "columns", + "unincorporated", + "signals", + "nevada", + "squeezed", + "dylan", + "dining", + "photos", + "martial", + "manuel", + "eighteen", + "elevator", + "brushed", + "plates", + "ministers", + "ivy", + "congregation", + "##len", + "slept", + "specialized", + "taxes", + "curve", + "restricted", + "negotiations", + "likes", + "statistical", + "arnold", + "inspiration", + "execution", + "bold", + "intermediate", + "significance", + "margin", + "ruler", + "wheels", + "gothic", + "intellectual", + "dependent", + "listened", + "eligible", + "buses", + "widow", + "syria", + "earn", + "cincinnati", + "collapsed", + "recipient", + "secrets", + "accessible", + "philippine", + "maritime", + "goddess", + "clerk", + "surrender", + "breaks", + "playoff", + "database", + "##ified", + "##lon", + "ideal", + "beetle", + "aspect", + "soap", + "regulation", + "strings", + "expand", + "anglo", + "shorter", + "crosses", + "retreat", + "tough", + "coins", + "wallace", + "directions", + "pressing", + "##oon", + "shipping", + "locomotives", + "comparison", + "topics", + "nephew", + "##mes", + "distinction", + "honors", + "travelled", + "sierra", + "ibn", + "##over", + "fortress", + "sa", + "recognised", + "carved", + "1869", + "clients", + "##dan", + "intent", + "##mar", + "coaches", + "describing", + "bread", + "##ington", + "beaten", + "northwestern", + "##ona", + "merit", + "youtube", + "collapse", + "challenges", + "em", + "historians", + "objective", + "submitted", + "virus", + "attacking", + "drake", + "assume", + "##ere", + "diseases", + "marc", + "stem", + "leeds", + "##cus", + "##ab", + "farming", + "glasses", + "##lock", + "visits", + "nowhere", + "fellowship", + "relevant", + "carries", + "restaurants", + "experiments", + "101", + "constantly", + "bases", + "targets", + "shah", + "tenth", + "opponents", + "verse", + "territorial", + "##ira", + "writings", + "corruption", + "##hs", + "instruction", + "inherited", + "reverse", + "emphasis", + "##vic", + "employee", + "arch", + "keeps", + "rabbi", + "watson", + "payment", + "uh", + "##ala", + "nancy", + "##tre", + "venice", + "fastest", + "sexy", + "banned", + "adrian", + "properly", + "ruth", + "touchdown", + "dollar", + "boards", + "metre", + "circles", + "edges", + "favour", + "comments", + "ok", + "travels", + "liberation", + "scattered", + "firmly", + "##ular", + "holland", + "permitted", + "diesel", + "kenya", + "den", + "originated", + "##ral", + "demons", + "resumed", + "dragged", + "rider", + "##rus", + "servant", + "blinked", + "extend", + "torn", + "##ias", + "##sey", + "input", + "meal", + "everybody", + "cylinder", + "kinds", + "camps", + "##fe", + "bullet", + "logic", + "##wn", + "croatian", + "evolved", + "healthy", + "fool", + "chocolate", + "wise", + "preserve", + "pradesh", + "##ess", + "respective", + "1850", + "##ew", + "chicken", + "artificial", + "gross", + "corresponding", + "convicted", + "cage", + "caroline", + "dialogue", + "##dor", + "narrative", + "stranger", + "mario", + "br", + "christianity", + "failing", + "trent", + "commanding", + "buddhist", + "1848", + "maurice", + "focusing", + "yale", + "bike", + "altitude", + "##ering", + "mouse", + "revised", + "##sley", + "veteran", + "##ig", + "pulls", + "theology", + "crashed", + "campaigns", + "legion", + "##ability", + "drag", + "excellence", + "customer", + "cancelled", + "intensity", + "excuse", + "##lar", + "liga", + "participating", + "contributing", + "printing", + "##burn", + "variable", + "##rk", + "curious", + "bin", + "legacy", + "renaissance", + "##my", + "symptoms", + "binding", + "vocalist", + "dancer", + "##nie", + "grammar", + "gospel", + "democrats", + "ya", + "enters", + "sc", + "diplomatic", + "hitler", + "##ser", + "clouds", + "mathematical", + "quit", + "defended", + "oriented", + "##heim", + "fundamental", + "hardware", + "impressive", + "equally", + "convince", + "confederate", + "guilt", + "chuck", + "sliding", + "##ware", + "magnetic", + "narrowed", + "petersburg", + "bulgaria", + "otto", + "phd", + "skill", + "##ama", + "reader", + "hopes", + "pitcher", + "reservoir", + "hearts", + "automatically", + "expecting", + "mysterious", + "bennett", + "extensively", + "imagined", + "seeds", + "monitor", + "fix", + "##ative", + "journalism", + "struggling", + "signature", + "ranch", + "encounter", + "photographer", + "observation", + "protests", + "##pin", + "influences", + "##hr", + "calendar", + "##all", + "cruz", + "croatia", + "locomotive", + "hughes", + "naturally", + "shakespeare", + "basement", + "hook", + "uncredited", + "faded", + "theories", + "approaches", + "dare", + "phillips", + "filling", + "fury", + "obama", + "##ain", + "efficient", + "arc", + "deliver", + "min", + "raid", + "breeding", + "inducted", + "leagues", + "efficiency", + "axis", + "montana", + "eagles", + "##ked", + "supplied", + "instructions", + "karen", + "picking", + "indicating", + "trap", + "anchor", + "practically", + "christians", + "tomb", + "vary", + "occasional", + "electronics", + "lords", + "readers", + "newcastle", + "faint", + "innovation", + "collect", + "situations", + "engagement", + "160", + "claude", + "mixture", + "##feld", + "peer", + "tissue", + "logo", + "lean", + "##ration", + "\u00b0f", + "floors", + "##ven", + "architects", + "reducing", + "##our", + "##ments", + "rope", + "1859", + "ottawa", + "##har", + "samples", + "banking", + "declaration", + "proteins", + "resignation", + "francois", + "saudi", + "advocate", + "exhibited", + "armor", + "twins", + "divorce", + "##ras", + "abraham", + "reviewed", + "jo", + "temporarily", + "matrix", + "physically", + "pulse", + "curled", + "##ena", + "difficulties", + "bengal", + "usage", + "##ban", + "annie", + "riders", + "certificate", + "##pi", + "holes", + "warsaw", + "distinctive", + "jessica", + "##mon", + "mutual", + "1857", + "customs", + "circular", + "eugene", + "removal", + "loaded", + "mere", + "vulnerable", + "depicted", + "generations", + "dame", + "heir", + "enormous", + "lightly", + "climbing", + "pitched", + "lessons", + "pilots", + "nepal", + "ram", + "google", + "preparing", + "brad", + "louise", + "renowned", + "##\u2082", + "liam", + "##ably", + "plaza", + "shaw", + "sophie", + "brilliant", + "bills", + "##bar", + "##nik", + "fucking", + "mainland", + "server", + "pleasant", + "seized", + "veterans", + "jerked", + "fail", + "beta", + "brush", + "radiation", + "stored", + "warmth", + "southeastern", + "nate", + "sin", + "raced", + "berkeley", + "joke", + "athlete", + "designation", + "trunk", + "##low", + "roland", + "qualification", + "archives", + "heels", + "artwork", + "receives", + "judicial", + "reserves", + "##bed", + "woke", + "installation", + "abu", + "floating", + "fake", + "lesser", + "excitement", + "interface", + "concentrated", + "addressed", + "characteristic", + "amanda", + "saxophone", + "monk", + "auto", + "##bus", + "releasing", + "egg", + "dies", + "interaction", + "defender", + "ce", + "outbreak", + "glory", + "loving", + "##bert", + "sequel", + "consciousness", + "http", + "awake", + "ski", + "enrolled", + "##ress", + "handling", + "rookie", + "brow", + "somebody", + "biography", + "warfare", + "amounts", + "contracts", + "presentation", + "fabric", + "dissolved", + "challenged", + "meter", + "psychological", + "lt", + "elevated", + "rally", + "accurate", + "##tha", + "hospitals", + "undergraduate", + "specialist", + "venezuela", + "exhibit", + "shed", + "nursing", + "protestant", + "fluid", + "structural", + "footage", + "jared", + "consistent", + "prey", + "##ska", + "succession", + "reflect", + "exile", + "lebanon", + "wiped", + "suspect", + "shanghai", + "resting", + "integration", + "preservation", + "marvel", + "variant", + "pirates", + "sheep", + "rounded", + "capita", + "sailing", + "colonies", + "manuscript", + "deemed", + "variations", + "clarke", + "functional", + "emerging", + "boxing", + "relaxed", + "curse", + "azerbaijan", + "heavyweight", + "nickname", + "editorial", + "rang", + "grid", + "tightened", + "earthquake", + "flashed", + "miguel", + "rushing", + "##ches", + "improvements", + "boxes", + "brooks", + "180", + "consumption", + "molecular", + "felix", + "societies", + "repeatedly", + "variation", + "aids", + "civic", + "graphics", + "professionals", + "realm", + "autonomous", + "receiver", + "delayed", + "workshop", + "militia", + "chairs", + "trump", + "canyon", + "##point", + "harsh", + "extending", + "lovely", + "happiness", + "##jan", + "stake", + "eyebrows", + "embassy", + "wellington", + "hannah", + "##ella", + "sony", + "corners", + "bishops", + "swear", + "cloth", + "contents", + "xi", + "namely", + "commenced", + "1854", + "stanford", + "nashville", + "courage", + "graphic", + "commitment", + "garrison", + "##bin", + "hamlet", + "clearing", + "rebels", + "attraction", + "literacy", + "cooking", + "ruins", + "temples", + "jenny", + "humanity", + "celebrate", + "hasn", + "freight", + "sixty", + "rebel", + "bastard", + "##art", + "newton", + "##ada", + "deer", + "##ges", + "##ching", + "smiles", + "delaware", + "singers", + "##ets", + "approaching", + "assists", + "flame", + "##ph", + "boulevard", + "barrel", + "planted", + "##ome", + "pursuit", + "##sia", + "consequences", + "posts", + "shallow", + "invitation", + "rode", + "depot", + "ernest", + "kane", + "rod", + "concepts", + "preston", + "topic", + "chambers", + "striking", + "blast", + "arrives", + "descendants", + "montgomery", + "ranges", + "worlds", + "##lay", + "##ari", + "span", + "chaos", + "praise", + "##ag", + "fewer", + "1855", + "sanctuary", + "mud", + "fbi", + "##ions", + "programmes", + "maintaining", + "unity", + "harper", + "bore", + "handsome", + "closure", + "tournaments", + "thunder", + "nebraska", + "linda", + "facade", + "puts", + "satisfied", + "argentine", + "dale", + "cork", + "dome", + "panama", + "##yl", + "1858", + "tasks", + "experts", + "##ates", + "feeding", + "equation", + "##las", + "##ida", + "##tu", + "engage", + "bryan", + "##ax", + "um", + "quartet", + "melody", + "disbanded", + "sheffield", + "blocked", + "gasped", + "delay", + "kisses", + "maggie", + "connects", + "##non", + "sts", + "poured", + "creator", + "publishers", + "##we", + "guided", + "ellis", + "extinct", + "hug", + "gaining", + "##ord", + "complicated", + "##bility", + "poll", + "clenched", + "investigate", + "##use", + "thereby", + "quantum", + "spine", + "cdp", + "humor", + "kills", + "administered", + "semifinals", + "##du", + "encountered", + "ignore", + "##bu", + "commentary", + "##maker", + "bother", + "roosevelt", + "140", + "plains", + "halfway", + "flowing", + "cultures", + "crack", + "imprisoned", + "neighboring", + "airline", + "##ses", + "##view", + "##mate", + "##ec", + "gather", + "wolves", + "marathon", + "transformed", + "##ill", + "cruise", + "organisations", + "carol", + "punch", + "exhibitions", + "numbered", + "alarm", + "ratings", + "daddy", + "silently", + "##stein", + "queens", + "colours", + "impression", + "guidance", + "liu", + "tactical", + "##rat", + "marshal", + "della", + "arrow", + "##ings", + "rested", + "feared", + "tender", + "owns", + "bitter", + "advisor", + "escort", + "##ides", + "spare", + "farms", + "grants", + "##ene", + "dragons", + "encourage", + "colleagues", + "cameras", + "##und", + "sucked", + "pile", + "spirits", + "prague", + "statements", + "suspension", + "landmark", + "fence", + "torture", + "recreation", + "bags", + "permanently", + "survivors", + "pond", + "spy", + "predecessor", + "bombing", + "coup", + "##og", + "protecting", + "transformation", + "glow", + "##lands", + "##book", + "dug", + "priests", + "andrea", + "feat", + "barn", + "jumping", + "##chen", + "##ologist", + "##con", + "casualties", + "stern", + "auckland", + "pipe", + "serie", + "revealing", + "ba", + "##bel", + "trevor", + "mercy", + "spectrum", + "yang", + "consist", + "governing", + "collaborated", + "possessed", + "epic", + "comprises", + "blew", + "shane", + "##ack", + "lopez", + "honored", + "magical", + "sacrifice", + "judgment", + "perceived", + "hammer", + "mtv", + "baronet", + "tune", + "das", + "missionary", + "sheets", + "350", + "neutral", + "oral", + "threatening", + "attractive", + "shade", + "aims", + "seminary", + "##master", + "estates", + "1856", + "michel", + "wounds", + "refugees", + "manufacturers", + "##nic", + "mercury", + "syndrome", + "porter", + "##iya", + "##din", + "hamburg", + "identification", + "upstairs", + "purse", + "widened", + "pause", + "cared", + "breathed", + "affiliate", + "santiago", + "prevented", + "celtic", + "fisher", + "125", + "recruited", + "byzantine", + "reconstruction", + "farther", + "##mp", + "diet", + "sake", + "au", + "spite", + "sensation", + "##ert", + "blank", + "separation", + "105", + "##hon", + "vladimir", + "armies", + "anime", + "##lie", + "accommodate", + "orbit", + "cult", + "sofia", + "archive", + "##ify", + "##box", + "founders", + "sustained", + "disorder", + "honours", + "northeastern", + "mia", + "crops", + "violet", + "threats", + "blanket", + "fires", + "canton", + "followers", + "southwestern", + "prototype", + "voyage", + "assignment", + "altered", + "moderate", + "protocol", + "pistol", + "##eo", + "questioned", + "brass", + "lifting", + "1852", + "math", + "authored", + "##ual", + "doug", + "dimensional", + "dynamic", + "##san", + "1851", + "pronounced", + "grateful", + "quest", + "uncomfortable", + "boom", + "presidency", + "stevens", + "relating", + "politicians", + "chen", + "barrier", + "quinn", + "diana", + "mosque", + "tribal", + "cheese", + "palmer", + "portions", + "sometime", + "chester", + "treasure", + "wu", + "bend", + "download", + "millions", + "reforms", + "registration", + "##osa", + "consequently", + "monitoring", + "ate", + "preliminary", + "brandon", + "invented", + "ps", + "eaten", + "exterior", + "intervention", + "ports", + "documented", + "log", + "displays", + "lecture", + "sally", + "favourite", + "##itz", + "vermont", + "lo", + "invisible", + "isle", + "breed", + "##ator", + "journalists", + "relay", + "speaks", + "backward", + "explore", + "midfielder", + "actively", + "stefan", + "procedures", + "cannon", + "blond", + "kenneth", + "centered", + "servants", + "chains", + "libraries", + "malcolm", + "essex", + "henri", + "slavery", + "##hal", + "facts", + "fairy", + "coached", + "cassie", + "cats", + "washed", + "cop", + "##fi", + "announcement", + "item", + "2000s", + "vinyl", + "activated", + "marco", + "frontier", + "growled", + "curriculum", + "##das", + "loyal", + "accomplished", + "leslie", + "ritual", + "kenny", + "##00", + "vii", + "napoleon", + "hollow", + "hybrid", + "jungle", + "stationed", + "friedrich", + "counted", + "##ulated", + "platinum", + "theatrical", + "seated", + "col", + "rubber", + "glen", + "1840", + "diversity", + "healing", + "extends", + "id", + "provisions", + "administrator", + "columbus", + "##oe", + "tributary", + "te", + "assured", + "org", + "##uous", + "prestigious", + "examined", + "lectures", + "grammy", + "ronald", + "associations", + "bailey", + "allan", + "essays", + "flute", + "believing", + "consultant", + "proceedings", + "travelling", + "1853", + "kit", + "kerala", + "yugoslavia", + "buddy", + "methodist", + "##ith", + "burial", + "centres", + "batman", + "##nda", + "discontinued", + "bo", + "dock", + "stockholm", + "lungs", + "severely", + "##nk", + "citing", + "manga", + "##ugh", + "steal", + "mumbai", + "iraqi", + "robot", + "celebrity", + "bride", + "broadcasts", + "abolished", + "pot", + "joel", + "overhead", + "franz", + "packed", + "reconnaissance", + "johann", + "acknowledged", + "introduce", + "handled", + "doctorate", + "developments", + "drinks", + "alley", + "palestine", + "##nis", + "##aki", + "proceeded", + "recover", + "bradley", + "grain", + "patch", + "afford", + "infection", + "nationalist", + "legendary", + "##ath", + "interchange", + "virtually", + "gen", + "gravity", + "exploration", + "amber", + "vital", + "wishes", + "powell", + "doctrine", + "elbow", + "screenplay", + "##bird", + "contribute", + "indonesian", + "pet", + "creates", + "##com", + "enzyme", + "kylie", + "discipline", + "drops", + "manila", + "hunger", + "##ien", + "layers", + "suffer", + "fever", + "bits", + "monica", + "keyboard", + "manages", + "##hood", + "searched", + "appeals", + "##bad", + "testament", + "grande", + "reid", + "##war", + "beliefs", + "congo", + "##ification", + "##dia", + "si", + "requiring", + "##via", + "casey", + "1849", + "regret", + "streak", + "rape", + "depends", + "syrian", + "sprint", + "pound", + "tourists", + "upcoming", + "pub", + "##xi", + "tense", + "##els", + "practiced", + "echo", + "nationwide", + "guild", + "motorcycle", + "liz", + "##zar", + "chiefs", + "desired", + "elena", + "bye", + "precious", + "absorbed", + "relatives", + "booth", + "pianist", + "##mal", + "citizenship", + "exhausted", + "wilhelm", + "##ceae", + "##hed", + "noting", + "quarterback", + "urge", + "hectares", + "##gue", + "ace", + "holly", + "##tal", + "blonde", + "davies", + "parked", + "sustainable", + "stepping", + "twentieth", + "airfield", + "galaxy", + "nest", + "chip", + "##nell", + "tan", + "shaft", + "paulo", + "requirement", + "##zy", + "paradise", + "tobacco", + "trans", + "renewed", + "vietnamese", + "##cker", + "##ju", + "suggesting", + "catching", + "holmes", + "enjoying", + "md", + "trips", + "colt", + "holder", + "butterfly", + "nerve", + "reformed", + "cherry", + "bowling", + "trailer", + "carriage", + "goodbye", + "appreciate", + "toy", + "joshua", + "interactive", + "enabled", + "involve", + "##kan", + "collar", + "determination", + "bunch", + "facebook", + "recall", + "shorts", + "superintendent", + "episcopal", + "frustration", + "giovanni", + "nineteenth", + "laser", + "privately", + "array", + "circulation", + "##ovic", + "armstrong", + "deals", + "painful", + "permit", + "discrimination", + "##wi", + "aires", + "retiring", + "cottage", + "ni", + "##sta", + "horizon", + "ellen", + "jamaica", + "ripped", + "fernando", + "chapters", + "playstation", + "patron", + "lecturer", + "navigation", + "behaviour", + "genes", + "georgian", + "export", + "solomon", + "rivals", + "swift", + "seventeen", + "rodriguez", + "princeton", + "independently", + "sox", + "1847", + "arguing", + "entity", + "casting", + "hank", + "criteria", + "oakland", + "geographic", + "milwaukee", + "reflection", + "expanding", + "conquest", + "dubbed", + "##tv", + "halt", + "brave", + "brunswick", + "doi", + "arched", + "curtis", + "divorced", + "predominantly", + "somerset", + "streams", + "ugly", + "zoo", + "horrible", + "curved", + "buenos", + "fierce", + "dictionary", + "vector", + "theological", + "unions", + "handful", + "stability", + "chan", + "punjab", + "segments", + "##lly", + "altar", + "ignoring", + "gesture", + "monsters", + "pastor", + "##stone", + "thighs", + "unexpected", + "operators", + "abruptly", + "coin", + "compiled", + "associates", + "improving", + "migration", + "pin", + "##ose", + "compact", + "collegiate", + "reserved", + "##urs", + "quarterfinals", + "roster", + "restore", + "assembled", + "hurry", + "oval", + "##cies", + "1846", + "flags", + "martha", + "##del", + "victories", + "sharply", + "##rated", + "argues", + "deadly", + "neo", + "drawings", + "symbols", + "performer", + "##iel", + "griffin", + "restrictions", + "editing", + "andrews", + "java", + "journals", + "arabia", + "compositions", + "dee", + "pierce", + "removing", + "hindi", + "casino", + "runway", + "civilians", + "minds", + "nasa", + "hotels", + "##zation", + "refuge", + "rent", + "retain", + "potentially", + "conferences", + "suburban", + "conducting", + "##tto", + "##tions", + "##tle", + "descended", + "massacre", + "##cal", + "ammunition", + "terrain", + "fork", + "souls", + "counts", + "chelsea", + "durham", + "drives", + "cab", + "##bank", + "perth", + "realizing", + "palestinian", + "finn", + "simpson", + "##dal", + "betty", + "##ule", + "moreover", + "particles", + "cardinals", + "tent", + "evaluation", + "extraordinary", + "##oid", + "inscription", + "##works", + "wednesday", + "chloe", + "maintains", + "panels", + "ashley", + "trucks", + "##nation", + "cluster", + "sunlight", + "strikes", + "zhang", + "##wing", + "dialect", + "canon", + "##ap", + "tucked", + "##ws", + "collecting", + "##mas", + "##can", + "##sville", + "maker", + "quoted", + "evan", + "franco", + "aria", + "buying", + "cleaning", + "eva", + "closet", + "provision", + "apollo", + "clinic", + "rat", + "##ez", + "necessarily", + "ac", + "##gle", + "##ising", + "venues", + "flipped", + "cent", + "spreading", + "trustees", + "checking", + "authorized", + "##sco", + "disappointed", + "##ado", + "notion", + "duration", + "trumpet", + "hesitated", + "topped", + "brussels", + "rolls", + "theoretical", + "hint", + "define", + "aggressive", + "repeat", + "wash", + "peaceful", + "optical", + "width", + "allegedly", + "mcdonald", + "strict", + "copyright", + "##illa", + "investors", + "mar", + "jam", + "witnesses", + "sounding", + "miranda", + "michelle", + "privacy", + "hugo", + "harmony", + "##pp", + "valid", + "lynn", + "glared", + "nina", + "102", + "headquartered", + "diving", + "boarding", + "gibson", + "##ncy", + "albanian", + "marsh", + "routine", + "dealt", + "enhanced", + "er", + "intelligent", + "substance", + "targeted", + "enlisted", + "discovers", + "spinning", + "observations", + "pissed", + "smoking", + "rebecca", + "capitol", + "visa", + "varied", + "costume", + "seemingly", + "indies", + "compensation", + "surgeon", + "thursday", + "arsenal", + "westminster", + "suburbs", + "rid", + "anglican", + "##ridge", + "knots", + "foods", + "alumni", + "lighter", + "fraser", + "whoever", + "portal", + "scandal", + "##ray", + "gavin", + "advised", + "instructor", + "flooding", + "terrorist", + "##ale", + "teenage", + "interim", + "senses", + "duck", + "teen", + "thesis", + "abby", + "eager", + "overcome", + "##ile", + "newport", + "glenn", + "rises", + "shame", + "##cc", + "prompted", + "priority", + "forgot", + "bomber", + "nicolas", + "protective", + "360", + "cartoon", + "katherine", + "breeze", + "lonely", + "trusted", + "henderson", + "richardson", + "relax", + "banner", + "candy", + "palms", + "remarkable", + "##rio", + "legends", + "cricketer", + "essay", + "ordained", + "edmund", + "rifles", + "trigger", + "##uri", + "##away", + "sail", + "alert", + "1830", + "audiences", + "penn", + "sussex", + "siblings", + "pursued", + "indianapolis", + "resist", + "rosa", + "consequence", + "succeed", + "avoided", + "1845", + "##ulation", + "inland", + "##tie", + "##nna", + "counsel", + "profession", + "chronicle", + "hurried", + "##una", + "eyebrow", + "eventual", + "bleeding", + "innovative", + "cure", + "##dom", + "committees", + "accounting", + "con", + "scope", + "hardy", + "heather", + "tenor", + "gut", + "herald", + "codes", + "tore", + "scales", + "wagon", + "##oo", + "luxury", + "tin", + "prefer", + "fountain", + "triangle", + "bonds", + "darling", + "convoy", + "dried", + "traced", + "beings", + "troy", + "accidentally", + "slam", + "findings", + "smelled", + "joey", + "lawyers", + "outcome", + "steep", + "bosnia", + "configuration", + "shifting", + "toll", + "brook", + "performers", + "lobby", + "philosophical", + "construct", + "shrine", + "aggregate", + "boot", + "cox", + "phenomenon", + "savage", + "insane", + "solely", + "reynolds", + "lifestyle", + "##ima", + "nationally", + "holdings", + "consideration", + "enable", + "edgar", + "mo", + "mama", + "##tein", + "fights", + "relegation", + "chances", + "atomic", + "hub", + "conjunction", + "awkward", + "reactions", + "currency", + "finale", + "kumar", + "underwent", + "steering", + "elaborate", + "gifts", + "comprising", + "melissa", + "veins", + "reasonable", + "sunshine", + "chi", + "solve", + "trails", + "inhabited", + "elimination", + "ethics", + "huh", + "ana", + "molly", + "consent", + "apartments", + "layout", + "marines", + "##ces", + "hunters", + "bulk", + "##oma", + "hometown", + "##wall", + "##mont", + "cracked", + "reads", + "neighbouring", + "withdrawn", + "admission", + "wingspan", + "damned", + "anthology", + "lancashire", + "brands", + "batting", + "forgive", + "cuban", + "awful", + "##lyn", + "104", + "dimensions", + "imagination", + "##ade", + "dante", + "##ship", + "tracking", + "desperately", + "goalkeeper", + "##yne", + "groaned", + "workshops", + "confident", + "burton", + "gerald", + "milton", + "circus", + "uncertain", + "slope", + "copenhagen", + "sophia", + "fog", + "philosopher", + "portraits", + "accent", + "cycling", + "varying", + "gripped", + "larvae", + "garrett", + "specified", + "scotia", + "mature", + "luther", + "kurt", + "rap", + "##kes", + "aerial", + "750", + "ferdinand", + "heated", + "es", + "transported", + "##shan", + "safely", + "nonetheless", + "##orn", + "##gal", + "motors", + "demanding", + "##sburg", + "startled", + "##brook", + "ally", + "generate", + "caps", + "ghana", + "stained", + "demo", + "mentions", + "beds", + "ap", + "afterward", + "diary", + "##bling", + "utility", + "##iro", + "richards", + "1837", + "conspiracy", + "conscious", + "shining", + "footsteps", + "observer", + "cyprus", + "urged", + "loyalty", + "developer", + "probability", + "olive", + "upgraded", + "gym", + "miracle", + "insects", + "graves", + "1844", + "ourselves", + "hydrogen", + "amazon", + "katie", + "tickets", + "poets", + "##pm", + "planes", + "##pan", + "prevention", + "witnessed", + "dense", + "jin", + "randy", + "tang", + "warehouse", + "monroe", + "bang", + "archived", + "elderly", + "investigations", + "alec", + "granite", + "mineral", + "conflicts", + "controlling", + "aboriginal", + "carlo", + "##zu", + "mechanics", + "stan", + "stark", + "rhode", + "skirt", + "est", + "##berry", + "bombs", + "respected", + "##horn", + "imposed", + "limestone", + "deny", + "nominee", + "memphis", + "grabbing", + "disabled", + "##als", + "amusement", + "aa", + "frankfurt", + "corn", + "referendum", + "varies", + "slowed", + "disk", + "firms", + "unconscious", + "incredible", + "clue", + "sue", + "##zhou", + "twist", + "##cio", + "joins", + "idaho", + "chad", + "developers", + "computing", + "destroyer", + "103", + "mortal", + "tucker", + "kingston", + "choices", + "yu", + "carson", + "1800", + "os", + "whitney", + "geneva", + "pretend", + "dimension", + "staged", + "plateau", + "maya", + "##une", + "freestyle", + "##bc", + "rovers", + "hiv", + "##ids", + "tristan", + "classroom", + "prospect", + "##hus", + "honestly", + "diploma", + "lied", + "thermal", + "auxiliary", + "feast", + "unlikely", + "iata", + "##tel", + "morocco", + "pounding", + "treasury", + "lithuania", + "considerably", + "1841", + "dish", + "1812", + "geological", + "matching", + "stumbled", + "destroying", + "marched", + "brien", + "advances", + "cake", + "nicole", + "belle", + "settling", + "measuring", + "directing", + "##mie", + "tuesday", + "bassist", + "capabilities", + "stunned", + "fraud", + "torpedo", + "##list", + "##phone", + "anton", + "wisdom", + "surveillance", + "ruined", + "##ulate", + "lawsuit", + "healthcare", + "theorem", + "halls", + "trend", + "aka", + "horizontal", + "dozens", + "acquire", + "lasting", + "swim", + "hawk", + "gorgeous", + "fees", + "vicinity", + "decrease", + "adoption", + "tactics", + "##ography", + "pakistani", + "##ole", + "draws", + "##hall", + "willie", + "burke", + "heath", + "algorithm", + "integral", + "powder", + "elliott", + "brigadier", + "jackie", + "tate", + "varieties", + "darker", + "##cho", + "lately", + "cigarette", + "specimens", + "adds", + "##ree", + "##ensis", + "##inger", + "exploded", + "finalist", + "cia", + "murders", + "wilderness", + "arguments", + "nicknamed", + "acceptance", + "onwards", + "manufacture", + "robertson", + "jets", + "tampa", + "enterprises", + "blog", + "loudly", + "composers", + "nominations", + "1838", + "ai", + "malta", + "inquiry", + "automobile", + "hosting", + "viii", + "rays", + "tilted", + "grief", + "museums", + "strategies", + "furious", + "euro", + "equality", + "cohen", + "poison", + "surrey", + "wireless", + "governed", + "ridiculous", + "moses", + "##esh", + "##room", + "vanished", + "##ito", + "barnes", + "attract", + "morrison", + "istanbul", + "##iness", + "absent", + "rotation", + "petition", + "janet", + "##logical", + "satisfaction", + "custody", + "deliberately", + "observatory", + "comedian", + "surfaces", + "pinyin", + "novelist", + "strictly", + "canterbury", + "oslo", + "monks", + "embrace", + "ibm", + "jealous", + "photograph", + "continent", + "dorothy", + "marina", + "doc", + "excess", + "holden", + "allegations", + "explaining", + "stack", + "avoiding", + "lance", + "storyline", + "majesty", + "poorly", + "spike", + "dos", + "bradford", + "raven", + "travis", + "classics", + "proven", + "voltage", + "pillow", + "fists", + "butt", + "1842", + "interpreted", + "##car", + "1839", + "gage", + "telegraph", + "lens", + "promising", + "expelled", + "casual", + "collector", + "zones", + "##min", + "silly", + "nintendo", + "##kh", + "##bra", + "downstairs", + "chef", + "suspicious", + "afl", + "flies", + "vacant", + "uganda", + "pregnancy", + "condemned", + "lutheran", + "estimates", + "cheap", + "decree", + "saxon", + "proximity", + "stripped", + "idiot", + "deposits", + "contrary", + "presenter", + "magnus", + "glacier", + "im", + "offense", + "edwin", + "##ori", + "upright", + "##long", + "bolt", + "##ois", + "toss", + "geographical", + "##izes", + "environments", + "delicate", + "marking", + "abstract", + "xavier", + "nails", + "windsor", + "plantation", + "occurring", + "equity", + "saskatchewan", + "fears", + "drifted", + "sequences", + "vegetation", + "revolt", + "##stic", + "1843", + "sooner", + "fusion", + "opposing", + "nato", + "skating", + "1836", + "secretly", + "ruin", + "lease", + "##oc", + "edit", + "##nne", + "flora", + "anxiety", + "ruby", + "##ological", + "##mia", + "tel", + "bout", + "taxi", + "emmy", + "frost", + "rainbow", + "compounds", + "foundations", + "rainfall", + "assassination", + "nightmare", + "dominican", + "##win", + "achievements", + "deserve", + "orlando", + "intact", + "armenia", + "##nte", + "calgary", + "valentine", + "106", + "marion", + "proclaimed", + "theodore", + "bells", + "courtyard", + "thigh", + "gonzalez", + "console", + "troop", + "minimal", + "monte", + "everyday", + "##ence", + "##if", + "supporter", + "terrorism", + "buck", + "openly", + "presbyterian", + "activists", + "carpet", + "##iers", + "rubbing", + "uprising", + "##yi", + "cute", + "conceived", + "legally", + "##cht", + "millennium", + "cello", + "velocity", + "ji", + "rescued", + "cardiff", + "1835", + "rex", + "concentrate", + "senators", + "beard", + "rendered", + "glowing", + "battalions", + "scouts", + "competitors", + "sculptor", + "catalogue", + "arctic", + "ion", + "raja", + "bicycle", + "wow", + "glancing", + "lawn", + "##woman", + "gentleman", + "lighthouse", + "publish", + "predicted", + "calculated", + "##val", + "variants", + "##gne", + "strain", + "##ui", + "winston", + "deceased", + "##nus", + "touchdowns", + "brady", + "caleb", + "sinking", + "echoed", + "crush", + "hon", + "blessed", + "protagonist", + "hayes", + "endangered", + "magnitude", + "editors", + "##tine", + "estimate", + "responsibilities", + "##mel", + "backup", + "laying", + "consumed", + "sealed", + "zurich", + "lovers", + "frustrated", + "##eau", + "ahmed", + "kicking", + "mit", + "treasurer", + "1832", + "biblical", + "refuse", + "terrified", + "pump", + "agrees", + "genuine", + "imprisonment", + "refuses", + "plymouth", + "##hen", + "lou", + "##nen", + "tara", + "trembling", + "antarctic", + "ton", + "learns", + "##tas", + "crap", + "crucial", + "faction", + "atop", + "##borough", + "wrap", + "lancaster", + "odds", + "hopkins", + "erik", + "lyon", + "##eon", + "bros", + "##ode", + "snap", + "locality", + "tips", + "empress", + "crowned", + "cal", + "acclaimed", + "chuckled", + "##ory", + "clara", + "sends", + "mild", + "towel", + "##fl", + "##day", + "##\u0430", + "wishing", + "assuming", + "interviewed", + "##bal", + "##die", + "interactions", + "eden", + "cups", + "helena", + "##lf", + "indie", + "beck", + "##fire", + "batteries", + "filipino", + "wizard", + "parted", + "##lam", + "traces", + "##born", + "rows", + "idol", + "albany", + "delegates", + "##ees", + "##sar", + "discussions", + "##ex", + "notre", + "instructed", + "belgrade", + "highways", + "suggestion", + "lauren", + "possess", + "orientation", + "alexandria", + "abdul", + "beats", + "salary", + "reunion", + "ludwig", + "alright", + "wagner", + "intimate", + "pockets", + "slovenia", + "hugged", + "brighton", + "merchants", + "cruel", + "stole", + "trek", + "slopes", + "repairs", + "enrollment", + "politically", + "underlying", + "promotional", + "counting", + "boeing", + "##bb", + "isabella", + "naming", + "##\u0438", + "keen", + "bacteria", + "listing", + "separately", + "belfast", + "ussr", + "450", + "lithuanian", + "anybody", + "ribs", + "sphere", + "martinez", + "cock", + "embarrassed", + "proposals", + "fragments", + "nationals", + "##fs", + "##wski", + "premises", + "fin", + "1500", + "alpine", + "matched", + "freely", + "bounded", + "jace", + "sleeve", + "##af", + "gaming", + "pier", + "populated", + "evident", + "##like", + "frances", + "flooded", + "##dle", + "frightened", + "pour", + "trainer", + "framed", + "visitor", + "challenging", + "pig", + "wickets", + "##fold", + "infected", + "email", + "##pes", + "arose", + "##aw", + "reward", + "ecuador", + "oblast", + "vale", + "ch", + "shuttle", + "##usa", + "bach", + "rankings", + "forbidden", + "cornwall", + "accordance", + "salem", + "consumers", + "bruno", + "fantastic", + "toes", + "machinery", + "resolved", + "julius", + "remembering", + "propaganda", + "iceland", + "bombardment", + "tide", + "contacts", + "wives", + "##rah", + "concerto", + "macdonald", + "albania", + "implement", + "daisy", + "tapped", + "sudan", + "helmet", + "angela", + "mistress", + "##lic", + "crop", + "sunk", + "finest", + "##craft", + "hostile", + "##ute", + "##tsu", + "boxer", + "fr", + "paths", + "adjusted", + "habit", + "ballot", + "supervision", + "soprano", + "##zen", + "bullets", + "wicked", + "sunset", + "regiments", + "disappear", + "lamp", + "performs", + "app", + "##gia", + "##oa", + "rabbit", + "digging", + "incidents", + "entries", + "##cion", + "dishes", + "##oi", + "introducing", + "##ati", + "##fied", + "freshman", + "slot", + "jill", + "tackles", + "baroque", + "backs", + "##iest", + "lone", + "sponsor", + "destiny", + "altogether", + "convert", + "##aro", + "consensus", + "shapes", + "demonstration", + "basically", + "feminist", + "auction", + "artifacts", + "##bing", + "strongest", + "twitter", + "halifax", + "2019", + "allmusic", + "mighty", + "smallest", + "precise", + "alexandra", + "viola", + "##los", + "##ille", + "manuscripts", + "##illo", + "dancers", + "ari", + "managers", + "monuments", + "blades", + "barracks", + "springfield", + "maiden", + "consolidated", + "electron", + "##end", + "berry", + "airing", + "wheat", + "nobel", + "inclusion", + "blair", + "payments", + "geography", + "bee", + "cc", + "eleanor", + "react", + "##hurst", + "afc", + "manitoba", + "##yu", + "su", + "lineup", + "fitness", + "recreational", + "investments", + "airborne", + "disappointment", + "##dis", + "edmonton", + "viewing", + "##row", + "renovation", + "##cast", + "infant", + "bankruptcy", + "roses", + "aftermath", + "pavilion", + "##yer", + "carpenter", + "withdrawal", + "ladder", + "##hy", + "discussing", + "popped", + "reliable", + "agreements", + "rochester", + "##abad", + "curves", + "bombers", + "220", + "rao", + "reverend", + "decreased", + "choosing", + "107", + "stiff", + "consulting", + "naples", + "crawford", + "tracy", + "ka", + "ribbon", + "cops", + "##lee", + "crushed", + "deciding", + "unified", + "teenager", + "accepting", + "flagship", + "explorer", + "poles", + "sanchez", + "inspection", + "revived", + "skilled", + "induced", + "exchanged", + "flee", + "locals", + "tragedy", + "swallow", + "loading", + "hanna", + "demonstrate", + "##ela", + "salvador", + "flown", + "contestants", + "civilization", + "##ines", + "wanna", + "rhodes", + "fletcher", + "hector", + "knocking", + "considers", + "##ough", + "nash", + "mechanisms", + "sensed", + "mentally", + "walt", + "unclear", + "##eus", + "renovated", + "madame", + "##cks", + "crews", + "governmental", + "##hin", + "undertaken", + "monkey", + "##ben", + "##ato", + "fatal", + "armored", + "copa", + "caves", + "governance", + "grasp", + "perception", + "certification", + "froze", + "damp", + "tugged", + "wyoming", + "##rg", + "##ero", + "newman", + "##lor", + "nerves", + "curiosity", + "graph", + "115", + "##ami", + "withdraw", + "tunnels", + "dull", + "meredith", + "moss", + "exhibits", + "neighbors", + "communicate", + "accuracy", + "explored", + "raiders", + "republicans", + "secular", + "kat", + "superman", + "penny", + "criticised", + "##tch", + "freed", + "update", + "conviction", + "wade", + "ham", + "likewise", + "delegation", + "gotta", + "doll", + "promises", + "technological", + "myth", + "nationality", + "resolve", + "convent", + "##mark", + "sharon", + "dig", + "sip", + "coordinator", + "entrepreneur", + "fold", + "##dine", + "capability", + "councillor", + "synonym", + "blown", + "swan", + "cursed", + "1815", + "jonas", + "haired", + "sofa", + "canvas", + "keeper", + "rivalry", + "##hart", + "rapper", + "speedway", + "swords", + "postal", + "maxwell", + "estonia", + "potter", + "recurring", + "##nn", + "##ave", + "errors", + "##oni", + "cognitive", + "1834", + "##\u00b2", + "claws", + "nadu", + "roberto", + "bce", + "wrestler", + "ellie", + "##ations", + "infinite", + "ink", + "##tia", + "presumably", + "finite", + "staircase", + "108", + "noel", + "patricia", + "nacional", + "##cation", + "chill", + "eternal", + "tu", + "preventing", + "prussia", + "fossil", + "limbs", + "##logist", + "ernst", + "frog", + "perez", + "rene", + "##ace", + "pizza", + "prussian", + "##ios", + "##vy", + "molecules", + "regulatory", + "answering", + "opinions", + "sworn", + "lengths", + "supposedly", + "hypothesis", + "upward", + "habitats", + "seating", + "ancestors", + "drank", + "yield", + "hd", + "synthesis", + "researcher", + "modest", + "##var", + "mothers", + "peered", + "voluntary", + "homeland", + "##the", + "acclaim", + "##igan", + "static", + "valve", + "luxembourg", + "alto", + "carroll", + "fe", + "receptor", + "norton", + "ambulance", + "##tian", + "johnston", + "catholics", + "depicting", + "jointly", + "elephant", + "gloria", + "mentor", + "badge", + "ahmad", + "distinguish", + "remarked", + "councils", + "precisely", + "allison", + "advancing", + "detection", + "crowded", + "##10", + "cooperative", + "ankle", + "mercedes", + "dagger", + "surrendered", + "pollution", + "commit", + "subway", + "jeffrey", + "lesson", + "sculptures", + "provider", + "##fication", + "membrane", + "timothy", + "rectangular", + "fiscal", + "heating", + "teammate", + "basket", + "particle", + "anonymous", + "deployment", + "##ple", + "missiles", + "courthouse", + "proportion", + "shoe", + "sec", + "##ller", + "complaints", + "forbes", + "blacks", + "abandon", + "remind", + "sizes", + "overwhelming", + "autobiography", + "natalie", + "##awa", + "risks", + "contestant", + "countryside", + "babies", + "scorer", + "invaded", + "enclosed", + "proceed", + "hurling", + "disorders", + "##cu", + "reflecting", + "continuously", + "cruiser", + "graduates", + "freeway", + "investigated", + "ore", + "deserved", + "maid", + "blocking", + "phillip", + "jorge", + "shakes", + "dove", + "mann", + "variables", + "lacked", + "burden", + "accompanying", + "que", + "consistently", + "organizing", + "provisional", + "complained", + "endless", + "##rm", + "tubes", + "juice", + "georges", + "krishna", + "mick", + "labels", + "thriller", + "##uch", + "laps", + "arcade", + "sage", + "snail", + "##table", + "shannon", + "fi", + "laurence", + "seoul", + "vacation", + "presenting", + "hire", + "churchill", + "surprisingly", + "prohibited", + "savannah", + "technically", + "##oli", + "170", + "##lessly", + "testimony", + "suited", + "speeds", + "toys", + "romans", + "mlb", + "flowering", + "measurement", + "talented", + "kay", + "settings", + "charleston", + "expectations", + "shattered", + "achieving", + "triumph", + "ceremonies", + "portsmouth", + "lanes", + "mandatory", + "loser", + "stretching", + "cologne", + "realizes", + "seventy", + "cornell", + "careers", + "webb", + "##ulating", + "americas", + "budapest", + "ava", + "suspicion", + "##ison", + "yo", + "conrad", + "##hai", + "sterling", + "jessie", + "rector", + "##az", + "1831", + "transform", + "organize", + "loans", + "christine", + "volcanic", + "warrant", + "slender", + "summers", + "subfamily", + "newer", + "danced", + "dynamics", + "rhine", + "proceeds", + "heinrich", + "gastropod", + "commands", + "sings", + "facilitate", + "easter", + "ra", + "positioned", + "responses", + "expense", + "fruits", + "yanked", + "imported", + "25th", + "velvet", + "vic", + "primitive", + "tribune", + "baldwin", + "neighbourhood", + "donna", + "rip", + "hay", + "pr", + "##uro", + "1814", + "espn", + "welcomed", + "##aria", + "qualifier", + "glare", + "highland", + "timing", + "##cted", + "shells", + "eased", + "geometry", + "louder", + "exciting", + "slovakia", + "##sion", + "##iz", + "##lot", + "savings", + "prairie", + "##ques", + "marching", + "rafael", + "tonnes", + "##lled", + "curtain", + "preceding", + "shy", + "heal", + "greene", + "worthy", + "##pot", + "detachment", + "bury", + "sherman", + "##eck", + "reinforced", + "seeks", + "bottles", + "contracted", + "duchess", + "outfit", + "walsh", + "##sc", + "mickey", + "##ase", + "geoffrey", + "archer", + "squeeze", + "dawson", + "eliminate", + "invention", + "##enberg", + "neal", + "##eth", + "stance", + "dealer", + "coral", + "maple", + "retire", + "polo", + "simplified", + "##ht", + "1833", + "hid", + "watts", + "backwards", + "jules", + "##oke", + "genesis", + "mt", + "frames", + "rebounds", + "burma", + "woodland", + "moist", + "santos", + "whispers", + "drained", + "subspecies", + "##aa", + "streaming", + "ulster", + "burnt", + "correspondence", + "maternal", + "gerard", + "denis", + "stealing", + "##load", + "genius", + "duchy", + "##oria", + "inaugurated", + "momentum", + "suits", + "placement", + "sovereign", + "clause", + "thames", + "##hara", + "confederation", + "reservation", + "sketch", + "yankees", + "lets", + "rotten", + "charm", + "hal", + "verses", + "ultra", + "commercially", + "dot", + "salon", + "citation", + "adopt", + "winnipeg", + "mist", + "allocated", + "cairo", + "##boy", + "jenkins", + "interference", + "objectives", + "##wind", + "1820", + "portfolio", + "armoured", + "sectors", + "##eh", + "initiatives", + "##world", + "integrity", + "exercises", + "robe", + "tap", + "ab", + "gazed", + "##tones", + "distracted", + "rulers", + "111", + "favorable", + "jerome", + "tended", + "cart", + "factories", + "##eri", + "diplomat", + "valued", + "gravel", + "charitable", + "##try", + "calvin", + "exploring", + "chang", + "shepherd", + "terrace", + "pdf", + "pupil", + "##ural", + "reflects", + "ups", + "##rch", + "governors", + "shelf", + "depths", + "##nberg", + "trailed", + "crest", + "tackle", + "##nian", + "##ats", + "hatred", + "##kai", + "clare", + "makers", + "ethiopia", + "longtime", + "detected", + "embedded", + "lacking", + "slapped", + "rely", + "thomson", + "anticipation", + "iso", + "morton", + "successive", + "agnes", + "screenwriter", + "straightened", + "philippe", + "playwright", + "haunted", + "licence", + "iris", + "intentions", + "sutton", + "112", + "logical", + "correctly", + "##weight", + "branded", + "licked", + "tipped", + "silva", + "ricky", + "narrator", + "requests", + "##ents", + "greeted", + "supernatural", + "cow", + "##wald", + "lung", + "refusing", + "employer", + "strait", + "gaelic", + "liner", + "##piece", + "zoe", + "sabha", + "##mba", + "driveway", + "harvest", + "prints", + "bates", + "reluctantly", + "threshold", + "algebra", + "ira", + "wherever", + "coupled", + "240", + "assumption", + "picks", + "##air", + "designers", + "raids", + "gentlemen", + "##ean", + "roller", + "blowing", + "leipzig", + "locks", + "screw", + "dressing", + "strand", + "##lings", + "scar", + "dwarf", + "depicts", + "##nu", + "nods", + "##mine", + "differ", + "boris", + "##eur", + "yuan", + "flip", + "##gie", + "mob", + "invested", + "questioning", + "applying", + "##ture", + "shout", + "##sel", + "gameplay", + "blamed", + "illustrations", + "bothered", + "weakness", + "rehabilitation", + "##of", + "##zes", + "envelope", + "rumors", + "miners", + "leicester", + "subtle", + "kerry", + "##ico", + "ferguson", + "##fu", + "premiership", + "ne", + "##cat", + "bengali", + "prof", + "catches", + "remnants", + "dana", + "##rily", + "shouting", + "presidents", + "baltic", + "ought", + "ghosts", + "dances", + "sailors", + "shirley", + "fancy", + "dominic", + "##bie", + "madonna", + "##rick", + "bark", + "buttons", + "gymnasium", + "ashes", + "liver", + "toby", + "oath", + "providence", + "doyle", + "evangelical", + "nixon", + "cement", + "carnegie", + "embarked", + "hatch", + "surroundings", + "guarantee", + "needing", + "pirate", + "essence", + "##bee", + "filter", + "crane", + "hammond", + "projected", + "immune", + "percy", + "twelfth", + "##ult", + "regent", + "doctoral", + "damon", + "mikhail", + "##ichi", + "lu", + "critically", + "elect", + "realised", + "abortion", + "acute", + "screening", + "mythology", + "steadily", + "##fc", + "frown", + "nottingham", + "kirk", + "wa", + "minneapolis", + "##rra", + "module", + "algeria", + "mc", + "nautical", + "encounters", + "surprising", + "statues", + "availability", + "shirts", + "pie", + "alma", + "brows", + "munster", + "mack", + "soup", + "crater", + "tornado", + "sanskrit", + "cedar", + "explosive", + "bordered", + "dixon", + "planets", + "stamp", + "exam", + "happily", + "##bble", + "carriers", + "kidnapped", + "##vis", + "accommodation", + "emigrated", + "##met", + "knockout", + "correspondent", + "violation", + "profits", + "peaks", + "lang", + "specimen", + "agenda", + "ancestry", + "pottery", + "spelling", + "equations", + "obtaining", + "ki", + "linking", + "1825", + "debris", + "asylum", + "##20", + "buddhism", + "teddy", + "##ants", + "gazette", + "##nger", + "##sse", + "dental", + "eligibility", + "utc", + "fathers", + "averaged", + "zimbabwe", + "francesco", + "coloured", + "hissed", + "translator", + "lynch", + "mandate", + "humanities", + "mackenzie", + "uniforms", + "lin", + "##iana", + "##gio", + "asset", + "mhz", + "fitting", + "samantha", + "genera", + "wei", + "rim", + "beloved", + "shark", + "riot", + "entities", + "expressions", + "indo", + "carmen", + "slipping", + "owing", + "abbot", + "neighbor", + "sidney", + "##av", + "rats", + "recommendations", + "encouraging", + "squadrons", + "anticipated", + "commanders", + "conquered", + "##oto", + "donations", + "diagnosed", + "##mond", + "divide", + "##iva", + "guessed", + "decoration", + "vernon", + "auditorium", + "revelation", + "conversations", + "##kers", + "##power", + "herzegovina", + "dash", + "alike", + "protested", + "lateral", + "herman", + "accredited", + "mg", + "##gent", + "freeman", + "mel", + "fiji", + "crow", + "crimson", + "##rine", + "livestock", + "##pped", + "humanitarian", + "bored", + "oz", + "whip", + "##lene", + "##ali", + "legitimate", + "alter", + "grinning", + "spelled", + "anxious", + "oriental", + "wesley", + "##nin", + "##hole", + "carnival", + "controller", + "detect", + "##ssa", + "bowed", + "educator", + "kosovo", + "macedonia", + "##sin", + "occupy", + "mastering", + "stephanie", + "janeiro", + "para", + "unaware", + "nurses", + "noon", + "135", + "cam", + "hopefully", + "ranger", + "combine", + "sociology", + "polar", + "rica", + "##eer", + "neill", + "##sman", + "holocaust", + "##ip", + "doubled", + "lust", + "1828", + "109", + "decent", + "cooling", + "unveiled", + "##card", + "1829", + "nsw", + "homer", + "chapman", + "meyer", + "##gin", + "dive", + "mae", + "reagan", + "expertise", + "##gled", + "darwin", + "brooke", + "sided", + "prosecution", + "investigating", + "comprised", + "petroleum", + "genres", + "reluctant", + "differently", + "trilogy", + "johns", + "vegetables", + "corpse", + "highlighted", + "lounge", + "pension", + "unsuccessfully", + "elegant", + "aided", + "ivory", + "beatles", + "amelia", + "cain", + "dubai", + "sunny", + "immigrant", + "babe", + "click", + "##nder", + "underwater", + "pepper", + "combining", + "mumbled", + "atlas", + "horns", + "accessed", + "ballad", + "physicians", + "homeless", + "gestured", + "rpm", + "freak", + "louisville", + "corporations", + "patriots", + "prizes", + "rational", + "warn", + "modes", + "decorative", + "overnight", + "din", + "troubled", + "phantom", + "##ort", + "monarch", + "sheer", + "##dorf", + "generals", + "guidelines", + "organs", + "addresses", + "##zon", + "enhance", + "curling", + "parishes", + "cord", + "##kie", + "linux", + "caesar", + "deutsche", + "bavaria", + "##bia", + "coleman", + "cyclone", + "##eria", + "bacon", + "petty", + "##yama", + "##old", + "hampton", + "diagnosis", + "1824", + "throws", + "complexity", + "rita", + "disputed", + "##\u2083", + "pablo", + "##sch", + "marketed", + "trafficking", + "##ulus", + "examine", + "plague", + "formats", + "##oh", + "vault", + "faithful", + "##bourne", + "webster", + "##ox", + "highlights", + "##ient", + "##ann", + "phones", + "vacuum", + "sandwich", + "modeling", + "##gated", + "bolivia", + "clergy", + "qualities", + "isabel", + "##nas", + "##ars", + "wears", + "screams", + "reunited", + "annoyed", + "bra", + "##ancy", + "##rate", + "differential", + "transmitter", + "tattoo", + "container", + "poker", + "##och", + "excessive", + "resides", + "cowboys", + "##tum", + "augustus", + "trash", + "providers", + "statute", + "retreated", + "balcony", + "reversed", + "void", + "storey", + "preceded", + "masses", + "leap", + "laughs", + "neighborhoods", + "wards", + "schemes", + "falcon", + "santo", + "battlefield", + "pad", + "ronnie", + "thread", + "lesbian", + "venus", + "##dian", + "beg", + "sandstone", + "daylight", + "punched", + "gwen", + "analog", + "stroked", + "wwe", + "acceptable", + "measurements", + "dec", + "toxic", + "##kel", + "adequate", + "surgical", + "economist", + "parameters", + "varsity", + "##sberg", + "quantity", + "ella", + "##chy", + "##rton", + "countess", + "generating", + "precision", + "diamonds", + "expressway", + "ga", + "##\u0131", + "1821", + "uruguay", + "talents", + "galleries", + "expenses", + "scanned", + "colleague", + "outlets", + "ryder", + "lucien", + "##ila", + "paramount", + "##bon", + "syracuse", + "dim", + "fangs", + "gown", + "sweep", + "##sie", + "toyota", + "missionaries", + "websites", + "##nsis", + "sentences", + "adviser", + "val", + "trademark", + "spells", + "##plane", + "patience", + "starter", + "slim", + "##borg", + "toe", + "incredibly", + "shoots", + "elliot", + "nobility", + "##wyn", + "cowboy", + "endorsed", + "gardner", + "tendency", + "persuaded", + "organisms", + "emissions", + "kazakhstan", + "amused", + "boring", + "chips", + "themed", + "##hand", + "llc", + "constantinople", + "chasing", + "systematic", + "guatemala", + "borrowed", + "erin", + "carey", + "##hard", + "highlands", + "struggles", + "1810", + "##ifying", + "##ced", + "wong", + "exceptions", + "develops", + "enlarged", + "kindergarten", + "castro", + "##ern", + "##rina", + "leigh", + "zombie", + "juvenile", + "##most", + "consul", + "##nar", + "sailor", + "hyde", + "clarence", + "intensive", + "pinned", + "nasty", + "useless", + "jung", + "clayton", + "stuffed", + "exceptional", + "ix", + "apostolic", + "230", + "transactions", + "##dge", + "exempt", + "swinging", + "cove", + "religions", + "##ash", + "shields", + "dairy", + "bypass", + "190", + "pursuing", + "bug", + "joyce", + "bombay", + "chassis", + "southampton", + "chat", + "interact", + "redesignated", + "##pen", + "nascar", + "pray", + "salmon", + "rigid", + "regained", + "malaysian", + "grim", + "publicity", + "constituted", + "capturing", + "toilet", + "delegate", + "purely", + "tray", + "drift", + "loosely", + "striker", + "weakened", + "trinidad", + "mitch", + "itv", + "defines", + "transmitted", + "ming", + "scarlet", + "nodding", + "fitzgerald", + "fu", + "narrowly", + "sp", + "tooth", + "standings", + "virtue", + "##\u2081", + "##wara", + "##cting", + "chateau", + "gloves", + "lid", + "##nel", + "hurting", + "conservatory", + "##pel", + "sinclair", + "reopened", + "sympathy", + "nigerian", + "strode", + "advocated", + "optional", + "chronic", + "discharge", + "##rc", + "suck", + "compatible", + "laurel", + "stella", + "shi", + "fails", + "wage", + "dodge", + "128", + "informal", + "sorts", + "levi", + "buddha", + "villagers", + "##aka", + "chronicles", + "heavier", + "summoned", + "gateway", + "3000", + "eleventh", + "jewelry", + "translations", + "accordingly", + "seas", + "##ency", + "fiber", + "pyramid", + "cubic", + "dragging", + "##ista", + "caring", + "##ops", + "android", + "contacted", + "lunar", + "##dt", + "kai", + "lisbon", + "patted", + "1826", + "sacramento", + "theft", + "madagascar", + "subtropical", + "disputes", + "ta", + "holidays", + "piper", + "willow", + "mare", + "cane", + "itunes", + "newfoundland", + "benny", + "companions", + "dong", + "raj", + "observe", + "roar", + "charming", + "plaque", + "tibetan", + "fossils", + "enacted", + "manning", + "bubble", + "tina", + "tanzania", + "##eda", + "##hir", + "funk", + "swamp", + "deputies", + "cloak", + "ufc", + "scenario", + "par", + "scratch", + "metals", + "anthem", + "guru", + "engaging", + "specially", + "##boat", + "dialects", + "nineteen", + "cecil", + "duet", + "disability", + "messenger", + "unofficial", + "##lies", + "defunct", + "eds", + "moonlight", + "drainage", + "surname", + "puzzle", + "honda", + "switching", + "conservatives", + "mammals", + "knox", + "broadcaster", + "sidewalk", + "cope", + "##ried", + "benson", + "princes", + "peterson", + "##sal", + "bedford", + "sharks", + "eli", + "wreck", + "alberto", + "gasp", + "archaeology", + "lgbt", + "teaches", + "securities", + "madness", + "compromise", + "waving", + "coordination", + "davidson", + "visions", + "leased", + "possibilities", + "eighty", + "jun", + "fernandez", + "enthusiasm", + "assassin", + "sponsorship", + "reviewer", + "kingdoms", + "estonian", + "laboratories", + "##fy", + "##nal", + "applies", + "verb", + "celebrations", + "##zzo", + "rowing", + "lightweight", + "sadness", + "submit", + "mvp", + "balanced", + "dude", + "##vas", + "explicitly", + "metric", + "magnificent", + "mound", + "brett", + "mohammad", + "mistakes", + "irregular", + "##hing", + "##ass", + "sanders", + "betrayed", + "shipped", + "surge", + "##enburg", + "reporters", + "termed", + "georg", + "pity", + "verbal", + "bulls", + "abbreviated", + "enabling", + "appealed", + "##are", + "##atic", + "sicily", + "sting", + "heel", + "sweetheart", + "bart", + "spacecraft", + "brutal", + "monarchy", + "##tter", + "aberdeen", + "cameo", + "diane", + "##ub", + "survivor", + "clyde", + "##aries", + "complaint", + "##makers", + "clarinet", + "delicious", + "chilean", + "karnataka", + "coordinates", + "1818", + "panties", + "##rst", + "pretending", + "ar", + "dramatically", + "kiev", + "bella", + "tends", + "distances", + "113", + "catalog", + "launching", + "instances", + "telecommunications", + "portable", + "lindsay", + "vatican", + "##eim", + "angles", + "aliens", + "marker", + "stint", + "screens", + "bolton", + "##rne", + "judy", + "wool", + "benedict", + "plasma", + "europa", + "spark", + "imaging", + "filmmaker", + "swiftly", + "##een", + "contributor", + "##nor", + "opted", + "stamps", + "apologize", + "financing", + "butter", + "gideon", + "sophisticated", + "alignment", + "avery", + "chemicals", + "yearly", + "speculation", + "prominence", + "professionally", + "##ils", + "immortal", + "institutional", + "inception", + "wrists", + "identifying", + "tribunal", + "derives", + "gains", + "##wo", + "papal", + "preference", + "linguistic", + "vince", + "operative", + "brewery", + "##ont", + "unemployment", + "boyd", + "##ured", + "##outs", + "albeit", + "prophet", + "1813", + "bi", + "##rr", + "##face", + "##rad", + "quarterly", + "asteroid", + "cleaned", + "radius", + "temper", + "##llen", + "telugu", + "jerk", + "viscount", + "menu", + "##ote", + "glimpse", + "##aya", + "yacht", + "hawaiian", + "baden", + "##rl", + "laptop", + "readily", + "##gu", + "monetary", + "offshore", + "scots", + "watches", + "##yang", + "##arian", + "upgrade", + "needle", + "xbox", + "lea", + "encyclopedia", + "flank", + "fingertips", + "##pus", + "delight", + "teachings", + "confirm", + "roth", + "beaches", + "midway", + "winters", + "##iah", + "teasing", + "daytime", + "beverly", + "gambling", + "bonnie", + "##backs", + "regulated", + "clement", + "hermann", + "tricks", + "knot", + "##shing", + "##uring", + "##vre", + "detached", + "ecological", + "owed", + "specialty", + "byron", + "inventor", + "bats", + "stays", + "screened", + "unesco", + "midland", + "trim", + "affection", + "##ander", + "##rry", + "jess", + "thoroughly", + "feedback", + "##uma", + "chennai", + "strained", + "heartbeat", + "wrapping", + "overtime", + "pleaded", + "##sworth", + "mon", + "leisure", + "oclc", + "##tate", + "##ele", + "feathers", + "angelo", + "thirds", + "nuts", + "surveys", + "clever", + "gill", + "commentator", + "##dos", + "darren", + "rides", + "gibraltar", + "##nc", + "##mu", + "dissolution", + "dedication", + "shin", + "meals", + "saddle", + "elvis", + "reds", + "chaired", + "taller", + "appreciation", + "functioning", + "niece", + "favored", + "advocacy", + "robbie", + "criminals", + "suffolk", + "yugoslav", + "passport", + "constable", + "congressman", + "hastings", + "vera", + "##rov", + "consecrated", + "sparks", + "ecclesiastical", + "confined", + "##ovich", + "muller", + "floyd", + "nora", + "1822", + "paved", + "1827", + "cumberland", + "ned", + "saga", + "spiral", + "##flow", + "appreciated", + "yi", + "collaborative", + "treating", + "similarities", + "feminine", + "finishes", + "##ib", + "jade", + "import", + "##nse", + "##hot", + "champagne", + "mice", + "securing", + "celebrities", + "helsinki", + "attributes", + "##gos", + "cousins", + "phases", + "ache", + "lucia", + "gandhi", + "submission", + "vicar", + "spear", + "shine", + "tasmania", + "biting", + "detention", + "constitute", + "tighter", + "seasonal", + "##gus", + "terrestrial", + "matthews", + "##oka", + "effectiveness", + "parody", + "philharmonic", + "##onic", + "1816", + "strangers", + "encoded", + "consortium", + "guaranteed", + "regards", + "shifts", + "tortured", + "collision", + "supervisor", + "inform", + "broader", + "insight", + "theaters", + "armour", + "emeritus", + "blink", + "incorporates", + "mapping", + "##50", + "##ein", + "handball", + "flexible", + "##nta", + "substantially", + "generous", + "thief", + "##own", + "carr", + "loses", + "1793", + "prose", + "ucla", + "romeo", + "generic", + "metallic", + "realization", + "damages", + "mk", + "commissioners", + "zach", + "default", + "##ther", + "helicopters", + "lengthy", + "stems", + "spa", + "partnered", + "spectators", + "rogue", + "indication", + "penalties", + "teresa", + "1801", + "sen", + "##tric", + "dalton", + "##wich", + "irving", + "photographic", + "##vey", + "dell", + "deaf", + "peters", + "excluded", + "unsure", + "##vable", + "patterson", + "crawled", + "##zio", + "resided", + "whipped", + "latvia", + "slower", + "ecole", + "pipes", + "employers", + "maharashtra", + "comparable", + "va", + "textile", + "pageant", + "##gel", + "alphabet", + "binary", + "irrigation", + "chartered", + "choked", + "antoine", + "offs", + "waking", + "supplement", + "##wen", + "quantities", + "demolition", + "regain", + "locate", + "urdu", + "folks", + "alt", + "114", + "##mc", + "scary", + "andreas", + "whites", + "##ava", + "classrooms", + "mw", + "aesthetic", + "publishes", + "valleys", + "guides", + "cubs", + "johannes", + "bryant", + "conventions", + "affecting", + "##itt", + "drain", + "awesome", + "isolation", + "prosecutor", + "ambitious", + "apology", + "captive", + "downs", + "atmospheric", + "lorenzo", + "aisle", + "beef", + "foul", + "##onia", + "kidding", + "composite", + "disturbed", + "illusion", + "natives", + "##ffer", + "emi", + "rockets", + "riverside", + "wartime", + "painters", + "adolf", + "melted", + "##ail", + "uncertainty", + "simulation", + "hawks", + "progressed", + "meantime", + "builder", + "spray", + "breach", + "unhappy", + "regina", + "russians", + "##urg", + "determining", + "##tation", + "tram", + "1806", + "##quin", + "aging", + "##12", + "1823", + "garion", + "rented", + "mister", + "diaz", + "terminated", + "clip", + "1817", + "depend", + "nervously", + "disco", + "owe", + "defenders", + "shiva", + "notorious", + "disbelief", + "shiny", + "worcester", + "##gation", + "##yr", + "trailing", + "undertook", + "islander", + "belarus", + "limitations", + "watershed", + "fuller", + "overlooking", + "utilized", + "raphael", + "1819", + "synthetic", + "breakdown", + "klein", + "##nate", + "moaned", + "memoir", + "lamb", + "practicing", + "##erly", + "cellular", + "arrows", + "exotic", + "##graphy", + "witches", + "117", + "charted", + "rey", + "hut", + "hierarchy", + "subdivision", + "freshwater", + "giuseppe", + "aloud", + "reyes", + "qatar", + "marty", + "sideways", + "utterly", + "sexually", + "jude", + "prayers", + "mccarthy", + "softball", + "blend", + "damien", + "##gging", + "##metric", + "wholly", + "erupted", + "lebanese", + "negro", + "revenues", + "tasted", + "comparative", + "teamed", + "transaction", + "labeled", + "maori", + "sovereignty", + "parkway", + "trauma", + "gran", + "malay", + "121", + "advancement", + "descendant", + "2020", + "buzz", + "salvation", + "inventory", + "symbolic", + "##making", + "antarctica", + "mps", + "##gas", + "##bro", + "mohammed", + "myanmar", + "holt", + "submarines", + "tones", + "##lman", + "locker", + "patriarch", + "bangkok", + "emerson", + "remarks", + "predators", + "kin", + "afghan", + "confession", + "norwich", + "rental", + "emerge", + "advantages", + "##zel", + "rca", + "##hold", + "shortened", + "storms", + "aidan", + "##matic", + "autonomy", + "compliance", + "##quet", + "dudley", + "atp", + "##osis", + "1803", + "motto", + "documentation", + "summary", + "professors", + "spectacular", + "christina", + "archdiocese", + "flashing", + "innocence", + "remake", + "##dell", + "psychic", + "reef", + "scare", + "employ", + "rs", + "sticks", + "meg", + "gus", + "leans", + "##ude", + "accompany", + "bergen", + "tomas", + "##iko", + "doom", + "wages", + "pools", + "##nch", + "##bes", + "breasts", + "scholarly", + "alison", + "outline", + "brittany", + "breakthrough", + "willis", + "realistic", + "##cut", + "##boro", + "competitor", + "##stan", + "pike", + "picnic", + "icon", + "designing", + "commercials", + "washing", + "villain", + "skiing", + "micro", + "costumes", + "auburn", + "halted", + "executives", + "##hat", + "logistics", + "cycles", + "vowel", + "applicable", + "barrett", + "exclaimed", + "eurovision", + "eternity", + "ramon", + "##umi", + "##lls", + "modifications", + "sweeping", + "disgust", + "##uck", + "torch", + "aviv", + "ensuring", + "rude", + "dusty", + "sonic", + "donovan", + "outskirts", + "cu", + "pathway", + "##band", + "##gun", + "##lines", + "disciplines", + "acids", + "cadet", + "paired", + "##40", + "sketches", + "##sive", + "marriages", + "##\u207a", + "folding", + "peers", + "slovak", + "implies", + "admired", + "##beck", + "1880s", + "leopold", + "instinct", + "attained", + "weston", + "megan", + "horace", + "##ination", + "dorsal", + "ingredients", + "evolutionary", + "##its", + "complications", + "deity", + "lethal", + "brushing", + "levy", + "deserted", + "institutes", + "posthumously", + "delivering", + "telescope", + "coronation", + "motivated", + "rapids", + "luc", + "flicked", + "pays", + "volcano", + "tanner", + "weighed", + "##nica", + "crowds", + "frankie", + "gifted", + "addressing", + "granddaughter", + "winding", + "##rna", + "constantine", + "gomez", + "##front", + "landscapes", + "rudolf", + "anthropology", + "slate", + "werewolf", + "##lio", + "astronomy", + "circa", + "rouge", + "dreaming", + "sack", + "knelt", + "drowned", + "naomi", + "prolific", + "tracked", + "freezing", + "herb", + "##dium", + "agony", + "randall", + "twisting", + "wendy", + "deposit", + "touches", + "vein", + "wheeler", + "##bbled", + "##bor", + "batted", + "retaining", + "tire", + "presently", + "compare", + "specification", + "daemon", + "nigel", + "##grave", + "merry", + "recommendation", + "czechoslovakia", + "sandra", + "ng", + "roma", + "##sts", + "lambert", + "inheritance", + "sheikh", + "winchester", + "cries", + "examining", + "##yle", + "comeback", + "cuisine", + "nave", + "##iv", + "ko", + "retrieve", + "tomatoes", + "barker", + "polished", + "defining", + "irene", + "lantern", + "personalities", + "begging", + "tract", + "swore", + "1809", + "175", + "##gic", + "omaha", + "brotherhood", + "##rley", + "haiti", + "##ots", + "exeter", + "##ete", + "##zia", + "steele", + "dumb", + "pearson", + "210", + "surveyed", + "elisabeth", + "trends", + "##ef", + "fritz", + "##rf", + "premium", + "bugs", + "fraction", + "calmly", + "viking", + "##birds", + "tug", + "inserted", + "unusually", + "##ield", + "confronted", + "distress", + "crashing", + "brent", + "turks", + "resign", + "##olo", + "cambodia", + "gabe", + "sauce", + "##kal", + "evelyn", + "116", + "extant", + "clusters", + "quarry", + "teenagers", + "luna", + "##lers", + "##ister", + "affiliation", + "drill", + "##ashi", + "panthers", + "scenic", + "libya", + "anita", + "strengthen", + "inscriptions", + "##cated", + "lace", + "sued", + "judith", + "riots", + "##uted", + "mint", + "##eta", + "preparations", + "midst", + "dub", + "challenger", + "##vich", + "mock", + "cf", + "displaced", + "wicket", + "breaths", + "enables", + "schmidt", + "analyst", + "##lum", + "ag", + "highlight", + "automotive", + "axe", + "josef", + "newark", + "sufficiently", + "resembles", + "50th", + "##pal", + "flushed", + "mum", + "traits", + "##ante", + "commodore", + "incomplete", + "warming", + "titular", + "ceremonial", + "ethical", + "118", + "celebrating", + "eighteenth", + "cao", + "lima", + "medalist", + "mobility", + "strips", + "snakes", + "##city", + "miniature", + "zagreb", + "barton", + "escapes", + "umbrella", + "automated", + "doubted", + "differs", + "cooled", + "georgetown", + "dresden", + "cooked", + "fade", + "wyatt", + "rna", + "jacobs", + "carlton", + "abundant", + "stereo", + "boost", + "madras", + "inning", + "##hia", + "spur", + "ip", + "malayalam", + "begged", + "osaka", + "groan", + "escaping", + "charging", + "dose", + "vista", + "##aj", + "bud", + "papa", + "communists", + "advocates", + "edged", + "tri", + "##cent", + "resemble", + "peaking", + "necklace", + "fried", + "montenegro", + "saxony", + "goose", + "glances", + "stuttgart", + "curator", + "recruit", + "grocery", + "sympathetic", + "##tting", + "##fort", + "127", + "lotus", + "randolph", + "ancestor", + "##rand", + "succeeding", + "jupiter", + "1798", + "macedonian", + "##heads", + "hiking", + "1808", + "handing", + "fischer", + "##itive", + "garbage", + "node", + "##pies", + "prone", + "singular", + "papua", + "inclined", + "attractions", + "italia", + "pouring", + "motioned", + "grandma", + "garnered", + "jacksonville", + "corp", + "ego", + "ringing", + "aluminum", + "##hausen", + "ordering", + "##foot", + "drawer", + "traders", + "synagogue", + "##play", + "##kawa", + "resistant", + "wandering", + "fragile", + "fiona", + "teased", + "var", + "hardcore", + "soaked", + "jubilee", + "decisive", + "exposition", + "mercer", + "poster", + "valencia", + "hale", + "kuwait", + "1811", + "##ises", + "##wr", + "##eed", + "tavern", + "gamma", + "122", + "johan", + "##uer", + "airways", + "amino", + "gil", + "##ury", + "vocational", + "domains", + "torres", + "##sp", + "generator", + "folklore", + "outcomes", + "##keeper", + "canberra", + "shooter", + "fl", + "beams", + "confrontation", + "##lling", + "##gram", + "feb", + "aligned", + "forestry", + "pipeline", + "jax", + "motorway", + "conception", + "decay", + "##tos", + "coffin", + "##cott", + "stalin", + "1805", + "escorted", + "minded", + "##nam", + "sitcom", + "purchasing", + "twilight", + "veronica", + "additions", + "passive", + "tensions", + "straw", + "123", + "frequencies", + "1804", + "refugee", + "cultivation", + "##iate", + "christie", + "clary", + "bulletin", + "crept", + "disposal", + "##rich", + "##zong", + "processor", + "crescent", + "##rol", + "bmw", + "emphasized", + "whale", + "nazis", + "aurora", + "##eng", + "dwelling", + "hauled", + "sponsors", + "toledo", + "mega", + "ideology", + "theatres", + "tessa", + "cerambycidae", + "saves", + "turtle", + "cone", + "suspects", + "kara", + "rusty", + "yelling", + "greeks", + "mozart", + "shades", + "cocked", + "participant", + "##tro", + "shire", + "spit", + "freeze", + "necessity", + "##cos", + "inmates", + "nielsen", + "councillors", + "loaned", + "uncommon", + "omar", + "peasants", + "botanical", + "offspring", + "daniels", + "formations", + "jokes", + "1794", + "pioneers", + "sigma", + "licensing", + "##sus", + "wheelchair", + "polite", + "1807", + "liquor", + "pratt", + "trustee", + "##uta", + "forewings", + "balloon", + "##zz", + "kilometre", + "camping", + "explicit", + "casually", + "shawn", + "foolish", + "teammates", + "nm", + "hassan", + "carrie", + "judged", + "satisfy", + "vanessa", + "knives", + "selective", + "cnn", + "flowed", + "##lice", + "eclipse", + "stressed", + "eliza", + "mathematician", + "cease", + "cultivated", + "##roy", + "commissions", + "browns", + "##ania", + "destroyers", + "sheridan", + "meadow", + "##rius", + "minerals", + "##cial", + "downstream", + "clash", + "gram", + "memoirs", + "ventures", + "baha", + "seymour", + "archie", + "midlands", + "edith", + "fare", + "flynn", + "invite", + "canceled", + "tiles", + "stabbed", + "boulder", + "incorporate", + "amended", + "camden", + "facial", + "mollusk", + "unreleased", + "descriptions", + "yoga", + "grabs", + "550", + "raises", + "ramp", + "shiver", + "##rose", + "coined", + "pioneering", + "tunes", + "qing", + "warwick", + "tops", + "119", + "melanie", + "giles", + "##rous", + "wandered", + "##inal", + "annexed", + "nov", + "30th", + "unnamed", + "##ished", + "organizational", + "airplane", + "normandy", + "stoke", + "whistle", + "blessing", + "violations", + "chased", + "holders", + "shotgun", + "##ctic", + "outlet", + "reactor", + "##vik", + "tires", + "tearing", + "shores", + "fortified", + "mascot", + "constituencies", + "nc", + "columnist", + "productive", + "tibet", + "##rta", + "lineage", + "hooked", + "oct", + "tapes", + "judging", + "cody", + "##gger", + "hansen", + "kashmir", + "triggered", + "##eva", + "solved", + "cliffs", + "##tree", + "resisted", + "anatomy", + "protesters", + "transparent", + "implied", + "##iga", + "injection", + "mattress", + "excluding", + "##mbo", + "defenses", + "helpless", + "devotion", + "##elli", + "growl", + "liberals", + "weber", + "phenomena", + "atoms", + "plug", + "##iff", + "mortality", + "apprentice", + "howe", + "convincing", + "aaa", + "swimmer", + "barber", + "leone", + "promptly", + "sodium", + "def", + "nowadays", + "arise", + "##oning", + "gloucester", + "corrected", + "dignity", + "norm", + "erie", + "##ders", + "elders", + "evacuated", + "sylvia", + "compression", + "##yar", + "hartford", + "pose", + "backpack", + "reasoning", + "accepts", + "24th", + "wipe", + "millimetres", + "marcel", + "##oda", + "dodgers", + "albion", + "1790", + "overwhelmed", + "aerospace", + "oaks", + "1795", + "showcase", + "acknowledge", + "recovering", + "nolan", + "ashe", + "hurts", + "geology", + "fashioned", + "disappearance", + "farewell", + "swollen", + "shrug", + "marquis", + "wimbledon", + "124", + "rue", + "1792", + "commemorate", + "reduces", + "experiencing", + "inevitable", + "calcutta", + "intel", + "##court", + "murderer", + "sticking", + "fisheries", + "imagery", + "bloom", + "280", + "brake", + "##inus", + "gustav", + "hesitation", + "memorable", + "po", + "viral", + "beans", + "accidents", + "tunisia", + "antenna", + "spilled", + "consort", + "treatments", + "aye", + "perimeter", + "##gard", + "donation", + "hostage", + "migrated", + "banker", + "addiction", + "apex", + "lil", + "trout", + "##ously", + "conscience", + "##nova", + "rams", + "sands", + "genome", + "passionate", + "troubles", + "##lets", + "##set", + "amid", + "##ibility", + "##ret", + "higgins", + "exceed", + "vikings", + "##vie", + "payne", + "##zan", + "muscular", + "##ste", + "defendant", + "sucking", + "##wal", + "ibrahim", + "fuselage", + "claudia", + "vfl", + "europeans", + "snails", + "interval", + "##garh", + "preparatory", + "statewide", + "tasked", + "lacrosse", + "viktor", + "##lation", + "angola", + "##hra", + "flint", + "implications", + "employs", + "teens", + "patrons", + "stall", + "weekends", + "barriers", + "scrambled", + "nucleus", + "tehran", + "jenna", + "parsons", + "lifelong", + "robots", + "displacement", + "5000", + "##bles", + "precipitation", + "##gt", + "knuckles", + "clutched", + "1802", + "marrying", + "ecology", + "marx", + "accusations", + "declare", + "scars", + "kolkata", + "mat", + "meadows", + "bermuda", + "skeleton", + "finalists", + "vintage", + "crawl", + "coordinate", + "affects", + "subjected", + "orchestral", + "mistaken", + "##tc", + "mirrors", + "dipped", + "relied", + "260", + "arches", + "candle", + "##nick", + "incorporating", + "wildly", + "fond", + "basilica", + "owl", + "fringe", + "rituals", + "whispering", + "stirred", + "feud", + "tertiary", + "slick", + "goat", + "honorable", + "whereby", + "skip", + "ricardo", + "stripes", + "parachute", + "adjoining", + "submerged", + "synthesizer", + "##gren", + "intend", + "positively", + "ninety", + "phi", + "beaver", + "partition", + "fellows", + "alexis", + "prohibition", + "carlisle", + "bizarre", + "fraternity", + "##bre", + "doubts", + "icy", + "cbc", + "aquatic", + "sneak", + "sonny", + "combines", + "airports", + "crude", + "supervised", + "spatial", + "merge", + "alfonso", + "##bic", + "corrupt", + "scan", + "undergo", + "##ams", + "disabilities", + "colombian", + "comparing", + "dolphins", + "perkins", + "##lish", + "reprinted", + "unanimous", + "bounced", + "hairs", + "underworld", + "midwest", + "semester", + "bucket", + "paperback", + "miniseries", + "coventry", + "demise", + "##leigh", + "demonstrations", + "sensor", + "rotating", + "yan", + "##hler", + "arrange", + "soils", + "##idge", + "hyderabad", + "labs", + "##dr", + "brakes", + "grandchildren", + "##nde", + "negotiated", + "rover", + "ferrari", + "continuation", + "directorate", + "augusta", + "stevenson", + "counterpart", + "gore", + "##rda", + "nursery", + "rican", + "ave", + "collectively", + "broadly", + "pastoral", + "repertoire", + "asserted", + "discovering", + "nordic", + "styled", + "fiba", + "cunningham", + "harley", + "middlesex", + "survives", + "tumor", + "tempo", + "zack", + "aiming", + "lok", + "urgent", + "##rade", + "##nto", + "devils", + "##ement", + "contractor", + "turin", + "##wl", + "##ool", + "bliss", + "repaired", + "simmons", + "moan", + "astronomical", + "cr", + "negotiate", + "lyric", + "1890s", + "lara", + "bred", + "clad", + "angus", + "pbs", + "##ience", + "engineered", + "posed", + "##lk", + "hernandez", + "possessions", + "elbows", + "psychiatric", + "strokes", + "confluence", + "electorate", + "lifts", + "campuses", + "lava", + "alps", + "##ep", + "##ution", + "##date", + "physicist", + "woody", + "##page", + "##ographic", + "##itis", + "juliet", + "reformation", + "sparhawk", + "320", + "complement", + "suppressed", + "jewel", + "##\u00bd", + "floated", + "##kas", + "continuity", + "sadly", + "##ische", + "inability", + "melting", + "scanning", + "paula", + "flour", + "judaism", + "safer", + "vague", + "##lm", + "solving", + "curb", + "##stown", + "financially", + "gable", + "bees", + "expired", + "miserable", + "cassidy", + "dominion", + "1789", + "cupped", + "145", + "robbery", + "facto", + "amos", + "warden", + "resume", + "tallest", + "marvin", + "ing", + "pounded", + "usd", + "declaring", + "gasoline", + "##aux", + "darkened", + "270", + "650", + "sophomore", + "##mere", + "erection", + "gossip", + "televised", + "risen", + "dial", + "##eu", + "pillars", + "##link", + "passages", + "profound", + "##tina", + "arabian", + "ashton", + "silicon", + "nail", + "##ead", + "##lated", + "##wer", + "##hardt", + "fleming", + "firearms", + "ducked", + "circuits", + "blows", + "waterloo", + "titans", + "##lina", + "atom", + "fireplace", + "cheshire", + "financed", + "activation", + "algorithms", + "##zzi", + "constituent", + "catcher", + "cherokee", + "partnerships", + "sexuality", + "platoon", + "tragic", + "vivian", + "guarded", + "whiskey", + "meditation", + "poetic", + "##late", + "##nga", + "##ake", + "porto", + "listeners", + "dominance", + "kendra", + "mona", + "chandler", + "factions", + "22nd", + "salisbury", + "attitudes", + "derivative", + "##ido", + "##haus", + "intake", + "paced", + "javier", + "illustrator", + "barrels", + "bias", + "cockpit", + "burnett", + "dreamed", + "ensuing", + "##anda", + "receptors", + "someday", + "hawkins", + "mattered", + "##lal", + "slavic", + "1799", + "jesuit", + "cameroon", + "wasted", + "tai", + "wax", + "lowering", + "victorious", + "freaking", + "outright", + "hancock", + "librarian", + "sensing", + "bald", + "calcium", + "myers", + "tablet", + "announcing", + "barack", + "shipyard", + "pharmaceutical", + "##uan", + "greenwich", + "flush", + "medley", + "patches", + "wolfgang", + "pt", + "speeches", + "acquiring", + "exams", + "nikolai", + "##gg", + "hayden", + "kannada", + "##type", + "reilly", + "##pt", + "waitress", + "abdomen", + "devastated", + "capped", + "pseudonym", + "pharmacy", + "fulfill", + "paraguay", + "1796", + "clicked", + "##trom", + "archipelago", + "syndicated", + "##hman", + "lumber", + "orgasm", + "rejection", + "clifford", + "lorraine", + "advent", + "mafia", + "rodney", + "brock", + "##ght", + "##used", + "##elia", + "cassette", + "chamberlain", + "despair", + "mongolia", + "sensors", + "developmental", + "upstream", + "##eg", + "##alis", + "spanning", + "165", + "trombone", + "basque", + "seeded", + "interred", + "renewable", + "rhys", + "leapt", + "revision", + "molecule", + "##ages", + "chord", + "vicious", + "nord", + "shivered", + "23rd", + "arlington", + "debts", + "corpus", + "sunrise", + "bays", + "blackburn", + "centimetres", + "##uded", + "shuddered", + "gm", + "strangely", + "gripping", + "cartoons", + "isabelle", + "orbital", + "##ppa", + "seals", + "proving", + "##lton", + "refusal", + "strengthened", + "bust", + "assisting", + "baghdad", + "batsman", + "portrayal", + "mara", + "pushes", + "spears", + "og", + "##cock", + "reside", + "nathaniel", + "brennan", + "1776", + "confirmation", + "caucus", + "##worthy", + "markings", + "yemen", + "nobles", + "ku", + "lazy", + "viewer", + "catalan", + "encompasses", + "sawyer", + "##fall", + "sparked", + "substances", + "patents", + "braves", + "arranger", + "evacuation", + "sergio", + "persuade", + "dover", + "tolerance", + "penguin", + "cum", + "jockey", + "insufficient", + "townships", + "occupying", + "declining", + "plural", + "processed", + "projection", + "puppet", + "flanders", + "introduces", + "liability", + "##yon", + "gymnastics", + "antwerp", + "taipei", + "hobart", + "candles", + "jeep", + "wes", + "observers", + "126", + "chaplain", + "bundle", + "glorious", + "##hine", + "hazel", + "flung", + "sol", + "excavations", + "dumped", + "stares", + "sh", + "bangalore", + "triangular", + "icelandic", + "intervals", + "expressing", + "turbine", + "##vers", + "songwriting", + "crafts", + "##igo", + "jasmine", + "ditch", + "rite", + "##ways", + "entertaining", + "comply", + "sorrow", + "wrestlers", + "basel", + "emirates", + "marian", + "rivera", + "helpful", + "##some", + "caution", + "downward", + "networking", + "##atory", + "##tered", + "darted", + "genocide", + "emergence", + "replies", + "specializing", + "spokesman", + "convenient", + "unlocked", + "fading", + "augustine", + "concentrations", + "resemblance", + "elijah", + "investigator", + "andhra", + "##uda", + "promotes", + "bean", + "##rrell", + "fleeing", + "wan", + "simone", + "announcer", + "##ame", + "##bby", + "lydia", + "weaver", + "132", + "residency", + "modification", + "##fest", + "stretches", + "##ast", + "alternatively", + "nat", + "lowe", + "lacks", + "##ented", + "pam", + "tile", + "concealed", + "inferior", + "abdullah", + "residences", + "tissues", + "vengeance", + "##ided", + "moisture", + "peculiar", + "groove", + "zip", + "bologna", + "jennings", + "ninja", + "oversaw", + "zombies", + "pumping", + "batch", + "livingston", + "emerald", + "installations", + "1797", + "peel", + "nitrogen", + "rama", + "##fying", + "##star", + "schooling", + "strands", + "responding", + "werner", + "##ost", + "lime", + "casa", + "accurately", + "targeting", + "##rod", + "underway", + "##uru", + "hemisphere", + "lester", + "##yard", + "occupies", + "2d", + "griffith", + "angrily", + "reorganized", + "##owing", + "courtney", + "deposited", + "##dd", + "##30", + "estadio", + "##ifies", + "dunn", + "exiled", + "##ying", + "checks", + "##combe", + "##\u043e", + "##fly", + "successes", + "unexpectedly", + "blu", + "assessed", + "##flower", + "##\u0647", + "observing", + "sacked", + "spiders", + "kn", + "##tail", + "mu", + "nodes", + "prosperity", + "audrey", + "divisional", + "155", + "broncos", + "tangled", + "adjust", + "feeds", + "erosion", + "paolo", + "surf", + "directory", + "snatched", + "humid", + "admiralty", + "screwed", + "gt", + "reddish", + "##nese", + "modules", + "trench", + "lamps", + "bind", + "leah", + "bucks", + "competes", + "##nz", + "##form", + "transcription", + "##uc", + "isles", + "violently", + "clutching", + "pga", + "cyclist", + "inflation", + "flats", + "ragged", + "unnecessary", + "##hian", + "stubborn", + "coordinated", + "harriet", + "baba", + "disqualified", + "330", + "insect", + "wolfe", + "##fies", + "reinforcements", + "rocked", + "duel", + "winked", + "embraced", + "bricks", + "##raj", + "hiatus", + "defeats", + "pending", + "brightly", + "jealousy", + "##xton", + "##hm", + "##uki", + "lena", + "gdp", + "colorful", + "##dley", + "stein", + "kidney", + "##shu", + "underwear", + "wanderers", + "##haw", + "##icus", + "guardians", + "m\u00b3", + "roared", + "habits", + "##wise", + "permits", + "gp", + "uranium", + "punished", + "disguise", + "bundesliga", + "elise", + "dundee", + "erotic", + "partisan", + "pi", + "collectors", + "float", + "individually", + "rendering", + "behavioral", + "bucharest", + "ser", + "hare", + "valerie", + "corporal", + "nutrition", + "proportional", + "##isa", + "immense", + "##kis", + "pavement", + "##zie", + "##eld", + "sutherland", + "crouched", + "1775", + "##lp", + "suzuki", + "trades", + "endurance", + "operas", + "crosby", + "prayed", + "priory", + "rory", + "socially", + "##urn", + "gujarat", + "##pu", + "walton", + "cube", + "pasha", + "privilege", + "lennon", + "floods", + "thorne", + "waterfall", + "nipple", + "scouting", + "approve", + "##lov", + "minorities", + "voter", + "dwight", + "extensions", + "assure", + "ballroom", + "slap", + "dripping", + "privileges", + "rejoined", + "confessed", + "demonstrating", + "patriotic", + "yell", + "investor", + "##uth", + "pagan", + "slumped", + "squares", + "##cle", + "##kins", + "confront", + "bert", + "embarrassment", + "##aid", + "aston", + "urging", + "sweater", + "starr", + "yuri", + "brains", + "williamson", + "commuter", + "mortar", + "structured", + "selfish", + "exports", + "##jon", + "cds", + "##him", + "unfinished", + "##rre", + "mortgage", + "destinations", + "##nagar", + "canoe", + "solitary", + "buchanan", + "delays", + "magistrate", + "fk", + "##pling", + "motivation", + "##lier", + "##vier", + "recruiting", + "assess", + "##mouth", + "malik", + "antique", + "1791", + "pius", + "rahman", + "reich", + "tub", + "zhou", + "smashed", + "airs", + "galway", + "xii", + "conditioning", + "honduras", + "discharged", + "dexter", + "##pf", + "lionel", + "129", + "debates", + "lemon", + "tiffany", + "volunteered", + "dom", + "dioxide", + "procession", + "devi", + "sic", + "tremendous", + "advertisements", + "colts", + "transferring", + "verdict", + "hanover", + "decommissioned", + "utter", + "relate", + "pac", + "racism", + "##top", + "beacon", + "limp", + "similarity", + "terra", + "occurrence", + "ant", + "##how", + "becky", + "capt", + "updates", + "armament", + "richie", + "pal", + "##graph", + "halloween", + "mayo", + "##ssen", + "##bone", + "cara", + "serena", + "fcc", + "dolls", + "obligations", + "##dling", + "violated", + "lafayette", + "jakarta", + "exploitation", + "##ime", + "infamous", + "iconic", + "##lah", + "##park", + "kitty", + "moody", + "reginald", + "dread", + "spill", + "crystals", + "olivier", + "modeled", + "bluff", + "equilibrium", + "separating", + "notices", + "ordnance", + "extinction", + "onset", + "cosmic", + "attachment", + "sammy", + "expose", + "privy", + "anchored", + "##bil", + "abbott", + "admits", + "bending", + "baritone", + "emmanuel", + "policeman", + "vaughan", + "winged", + "climax", + "dresses", + "denny", + "polytechnic", + "mohamed", + "burmese", + "authentic", + "nikki", + "genetics", + "grandparents", + "homestead", + "gaza", + "postponed", + "metacritic", + "una", + "##sby", + "##bat", + "unstable", + "dissertation", + "##rial", + "##cian", + "curls", + "obscure", + "uncovered", + "bronx", + "praying", + "disappearing", + "##hoe", + "prehistoric", + "coke", + "turret", + "mutations", + "nonprofit", + "pits", + "monaco", + "##\u064a", + "##usion", + "prominently", + "dispatched", + "podium", + "##mir", + "uci", + "##uation", + "133", + "fortifications", + "birthplace", + "kendall", + "##lby", + "##oll", + "preacher", + "rack", + "goodman", + "##rman", + "persistent", + "##ott", + "countless", + "jaime", + "recorder", + "lexington", + "persecution", + "jumps", + "renewal", + "wagons", + "##11", + "crushing", + "##holder", + "decorations", + "##lake", + "abundance", + "wrath", + "laundry", + "\u00a31", + "garde", + "##rp", + "jeanne", + "beetles", + "peasant", + "##sl", + "splitting", + "caste", + "sergei", + "##rer", + "##ema", + "scripts", + "##ively", + "rub", + "satellites", + "##vor", + "inscribed", + "verlag", + "scrapped", + "gale", + "packages", + "chick", + "potato", + "slogan", + "kathleen", + "arabs", + "##culture", + "counterparts", + "reminiscent", + "choral", + "##tead", + "rand", + "retains", + "bushes", + "dane", + "accomplish", + "courtesy", + "closes", + "##oth", + "slaughter", + "hague", + "krakow", + "lawson", + "tailed", + "elias", + "ginger", + "##ttes", + "canopy", + "betrayal", + "rebuilding", + "turf", + "##hof", + "frowning", + "allegiance", + "brigades", + "kicks", + "rebuild", + "polls", + "alias", + "nationalism", + "td", + "rowan", + "audition", + "bowie", + "fortunately", + "recognizes", + "harp", + "dillon", + "horrified", + "##oro", + "renault", + "##tics", + "ropes", + "##\u03b1", + "presumed", + "rewarded", + "infrared", + "wiping", + "accelerated", + "illustration", + "##rid", + "presses", + "practitioners", + "badminton", + "##iard", + "detained", + "##tera", + "recognizing", + "relates", + "misery", + "##sies", + "##tly", + "reproduction", + "piercing", + "potatoes", + "thornton", + "esther", + "manners", + "hbo", + "##aan", + "ours", + "bullshit", + "ernie", + "perennial", + "sensitivity", + "illuminated", + "rupert", + "##jin", + "##iss", + "##ear", + "rfc", + "nassau", + "##dock", + "staggered", + "socialism", + "##haven", + "appointments", + "nonsense", + "prestige", + "sharma", + "haul", + "##tical", + "solidarity", + "gps", + "##ook", + "##rata", + "igor", + "pedestrian", + "##uit", + "baxter", + "tenants", + "wires", + "medication", + "unlimited", + "guiding", + "impacts", + "diabetes", + "##rama", + "sasha", + "pas", + "clive", + "extraction", + "131", + "continually", + "constraints", + "##bilities", + "sonata", + "hunted", + "sixteenth", + "chu", + "planting", + "quote", + "mayer", + "pretended", + "abs", + "spat", + "##hua", + "ceramic", + "##cci", + "curtains", + "pigs", + "pitching", + "##dad", + "latvian", + "sore", + "dayton", + "##sted", + "##qi", + "patrols", + "slice", + "playground", + "##nted", + "shone", + "stool", + "apparatus", + "inadequate", + "mates", + "treason", + "##ija", + "desires", + "##liga", + "##croft", + "somalia", + "laurent", + "mir", + "leonardo", + "oracle", + "grape", + "obliged", + "chevrolet", + "thirteenth", + "stunning", + "enthusiastic", + "##ede", + "accounted", + "concludes", + "currents", + "basil", + "##kovic", + "drought", + "##rica", + "mai", + "##aire", + "shove", + "posting", + "##shed", + "pilgrimage", + "humorous", + "packing", + "fry", + "pencil", + "wines", + "smells", + "144", + "marilyn", + "aching", + "newest", + "clung", + "bon", + "neighbours", + "sanctioned", + "##pie", + "mug", + "##stock", + "drowning", + "##mma", + "hydraulic", + "##vil", + "hiring", + "reminder", + "lilly", + "investigators", + "##ncies", + "sour", + "##eous", + "compulsory", + "packet", + "##rion", + "##graphic", + "##elle", + "cannes", + "##inate", + "depressed", + "##rit", + "heroic", + "importantly", + "theresa", + "##tled", + "conway", + "saturn", + "marginal", + "rae", + "##xia", + "corresponds", + "royce", + "pact", + "jasper", + "explosives", + "packaging", + "aluminium", + "##ttered", + "denotes", + "rhythmic", + "spans", + "assignments", + "hereditary", + "outlined", + "originating", + "sundays", + "lad", + "reissued", + "greeting", + "beatrice", + "##dic", + "pillar", + "marcos", + "plots", + "handbook", + "alcoholic", + "judiciary", + "avant", + "slides", + "extract", + "masculine", + "blur", + "##eum", + "##force", + "homage", + "trembled", + "owens", + "hymn", + "trey", + "omega", + "signaling", + "socks", + "accumulated", + "reacted", + "attic", + "theo", + "lining", + "angie", + "distraction", + "primera", + "talbot", + "##key", + "1200", + "ti", + "creativity", + "billed", + "##hey", + "deacon", + "eduardo", + "identifies", + "proposition", + "dizzy", + "gunner", + "hogan", + "##yam", + "##pping", + "##hol", + "ja", + "##chan", + "jensen", + "reconstructed", + "##berger", + "clearance", + "darius", + "##nier", + "abe", + "harlem", + "plea", + "dei", + "circled", + "emotionally", + "notation", + "fascist", + "neville", + "exceeded", + "upwards", + "viable", + "ducks", + "##fo", + "workforce", + "racer", + "limiting", + "shri", + "##lson", + "possesses", + "1600", + "kerr", + "moths", + "devastating", + "laden", + "disturbing", + "locking", + "##cture", + "gal", + "fearing", + "accreditation", + "flavor", + "aide", + "1870s", + "mountainous", + "##baum", + "melt", + "##ures", + "motel", + "texture", + "servers", + "soda", + "##mb", + "herd", + "##nium", + "erect", + "puzzled", + "hum", + "peggy", + "examinations", + "gould", + "testified", + "geoff", + "ren", + "devised", + "sacks", + "##law", + "denial", + "posters", + "grunted", + "cesar", + "tutor", + "ec", + "gerry", + "offerings", + "byrne", + "falcons", + "combinations", + "ct", + "incoming", + "pardon", + "rocking", + "26th", + "avengers", + "flared", + "mankind", + "seller", + "uttar", + "loch", + "nadia", + "stroking", + "exposing", + "##hd", + "fertile", + "ancestral", + "instituted", + "##has", + "noises", + "prophecy", + "taxation", + "eminent", + "vivid", + "pol", + "##bol", + "dart", + "indirect", + "multimedia", + "notebook", + "upside", + "displaying", + "adrenaline", + "referenced", + "geometric", + "##iving", + "progression", + "##ddy", + "blunt", + "announce", + "##far", + "implementing", + "##lav", + "aggression", + "liaison", + "cooler", + "cares", + "headache", + "plantations", + "gorge", + "dots", + "impulse", + "thickness", + "ashamed", + "averaging", + "kathy", + "obligation", + "precursor", + "137", + "fowler", + "symmetry", + "thee", + "225", + "hears", + "##rai", + "undergoing", + "ads", + "butcher", + "bowler", + "##lip", + "cigarettes", + "subscription", + "goodness", + "##ically", + "browne", + "##hos", + "##tech", + "kyoto", + "donor", + "##erty", + "damaging", + "friction", + "drifting", + "expeditions", + "hardened", + "prostitution", + "152", + "fauna", + "blankets", + "claw", + "tossing", + "snarled", + "butterflies", + "recruits", + "investigative", + "coated", + "healed", + "138", + "communal", + "hai", + "xiii", + "academics", + "boone", + "psychologist", + "restless", + "lahore", + "stephens", + "mba", + "brendan", + "foreigners", + "printer", + "##pc", + "ached", + "explode", + "27th", + "deed", + "scratched", + "dared", + "##pole", + "cardiac", + "1780", + "okinawa", + "proto", + "commando", + "compelled", + "oddly", + "electrons", + "##base", + "replica", + "thanksgiving", + "##rist", + "sheila", + "deliberate", + "stafford", + "tidal", + "representations", + "hercules", + "ou", + "##path", + "##iated", + "kidnapping", + "lenses", + "##tling", + "deficit", + "samoa", + "mouths", + "consuming", + "computational", + "maze", + "granting", + "smirk", + "razor", + "fixture", + "ideals", + "inviting", + "aiden", + "nominal", + "##vs", + "issuing", + "julio", + "pitt", + "ramsey", + "docks", + "##oss", + "exhaust", + "##owed", + "bavarian", + "draped", + "anterior", + "mating", + "ethiopian", + "explores", + "noticing", + "##nton", + "discarded", + "convenience", + "hoffman", + "endowment", + "beasts", + "cartridge", + "mormon", + "paternal", + "probe", + "sleeves", + "interfere", + "lump", + "deadline", + "##rail", + "jenks", + "bulldogs", + "scrap", + "alternating", + "justified", + "reproductive", + "nam", + "seize", + "descending", + "secretariat", + "kirby", + "coupe", + "grouped", + "smash", + "panther", + "sedan", + "tapping", + "##18", + "lola", + "cheer", + "germanic", + "unfortunate", + "##eter", + "unrelated", + "##fan", + "subordinate", + "##sdale", + "suzanne", + "advertisement", + "##ility", + "horsepower", + "##lda", + "cautiously", + "discourse", + "luigi", + "##mans", + "##fields", + "noun", + "prevalent", + "mao", + "schneider", + "everett", + "surround", + "governorate", + "kira", + "##avia", + "westward", + "##take", + "misty", + "rails", + "sustainability", + "134", + "unused", + "##rating", + "packs", + "toast", + "unwilling", + "regulate", + "thy", + "suffrage", + "nile", + "awe", + "assam", + "definitions", + "travelers", + "affordable", + "##rb", + "conferred", + "sells", + "undefeated", + "beneficial", + "torso", + "basal", + "repeating", + "remixes", + "##pass", + "bahrain", + "cables", + "fang", + "##itated", + "excavated", + "numbering", + "statutory", + "##rey", + "deluxe", + "##lian", + "forested", + "ramirez", + "derbyshire", + "zeus", + "slamming", + "transfers", + "astronomer", + "banana", + "lottery", + "berg", + "histories", + "bamboo", + "##uchi", + "resurrection", + "posterior", + "bowls", + "vaguely", + "##thi", + "thou", + "preserving", + "tensed", + "offence", + "##inas", + "meyrick", + "callum", + "ridden", + "watt", + "langdon", + "tying", + "lowland", + "snorted", + "daring", + "truman", + "##hale", + "##girl", + "aura", + "overly", + "filing", + "weighing", + "goa", + "infections", + "philanthropist", + "saunders", + "eponymous", + "##owski", + "latitude", + "perspectives", + "reviewing", + "mets", + "commandant", + "radial", + "##kha", + "flashlight", + "reliability", + "koch", + "vowels", + "amazed", + "ada", + "elaine", + "supper", + "##rth", + "##encies", + "predator", + "debated", + "soviets", + "cola", + "##boards", + "##nah", + "compartment", + "crooked", + "arbitrary", + "fourteenth", + "##ctive", + "havana", + "majors", + "steelers", + "clips", + "profitable", + "ambush", + "exited", + "packers", + "##tile", + "nude", + "cracks", + "fungi", + "##\u0435", + "limb", + "trousers", + "josie", + "shelby", + "tens", + "frederic", + "##\u03bf\u03c2", + "definite", + "smoothly", + "constellation", + "insult", + "baton", + "discs", + "lingering", + "##nco", + "conclusions", + "lent", + "staging", + "becker", + "grandpa", + "shaky", + "##tron", + "einstein", + "obstacles", + "sk", + "adverse", + "elle", + "economically", + "##moto", + "mccartney", + "thor", + "dismissal", + "motions", + "readings", + "nostrils", + "treatise", + "##pace", + "squeezing", + "evidently", + "prolonged", + "1783", + "venezuelan", + "je", + "marguerite", + "beirut", + "takeover", + "shareholders", + "##vent", + "denise", + "digit", + "airplay", + "norse", + "##bbling", + "imaginary", + "pills", + "hubert", + "blaze", + "vacated", + "eliminating", + "##ello", + "vine", + "mansfield", + "##tty", + "retrospective", + "barrow", + "borne", + "clutch", + "bail", + "forensic", + "weaving", + "##nett", + "##witz", + "desktop", + "citadel", + "promotions", + "worrying", + "dorset", + "ieee", + "subdivided", + "##iating", + "manned", + "expeditionary", + "pickup", + "synod", + "chuckle", + "185", + "barney", + "##rz", + "##ffin", + "functionality", + "karachi", + "litigation", + "meanings", + "uc", + "lick", + "turbo", + "anders", + "##ffed", + "execute", + "curl", + "oppose", + "ankles", + "typhoon", + "##\u062f", + "##ache", + "##asia", + "linguistics", + "compassion", + "pressures", + "grazing", + "perfection", + "##iting", + "immunity", + "monopoly", + "muddy", + "backgrounds", + "136", + "namibia", + "francesca", + "monitors", + "attracting", + "stunt", + "tuition", + "##\u0438\u0438", + "vegetable", + "##mates", + "##quent", + "mgm", + "jen", + "complexes", + "forts", + "##ond", + "cellar", + "bites", + "seventeenth", + "royals", + "flemish", + "failures", + "mast", + "charities", + "##cular", + "peruvian", + "capitals", + "macmillan", + "ipswich", + "outward", + "frigate", + "postgraduate", + "folds", + "employing", + "##ouse", + "concurrently", + "fiery", + "##tai", + "contingent", + "nightmares", + "monumental", + "nicaragua", + "##kowski", + "lizard", + "mal", + "fielding", + "gig", + "reject", + "##pad", + "harding", + "##ipe", + "coastline", + "##cin", + "##nos", + "beethoven", + "humphrey", + "innovations", + "##tam", + "##nge", + "norris", + "doris", + "solicitor", + "huang", + "obey", + "141", + "##lc", + "niagara", + "##tton", + "shelves", + "aug", + "bourbon", + "curry", + "nightclub", + "specifications", + "hilton", + "##ndo", + "centennial", + "dispersed", + "worm", + "neglected", + "briggs", + "sm", + "font", + "kuala", + "uneasy", + "plc", + "##nstein", + "##bound", + "##aking", + "##burgh", + "awaiting", + "pronunciation", + "##bbed", + "##quest", + "eh", + "optimal", + "zhu", + "raped", + "greens", + "presided", + "brenda", + "worries", + "##life", + "venetian", + "marxist", + "turnout", + "##lius", + "refined", + "braced", + "sins", + "grasped", + "sunderland", + "nickel", + "speculated", + "lowell", + "cyrillic", + "communism", + "fundraising", + "resembling", + "colonists", + "mutant", + "freddie", + "usc", + "##mos", + "gratitude", + "##run", + "mural", + "##lous", + "chemist", + "wi", + "reminds", + "28th", + "steals", + "tess", + "pietro", + "##ingen", + "promoter", + "ri", + "microphone", + "honoured", + "rai", + "sant", + "##qui", + "feather", + "##nson", + "burlington", + "kurdish", + "terrorists", + "deborah", + "sickness", + "##wed", + "##eet", + "hazard", + "irritated", + "desperation", + "veil", + "clarity", + "##rik", + "jewels", + "xv", + "##gged", + "##ows", + "##cup", + "berkshire", + "unfair", + "mysteries", + "orchid", + "winced", + "exhaustion", + "renovations", + "stranded", + "obe", + "infinity", + "##nies", + "adapt", + "redevelopment", + "thanked", + "registry", + "olga", + "domingo", + "noir", + "tudor", + "ole", + "##atus", + "commenting", + "behaviors", + "##ais", + "crisp", + "pauline", + "probable", + "stirling", + "wigan", + "##bian", + "paralympics", + "panting", + "surpassed", + "##rew", + "luca", + "barred", + "pony", + "famed", + "##sters", + "cassandra", + "waiter", + "carolyn", + "exported", + "##orted", + "andres", + "destructive", + "deeds", + "jonah", + "castles", + "vacancy", + "suv", + "##glass", + "1788", + "orchard", + "yep", + "famine", + "belarusian", + "sprang", + "##forth", + "skinny", + "##mis", + "administrators", + "rotterdam", + "zambia", + "zhao", + "boiler", + "discoveries", + "##ride", + "##physics", + "lucius", + "disappointing", + "outreach", + "spoon", + "##frame", + "qualifications", + "unanimously", + "enjoys", + "regency", + "##iidae", + "stade", + "realism", + "veterinary", + "rodgers", + "dump", + "alain", + "chestnut", + "castile", + "censorship", + "rumble", + "gibbs", + "##itor", + "communion", + "reggae", + "inactivated", + "logs", + "loads", + "##houses", + "homosexual", + "##iano", + "ale", + "informs", + "##cas", + "phrases", + "plaster", + "linebacker", + "ambrose", + "kaiser", + "fascinated", + "850", + "limerick", + "recruitment", + "forge", + "mastered", + "##nding", + "leinster", + "rooted", + "threaten", + "##strom", + "borneo", + "##hes", + "suggestions", + "scholarships", + "propeller", + "documentaries", + "patronage", + "coats", + "constructing", + "invest", + "neurons", + "comet", + "entirety", + "shouts", + "identities", + "annoying", + "unchanged", + "wary", + "##antly", + "##ogy", + "neat", + "oversight", + "##kos", + "phillies", + "replay", + "constance", + "##kka", + "incarnation", + "humble", + "skies", + "minus", + "##acy", + "smithsonian", + "##chel", + "guerrilla", + "jar", + "cadets", + "##plate", + "surplus", + "audit", + "##aru", + "cracking", + "joanna", + "louisa", + "pacing", + "##lights", + "intentionally", + "##iri", + "diner", + "nwa", + "imprint", + "australians", + "tong", + "unprecedented", + "bunker", + "naive", + "specialists", + "ark", + "nichols", + "railing", + "leaked", + "pedal", + "##uka", + "shrub", + "longing", + "roofs", + "v8", + "captains", + "neural", + "tuned", + "##ntal", + "##jet", + "emission", + "medina", + "frantic", + "codex", + "definitive", + "sid", + "abolition", + "intensified", + "stocks", + "enrique", + "sustain", + "genoa", + "oxide", + "##written", + "clues", + "cha", + "##gers", + "tributaries", + "fragment", + "venom", + "##rity", + "##ente", + "##sca", + "muffled", + "vain", + "sire", + "laos", + "##ingly", + "##hana", + "hastily", + "snapping", + "surfaced", + "sentiment", + "motive", + "##oft", + "contests", + "approximate", + "mesa", + "luckily", + "dinosaur", + "exchanges", + "propelled", + "accord", + "bourne", + "relieve", + "tow", + "masks", + "offended", + "##ues", + "cynthia", + "##mmer", + "rains", + "bartender", + "zinc", + "reviewers", + "lois", + "##sai", + "legged", + "arrogant", + "rafe", + "rosie", + "comprise", + "handicap", + "blockade", + "inlet", + "lagoon", + "copied", + "drilling", + "shelley", + "petals", + "##inian", + "mandarin", + "obsolete", + "##inated", + "onward", + "arguably", + "productivity", + "cindy", + "praising", + "seldom", + "busch", + "discusses", + "raleigh", + "shortage", + "ranged", + "stanton", + "encouragement", + "firstly", + "conceded", + "overs", + "temporal", + "##uke", + "cbe", + "##bos", + "woo", + "certainty", + "pumps", + "##pton", + "stalked", + "##uli", + "lizzie", + "periodic", + "thieves", + "weaker", + "##night", + "gases", + "shoving", + "chooses", + "wc", + "##chemical", + "prompting", + "weights", + "##kill", + "robust", + "flanked", + "sticky", + "hu", + "tuberculosis", + "##eb", + "##eal", + "christchurch", + "resembled", + "wallet", + "reese", + "inappropriate", + "pictured", + "distract", + "fixing", + "fiddle", + "giggled", + "burger", + "heirs", + "hairy", + "mechanic", + "torque", + "apache", + "obsessed", + "chiefly", + "cheng", + "logging", + "##tag", + "extracted", + "meaningful", + "numb", + "##vsky", + "gloucestershire", + "reminding", + "##bay", + "unite", + "##lit", + "breeds", + "diminished", + "clown", + "glove", + "1860s", + "##\u0646", + "##ug", + "archibald", + "focal", + "freelance", + "sliced", + "depiction", + "##yk", + "organism", + "switches", + "sights", + "stray", + "crawling", + "##ril", + "lever", + "leningrad", + "interpretations", + "loops", + "anytime", + "reel", + "alicia", + "delighted", + "##ech", + "inhaled", + "xiv", + "suitcase", + "bernie", + "vega", + "licenses", + "northampton", + "exclusion", + "induction", + "monasteries", + "racecourse", + "homosexuality", + "##right", + "##sfield", + "##rky", + "dimitri", + "michele", + "alternatives", + "ions", + "commentators", + "genuinely", + "objected", + "pork", + "hospitality", + "fencing", + "stephan", + "warships", + "peripheral", + "wit", + "drunken", + "wrinkled", + "quentin", + "spends", + "departing", + "chung", + "numerical", + "spokesperson", + "##zone", + "johannesburg", + "caliber", + "killers", + "##udge", + "assumes", + "neatly", + "demographic", + "abigail", + "bloc", + "##vel", + "mounting", + "##lain", + "bentley", + "slightest", + "xu", + "recipients", + "##jk", + "merlin", + "##writer", + "seniors", + "prisons", + "blinking", + "hindwings", + "flickered", + "kappa", + "##hel", + "80s", + "strengthening", + "appealing", + "brewing", + "gypsy", + "mali", + "lashes", + "hulk", + "unpleasant", + "harassment", + "bio", + "treaties", + "predict", + "instrumentation", + "pulp", + "troupe", + "boiling", + "mantle", + "##ffe", + "ins", + "##vn", + "dividing", + "handles", + "verbs", + "##onal", + "coconut", + "senegal", + "340", + "thorough", + "gum", + "momentarily", + "##sto", + "cocaine", + "panicked", + "destined", + "##turing", + "teatro", + "denying", + "weary", + "captained", + "mans", + "##hawks", + "##code", + "wakefield", + "bollywood", + "thankfully", + "##16", + "cyril", + "##wu", + "amendments", + "##bahn", + "consultation", + "stud", + "reflections", + "kindness", + "1787", + "internally", + "##ovo", + "tex", + "mosaic", + "distribute", + "paddy", + "seeming", + "143", + "##hic", + "piers", + "##15", + "##mura", + "##verse", + "popularly", + "winger", + "kang", + "sentinel", + "mccoy", + "##anza", + "covenant", + "##bag", + "verge", + "fireworks", + "suppress", + "thrilled", + "dominate", + "##jar", + "swansea", + "##60", + "142", + "reconciliation", + "##ndi", + "stiffened", + "cue", + "dorian", + "##uf", + "damascus", + "amor", + "ida", + "foremost", + "##aga", + "porsche", + "unseen", + "dir", + "##had", + "##azi", + "stony", + "lexi", + "melodies", + "##nko", + "angular", + "integer", + "podcast", + "ants", + "inherent", + "jaws", + "justify", + "persona", + "##olved", + "josephine", + "##nr", + "##ressed", + "customary", + "flashes", + "gala", + "cyrus", + "glaring", + "backyard", + "ariel", + "physiology", + "greenland", + "html", + "stir", + "avon", + "atletico", + "finch", + "methodology", + "ked", + "##lent", + "mas", + "catholicism", + "townsend", + "branding", + "quincy", + "fits", + "containers", + "1777", + "ashore", + "aragon", + "##19", + "forearm", + "poisoning", + "##sd", + "adopting", + "conquer", + "grinding", + "amnesty", + "keller", + "finances", + "evaluate", + "forged", + "lankan", + "instincts", + "##uto", + "guam", + "bosnian", + "photographed", + "workplace", + "desirable", + "protector", + "##dog", + "allocation", + "intently", + "encourages", + "willy", + "##sten", + "bodyguard", + "electro", + "brighter", + "##\u03bd", + "bihar", + "##chev", + "lasts", + "opener", + "amphibious", + "sal", + "verde", + "arte", + "##cope", + "captivity", + "vocabulary", + "yields", + "##tted", + "agreeing", + "desmond", + "pioneered", + "##chus", + "strap", + "campaigned", + "railroads", + "##\u043e\u0432\u0438\u0447", + "emblem", + "##dre", + "stormed", + "501", + "##ulous", + "marijuana", + "northumberland", + "##gn", + "##nath", + "bowen", + "landmarks", + "beaumont", + "##qua", + "danube", + "##bler", + "attorneys", + "th", + "ge", + "flyers", + "critique", + "villains", + "cass", + "mutation", + "acc", + "##0s", + "colombo", + "mckay", + "motif", + "sampling", + "concluding", + "syndicate", + "##rell", + "neon", + "stables", + "ds", + "warnings", + "clint", + "mourning", + "wilkinson", + "##tated", + "merrill", + "leopard", + "evenings", + "exhaled", + "emil", + "sonia", + "ezra", + "discrete", + "stove", + "farrell", + "fifteenth", + "prescribed", + "superhero", + "##rier", + "worms", + "helm", + "wren", + "##duction", + "##hc", + "expo", + "##rator", + "hq", + "unfamiliar", + "antony", + "prevents", + "acceleration", + "fiercely", + "mari", + "painfully", + "calculations", + "cheaper", + "ign", + "clifton", + "irvine", + "davenport", + "mozambique", + "##np", + "pierced", + "##evich", + "wonders", + "##wig", + "##cate", + "##iling", + "crusade", + "ware", + "##uel", + "enzymes", + "reasonably", + "mls", + "##coe", + "mater", + "ambition", + "bunny", + "eliot", + "kernel", + "##fin", + "asphalt", + "headmaster", + "torah", + "aden", + "lush", + "pins", + "waived", + "##care", + "##yas", + "joao", + "substrate", + "enforce", + "##grad", + "##ules", + "alvarez", + "selections", + "epidemic", + "tempted", + "##bit", + "bremen", + "translates", + "ensured", + "waterfront", + "29th", + "forrest", + "manny", + "malone", + "kramer", + "reigning", + "cookies", + "simpler", + "absorption", + "205", + "engraved", + "##ffy", + "evaluated", + "1778", + "haze", + "146", + "comforting", + "crossover", + "##abe", + "thorn", + "##rift", + "##imo", + "##pop", + "suppression", + "fatigue", + "cutter", + "##tr", + "201", + "wurttemberg", + "##orf", + "enforced", + "hovering", + "proprietary", + "gb", + "samurai", + "syllable", + "ascent", + "lacey", + "tick", + "lars", + "tractor", + "merchandise", + "rep", + "bouncing", + "defendants", + "##yre", + "huntington", + "##ground", + "##oko", + "standardized", + "##hor", + "##hima", + "assassinated", + "nu", + "predecessors", + "rainy", + "liar", + "assurance", + "lyrical", + "##uga", + "secondly", + "flattened", + "ios", + "parameter", + "undercover", + "##mity", + "bordeaux", + "punish", + "ridges", + "markers", + "exodus", + "inactive", + "hesitate", + "debbie", + "nyc", + "pledge", + "savoy", + "nagar", + "offset", + "organist", + "##tium", + "hesse", + "marin", + "converting", + "##iver", + "diagram", + "propulsion", + "pu", + "validity", + "reverted", + "supportive", + "##dc", + "ministries", + "clans", + "responds", + "proclamation", + "##inae", + "##\u00f8", + "##rea", + "ein", + "pleading", + "patriot", + "sf", + "birch", + "islanders", + "strauss", + "hates", + "##dh", + "brandenburg", + "concession", + "rd", + "##ob", + "1900s", + "killings", + "textbook", + "antiquity", + "cinematography", + "wharf", + "embarrassing", + "setup", + "creed", + "farmland", + "inequality", + "centred", + "signatures", + "fallon", + "370", + "##ingham", + "##uts", + "ceylon", + "gazing", + "directive", + "laurie", + "##tern", + "globally", + "##uated", + "##dent", + "allah", + "excavation", + "threads", + "##cross", + "148", + "frantically", + "icc", + "utilize", + "determines", + "respiratory", + "thoughtful", + "receptions", + "##dicate", + "merging", + "chandra", + "seine", + "147", + "builders", + "builds", + "diagnostic", + "dev", + "visibility", + "goddamn", + "analyses", + "dhaka", + "cho", + "proves", + "chancel", + "concurrent", + "curiously", + "canadians", + "pumped", + "restoring", + "1850s", + "turtles", + "jaguar", + "sinister", + "spinal", + "traction", + "declan", + "vows", + "1784", + "glowed", + "capitalism", + "swirling", + "install", + "universidad", + "##lder", + "##oat", + "soloist", + "##genic", + "##oor", + "coincidence", + "beginnings", + "nissan", + "dip", + "resorts", + "caucasus", + "combustion", + "infectious", + "##eno", + "pigeon", + "serpent", + "##itating", + "conclude", + "masked", + "salad", + "jew", + "##gr", + "surreal", + "toni", + "##wc", + "harmonica", + "151", + "##gins", + "##etic", + "##coat", + "fishermen", + "intending", + "bravery", + "##wave", + "klaus", + "titan", + "wembley", + "taiwanese", + "ransom", + "40th", + "incorrect", + "hussein", + "eyelids", + "jp", + "cooke", + "dramas", + "utilities", + "##etta", + "##print", + "eisenhower", + "principally", + "granada", + "lana", + "##rak", + "openings", + "concord", + "##bl", + "bethany", + "connie", + "morality", + "sega", + "##mons", + "##nard", + "earnings", + "##kara", + "##cine", + "wii", + "communes", + "##rel", + "coma", + "composing", + "softened", + "severed", + "grapes", + "##17", + "nguyen", + "analyzed", + "warlord", + "hubbard", + "heavenly", + "behave", + "slovenian", + "##hit", + "##ony", + "hailed", + "filmmakers", + "trance", + "caldwell", + "skye", + "unrest", + "coward", + "likelihood", + "##aging", + "bern", + "sci", + "taliban", + "honolulu", + "propose", + "##wang", + "1700", + "browser", + "imagining", + "cobra", + "contributes", + "dukes", + "instinctively", + "conan", + "violinist", + "##ores", + "accessories", + "gradual", + "##amp", + "quotes", + "sioux", + "##dating", + "undertake", + "intercepted", + "sparkling", + "compressed", + "139", + "fungus", + "tombs", + "haley", + "imposing", + "rests", + "degradation", + "lincolnshire", + "retailers", + "wetlands", + "tulsa", + "distributor", + "dungeon", + "nun", + "greenhouse", + "convey", + "atlantis", + "aft", + "exits", + "oman", + "dresser", + "lyons", + "##sti", + "joking", + "eddy", + "judgement", + "omitted", + "digits", + "##cts", + "##game", + "juniors", + "##rae", + "cents", + "stricken", + "une", + "##ngo", + "wizards", + "weir", + "breton", + "nan", + "technician", + "fibers", + "liking", + "royalty", + "##cca", + "154", + "persia", + "terribly", + "magician", + "##rable", + "##unt", + "vance", + "cafeteria", + "booker", + "camille", + "warmer", + "##static", + "consume", + "cavern", + "gaps", + "compass", + "contemporaries", + "foyer", + "soothing", + "graveyard", + "maj", + "plunged", + "blush", + "##wear", + "cascade", + "demonstrates", + "ordinance", + "##nov", + "boyle", + "##lana", + "rockefeller", + "shaken", + "banjo", + "izzy", + "##ense", + "breathless", + "vines", + "##32", + "##eman", + "alterations", + "chromosome", + "dwellings", + "feudal", + "mole", + "153", + "catalonia", + "relics", + "tenant", + "mandated", + "##fm", + "fridge", + "hats", + "honesty", + "patented", + "raul", + "heap", + "cruisers", + "accusing", + "enlightenment", + "infants", + "wherein", + "chatham", + "contractors", + "zen", + "affinity", + "hc", + "osborne", + "piston", + "156", + "traps", + "maturity", + "##rana", + "lagos", + "##zal", + "peering", + "##nay", + "attendant", + "dealers", + "protocols", + "subset", + "prospects", + "biographical", + "##cre", + "artery", + "##zers", + "insignia", + "nuns", + "endured", + "##eration", + "recommend", + "schwartz", + "serbs", + "berger", + "cromwell", + "crossroads", + "##ctor", + "enduring", + "clasped", + "grounded", + "##bine", + "marseille", + "twitched", + "abel", + "choke", + "https", + "catalyst", + "moldova", + "italians", + "##tist", + "disastrous", + "wee", + "##oured", + "##nti", + "wwf", + "nope", + "##piration", + "##asa", + "expresses", + "thumbs", + "167", + "##nza", + "coca", + "1781", + "cheating", + "##ption", + "skipped", + "sensory", + "heidelberg", + "spies", + "satan", + "dangers", + "semifinal", + "202", + "bohemia", + "whitish", + "confusing", + "shipbuilding", + "relies", + "surgeons", + "landings", + "ravi", + "baku", + "moor", + "suffix", + "alejandro", + "##yana", + "litre", + "upheld", + "##unk", + "rajasthan", + "##rek", + "coaster", + "insists", + "posture", + "scenarios", + "etienne", + "favoured", + "appoint", + "transgender", + "elephants", + "poked", + "greenwood", + "defences", + "fulfilled", + "militant", + "somali", + "1758", + "chalk", + "potent", + "##ucci", + "migrants", + "wink", + "assistants", + "nos", + "restriction", + "activism", + "niger", + "##ario", + "colon", + "shaun", + "##sat", + "daphne", + "##erated", + "swam", + "congregations", + "reprise", + "considerations", + "magnet", + "playable", + "xvi", + "##\u0440", + "overthrow", + "tobias", + "knob", + "chavez", + "coding", + "##mers", + "propped", + "katrina", + "orient", + "newcomer", + "##suke", + "temperate", + "##pool", + "farmhouse", + "interrogation", + "##vd", + "committing", + "##vert", + "forthcoming", + "strawberry", + "joaquin", + "macau", + "ponds", + "shocking", + "siberia", + "##cellular", + "chant", + "contributors", + "##nant", + "##ologists", + "sped", + "absorb", + "hail", + "1782", + "spared", + "##hore", + "barbados", + "karate", + "opus", + "originates", + "saul", + "##xie", + "evergreen", + "leaped", + "##rock", + "correlation", + "exaggerated", + "weekday", + "unification", + "bump", + "tracing", + "brig", + "afb", + "pathways", + "utilizing", + "##ners", + "mod", + "mb", + "disturbance", + "kneeling", + "##stad", + "##guchi", + "100th", + "pune", + "##thy", + "decreasing", + "168", + "manipulation", + "miriam", + "academia", + "ecosystem", + "occupational", + "rbi", + "##lem", + "rift", + "##14", + "rotary", + "stacked", + "incorporation", + "awakening", + "generators", + "guerrero", + "racist", + "##omy", + "cyber", + "derivatives", + "culminated", + "allie", + "annals", + "panzer", + "sainte", + "wikipedia", + "pops", + "zu", + "austro", + "##vate", + "algerian", + "politely", + "nicholson", + "mornings", + "educate", + "tastes", + "thrill", + "dartmouth", + "##gating", + "db", + "##jee", + "regan", + "differing", + "concentrating", + "choreography", + "divinity", + "##media", + "pledged", + "alexandre", + "routing", + "gregor", + "madeline", + "##idal", + "apocalypse", + "##hora", + "gunfire", + "culminating", + "elves", + "fined", + "liang", + "lam", + "programmed", + "tar", + "guessing", + "transparency", + "gabrielle", + "##gna", + "cancellation", + "flexibility", + "##lining", + "accession", + "shea", + "stronghold", + "nets", + "specializes", + "##rgan", + "abused", + "hasan", + "sgt", + "ling", + "exceeding", + "##\u2084", + "admiration", + "supermarket", + "##ark", + "photographers", + "specialised", + "tilt", + "resonance", + "hmm", + "perfume", + "380", + "sami", + "threatens", + "garland", + "botany", + "guarding", + "boiled", + "greet", + "puppy", + "russo", + "supplier", + "wilmington", + "vibrant", + "vijay", + "##bius", + "paralympic", + "grumbled", + "paige", + "faa", + "licking", + "margins", + "hurricanes", + "##gong", + "fest", + "grenade", + "ripping", + "##uz", + "counseling", + "weigh", + "##sian", + "needles", + "wiltshire", + "edison", + "costly", + "##not", + "fulton", + "tramway", + "redesigned", + "staffordshire", + "cache", + "gasping", + "watkins", + "sleepy", + "candidacy", + "##group", + "monkeys", + "timeline", + "throbbing", + "##bid", + "##sos", + "berth", + "uzbekistan", + "vanderbilt", + "bothering", + "overturned", + "ballots", + "gem", + "##iger", + "sunglasses", + "subscribers", + "hooker", + "compelling", + "ang", + "exceptionally", + "saloon", + "stab", + "##rdi", + "carla", + "terrifying", + "rom", + "##vision", + "coil", + "##oids", + "satisfying", + "vendors", + "31st", + "mackay", + "deities", + "overlooked", + "ambient", + "bahamas", + "felipe", + "olympia", + "whirled", + "botanist", + "advertised", + "tugging", + "##dden", + "disciples", + "morales", + "unionist", + "rites", + "foley", + "morse", + "motives", + "creepy", + "##\u2080", + "soo", + "##sz", + "bargain", + "highness", + "frightening", + "turnpike", + "tory", + "reorganization", + "##cer", + "depict", + "biographer", + "##walk", + "unopposed", + "manifesto", + "##gles", + "institut", + "emile", + "accidental", + "kapoor", + "##dam", + "kilkenny", + "cortex", + "lively", + "##13", + "romanesque", + "jain", + "shan", + "cannons", + "##ood", + "##ske", + "petrol", + "echoing", + "amalgamated", + "disappears", + "cautious", + "proposes", + "sanctions", + "trenton", + "##\u0631", + "flotilla", + "aus", + "contempt", + "tor", + "canary", + "cote", + "theirs", + "##hun", + "conceptual", + "deleted", + "fascinating", + "paso", + "blazing", + "elf", + "honourable", + "hutchinson", + "##eiro", + "##outh", + "##zin", + "surveyor", + "tee", + "amidst", + "wooded", + "reissue", + "intro", + "##ono", + "cobb", + "shelters", + "newsletter", + "hanson", + "brace", + "encoding", + "confiscated", + "dem", + "caravan", + "marino", + "scroll", + "melodic", + "cows", + "imam", + "##adi", + "##aneous", + "northward", + "searches", + "biodiversity", + "cora", + "310", + "roaring", + "##bers", + "connell", + "theologian", + "halo", + "compose", + "pathetic", + "unmarried", + "dynamo", + "##oot", + "az", + "calculation", + "toulouse", + "deserves", + "humour", + "nr", + "forgiveness", + "tam", + "undergone", + "martyr", + "pamela", + "myths", + "whore", + "counselor", + "hicks", + "290", + "heavens", + "battleship", + "electromagnetic", + "##bbs", + "stellar", + "establishments", + "presley", + "hopped", + "##chin", + "temptation", + "90s", + "wills", + "nas", + "##yuan", + "nhs", + "##nya", + "seminars", + "##yev", + "adaptations", + "gong", + "asher", + "lex", + "indicator", + "sikh", + "tobago", + "cites", + "goin", + "##yte", + "satirical", + "##gies", + "characterised", + "correspond", + "bubbles", + "lure", + "participates", + "##vid", + "eruption", + "skate", + "therapeutic", + "1785", + "canals", + "wholesale", + "defaulted", + "sac", + "460", + "petit", + "##zzled", + "virgil", + "leak", + "ravens", + "256", + "portraying", + "##yx", + "ghetto", + "creators", + "dams", + "portray", + "vicente", + "##rington", + "fae", + "namesake", + "bounty", + "##arium", + "joachim", + "##ota", + "##iser", + "aforementioned", + "axle", + "snout", + "depended", + "dismantled", + "reuben", + "480", + "##ibly", + "gallagher", + "##lau", + "##pd", + "earnest", + "##ieu", + "##iary", + "inflicted", + "objections", + "##llar", + "asa", + "gritted", + "##athy", + "jericho", + "##sea", + "##was", + "flick", + "underside", + "ceramics", + "undead", + "substituted", + "195", + "eastward", + "undoubtedly", + "wheeled", + "chimney", + "##iche", + "guinness", + "cb", + "##ager", + "siding", + "##bell", + "traitor", + "baptiste", + "disguised", + "inauguration", + "149", + "tipperary", + "choreographer", + "perched", + "warmed", + "stationary", + "eco", + "##ike", + "##ntes", + "bacterial", + "##aurus", + "flores", + "phosphate", + "##core", + "attacker", + "invaders", + "alvin", + "intersects", + "a1", + "indirectly", + "immigrated", + "businessmen", + "cornelius", + "valves", + "narrated", + "pill", + "sober", + "ul", + "nationale", + "monastic", + "applicants", + "scenery", + "##jack", + "161", + "motifs", + "constitutes", + "cpu", + "##osh", + "jurisdictions", + "sd", + "tuning", + "irritation", + "woven", + "##uddin", + "fertility", + "gao", + "##erie", + "antagonist", + "impatient", + "glacial", + "hides", + "boarded", + "denominations", + "interception", + "##jas", + "cookie", + "nicola", + "##tee", + "algebraic", + "marquess", + "bahn", + "parole", + "buyers", + "bait", + "turbines", + "paperwork", + "bestowed", + "natasha", + "renee", + "oceans", + "purchases", + "157", + "vaccine", + "215", + "##tock", + "fixtures", + "playhouse", + "integrate", + "jai", + "oswald", + "intellectuals", + "##cky", + "booked", + "nests", + "mortimer", + "##isi", + "obsession", + "sept", + "##gler", + "##sum", + "440", + "scrutiny", + "simultaneous", + "squinted", + "##shin", + "collects", + "oven", + "shankar", + "penned", + "remarkably", + "##\u044f", + "slips", + "luggage", + "spectral", + "1786", + "collaborations", + "louie", + "consolidation", + "##ailed", + "##ivating", + "420", + "hoover", + "blackpool", + "harness", + "ignition", + "vest", + "tails", + "belmont", + "mongol", + "skinner", + "##nae", + "visually", + "mage", + "derry", + "##tism", + "##unce", + "stevie", + "transitional", + "##rdy", + "redskins", + "drying", + "prep", + "prospective", + "##21", + "annoyance", + "oversee", + "##loaded", + "fills", + "##books", + "##iki", + "announces", + "fda", + "scowled", + "respects", + "prasad", + "mystic", + "tucson", + "##vale", + "revue", + "springer", + "bankrupt", + "1772", + "aristotle", + "salvatore", + "habsburg", + "##geny", + "dal", + "natal", + "nut", + "pod", + "chewing", + "darts", + "moroccan", + "walkover", + "rosario", + "lenin", + "punjabi", + "##\u00dfe", + "grossed", + "scattering", + "wired", + "invasive", + "hui", + "polynomial", + "corridors", + "wakes", + "gina", + "portrays", + "##cratic", + "arid", + "retreating", + "erich", + "irwin", + "sniper", + "##dha", + "linen", + "lindsey", + "maneuver", + "butch", + "shutting", + "socio", + "bounce", + "commemorative", + "postseason", + "jeremiah", + "pines", + "275", + "mystical", + "beads", + "bp", + "abbas", + "furnace", + "bidding", + "consulted", + "assaulted", + "empirical", + "rubble", + "enclosure", + "sob", + "weakly", + "cancel", + "polly", + "yielded", + "##emann", + "curly", + "prediction", + "battered", + "70s", + "vhs", + "jacqueline", + "render", + "sails", + "barked", + "detailing", + "grayson", + "riga", + "sloane", + "raging", + "##yah", + "herbs", + "bravo", + "##athlon", + "alloy", + "giggle", + "imminent", + "suffers", + "assumptions", + "waltz", + "##itate", + "accomplishments", + "##ited", + "bathing", + "remixed", + "deception", + "prefix", + "##emia", + "deepest", + "##tier", + "##eis", + "balkan", + "frogs", + "##rong", + "slab", + "##pate", + "philosophers", + "peterborough", + "grains", + "imports", + "dickinson", + "rwanda", + "##atics", + "1774", + "dirk", + "lan", + "tablets", + "##rove", + "clone", + "##rice", + "caretaker", + "hostilities", + "mclean", + "##gre", + "regimental", + "treasures", + "norms", + "impose", + "tsar", + "tango", + "diplomacy", + "variously", + "complain", + "192", + "recognise", + "arrests", + "1779", + "celestial", + "pulitzer", + "##dus", + "bing", + "libretto", + "##moor", + "adele", + "splash", + "##rite", + "expectation", + "lds", + "confronts", + "##izer", + "spontaneous", + "harmful", + "wedge", + "entrepreneurs", + "buyer", + "##ope", + "bilingual", + "translate", + "rugged", + "conner", + "circulated", + "uae", + "eaton", + "##gra", + "##zzle", + "lingered", + "lockheed", + "vishnu", + "reelection", + "alonso", + "##oom", + "joints", + "yankee", + "headline", + "cooperate", + "heinz", + "laureate", + "invading", + "##sford", + "echoes", + "scandinavian", + "##dham", + "hugging", + "vitamin", + "salute", + "micah", + "hind", + "trader", + "##sper", + "radioactive", + "##ndra", + "militants", + "poisoned", + "ratified", + "remark", + "campeonato", + "deprived", + "wander", + "prop", + "##dong", + "outlook", + "##tani", + "##rix", + "##eye", + "chiang", + "darcy", + "##oping", + "mandolin", + "spice", + "statesman", + "babylon", + "182", + "walled", + "forgetting", + "afro", + "##cap", + "158", + "giorgio", + "buffer", + "##polis", + "planetary", + "##gis", + "overlap", + "terminals", + "kinda", + "centenary", + "##bir", + "arising", + "manipulate", + "elm", + "ke", + "1770", + "ak", + "##tad", + "chrysler", + "mapped", + "moose", + "pomeranian", + "quad", + "macarthur", + "assemblies", + "shoreline", + "recalls", + "stratford", + "##rted", + "noticeable", + "##evic", + "imp", + "##rita", + "##sque", + "accustomed", + "supplying", + "tents", + "disgusted", + "vogue", + "sipped", + "filters", + "khz", + "reno", + "selecting", + "luftwaffe", + "mcmahon", + "tyne", + "masterpiece", + "carriages", + "collided", + "dunes", + "exercised", + "flare", + "remembers", + "muzzle", + "##mobile", + "heck", + "##rson", + "burgess", + "lunged", + "middleton", + "boycott", + "bilateral", + "##sity", + "hazardous", + "lumpur", + "multiplayer", + "spotlight", + "jackets", + "goldman", + "liege", + "porcelain", + "rag", + "waterford", + "benz", + "attracts", + "hopeful", + "battling", + "ottomans", + "kensington", + "baked", + "hymns", + "cheyenne", + "lattice", + "levine", + "borrow", + "polymer", + "clashes", + "michaels", + "monitored", + "commitments", + "denounced", + "##25", + "##von", + "cavity", + "##oney", + "hobby", + "akin", + "##holders", + "futures", + "intricate", + "cornish", + "patty", + "##oned", + "illegally", + "dolphin", + "##lag", + "barlow", + "yellowish", + "maddie", + "apologized", + "luton", + "plagued", + "##puram", + "nana", + "##rds", + "sway", + "fanny", + "\u0142odz", + "##rino", + "psi", + "suspicions", + "hanged", + "##eding", + "initiate", + "charlton", + "##por", + "nak", + "competent", + "235", + "analytical", + "annex", + "wardrobe", + "reservations", + "##rma", + "sect", + "162", + "fairfax", + "hedge", + "piled", + "buckingham", + "uneven", + "bauer", + "simplicity", + "snyder", + "interpret", + "accountability", + "donors", + "moderately", + "byrd", + "continents", + "##cite", + "##max", + "disciple", + "hr", + "jamaican", + "ping", + "nominees", + "##uss", + "mongolian", + "diver", + "attackers", + "eagerly", + "ideological", + "pillows", + "miracles", + "apartheid", + "revolver", + "sulfur", + "clinics", + "moran", + "163", + "##enko", + "ile", + "katy", + "rhetoric", + "##icated", + "chronology", + "recycling", + "##hrer", + "elongated", + "mughal", + "pascal", + "profiles", + "vibration", + "databases", + "domination", + "##fare", + "##rant", + "matthias", + "digest", + "rehearsal", + "polling", + "weiss", + "initiation", + "reeves", + "clinging", + "flourished", + "impress", + "ngo", + "##hoff", + "##ume", + "buckley", + "symposium", + "rhythms", + "weed", + "emphasize", + "transforming", + "##taking", + "##gence", + "##yman", + "accountant", + "analyze", + "flicker", + "foil", + "priesthood", + "voluntarily", + "decreases", + "##80", + "##hya", + "slater", + "sv", + "charting", + "mcgill", + "##lde", + "moreno", + "##iu", + "besieged", + "zur", + "robes", + "##phic", + "admitting", + "api", + "deported", + "turmoil", + "peyton", + "earthquakes", + "##ares", + "nationalists", + "beau", + "clair", + "brethren", + "interrupt", + "welch", + "curated", + "galerie", + "requesting", + "164", + "##ested", + "impending", + "steward", + "viper", + "##vina", + "complaining", + "beautifully", + "brandy", + "foam", + "nl", + "1660", + "##cake", + "alessandro", + "punches", + "laced", + "explanations", + "##lim", + "attribute", + "clit", + "reggie", + "discomfort", + "##cards", + "smoothed", + "whales", + "##cene", + "adler", + "countered", + "duffy", + "disciplinary", + "widening", + "recipe", + "reliance", + "conducts", + "goats", + "gradient", + "preaching", + "##shaw", + "matilda", + "quasi", + "striped", + "meridian", + "cannabis", + "cordoba", + "certificates", + "##agh", + "##tering", + "graffiti", + "hangs", + "pilgrims", + "repeats", + "##ych", + "revive", + "urine", + "etat", + "##hawk", + "fueled", + "belts", + "fuzzy", + "susceptible", + "##hang", + "mauritius", + "salle", + "sincere", + "beers", + "hooks", + "##cki", + "arbitration", + "entrusted", + "advise", + "sniffed", + "seminar", + "junk", + "donnell", + "processors", + "principality", + "strapped", + "celia", + "mendoza", + "everton", + "fortunes", + "prejudice", + "starving", + "reassigned", + "steamer", + "##lund", + "tuck", + "evenly", + "foreman", + "##ffen", + "dans", + "375", + "envisioned", + "slit", + "##xy", + "baseman", + "liberia", + "rosemary", + "##weed", + "electrified", + "periodically", + "potassium", + "stride", + "contexts", + "sperm", + "slade", + "mariners", + "influx", + "bianca", + "subcommittee", + "##rane", + "spilling", + "icao", + "estuary", + "##nock", + "delivers", + "iphone", + "##ulata", + "isa", + "mira", + "bohemian", + "dessert", + "##sbury", + "welcoming", + "proudly", + "slowing", + "##chs", + "musee", + "ascension", + "russ", + "##vian", + "waits", + "##psy", + "africans", + "exploit", + "##morphic", + "gov", + "eccentric", + "crab", + "peck", + "##ull", + "entrances", + "formidable", + "marketplace", + "groom", + "bolted", + "metabolism", + "patton", + "robbins", + "courier", + "payload", + "endure", + "##ifier", + "andes", + "refrigerator", + "##pr", + "ornate", + "##uca", + "ruthless", + "illegitimate", + "masonry", + "strasbourg", + "bikes", + "adobe", + "##\u00b3", + "apples", + "quintet", + "willingly", + "niche", + "bakery", + "corpses", + "energetic", + "##cliffe", + "##sser", + "##ards", + "177", + "centimeters", + "centro", + "fuscous", + "cretaceous", + "rancho", + "##yde", + "andrei", + "telecom", + "tottenham", + "oasis", + "ordination", + "vulnerability", + "presiding", + "corey", + "cp", + "penguins", + "sims", + "##pis", + "malawi", + "piss", + "##48", + "correction", + "##cked", + "##ffle", + "##ryn", + "countdown", + "detectives", + "psychiatrist", + "psychedelic", + "dinosaurs", + "blouse", + "##get", + "choi", + "vowed", + "##oz", + "randomly", + "##pol", + "49ers", + "scrub", + "blanche", + "bruins", + "dusseldorf", + "##using", + "unwanted", + "##ums", + "212", + "dominique", + "elevations", + "headlights", + "om", + "laguna", + "##oga", + "1750", + "famously", + "ignorance", + "shrewsbury", + "##aine", + "ajax", + "breuning", + "che", + "confederacy", + "greco", + "overhaul", + "##screen", + "paz", + "skirts", + "disagreement", + "cruelty", + "jagged", + "phoebe", + "shifter", + "hovered", + "viruses", + "##wes", + "mandy", + "##lined", + "##gc", + "landlord", + "squirrel", + "dashed", + "##\u03b9", + "ornamental", + "gag", + "wally", + "grange", + "literal", + "spurs", + "undisclosed", + "proceeding", + "yin", + "##text", + "billie", + "orphan", + "spanned", + "humidity", + "indy", + "weighted", + "presentations", + "explosions", + "lucian", + "##tary", + "vaughn", + "hindus", + "##anga", + "##hell", + "psycho", + "171", + "daytona", + "protects", + "efficiently", + "rematch", + "sly", + "tandem", + "##oya", + "rebranded", + "impaired", + "hee", + "metropolis", + "peach", + "godfrey", + "diaspora", + "ethnicity", + "prosperous", + "gleaming", + "dar", + "grossing", + "playback", + "##rden", + "stripe", + "pistols", + "##tain", + "births", + "labelled", + "##cating", + "172", + "rudy", + "alba", + "##onne", + "aquarium", + "hostility", + "##gb", + "##tase", + "shudder", + "sumatra", + "hardest", + "lakers", + "consonant", + "creeping", + "demos", + "homicide", + "capsule", + "zeke", + "liberties", + "expulsion", + "pueblo", + "##comb", + "trait", + "transporting", + "##ddin", + "##neck", + "##yna", + "depart", + "gregg", + "mold", + "ledge", + "hangar", + "oldham", + "playboy", + "termination", + "analysts", + "gmbh", + "romero", + "##itic", + "insist", + "cradle", + "filthy", + "brightness", + "slash", + "shootout", + "deposed", + "bordering", + "##truct", + "isis", + "microwave", + "tumbled", + "sheltered", + "cathy", + "werewolves", + "messy", + "andersen", + "convex", + "clapped", + "clinched", + "satire", + "wasting", + "edo", + "vc", + "rufus", + "##jak", + "mont", + "##etti", + "poznan", + "##keeping", + "restructuring", + "transverse", + "##rland", + "azerbaijani", + "slovene", + "gestures", + "roommate", + "choking", + "shear", + "##quist", + "vanguard", + "oblivious", + "##hiro", + "disagreed", + "baptism", + "##lich", + "coliseum", + "##aceae", + "salvage", + "societe", + "cory", + "locke", + "relocation", + "relying", + "versailles", + "ahl", + "swelling", + "##elo", + "cheerful", + "##word", + "##edes", + "gin", + "sarajevo", + "obstacle", + "diverted", + "##nac", + "messed", + "thoroughbred", + "fluttered", + "utrecht", + "chewed", + "acquaintance", + "assassins", + "dispatch", + "mirza", + "##wart", + "nike", + "salzburg", + "swell", + "yen", + "##gee", + "idle", + "ligue", + "samson", + "##nds", + "##igh", + "playful", + "spawned", + "##cise", + "tease", + "##case", + "burgundy", + "##bot", + "stirring", + "skeptical", + "interceptions", + "marathi", + "##dies", + "bedrooms", + "aroused", + "pinch", + "##lik", + "preferences", + "tattoos", + "buster", + "digitally", + "projecting", + "rust", + "##ital", + "kitten", + "priorities", + "addison", + "pseudo", + "##guard", + "dusk", + "icons", + "sermon", + "##psis", + "##iba", + "bt", + "##lift", + "##xt", + "ju", + "truce", + "rink", + "##dah", + "##wy", + "defects", + "psychiatry", + "offences", + "calculate", + "glucose", + "##iful", + "##rized", + "##unda", + "francaise", + "##hari", + "richest", + "warwickshire", + "carly", + "1763", + "purity", + "redemption", + "lending", + "##cious", + "muse", + "bruises", + "cerebral", + "aero", + "carving", + "##name", + "preface", + "terminology", + "invade", + "monty", + "##int", + "anarchist", + "blurred", + "##iled", + "rossi", + "treats", + "guts", + "shu", + "foothills", + "ballads", + "undertaking", + "premise", + "cecilia", + "affiliates", + "blasted", + "conditional", + "wilder", + "minors", + "drone", + "rudolph", + "buffy", + "swallowing", + "horton", + "attested", + "##hop", + "rutherford", + "howell", + "primetime", + "livery", + "penal", + "##bis", + "minimize", + "hydro", + "wrecked", + "wrought", + "palazzo", + "##gling", + "cans", + "vernacular", + "friedman", + "nobleman", + "shale", + "walnut", + "danielle", + "##ection", + "##tley", + "sears", + "##kumar", + "chords", + "lend", + "flipping", + "streamed", + "por", + "dracula", + "gallons", + "sacrifices", + "gamble", + "orphanage", + "##iman", + "mckenzie", + "##gible", + "boxers", + "daly", + "##balls", + "##\u0627\u0646", + "208", + "##ific", + "##rative", + "##iq", + "exploited", + "slated", + "##uity", + "circling", + "hillary", + "pinched", + "goldberg", + "provost", + "campaigning", + "lim", + "piles", + "ironically", + "jong", + "mohan", + "successors", + "usaf", + "##tem", + "##ught", + "autobiographical", + "haute", + "preserves", + "##ending", + "acquitted", + "comparisons", + "203", + "hydroelectric", + "gangs", + "cypriot", + "torpedoes", + "rushes", + "chrome", + "derive", + "bumps", + "instability", + "fiat", + "pets", + "##mbe", + "silas", + "dye", + "reckless", + "settler", + "##itation", + "info", + "heats", + "##writing", + "176", + "canonical", + "maltese", + "fins", + "mushroom", + "stacy", + "aspen", + "avid", + "##kur", + "##loading", + "vickers", + "gaston", + "hillside", + "statutes", + "wilde", + "gail", + "kung", + "sabine", + "comfortably", + "motorcycles", + "##rgo", + "169", + "pneumonia", + "fetch", + "##sonic", + "axel", + "faintly", + "parallels", + "##oop", + "mclaren", + "spouse", + "compton", + "interdisciplinary", + "miner", + "##eni", + "181", + "clamped", + "##chal", + "##llah", + "separates", + "versa", + "##mler", + "scarborough", + "labrador", + "##lity", + "##osing", + "rutgers", + "hurdles", + "como", + "166", + "burt", + "divers", + "##100", + "wichita", + "cade", + "coincided", + "##erson", + "bruised", + "mla", + "##pper", + "vineyard", + "##ili", + "##brush", + "notch", + "mentioning", + "jase", + "hearted", + "kits", + "doe", + "##acle", + "pomerania", + "##ady", + "ronan", + "seizure", + "pavel", + "problematic", + "##zaki", + "domenico", + "##ulin", + "catering", + "penelope", + "dependence", + "parental", + "emilio", + "ministerial", + "atkinson", + "##bolic", + "clarkson", + "chargers", + "colby", + "grill", + "peeked", + "arises", + "summon", + "##aged", + "fools", + "##grapher", + "faculties", + "qaeda", + "##vial", + "garner", + "refurbished", + "##hwa", + "geelong", + "disasters", + "nudged", + "bs", + "shareholder", + "lori", + "algae", + "reinstated", + "rot", + "##ades", + "##nous", + "invites", + "stainless", + "183", + "inclusive", + "##itude", + "diocesan", + "til", + "##icz", + "denomination", + "##xa", + "benton", + "floral", + "registers", + "##ider", + "##erman", + "##kell", + "absurd", + "brunei", + "guangzhou", + "hitter", + "retaliation", + "##uled", + "##eve", + "blanc", + "nh", + "consistency", + "contamination", + "##eres", + "##rner", + "dire", + "palermo", + "broadcasters", + "diaries", + "inspire", + "vols", + "brewer", + "tightening", + "ky", + "mixtape", + "hormone", + "##tok", + "stokes", + "##color", + "##dly", + "##ssi", + "pg", + "##ometer", + "##lington", + "sanitation", + "##tility", + "intercontinental", + "apps", + "##adt", + "\u00b9\u2044\u2082", + "cylinders", + "economies", + "favourable", + "unison", + "croix", + "gertrude", + "odyssey", + "vanity", + "dangling", + "##logists", + "upgrades", + "dice", + "middleweight", + "practitioner", + "##ight", + "206", + "henrik", + "parlor", + "orion", + "angered", + "lac", + "python", + "blurted", + "##rri", + "sensual", + "intends", + "swings", + "angled", + "##phs", + "husky", + "attain", + "peerage", + "precinct", + "textiles", + "cheltenham", + "shuffled", + "dai", + "confess", + "tasting", + "bhutan", + "##riation", + "tyrone", + "segregation", + "abrupt", + "ruiz", + "##rish", + "smirked", + "blackwell", + "confidential", + "browning", + "amounted", + "##put", + "vase", + "scarce", + "fabulous", + "raided", + "staple", + "guyana", + "unemployed", + "glider", + "shay", + "##tow", + "carmine", + "troll", + "intervene", + "squash", + "superstar", + "##uce", + "cylindrical", + "len", + "roadway", + "researched", + "handy", + "##rium", + "##jana", + "meta", + "lao", + "declares", + "##rring", + "##tadt", + "##elin", + "##kova", + "willem", + "shrubs", + "napoleonic", + "realms", + "skater", + "qi", + "volkswagen", + "##\u0142", + "tad", + "hara", + "archaeologist", + "awkwardly", + "eerie", + "##kind", + "wiley", + "##heimer", + "##24", + "titus", + "organizers", + "cfl", + "crusaders", + "lama", + "usb", + "vent", + "enraged", + "thankful", + "occupants", + "maximilian", + "##gaard", + "possessing", + "textbooks", + "##oran", + "collaborator", + "quaker", + "##ulo", + "avalanche", + "mono", + "silky", + "straits", + "isaiah", + "mustang", + "surged", + "resolutions", + "potomac", + "descend", + "cl", + "kilograms", + "plato", + "strains", + "saturdays", + "##olin", + "bernstein", + "##ype", + "holstein", + "ponytail", + "##watch", + "belize", + "conversely", + "heroine", + "perpetual", + "##ylus", + "charcoal", + "piedmont", + "glee", + "negotiating", + "backdrop", + "prologue", + "##jah", + "##mmy", + "pasadena", + "climbs", + "ramos", + "sunni", + "##holm", + "##tner", + "##tri", + "anand", + "deficiency", + "hertfordshire", + "stout", + "##avi", + "aperture", + "orioles", + "##irs", + "doncaster", + "intrigued", + "bombed", + "coating", + "otis", + "##mat", + "cocktail", + "##jit", + "##eto", + "amir", + "arousal", + "sar", + "##proof", + "##act", + "##ories", + "dixie", + "pots", + "##bow", + "whereabouts", + "159", + "##fted", + "drains", + "bullying", + "cottages", + "scripture", + "coherent", + "fore", + "poe", + "appetite", + "##uration", + "sampled", + "##ators", + "##dp", + "derrick", + "rotor", + "jays", + "peacock", + "installment", + "##rro", + "advisors", + "##coming", + "rodeo", + "scotch", + "##mot", + "##db", + "##fen", + "##vant", + "ensued", + "rodrigo", + "dictatorship", + "martyrs", + "twenties", + "##\u043d", + "towed", + "incidence", + "marta", + "rainforest", + "sai", + "scaled", + "##cles", + "oceanic", + "qualifiers", + "symphonic", + "mcbride", + "dislike", + "generalized", + "aubrey", + "colonization", + "##iation", + "##lion", + "##ssing", + "disliked", + "lublin", + "salesman", + "##ulates", + "spherical", + "whatsoever", + "sweating", + "avalon", + "contention", + "punt", + "severity", + "alderman", + "atari", + "##dina", + "##grant", + "##rop", + "scarf", + "seville", + "vertices", + "annexation", + "fairfield", + "fascination", + "inspiring", + "launches", + "palatinate", + "regretted", + "##rca", + "feral", + "##iom", + "elk", + "nap", + "olsen", + "reddy", + "yong", + "##leader", + "##iae", + "garment", + "transports", + "feng", + "gracie", + "outrage", + "viceroy", + "insides", + "##esis", + "breakup", + "grady", + "organizer", + "softer", + "grimaced", + "222", + "murals", + "galicia", + "arranging", + "vectors", + "##rsten", + "bas", + "##sb", + "##cens", + "sloan", + "##eka", + "bitten", + "ara", + "fender", + "nausea", + "bumped", + "kris", + "banquet", + "comrades", + "detector", + "persisted", + "##llan", + "adjustment", + "endowed", + "cinemas", + "##shot", + "sellers", + "##uman", + "peek", + "epa", + "kindly", + "neglect", + "simpsons", + "talon", + "mausoleum", + "runaway", + "hangul", + "lookout", + "##cic", + "rewards", + "coughed", + "acquainted", + "chloride", + "##ald", + "quicker", + "accordion", + "neolithic", + "##qa", + "artemis", + "coefficient", + "lenny", + "pandora", + "tx", + "##xed", + "ecstasy", + "litter", + "segunda", + "chairperson", + "gemma", + "hiss", + "rumor", + "vow", + "nasal", + "antioch", + "compensate", + "patiently", + "transformers", + "##eded", + "judo", + "morrow", + "penis", + "posthumous", + "philips", + "bandits", + "husbands", + "denote", + "flaming", + "##any", + "##phones", + "langley", + "yorker", + "1760", + "walters", + "##uo", + "##kle", + "gubernatorial", + "fatty", + "samsung", + "leroy", + "outlaw", + "##nine", + "unpublished", + "poole", + "jakob", + "##\u1d62", + "##\u2099", + "crete", + "distorted", + "superiority", + "##dhi", + "intercept", + "crust", + "mig", + "claus", + "crashes", + "positioning", + "188", + "stallion", + "301", + "frontal", + "armistice", + "##estinal", + "elton", + "aj", + "encompassing", + "camel", + "commemorated", + "malaria", + "woodward", + "calf", + "cigar", + "penetrate", + "##oso", + "willard", + "##rno", + "##uche", + "illustrate", + "amusing", + "convergence", + "noteworthy", + "##lma", + "##rva", + "journeys", + "realise", + "manfred", + "##sable", + "410", + "##vocation", + "hearings", + "fiance", + "##posed", + "educators", + "provoked", + "adjusting", + "##cturing", + "modular", + "stockton", + "paterson", + "vlad", + "rejects", + "electors", + "selena", + "maureen", + "##tres", + "uber", + "##rce", + "swirled", + "##num", + "proportions", + "nanny", + "pawn", + "naturalist", + "parma", + "apostles", + "awoke", + "ethel", + "wen", + "##bey", + "monsoon", + "overview", + "##inating", + "mccain", + "rendition", + "risky", + "adorned", + "##ih", + "equestrian", + "germain", + "nj", + "conspicuous", + "confirming", + "##yoshi", + "shivering", + "##imeter", + "milestone", + "rumours", + "flinched", + "bounds", + "smacked", + "token", + "##bei", + "lectured", + "automobiles", + "##shore", + "impacted", + "##iable", + "nouns", + "nero", + "##leaf", + "ismail", + "prostitute", + "trams", + "##lace", + "bridget", + "sud", + "stimulus", + "impressions", + "reins", + "revolves", + "##oud", + "##gned", + "giro", + "honeymoon", + "##swell", + "criterion", + "##sms", + "##uil", + "libyan", + "prefers", + "##osition", + "211", + "preview", + "sucks", + "accusation", + "bursts", + "metaphor", + "diffusion", + "tolerate", + "faye", + "betting", + "cinematographer", + "liturgical", + "specials", + "bitterly", + "humboldt", + "##ckle", + "flux", + "rattled", + "##itzer", + "archaeologists", + "odor", + "authorised", + "marshes", + "discretion", + "##\u043e\u0432", + "alarmed", + "archaic", + "inverse", + "##leton", + "explorers", + "##pine", + "drummond", + "tsunami", + "woodlands", + "##minate", + "##tland", + "booklet", + "insanity", + "owning", + "insert", + "crafted", + "calculus", + "##tore", + "receivers", + "##bt", + "stung", + "##eca", + "##nched", + "prevailing", + "travellers", + "eyeing", + "lila", + "graphs", + "##borne", + "178", + "julien", + "##won", + "morale", + "adaptive", + "therapist", + "erica", + "cw", + "libertarian", + "bowman", + "pitches", + "vita", + "##ional", + "crook", + "##ads", + "##entation", + "caledonia", + "mutiny", + "##sible", + "1840s", + "automation", + "##\u00df", + "flock", + "##pia", + "ironic", + "pathology", + "##imus", + "remarried", + "##22", + "joker", + "withstand", + "energies", + "##att", + "shropshire", + "hostages", + "madeleine", + "tentatively", + "conflicting", + "mateo", + "recipes", + "euros", + "ol", + "mercenaries", + "nico", + "##ndon", + "albuquerque", + "augmented", + "mythical", + "bel", + "freud", + "##child", + "cough", + "##lica", + "365", + "freddy", + "lillian", + "genetically", + "nuremberg", + "calder", + "209", + "bonn", + "outdoors", + "paste", + "suns", + "urgency", + "vin", + "restraint", + "tyson", + "##cera", + "##selle", + "barrage", + "bethlehem", + "kahn", + "##par", + "mounts", + "nippon", + "barony", + "happier", + "ryu", + "makeshift", + "sheldon", + "blushed", + "castillo", + "barking", + "listener", + "taped", + "bethel", + "fluent", + "headlines", + "pornography", + "rum", + "disclosure", + "sighing", + "mace", + "doubling", + "gunther", + "manly", + "##plex", + "rt", + "interventions", + "physiological", + "forwards", + "emerges", + "##tooth", + "##gny", + "compliment", + "rib", + "recession", + "visibly", + "barge", + "faults", + "connector", + "exquisite", + "prefect", + "##rlin", + "patio", + "##cured", + "elevators", + "brandt", + "italics", + "pena", + "173", + "wasp", + "satin", + "ea", + "botswana", + "graceful", + "respectable", + "##jima", + "##rter", + "##oic", + "franciscan", + "generates", + "##dl", + "alfredo", + "disgusting", + "##olate", + "##iously", + "sherwood", + "warns", + "cod", + "promo", + "cheryl", + "sino", + "##\u0629", + "##escu", + "twitch", + "##zhi", + "brownish", + "thom", + "ortiz", + "##dron", + "densely", + "##beat", + "carmel", + "reinforce", + "##bana", + "187", + "anastasia", + "downhill", + "vertex", + "contaminated", + "remembrance", + "harmonic", + "homework", + "##sol", + "fiancee", + "gears", + "olds", + "angelica", + "loft", + "ramsay", + "quiz", + "colliery", + "sevens", + "##cape", + "autism", + "##hil", + "walkway", + "##boats", + "ruben", + "abnormal", + "ounce", + "khmer", + "##bbe", + "zachary", + "bedside", + "morphology", + "punching", + "##olar", + "sparrow", + "convinces", + "##35", + "hewitt", + "queer", + "remastered", + "rods", + "mabel", + "solemn", + "notified", + "lyricist", + "symmetric", + "##xide", + "174", + "encore", + "passports", + "wildcats", + "##uni", + "baja", + "##pac", + "mildly", + "##ease", + "bleed", + "commodity", + "mounds", + "glossy", + "orchestras", + "##omo", + "damian", + "prelude", + "ambitions", + "##vet", + "awhile", + "remotely", + "##aud", + "asserts", + "imply", + "##iques", + "distinctly", + "modelling", + "remedy", + "##dded", + "windshield", + "dani", + "xiao", + "##endra", + "audible", + "powerplant", + "1300", + "invalid", + "elemental", + "acquisitions", + "##hala", + "immaculate", + "libby", + "plata", + "smuggling", + "ventilation", + "denoted", + "minh", + "##morphism", + "430", + "differed", + "dion", + "kelley", + "lore", + "mocking", + "sabbath", + "spikes", + "hygiene", + "drown", + "runoff", + "stylized", + "tally", + "liberated", + "aux", + "interpreter", + "righteous", + "aba", + "siren", + "reaper", + "pearce", + "millie", + "##cier", + "##yra", + "gaius", + "##iso", + "captures", + "##ttering", + "dorm", + "claudio", + "##sic", + "benches", + "knighted", + "blackness", + "##ored", + "discount", + "fumble", + "oxidation", + "routed", + "##\u03c2", + "novak", + "perpendicular", + "spoiled", + "fracture", + "splits", + "##urt", + "pads", + "topology", + "##cats", + "axes", + "fortunate", + "offenders", + "protestants", + "esteem", + "221", + "broadband", + "convened", + "frankly", + "hound", + "prototypes", + "isil", + "facilitated", + "keel", + "##sher", + "sahara", + "awaited", + "bubba", + "orb", + "prosecutors", + "186", + "hem", + "520", + "##xing", + "relaxing", + "remnant", + "romney", + "sorted", + "slalom", + "stefano", + "ulrich", + "##active", + "exemption", + "folder", + "pauses", + "foliage", + "hitchcock", + "epithet", + "204", + "criticisms", + "##aca", + "ballistic", + "brody", + "hinduism", + "chaotic", + "youths", + "equals", + "##pala", + "pts", + "thicker", + "analogous", + "capitalist", + "improvised", + "overseeing", + "sinatra", + "ascended", + "beverage", + "##tl", + "straightforward", + "##kon", + "curran", + "##west", + "bois", + "325", + "induce", + "surveying", + "emperors", + "sax", + "unpopular", + "##kk", + "cartoonist", + "fused", + "##mble", + "unto", + "##yuki", + "localities", + "##cko", + "##ln", + "darlington", + "slain", + "academie", + "lobbying", + "sediment", + "puzzles", + "##grass", + "defiance", + "dickens", + "manifest", + "tongues", + "alumnus", + "arbor", + "coincide", + "184", + "appalachian", + "mustafa", + "examiner", + "cabaret", + "traumatic", + "yves", + "bracelet", + "draining", + "heroin", + "magnum", + "baths", + "odessa", + "consonants", + "mitsubishi", + "##gua", + "kellan", + "vaudeville", + "##fr", + "joked", + "null", + "straps", + "probation", + "##\u0142aw", + "ceded", + "interfaces", + "##pas", + "##zawa", + "blinding", + "viet", + "224", + "rothschild", + "museo", + "640", + "huddersfield", + "##vr", + "tactic", + "##storm", + "brackets", + "dazed", + "incorrectly", + "##vu", + "reg", + "glazed", + "fearful", + "manifold", + "benefited", + "irony", + "##sun", + "stumbling", + "##rte", + "willingness", + "balkans", + "mei", + "wraps", + "##aba", + "injected", + "##lea", + "gu", + "syed", + "harmless", + "##hammer", + "bray", + "takeoff", + "poppy", + "timor", + "cardboard", + "astronaut", + "purdue", + "weeping", + "southbound", + "cursing", + "stalls", + "diagonal", + "##neer", + "lamar", + "bryce", + "comte", + "weekdays", + "harrington", + "##uba", + "negatively", + "##see", + "lays", + "grouping", + "##cken", + "##henko", + "affirmed", + "halle", + "modernist", + "##lai", + "hodges", + "smelling", + "aristocratic", + "baptized", + "dismiss", + "justification", + "oilers", + "##now", + "coupling", + "qin", + "snack", + "healer", + "##qing", + "gardener", + "layla", + "battled", + "formulated", + "stephenson", + "gravitational", + "##gill", + "##jun", + "1768", + "granny", + "coordinating", + "suites", + "##cd", + "##ioned", + "monarchs", + "##cote", + "##hips", + "sep", + "blended", + "apr", + "barrister", + "deposition", + "fia", + "mina", + "policemen", + "paranoid", + "##pressed", + "churchyard", + "covert", + "crumpled", + "creep", + "abandoning", + "tr", + "transmit", + "conceal", + "barr", + "understands", + "readiness", + "spire", + "##cology", + "##enia", + "##erry", + "610", + "startling", + "unlock", + "vida", + "bowled", + "slots", + "##nat", + "##islav", + "spaced", + "trusting", + "admire", + "rig", + "##ink", + "slack", + "##70", + "mv", + "207", + "casualty", + "##wei", + "classmates", + "##odes", + "##rar", + "##rked", + "amherst", + "furnished", + "evolve", + "foundry", + "menace", + "mead", + "##lein", + "flu", + "wesleyan", + "##kled", + "monterey", + "webber", + "##vos", + "wil", + "##mith", + "##\u043d\u0430", + "bartholomew", + "justices", + "restrained", + "##cke", + "amenities", + "191", + "mediated", + "sewage", + "trenches", + "ml", + "mainz", + "##thus", + "1800s", + "##cula", + "##inski", + "caine", + "bonding", + "213", + "converts", + "spheres", + "superseded", + "marianne", + "crypt", + "sweaty", + "ensign", + "historia", + "##br", + "spruce", + "##post", + "##ask", + "forks", + "thoughtfully", + "yukon", + "pamphlet", + "ames", + "##uter", + "karma", + "##yya", + "bryn", + "negotiation", + "sighs", + "incapable", + "##mbre", + "##ntial", + "actresses", + "taft", + "##mill", + "luce", + "prevailed", + "##amine", + "1773", + "motionless", + "envoy", + "testify", + "investing", + "sculpted", + "instructors", + "provence", + "kali", + "cullen", + "horseback", + "##while", + "goodwin", + "##jos", + "gaa", + "norte", + "##ldon", + "modify", + "wavelength", + "abd", + "214", + "skinned", + "sprinter", + "forecast", + "scheduling", + "marries", + "squared", + "tentative", + "##chman", + "boer", + "##isch", + "bolts", + "swap", + "fisherman", + "assyrian", + "impatiently", + "guthrie", + "martins", + "murdoch", + "194", + "tanya", + "nicely", + "dolly", + "lacy", + "med", + "##45", + "syn", + "decks", + "fashionable", + "millionaire", + "##ust", + "surfing", + "##ml", + "##ision", + "heaved", + "tammy", + "consulate", + "attendees", + "routinely", + "197", + "fuse", + "saxophonist", + "backseat", + "malaya", + "##lord", + "scowl", + "tau", + "##ishly", + "193", + "sighted", + "steaming", + "##rks", + "303", + "911", + "##holes", + "##hong", + "ching", + "##wife", + "bless", + "conserved", + "jurassic", + "stacey", + "unix", + "zion", + "chunk", + "rigorous", + "blaine", + "198", + "peabody", + "slayer", + "dismay", + "brewers", + "nz", + "##jer", + "det", + "##glia", + "glover", + "postwar", + "int", + "penetration", + "sylvester", + "imitation", + "vertically", + "airlift", + "heiress", + "knoxville", + "viva", + "##uin", + "390", + "macon", + "##rim", + "##fighter", + "##gonal", + "janice", + "##orescence", + "##wari", + "marius", + "belongings", + "leicestershire", + "196", + "blanco", + "inverted", + "preseason", + "sanity", + "sobbing", + "##due", + "##elt", + "##dled", + "collingwood", + "regeneration", + "flickering", + "shortest", + "##mount", + "##osi", + "feminism", + "##lat", + "sherlock", + "cabinets", + "fumbled", + "northbound", + "precedent", + "snaps", + "##mme", + "researching", + "##akes", + "guillaume", + "insights", + "manipulated", + "vapor", + "neighbour", + "sap", + "gangster", + "frey", + "f1", + "stalking", + "scarcely", + "callie", + "barnett", + "tendencies", + "audi", + "doomed", + "assessing", + "slung", + "panchayat", + "ambiguous", + "bartlett", + "##etto", + "distributing", + "violating", + "wolverhampton", + "##hetic", + "swami", + "histoire", + "##urus", + "liable", + "pounder", + "groin", + "hussain", + "larsen", + "popping", + "surprises", + "##atter", + "vie", + "curt", + "##station", + "mute", + "relocate", + "musicals", + "authorization", + "richter", + "##sef", + "immortality", + "tna", + "bombings", + "##press", + "deteriorated", + "yiddish", + "##acious", + "robbed", + "colchester", + "cs", + "pmid", + "ao", + "verified", + "balancing", + "apostle", + "swayed", + "recognizable", + "oxfordshire", + "retention", + "nottinghamshire", + "contender", + "judd", + "invitational", + "shrimp", + "uhf", + "##icient", + "cleaner", + "longitudinal", + "tanker", + "##mur", + "acronym", + "broker", + "koppen", + "sundance", + "suppliers", + "##gil", + "4000", + "clipped", + "fuels", + "petite", + "##anne", + "landslide", + "helene", + "diversion", + "populous", + "landowners", + "auspices", + "melville", + "quantitative", + "##xes", + "ferries", + "nicky", + "##llus", + "doo", + "haunting", + "roche", + "carver", + "downed", + "unavailable", + "##pathy", + "approximation", + "hiroshima", + "##hue", + "garfield", + "valle", + "comparatively", + "keyboardist", + "traveler", + "##eit", + "congestion", + "calculating", + "subsidiaries", + "##bate", + "serb", + "modernization", + "fairies", + "deepened", + "ville", + "averages", + "##lore", + "inflammatory", + "tonga", + "##itch", + "co\u2082", + "squads", + "##hea", + "gigantic", + "serum", + "enjoyment", + "retailer", + "verona", + "35th", + "cis", + "##phobic", + "magna", + "technicians", + "##vati", + "arithmetic", + "##sport", + "levin", + "##dation", + "amtrak", + "chow", + "sienna", + "##eyer", + "backstage", + "entrepreneurship", + "##otic", + "learnt", + "tao", + "##udy", + "worcestershire", + "formulation", + "baggage", + "hesitant", + "bali", + "sabotage", + "##kari", + "barren", + "enhancing", + "murmur", + "pl", + "freshly", + "putnam", + "syntax", + "aces", + "medicines", + "resentment", + "bandwidth", + "##sier", + "grins", + "chili", + "guido", + "##sei", + "framing", + "implying", + "gareth", + "lissa", + "genevieve", + "pertaining", + "admissions", + "geo", + "thorpe", + "proliferation", + "sato", + "bela", + "analyzing", + "parting", + "##gor", + "awakened", + "##isman", + "huddled", + "secrecy", + "##kling", + "hush", + "gentry", + "540", + "dungeons", + "##ego", + "coasts", + "##utz", + "sacrificed", + "##chule", + "landowner", + "mutually", + "prevalence", + "programmer", + "adolescent", + "disrupted", + "seaside", + "gee", + "trusts", + "vamp", + "georgie", + "##nesian", + "##iol", + "schedules", + "sindh", + "##market", + "etched", + "hm", + "sparse", + "bey", + "beaux", + "scratching", + "gliding", + "unidentified", + "216", + "collaborating", + "gems", + "jesuits", + "oro", + "accumulation", + "shaping", + "mbe", + "anal", + "##xin", + "231", + "enthusiasts", + "newscast", + "##egan", + "janata", + "dewey", + "parkinson", + "179", + "ankara", + "biennial", + "towering", + "dd", + "inconsistent", + "950", + "##chet", + "thriving", + "terminate", + "cabins", + "furiously", + "eats", + "advocating", + "donkey", + "marley", + "muster", + "phyllis", + "leiden", + "##user", + "grassland", + "glittering", + "iucn", + "loneliness", + "217", + "memorandum", + "armenians", + "##ddle", + "popularized", + "rhodesia", + "60s", + "lame", + "##illon", + "sans", + "bikini", + "header", + "orbits", + "##xx", + "##finger", + "##ulator", + "sharif", + "spines", + "biotechnology", + "strolled", + "naughty", + "yates", + "##wire", + "fremantle", + "milo", + "##mour", + "abducted", + "removes", + "##atin", + "humming", + "wonderland", + "##chrome", + "##ester", + "hume", + "pivotal", + "##rates", + "armand", + "grams", + "believers", + "elector", + "rte", + "apron", + "bis", + "scraped", + "##yria", + "endorsement", + "initials", + "##llation", + "eps", + "dotted", + "hints", + "buzzing", + "emigration", + "nearer", + "##tom", + "indicators", + "##ulu", + "coarse", + "neutron", + "protectorate", + "##uze", + "directional", + "exploits", + "pains", + "loire", + "1830s", + "proponents", + "guggenheim", + "rabbits", + "ritchie", + "305", + "hectare", + "inputs", + "hutton", + "##raz", + "verify", + "##ako", + "boilers", + "longitude", + "##lev", + "skeletal", + "yer", + "emilia", + "citrus", + "compromised", + "##gau", + "pokemon", + "prescription", + "paragraph", + "eduard", + "cadillac", + "attire", + "categorized", + "kenyan", + "weddings", + "charley", + "##bourg", + "entertain", + "monmouth", + "##lles", + "nutrients", + "davey", + "mesh", + "incentive", + "practised", + "ecosystems", + "kemp", + "subdued", + "overheard", + "##rya", + "bodily", + "maxim", + "##nius", + "apprenticeship", + "ursula", + "##fight", + "lodged", + "rug", + "silesian", + "unconstitutional", + "patel", + "inspected", + "coyote", + "unbeaten", + "##hak", + "34th", + "disruption", + "convict", + "parcel", + "##cl", + "##nham", + "collier", + "implicated", + "mallory", + "##iac", + "##lab", + "susannah", + "winkler", + "##rber", + "shia", + "phelps", + "sediments", + "graphical", + "robotic", + "##sner", + "adulthood", + "mart", + "smoked", + "##isto", + "kathryn", + "clarified", + "##aran", + "divides", + "convictions", + "oppression", + "pausing", + "burying", + "##mt", + "federico", + "mathias", + "eileen", + "##tana", + "kite", + "hunched", + "##acies", + "189", + "##atz", + "disadvantage", + "liza", + "kinetic", + "greedy", + "paradox", + "yokohama", + "dowager", + "trunks", + "ventured", + "##gement", + "gupta", + "vilnius", + "olaf", + "##thest", + "crimean", + "hopper", + "##ej", + "progressively", + "arturo", + "mouthed", + "arrondissement", + "##fusion", + "rubin", + "simulcast", + "oceania", + "##orum", + "##stra", + "##rred", + "busiest", + "intensely", + "navigator", + "cary", + "##vine", + "##hini", + "##bies", + "fife", + "rowe", + "rowland", + "posing", + "insurgents", + "shafts", + "lawsuits", + "activate", + "conor", + "inward", + "culturally", + "garlic", + "265", + "##eering", + "eclectic", + "##hui", + "##kee", + "##nl", + "furrowed", + "vargas", + "meteorological", + "rendezvous", + "##aus", + "culinary", + "commencement", + "##dition", + "quota", + "##notes", + "mommy", + "salaries", + "overlapping", + "mule", + "##iology", + "##mology", + "sums", + "wentworth", + "##isk", + "##zione", + "mainline", + "subgroup", + "##illy", + "hack", + "plaintiff", + "verdi", + "bulb", + "differentiation", + "engagements", + "multinational", + "supplemented", + "bertrand", + "caller", + "regis", + "##naire", + "##sler", + "##arts", + "##imated", + "blossom", + "propagation", + "kilometer", + "viaduct", + "vineyards", + "##uate", + "beckett", + "optimization", + "golfer", + "songwriters", + "seminal", + "semitic", + "thud", + "volatile", + "evolving", + "ridley", + "##wley", + "trivial", + "distributions", + "scandinavia", + "jiang", + "##ject", + "wrestled", + "insistence", + "##dio", + "emphasizes", + "napkin", + "##ods", + "adjunct", + "rhyme", + "##ricted", + "##eti", + "hopeless", + "surrounds", + "tremble", + "32nd", + "smoky", + "##ntly", + "oils", + "medicinal", + "padded", + "steer", + "wilkes", + "219", + "255", + "concessions", + "hue", + "uniquely", + "blinded", + "landon", + "yahoo", + "##lane", + "hendrix", + "commemorating", + "dex", + "specify", + "chicks", + "##ggio", + "intercity", + "1400", + "morley", + "##torm", + "highlighting", + "##oting", + "pang", + "oblique", + "stalled", + "##liner", + "flirting", + "newborn", + "1769", + "bishopric", + "shaved", + "232", + "currie", + "##ush", + "dharma", + "spartan", + "##ooped", + "favorites", + "smug", + "novella", + "sirens", + "abusive", + "creations", + "espana", + "##lage", + "paradigm", + "semiconductor", + "sheen", + "##rdo", + "##yen", + "##zak", + "nrl", + "renew", + "##pose", + "##tur", + "adjutant", + "marches", + "norma", + "##enity", + "ineffective", + "weimar", + "grunt", + "##gat", + "lordship", + "plotting", + "expenditure", + "infringement", + "lbs", + "refrain", + "av", + "mimi", + "mistakenly", + "postmaster", + "1771", + "##bara", + "ras", + "motorsports", + "tito", + "199", + "subjective", + "##zza", + "bully", + "stew", + "##kaya", + "prescott", + "1a", + "##raphic", + "##zam", + "bids", + "styling", + "paranormal", + "reeve", + "sneaking", + "exploding", + "katz", + "akbar", + "migrant", + "syllables", + "indefinitely", + "##ogical", + "destroys", + "replaces", + "applause", + "##phine", + "pest", + "##fide", + "218", + "articulated", + "bertie", + "##thing", + "##cars", + "##ptic", + "courtroom", + "crowley", + "aesthetics", + "cummings", + "tehsil", + "hormones", + "titanic", + "dangerously", + "##ibe", + "stadion", + "jaenelle", + "auguste", + "ciudad", + "##chu", + "mysore", + "partisans", + "##sio", + "lucan", + "philipp", + "##aly", + "debating", + "henley", + "interiors", + "##rano", + "##tious", + "homecoming", + "beyonce", + "usher", + "henrietta", + "prepares", + "weeds", + "##oman", + "ely", + "plucked", + "##pire", + "##dable", + "luxurious", + "##aq", + "artifact", + "password", + "pasture", + "juno", + "maddy", + "minsk", + "##dder", + "##ologies", + "##rone", + "assessments", + "martian", + "royalist", + "1765", + "examines", + "##mani", + "##rge", + "nino", + "223", + "parry", + "scooped", + "relativity", + "##eli", + "##uting", + "##cao", + "congregational", + "noisy", + "traverse", + "##agawa", + "strikeouts", + "nickelodeon", + "obituary", + "transylvania", + "binds", + "depictions", + "polk", + "trolley", + "##yed", + "##lard", + "breeders", + "##under", + "dryly", + "hokkaido", + "1762", + "strengths", + "stacks", + "bonaparte", + "connectivity", + "neared", + "prostitutes", + "stamped", + "anaheim", + "gutierrez", + "sinai", + "##zzling", + "bram", + "fresno", + "madhya", + "##86", + "proton", + "##lena", + "##llum", + "##phon", + "reelected", + "wanda", + "##anus", + "##lb", + "ample", + "distinguishing", + "##yler", + "grasping", + "sermons", + "tomato", + "bland", + "stimulation", + "avenues", + "##eux", + "spreads", + "scarlett", + "fern", + "pentagon", + "assert", + "baird", + "chesapeake", + "ir", + "calmed", + "distortion", + "fatalities", + "##olis", + "correctional", + "pricing", + "##astic", + "##gina", + "prom", + "dammit", + "ying", + "collaborate", + "##chia", + "welterweight", + "33rd", + "pointer", + "substitution", + "bonded", + "umpire", + "communicating", + "multitude", + "paddle", + "##obe", + "federally", + "intimacy", + "##insky", + "betray", + "ssr", + "##lett", + "##lean", + "##lves", + "##therapy", + "airbus", + "##tery", + "functioned", + "ud", + "bearer", + "biomedical", + "netflix", + "##hire", + "##nca", + "condom", + "brink", + "ik", + "##nical", + "macy", + "##bet", + "flap", + "gma", + "experimented", + "jelly", + "lavender", + "##icles", + "##ulia", + "munro", + "##mian", + "##tial", + "rye", + "##rle", + "60th", + "gigs", + "hottest", + "rotated", + "predictions", + "fuji", + "bu", + "##erence", + "##omi", + "barangay", + "##fulness", + "##sas", + "clocks", + "##rwood", + "##liness", + "cereal", + "roe", + "wight", + "decker", + "uttered", + "babu", + "onion", + "xml", + "forcibly", + "##df", + "petra", + "sarcasm", + "hartley", + "peeled", + "storytelling", + "##42", + "##xley", + "##ysis", + "##ffa", + "fibre", + "kiel", + "auditor", + "fig", + "harald", + "greenville", + "##berries", + "geographically", + "nell", + "quartz", + "##athic", + "cemeteries", + "##lr", + "crossings", + "nah", + "holloway", + "reptiles", + "chun", + "sichuan", + "snowy", + "660", + "corrections", + "##ivo", + "zheng", + "ambassadors", + "blacksmith", + "fielded", + "fluids", + "hardcover", + "turnover", + "medications", + "melvin", + "academies", + "##erton", + "ro", + "roach", + "absorbing", + "spaniards", + "colton", + "##founded", + "outsider", + "espionage", + "kelsey", + "245", + "edible", + "##ulf", + "dora", + "establishes", + "##sham", + "##tries", + "contracting", + "##tania", + "cinematic", + "costello", + "nesting", + "##uron", + "connolly", + "duff", + "##nology", + "mma", + "##mata", + "fergus", + "sexes", + "gi", + "optics", + "spectator", + "woodstock", + "banning", + "##hee", + "##fle", + "differentiate", + "outfielder", + "refinery", + "226", + "312", + "gerhard", + "horde", + "lair", + "drastically", + "##udi", + "landfall", + "##cheng", + "motorsport", + "odi", + "##achi", + "predominant", + "quay", + "skins", + "##ental", + "edna", + "harshly", + "complementary", + "murdering", + "##aves", + "wreckage", + "##90", + "ono", + "outstretched", + "lennox", + "munitions", + "galen", + "reconcile", + "470", + "scalp", + "bicycles", + "gillespie", + "questionable", + "rosenberg", + "guillermo", + "hostel", + "jarvis", + "kabul", + "volvo", + "opium", + "yd", + "##twined", + "abuses", + "decca", + "outpost", + "##cino", + "sensible", + "neutrality", + "##64", + "ponce", + "anchorage", + "atkins", + "turrets", + "inadvertently", + "disagree", + "libre", + "vodka", + "reassuring", + "weighs", + "##yal", + "glide", + "jumper", + "ceilings", + "repertory", + "outs", + "stain", + "##bial", + "envy", + "##ucible", + "smashing", + "heightened", + "policing", + "hyun", + "mixes", + "lai", + "prima", + "##ples", + "celeste", + "##bina", + "lucrative", + "intervened", + "kc", + "manually", + "##rned", + "stature", + "staffed", + "bun", + "bastards", + "nairobi", + "priced", + "##auer", + "thatcher", + "##kia", + "tripped", + "comune", + "##ogan", + "##pled", + "brasil", + "incentives", + "emanuel", + "hereford", + "musica", + "##kim", + "benedictine", + "biennale", + "##lani", + "eureka", + "gardiner", + "rb", + "knocks", + "sha", + "##ael", + "##elled", + "##onate", + "efficacy", + "ventura", + "masonic", + "sanford", + "maize", + "leverage", + "##feit", + "capacities", + "santana", + "##aur", + "novelty", + "vanilla", + "##cter", + "##tour", + "benin", + "##oir", + "##rain", + "neptune", + "drafting", + "tallinn", + "##cable", + "humiliation", + "##boarding", + "schleswig", + "fabian", + "bernardo", + "liturgy", + "spectacle", + "sweeney", + "pont", + "routledge", + "##tment", + "cosmos", + "ut", + "hilt", + "sleek", + "universally", + "##eville", + "##gawa", + "typed", + "##dry", + "favors", + "allegheny", + "glaciers", + "##rly", + "recalling", + "aziz", + "##log", + "parasite", + "requiem", + "auf", + "##berto", + "##llin", + "illumination", + "##breaker", + "##issa", + "festivities", + "bows", + "govern", + "vibe", + "vp", + "333", + "sprawled", + "larson", + "pilgrim", + "bwf", + "leaping", + "##rts", + "##ssel", + "alexei", + "greyhound", + "hoarse", + "##dler", + "##oration", + "seneca", + "##cule", + "gaping", + "##ulously", + "##pura", + "cinnamon", + "##gens", + "##rricular", + "craven", + "fantasies", + "houghton", + "engined", + "reigned", + "dictator", + "supervising", + "##oris", + "bogota", + "commentaries", + "unnatural", + "fingernails", + "spirituality", + "tighten", + "##tm", + "canadiens", + "protesting", + "intentional", + "cheers", + "sparta", + "##ytic", + "##iere", + "##zine", + "widen", + "belgarath", + "controllers", + "dodd", + "iaaf", + "navarre", + "##ication", + "defect", + "squire", + "steiner", + "whisky", + "##mins", + "560", + "inevitably", + "tome", + "##gold", + "chew", + "##uid", + "##lid", + "elastic", + "##aby", + "streaked", + "alliances", + "jailed", + "regal", + "##ined", + "##phy", + "czechoslovak", + "narration", + "absently", + "##uld", + "bluegrass", + "guangdong", + "quran", + "criticizing", + "hose", + "hari", + "##liest", + "##owa", + "skier", + "streaks", + "deploy", + "##lom", + "raft", + "bose", + "dialed", + "huff", + "##eira", + "haifa", + "simplest", + "bursting", + "endings", + "ib", + "sultanate", + "##titled", + "franks", + "whitman", + "ensures", + "sven", + "##ggs", + "collaborators", + "forster", + "organising", + "ui", + "banished", + "napier", + "injustice", + "teller", + "layered", + "thump", + "##otti", + "roc", + "battleships", + "evidenced", + "fugitive", + "sadie", + "robotics", + "##roud", + "equatorial", + "geologist", + "##iza", + "yielding", + "##bron", + "##sr", + "internationale", + "mecca", + "##diment", + "sbs", + "skyline", + "toad", + "uploaded", + "reflective", + "undrafted", + "lal", + "leafs", + "bayern", + "##dai", + "lakshmi", + "shortlisted", + "##stick", + "##wicz", + "camouflage", + "donate", + "af", + "christi", + "lau", + "##acio", + "disclosed", + "nemesis", + "1761", + "assemble", + "straining", + "northamptonshire", + "tal", + "##asi", + "bernardino", + "premature", + "heidi", + "42nd", + "coefficients", + "galactic", + "reproduce", + "buzzed", + "sensations", + "zionist", + "monsieur", + "myrtle", + "##eme", + "archery", + "strangled", + "musically", + "viewpoint", + "antiquities", + "bei", + "trailers", + "seahawks", + "cured", + "pee", + "preferring", + "tasmanian", + "lange", + "sul", + "##mail", + "##working", + "colder", + "overland", + "lucivar", + "massey", + "gatherings", + "haitian", + "##smith", + "disapproval", + "flaws", + "##cco", + "##enbach", + "1766", + "npr", + "##icular", + "boroughs", + "creole", + "forums", + "techno", + "1755", + "dent", + "abdominal", + "streetcar", + "##eson", + "##stream", + "procurement", + "gemini", + "predictable", + "##tya", + "acheron", + "christoph", + "feeder", + "fronts", + "vendor", + "bernhard", + "jammu", + "tumors", + "slang", + "##uber", + "goaltender", + "twists", + "curving", + "manson", + "vuelta", + "mer", + "peanut", + "confessions", + "pouch", + "unpredictable", + "allowance", + "theodor", + "vascular", + "##factory", + "bala", + "authenticity", + "metabolic", + "coughing", + "nanjing", + "##cea", + "pembroke", + "##bard", + "splendid", + "36th", + "ff", + "hourly", + "##ahu", + "elmer", + "handel", + "##ivate", + "awarding", + "thrusting", + "dl", + "experimentation", + "##hesion", + "##46", + "caressed", + "entertained", + "steak", + "##rangle", + "biologist", + "orphans", + "baroness", + "oyster", + "stepfather", + "##dridge", + "mirage", + "reefs", + "speeding", + "##31", + "barons", + "1764", + "227", + "inhabit", + "preached", + "repealed", + "##tral", + "honoring", + "boogie", + "captives", + "administer", + "johanna", + "##imate", + "gel", + "suspiciously", + "1767", + "sobs", + "##dington", + "backbone", + "hayward", + "garry", + "##folding", + "##nesia", + "maxi", + "##oof", + "##ppe", + "ellison", + "galileo", + "##stand", + "crimea", + "frenzy", + "amour", + "bumper", + "matrices", + "natalia", + "baking", + "garth", + "palestinians", + "##grove", + "smack", + "conveyed", + "ensembles", + "gardening", + "##manship", + "##rup", + "##stituting", + "1640", + "harvesting", + "topography", + "jing", + "shifters", + "dormitory", + "##carriage", + "##lston", + "ist", + "skulls", + "##stadt", + "dolores", + "jewellery", + "sarawak", + "##wai", + "##zier", + "fences", + "christy", + "confinement", + "tumbling", + "credibility", + "fir", + "stench", + "##bria", + "##plication", + "##nged", + "##sam", + "virtues", + "##belt", + "marjorie", + "pba", + "##eem", + "##made", + "celebrates", + "schooner", + "agitated", + "barley", + "fulfilling", + "anthropologist", + "##pro", + "restrict", + "novi", + "regulating", + "##nent", + "padres", + "##rani", + "##hesive", + "loyola", + "tabitha", + "milky", + "olson", + "proprietor", + "crambidae", + "guarantees", + "intercollegiate", + "ljubljana", + "hilda", + "##sko", + "ignorant", + "hooded", + "##lts", + "sardinia", + "##lidae", + "##vation", + "frontman", + "privileged", + "witchcraft", + "##gp", + "jammed", + "laude", + "poking", + "##than", + "bracket", + "amazement", + "yunnan", + "##erus", + "maharaja", + "linnaeus", + "264", + "commissioning", + "milano", + "peacefully", + "##logies", + "akira", + "rani", + "regulator", + "##36", + "grasses", + "##rance", + "luzon", + "crows", + "compiler", + "gretchen", + "seaman", + "edouard", + "tab", + "buccaneers", + "ellington", + "hamlets", + "whig", + "socialists", + "##anto", + "directorial", + "easton", + "mythological", + "##kr", + "##vary", + "rhineland", + "semantic", + "taut", + "dune", + "inventions", + "succeeds", + "##iter", + "replication", + "branched", + "##pired", + "jul", + "prosecuted", + "kangaroo", + "penetrated", + "##avian", + "middlesbrough", + "doses", + "bleak", + "madam", + "predatory", + "relentless", + "##vili", + "reluctance", + "##vir", + "hailey", + "crore", + "silvery", + "1759", + "monstrous", + "swimmers", + "transmissions", + "hawthorn", + "informing", + "##eral", + "toilets", + "caracas", + "crouch", + "kb", + "##sett", + "295", + "cartel", + "hadley", + "##aling", + "alexia", + "yvonne", + "##biology", + "cinderella", + "eton", + "superb", + "blizzard", + "stabbing", + "industrialist", + "maximus", + "##gm", + "##orus", + "groves", + "maud", + "clade", + "oversized", + "comedic", + "##bella", + "rosen", + "nomadic", + "fulham", + "montane", + "beverages", + "galaxies", + "redundant", + "swarm", + "##rot", + "##folia", + "##llis", + "buckinghamshire", + "fen", + "bearings", + "bahadur", + "##rom", + "gilles", + "phased", + "dynamite", + "faber", + "benoit", + "vip", + "##ount", + "##wd", + "booking", + "fractured", + "tailored", + "anya", + "spices", + "westwood", + "cairns", + "auditions", + "inflammation", + "steamed", + "##rocity", + "##acion", + "##urne", + "skyla", + "thereof", + "watford", + "torment", + "archdeacon", + "transforms", + "lulu", + "demeanor", + "fucked", + "serge", + "##sor", + "mckenna", + "minas", + "entertainer", + "##icide", + "caress", + "originate", + "residue", + "##sty", + "1740", + "##ilised", + "##org", + "beech", + "##wana", + "subsidies", + "##ghton", + "emptied", + "gladstone", + "ru", + "firefighters", + "voodoo", + "##rcle", + "het", + "nightingale", + "tamara", + "edmond", + "ingredient", + "weaknesses", + "silhouette", + "285", + "compatibility", + "withdrawing", + "hampson", + "##mona", + "anguish", + "giggling", + "##mber", + "bookstore", + "##jiang", + "southernmost", + "tilting", + "##vance", + "bai", + "economical", + "rf", + "briefcase", + "dreadful", + "hinted", + "projections", + "shattering", + "totaling", + "##rogate", + "analogue", + "indicted", + "periodical", + "fullback", + "##dman", + "haynes", + "##tenberg", + "##ffs", + "##ishment", + "1745", + "thirst", + "stumble", + "penang", + "vigorous", + "##ddling", + "##kor", + "##lium", + "octave", + "##ove", + "##enstein", + "##inen", + "##ones", + "siberian", + "##uti", + "cbn", + "repeal", + "swaying", + "##vington", + "khalid", + "tanaka", + "unicorn", + "otago", + "plastered", + "lobe", + "riddle", + "##rella", + "perch", + "##ishing", + "croydon", + "filtered", + "graeme", + "tripoli", + "##ossa", + "crocodile", + "##chers", + "sufi", + "mined", + "##tung", + "inferno", + "lsu", + "##phi", + "swelled", + "utilizes", + "\u00a32", + "cale", + "periodicals", + "styx", + "hike", + "informally", + "coop", + "lund", + "##tidae", + "ala", + "hen", + "qui", + "transformations", + "disposed", + "sheath", + "chickens", + "##cade", + "fitzroy", + "sas", + "silesia", + "unacceptable", + "odisha", + "1650", + "sabrina", + "pe", + "spokane", + "ratios", + "athena", + "massage", + "shen", + "dilemma", + "##drum", + "##riz", + "##hul", + "corona", + "doubtful", + "niall", + "##pha", + "##bino", + "fines", + "cite", + "acknowledging", + "bangor", + "ballard", + "bathurst", + "##resh", + "huron", + "mustered", + "alzheimer", + "garments", + "kinase", + "tyre", + "warship", + "##cp", + "flashback", + "pulmonary", + "braun", + "cheat", + "kamal", + "cyclists", + "constructions", + "grenades", + "ndp", + "traveller", + "excuses", + "stomped", + "signalling", + "trimmed", + "futsal", + "mosques", + "relevance", + "##wine", + "wta", + "##23", + "##vah", + "##lter", + "hoc", + "##riding", + "optimistic", + "##\u00b4s", + "deco", + "sim", + "interacting", + "rejecting", + "moniker", + "waterways", + "##ieri", + "##oku", + "mayors", + "gdansk", + "outnumbered", + "pearls", + "##ended", + "##hampton", + "fairs", + "totals", + "dominating", + "262", + "notions", + "stairway", + "compiling", + "pursed", + "commodities", + "grease", + "yeast", + "##jong", + "carthage", + "griffiths", + "residual", + "amc", + "contraction", + "laird", + "sapphire", + "##marine", + "##ivated", + "amalgamation", + "dissolve", + "inclination", + "lyle", + "packaged", + "altitudes", + "suez", + "canons", + "graded", + "lurched", + "narrowing", + "boasts", + "guise", + "wed", + "enrico", + "##ovsky", + "rower", + "scarred", + "bree", + "cub", + "iberian", + "protagonists", + "bargaining", + "proposing", + "trainers", + "voyages", + "vans", + "fishes", + "##aea", + "##ivist", + "##verance", + "encryption", + "artworks", + "kazan", + "sabre", + "cleopatra", + "hepburn", + "rotting", + "supremacy", + "mecklenburg", + "##brate", + "burrows", + "hazards", + "outgoing", + "flair", + "organizes", + "##ctions", + "scorpion", + "##usions", + "boo", + "234", + "chevalier", + "dunedin", + "slapping", + "##34", + "ineligible", + "pensions", + "##38", + "##omic", + "manufactures", + "emails", + "bismarck", + "238", + "weakening", + "blackish", + "ding", + "mcgee", + "quo", + "##rling", + "northernmost", + "xx", + "manpower", + "greed", + "sampson", + "clicking", + "##ange", + "##horpe", + "##inations", + "##roving", + "torre", + "##eptive", + "##moral", + "symbolism", + "38th", + "asshole", + "meritorious", + "outfits", + "splashed", + "biographies", + "sprung", + "astros", + "##tale", + "302", + "737", + "filly", + "raoul", + "nw", + "tokugawa", + "linden", + "clubhouse", + "##apa", + "tracts", + "romano", + "##pio", + "putin", + "tags", + "##note", + "chained", + "dickson", + "gunshot", + "moe", + "gunn", + "rashid", + "##tails", + "zipper", + "##bas", + "##nea", + "contrasted", + "##ply", + "##udes", + "plum", + "pharaoh", + "##pile", + "aw", + "comedies", + "ingrid", + "sandwiches", + "subdivisions", + "1100", + "mariana", + "nokia", + "kamen", + "hz", + "delaney", + "veto", + "herring", + "##words", + "possessive", + "outlines", + "##roup", + "siemens", + "stairwell", + "rc", + "gallantry", + "messiah", + "palais", + "yells", + "233", + "zeppelin", + "##dm", + "bolivar", + "##cede", + "smackdown", + "mckinley", + "##mora", + "##yt", + "muted", + "geologic", + "finely", + "unitary", + "avatar", + "hamas", + "maynard", + "rees", + "bog", + "contrasting", + "##rut", + "liv", + "chico", + "disposition", + "pixel", + "##erate", + "becca", + "dmitry", + "yeshiva", + "narratives", + "##lva", + "##ulton", + "mercenary", + "sharpe", + "tempered", + "navigate", + "stealth", + "amassed", + "keynes", + "##lini", + "untouched", + "##rrie", + "havoc", + "lithium", + "##fighting", + "abyss", + "graf", + "southward", + "wolverine", + "balloons", + "implements", + "ngos", + "transitions", + "##icum", + "ambushed", + "concacaf", + "dormant", + "economists", + "##dim", + "costing", + "csi", + "rana", + "universite", + "boulders", + "verity", + "##llon", + "collin", + "mellon", + "misses", + "cypress", + "fluorescent", + "lifeless", + "spence", + "##ulla", + "crewe", + "shepard", + "pak", + "revelations", + "##\u0645", + "jolly", + "gibbons", + "paw", + "##dro", + "##quel", + "freeing", + "##test", + "shack", + "fries", + "palatine", + "##51", + "##hiko", + "accompaniment", + "cruising", + "recycled", + "##aver", + "erwin", + "sorting", + "synthesizers", + "dyke", + "realities", + "sg", + "strides", + "enslaved", + "wetland", + "##ghan", + "competence", + "gunpowder", + "grassy", + "maroon", + "reactors", + "objection", + "##oms", + "carlson", + "gearbox", + "macintosh", + "radios", + "shelton", + "##sho", + "clergyman", + "prakash", + "254", + "mongols", + "trophies", + "oricon", + "228", + "stimuli", + "twenty20", + "cantonese", + "cortes", + "mirrored", + "##saurus", + "bhp", + "cristina", + "melancholy", + "##lating", + "enjoyable", + "nuevo", + "##wny", + "downfall", + "schumacher", + "##ind", + "banging", + "lausanne", + "rumbled", + "paramilitary", + "reflex", + "ax", + "amplitude", + "migratory", + "##gall", + "##ups", + "midi", + "barnard", + "lastly", + "sherry", + "##hp", + "##nall", + "keystone", + "##kra", + "carleton", + "slippery", + "##53", + "coloring", + "foe", + "socket", + "otter", + "##rgos", + "mats", + "##tose", + "consultants", + "bafta", + "bison", + "topping", + "##km", + "490", + "primal", + "abandonment", + "transplant", + "atoll", + "hideous", + "mort", + "pained", + "reproduced", + "tae", + "howling", + "##turn", + "unlawful", + "billionaire", + "hotter", + "poised", + "lansing", + "##chang", + "dinamo", + "retro", + "messing", + "nfc", + "domesday", + "##mina", + "blitz", + "timed", + "##athing", + "##kley", + "ascending", + "gesturing", + "##izations", + "signaled", + "tis", + "chinatown", + "mermaid", + "savanna", + "jameson", + "##aint", + "catalina", + "##pet", + "##hers", + "cochrane", + "cy", + "chatting", + "##kus", + "alerted", + "computation", + "mused", + "noelle", + "majestic", + "mohawk", + "campo", + "octagonal", + "##sant", + "##hend", + "241", + "aspiring", + "##mart", + "comprehend", + "iona", + "paralyzed", + "shimmering", + "swindon", + "rhone", + "##eley", + "reputed", + "configurations", + "pitchfork", + "agitation", + "francais", + "gillian", + "lipstick", + "##ilo", + "outsiders", + "pontifical", + "resisting", + "bitterness", + "sewer", + "rockies", + "##edd", + "##ucher", + "misleading", + "1756", + "exiting", + "galloway", + "##nging", + "risked", + "##heart", + "246", + "commemoration", + "schultz", + "##rka", + "integrating", + "##rsa", + "poses", + "shrieked", + "##weiler", + "guineas", + "gladys", + "jerking", + "owls", + "goldsmith", + "nightly", + "penetrating", + "##unced", + "lia", + "##33", + "ignited", + "betsy", + "##aring", + "##thorpe", + "follower", + "vigorously", + "##rave", + "coded", + "kiran", + "knit", + "zoology", + "tbilisi", + "##28", + "##bered", + "repository", + "govt", + "deciduous", + "dino", + "growling", + "##bba", + "enhancement", + "unleashed", + "chanting", + "pussy", + "biochemistry", + "##eric", + "kettle", + "repression", + "toxicity", + "nrhp", + "##arth", + "##kko", + "##bush", + "ernesto", + "commended", + "outspoken", + "242", + "mca", + "parchment", + "sms", + "kristen", + "##aton", + "bisexual", + "raked", + "glamour", + "navajo", + "a2", + "conditioned", + "showcased", + "##hma", + "spacious", + "youthful", + "##esa", + "usl", + "appliances", + "junta", + "brest", + "layne", + "conglomerate", + "enchanted", + "chao", + "loosened", + "picasso", + "circulating", + "inspect", + "montevideo", + "##centric", + "##kti", + "piazza", + "spurred", + "##aith", + "bari", + "freedoms", + "poultry", + "stamford", + "lieu", + "##ect", + "indigo", + "sarcastic", + "bahia", + "stump", + "attach", + "dvds", + "frankenstein", + "lille", + "approx", + "scriptures", + "pollen", + "##script", + "nmi", + "overseen", + "##ivism", + "tides", + "proponent", + "newmarket", + "inherit", + "milling", + "##erland", + "centralized", + "##rou", + "distributors", + "credentials", + "drawers", + "abbreviation", + "##lco", + "##xon", + "downing", + "uncomfortably", + "ripe", + "##oes", + "erase", + "franchises", + "##ever", + "populace", + "##bery", + "##khar", + "decomposition", + "pleas", + "##tet", + "daryl", + "sabah", + "##stle", + "##wide", + "fearless", + "genie", + "lesions", + "annette", + "##ogist", + "oboe", + "appendix", + "nair", + "dripped", + "petitioned", + "maclean", + "mosquito", + "parrot", + "rpg", + "hampered", + "1648", + "operatic", + "reservoirs", + "##tham", + "irrelevant", + "jolt", + "summarized", + "##fp", + "medallion", + "##taff", + "##\u2212", + "clawed", + "harlow", + "narrower", + "goddard", + "marcia", + "bodied", + "fremont", + "suarez", + "altering", + "tempest", + "mussolini", + "porn", + "##isms", + "sweetly", + "oversees", + "walkers", + "solitude", + "grimly", + "shrines", + "hk", + "ich", + "supervisors", + "hostess", + "dietrich", + "legitimacy", + "brushes", + "expressive", + "##yp", + "dissipated", + "##rse", + "localized", + "systemic", + "##nikov", + "gettysburg", + "##js", + "##uaries", + "dialogues", + "muttering", + "251", + "housekeeper", + "sicilian", + "discouraged", + "##frey", + "beamed", + "kaladin", + "halftime", + "kidnap", + "##amo", + "##llet", + "1754", + "synonymous", + "depleted", + "instituto", + "insulin", + "reprised", + "##opsis", + "clashed", + "##ctric", + "interrupting", + "radcliffe", + "insisting", + "medici", + "1715", + "ejected", + "playfully", + "turbulent", + "##47", + "starvation", + "##rini", + "shipment", + "rebellious", + "petersen", + "verification", + "merits", + "##rified", + "cakes", + "##charged", + "1757", + "milford", + "shortages", + "spying", + "fidelity", + "##aker", + "emitted", + "storylines", + "harvested", + "seismic", + "##iform", + "cheung", + "kilda", + "theoretically", + "barbie", + "lynx", + "##rgy", + "##tius", + "goblin", + "mata", + "poisonous", + "##nburg", + "reactive", + "residues", + "obedience", + "##\u0435\u0432\u0438\u0447", + "conjecture", + "##rac", + "401", + "hating", + "sixties", + "kicker", + "moaning", + "motown", + "##bha", + "emancipation", + "neoclassical", + "##hering", + "consoles", + "ebert", + "professorship", + "##tures", + "sustaining", + "assaults", + "obeyed", + "affluent", + "incurred", + "tornadoes", + "##eber", + "##zow", + "emphasizing", + "highlanders", + "cheated", + "helmets", + "##ctus", + "internship", + "terence", + "bony", + "executions", + "legislators", + "berries", + "peninsular", + "tinged", + "##aco", + "1689", + "amplifier", + "corvette", + "ribbons", + "lavish", + "pennant", + "##lander", + "worthless", + "##chfield", + "##forms", + "mariano", + "pyrenees", + "expenditures", + "##icides", + "chesterfield", + "mandir", + "tailor", + "39th", + "sergey", + "nestled", + "willed", + "aristocracy", + "devotees", + "goodnight", + "raaf", + "rumored", + "weaponry", + "remy", + "appropriations", + "harcourt", + "burr", + "riaa", + "##lence", + "limitation", + "unnoticed", + "guo", + "soaking", + "swamps", + "##tica", + "collapsing", + "tatiana", + "descriptive", + "brigham", + "psalm", + "##chment", + "maddox", + "##lization", + "patti", + "caliph", + "##aja", + "akron", + "injuring", + "serra", + "##ganj", + "basins", + "##sari", + "astonished", + "launcher", + "##church", + "hilary", + "wilkins", + "sewing", + "##sf", + "stinging", + "##fia", + "##ncia", + "underwood", + "startup", + "##ition", + "compilations", + "vibrations", + "embankment", + "jurist", + "##nity", + "bard", + "juventus", + "groundwater", + "kern", + "palaces", + "helium", + "boca", + "cramped", + "marissa", + "soto", + "##worm", + "jae", + "princely", + "##ggy", + "faso", + "bazaar", + "warmly", + "##voking", + "229", + "pairing", + "##lite", + "##grate", + "##nets", + "wien", + "freaked", + "ulysses", + "rebirth", + "##alia", + "##rent", + "mummy", + "guzman", + "jimenez", + "stilled", + "##nitz", + "trajectory", + "tha", + "woken", + "archival", + "professions", + "##pts", + "##pta", + "hilly", + "shadowy", + "shrink", + "##bolt", + "norwood", + "glued", + "migrate", + "stereotypes", + "devoid", + "##pheus", + "625", + "evacuate", + "horrors", + "infancy", + "gotham", + "knowles", + "optic", + "downloaded", + "sachs", + "kingsley", + "parramatta", + "darryl", + "mor", + "##onale", + "shady", + "commence", + "confesses", + "kan", + "##meter", + "##placed", + "marlborough", + "roundabout", + "regents", + "frigates", + "io", + "##imating", + "gothenburg", + "revoked", + "carvings", + "clockwise", + "convertible", + "intruder", + "##sche", + "banged", + "##ogo", + "vicky", + "bourgeois", + "##mony", + "dupont", + "footing", + "##gum", + "pd", + "##real", + "buckle", + "yun", + "penthouse", + "sane", + "720", + "serviced", + "stakeholders", + "neumann", + "bb", + "##eers", + "comb", + "##gam", + "catchment", + "pinning", + "rallies", + "typing", + "##elles", + "forefront", + "freiburg", + "sweetie", + "giacomo", + "widowed", + "goodwill", + "worshipped", + "aspirations", + "midday", + "##vat", + "fishery", + "##trick", + "bournemouth", + "turk", + "243", + "hearth", + "ethanol", + "guadalajara", + "murmurs", + "sl", + "##uge", + "afforded", + "scripted", + "##hta", + "wah", + "##jn", + "coroner", + "translucent", + "252", + "memorials", + "puck", + "progresses", + "clumsy", + "##race", + "315", + "candace", + "recounted", + "##27", + "##slin", + "##uve", + "filtering", + "##mac", + "howl", + "strata", + "heron", + "leveled", + "##ays", + "dubious", + "##oja", + "##\u0442", + "##wheel", + "citations", + "exhibiting", + "##laya", + "##mics", + "##pods", + "turkic", + "##lberg", + "injunction", + "##ennial", + "##mit", + "antibodies", + "##44", + "organise", + "##rigues", + "cardiovascular", + "cushion", + "inverness", + "##zquez", + "dia", + "cocoa", + "sibling", + "##tman", + "##roid", + "expanse", + "feasible", + "tunisian", + "algiers", + "##relli", + "rus", + "bloomberg", + "dso", + "westphalia", + "bro", + "tacoma", + "281", + "downloads", + "##ours", + "konrad", + "duran", + "##hdi", + "continuum", + "jett", + "compares", + "legislator", + "secession", + "##nable", + "##gues", + "##zuka", + "translating", + "reacher", + "##gley", + "##\u0142a", + "aleppo", + "##agi", + "tc", + "orchards", + "trapping", + "linguist", + "versatile", + "drumming", + "postage", + "calhoun", + "superiors", + "##mx", + "barefoot", + "leary", + "##cis", + "ignacio", + "alfa", + "kaplan", + "##rogen", + "bratislava", + "mori", + "##vot", + "disturb", + "haas", + "313", + "cartridges", + "gilmore", + "radiated", + "salford", + "tunic", + "hades", + "##ulsive", + "archeological", + "delilah", + "magistrates", + "auditioned", + "brewster", + "charters", + "empowerment", + "blogs", + "cappella", + "dynasties", + "iroquois", + "whipping", + "##krishna", + "raceway", + "truths", + "myra", + "weaken", + "judah", + "mcgregor", + "##horse", + "mic", + "refueling", + "37th", + "burnley", + "bosses", + "markus", + "premio", + "query", + "##gga", + "dunbar", + "##economic", + "darkest", + "lyndon", + "sealing", + "commendation", + "reappeared", + "##mun", + "addicted", + "ezio", + "slaughtered", + "satisfactory", + "shuffle", + "##eves", + "##thic", + "##uj", + "fortification", + "warrington", + "##otto", + "resurrected", + "fargo", + "mane", + "##utable", + "##lei", + "##space", + "foreword", + "ox", + "##aris", + "##vern", + "abrams", + "hua", + "##mento", + "sakura", + "##alo", + "uv", + "sentimental", + "##skaya", + "midfield", + "##eses", + "sturdy", + "scrolls", + "macleod", + "##kyu", + "entropy", + "##lance", + "mitochondrial", + "cicero", + "excelled", + "thinner", + "convoys", + "perceive", + "##oslav", + "##urable", + "systematically", + "grind", + "burkina", + "287", + "##tagram", + "ops", + "##aman", + "guantanamo", + "##cloth", + "##tite", + "forcefully", + "wavy", + "##jou", + "pointless", + "##linger", + "##tze", + "layton", + "portico", + "superficial", + "clerical", + "outlaws", + "##hism", + "burials", + "muir", + "##inn", + "creditors", + "hauling", + "rattle", + "##leg", + "calais", + "monde", + "archers", + "reclaimed", + "dwell", + "wexford", + "hellenic", + "falsely", + "remorse", + "##tek", + "dough", + "furnishings", + "##uttered", + "gabon", + "neurological", + "novice", + "##igraphy", + "contemplated", + "pulpit", + "nightstand", + "saratoga", + "##istan", + "documenting", + "pulsing", + "taluk", + "##firmed", + "busted", + "marital", + "##rien", + "disagreements", + "wasps", + "##yes", + "hodge", + "mcdonnell", + "mimic", + "fran", + "pendant", + "dhabi", + "musa", + "##nington", + "congratulations", + "argent", + "darrell", + "concussion", + "losers", + "regrets", + "thessaloniki", + "reversal", + "donaldson", + "hardwood", + "thence", + "achilles", + "ritter", + "##eran", + "demonic", + "jurgen", + "prophets", + "goethe", + "eki", + "classmate", + "buff", + "##cking", + "yank", + "irrational", + "##inging", + "perished", + "seductive", + "qur", + "sourced", + "##crat", + "##typic", + "mustard", + "ravine", + "barre", + "horizontally", + "characterization", + "phylogenetic", + "boise", + "##dit", + "##runner", + "##tower", + "brutally", + "intercourse", + "seduce", + "##bbing", + "fay", + "ferris", + "ogden", + "amar", + "nik", + "unarmed", + "##inator", + "evaluating", + "kyrgyzstan", + "sweetness", + "##lford", + "##oki", + "mccormick", + "meiji", + "notoriety", + "stimulate", + "disrupt", + "figuring", + "instructional", + "mcgrath", + "##zoo", + "groundbreaking", + "##lto", + "flinch", + "khorasan", + "agrarian", + "bengals", + "mixer", + "radiating", + "##sov", + "ingram", + "pitchers", + "nad", + "tariff", + "##cript", + "tata", + "##codes", + "##emi", + "##ungen", + "appellate", + "lehigh", + "##bled", + "##giri", + "brawl", + "duct", + "texans", + "##ciation", + "##ropolis", + "skipper", + "speculative", + "vomit", + "doctrines", + "stresses", + "253", + "davy", + "graders", + "whitehead", + "jozef", + "timely", + "cumulative", + "haryana", + "paints", + "appropriately", + "boon", + "cactus", + "##ales", + "##pid", + "dow", + "legions", + "##pit", + "perceptions", + "1730", + "picturesque", + "##yse", + "periphery", + "rune", + "wr", + "##aha", + "celtics", + "sentencing", + "whoa", + "##erin", + "confirms", + "variance", + "425", + "moines", + "mathews", + "spade", + "rave", + "m1", + "fronted", + "fx", + "blending", + "alleging", + "reared", + "##gl", + "237", + "##paper", + "grassroots", + "eroded", + "##free", + "##physical", + "directs", + "ordeal", + "##s\u0142aw", + "accelerate", + "hacker", + "rooftop", + "##inia", + "lev", + "buys", + "cebu", + "devote", + "##lce", + "specialising", + "##ulsion", + "choreographed", + "repetition", + "warehouses", + "##ryl", + "paisley", + "tuscany", + "analogy", + "sorcerer", + "hash", + "huts", + "shards", + "descends", + "exclude", + "nix", + "chaplin", + "gaga", + "ito", + "vane", + "##drich", + "causeway", + "misconduct", + "limo", + "orchestrated", + "glands", + "jana", + "##kot", + "u2", + "##mple", + "##sons", + "branching", + "contrasts", + "scoop", + "longed", + "##virus", + "chattanooga", + "##75", + "syrup", + "cornerstone", + "##tized", + "##mind", + "##iaceae", + "careless", + "precedence", + "frescoes", + "##uet", + "chilled", + "consult", + "modelled", + "snatch", + "peat", + "##thermal", + "caucasian", + "humane", + "relaxation", + "spins", + "temperance", + "##lbert", + "occupations", + "lambda", + "hybrids", + "moons", + "mp3", + "##oese", + "247", + "rolf", + "societal", + "yerevan", + "ness", + "##ssler", + "befriended", + "mechanized", + "nominate", + "trough", + "boasted", + "cues", + "seater", + "##hom", + "bends", + "##tangle", + "conductors", + "emptiness", + "##lmer", + "eurasian", + "adriatic", + "tian", + "##cie", + "anxiously", + "lark", + "propellers", + "chichester", + "jock", + "ev", + "2a", + "##holding", + "credible", + "recounts", + "tori", + "loyalist", + "abduction", + "##hoot", + "##redo", + "nepali", + "##mite", + "ventral", + "tempting", + "##ango", + "##crats", + "steered", + "##wice", + "javelin", + "dipping", + "laborers", + "prentice", + "looming", + "titanium", + "##\u02d0", + "badges", + "emir", + "tensor", + "##ntation", + "egyptians", + "rash", + "denies", + "hawthorne", + "lombard", + "showers", + "wehrmacht", + "dietary", + "trojan", + "##reus", + "welles", + "executing", + "horseshoe", + "lifeboat", + "##lak", + "elsa", + "infirmary", + "nearing", + "roberta", + "boyer", + "mutter", + "trillion", + "joanne", + "##fine", + "##oked", + "sinks", + "vortex", + "uruguayan", + "clasp", + "sirius", + "##block", + "accelerator", + "prohibit", + "sunken", + "byu", + "chronological", + "diplomats", + "ochreous", + "510", + "symmetrical", + "1644", + "maia", + "##tology", + "salts", + "reigns", + "atrocities", + "##\u0438\u044f", + "hess", + "bared", + "issn", + "##vyn", + "cater", + "saturated", + "##cycle", + "##isse", + "sable", + "voyager", + "dyer", + "yusuf", + "##inge", + "fountains", + "wolff", + "##39", + "##nni", + "engraving", + "rollins", + "atheist", + "ominous", + "##ault", + "herr", + "chariot", + "martina", + "strung", + "##fell", + "##farlane", + "horrific", + "sahib", + "gazes", + "saetan", + "erased", + "ptolemy", + "##olic", + "flushing", + "lauderdale", + "analytic", + "##ices", + "530", + "navarro", + "beak", + "gorilla", + "herrera", + "broom", + "guadalupe", + "raiding", + "sykes", + "311", + "bsc", + "deliveries", + "1720", + "invasions", + "carmichael", + "tajikistan", + "thematic", + "ecumenical", + "sentiments", + "onstage", + "##rians", + "##brand", + "##sume", + "catastrophic", + "flanks", + "molten", + "##arns", + "waller", + "aimee", + "terminating", + "##icing", + "alternately", + "##oche", + "nehru", + "printers", + "outraged", + "##eving", + "empires", + "template", + "banners", + "repetitive", + "za", + "##oise", + "vegetarian", + "##tell", + "guiana", + "opt", + "cavendish", + "lucknow", + "synthesized", + "##hani", + "##mada", + "finalized", + "##ctable", + "fictitious", + "mayoral", + "unreliable", + "##enham", + "embracing", + "peppers", + "rbis", + "##chio", + "##neo", + "inhibition", + "slashed", + "togo", + "orderly", + "embroidered", + "safari", + "salty", + "236", + "barron", + "benito", + "totaled", + "##dak", + "pubs", + "simulated", + "caden", + "devin", + "tolkien", + "momma", + "welding", + "sesame", + "##ept", + "gottingen", + "hardness", + "630", + "shaman", + "temeraire", + "620", + "adequately", + "pediatric", + "##kit", + "ck", + "assertion", + "radicals", + "composure", + "cadence", + "seafood", + "beaufort", + "lazarus", + "mani", + "warily", + "cunning", + "kurdistan", + "249", + "cantata", + "##kir", + "ares", + "##41", + "##clusive", + "nape", + "townland", + "geared", + "insulted", + "flutter", + "boating", + "violate", + "draper", + "dumping", + "malmo", + "##hh", + "##romatic", + "firearm", + "alta", + "bono", + "obscured", + "##clave", + "exceeds", + "panorama", + "unbelievable", + "##train", + "preschool", + "##essed", + "disconnected", + "installing", + "rescuing", + "secretaries", + "accessibility", + "##castle", + "##drive", + "##ifice", + "##film", + "bouts", + "slug", + "waterway", + "mindanao", + "##buro", + "##ratic", + "halves", + "##\u0644", + "calming", + "liter", + "maternity", + "adorable", + "bragg", + "electrification", + "mcc", + "##dote", + "roxy", + "schizophrenia", + "##body", + "munoz", + "kaye", + "whaling", + "239", + "mil", + "tingling", + "tolerant", + "##ago", + "unconventional", + "volcanoes", + "##finder", + "deportivo", + "##llie", + "robson", + "kaufman", + "neuroscience", + "wai", + "deportation", + "masovian", + "scraping", + "converse", + "##bh", + "hacking", + "bulge", + "##oun", + "administratively", + "yao", + "580", + "amp", + "mammoth", + "booster", + "claremont", + "hooper", + "nomenclature", + "pursuits", + "mclaughlin", + "melinda", + "##sul", + "catfish", + "barclay", + "substrates", + "taxa", + "zee", + "originals", + "kimberly", + "packets", + "padma", + "##ality", + "borrowing", + "ostensibly", + "solvent", + "##bri", + "##genesis", + "##mist", + "lukas", + "shreveport", + "veracruz", + "##\u044c", + "##lou", + "##wives", + "cheney", + "tt", + "anatolia", + "hobbs", + "##zyn", + "cyclic", + "radiant", + "alistair", + "greenish", + "siena", + "dat", + "independents", + "##bation", + "conform", + "pieter", + "hyper", + "applicant", + "bradshaw", + "spores", + "telangana", + "vinci", + "inexpensive", + "nuclei", + "322", + "jang", + "nme", + "soho", + "spd", + "##ign", + "cradled", + "receptionist", + "pow", + "##43", + "##rika", + "fascism", + "##ifer", + "experimenting", + "##ading", + "##iec", + "##region", + "345", + "jocelyn", + "maris", + "stair", + "nocturnal", + "toro", + "constabulary", + "elgin", + "##kker", + "msc", + "##giving", + "##schen", + "##rase", + "doherty", + "doping", + "sarcastically", + "batter", + "maneuvers", + "##cano", + "##apple", + "##gai", + "##git", + "intrinsic", + "##nst", + "##stor", + "1753", + "showtime", + "cafes", + "gasps", + "lviv", + "ushered", + "##thed", + "fours", + "restart", + "astonishment", + "transmitting", + "flyer", + "shrugs", + "##sau", + "intriguing", + "cones", + "dictated", + "mushrooms", + "medial", + "##kovsky", + "##elman", + "escorting", + "gaped", + "##26", + "godfather", + "##door", + "##sell", + "djs", + "recaptured", + "timetable", + "vila", + "1710", + "3a", + "aerodrome", + "mortals", + "scientology", + "##orne", + "angelina", + "mag", + "convection", + "unpaid", + "insertion", + "intermittent", + "lego", + "##nated", + "endeavor", + "kota", + "pereira", + "##lz", + "304", + "bwv", + "glamorgan", + "insults", + "agatha", + "fey", + "##cend", + "fleetwood", + "mahogany", + "protruding", + "steamship", + "zeta", + "##arty", + "mcguire", + "suspense", + "##sphere", + "advising", + "urges", + "##wala", + "hurriedly", + "meteor", + "gilded", + "inline", + "arroyo", + "stalker", + "##oge", + "excitedly", + "revered", + "##cure", + "earle", + "introductory", + "##break", + "##ilde", + "mutants", + "puff", + "pulses", + "reinforcement", + "##haling", + "curses", + "lizards", + "stalk", + "correlated", + "##fixed", + "fallout", + "macquarie", + "##unas", + "bearded", + "denton", + "heaving", + "802", + "##ocation", + "winery", + "assign", + "dortmund", + "##lkirk", + "everest", + "invariant", + "charismatic", + "susie", + "##elling", + "bled", + "lesley", + "telegram", + "sumner", + "bk", + "##ogen", + "##\u043a", + "wilcox", + "needy", + "colbert", + "duval", + "##iferous", + "##mbled", + "allotted", + "attends", + "imperative", + "##hita", + "replacements", + "hawker", + "##inda", + "insurgency", + "##zee", + "##eke", + "casts", + "##yla", + "680", + "ives", + "transitioned", + "##pack", + "##powering", + "authoritative", + "baylor", + "flex", + "cringed", + "plaintiffs", + "woodrow", + "##skie", + "drastic", + "ape", + "aroma", + "unfolded", + "commotion", + "nt", + "preoccupied", + "theta", + "routines", + "lasers", + "privatization", + "wand", + "domino", + "ek", + "clenching", + "nsa", + "strategically", + "showered", + "bile", + "handkerchief", + "pere", + "storing", + "christophe", + "insulting", + "316", + "nakamura", + "romani", + "asiatic", + "magdalena", + "palma", + "cruises", + "stripping", + "405", + "konstantin", + "soaring", + "##berman", + "colloquially", + "forerunner", + "havilland", + "incarcerated", + "parasites", + "sincerity", + "##utus", + "disks", + "plank", + "saigon", + "##ining", + "corbin", + "homo", + "ornaments", + "powerhouse", + "##tlement", + "chong", + "fastened", + "feasibility", + "idf", + "morphological", + "usable", + "##nish", + "##zuki", + "aqueduct", + "jaguars", + "keepers", + "##flies", + "aleksandr", + "faust", + "assigns", + "ewing", + "bacterium", + "hurled", + "tricky", + "hungarians", + "integers", + "wallis", + "321", + "yamaha", + "##isha", + "hushed", + "oblivion", + "aviator", + "evangelist", + "friars", + "##eller", + "monograph", + "ode", + "##nary", + "airplanes", + "labourers", + "charms", + "##nee", + "1661", + "hagen", + "tnt", + "rudder", + "fiesta", + "transcript", + "dorothea", + "ska", + "inhibitor", + "maccabi", + "retorted", + "raining", + "encompassed", + "clauses", + "menacing", + "1642", + "lineman", + "##gist", + "vamps", + "##ape", + "##dick", + "gloom", + "##rera", + "dealings", + "easing", + "seekers", + "##nut", + "##pment", + "helens", + "unmanned", + "##anu", + "##isson", + "basics", + "##amy", + "##ckman", + "adjustments", + "1688", + "brutality", + "horne", + "##zell", + "sui", + "##55", + "##mable", + "aggregator", + "##thal", + "rhino", + "##drick", + "##vira", + "counters", + "zoom", + "##01", + "##rting", + "mn", + "montenegrin", + "packard", + "##unciation", + "##\u266d", + "##kki", + "reclaim", + "scholastic", + "thugs", + "pulsed", + "##icia", + "syriac", + "quan", + "saddam", + "banda", + "kobe", + "blaming", + "buddies", + "dissent", + "##lusion", + "##usia", + "corbett", + "jaya", + "delle", + "erratic", + "lexie", + "##hesis", + "435", + "amiga", + "hermes", + "##pressing", + "##leen", + "chapels", + "gospels", + "jamal", + "##uating", + "compute", + "revolving", + "warp", + "##sso", + "##thes", + "armory", + "##eras", + "##gol", + "antrim", + "loki", + "##kow", + "##asian", + "##good", + "##zano", + "braid", + "handwriting", + "subdistrict", + "funky", + "pantheon", + "##iculate", + "concurrency", + "estimation", + "improper", + "juliana", + "##his", + "newcomers", + "johnstone", + "staten", + "communicated", + "##oco", + "##alle", + "sausage", + "stormy", + "##stered", + "##tters", + "superfamily", + "##grade", + "acidic", + "collateral", + "tabloid", + "##oped", + "##rza", + "bladder", + "austen", + "##ellant", + "mcgraw", + "##hay", + "hannibal", + "mein", + "aquino", + "lucifer", + "wo", + "badger", + "boar", + "cher", + "christensen", + "greenberg", + "interruption", + "##kken", + "jem", + "244", + "mocked", + "bottoms", + "cambridgeshire", + "##lide", + "sprawling", + "##bbly", + "eastwood", + "ghent", + "synth", + "##buck", + "advisers", + "##bah", + "nominally", + "hapoel", + "qu", + "daggers", + "estranged", + "fabricated", + "towels", + "vinnie", + "wcw", + "misunderstanding", + "anglia", + "nothin", + "unmistakable", + "##dust", + "##lova", + "chilly", + "marquette", + "truss", + "##edge", + "##erine", + "reece", + "##lty", + "##chemist", + "##connected", + "272", + "308", + "41st", + "bash", + "raion", + "waterfalls", + "##ump", + "##main", + "labyrinth", + "queue", + "theorist", + "##istle", + "bharatiya", + "flexed", + "soundtracks", + "rooney", + "leftist", + "patrolling", + "wharton", + "plainly", + "alleviate", + "eastman", + "schuster", + "topographic", + "engages", + "immensely", + "unbearable", + "fairchild", + "1620", + "dona", + "lurking", + "parisian", + "oliveira", + "ia", + "indictment", + "hahn", + "bangladeshi", + "##aster", + "vivo", + "##uming", + "##ential", + "antonia", + "expects", + "indoors", + "kildare", + "harlan", + "##logue", + "##ogenic", + "##sities", + "forgiven", + "##wat", + "childish", + "tavi", + "##mide", + "##orra", + "plausible", + "grimm", + "successively", + "scooted", + "##bola", + "##dget", + "##rith", + "spartans", + "emery", + "flatly", + "azure", + "epilogue", + "##wark", + "flourish", + "##iny", + "##tracted", + "##overs", + "##oshi", + "bestseller", + "distressed", + "receipt", + "spitting", + "hermit", + "topological", + "##cot", + "drilled", + "subunit", + "francs", + "##layer", + "eel", + "##fk", + "##itas", + "octopus", + "footprint", + "petitions", + "ufo", + "##say", + "##foil", + "interfering", + "leaking", + "palo", + "##metry", + "thistle", + "valiant", + "##pic", + "narayan", + "mcpherson", + "##fast", + "gonzales", + "##ym", + "##enne", + "dustin", + "novgorod", + "solos", + "##zman", + "doin", + "##raph", + "##patient", + "##meyer", + "soluble", + "ashland", + "cuffs", + "carole", + "pendleton", + "whistling", + "vassal", + "##river", + "deviation", + "revisited", + "constituents", + "rallied", + "rotate", + "loomed", + "##eil", + "##nting", + "amateurs", + "augsburg", + "auschwitz", + "crowns", + "skeletons", + "##cona", + "bonnet", + "257", + "dummy", + "globalization", + "simeon", + "sleeper", + "mandal", + "differentiated", + "##crow", + "##mare", + "milne", + "bundled", + "exasperated", + "talmud", + "owes", + "segregated", + "##feng", + "##uary", + "dentist", + "piracy", + "props", + "##rang", + "devlin", + "##torium", + "malicious", + "paws", + "##laid", + "dependency", + "##ergy", + "##fers", + "##enna", + "258", + "pistons", + "rourke", + "jed", + "grammatical", + "tres", + "maha", + "wig", + "512", + "ghostly", + "jayne", + "##achal", + "##creen", + "##ilis", + "##lins", + "##rence", + "designate", + "##with", + "arrogance", + "cambodian", + "clones", + "showdown", + "throttle", + "twain", + "##ception", + "lobes", + "metz", + "nagoya", + "335", + "braking", + "##furt", + "385", + "roaming", + "##minster", + "amin", + "crippled", + "##37", + "##llary", + "indifferent", + "hoffmann", + "idols", + "intimidating", + "1751", + "261", + "influenza", + "memo", + "onions", + "1748", + "bandage", + "consciously", + "##landa", + "##rage", + "clandestine", + "observes", + "swiped", + "tangle", + "##ener", + "##jected", + "##trum", + "##bill", + "##lta", + "hugs", + "congresses", + "josiah", + "spirited", + "##dek", + "humanist", + "managerial", + "filmmaking", + "inmate", + "rhymes", + "debuting", + "grimsby", + "ur", + "##laze", + "duplicate", + "vigor", + "##tf", + "republished", + "bolshevik", + "refurbishment", + "antibiotics", + "martini", + "methane", + "newscasts", + "royale", + "horizons", + "levant", + "iain", + "visas", + "##ischen", + "paler", + "##around", + "manifestation", + "snuck", + "alf", + "chop", + "futile", + "pedestal", + "rehab", + "##kat", + "bmg", + "kerman", + "res", + "fairbanks", + "jarrett", + "abstraction", + "saharan", + "##zek", + "1746", + "procedural", + "clearer", + "kincaid", + "sash", + "luciano", + "##ffey", + "crunch", + "helmut", + "##vara", + "revolutionaries", + "##tute", + "creamy", + "leach", + "##mmon", + "1747", + "permitting", + "nes", + "plight", + "wendell", + "##lese", + "contra", + "ts", + "clancy", + "ipa", + "mach", + "staples", + "autopsy", + "disturbances", + "nueva", + "karin", + "pontiac", + "##uding", + "proxy", + "venerable", + "haunt", + "leto", + "bergman", + "expands", + "##helm", + "wal", + "##pipe", + "canning", + "celine", + "cords", + "obesity", + "##enary", + "intrusion", + "planner", + "##phate", + "reasoned", + "sequencing", + "307", + "harrow", + "##chon", + "##dora", + "marred", + "mcintyre", + "repay", + "tarzan", + "darting", + "248", + "harrisburg", + "margarita", + "repulsed", + "##hur", + "##lding", + "belinda", + "hamburger", + "novo", + "compliant", + "runways", + "bingham", + "registrar", + "skyscraper", + "ic", + "cuthbert", + "improvisation", + "livelihood", + "##corp", + "##elial", + "admiring", + "##dened", + "sporadic", + "believer", + "casablanca", + "popcorn", + "##29", + "asha", + "shovel", + "##bek", + "##dice", + "coiled", + "tangible", + "##dez", + "casper", + "elsie", + "resin", + "tenderness", + "rectory", + "##ivision", + "avail", + "sonar", + "##mori", + "boutique", + "##dier", + "guerre", + "bathed", + "upbringing", + "vaulted", + "sandals", + "blessings", + "##naut", + "##utnant", + "1680", + "306", + "foxes", + "pia", + "corrosion", + "hesitantly", + "confederates", + "crystalline", + "footprints", + "shapiro", + "tirana", + "valentin", + "drones", + "45th", + "microscope", + "shipments", + "texted", + "inquisition", + "wry", + "guernsey", + "unauthorized", + "resigning", + "760", + "ripple", + "schubert", + "stu", + "reassure", + "felony", + "##ardo", + "brittle", + "koreans", + "##havan", + "##ives", + "dun", + "implicit", + "tyres", + "##aldi", + "##lth", + "magnolia", + "##ehan", + "##puri", + "##poulos", + "aggressively", + "fei", + "gr", + "familiarity", + "##poo", + "indicative", + "##trust", + "fundamentally", + "jimmie", + "overrun", + "395", + "anchors", + "moans", + "##opus", + "britannia", + "armagh", + "##ggle", + "purposely", + "seizing", + "##vao", + "bewildered", + "mundane", + "avoidance", + "cosmopolitan", + "geometridae", + "quartermaster", + "caf", + "415", + "chatter", + "engulfed", + "gleam", + "purge", + "##icate", + "juliette", + "jurisprudence", + "guerra", + "revisions", + "##bn", + "casimir", + "brew", + "##jm", + "1749", + "clapton", + "cloudy", + "conde", + "hermitage", + "278", + "simulations", + "torches", + "vincenzo", + "matteo", + "##rill", + "hidalgo", + "booming", + "westbound", + "accomplishment", + "tentacles", + "unaffected", + "##sius", + "annabelle", + "flopped", + "sloping", + "##litz", + "dreamer", + "interceptor", + "vu", + "##loh", + "consecration", + "copying", + "messaging", + "breaker", + "climates", + "hospitalized", + "1752", + "torino", + "afternoons", + "winfield", + "witnessing", + "##teacher", + "breakers", + "choirs", + "sawmill", + "coldly", + "##ege", + "sipping", + "haste", + "uninhabited", + "conical", + "bibliography", + "pamphlets", + "severn", + "edict", + "##oca", + "deux", + "illnesses", + "grips", + "##pl", + "rehearsals", + "sis", + "thinkers", + "tame", + "##keepers", + "1690", + "acacia", + "reformer", + "##osed", + "##rys", + "shuffling", + "##iring", + "##shima", + "eastbound", + "ionic", + "rhea", + "flees", + "littered", + "##oum", + "rocker", + "vomiting", + "groaning", + "champ", + "overwhelmingly", + "civilizations", + "paces", + "sloop", + "adoptive", + "##tish", + "skaters", + "##vres", + "aiding", + "mango", + "##joy", + "nikola", + "shriek", + "##ignon", + "pharmaceuticals", + "##mg", + "tuna", + "calvert", + "gustavo", + "stocked", + "yearbook", + "##urai", + "##mana", + "computed", + "subsp", + "riff", + "hanoi", + "kelvin", + "hamid", + "moors", + "pastures", + "summons", + "jihad", + "nectar", + "##ctors", + "bayou", + "untitled", + "pleasing", + "vastly", + "republics", + "intellect", + "##\u03b7", + "##ulio", + "##tou", + "crumbling", + "stylistic", + "sb", + "##\u06cc", + "consolation", + "frequented", + "h\u2082o", + "walden", + "widows", + "##iens", + "404", + "##ignment", + "chunks", + "improves", + "288", + "grit", + "recited", + "##dev", + "snarl", + "sociological", + "##arte", + "##gul", + "inquired", + "##held", + "bruise", + "clube", + "consultancy", + "homogeneous", + "hornets", + "multiplication", + "pasta", + "prick", + "savior", + "##grin", + "##kou", + "##phile", + "yoon", + "##gara", + "grimes", + "vanishing", + "cheering", + "reacting", + "bn", + "distillery", + "##quisite", + "##vity", + "coe", + "dockyard", + "massif", + "##jord", + "escorts", + "voss", + "##valent", + "byte", + "chopped", + "hawke", + "illusions", + "workings", + "floats", + "##koto", + "##vac", + "kv", + "annapolis", + "madden", + "##onus", + "alvaro", + "noctuidae", + "##cum", + "##scopic", + "avenge", + "steamboat", + "forte", + "illustrates", + "erika", + "##trip", + "570", + "dew", + "nationalities", + "bran", + "manifested", + "thirsty", + "diversified", + "muscled", + "reborn", + "##standing", + "arson", + "##lessness", + "##dran", + "##logram", + "##boys", + "##kushima", + "##vious", + "willoughby", + "##phobia", + "286", + "alsace", + "dashboard", + "yuki", + "##chai", + "granville", + "myspace", + "publicized", + "tricked", + "##gang", + "adjective", + "##ater", + "relic", + "reorganisation", + "enthusiastically", + "indications", + "saxe", + "##lassified", + "consolidate", + "iec", + "padua", + "helplessly", + "ramps", + "renaming", + "regulars", + "pedestrians", + "accents", + "convicts", + "inaccurate", + "lowers", + "mana", + "##pati", + "barrie", + "bjp", + "outta", + "someplace", + "berwick", + "flanking", + "invoked", + "marrow", + "sparsely", + "excerpts", + "clothed", + "rei", + "##ginal", + "wept", + "##stra\u00dfe", + "##vish", + "alexa", + "excel", + "##ptive", + "membranes", + "aquitaine", + "creeks", + "cutler", + "sheppard", + "implementations", + "ns", + "##dur", + "fragrance", + "budge", + "concordia", + "magnesium", + "marcelo", + "##antes", + "gladly", + "vibrating", + "##rral", + "##ggles", + "montrose", + "##omba", + "lew", + "seamus", + "1630", + "cocky", + "##ament", + "##uen", + "bjorn", + "##rrick", + "fielder", + "fluttering", + "##lase", + "methyl", + "kimberley", + "mcdowell", + "reductions", + "barbed", + "##jic", + "##tonic", + "aeronautical", + "condensed", + "distracting", + "##promising", + "huffed", + "##cala", + "##sle", + "claudius", + "invincible", + "missy", + "pious", + "balthazar", + "ci", + "##lang", + "butte", + "combo", + "orson", + "##dication", + "myriad", + "1707", + "silenced", + "##fed", + "##rh", + "coco", + "netball", + "yourselves", + "##oza", + "clarify", + "heller", + "peg", + "durban", + "etudes", + "offender", + "roast", + "blackmail", + "curvature", + "##woods", + "vile", + "309", + "illicit", + "suriname", + "##linson", + "overture", + "1685", + "bubbling", + "gymnast", + "tucking", + "##mming", + "##ouin", + "maldives", + "##bala", + "gurney", + "##dda", + "##eased", + "##oides", + "backside", + "pinto", + "jars", + "racehorse", + "tending", + "##rdial", + "baronetcy", + "wiener", + "duly", + "##rke", + "barbarian", + "cupping", + "flawed", + "##thesis", + "bertha", + "pleistocene", + "puddle", + "swearing", + "##nob", + "##tically", + "fleeting", + "prostate", + "amulet", + "educating", + "##mined", + "##iti", + "##tler", + "75th", + "jens", + "respondents", + "analytics", + "cavaliers", + "papacy", + "raju", + "##iente", + "##ulum", + "##tip", + "funnel", + "271", + "disneyland", + "##lley", + "sociologist", + "##iam", + "2500", + "faulkner", + "louvre", + "menon", + "##dson", + "276", + "##ower", + "afterlife", + "mannheim", + "peptide", + "referees", + "comedians", + "meaningless", + "##anger", + "##laise", + "fabrics", + "hurley", + "renal", + "sleeps", + "##bour", + "##icle", + "breakout", + "kristin", + "roadside", + "animator", + "clover", + "disdain", + "unsafe", + "redesign", + "##urity", + "firth", + "barnsley", + "portage", + "reset", + "narrows", + "268", + "commandos", + "expansive", + "speechless", + "tubular", + "##lux", + "essendon", + "eyelashes", + "smashwords", + "##yad", + "##bang", + "##claim", + "craved", + "sprinted", + "chet", + "somme", + "astor", + "wroc\u0142aw", + "orton", + "266", + "bane", + "##erving", + "##uing", + "mischief", + "##amps", + "##sund", + "scaling", + "terre", + "##xious", + "impairment", + "offenses", + "undermine", + "moi", + "soy", + "contiguous", + "arcadia", + "inuit", + "seam", + "##tops", + "macbeth", + "rebelled", + "##icative", + "##iot", + "590", + "elaborated", + "frs", + "uniformed", + "##dberg", + "259", + "powerless", + "priscilla", + "stimulated", + "980", + "qc", + "arboretum", + "frustrating", + "trieste", + "bullock", + "##nified", + "enriched", + "glistening", + "intern", + "##adia", + "locus", + "nouvelle", + "ollie", + "ike", + "lash", + "starboard", + "ee", + "tapestry", + "headlined", + "hove", + "rigged", + "##vite", + "pollock", + "##yme", + "thrive", + "clustered", + "cas", + "roi", + "gleamed", + "olympiad", + "##lino", + "pressured", + "regimes", + "##hosis", + "##lick", + "ripley", + "##ophone", + "kickoff", + "gallon", + "rockwell", + "##arable", + "crusader", + "glue", + "revolutions", + "scrambling", + "1714", + "grover", + "##jure", + "englishman", + "aztec", + "263", + "contemplating", + "coven", + "ipad", + "preach", + "triumphant", + "tufts", + "##esian", + "rotational", + "##phus", + "328", + "falkland", + "##brates", + "strewn", + "clarissa", + "rejoin", + "environmentally", + "glint", + "banded", + "drenched", + "moat", + "albanians", + "johor", + "rr", + "maestro", + "malley", + "nouveau", + "shaded", + "taxonomy", + "v6", + "adhere", + "bunk", + "airfields", + "##ritan", + "1741", + "encompass", + "remington", + "tran", + "##erative", + "amelie", + "mazda", + "friar", + "morals", + "passions", + "##zai", + "breadth", + "vis", + "##hae", + "argus", + "burnham", + "caressing", + "insider", + "rudd", + "##imov", + "##mini", + "##rso", + "italianate", + "murderous", + "textual", + "wainwright", + "armada", + "bam", + "weave", + "timer", + "##taken", + "##nh", + "fra", + "##crest", + "ardent", + "salazar", + "taps", + "tunis", + "##ntino", + "allegro", + "gland", + "philanthropic", + "##chester", + "implication", + "##optera", + "esq", + "judas", + "noticeably", + "wynn", + "##dara", + "inched", + "indexed", + "crises", + "villiers", + "bandit", + "royalties", + "patterned", + "cupboard", + "interspersed", + "accessory", + "isla", + "kendrick", + "entourage", + "stitches", + "##esthesia", + "headwaters", + "##ior", + "interlude", + "distraught", + "draught", + "1727", + "##basket", + "biased", + "sy", + "transient", + "triad", + "subgenus", + "adapting", + "kidd", + "shortstop", + "##umatic", + "dimly", + "spiked", + "mcleod", + "reprint", + "nellie", + "pretoria", + "windmill", + "##cek", + "singled", + "##mps", + "273", + "reunite", + "##orous", + "747", + "bankers", + "outlying", + "##omp", + "##ports", + "##tream", + "apologies", + "cosmetics", + "patsy", + "##deh", + "##ocks", + "##yson", + "bender", + "nantes", + "serene", + "##nad", + "lucha", + "mmm", + "323", + "##cius", + "##gli", + "cmll", + "coinage", + "nestor", + "juarez", + "##rook", + "smeared", + "sprayed", + "twitching", + "sterile", + "irina", + "embodied", + "juveniles", + "enveloped", + "miscellaneous", + "cancers", + "dq", + "gulped", + "luisa", + "crested", + "swat", + "donegal", + "ref", + "##anov", + "##acker", + "hearst", + "mercantile", + "##lika", + "doorbell", + "ua", + "vicki", + "##alla", + "##som", + "bilbao", + "psychologists", + "stryker", + "sw", + "horsemen", + "turkmenistan", + "wits", + "##national", + "anson", + "mathew", + "screenings", + "##umb", + "rihanna", + "##agne", + "##nessy", + "aisles", + "##iani", + "##osphere", + "hines", + "kenton", + "saskatoon", + "tasha", + "truncated", + "##champ", + "##itan", + "mildred", + "advises", + "fredrik", + "interpreting", + "inhibitors", + "##athi", + "spectroscopy", + "##hab", + "##kong", + "karim", + "panda", + "##oia", + "##nail", + "##vc", + "conqueror", + "kgb", + "leukemia", + "##dity", + "arrivals", + "cheered", + "pisa", + "phosphorus", + "shielded", + "##riated", + "mammal", + "unitarian", + "urgently", + "chopin", + "sanitary", + "##mission", + "spicy", + "drugged", + "hinges", + "##tort", + "tipping", + "trier", + "impoverished", + "westchester", + "##caster", + "267", + "epoch", + "nonstop", + "##gman", + "##khov", + "aromatic", + "centrally", + "cerro", + "##tively", + "##vio", + "billions", + "modulation", + "sedimentary", + "283", + "facilitating", + "outrageous", + "goldstein", + "##eak", + "##kt", + "ld", + "maitland", + "penultimate", + "pollard", + "##dance", + "fleets", + "spaceship", + "vertebrae", + "##nig", + "alcoholism", + "als", + "recital", + "##bham", + "##ference", + "##omics", + "m2", + "##bm", + "trois", + "##tropical", + "##\u0432", + "commemorates", + "##meric", + "marge", + "##raction", + "1643", + "670", + "cosmetic", + "ravaged", + "##ige", + "catastrophe", + "eng", + "##shida", + "albrecht", + "arterial", + "bellamy", + "decor", + "harmon", + "##rde", + "bulbs", + "synchronized", + "vito", + "easiest", + "shetland", + "shielding", + "wnba", + "##glers", + "##ssar", + "##riam", + "brianna", + "cumbria", + "##aceous", + "##rard", + "cores", + "thayer", + "##nsk", + "brood", + "hilltop", + "luminous", + "carts", + "keynote", + "larkin", + "logos", + "##cta", + "##\u0627", + "##mund", + "##quay", + "lilith", + "tinted", + "277", + "wrestle", + "mobilization", + "##uses", + "sequential", + "siam", + "bloomfield", + "takahashi", + "274", + "##ieving", + "presenters", + "ringo", + "blazed", + "witty", + "##oven", + "##ignant", + "devastation", + "haydn", + "harmed", + "newt", + "therese", + "##peed", + "gershwin", + "molina", + "rabbis", + "sudanese", + "001", + "innate", + "restarted", + "##sack", + "##fus", + "slices", + "wb", + "##shah", + "enroll", + "hypothetical", + "hysterical", + "1743", + "fabio", + "indefinite", + "warped", + "##hg", + "exchanging", + "525", + "unsuitable", + "##sboro", + "gallo", + "1603", + "bret", + "cobalt", + "homemade", + "##hunter", + "mx", + "operatives", + "##dhar", + "terraces", + "durable", + "latch", + "pens", + "whorls", + "##ctuated", + "##eaux", + "billing", + "ligament", + "succumbed", + "##gly", + "regulators", + "spawn", + "##brick", + "##stead", + "filmfare", + "rochelle", + "##nzo", + "1725", + "circumstance", + "saber", + "supplements", + "##nsky", + "##tson", + "crowe", + "wellesley", + "carrot", + "##9th", + "##movable", + "primate", + "drury", + "sincerely", + "topical", + "##mad", + "##rao", + "callahan", + "kyiv", + "smarter", + "tits", + "undo", + "##yeh", + "announcements", + "anthologies", + "barrio", + "nebula", + "##islaus", + "##shaft", + "##tyn", + "bodyguards", + "2021", + "assassinate", + "barns", + "emmett", + "scully", + "##mah", + "##yd", + "##eland", + "##tino", + "##itarian", + "demoted", + "gorman", + "lashed", + "prized", + "adventist", + "writ", + "##gui", + "alla", + "invertebrates", + "##ausen", + "1641", + "amman", + "1742", + "align", + "healy", + "redistribution", + "##gf", + "##rize", + "insulation", + "##drop", + "adherents", + "hezbollah", + "vitro", + "ferns", + "yanking", + "269", + "php", + "registering", + "uppsala", + "cheerleading", + "confines", + "mischievous", + "tully", + "##ross", + "49th", + "docked", + "roam", + "stipulated", + "pumpkin", + "##bry", + "prompt", + "##ezer", + "blindly", + "shuddering", + "craftsmen", + "frail", + "scented", + "katharine", + "scramble", + "shaggy", + "sponge", + "helix", + "zaragoza", + "279", + "##52", + "43rd", + "backlash", + "fontaine", + "seizures", + "posse", + "cowan", + "nonfiction", + "telenovela", + "wwii", + "hammered", + "undone", + "##gpur", + "encircled", + "irs", + "##ivation", + "artefacts", + "oneself", + "searing", + "smallpox", + "##belle", + "##osaurus", + "shandong", + "breached", + "upland", + "blushing", + "rankin", + "infinitely", + "psyche", + "tolerated", + "docking", + "evicted", + "##col", + "unmarked", + "##lving", + "gnome", + "lettering", + "litres", + "musique", + "##oint", + "benevolent", + "##jal", + "blackened", + "##anna", + "mccall", + "racers", + "tingle", + "##ocene", + "##orestation", + "introductions", + "radically", + "292", + "##hiff", + "##\u0628\u0627\u062f", + "1610", + "1739", + "munchen", + "plead", + "##nka", + "condo", + "scissors", + "##sight", + "##tens", + "apprehension", + "##cey", + "##yin", + "hallmark", + "watering", + "formulas", + "sequels", + "##llas", + "aggravated", + "bae", + "commencing", + "##building", + "enfield", + "prohibits", + "marne", + "vedic", + "civilized", + "euclidean", + "jagger", + "beforehand", + "blasts", + "dumont", + "##arney", + "##nem", + "740", + "conversions", + "hierarchical", + "rios", + "simulator", + "##dya", + "##lellan", + "hedges", + "oleg", + "thrusts", + "shadowed", + "darby", + "maximize", + "1744", + "gregorian", + "##nded", + "##routed", + "sham", + "unspecified", + "##hog", + "emory", + "factual", + "##smo", + "##tp", + "fooled", + "##rger", + "ortega", + "wellness", + "marlon", + "##oton", + "##urance", + "casket", + "keating", + "ley", + "enclave", + "##ayan", + "char", + "influencing", + "jia", + "##chenko", + "412", + "ammonia", + "erebidae", + "incompatible", + "violins", + "cornered", + "##arat", + "grooves", + "astronauts", + "columbian", + "rampant", + "fabrication", + "kyushu", + "mahmud", + "vanish", + "##dern", + "mesopotamia", + "##lete", + "ict", + "##rgen", + "caspian", + "kenji", + "pitted", + "##vered", + "999", + "grimace", + "roanoke", + "tchaikovsky", + "twinned", + "##analysis", + "##awan", + "xinjiang", + "arias", + "clemson", + "kazakh", + "sizable", + "1662", + "##khand", + "##vard", + "plunge", + "tatum", + "vittorio", + "##nden", + "cholera", + "##dana", + "##oper", + "bracing", + "indifference", + "projectile", + "superliga", + "##chee", + "realises", + "upgrading", + "299", + "porte", + "retribution", + "##vies", + "nk", + "stil", + "##resses", + "ama", + "bureaucracy", + "blackberry", + "bosch", + "testosterone", + "collapses", + "greer", + "##pathic", + "ioc", + "fifties", + "malls", + "##erved", + "bao", + "baskets", + "adolescents", + "siegfried", + "##osity", + "##tosis", + "mantra", + "detecting", + "existent", + "fledgling", + "##cchi", + "dissatisfied", + "gan", + "telecommunication", + "mingled", + "sobbed", + "6000", + "controversies", + "outdated", + "taxis", + "##raus", + "fright", + "slams", + "##lham", + "##fect", + "##tten", + "detectors", + "fetal", + "tanned", + "##uw", + "fray", + "goth", + "olympian", + "skipping", + "mandates", + "scratches", + "sheng", + "unspoken", + "hyundai", + "tracey", + "hotspur", + "restrictive", + "##buch", + "americana", + "mundo", + "##bari", + "burroughs", + "diva", + "vulcan", + "##6th", + "distinctions", + "thumping", + "##ngen", + "mikey", + "sheds", + "fide", + "rescues", + "springsteen", + "vested", + "valuation", + "##ece", + "##ely", + "pinnacle", + "rake", + "sylvie", + "##edo", + "almond", + "quivering", + "##irus", + "alteration", + "faltered", + "##wad", + "51st", + "hydra", + "ticked", + "##kato", + "recommends", + "##dicated", + "antigua", + "arjun", + "stagecoach", + "wilfred", + "trickle", + "pronouns", + "##pon", + "aryan", + "nighttime", + "##anian", + "gall", + "pea", + "stitch", + "##hei", + "leung", + "milos", + "##dini", + "eritrea", + "nexus", + "starved", + "snowfall", + "kant", + "parasitic", + "cot", + "discus", + "hana", + "strikers", + "appleton", + "kitchens", + "##erina", + "##partisan", + "##itha", + "##vius", + "disclose", + "metis", + "##channel", + "1701", + "tesla", + "##vera", + "fitch", + "1735", + "blooded", + "##tila", + "decimal", + "##tang", + "##bai", + "cyclones", + "eun", + "bottled", + "peas", + "pensacola", + "basha", + "bolivian", + "crabs", + "boil", + "lanterns", + "partridge", + "roofed", + "1645", + "necks", + "##phila", + "opined", + "patting", + "##kla", + "##lland", + "chuckles", + "volta", + "whereupon", + "##nche", + "devout", + "euroleague", + "suicidal", + "##dee", + "inherently", + "involuntary", + "knitting", + "nasser", + "##hide", + "puppets", + "colourful", + "courageous", + "southend", + "stills", + "miraculous", + "hodgson", + "richer", + "rochdale", + "ethernet", + "greta", + "uniting", + "prism", + "umm", + "##haya", + "##itical", + "##utation", + "deterioration", + "pointe", + "prowess", + "##ropriation", + "lids", + "scranton", + "billings", + "subcontinent", + "##koff", + "##scope", + "brute", + "kellogg", + "psalms", + "degraded", + "##vez", + "stanis\u0142aw", + "##ructured", + "ferreira", + "pun", + "astonishing", + "gunnar", + "##yat", + "arya", + "prc", + "gottfried", + "##tight", + "excursion", + "##ographer", + "dina", + "##quil", + "##nare", + "huffington", + "illustrious", + "wilbur", + "gundam", + "verandah", + "##zard", + "naacp", + "##odle", + "constructive", + "fjord", + "kade", + "##naud", + "generosity", + "thrilling", + "baseline", + "cayman", + "frankish", + "plastics", + "accommodations", + "zoological", + "##fting", + "cedric", + "qb", + "motorized", + "##dome", + "##otted", + "squealed", + "tackled", + "canucks", + "budgets", + "situ", + "asthma", + "dail", + "gabled", + "grasslands", + "whimpered", + "writhing", + "judgments", + "##65", + "minnie", + "pv", + "##carbon", + "bananas", + "grille", + "domes", + "monique", + "odin", + "maguire", + "markham", + "tierney", + "##estra", + "##chua", + "libel", + "poke", + "speedy", + "atrium", + "laval", + "notwithstanding", + "##edly", + "fai", + "kala", + "##sur", + "robb", + "##sma", + "listings", + "luz", + "supplementary", + "tianjin", + "##acing", + "enzo", + "jd", + "ric", + "scanner", + "croats", + "transcribed", + "##49", + "arden", + "cv", + "##hair", + "##raphy", + "##lver", + "##uy", + "357", + "seventies", + "staggering", + "alam", + "horticultural", + "hs", + "regression", + "timbers", + "blasting", + "##ounded", + "montagu", + "manipulating", + "##cit", + "catalytic", + "1550", + "troopers", + "##meo", + "condemnation", + "fitzpatrick", + "##oire", + "##roved", + "inexperienced", + "1670", + "castes", + "##lative", + "outing", + "314", + "dubois", + "flicking", + "quarrel", + "ste", + "learners", + "1625", + "iq", + "whistled", + "##class", + "282", + "classify", + "tariffs", + "temperament", + "355", + "folly", + "liszt", + "##yles", + "immersed", + "jordanian", + "ceasefire", + "apparel", + "extras", + "maru", + "fished", + "##bio", + "harta", + "stockport", + "assortment", + "craftsman", + "paralysis", + "transmitters", + "##cola", + "blindness", + "##wk", + "fatally", + "proficiency", + "solemnly", + "##orno", + "repairing", + "amore", + "groceries", + "ultraviolet", + "##chase", + "schoolhouse", + "##tua", + "resurgence", + "nailed", + "##otype", + "##\u00d7", + "ruse", + "saliva", + "diagrams", + "##tructing", + "albans", + "rann", + "thirties", + "1b", + "antennas", + "hilarious", + "cougars", + "paddington", + "stats", + "##eger", + "breakaway", + "ipod", + "reza", + "authorship", + "prohibiting", + "scoffed", + "##etz", + "##ttle", + "conscription", + "defected", + "trondheim", + "##fires", + "ivanov", + "keenan", + "##adan", + "##ciful", + "##fb", + "##slow", + "locating", + "##ials", + "##tford", + "cadiz", + "basalt", + "blankly", + "interned", + "rags", + "rattling", + "##tick", + "carpathian", + "reassured", + "sync", + "bum", + "guildford", + "iss", + "staunch", + "##onga", + "astronomers", + "sera", + "sofie", + "emergencies", + "susquehanna", + "##heard", + "duc", + "mastery", + "vh1", + "williamsburg", + "bayer", + "buckled", + "craving", + "##khan", + "##rdes", + "bloomington", + "##write", + "alton", + "barbecue", + "##bians", + "justine", + "##hri", + "##ndt", + "delightful", + "smartphone", + "newtown", + "photon", + "retrieval", + "peugeot", + "hissing", + "##monium", + "##orough", + "flavors", + "lighted", + "relaunched", + "tainted", + "##games", + "##lysis", + "anarchy", + "microscopic", + "hopping", + "adept", + "evade", + "evie", + "##beau", + "inhibit", + "sinn", + "adjustable", + "hurst", + "intuition", + "wilton", + "cisco", + "44th", + "lawful", + "lowlands", + "stockings", + "thierry", + "##dalen", + "##hila", + "##nai", + "fates", + "prank", + "tb", + "maison", + "lobbied", + "provocative", + "1724", + "4a", + "utopia", + "##qual", + "carbonate", + "gujarati", + "purcell", + "##rford", + "curtiss", + "##mei", + "overgrown", + "arenas", + "mediation", + "swallows", + "##rnik", + "respectful", + "turnbull", + "##hedron", + "##hope", + "alyssa", + "ozone", + "##\u02bbi", + "ami", + "gestapo", + "johansson", + "snooker", + "canteen", + "cuff", + "declines", + "empathy", + "stigma", + "##ags", + "##iner", + "##raine", + "taxpayers", + "gui", + "volga", + "##wright", + "##copic", + "lifespan", + "overcame", + "tattooed", + "enactment", + "giggles", + "##ador", + "##camp", + "barrington", + "bribe", + "obligatory", + "orbiting", + "peng", + "##enas", + "elusive", + "sucker", + "##vating", + "cong", + "hardship", + "empowered", + "anticipating", + "estrada", + "cryptic", + "greasy", + "detainees", + "planck", + "sudbury", + "plaid", + "dod", + "marriott", + "kayla", + "##ears", + "##vb", + "##zd", + "mortally", + "##hein", + "cognition", + "radha", + "319", + "liechtenstein", + "meade", + "richly", + "argyle", + "harpsichord", + "liberalism", + "trumpets", + "lauded", + "tyrant", + "salsa", + "tiled", + "lear", + "promoters", + "reused", + "slicing", + "trident", + "##chuk", + "##gami", + "##lka", + "cantor", + "checkpoint", + "##points", + "gaul", + "leger", + "mammalian", + "##tov", + "##aar", + "##schaft", + "doha", + "frenchman", + "nirvana", + "##vino", + "delgado", + "headlining", + "##eron", + "##iography", + "jug", + "tko", + "1649", + "naga", + "intersections", + "##jia", + "benfica", + "nawab", + "##suka", + "ashford", + "gulp", + "##deck", + "##vill", + "##rug", + "brentford", + "frazier", + "pleasures", + "dunne", + "potsdam", + "shenzhen", + "dentistry", + "##tec", + "flanagan", + "##dorff", + "##hear", + "chorale", + "dinah", + "prem", + "quezon", + "##rogated", + "relinquished", + "sutra", + "terri", + "##pani", + "flaps", + "##rissa", + "poly", + "##rnet", + "homme", + "aback", + "##eki", + "linger", + "womb", + "##kson", + "##lewood", + "doorstep", + "orthodoxy", + "threaded", + "westfield", + "##rval", + "dioceses", + "fridays", + "subsided", + "##gata", + "loyalists", + "##biotic", + "##ettes", + "letterman", + "lunatic", + "prelate", + "tenderly", + "invariably", + "souza", + "thug", + "winslow", + "##otide", + "furlongs", + "gogh", + "jeopardy", + "##runa", + "pegasus", + "##umble", + "humiliated", + "standalone", + "tagged", + "##roller", + "freshmen", + "klan", + "##bright", + "attaining", + "initiating", + "transatlantic", + "logged", + "viz", + "##uance", + "1723", + "combatants", + "intervening", + "stephane", + "chieftain", + "despised", + "grazed", + "317", + "cdc", + "galveston", + "godzilla", + "macro", + "simulate", + "##planes", + "parades", + "##esses", + "960", + "##ductive", + "##unes", + "equator", + "overdose", + "##cans", + "##hosh", + "##lifting", + "joshi", + "epstein", + "sonora", + "treacherous", + "aquatics", + "manchu", + "responsive", + "##sation", + "supervisory", + "##christ", + "##llins", + "##ibar", + "##balance", + "##uso", + "kimball", + "karlsruhe", + "mab", + "##emy", + "ignores", + "phonetic", + "reuters", + "spaghetti", + "820", + "almighty", + "danzig", + "rumbling", + "tombstone", + "designations", + "lured", + "outset", + "##felt", + "supermarkets", + "##wt", + "grupo", + "kei", + "kraft", + "susanna", + "##blood", + "comprehension", + "genealogy", + "##aghan", + "##verted", + "redding", + "##ythe", + "1722", + "bowing", + "##pore", + "##roi", + "lest", + "sharpened", + "fulbright", + "valkyrie", + "sikhs", + "##unds", + "swans", + "bouquet", + "merritt", + "##tage", + "##venting", + "commuted", + "redhead", + "clerks", + "leasing", + "cesare", + "dea", + "hazy", + "##vances", + "fledged", + "greenfield", + "servicemen", + "##gical", + "armando", + "blackout", + "dt", + "sagged", + "downloadable", + "intra", + "potion", + "pods", + "##4th", + "##mism", + "xp", + "attendants", + "gambia", + "stale", + "##ntine", + "plump", + "asteroids", + "rediscovered", + "buds", + "flea", + "hive", + "##neas", + "1737", + "classifications", + "debuts", + "##eles", + "olympus", + "scala", + "##eurs", + "##gno", + "##mute", + "hummed", + "sigismund", + "visuals", + "wiggled", + "await", + "pilasters", + "clench", + "sulfate", + "##ances", + "bellevue", + "enigma", + "trainee", + "snort", + "##sw", + "clouded", + "denim", + "##rank", + "##rder", + "churning", + "hartman", + "lodges", + "riches", + "sima", + "##missible", + "accountable", + "socrates", + "regulates", + "mueller", + "##cr", + "1702", + "avoids", + "solids", + "himalayas", + "nutrient", + "pup", + "##jevic", + "squat", + "fades", + "nec", + "##lates", + "##pina", + "##rona", + "##\u03bf\u03c5", + "privateer", + "tequila", + "##gative", + "##mpton", + "apt", + "hornet", + "immortals", + "##dou", + "asturias", + "cleansing", + "dario", + "##rries", + "##anta", + "etymology", + "servicing", + "zhejiang", + "##venor", + "##nx", + "horned", + "erasmus", + "rayon", + "relocating", + "\u00a310", + "##bags", + "escalated", + "promenade", + "stubble", + "2010s", + "artisans", + "axial", + "liquids", + "mora", + "sho", + "yoo", + "##tsky", + "bundles", + "oldies", + "##nally", + "notification", + "bastion", + "##ths", + "sparkle", + "##lved", + "1728", + "leash", + "pathogen", + "highs", + "##hmi", + "immature", + "880", + "gonzaga", + "ignatius", + "mansions", + "monterrey", + "sweets", + "bryson", + "##loe", + "polled", + "regatta", + "brightest", + "pei", + "rosy", + "squid", + "hatfield", + "payroll", + "addict", + "meath", + "cornerback", + "heaviest", + "lodging", + "##mage", + "capcom", + "rippled", + "##sily", + "barnet", + "mayhem", + "ymca", + "snuggled", + "rousseau", + "##cute", + "blanchard", + "284", + "fragmented", + "leighton", + "chromosomes", + "risking", + "##md", + "##strel", + "##utter", + "corinne", + "coyotes", + "cynical", + "hiroshi", + "yeomanry", + "##ractive", + "ebook", + "grading", + "mandela", + "plume", + "agustin", + "magdalene", + "##rkin", + "bea", + "femme", + "trafford", + "##coll", + "##lun", + "##tance", + "52nd", + "fourier", + "upton", + "##mental", + "camilla", + "gust", + "iihf", + "islamabad", + "longevity", + "##kala", + "feldman", + "netting", + "##rization", + "endeavour", + "foraging", + "mfa", + "orr", + "##open", + "greyish", + "contradiction", + "graz", + "##ruff", + "handicapped", + "marlene", + "tweed", + "oaxaca", + "spp", + "campos", + "miocene", + "pri", + "configured", + "cooks", + "pluto", + "cozy", + "pornographic", + "##entes", + "70th", + "fairness", + "glided", + "jonny", + "lynne", + "rounding", + "sired", + "##emon", + "##nist", + "remade", + "uncover", + "##mack", + "complied", + "lei", + "newsweek", + "##jured", + "##parts", + "##enting", + "##pg", + "293", + "finer", + "guerrillas", + "athenian", + "deng", + "disused", + "stepmother", + "accuse", + "gingerly", + "seduction", + "521", + "confronting", + "##walker", + "##going", + "gora", + "nostalgia", + "sabres", + "virginity", + "wrenched", + "##minated", + "syndication", + "wielding", + "eyre", + "##56", + "##gnon", + "##igny", + "behaved", + "taxpayer", + "sweeps", + "##growth", + "childless", + "gallant", + "##ywood", + "amplified", + "geraldine", + "scrape", + "##ffi", + "babylonian", + "fresco", + "##rdan", + "##kney", + "##position", + "1718", + "restricting", + "tack", + "fukuoka", + "osborn", + "selector", + "partnering", + "##dlow", + "318", + "gnu", + "kia", + "tak", + "whitley", + "gables", + "##54", + "##mania", + "mri", + "softness", + "immersion", + "##bots", + "##evsky", + "1713", + "chilling", + "insignificant", + "pcs", + "##uis", + "elites", + "lina", + "purported", + "supplemental", + "teaming", + "##americana", + "##dding", + "##inton", + "proficient", + "rouen", + "##nage", + "##rret", + "niccolo", + "selects", + "##bread", + "fluffy", + "1621", + "gruff", + "knotted", + "mukherjee", + "polgara", + "thrash", + "nicholls", + "secluded", + "smoothing", + "thru", + "corsica", + "loaf", + "whitaker", + "inquiries", + "##rrier", + "##kam", + "indochina", + "289", + "marlins", + "myles", + "peking", + "##tea", + "extracts", + "pastry", + "superhuman", + "connacht", + "vogel", + "##ditional", + "##het", + "##udged", + "##lash", + "gloss", + "quarries", + "refit", + "teaser", + "##alic", + "##gaon", + "20s", + "materialized", + "sling", + "camped", + "pickering", + "tung", + "tracker", + "pursuant", + "##cide", + "cranes", + "soc", + "##cini", + "##typical", + "##viere", + "anhalt", + "overboard", + "workout", + "chores", + "fares", + "orphaned", + "stains", + "##logie", + "fenton", + "surpassing", + "joyah", + "triggers", + "##itte", + "grandmaster", + "##lass", + "##lists", + "clapping", + "fraudulent", + "ledger", + "nagasaki", + "##cor", + "##nosis", + "##tsa", + "eucalyptus", + "tun", + "##icio", + "##rney", + "##tara", + "dax", + "heroism", + "ina", + "wrexham", + "onboard", + "unsigned", + "##dates", + "moshe", + "galley", + "winnie", + "droplets", + "exiles", + "praises", + "watered", + "noodles", + "##aia", + "fein", + "adi", + "leland", + "multicultural", + "stink", + "bingo", + "comets", + "erskine", + "modernized", + "canned", + "constraint", + "domestically", + "chemotherapy", + "featherweight", + "stifled", + "##mum", + "darkly", + "irresistible", + "refreshing", + "hasty", + "isolate", + "##oys", + "kitchener", + "planners", + "##wehr", + "cages", + "yarn", + "implant", + "toulon", + "elects", + "childbirth", + "yue", + "##lind", + "##lone", + "cn", + "rightful", + "sportsman", + "junctions", + "remodeled", + "specifies", + "##rgh", + "291", + "##oons", + "complimented", + "##urgent", + "lister", + "ot", + "##logic", + "bequeathed", + "cheekbones", + "fontana", + "gabby", + "##dial", + "amadeus", + "corrugated", + "maverick", + "resented", + "triangles", + "##hered", + "##usly", + "nazareth", + "tyrol", + "1675", + "assent", + "poorer", + "sectional", + "aegean", + "##cous", + "296", + "nylon", + "ghanaian", + "##egorical", + "##weig", + "cushions", + "forbid", + "fusiliers", + "obstruction", + "somerville", + "##scia", + "dime", + "earrings", + "elliptical", + "leyte", + "oder", + "polymers", + "timmy", + "atm", + "midtown", + "piloted", + "settles", + "continual", + "externally", + "mayfield", + "##uh", + "enrichment", + "henson", + "keane", + "persians", + "1733", + "benji", + "braden", + "pep", + "324", + "##efe", + "contenders", + "pepsi", + "valet", + "##isches", + "298", + "##asse", + "##earing", + "goofy", + "stroll", + "##amen", + "authoritarian", + "occurrences", + "adversary", + "ahmedabad", + "tangent", + "toppled", + "dorchester", + "1672", + "modernism", + "marxism", + "islamist", + "charlemagne", + "exponential", + "racks", + "unicode", + "brunette", + "mbc", + "pic", + "skirmish", + "##bund", + "##lad", + "##powered", + "##yst", + "hoisted", + "messina", + "shatter", + "##ctum", + "jedi", + "vantage", + "##music", + "##neil", + "clemens", + "mahmoud", + "corrupted", + "authentication", + "lowry", + "nils", + "##washed", + "omnibus", + "wounding", + "jillian", + "##itors", + "##opped", + "serialized", + "narcotics", + "handheld", + "##arm", + "##plicity", + "intersecting", + "stimulating", + "##onis", + "crate", + "fellowships", + "hemingway", + "casinos", + "climatic", + "fordham", + "copeland", + "drip", + "beatty", + "leaflets", + "robber", + "brothel", + "madeira", + "##hedral", + "sphinx", + "ultrasound", + "##vana", + "valor", + "forbade", + "leonid", + "villas", + "##aldo", + "duane", + "marquez", + "##cytes", + "disadvantaged", + "forearms", + "kawasaki", + "reacts", + "consular", + "lax", + "uncles", + "uphold", + "##hopper", + "concepcion", + "dorsey", + "lass", + "##izan", + "arching", + "passageway", + "1708", + "researches", + "tia", + "internationals", + "##graphs", + "##opers", + "distinguishes", + "javanese", + "divert", + "##uven", + "plotted", + "##listic", + "##rwin", + "##erik", + "##tify", + "affirmative", + "signifies", + "validation", + "##bson", + "kari", + "felicity", + "georgina", + "zulu", + "##eros", + "##rained", + "##rath", + "overcoming", + "##dot", + "argyll", + "##rbin", + "1734", + "chiba", + "ratification", + "windy", + "earls", + "parapet", + "##marks", + "hunan", + "pristine", + "astrid", + "punta", + "##gart", + "brodie", + "##kota", + "##oder", + "malaga", + "minerva", + "rouse", + "##phonic", + "bellowed", + "pagoda", + "portals", + "reclamation", + "##gur", + "##odies", + "##\u2044\u2084", + "parentheses", + "quoting", + "allergic", + "palette", + "showcases", + "benefactor", + "heartland", + "nonlinear", + "##tness", + "bladed", + "cheerfully", + "scans", + "##ety", + "##hone", + "1666", + "girlfriends", + "pedersen", + "hiram", + "sous", + "##liche", + "##nator", + "1683", + "##nery", + "##orio", + "##umen", + "bobo", + "primaries", + "smiley", + "##cb", + "unearthed", + "uniformly", + "fis", + "metadata", + "1635", + "ind", + "##oted", + "recoil", + "##titles", + "##tura", + "##\u03b9\u03b1", + "406", + "hilbert", + "jamestown", + "mcmillan", + "tulane", + "seychelles", + "##frid", + "antics", + "coli", + "fated", + "stucco", + "##grants", + "1654", + "bulky", + "accolades", + "arrays", + "caledonian", + "carnage", + "optimism", + "puebla", + "##tative", + "##cave", + "enforcing", + "rotherham", + "seo", + "dunlop", + "aeronautics", + "chimed", + "incline", + "zoning", + "archduke", + "hellenistic", + "##oses", + "##sions", + "candi", + "thong", + "##ople", + "magnate", + "rustic", + "##rsk", + "projective", + "slant", + "##offs", + "danes", + "hollis", + "vocalists", + "##ammed", + "congenital", + "contend", + "gesellschaft", + "##ocating", + "##pressive", + "douglass", + "quieter", + "##cm", + "##kshi", + "howled", + "salim", + "spontaneously", + "townsville", + "buena", + "southport", + "##bold", + "kato", + "1638", + "faerie", + "stiffly", + "##vus", + "##rled", + "297", + "flawless", + "realising", + "taboo", + "##7th", + "bytes", + "straightening", + "356", + "jena", + "##hid", + "##rmin", + "cartwright", + "berber", + "bertram", + "soloists", + "411", + "noses", + "417", + "coping", + "fission", + "hardin", + "inca", + "##cen", + "1717", + "mobilized", + "vhf", + "##raf", + "biscuits", + "curate", + "##85", + "##anial", + "331", + "gaunt", + "neighbourhoods", + "1540", + "##abas", + "blanca", + "bypassed", + "sockets", + "behold", + "coincidentally", + "##bane", + "nara", + "shave", + "splinter", + "terrific", + "##arion", + "##erian", + "commonplace", + "juris", + "redwood", + "waistband", + "boxed", + "caitlin", + "fingerprints", + "jennie", + "naturalized", + "##ired", + "balfour", + "craters", + "jody", + "bungalow", + "hugely", + "quilt", + "glitter", + "pigeons", + "undertaker", + "bulging", + "constrained", + "goo", + "##sil", + "##akh", + "assimilation", + "reworked", + "##person", + "persuasion", + "##pants", + "felicia", + "##cliff", + "##ulent", + "1732", + "explodes", + "##dun", + "##inium", + "##zic", + "lyman", + "vulture", + "hog", + "overlook", + "begs", + "northwards", + "ow", + "spoil", + "##urer", + "fatima", + "favorably", + "accumulate", + "sargent", + "sorority", + "corresponded", + "dispersal", + "kochi", + "toned", + "##imi", + "##lita", + "internacional", + "newfound", + "##agger", + "##lynn", + "##rigue", + "booths", + "peanuts", + "##eborg", + "medicare", + "muriel", + "nur", + "##uram", + "crates", + "millennia", + "pajamas", + "worsened", + "##breakers", + "jimi", + "vanuatu", + "yawned", + "##udeau", + "carousel", + "##hony", + "hurdle", + "##ccus", + "##mounted", + "##pod", + "rv", + "##eche", + "airship", + "ambiguity", + "compulsion", + "recapture", + "##claiming", + "arthritis", + "##osomal", + "1667", + "asserting", + "ngc", + "sniffing", + "dade", + "discontent", + "glendale", + "ported", + "##amina", + "defamation", + "rammed", + "##scent", + "fling", + "livingstone", + "##fleet", + "875", + "##ppy", + "apocalyptic", + "comrade", + "lcd", + "##lowe", + "cessna", + "eine", + "persecuted", + "subsistence", + "demi", + "hoop", + "reliefs", + "710", + "coptic", + "progressing", + "stemmed", + "perpetrators", + "1665", + "priestess", + "##nio", + "dobson", + "ebony", + "rooster", + "itf", + "tortricidae", + "##bbon", + "##jian", + "cleanup", + "##jean", + "##\u00f8y", + "1721", + "eighties", + "taxonomic", + "holiness", + "##hearted", + "##spar", + "antilles", + "showcasing", + "stabilized", + "##nb", + "gia", + "mascara", + "michelangelo", + "dawned", + "##uria", + "##vinsky", + "extinguished", + "fitz", + "grotesque", + "\u00a3100", + "##fera", + "##loid", + "##mous", + "barges", + "neue", + "throbbed", + "cipher", + "johnnie", + "##a1", + "##mpt", + "outburst", + "##swick", + "spearheaded", + "administrations", + "c1", + "heartbreak", + "pixels", + "pleasantly", + "##enay", + "lombardy", + "plush", + "##nsed", + "bobbie", + "##hly", + "reapers", + "tremor", + "xiang", + "minogue", + "substantive", + "hitch", + "barak", + "##wyl", + "kwan", + "##encia", + "910", + "obscene", + "elegance", + "indus", + "surfer", + "bribery", + "conserve", + "##hyllum", + "##masters", + "horatio", + "##fat", + "apes", + "rebound", + "psychotic", + "##pour", + "iteration", + "##mium", + "##vani", + "botanic", + "horribly", + "antiques", + "dispose", + "paxton", + "##hli", + "##wg", + "timeless", + "1704", + "disregard", + "engraver", + "hounds", + "##bau", + "##version", + "looted", + "uno", + "facilitates", + "groans", + "masjid", + "rutland", + "antibody", + "disqualification", + "decatur", + "footballers", + "quake", + "slacks", + "48th", + "rein", + "scribe", + "stabilize", + "commits", + "exemplary", + "tho", + "##hort", + "##chison", + "pantry", + "traversed", + "##hiti", + "disrepair", + "identifiable", + "vibrated", + "baccalaureate", + "##nnis", + "csa", + "interviewing", + "##iensis", + "##ra\u00dfe", + "greaves", + "wealthiest", + "343", + "classed", + "jogged", + "\u00a35", + "##58", + "##atal", + "illuminating", + "knicks", + "respecting", + "##uno", + "scrubbed", + "##iji", + "##dles", + "kruger", + "moods", + "growls", + "raider", + "silvia", + "chefs", + "kam", + "vr", + "cree", + "percival", + "##terol", + "gunter", + "counterattack", + "defiant", + "henan", + "ze", + "##rasia", + "##riety", + "equivalence", + "submissions", + "##fra", + "##thor", + "bautista", + "mechanically", + "##heater", + "cornice", + "herbal", + "templar", + "##mering", + "outputs", + "ruining", + "ligand", + "renumbered", + "extravagant", + "mika", + "blockbuster", + "eta", + "insurrection", + "##ilia", + "darkening", + "ferocious", + "pianos", + "strife", + "kinship", + "##aer", + "melee", + "##anor", + "##iste", + "##may", + "##oue", + "decidedly", + "weep", + "##jad", + "##missive", + "##ppel", + "354", + "puget", + "unease", + "##gnant", + "1629", + "hammering", + "kassel", + "ob", + "wessex", + "##lga", + "bromwich", + "egan", + "paranoia", + "utilization", + "##atable", + "##idad", + "contradictory", + "provoke", + "##ols", + "##ouring", + "##tangled", + "knesset", + "##very", + "##lette", + "plumbing", + "##sden", + "##\u00b9", + "greensboro", + "occult", + "sniff", + "338", + "zev", + "beaming", + "gamer", + "haggard", + "mahal", + "##olt", + "##pins", + "mendes", + "utmost", + "briefing", + "gunnery", + "##gut", + "##pher", + "##zh", + "##rok", + "1679", + "khalifa", + "sonya", + "##boot", + "principals", + "urbana", + "wiring", + "##liffe", + "##minating", + "##rrado", + "dahl", + "nyu", + "skepticism", + "np", + "townspeople", + "ithaca", + "lobster", + "somethin", + "##fur", + "##arina", + "##\u22121", + "freighter", + "zimmerman", + "biceps", + "contractual", + "##herton", + "amend", + "hurrying", + "subconscious", + "##anal", + "336", + "meng", + "clermont", + "spawning", + "##eia", + "##lub", + "dignitaries", + "impetus", + "snacks", + "spotting", + "twigs", + "##bilis", + "##cz", + "##ouk", + "libertadores", + "nic", + "skylar", + "##aina", + "##firm", + "gustave", + "asean", + "##anum", + "dieter", + "legislatures", + "flirt", + "bromley", + "trolls", + "umar", + "##bbies", + "##tyle", + "blah", + "parc", + "bridgeport", + "crank", + "negligence", + "##nction", + "46th", + "constantin", + "molded", + "bandages", + "seriousness", + "00pm", + "siegel", + "carpets", + "compartments", + "upbeat", + "statehood", + "##dner", + "##edging", + "marko", + "730", + "platt", + "##hane", + "paving", + "##iy", + "1738", + "abbess", + "impatience", + "limousine", + "nbl", + "##talk", + "441", + "lucille", + "mojo", + "nightfall", + "robbers", + "##nais", + "karel", + "brisk", + "calves", + "replicate", + "ascribed", + "telescopes", + "##olf", + "intimidated", + "##reen", + "ballast", + "specialization", + "##sit", + "aerodynamic", + "caliphate", + "rainer", + "visionary", + "##arded", + "epsilon", + "##aday", + "##onte", + "aggregation", + "auditory", + "boosted", + "reunification", + "kathmandu", + "loco", + "robyn", + "402", + "acknowledges", + "appointing", + "humanoid", + "newell", + "redeveloped", + "restraints", + "##tained", + "barbarians", + "chopper", + "1609", + "italiana", + "##lez", + "##lho", + "investigates", + "wrestlemania", + "##anies", + "##bib", + "690", + "##falls", + "creaked", + "dragoons", + "gravely", + "minions", + "stupidity", + "volley", + "##harat", + "##week", + "musik", + "##eries", + "##uously", + "fungal", + "massimo", + "semantics", + "malvern", + "##ahl", + "##pee", + "discourage", + "embryo", + "imperialism", + "1910s", + "profoundly", + "##ddled", + "jiangsu", + "sparkled", + "stat", + "##holz", + "sweatshirt", + "tobin", + "##iction", + "sneered", + "##cheon", + "##oit", + "brit", + "causal", + "smyth", + "##neuve", + "diffuse", + "perrin", + "silvio", + "##ipes", + "##recht", + "detonated", + "iqbal", + "selma", + "##nism", + "##zumi", + "roasted", + "##riders", + "tay", + "##ados", + "##mament", + "##mut", + "##rud", + "840", + "completes", + "nipples", + "cfa", + "flavour", + "hirsch", + "##laus", + "calderon", + "sneakers", + "moravian", + "##ksha", + "1622", + "rq", + "294", + "##imeters", + "bodo", + "##isance", + "##pre", + "##ronia", + "anatomical", + "excerpt", + "##lke", + "dh", + "kunst", + "##tablished", + "##scoe", + "biomass", + "panted", + "unharmed", + "gael", + "housemates", + "montpellier", + "##59", + "coa", + "rodents", + "tonic", + "hickory", + "singleton", + "##taro", + "451", + "1719", + "aldo", + "breaststroke", + "dempsey", + "och", + "rocco", + "##cuit", + "merton", + "dissemination", + "midsummer", + "serials", + "##idi", + "haji", + "polynomials", + "##rdon", + "gs", + "enoch", + "prematurely", + "shutter", + "taunton", + "\u00a33", + "##grating", + "##inates", + "archangel", + "harassed", + "##asco", + "326", + "archway", + "dazzling", + "##ecin", + "1736", + "sumo", + "wat", + "##kovich", + "1086", + "honneur", + "##ently", + "##nostic", + "##ttal", + "##idon", + "1605", + "403", + "1716", + "blogger", + "rents", + "##gnan", + "hires", + "##ikh", + "##dant", + "howie", + "##rons", + "handler", + "retracted", + "shocks", + "1632", + "arun", + "duluth", + "kepler", + "trumpeter", + "##lary", + "peeking", + "seasoned", + "trooper", + "##mara", + "laszlo", + "##iciencies", + "##rti", + "heterosexual", + "##inatory", + "##ssion", + "indira", + "jogging", + "##inga", + "##lism", + "beit", + "dissatisfaction", + "malice", + "##ately", + "nedra", + "peeling", + "##rgeon", + "47th", + "stadiums", + "475", + "vertigo", + "##ains", + "iced", + "restroom", + "##plify", + "##tub", + "illustrating", + "pear", + "##chner", + "##sibility", + "inorganic", + "rappers", + "receipts", + "watery", + "##kura", + "lucinda", + "##oulos", + "reintroduced", + "##8th", + "##tched", + "gracefully", + "saxons", + "nutritional", + "wastewater", + "rained", + "favourites", + "bedrock", + "fisted", + "hallways", + "likeness", + "upscale", + "##lateral", + "1580", + "blinds", + "prequel", + "##pps", + "##tama", + "deter", + "humiliating", + "restraining", + "tn", + "vents", + "1659", + "laundering", + "recess", + "rosary", + "tractors", + "coulter", + "federer", + "##ifiers", + "##plin", + "persistence", + "##quitable", + "geschichte", + "pendulum", + "quakers", + "##beam", + "bassett", + "pictorial", + "buffet", + "koln", + "##sitor", + "drills", + "reciprocal", + "shooters", + "##57", + "##cton", + "##tees", + "converge", + "pip", + "dmitri", + "donnelly", + "yamamoto", + "aqua", + "azores", + "demographics", + "hypnotic", + "spitfire", + "suspend", + "wryly", + "roderick", + "##rran", + "sebastien", + "##asurable", + "mavericks", + "##fles", + "##200", + "himalayan", + "prodigy", + "##iance", + "transvaal", + "demonstrators", + "handcuffs", + "dodged", + "mcnamara", + "sublime", + "1726", + "crazed", + "##efined", + "##till", + "ivo", + "pondered", + "reconciled", + "shrill", + "sava", + "##duk", + "bal", + "cad", + "heresy", + "jaipur", + "goran", + "##nished", + "341", + "lux", + "shelly", + "whitehall", + "##hre", + "israelis", + "peacekeeping", + "##wled", + "1703", + "demetrius", + "ousted", + "##arians", + "##zos", + "beale", + "anwar", + "backstroke", + "raged", + "shrinking", + "cremated", + "##yck", + "benign", + "towing", + "wadi", + "darmstadt", + "landfill", + "parana", + "soothe", + "colleen", + "sidewalks", + "mayfair", + "tumble", + "hepatitis", + "ferrer", + "superstructure", + "##gingly", + "##urse", + "##wee", + "anthropological", + "translators", + "##mies", + "closeness", + "hooves", + "##pw", + "mondays", + "##roll", + "##vita", + "landscaping", + "##urized", + "purification", + "sock", + "thorns", + "thwarted", + "jalan", + "tiberius", + "##taka", + "saline", + "##rito", + "confidently", + "khyber", + "sculptors", + "##ij", + "brahms", + "hammersmith", + "inspectors", + "battista", + "fivb", + "fragmentation", + "hackney", + "##uls", + "arresting", + "exercising", + "antoinette", + "bedfordshire", + "##zily", + "dyed", + "##hema", + "1656", + "racetrack", + "variability", + "##tique", + "1655", + "austrians", + "deteriorating", + "madman", + "theorists", + "aix", + "lehman", + "weathered", + "1731", + "decreed", + "eruptions", + "1729", + "flaw", + "quinlan", + "sorbonne", + "flutes", + "nunez", + "1711", + "adored", + "downwards", + "fable", + "rasped", + "1712", + "moritz", + "mouthful", + "renegade", + "shivers", + "stunts", + "dysfunction", + "restrain", + "translit", + "327", + "pancakes", + "##avio", + "##cision", + "##tray", + "351", + "vial", + "##lden", + "bain", + "##maid", + "##oxide", + "chihuahua", + "malacca", + "vimes", + "##rba", + "##rnier", + "1664", + "donnie", + "plaques", + "##ually", + "337", + "bangs", + "floppy", + "huntsville", + "loretta", + "nikolay", + "##otte", + "eater", + "handgun", + "ubiquitous", + "##hett", + "eras", + "zodiac", + "1634", + "##omorphic", + "1820s", + "##zog", + "cochran", + "##bula", + "##lithic", + "warring", + "##rada", + "dalai", + "excused", + "blazers", + "mcconnell", + "reeling", + "bot", + "este", + "##abi", + "geese", + "hoax", + "taxon", + "##bla", + "guitarists", + "##icon", + "condemning", + "hunts", + "inversion", + "moffat", + "taekwondo", + "##lvis", + "1624", + "stammered", + "##rest", + "##rzy", + "sousa", + "fundraiser", + "marylebone", + "navigable", + "uptown", + "cabbage", + "daniela", + "salman", + "shitty", + "whimper", + "##kian", + "##utive", + "programmers", + "protections", + "rm", + "##rmi", + "##rued", + "forceful", + "##enes", + "fuss", + "##tao", + "##wash", + "brat", + "oppressive", + "reykjavik", + "spartak", + "ticking", + "##inkles", + "##kiewicz", + "adolph", + "horst", + "maui", + "protege", + "straighten", + "cpc", + "landau", + "concourse", + "clements", + "resultant", + "##ando", + "imaginative", + "joo", + "reactivated", + "##rem", + "##ffled", + "##uising", + "consultative", + "##guide", + "flop", + "kaitlyn", + "mergers", + "parenting", + "somber", + "##vron", + "supervise", + "vidhan", + "##imum", + "courtship", + "exemplified", + "harmonies", + "medallist", + "refining", + "##rrow", + "##\u043a\u0430", + "amara", + "##hum", + "780", + "goalscorer", + "sited", + "overshadowed", + "rohan", + "displeasure", + "secretive", + "multiplied", + "osman", + "##orth", + "engravings", + "padre", + "##kali", + "##veda", + "miniatures", + "mis", + "##yala", + "clap", + "pali", + "rook", + "##cana", + "1692", + "57th", + "antennae", + "astro", + "oskar", + "1628", + "bulldog", + "crotch", + "hackett", + "yucatan", + "##sure", + "amplifiers", + "brno", + "ferrara", + "migrating", + "##gree", + "thanking", + "turing", + "##eza", + "mccann", + "ting", + "andersson", + "onslaught", + "gaines", + "ganga", + "incense", + "standardization", + "##mation", + "sentai", + "scuba", + "stuffing", + "turquoise", + "waivers", + "alloys", + "##vitt", + "regaining", + "vaults", + "##clops", + "##gizing", + "digger", + "furry", + "memorabilia", + "probing", + "##iad", + "payton", + "rec", + "deutschland", + "filippo", + "opaque", + "seamen", + "zenith", + "afrikaans", + "##filtration", + "disciplined", + "inspirational", + "##merie", + "banco", + "confuse", + "grafton", + "tod", + "##dgets", + "championed", + "simi", + "anomaly", + "biplane", + "##ceptive", + "electrode", + "##para", + "1697", + "cleavage", + "crossbow", + "swirl", + "informant", + "##lars", + "##osta", + "afi", + "bonfire", + "spec", + "##oux", + "lakeside", + "slump", + "##culus", + "##lais", + "##qvist", + "##rrigan", + "1016", + "facades", + "borg", + "inwardly", + "cervical", + "xl", + "pointedly", + "050", + "stabilization", + "##odon", + "chests", + "1699", + "hacked", + "ctv", + "orthogonal", + "suzy", + "##lastic", + "gaulle", + "jacobite", + "rearview", + "##cam", + "##erted", + "ashby", + "##drik", + "##igate", + "##mise", + "##zbek", + "affectionately", + "canine", + "disperse", + "latham", + "##istles", + "##ivar", + "spielberg", + "##orin", + "##idium", + "ezekiel", + "cid", + "##sg", + "durga", + "middletown", + "##cina", + "customized", + "frontiers", + "harden", + "##etano", + "##zzy", + "1604", + "bolsheviks", + "##66", + "coloration", + "yoko", + "##bedo", + "briefs", + "slabs", + "debra", + "liquidation", + "plumage", + "##oin", + "blossoms", + "dementia", + "subsidy", + "1611", + "proctor", + "relational", + "jerseys", + "parochial", + "ter", + "##ici", + "esa", + "peshawar", + "cavalier", + "loren", + "cpi", + "idiots", + "shamrock", + "1646", + "dutton", + "malabar", + "mustache", + "##endez", + "##ocytes", + "referencing", + "terminates", + "marche", + "yarmouth", + "##sop", + "acton", + "mated", + "seton", + "subtly", + "baptised", + "beige", + "extremes", + "jolted", + "kristina", + "telecast", + "##actic", + "safeguard", + "waldo", + "##baldi", + "##bular", + "endeavors", + "sloppy", + "subterranean", + "##ensburg", + "##itung", + "delicately", + "pigment", + "tq", + "##scu", + "1626", + "##ound", + "collisions", + "coveted", + "herds", + "##personal", + "##meister", + "##nberger", + "chopra", + "##ricting", + "abnormalities", + "defective", + "galician", + "lucie", + "##dilly", + "alligator", + "likened", + "##genase", + "burundi", + "clears", + "complexion", + "derelict", + "deafening", + "diablo", + "fingered", + "champaign", + "dogg", + "enlist", + "isotope", + "labeling", + "mrna", + "##erre", + "brilliance", + "marvelous", + "##ayo", + "1652", + "crawley", + "ether", + "footed", + "dwellers", + "deserts", + "hamish", + "rubs", + "warlock", + "skimmed", + "##lizer", + "870", + "buick", + "embark", + "heraldic", + "irregularities", + "##ajan", + "kiara", + "##kulam", + "##ieg", + "antigen", + "kowalski", + "##lge", + "oakley", + "visitation", + "##mbit", + "vt", + "##suit", + "1570", + "murderers", + "##miento", + "##rites", + "chimneys", + "##sling", + "condemn", + "custer", + "exchequer", + "havre", + "##ghi", + "fluctuations", + "##rations", + "dfb", + "hendricks", + "vaccines", + "##tarian", + "nietzsche", + "biking", + "juicy", + "##duced", + "brooding", + "scrolling", + "selangor", + "##ragan", + "352", + "annum", + "boomed", + "seminole", + "sugarcane", + "##dna", + "departmental", + "dismissing", + "innsbruck", + "arteries", + "ashok", + "batavia", + "daze", + "kun", + "overtook", + "##rga", + "##tlan", + "beheaded", + "gaddafi", + "holm", + "electronically", + "faulty", + "galilee", + "fractures", + "kobayashi", + "##lized", + "gunmen", + "magma", + "aramaic", + "mala", + "eastenders", + "inference", + "messengers", + "bf", + "##qu", + "407", + "bathrooms", + "##vere", + "1658", + "flashbacks", + "ideally", + "misunderstood", + "##jali", + "##weather", + "mendez", + "##grounds", + "505", + "uncanny", + "##iii", + "1709", + "friendships", + "##nbc", + "sacrament", + "accommodated", + "reiterated", + "logistical", + "pebbles", + "thumped", + "##escence", + "administering", + "decrees", + "drafts", + "##flight", + "##cased", + "##tula", + "futuristic", + "picket", + "intimidation", + "winthrop", + "##fahan", + "interfered", + "339", + "afar", + "francoise", + "morally", + "uta", + "cochin", + "croft", + "dwarfs", + "##bruck", + "##dents", + "##nami", + "biker", + "##hner", + "##meral", + "nano", + "##isen", + "##ometric", + "##pres", + "##\u0430\u043d", + "brightened", + "meek", + "parcels", + "securely", + "gunners", + "##jhl", + "##zko", + "agile", + "hysteria", + "##lten", + "##rcus", + "bukit", + "champs", + "chevy", + "cuckoo", + "leith", + "sadler", + "theologians", + "welded", + "##section", + "1663", + "jj", + "plurality", + "xander", + "##rooms", + "##formed", + "shredded", + "temps", + "intimately", + "pau", + "tormented", + "##lok", + "##stellar", + "1618", + "charred", + "ems", + "essen", + "##mmel", + "alarms", + "spraying", + "ascot", + "blooms", + "twinkle", + "##abia", + "##apes", + "internment", + "obsidian", + "##chaft", + "snoop", + "##dav", + "##ooping", + "malibu", + "##tension", + "quiver", + "##itia", + "hays", + "mcintosh", + "travers", + "walsall", + "##ffie", + "1623", + "beverley", + "schwarz", + "plunging", + "structurally", + "m3", + "rosenthal", + "vikram", + "##tsk", + "770", + "ghz", + "##onda", + "##tiv", + "chalmers", + "groningen", + "pew", + "reckon", + "unicef", + "##rvis", + "55th", + "##gni", + "1651", + "sulawesi", + "avila", + "cai", + "metaphysical", + "screwing", + "turbulence", + "##mberg", + "augusto", + "samba", + "56th", + "baffled", + "momentary", + "toxin", + "##urian", + "##wani", + "aachen", + "condoms", + "dali", + "steppe", + "##3d", + "##app", + "##oed", + "##year", + "adolescence", + "dauphin", + "electrically", + "inaccessible", + "microscopy", + "nikita", + "##ega", + "atv", + "##cel", + "##enter", + "##oles", + "##oteric", + "##\u044b", + "accountants", + "punishments", + "wrongly", + "bribes", + "adventurous", + "clinch", + "flinders", + "southland", + "##hem", + "##kata", + "gough", + "##ciency", + "lads", + "soared", + "##\u05d4", + "undergoes", + "deformation", + "outlawed", + "rubbish", + "##arus", + "##mussen", + "##nidae", + "##rzburg", + "arcs", + "##ingdon", + "##tituted", + "1695", + "wheelbase", + "wheeling", + "bombardier", + "campground", + "zebra", + "##lices", + "##oj", + "##bain", + "lullaby", + "##ecure", + "donetsk", + "wylie", + "grenada", + "##arding", + "##\u03b7\u03c2", + "squinting", + "eireann", + "opposes", + "##andra", + "maximal", + "runes", + "##broken", + "##cuting", + "##iface", + "##ror", + "##rosis", + "additive", + "britney", + "adultery", + "triggering", + "##drome", + "detrimental", + "aarhus", + "containment", + "jc", + "swapped", + "vichy", + "##ioms", + "madly", + "##oric", + "##rag", + "brant", + "##ckey", + "##trix", + "1560", + "1612", + "broughton", + "rustling", + "##stems", + "##uder", + "asbestos", + "mentoring", + "##nivorous", + "finley", + "leaps", + "##isan", + "apical", + "pry", + "slits", + "substitutes", + "##dict", + "intuitive", + "fantasia", + "insistent", + "unreasonable", + "##igen", + "##vna", + "domed", + "hannover", + "margot", + "ponder", + "##zziness", + "impromptu", + "jian", + "lc", + "rampage", + "stemming", + "##eft", + "andrey", + "gerais", + "whichever", + "amnesia", + "appropriated", + "anzac", + "clicks", + "modifying", + "ultimatum", + "cambrian", + "maids", + "verve", + "yellowstone", + "##mbs", + "conservatoire", + "##scribe", + "adherence", + "dinners", + "spectra", + "imperfect", + "mysteriously", + "sidekick", + "tatar", + "tuba", + "##aks", + "##ifolia", + "distrust", + "##athan", + "##zle", + "c2", + "ronin", + "zac", + "##pse", + "celaena", + "instrumentalist", + "scents", + "skopje", + "##mbling", + "comical", + "compensated", + "vidal", + "condor", + "intersect", + "jingle", + "wavelengths", + "##urrent", + "mcqueen", + "##izzly", + "carp", + "weasel", + "422", + "kanye", + "militias", + "postdoctoral", + "eugen", + "gunslinger", + "##\u025b", + "faux", + "hospice", + "##for", + "appalled", + "derivation", + "dwarves", + "##elis", + "dilapidated", + "##folk", + "astoria", + "philology", + "##lwyn", + "##otho", + "##saka", + "inducing", + "philanthropy", + "##bf", + "##itative", + "geek", + "markedly", + "sql", + "##yce", + "bessie", + "indices", + "rn", + "##flict", + "495", + "frowns", + "resolving", + "weightlifting", + "tugs", + "cleric", + "contentious", + "1653", + "mania", + "rms", + "##miya", + "##reate", + "##ruck", + "##tucket", + "bien", + "eels", + "marek", + "##ayton", + "##cence", + "discreet", + "unofficially", + "##ife", + "leaks", + "##bber", + "1705", + "332", + "dung", + "compressor", + "hillsborough", + "pandit", + "shillings", + "distal", + "##skin", + "381", + "##tat", + "##you", + "nosed", + "##nir", + "mangrove", + "undeveloped", + "##idia", + "textures", + "##inho", + "##500", + "##rise", + "ae", + "irritating", + "nay", + "amazingly", + "bancroft", + "apologetic", + "compassionate", + "kata", + "symphonies", + "##lovic", + "airspace", + "##lch", + "930", + "gifford", + "precautions", + "fulfillment", + "sevilla", + "vulgar", + "martinique", + "##urities", + "looting", + "piccolo", + "tidy", + "##dermott", + "quadrant", + "armchair", + "incomes", + "mathematicians", + "stampede", + "nilsson", + "##inking", + "##scan", + "foo", + "quarterfinal", + "##ostal", + "shang", + "shouldered", + "squirrels", + "##owe", + "344", + "vinegar", + "##bner", + "##rchy", + "##systems", + "delaying", + "##trics", + "ars", + "dwyer", + "rhapsody", + "sponsoring", + "##gration", + "bipolar", + "cinder", + "starters", + "##olio", + "##urst", + "421", + "signage", + "##nty", + "aground", + "figurative", + "mons", + "acquaintances", + "duets", + "erroneously", + "soyuz", + "elliptic", + "recreated", + "##cultural", + "##quette", + "##ssed", + "##tma", + "##zcz", + "moderator", + "scares", + "##itaire", + "##stones", + "##udence", + "juniper", + "sighting", + "##just", + "##nsen", + "britten", + "calabria", + "ry", + "bop", + "cramer", + "forsyth", + "stillness", + "##\u043b", + "airmen", + "gathers", + "unfit", + "##umber", + "##upt", + "taunting", + "##rip", + "seeker", + "streamlined", + "##bution", + "holster", + "schumann", + "tread", + "vox", + "##gano", + "##onzo", + "strive", + "dil", + "reforming", + "covent", + "newbury", + "predicting", + "##orro", + "decorate", + "tre", + "##puted", + "andover", + "ie", + "asahi", + "dept", + "dunkirk", + "gills", + "##tori", + "buren", + "huskies", + "##stis", + "##stov", + "abstracts", + "bets", + "loosen", + "##opa", + "1682", + "yearning", + "##glio", + "##sir", + "berman", + "effortlessly", + "enamel", + "napoli", + "persist", + "##peration", + "##uez", + "attache", + "elisa", + "b1", + "invitations", + "##kic", + "accelerating", + "reindeer", + "boardwalk", + "clutches", + "nelly", + "polka", + "starbucks", + "##kei", + "adamant", + "huey", + "lough", + "unbroken", + "adventurer", + "embroidery", + "inspecting", + "stanza", + "##ducted", + "naia", + "taluka", + "##pone", + "##roids", + "chases", + "deprivation", + "florian", + "##jing", + "##ppet", + "earthly", + "##lib", + "##ssee", + "colossal", + "foreigner", + "vet", + "freaks", + "patrice", + "rosewood", + "triassic", + "upstate", + "##pkins", + "dominates", + "ata", + "chants", + "ks", + "vo", + "##400", + "##bley", + "##raya", + "##rmed", + "555", + "agra", + "infiltrate", + "##ailing", + "##ilation", + "##tzer", + "##uppe", + "##werk", + "binoculars", + "enthusiast", + "fujian", + "squeak", + "##avs", + "abolitionist", + "almeida", + "boredom", + "hampstead", + "marsden", + "rations", + "##ands", + "inflated", + "334", + "bonuses", + "rosalie", + "patna", + "##rco", + "329", + "detachments", + "penitentiary", + "54th", + "flourishing", + "woolf", + "##dion", + "##etched", + "papyrus", + "##lster", + "##nsor", + "##toy", + "bobbed", + "dismounted", + "endelle", + "inhuman", + "motorola", + "tbs", + "wince", + "wreath", + "##ticus", + "hideout", + "inspections", + "sanjay", + "disgrace", + "infused", + "pudding", + "stalks", + "##urbed", + "arsenic", + "leases", + "##hyl", + "##rrard", + "collarbone", + "##waite", + "##wil", + "dowry", + "##bant", + "##edance", + "genealogical", + "nitrate", + "salamanca", + "scandals", + "thyroid", + "necessitated", + "##!", + "##\"", + "###", + "##$", + "##%", + "##&", + "##'", + "##(", + "##)", + "##*", + "##+", + "##,", + "##-", + "##.", + "##/", + "##:", + "##;", + "##<", + "##=", + "##>", + "##?", + "##@", + "##[", + "##\\", + "##]", + "##^", + "##_", + "##`", + "##{", + "##|", + "##}", + "##~", + "##\u00a1", + "##\u00a2", + "##\u00a3", + "##\u00a4", + "##\u00a5", + "##\u00a6", + "##\u00a7", + "##\u00a8", + "##\u00a9", + "##\u00aa", + "##\u00ab", + "##\u00ac", + "##\u00ae", + "##\u00b1", + "##\u00b4", + "##\u00b5", + "##\u00b6", + "##\u00b7", + "##\u00ba", + "##\u00bb", + "##\u00bc", + "##\u00be", + "##\u00bf", + "##\u00e6", + "##\u00f0", + "##\u00f7", + "##\u00fe", + "##\u0111", + "##\u0127", + "##\u014b", + "##\u0153", + "##\u0192", + "##\u0250", + "##\u0251", + "##\u0252", + "##\u0254", + "##\u0255", + "##\u0259", + "##\u0261", + "##\u0263", + "##\u0268", + "##\u026a", + "##\u026b", + "##\u026c", + "##\u026f", + "##\u0272", + "##\u0274", + "##\u0279", + "##\u027e", + "##\u0280", + "##\u0281", + "##\u0282", + "##\u0283", + "##\u0289", + "##\u028a", + "##\u028b", + "##\u028c", + "##\u028e", + "##\u0290", + "##\u0291", + "##\u0292", + "##\u0294", + "##\u02b0", + "##\u02b2", + "##\u02b3", + "##\u02b7", + "##\u02b8", + "##\u02bb", + "##\u02bc", + "##\u02be", + "##\u02bf", + "##\u02c8", + "##\u02e1", + "##\u02e2", + "##\u02e3", + "##\u02e4", + "##\u03b2", + "##\u03b3", + "##\u03b4", + "##\u03b5", + "##\u03b6", + "##\u03b8", + "##\u03ba", + "##\u03bb", + "##\u03bc", + "##\u03be", + "##\u03bf", + "##\u03c0", + "##\u03c1", + "##\u03c3", + "##\u03c4", + "##\u03c5", + "##\u03c6", + "##\u03c7", + "##\u03c8", + "##\u03c9", + "##\u0431", + "##\u0433", + "##\u0434", + "##\u0436", + "##\u0437", + "##\u043c", + "##\u043f", + "##\u0441", + "##\u0443", + "##\u0444", + "##\u0445", + "##\u0446", + "##\u0447", + "##\u0448", + "##\u0449", + "##\u044a", + "##\u044d", + "##\u044e", + "##\u0452", + "##\u0454", + "##\u0456", + "##\u0458", + "##\u0459", + "##\u045a", + "##\u045b", + "##\u04cf", + "##\u0561", + "##\u0562", + "##\u0563", + "##\u0564", + "##\u0565", + "##\u0569", + "##\u056b", + "##\u056c", + "##\u056f", + "##\u0570", + "##\u0574", + "##\u0575", + "##\u0576", + "##\u0578", + "##\u057a", + "##\u057d", + "##\u057e", + "##\u057f", + "##\u0580", + "##\u0582", + "##\u0584", + "##\u05be", + "##\u05d0", + "##\u05d1", + "##\u05d2", + "##\u05d3", + "##\u05d5", + "##\u05d6", + "##\u05d7", + "##\u05d8", + "##\u05d9", + "##\u05da", + "##\u05db", + "##\u05dc", + "##\u05dd", + "##\u05de", + "##\u05df", + "##\u05e0", + "##\u05e1", + "##\u05e2", + "##\u05e3", + "##\u05e4", + "##\u05e5", + "##\u05e6", + "##\u05e7", + "##\u05e8", + "##\u05e9", + "##\u05ea", + "##\u060c", + "##\u0621", + "##\u0628", + "##\u062a", + "##\u062b", + "##\u062c", + "##\u062d", + "##\u062e", + "##\u0630", + "##\u0632", + "##\u0633", + "##\u0634", + "##\u0635", + "##\u0636", + "##\u0637", + "##\u0638", + "##\u0639", + "##\u063a", + "##\u0640", + "##\u0641", + "##\u0642", + "##\u0643", + "##\u0648", + "##\u0649", + "##\u0679", + "##\u067e", + "##\u0686", + "##\u06a9", + "##\u06af", + "##\u06ba", + "##\u06be", + "##\u06c1", + "##\u06d2", + "##\u0905", + "##\u0906", + "##\u0909", + "##\u090f", + "##\u0915", + "##\u0916", + "##\u0917", + "##\u091a", + "##\u091c", + "##\u091f", + "##\u0921", + "##\u0923", + "##\u0924", + "##\u0925", + "##\u0926", + "##\u0927", + "##\u0928", + "##\u092a", + "##\u092c", + "##\u092d", + "##\u092e", + "##\u092f", + "##\u0930", + "##\u0932", + "##\u0935", + "##\u0936", + "##\u0937", + "##\u0938", + "##\u0939", + "##\u093e", + "##\u093f", + "##\u0940", + "##\u094b", + "##\u0964", + "##\u0965", + "##\u0982", + "##\u0985", + "##\u0986", + "##\u0987", + "##\u0989", + "##\u098f", + "##\u0993", + "##\u0995", + "##\u0996", + "##\u0997", + "##\u099a", + "##\u099b", + "##\u099c", + "##\u099f", + "##\u09a1", + "##\u09a3", + "##\u09a4", + "##\u09a5", + "##\u09a6", + "##\u09a7", + "##\u09a8", + "##\u09aa", + "##\u09ac", + "##\u09ad", + "##\u09ae", + "##\u09af", + "##\u09b0", + "##\u09b2", + "##\u09b6", + "##\u09b7", + "##\u09b8", + "##\u09b9", + "##\u09be", + "##\u09bf", + "##\u09c0", + "##\u09c7", + "##\u0b95", + "##\u0b9a", + "##\u0b9f", + "##\u0ba4", + "##\u0ba8", + "##\u0ba9", + "##\u0baa", + "##\u0bae", + "##\u0baf", + "##\u0bb0", + "##\u0bb2", + "##\u0bb3", + "##\u0bb5", + "##\u0bbe", + "##\u0bbf", + "##\u0bc1", + "##\u0bc7", + "##\u0bc8", + "##\u0ca8", + "##\u0cb0", + "##\u0cbe", + "##\u0d9a", + "##\u0dba", + "##\u0dbb", + "##\u0dbd", + "##\u0dc0", + "##\u0dcf", + "##\u0e01", + "##\u0e07", + "##\u0e15", + "##\u0e17", + "##\u0e19", + "##\u0e1e", + "##\u0e21", + "##\u0e22", + "##\u0e23", + "##\u0e25", + "##\u0e27", + "##\u0e2a", + "##\u0e2d", + "##\u0e32", + "##\u0e40", + "##\u0f0b", + "##\u0f0d", + "##\u0f42", + "##\u0f44", + "##\u0f51", + "##\u0f53", + "##\u0f54", + "##\u0f56", + "##\u0f58", + "##\u0f60", + "##\u0f62", + "##\u0f63", + "##\u0f66", + "##\u1019", + "##\u10d0", + "##\u10d1", + "##\u10d2", + "##\u10d3", + "##\u10d4", + "##\u10d5", + "##\u10d7", + "##\u10d8", + "##\u10d9", + "##\u10da", + "##\u10db", + "##\u10dc", + "##\u10dd", + "##\u10e0", + "##\u10e1", + "##\u10e2", + "##\u10e3", + "##\u1100", + "##\u1102", + "##\u1103", + "##\u1105", + "##\u1106", + "##\u1107", + "##\u1109", + "##\u110a", + "##\u110b", + "##\u110c", + "##\u110e", + "##\u110f", + "##\u1110", + "##\u1111", + "##\u1112", + "##\u1161", + "##\u1162", + "##\u1165", + "##\u1166", + "##\u1167", + "##\u1169", + "##\u116a", + "##\u116d", + "##\u116e", + "##\u116f", + "##\u1172", + "##\u1173", + "##\u1174", + "##\u1175", + "##\u11a8", + "##\u11ab", + "##\u11af", + "##\u11b7", + "##\u11b8", + "##\u11bc", + "##\u1d2c", + "##\u1d2e", + "##\u1d30", + "##\u1d35", + "##\u1d3a", + "##\u1d40", + "##\u1d43", + "##\u1d47", + "##\u1d48", + "##\u1d49", + "##\u1d4d", + "##\u1d4f", + "##\u1d50", + "##\u1d52", + "##\u1d56", + "##\u1d57", + "##\u1d58", + "##\u1d63", + "##\u1d64", + "##\u1d65", + "##\u1d9c", + "##\u1da0", + "##\u2010", + "##\u2011", + "##\u2012", + "##\u2013", + "##\u2014", + "##\u2015", + "##\u2016", + "##\u2018", + "##\u2019", + "##\u201a", + "##\u201c", + "##\u201d", + "##\u201e", + "##\u2020", + "##\u2021", + "##\u2022", + "##\u2026", + "##\u2030", + "##\u2032", + "##\u2033", + "##\u203a", + "##\u203f", + "##\u2044", + "##\u2070", + "##\u2071", + "##\u2074", + "##\u2075", + "##\u2076", + "##\u2077", + "##\u2078", + "##\u2079", + "##\u207b", + "##\u207f", + "##\u2085", + "##\u2086", + "##\u2087", + "##\u2088", + "##\u2089", + "##\u208a", + "##\u208d", + "##\u208e", + "##\u2090", + "##\u2091", + "##\u2092", + "##\u2093", + "##\u2095", + "##\u2096", + "##\u2097", + "##\u2098", + "##\u209a", + "##\u209b", + "##\u209c", + "##\u20a4", + "##\u20a9", + "##\u20ac", + "##\u20b1", + "##\u20b9", + "##\u2113", + "##\u2116", + "##\u211d", + "##\u2122", + "##\u2153", + "##\u2154", + "##\u2190", + "##\u2191", + "##\u2192", + "##\u2193", + "##\u2194", + "##\u21a6", + "##\u21c4", + "##\u21cc", + "##\u21d2", + "##\u2202", + "##\u2205", + "##\u2206", + "##\u2207", + "##\u2208", + "##\u2217", + "##\u2218", + "##\u221a", + "##\u221e", + "##\u2227", + "##\u2228", + "##\u2229", + "##\u222a", + "##\u2248", + "##\u2261", + "##\u2264", + "##\u2265", + "##\u2282", + "##\u2286", + "##\u2295", + "##\u2297", + "##\u22c5", + "##\u2500", + "##\u2502", + "##\u25a0", + "##\u25aa", + "##\u25cf", + "##\u2605", + "##\u2606", + "##\u2609", + "##\u2660", + "##\u2663", + "##\u2665", + "##\u2666", + "##\u266f", + "##\u27e8", + "##\u27e9", + "##\u2c7c", + "##\u2ea9", + "##\u2ebc", + "##\u2f65", + "##\u3001", + "##\u3002", + "##\u3008", + "##\u3009", + "##\u300a", + "##\u300b", + "##\u300c", + "##\u300d", + "##\u300e", + "##\u300f", + "##\u301c", + "##\u3042", + "##\u3044", + "##\u3046", + "##\u3048", + "##\u304a", + "##\u304b", + "##\u304d", + "##\u304f", + "##\u3051", + "##\u3053", + "##\u3055", + "##\u3057", + "##\u3059", + "##\u305b", + "##\u305d", + "##\u305f", + "##\u3061", + "##\u3063", + "##\u3064", + "##\u3066", + "##\u3068", + "##\u306a", + "##\u306b", + "##\u306c", + "##\u306d", + "##\u306e", + "##\u306f", + "##\u3072", + "##\u3075", + "##\u3078", + "##\u307b", + "##\u307e", + "##\u307f", + "##\u3080", + "##\u3081", + "##\u3082", + "##\u3084", + "##\u3086", + "##\u3088", + "##\u3089", + "##\u308a", + "##\u308b", + "##\u308c", + "##\u308d", + "##\u3092", + "##\u3093", + "##\u30a1", + "##\u30a2", + "##\u30a3", + "##\u30a4", + "##\u30a6", + "##\u30a7", + "##\u30a8", + "##\u30aa", + "##\u30ab", + "##\u30ad", + "##\u30af", + "##\u30b1", + "##\u30b3", + "##\u30b5", + "##\u30b7", + "##\u30b9", + "##\u30bb", + "##\u30bf", + "##\u30c1", + "##\u30c3", + "##\u30c4", + "##\u30c6", + "##\u30c8", + "##\u30ca", + "##\u30cb", + "##\u30ce", + "##\u30cf", + "##\u30d2", + "##\u30d5", + "##\u30d8", + "##\u30db", + "##\u30de", + "##\u30df", + "##\u30e0", + "##\u30e1", + "##\u30e2", + "##\u30e3", + "##\u30e5", + "##\u30e7", + "##\u30e9", + "##\u30ea", + "##\u30eb", + "##\u30ec", + "##\u30ed", + "##\u30ef", + "##\u30f3", + "##\u30fb", + "##\u30fc", + "##\u4e00", + "##\u4e09", + "##\u4e0a", + "##\u4e0b", + "##\u4e0d", + "##\u4e16", + "##\u4e2d", + "##\u4e3b", + "##\u4e45", + "##\u4e4b", + "##\u4e5f", + "##\u4e8b", + "##\u4e8c", + "##\u4e94", + "##\u4e95", + "##\u4eac", + "##\u4eba", + "##\u4ebb", + "##\u4ec1", + "##\u4ecb", + "##\u4ee3", + "##\u4eee", + "##\u4f0a", + "##\u4f1a", + "##\u4f50", + "##\u4f8d", + "##\u4fdd", + "##\u4fe1", + "##\u5065", + "##\u5143", + "##\u5149", + "##\u516b", + "##\u516c", + "##\u5185", + "##\u51fa", + "##\u5206", + "##\u524d", + "##\u5289", + "##\u529b", + "##\u52a0", + "##\u52dd", + "##\u5317", + "##\u533a", + "##\u5341", + "##\u5343", + "##\u5357", + "##\u535a", + "##\u539f", + "##\u53e3", + "##\u53e4", + "##\u53f2", + "##\u53f8", + "##\u5408", + "##\u5409", + "##\u540c", + "##\u540d", + "##\u548c", + "##\u56d7", + "##\u56db", + "##\u56fd", + "##\u570b", + "##\u571f", + "##\u5730", + "##\u5742", + "##\u57ce", + "##\u5802", + "##\u5834", + "##\u58eb", + "##\u590f", + "##\u5916", + "##\u5927", + "##\u5929", + "##\u592a", + "##\u592b", + "##\u5948", + "##\u5973", + "##\u5b50", + "##\u5b66", + "##\u5b80", + "##\u5b87", + "##\u5b89", + "##\u5b97", + "##\u5b9a", + "##\u5ba3", + "##\u5bae", + "##\u5bb6", + "##\u5bbf", + "##\u5bfa", + "##\u5c07", + "##\u5c0f", + "##\u5c1a", + "##\u5c71", + "##\u5ca1", + "##\u5cf6", + "##\u5d0e", + "##\u5ddd", + "##\u5dde", + "##\u5dff", + "##\u5e1d", + "##\u5e73", + "##\u5e74", + "##\u5e78", + "##\u5e7f", + "##\u5f18", + "##\u5f35", + "##\u5f73", + "##\u5f8c", + "##\u5fa1", + "##\u5fb7", + "##\u5fc3", + "##\u5fc4", + "##\u5fd7", + "##\u5fe0", + "##\u611b", + "##\u6210", + "##\u6211", + "##\u6226", + "##\u6238", + "##\u624b", + "##\u624c", + "##\u653f", + "##\u6587", + "##\u65b0", + "##\u65b9", + "##\u65e5", + "##\u660e", + "##\u661f", + "##\u6625", + "##\u662d", + "##\u667a", + "##\u66f2", + "##\u66f8", + "##\u6708", + "##\u6709", + "##\u671d", + "##\u6728", + "##\u672c", + "##\u674e", + "##\u6751", + "##\u6771", + "##\u677e", + "##\u6797", + "##\u68ee", + "##\u694a", + "##\u6a39", + "##\u6a4b", + "##\u6b4c", + "##\u6b62", + "##\u6b63", + "##\u6b66", + "##\u6bd4", + "##\u6c0f", + "##\u6c11", + "##\u6c34", + "##\u6c35", + "##\u6c37", + "##\u6c38", + "##\u6c5f", + "##\u6ca2", + "##\u6cb3", + "##\u6cbb", + "##\u6cd5", + "##\u6d77", + "##\u6e05", + "##\u6f22", + "##\u702c", + "##\u706b", + "##\u7248", + "##\u72ac", + "##\u738b", + "##\u751f", + "##\u7530", + "##\u7537", + "##\u7592", + "##\u767a", + "##\u767d", + "##\u7684", + "##\u7687", + "##\u76ee", + "##\u76f8", + "##\u7701", + "##\u771f", + "##\u77f3", + "##\u793a", + "##\u793e", + "##\u795e", + "##\u798f", + "##\u79be", + "##\u79c0", + "##\u79cb", + "##\u7a7a", + "##\u7acb", + "##\u7ae0", + "##\u7af9", + "##\u7cf9", + "##\u7f8e", + "##\u7fa9", + "##\u8033", + "##\u826f", + "##\u8279", + "##\u82b1", + "##\u82f1", + "##\u83ef", + "##\u8449", + "##\u85e4", + "##\u884c", + "##\u8857", + "##\u897f", + "##\u898b", + "##\u8a01", + "##\u8a9e", + "##\u8c37", + "##\u8c9d", + "##\u8cb4", + "##\u8eca", + "##\u8ecd", + "##\u8fb6", + "##\u9053", + "##\u90ce", + "##\u90e1", + "##\u90e8", + "##\u90fd", + "##\u91cc", + "##\u91ce", + "##\u91d1", + "##\u9234", + "##\u9547", + "##\u9577", + "##\u9580", + "##\u9593", + "##\u961d", + "##\u963f", + "##\u9673", + "##\u967d", + "##\u96c4", + "##\u9752", + "##\u9762", + "##\u98a8", + "##\u98df", + "##\u9999", + "##\u99ac", + "##\u9ad8", + "##\u9f8d", + "##\u9fb8", + "##\ufb01", + "##\ufb02", + "##\uff01", + "##\uff08", + "##\uff09", + "##\uff0c", + "##\uff0d", + "##\uff0e", + "##\uff0f", + "##\uff1a", + "##\uff1f", + "##\uff5e" + ] +} From 179a024430f6c030a8e61ea7f747b853b6ec871b Mon Sep 17 00:00:00 2001 From: Alex Szabo Date: Tue, 9 Apr 2024 10:35:41 +0200 Subject: [PATCH 13/75] [CI] Fix vault access for coverage (#180341) ## Summary Fixes the last scripts that use the legacy secret paths. Fixes these issues: https://buildkite.com/elastic/kibana-code-coverage-main/builds/14#018ec13c-28be-400f-9fc4-ae9a1570d019 --- .buildkite/scripts/steps/code_coverage/ingest.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.buildkite/scripts/steps/code_coverage/ingest.sh b/.buildkite/scripts/steps/code_coverage/ingest.sh index 6940c413f0e933..d2a4bd55674cfa 100755 --- a/.buildkite/scripts/steps/code_coverage/ingest.sh +++ b/.buildkite/scripts/steps/code_coverage/ingest.sh @@ -3,15 +3,16 @@ set -euo pipefail source .buildkite/scripts/common/util.sh +source .buildkite/scripts/common/vault_fns.sh source .buildkite/scripts/steps/code_coverage/util.sh export CODE_COVERAGE=1 -echo "--- Reading Kibana stats cluster creds from vault" -USER_FROM_VAULT="$(retry 5 5 vault read -field=username secret/kibana-issues/prod/coverage/elasticsearch)" +echo "--- Reading Kibana coverage creds from vault" +USER_FROM_VAULT="$(vault_get coverage/elasticsearch username)" export USER_FROM_VAULT -PASS_FROM_VAULT="$(retry 5 5 vault read -field=password secret/kibana-issues/prod/coverage/elasticsearch)" +PASS_FROM_VAULT="$(vault_get coverage/elasticsearch password)" export PASS_FROM_VAULT -HOST_FROM_VAULT="$(retry 5 5 vault read -field=host secret/kibana-issues/prod/coverage/elasticsearch)" +HOST_FROM_VAULT="$(vault_get coverage/elasticsearch host)" export HOST_FROM_VAULT TIME_STAMP=$(date +"%Y-%m-%dT%H:%M:00Z") export TIME_STAMP From d91e410a0e3dd03bbeff834c659de8829aabc627 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 9 Apr 2024 12:11:37 +0300 Subject: [PATCH 14/75] fix: [Dashboard > Data Quality][SCREEN READER]: Headings must be properly nested for usability (#180339) Closes: https://github.com/elastic/security-team/issues/8640 ## Description The Data Quality Dashboard has a number of headings that are improperly nested (wrong level). This makes for a more difficult screen reader experience; a large number of screen reader users [primarily navigate by headings](https://webaim.org/projects/screenreadersurvey9/#finding). ### Steps to recreate 1. Open [Data Quality dashboard](https://kibana.siem.estc.dev/app/security/data_quality) 2. Open [HeadingsMap extension](https://chromewebstore.google.com/detail/headingsmap/flbjommegcjonpdmenkdiocclhjacmbi?pli=1) or your preferred screen reader 3. If using a screen reader, traverse the page by headings only to hear the perceived importance of information ### What was done?: 1. `h4` was replaced to `h2` for `PatternLabelComponent` --- .../pattern/pattern_summary/pattern_label/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/pattern_summary/pattern_label/index.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/pattern_summary/pattern_label/index.tsx index 34d6f56a8594a4..24a23c55e83ac6 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/pattern_summary/pattern_label/index.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/pattern/pattern_summary/pattern_label/index.tsx @@ -56,7 +56,7 @@ const PatternLabelComponent: React.FC = ({ -

{pattern}

+

{pattern}

From 9046abbe9acbaf3934f38937708914479f998c42 Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Tue, 9 Apr 2024 11:29:31 +0200 Subject: [PATCH 15/75] Do not update+pickup docs if SO types mappings have not changed (#179937) ## Summary Align V2 behavior with ZDT after https://github.com/elastic/kibana/pull/179595 Under the assumption that whenever we want to add new root fields (e.g. [created_by](https://github.com/elastic/kibana/pull/179344/)), we will systematically add mappings for them, we can skip the `updateAndPickupMappings` operation iif ONLY root fields' mappings have changed during an upgrade (aka if none of the SO types have updated their mappings). Up until now, the logic was updating ALL SO types whenever a `root` field was added / updated. This is expensive and unnecessary, and can cause a noticeable impact to large customers during migrations. --- .../src/README.md | 2 +- .../src/actions/check_target_mappings.test.ts | 35 +++++++++--------- .../src/actions/check_target_mappings.ts | 34 ++++++----------- .../src/actions/index.ts | 9 +---- .../src/core/diff_mappings.ts | 16 ++++++-- .../src/model/model.test.ts | 37 +++++++------------ .../src/model/model.ts | 33 +++++++---------- .../src/next.ts | 6 +-- .../src/state.ts | 4 +- .../migrations/group4/v2_md5_to_mv.test.ts | 4 +- .../group5/pickup_updated_types_only.test.ts | 29 +++++++-------- .../migrations/kibana_migrator_test_kit.ts | 9 +++++ 12 files changed, 100 insertions(+), 118 deletions(-) diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/README.md b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/README.md index 112491f3a48b93..f30b09fca6212d 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/README.md +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/README.md @@ -456,7 +456,7 @@ Once transformed we use an index operation to overwrite the outdated document wi ### Next action -`checkTargetMappings` +`checkTargetTypesMappings` Compare the calculated mappings' hashes against those stored in the `.mappings._meta`. diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.test.ts index b53ace7e6843a7..94e5ca0234535d 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.test.ts @@ -9,7 +9,7 @@ import * as Either from 'fp-ts/lib/Either'; import type { IndexMapping } from '@kbn/core-saved-objects-base-server-internal'; import type { SavedObjectsMappingProperties } from '@kbn/core-saved-objects-server'; -import { checkTargetMappings } from './check_target_mappings'; +import { checkTargetTypesMappings } from './check_target_mappings'; import { getBaseMappings } from '../core'; const indexTypes = ['type1', 'type2', 'type3']; @@ -60,14 +60,14 @@ const appMappings: IndexMapping = { }, }; -describe('checkTargetMappings', () => { +describe('checkTargetTypesMappings', () => { beforeEach(() => { jest.clearAllMocks(); }); describe('when index mappings are missing required properties', () => { it("returns 'index_mappings_incomplete' if index mappings are not defined", async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, latestMappingsVersions, @@ -78,7 +78,7 @@ describe('checkTargetMappings', () => { }); it("returns 'index_mappings_incomplete' if index mappings do not define _meta", async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: { @@ -93,7 +93,7 @@ describe('checkTargetMappings', () => { }); it("returns 'index_mappings_incomplete' if index mappings do not define migrationMappingPropertyHashes nor mappingVersions", async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: { @@ -109,7 +109,7 @@ describe('checkTargetMappings', () => { }); it("returns 'index_mappings_incomplete' if index mappings define a different value for 'dynamic' property", async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: { @@ -128,7 +128,7 @@ describe('checkTargetMappings', () => { describe('when index mappings have all required properties', () => { describe('when some core properties (aka root fields) have changed', () => { it('returns the list of fields that have changed', async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: { @@ -149,8 +149,9 @@ describe('checkTargetMappings', () => { const result = await task(); expect(result).toEqual( Either.left({ - type: 'root_fields_changed' as const, - updatedFields: ['references'], + type: 'types_changed' as const, + // types are flagged as changed cause we have not provided a hashToVersionMap + updatedTypes: ['type1', 'type2'], }) ); }); @@ -159,8 +160,8 @@ describe('checkTargetMappings', () => { describe('when core properties have NOT changed', () => { describe('when index mappings ONLY contain the legacy hashes', () => { describe('and legacy hashes match the current model versions', () => { - it('returns a compared_mappings_match response', async () => { - const task = checkTargetMappings({ + it('returns a types_match response', async () => { + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: legacyMappings, @@ -175,7 +176,7 @@ describe('checkTargetMappings', () => { const result = await task(); expect(result).toEqual( Either.right({ - type: 'compared_mappings_match' as const, + type: 'types_match' as const, }) ); }); @@ -183,7 +184,7 @@ describe('checkTargetMappings', () => { describe('and legacy hashes do NOT match the current model versions', () => { it('returns the list of updated SO types', async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: legacyMappings, @@ -207,8 +208,8 @@ describe('checkTargetMappings', () => { describe('when index mappings contain the mappingVersions', () => { describe('and mappingVersions match', () => { - it('returns a compared_mappings_match response', async () => { - const task = checkTargetMappings({ + it('returns a types_match response', async () => { + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: { @@ -228,7 +229,7 @@ describe('checkTargetMappings', () => { const result = await task(); expect(result).toEqual( Either.right({ - type: 'compared_mappings_match' as const, + type: 'types_match' as const, }) ); }); @@ -236,7 +237,7 @@ describe('checkTargetMappings', () => { describe('and mappingVersions do NOT match', () => { it('returns the list of updated SO types', async () => { - const task = checkTargetMappings({ + const task = checkTargetTypesMappings({ indexTypes, appMappings, indexMappings: { diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.ts index ac9f047a081e5d..029989d89935bb 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/check_target_mappings.ts @@ -9,10 +9,10 @@ import * as Either from 'fp-ts/lib/Either'; import * as TaskEither from 'fp-ts/lib/TaskEither'; import type { IndexMapping, VirtualVersionMap } from '@kbn/core-saved-objects-base-server-internal'; -import { getUpdatedRootFields, getUpdatedTypes } from '../core/compare_mappings'; +import { getUpdatedTypes } from '../core/compare_mappings'; /** @internal */ -export interface CheckTargetMappingsParams { +export interface CheckTargetTypesMappingsParams { indexTypes: string[]; indexMappings?: IndexMapping; appMappings: IndexMapping; @@ -21,34 +21,31 @@ export interface CheckTargetMappingsParams { } /** @internal */ -export interface ComparedMappingsMatch { - type: 'compared_mappings_match'; -} - export interface IndexMappingsIncomplete { type: 'index_mappings_incomplete'; } -export interface RootFieldsChanged { - type: 'root_fields_changed'; - updatedFields: string[]; +/** @internal */ +export interface TypesMatch { + type: 'types_match'; } +/** @internal */ export interface TypesChanged { type: 'types_changed'; updatedTypes: string[]; } -export const checkTargetMappings = +export const checkTargetTypesMappings = ({ indexTypes, indexMappings, appMappings, latestMappingsVersions, hashToVersionMap = {}, - }: CheckTargetMappingsParams): TaskEither.TaskEither< - IndexMappingsIncomplete | RootFieldsChanged | TypesChanged, - ComparedMappingsMatch + }: CheckTargetTypesMappingsParams): TaskEither.TaskEither< + IndexMappingsIncomplete | TypesChanged, + TypesMatch > => async () => { if ( @@ -59,15 +56,6 @@ export const checkTargetMappings = return Either.left({ type: 'index_mappings_incomplete' as const }); } - const updatedFields = getUpdatedRootFields(indexMappings); - - if (updatedFields.length) { - return Either.left({ - type: 'root_fields_changed', - updatedFields, - }); - } - const updatedTypes = getUpdatedTypes({ indexTypes, indexMeta: indexMappings?._meta, @@ -81,6 +69,6 @@ export const checkTargetMappings = updatedTypes, }); } else { - return Either.right({ type: 'compared_mappings_match' as const }); + return Either.right({ type: 'types_match' as const }); } }; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/index.ts index afdeb6628a1ba2..79df66c4b9ccbb 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/index.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/index.ts @@ -87,7 +87,7 @@ export { synchronizeMigrators } from './synchronize_migrators'; export { createIndex } from './create_index'; -export { checkTargetMappings } from './check_target_mappings'; +export { checkTargetTypesMappings } from './check_target_mappings'; export const noop = async (): Promise> => right('noop' as const); @@ -108,11 +108,7 @@ import type { UnknownDocsFound } from './check_for_unknown_docs'; import type { IncompatibleClusterRoutingAllocation } from './initialize_action'; import type { ClusterShardLimitExceeded } from './create_index'; import type { SynchronizationFailed } from './synchronize_migrators'; -import type { - IndexMappingsIncomplete, - RootFieldsChanged, - TypesChanged, -} from './check_target_mappings'; +import type { IndexMappingsIncomplete, TypesChanged } from './check_target_mappings'; export type { CheckForUnknownDocsParams, @@ -187,7 +183,6 @@ export interface ActionErrorTypeMap { es_response_too_large: EsResponseTooLargeError; synchronization_failed: SynchronizationFailed; index_mappings_incomplete: IndexMappingsIncomplete; - root_fields_changed: RootFieldsChanged; types_changed: TypesChanged; operation_not_supported: OperationNotSupported; } diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/diff_mappings.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/diff_mappings.ts index b7eeaaf40f079d..788ad9e282b6e1 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/diff_mappings.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/diff_mappings.ts @@ -10,10 +10,18 @@ import type { IndexMapping, VirtualVersionMap } from '@kbn/core-saved-objects-ba import { getUpdatedRootFields, getUpdatedTypes } from './compare_mappings'; /** - * Diffs the actual vs expected mappings. The properties are compared using md5 hashes stored in _meta, because - * actual and expected mappings *can* differ, but if the md5 hashes stored in actual._meta.migrationMappingPropertyHashes - * match our expectations, we don't require a migration. This allows ES to tack on additional mappings that Kibana - * doesn't know about or expect, without triggering continual migrations. + * Diffs the stored vs app mappings. + * On one hand, it compares changes in root fields, by deep comparing the actual mappings. + * On the other hand, it compares changes in SO types mappings: + * Historically, this comparison was done using md5 hashes. + * Currently, and in order to be FIPS compliant, this has been replaced by comparing model versions. + * The `getUpdatedTypes` uses a map to handle the transition md5 => modelVersion + + * @param indexMappings The mappings stored in the SO index + * @param appMappings The current Kibana mappings, computed from the typeRegistry + * @param indexTypes A list of the SO types that are bound to the SO index + * @param latestMappingsVersions A map containing the latest version in which each type has updated its mappings + * @param hashToVersionMap Map that holds md5 => modelVersion equivalence, to smoothly transition away from hashes */ export function diffMappings({ indexMappings, diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.test.ts index 5dba20c7826a8e..f06e9f836f2c53 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.test.ts @@ -19,7 +19,7 @@ import type { BaseState, CalculateExcludeFiltersState, UpdateSourceMappingsPropertiesState, - CheckTargetMappingsState, + CheckTargetTypesMappingsState, CheckUnknownDocumentsState, CheckVersionIndexReadyActions, CleanupUnknownAndExcluded, @@ -2592,7 +2592,7 @@ describe('migrations v2 model', () => { it('OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT -> CHECK_TARGET_MAPPINGS if action succeeded', () => { const res: ResponseType<'OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT'> = Either.right({}); - const newState = model(state, res) as CheckTargetMappingsState; + const newState = model(state, res) as CheckTargetTypesMappingsState; expect(newState.controlState).toBe('CHECK_TARGET_MAPPINGS'); // @ts-expect-error pitId shouldn't leak outside expect(newState.pitId).toBe(undefined); @@ -2600,7 +2600,7 @@ describe('migrations v2 model', () => { }); describe('CHECK_TARGET_MAPPINGS', () => { - const checkTargetMappingsState: CheckTargetMappingsState = { + const checkTargetTypesMappingsState: CheckTargetTypesMappingsState = { ...postInitState, controlState: 'CHECK_TARGET_MAPPINGS', versionIndexReadyActions: Option.none, @@ -2614,7 +2614,7 @@ describe('migrations v2 model', () => { type: 'index_mappings_incomplete' as const, }); const newState = model( - checkTargetMappingsState, + checkTargetTypesMappingsState, res ) as UpdateTargetMappingsPropertiesState; expect(newState.controlState).toBe('UPDATE_TARGET_MAPPINGS_PROPERTIES'); @@ -2623,28 +2623,14 @@ describe('migrations v2 model', () => { }); describe('compatible migration', () => { - it('CHECK_TARGET_MAPPINGS -> UPDATE_TARGET_MAPPINGS_PROPERTIES if core fields have been updated', () => { - const res: ResponseType<'CHECK_TARGET_MAPPINGS'> = Either.left({ - type: 'root_fields_changed' as const, - updatedFields: ['references'], - }); - const newState = model( - checkTargetMappingsState, - res - ) as UpdateTargetMappingsPropertiesState; - expect(newState.controlState).toBe('UPDATE_TARGET_MAPPINGS_PROPERTIES'); - // since a core field has been updated, we must pickup ALL SOs. - // Thus, we must NOT define a filter query. - expect(Option.isNone(newState.updatedTypesQuery)).toEqual(true); - }); - - it('CHECK_TARGET_MAPPINGS -> UPDATE_TARGET_MAPPINGS_PROPERTIES if only SO types have changed', () => { + it('CHECK_TARGET_MAPPINGS -> UPDATE_TARGET_MAPPINGS_PROPERTIES if SO types have changed', () => { const res: ResponseType<'CHECK_TARGET_MAPPINGS'> = Either.left({ type: 'types_changed' as const, + updatedFields: [], updatedTypes: ['dashboard', 'lens'], }); const newState = model( - checkTargetMappingsState, + checkTargetTypesMappingsState, res ) as UpdateTargetMappingsPropertiesState; expect(newState.controlState).toBe('UPDATE_TARGET_MAPPINGS_PROPERTIES'); @@ -2668,11 +2654,14 @@ describe('migrations v2 model', () => { }); }); - it('CHECK_TARGET_MAPPINGS -> CHECK_VERSION_INDEX_READY_ACTIONS if mappings match', () => { + it('CHECK_TARGET_MAPPINGS -> CHECK_VERSION_INDEX_READY_ACTIONS if types match (there might be additions in core fields)', () => { const res: ResponseType<'CHECK_TARGET_MAPPINGS'> = Either.right({ - type: 'compared_mappings_match' as const, + type: 'types_match' as const, }); - const newState = model(checkTargetMappingsState, res) as CheckVersionIndexReadyActions; + const newState = model( + checkTargetTypesMappingsState, + res + ) as CheckVersionIndexReadyActions; expect(newState.controlState).toBe('CHECK_VERSION_INDEX_READY_ACTIONS'); }); }); diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.ts index b232a7d7509252..e25d48af4ed25e 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/model/model.ts @@ -1429,40 +1429,33 @@ export const model = (currentState: State, resW: ResponseType): } else if (stateP.controlState === 'CHECK_TARGET_MAPPINGS') { const res = resW as ResponseType; if (Either.isRight(res)) { - // The mappings have NOT changed, no need to pick up changes in any documents + // The types mappings have NOT changed, no need to pick up changes in any documents return { ...stateP, controlState: 'CHECK_VERSION_INDEX_READY_ACTIONS', + logs: [ + ...stateP.logs, + { + level: 'info', + message: + 'There are no changes in the mappings of any of the SO types, skipping UPDATE_TARGET_MAPPINGS steps.', + }, + ], }; } else { const left = res.left; if (isTypeof(left, 'index_mappings_incomplete')) { // reindex migration - // some top-level properties have changed, e.g. 'dynamic' or '_meta' (see checkTargetMappings()) + // some top-level properties have changed, e.g. 'dynamic' or '_meta' (see checkTargetTypesMappings()) // we must "pick-up" all documents on the index (by not providing a query) return { ...stateP, controlState: 'UPDATE_TARGET_MAPPINGS_PROPERTIES', updatedTypesQuery: Option.none, }; - } else if (isTypeof(left, 'root_fields_changed')) { - // compatible migration: some core fields have been updated - return { - ...stateP, - controlState: 'UPDATE_TARGET_MAPPINGS_PROPERTIES', - // we must "pick-up" all documents on the index (by not providing a query) - updatedTypesQuery: Option.none, - logs: [ - ...stateP.logs, - { - level: 'info', - message: `Kibana is performing a compatible upgrade and the mappings of some root fields have been changed. For Elasticsearch to pickup these mappings, all saved objects need to be updated. Updated root fields: ${left.updatedFields}.`, - }, - ], - }; } else if (isTypeof(left, 'types_changed')) { - // compatible migration: some fields have been updated, and they all correspond to SO types - const updatedTypesQuery = Option.fromNullable(buildPickupMappingsQuery(left.updatedTypes)); + // compatible migration: the mappings of some SO types have been updated + const updatedTypesQuery = Option.some(buildPickupMappingsQuery(left.updatedTypes)); return { ...stateP, @@ -1473,7 +1466,7 @@ export const model = (currentState: State, resW: ResponseType): ...stateP.logs, { level: 'info', - message: `Kibana is performing a compatible upgrade and NO root fields have been updated. Kibana will update the following SO types so that ES can pickup the updated mappings: ${left.updatedTypes}.`, + message: `Documents of the following SO types will be updated, so that ES can pickup the updated mappings: ${left.updatedTypes}.`, }, ], }; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.ts index 4df6e59cae22fc..9cd7f92ee4355b 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/next.ts @@ -15,7 +15,7 @@ import type { WaitGroup } from './kibana_migrator_utils'; import type { AllActionStates, CalculateExcludeFiltersState, - CheckTargetMappingsState, + CheckTargetTypesMappingsState, CheckUnknownDocumentsState, CleanupUnknownAndExcluded, CleanupUnknownAndExcludedWaitForTaskState, @@ -203,8 +203,8 @@ export const nextActionMap = ( }), REFRESH_TARGET: (state: RefreshTarget) => Actions.refreshIndex({ client, index: state.targetIndex }), - CHECK_TARGET_MAPPINGS: (state: CheckTargetMappingsState) => - Actions.checkTargetMappings({ + CHECK_TARGET_MAPPINGS: (state: CheckTargetTypesMappingsState) => + Actions.checkTargetTypesMappings({ indexTypes: state.indexTypes, indexMappings: Option.toUndefined(state.sourceIndexMappings), appMappings: state.targetIndexMappings, diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state.ts index 2ea6cc9e45708a..b26088adc53e9d 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/state.ts @@ -384,7 +384,7 @@ export interface RefreshTarget extends PostInitState { readonly targetIndex: string; } -export interface CheckTargetMappingsState extends PostInitState { +export interface CheckTargetTypesMappingsState extends PostInitState { readonly controlState: 'CHECK_TARGET_MAPPINGS'; } @@ -549,7 +549,7 @@ export interface LegacyDeleteState extends LegacyBaseState { export type State = Readonly< | CalculateExcludeFiltersState - | CheckTargetMappingsState + | CheckTargetTypesMappingsState | CheckUnknownDocumentsState | CheckVersionIndexReadyActions | CleanupUnknownAndExcluded diff --git a/src/core/server/integration_tests/saved_objects/migrations/group4/v2_md5_to_mv.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group4/v2_md5_to_mv.test.ts index 1304044b63eb55..4e1cb4d06e38f8 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group4/v2_md5_to_mv.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group4/v2_md5_to_mv.test.ts @@ -184,7 +184,7 @@ describe('V2 algorithm', () => { it('only "picks up" the types that have changed', async () => { const logs = await readLog(logFilePath); expect(logs).toMatch( - 'Kibana is performing a compatible upgrade and NO root fields have been updated. Kibana will update the following SO types so that ES can pickup the updated mappings: another-type.' + 'Documents of the following SO types will be updated, so that ES can pickup the updated mappings: another-type.' ); }); }); @@ -263,7 +263,7 @@ describe('V2 algorithm', () => { it('only "picks up" the types that have changed', async () => { const logs = await readLog(logFilePath); expect(logs).toMatch( - 'Kibana is performing a compatible upgrade and NO root fields have been updated. Kibana will update the following SO types so that ES can pickup the updated mappings: another-type.' + 'Documents of the following SO types will be updated, so that ES can pickup the updated mappings: another-type.' ); }); }); diff --git a/src/core/server/integration_tests/saved_objects/migrations/group5/pickup_updated_types_only.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group5/pickup_updated_types_only.test.ts index bb216b401e8859..91fed904d01d72 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group5/pickup_updated_types_only.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group5/pickup_updated_types_only.test.ts @@ -12,8 +12,8 @@ import { clearLog, createBaseline, defaultKibanaIndex, - defaultLogFilePath, getCompatibleMappingsMigrator, + getIdenticalMappingsMigrator, getIncompatibleMappingsMigrator, startElasticsearch, } from '../kibana_migrator_test_kit'; @@ -31,38 +31,39 @@ describe('pickupUpdatedMappings', () => { beforeEach(async () => { await createBaseline(); - await clearLog(); + await clearLog(logFilePath); }); describe('when performing a reindexing migration', () => { it('should pickup all documents from the index', async () => { - const { runMigrations } = await getIncompatibleMappingsMigrator(); + const { runMigrations } = await getIncompatibleMappingsMigrator({ logFilePath }); await runMigrations(); - const logs = await parseLogFile(defaultLogFilePath); + const logs = await parseLogFile(logFilePath); + expect(logs).not.toContainLogEntry('Documents of the following SO types will be updated'); expect(logs).not.toContainLogEntry( - 'Kibana is performing a compatible upgrade and NO root fields have been updated. Kibana will update the following SO types so that ES can pickup the updated mappings' + 'There are no changes in the mappings of any of the SO types, skipping UPDATE_TARGET_MAPPINGS steps.' ); }); }); describe('when performing a compatible migration', () => { it('should pickup only the types that have been updated', async () => { - const { runMigrations } = await getCompatibleMappingsMigrator(); + const { runMigrations } = await getCompatibleMappingsMigrator({ logFilePath }); await runMigrations(); - const logs = await parseLogFile(defaultLogFilePath); + const logs = await parseLogFile(logFilePath); expect(logs).toContainLogEntry( - 'Kibana is performing a compatible upgrade and NO root fields have been updated. Kibana will update the following SO types so that ES can pickup the updated mappings: complex.' + 'Documents of the following SO types will be updated, so that ES can pickup the updated mappings: complex.' ); }); - it('should pickup ALL documents if any root fields have been updated', async () => { - const { runMigrations, client } = await getCompatibleMappingsMigrator(); + it('should NOT pickup any documents if only root fields have been updated', async () => { + const { runMigrations, client } = await getIdenticalMappingsMigrator({ logFilePath }); // we tamper the baseline mappings to simulate some root fields changes const baselineMappings = await client.indices.getMapping({ index: defaultKibanaIndex }); @@ -74,14 +75,12 @@ describe('pickupUpdatedMappings', () => { await runMigrations(); - const logs = await parseLogFile(defaultLogFilePath); + const logs = await parseLogFile(logFilePath); expect(logs).toContainLogEntry( - 'Kibana is performing a compatible upgrade and the mappings of some root fields have been changed. For Elasticsearch to pickup these mappings, all saved objects need to be updated. Updated root fields: references.' - ); - expect(logs).not.toContainLogEntry( - 'Kibana is performing a compatible upgrade and NO root fields have been updated. Kibana will update the following SO types so that ES can pickup the updated mappings' + 'There are no changes in the mappings of any of the SO types, skipping UPDATE_TARGET_MAPPINGS steps.' ); + expect(logs).not.toContainLogEntry('Documents of the following SO types will be updated'); }); }); diff --git a/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts b/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts index d748cfd16755b9..db89ae88068fba 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts @@ -434,15 +434,18 @@ export const createBaseline = async () => { }; interface GetMutatedMigratorParams { + logFilePath?: string; kibanaVersion?: string; settings?: Record; } export const getIdenticalMappingsMigrator = async ({ + logFilePath = defaultLogFilePath, kibanaVersion = nextMinor, settings = {}, }: GetMutatedMigratorParams = {}) => { return await getKibanaMigratorTestKit({ + logFilePath, types: baselineTypes, kibanaVersion, settings, @@ -450,10 +453,12 @@ export const getIdenticalMappingsMigrator = async ({ }; export const getNonDeprecatedMappingsMigrator = async ({ + logFilePath = defaultLogFilePath, kibanaVersion = nextMinor, settings = {}, }: GetMutatedMigratorParams = {}) => { return await getKibanaMigratorTestKit({ + logFilePath, types: baselineTypes.filter((type) => type.name !== 'deprecated'), kibanaVersion, settings, @@ -461,6 +466,7 @@ export const getNonDeprecatedMappingsMigrator = async ({ }; export const getCompatibleMappingsMigrator = async ({ + logFilePath = defaultLogFilePath, filterDeprecated = false, kibanaVersion = nextMinor, settings = {}, @@ -499,6 +505,7 @@ export const getCompatibleMappingsMigrator = async ({ }); return await getKibanaMigratorTestKit({ + logFilePath, types, kibanaVersion, settings, @@ -506,6 +513,7 @@ export const getCompatibleMappingsMigrator = async ({ }; export const getIncompatibleMappingsMigrator = async ({ + logFilePath = defaultLogFilePath, kibanaVersion = nextMinor, settings = {}, }: GetMutatedMigratorParams = {}) => { @@ -544,6 +552,7 @@ export const getIncompatibleMappingsMigrator = async ({ }); return await getKibanaMigratorTestKit({ + logFilePath, types, kibanaVersion, settings, From 0535f890ee39cdac36bb36dd56b3e04ce06231a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 9 Apr 2024 11:39:04 +0200 Subject: [PATCH 16/75] [APM] Revert adding `container.id`/`host.name` field to APM alerts (#180274) In https://github.com/elastic/kibana/pull/178330 `container.id` and `host.name` were added to APM alerts when APM rules fired. This PR removes them again since the collected container.id/host.names are chosen at random, and do not necessarily correspond to the container/hosts that exhibit the problem that is causing the alert to fire. --- .../src/scenarios/spiked_latency.ts | 10 +- .../alert_details_contextual_insights.tsx | 4 - .../alert_details_app_section/types.ts | 4 - .../get_service_group_fields_for_anomaly.ts | 7 +- .../register_error_count_rule_type.ts | 6 +- ...elds.ts => get_apm_alert_source_fields.ts} | 12 +- .../get_service_group_fields.test.ts | 12 +- ...register_transaction_duration_rule_type.ts | 6 +- ...gister_transaction_error_rate_rule_type.ts | 6 +- .../get_log_categories/index.test.ts | 113 ++++++++++++++++++ .../get_log_categories/index.ts | 2 +- 11 files changed, 141 insertions(+), 41 deletions(-) rename x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/{get_service_group_fields.ts => get_apm_alert_source_fields.ts} (85%) create mode 100644 x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.test.ts diff --git a/packages/kbn-apm-synthtrace/src/scenarios/spiked_latency.ts b/packages/kbn-apm-synthtrace/src/scenarios/spiked_latency.ts index 8dfbc6a131843f..13eb4dcd3f6d66 100644 --- a/packages/kbn-apm-synthtrace/src/scenarios/spiked_latency.ts +++ b/packages/kbn-apm-synthtrace/src/scenarios/spiked_latency.ts @@ -40,11 +40,10 @@ const scenario: Scenario = async ({ logger }) => { instanceId: generateShortId(), cloudProvider: cluster.provider, cloudRegion: cluster.region, + containerId: `spiked-container-${generateShortId()}`, + hostName: `spiked-host-${generateShortId()}`, })); - const containerId = `spiked-${generateShortId()}`; - const hostName = `spiked-${generateShortId()}`; - function buildLogs(serviceName: string) { return range .interval('1m') @@ -59,6 +58,8 @@ const scenario: Scenario = async ({ logger }) => { instanceId, cloudRegion, cloudProvider, + containerId, + hostName, } = clusters[clusterIndex]; return log @@ -102,6 +103,9 @@ const scenario: Scenario = async ({ logger }) => { const interval = random(1, 100, false); const rangeWithInterval = range.interval(`${interval}s`); + const clusterIndex = Math.floor(Math.random() * clusters.length); + const { containerId, hostName } = clusters[clusterIndex]; + return rangeWithInterval.generator((timestamp, i) => { const duration = getDuration(transactionName); return serviceInstance diff --git a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/alert_details_contextual_insights.tsx b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/alert_details_contextual_insights.tsx index e6476dff265f56..9744ed756ce378 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/alert_details_contextual_insights.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/alert_details_contextual_insights.tsx @@ -16,8 +16,6 @@ import dedent from 'dedent'; import { i18n } from '@kbn/i18n'; import { callApmApi } from '../../../../services/rest/create_call_apm_api'; import { - CONTAINER_ID, - HOST_NAME, SERVICE_ENVIRONMENT, SERVICE_NAME, TRANSACTION_NAME, @@ -53,8 +51,6 @@ export function AlertDetailContextualInsights({ params: { query: { [SERVICE_NAME]: alert.fields[SERVICE_NAME], - [HOST_NAME]: alert.fields[HOST_NAME], - [CONTAINER_ID]: alert.fields[CONTAINER_ID], [SERVICE_ENVIRONMENT]: alert.fields[SERVICE_ENVIRONMENT], [TRANSACTION_TYPE]: alert.fields[TRANSACTION_TYPE], [TRANSACTION_NAME]: alert.fields[TRANSACTION_NAME], diff --git a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/types.ts b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/types.ts index ffe8ea65c8f703..6238edf7c794d2 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/types.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/types.ts @@ -16,8 +16,6 @@ import type { TRANSACTION_TYPE, SERVICE_ENVIRONMENT, TRANSACTION_NAME, - CONTAINER_ID, - HOST_NAME, } from '../../../../../common/es_fields/apm'; export interface AlertDetailsAppSectionProps { rule: Rule<{ @@ -29,8 +27,6 @@ export interface AlertDetailsAppSectionProps { alert: TopAlert<{ [SERVICE_NAME]: string; [TRANSACTION_TYPE]: string; - [CONTAINER_ID]?: string; - [HOST_NAME]?: string; [TRANSACTION_NAME]?: string; [SERVICE_ENVIRONMENT]: string; }>; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/anomaly/get_service_group_fields_for_anomaly.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/anomaly/get_service_group_fields_for_anomaly.ts index cde1ba830b2cc1..b07f4711bc9658 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/anomaly/get_service_group_fields_for_anomaly.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/anomaly/get_service_group_fields_for_anomaly.ts @@ -19,8 +19,8 @@ import { import { alertingEsClient } from '../../alerting_es_client'; import { getApmAlertSourceFields, - getServiceGroupFieldsAgg, -} from '../get_service_group_fields'; + getApmAlertSourceFieldsAgg, +} from '../get_apm_alert_source_fields'; export async function getServiceGroupFieldsForAnomaly({ apmIndices, @@ -64,7 +64,7 @@ export async function getServiceGroupFieldsForAnomaly({ }, }, aggs: { - ...getServiceGroupFieldsAgg({ + ...getApmAlertSourceFieldsAgg({ sort: [{ [TRANSACTION_DURATION]: { order: 'desc' as const } }], }), }, @@ -75,6 +75,7 @@ export async function getServiceGroupFieldsForAnomaly({ scopedClusterClient, params, }); + if (!response.aggregations) { return {}; } diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/error_count/register_error_count_rule_type.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/error_count/register_error_count_rule_type.ts index 2a67764fb17b58..a29b0b50942852 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/error_count/register_error_count_rule_type.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/error_count/register_error_count_rule_type.ts @@ -63,8 +63,8 @@ import { } from '../../register_apm_rule_types'; import { getApmAlertSourceFields, - getServiceGroupFieldsAgg, -} from '../get_service_group_fields'; + getApmAlertSourceFieldsAgg, +} from '../get_apm_alert_source_fields'; import { getGroupByTerms } from '../utils/get_groupby_terms'; import { getGroupByActionVariables } from '../utils/get_groupby_action_variables'; import { getAllGroupByFields } from '../../../../../common/rules/get_all_groupby_fields'; @@ -200,7 +200,7 @@ export function registerErrorCountRuleType({ size: 1000, order: { _count: 'desc' as const }, }, - aggs: getServiceGroupFieldsAgg(), + aggs: getApmAlertSourceFieldsAgg(), }, }, }, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_apm_alert_source_fields.ts similarity index 85% rename from x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.ts rename to x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_apm_alert_source_fields.ts index 97de147fa52f9c..2cd0b70ecac8a3 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_apm_alert_source_fields.ts @@ -6,23 +6,16 @@ */ import { AggregationsTopHitsAggregation } from '@elastic/elasticsearch/lib/api/types'; -import { CONTAINER_ID, HOST_NAME } from '../../../../common/es_fields/apm'; import { LABELS, SERVICE_GROUP_SUPPORTED_FIELDS, } from '../../../../common/service_groups'; -const APM_ALERT_SOURCE_FIELDS = [ - ...SERVICE_GROUP_SUPPORTED_FIELDS, - HOST_NAME, - CONTAINER_ID, -]; - export interface SourceDoc { [key: string]: string | string[] | SourceDoc; } -export function getServiceGroupFieldsAgg( +export function getApmAlertSourceFieldsAgg( topHitsOpts: AggregationsTopHitsAggregation = {} ) { return { @@ -30,7 +23,7 @@ export function getServiceGroupFieldsAgg( top_hits: { size: 1, _source: { - includes: APM_ALERT_SOURCE_FIELDS, + includes: SERVICE_GROUP_SUPPORTED_FIELDS, }, ...topHitsOpts, }, @@ -50,6 +43,7 @@ export function getApmAlertSourceFields(bucket?: AggResultBucket) { if (!bucket) { return {}; } + const sourceDoc: SourceDoc = bucket?.source_fields?.hits.hits[0]?._source ?? {}; return flattenSourceDoc(sourceDoc); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.test.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.test.ts index 3acd1543010e5e..92159f416f32b7 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.test.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/get_service_group_fields.test.ts @@ -7,9 +7,9 @@ import { getApmAlertSourceFields, - getServiceGroupFieldsAgg, + getApmAlertSourceFieldsAgg, flattenSourceDoc, -} from './get_service_group_fields'; +} from './get_apm_alert_source_fields'; const mockSourceObj = { service: { @@ -67,7 +67,7 @@ describe('getSourceFields', () => { describe('getSourceFieldsAgg', () => { it('should create a agg for specific source fields', () => { - const agg = getServiceGroupFieldsAgg(); + const agg = getApmAlertSourceFieldsAgg(); expect(agg).toMatchInlineSnapshot(` Object { "source_fields": Object { @@ -79,8 +79,6 @@ describe('getSourceFieldsAgg', () => { "service.environment", "service.language.name", "labels", - "host.name", - "container.id", ], }, "size": 1, @@ -91,7 +89,7 @@ describe('getSourceFieldsAgg', () => { }); it('should accept options for top_hits options', () => { - const agg = getServiceGroupFieldsAgg({ + const agg = getApmAlertSourceFieldsAgg({ sort: [{ 'transaction.duration.us': { order: 'desc' } }], }); expect(agg).toMatchInlineSnapshot(` @@ -105,8 +103,6 @@ describe('getSourceFieldsAgg', () => { "service.environment", "service.language.name", "labels", - "host.name", - "container.id", ], }, "size": 1, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.ts index 6ee99dd8d89ed9..f656b34c4ac75e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_duration/register_transaction_duration_rule_type.ts @@ -74,8 +74,8 @@ import { } from '../../register_apm_rule_types'; import { getApmAlertSourceFields, - getServiceGroupFieldsAgg, -} from '../get_service_group_fields'; + getApmAlertSourceFieldsAgg, +} from '../get_apm_alert_source_fields'; import { averageOrPercentileAgg, getMultiTermsSortOrder, @@ -234,7 +234,7 @@ export function registerTransactionDurationRuleType({ aggregationType: ruleParams.aggregationType, transactionDurationField: field, }), - ...getServiceGroupFieldsAgg(), + ...getApmAlertSourceFieldsAgg(), }, }, }, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_error_rate/register_transaction_error_rate_rule_type.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_error_rate/register_transaction_error_rate_rule_type.ts index f80ce41953b7d0..a32e4575820e44 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_error_rate/register_transaction_error_rate_rule_type.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/rule_types/transaction_error_rate/register_transaction_error_rate_rule_type.ts @@ -59,8 +59,8 @@ import { } from '../../register_apm_rule_types'; import { getApmAlertSourceFields, - getServiceGroupFieldsAgg, -} from '../get_service_group_fields'; + getApmAlertSourceFieldsAgg, +} from '../get_apm_alert_source_fields'; import { getGroupByTerms } from '../utils/get_groupby_terms'; import { getGroupByActionVariables } from '../utils/get_groupby_action_variables'; import { getAllGroupByFields } from '../../../../../common/rules/get_all_groupby_fields'; @@ -210,7 +210,7 @@ export function registerTransactionErrorRateRuleType({ terms: { field: EVENT_OUTCOME, }, - aggs: getServiceGroupFieldsAgg(), + aggs: getApmAlertSourceFieldsAgg(), }, }, }, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.test.ts b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.test.ts new file mode 100644 index 00000000000000..e18d7f6184c580 --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.test.ts @@ -0,0 +1,113 @@ +/* + * 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. + */ + +import { getShouldMatchOrNotExistFilter } from '.'; + +describe('getShouldMatchOrNotExistFilter', () => { + describe('when all fields are provided', () => { + const result = getShouldMatchOrNotExistFilter([ + { + field: 'service.name', + value: 'opbeans-node', + }, + { + field: 'container.id', + value: 'my-first-container', + }, + { + field: 'host.name', + value: 'my-only-host', + }, + ]); + + it('returns 3 filters matching the given values', () => { + expect(result).toHaveLength(3); + + expect( + result.flatMap(({ bool }) => + bool.should[0].bool.filter?.map(({ term }) => term) + ) + ).toEqual([ + { 'service.name': 'opbeans-node' }, + { 'container.id': 'my-first-container' }, + { 'host.name': 'my-only-host' }, + ]); + }); + }); + + describe('when no fields are provided', () => { + const result = getShouldMatchOrNotExistFilter([ + { + field: 'service.name', + value: undefined, + }, + { + field: 'container.id', + value: undefined, + }, + { + field: 'host.name', + value: undefined, + }, + ]); + + it('returns no filters', () => { + expect(result).toEqual([]); + }); + }); + + describe('when only `container.id` is provided', () => { + const result = getShouldMatchOrNotExistFilter([ + { + field: 'service.name', + value: undefined, + }, + { + field: 'container.id', + value: 'my-container', + }, + { + field: 'host.name', + value: undefined, + }, + ]); + + it('returns one filter for container.id', () => { + expect(result).toHaveLength(1); + expect(result[0].bool.should).toMatchInlineSnapshot(` + Array [ + Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "container.id": "my-container", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "must_not": Object { + "bool": Object { + "filter": Array [ + Object { + "exists": Object { + "field": "container.id", + }, + }, + ], + }, + }, + }, + }, + ] + `); + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.ts b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.ts index 1ce41749ba3a01..6084f71e928040 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/get_log_categories/index.ts @@ -122,7 +122,7 @@ export async function getLogCategories({ } // field/value pairs should match, or the field should not exist -function getShouldMatchOrNotExistFilter( +export function getShouldMatchOrNotExistFilter( keyValuePairs: Array<{ field: string; value?: string; From 6bb1282e6c5ab9de8b250c87aa37661d6f87d27a Mon Sep 17 00:00:00 2001 From: Tre Date: Tue, 9 Apr 2024 12:10:10 +0100 Subject: [PATCH 17/75] [Serverless] Fixup config typos (#180127) ## Summary Fixup Junit report names to match the file names. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../test_suites/search/common_configs/config.group3.ts | 2 +- .../test_suites/search/common_configs/config.group4.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group3.ts b/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group3.ts index 639429eaabd7df..acd34f2efcdfb0 100644 --- a/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group3.ts +++ b/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group3.ts @@ -14,7 +14,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ...baseTestConfig.getAll(), testFiles: [require.resolve('../../common/visualizations/group2')], junit: { - reportName: 'Serverless Search Functional Tests - Common Group 2', + reportName: 'Serverless Search Functional Tests - Common Group 3', }, }; } diff --git a/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group4.ts b/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group4.ts index 31f9f644495874..8e787b95c5fd81 100644 --- a/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group4.ts +++ b/x-pack/test_serverless/functional/test_suites/search/common_configs/config.group4.ts @@ -14,7 +14,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ...baseTestConfig.getAll(), testFiles: [require.resolve('../../common/visualizations/group3')], junit: { - reportName: 'Serverless Search Functional Tests - Common Group 2', + reportName: 'Serverless Search Functional Tests - Common Group 4', }, }; } From 8c05e25c6ce747293ec5f0fc7792de5a4349912c Mon Sep 17 00:00:00 2001 From: Cristina Amico Date: Tue, 9 Apr 2024 13:20:47 +0200 Subject: [PATCH 18/75] [Fleet] Add apm spans for new package lifecycle states (#180355) ## Summary Add more APM spans in the state machine steps added in https://github.com/elastic/kibana/pull/178657 to measure the performances of the installation process Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../steps/step_create_restart_installation.ts | 49 +++++++++++-------- .../steps/step_delete_previous_pipelines.ts | 36 ++++++++------ .../step_install_index_template_pipelines.ts | 45 ++++++++++------- .../steps/step_remove_legacy_templates.ts | 5 +- .../steps/update_latest_executed_state.ts | 9 ++-- 5 files changed, 84 insertions(+), 60 deletions(-) diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.ts index 58daa6c3791345..af0fb0fea9cafe 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_create_restart_installation.ts @@ -11,6 +11,7 @@ import { MAX_TIME_COMPLETE_INSTALL } from '../../../../../constants'; import { restartInstallation, createInstallation } from '../../install'; import type { InstallContext } from '../_state_machine_package_install'; +import { withPackageSpan } from '../../utils'; export async function stepCreateRestartInstallation(context: InstallContext) { const { @@ -42,13 +43,15 @@ export async function stepCreateRestartInstallation(context: InstallContext) { if (force) { logger.debug(`Package install - Forced installation, restarting`); - await restartInstallation({ - savedObjectsClient, - pkgName, - pkgVersion, - installSource, - verificationResult, - }); + await withPackageSpan('Restarting installation with force flag', () => + restartInstallation({ + savedObjectsClient, + pkgName, + pkgVersion, + installSource, + verificationResult, + }) + ); } else { throw new ConcurrentInstallOperationError( `Concurrent installation or upgrade of ${pkgName || 'unknown'}-${ @@ -62,23 +65,27 @@ export async function stepCreateRestartInstallation(context: InstallContext) { logger.debug( `Package install - no installation running or the installation has been running longer than ${MAX_TIME_COMPLETE_INSTALL}, restarting` ); - await restartInstallation({ - savedObjectsClient, - pkgName, - pkgVersion, - installSource, - verificationResult, - }); + await withPackageSpan('Restarting installation', () => + restartInstallation({ + savedObjectsClient, + pkgName, + pkgVersion, + installSource, + verificationResult, + }) + ); } } else { logger.debug(`Package install - Create installation`); - await createInstallation({ - savedObjectsClient, - packageInfo, - installSource, - spaceId, - verificationResult, - }); + await withPackageSpan('Creating installation', () => + createInstallation({ + savedObjectsClient, + packageInfo, + installSource, + spaceId, + verificationResult, + }) + ); } } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.ts index eb80ef16dbcb05..4a524e3e07939e 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_delete_previous_pipelines.ts @@ -36,26 +36,30 @@ export async function stepDeletePreviousPipelines(context: InstallContext) { installedPkg ) { logger.debug(`Package install - installType ${installType} Deleting previous ingest pipelines`); - updatedESReferences = await withPackageSpan('Delete previous ingest pipelines', () => - deletePreviousPipelines( - esClient, - savedObjectsClient, - pkgName, - installedPkg!.attributes.version, - esReferences || [] - ) + updatedESReferences = await withPackageSpan( + 'Delete previous ingest pipelines with installType update or reupdate', + () => + deletePreviousPipelines( + esClient, + savedObjectsClient, + pkgName, + installedPkg!.attributes.version, + esReferences || [] + ) ); } else if (installType === 'rollback' && installedPkg) { // pipelines from a different version may have been installed during a failed update logger.debug(`Package install - installType ${installType} Deleting previous ingest pipelines`); - updatedESReferences = await withPackageSpan('Delete previous ingest pipelines', () => - deletePreviousPipelines( - esClient, - savedObjectsClient, - pkgName, - installedPkg!.attributes.install_version, - esReferences || [] - ) + updatedESReferences = await withPackageSpan( + 'Delete previous ingest pipelines with installType rollback', + () => + deletePreviousPipelines( + esClient, + savedObjectsClient, + pkgName, + installedPkg!.attributes.install_version, + esReferences || [] + ) ); } else { // if none of the previous cases, return the original esReferences diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.ts index e2b6918b722cfe..18c0956da31c90 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_install_index_template_pipelines.ts @@ -10,6 +10,7 @@ import { getNormalizedDataStreams } from '../../../../../../common/services'; import { installIndexTemplatesAndPipelines } from '../../install_index_template_pipeline'; import type { InstallContext } from '../_state_machine_package_install'; +import { withPackageSpan } from '../../utils'; export async function stepInstallIndexTemplatePipelines(context: InstallContext) { const { esClient, savedObjectsClient, packageInstallContext, logger, installedPkg } = context; @@ -20,15 +21,18 @@ export async function stepInstallIndexTemplatePipelines(context: InstallContext) logger.debug( `Package install - Installing index templates and pipelines, packageInfo.type: ${packageInfo.type}` ); - const { installedTemplates, esReferences: templateEsReferences } = - await installIndexTemplatesAndPipelines({ - installedPkg: installedPkg ? installedPkg.attributes : undefined, - packageInstallContext, - esClient, - savedObjectsClient, - logger, - esReferences, - }); + const { installedTemplates, esReferences: templateEsReferences } = await withPackageSpan( + 'Install index templates and pipelines with packageInfo integration', + () => + installIndexTemplatesAndPipelines({ + installedPkg: installedPkg ? installedPkg.attributes : undefined, + packageInstallContext, + esClient, + savedObjectsClient, + logger, + esReferences, + }) + ); return { esReferences: templateEsReferences, indexTemplates: installedTemplates, @@ -50,16 +54,19 @@ export async function stepInstallIndexTemplatePipelines(context: InstallContext) ); if (dataStreams.length) { - const { installedTemplates, esReferences: templateEsReferences } = - await installIndexTemplatesAndPipelines({ - installedPkg: installedPkg ? installedPkg.attributes : undefined, - packageInstallContext, - esClient, - savedObjectsClient, - logger, - esReferences, - onlyForDataStreams: dataStreams, - }); + const { installedTemplates, esReferences: templateEsReferences } = await withPackageSpan( + 'Install index templates and pipelines with packageInfo input', + () => + installIndexTemplatesAndPipelines({ + installedPkg: installedPkg ? installedPkg.attributes : undefined, + packageInstallContext, + esClient, + savedObjectsClient, + logger, + esReferences, + onlyForDataStreams: dataStreams, + }) + ); return { esReferences: templateEsReferences, indexTemplates: installedTemplates }; } } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.ts index 0c70989a67096a..b93197af5e521b 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/step_remove_legacy_templates.ts @@ -8,12 +8,15 @@ import { removeLegacyTemplates } from '../../../elasticsearch/template/remove_legacy'; import type { InstallContext } from '../_state_machine_package_install'; +import { withPackageSpan } from '../../utils'; export async function stepRemoveLegacyTemplates(context: InstallContext) { const { esClient, packageInstallContext, logger } = context; const { packageInfo } = packageInstallContext; try { - await removeLegacyTemplates({ packageInfo, esClient, logger }); + await withPackageSpan('Remove legacy templates', () => + removeLegacyTemplates({ packageInfo, esClient, logger }) + ); } catch (e) { logger.warn(`Error removing legacy templates: ${e.message}`); } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.ts index 55d7997ad58f7b..39b2492d77994c 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_state_machine/steps/update_latest_executed_state.ts @@ -12,6 +12,7 @@ import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../constants'; import { auditLoggingService } from '../../../../audit_logging'; import type { InstallContext } from '../_state_machine_package_install'; +import { withPackageSpan } from '../../utils'; // Function invoked after each transition export const updateLatestExecutedState = async (context: InstallContext) => { @@ -28,9 +29,11 @@ export const updateLatestExecutedState = async (context: InstallContext) => { id: pkgName, savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, }); - return await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - latest_executed_state: latestExecutedState, - }); + return await withPackageSpan('Update latest executed state', () => + savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { + latest_executed_state: latestExecutedState, + }) + ); } catch (err) { if (!SavedObjectsErrorHelpers.isNotFoundError(err)) { logger.error(`Failed to update SO with latest executed state: ${err}`); From 24de5e499c7bdc1239b0fec5c0a2a32a65c93e42 Mon Sep 17 00:00:00 2001 From: "Eyo O. Eyo" <7893459+eokoneyo@users.noreply.github.com> Date: Tue, 9 Apr 2024 13:22:56 +0200 Subject: [PATCH 19/75] Open panel title edit flyout only when panel title is clicked (#180137) ## Summary Closes https://github.com/elastic/kibana/issues/104224 This PR resolves this issue by listening on the events triggered that typically lead up to a click so that when a panel is dragged with the panel title area being the target for the drag action, the click the hander that triggers the panel title edit is not invoked. This is also combined with listening in on keyboard `keydown` event to cater for interactions that aren't happening with a pointer to provide the illusion of a click. ## Visuals ![ScreenRecording2024-04-05at13 02 25-ezgif com-video-to-gif-converter](https://github.com/elastic/kibana/assets/7893459/7858a173-c842-47ad-af6b-47966c363acf) --- .../presentation_panel_title.test.tsx | 51 +++++++++++ .../panel_header/presentation_panel_title.tsx | 85 +++++++++++++++++-- 2 files changed, 128 insertions(+), 8 deletions(-) create mode 100644 src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.test.tsx diff --git a/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.test.tsx b/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.test.tsx new file mode 100644 index 00000000000000..da9b39d97b7bfc --- /dev/null +++ b/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.test.tsx @@ -0,0 +1,51 @@ +/* + * 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 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 or the Server + * Side Public License, v 1. + */ + +import React, { useEffect, useState } from 'react'; +import { render, screen, fireEvent } from '@testing-library/react'; +import { renderHook } from '@testing-library/react-hooks'; +import { usePresentationPanelTitleClickHandler } from './presentation_panel_title'; + +describe('usePresentationPanelTitleClickHandler', () => { + it('returns null when there is no element to attach listeners to', () => { + const { result } = renderHook(usePresentationPanelTitleClickHandler); + + expect(result.current).toBe(null); + }); + + it('calls the click subscribe handler when the enter button is clicked on the provided element', async () => { + const mockedClickHandler = jest.fn(); + + const TestComponent = ({ onClickHandler }: { onClickHandler: () => void }) => { + const [$elm, setElm] = useState(null); + const onClick$ = usePresentationPanelTitleClickHandler($elm); + + useEffect(() => { + const subscription = onClick$?.subscribe(onClickHandler); + + return () => subscription?.unsubscribe(); + }, [onClick$, onClickHandler]); + + return ( +
+ Hello World +
+ ); + }; + + render(); + + fireEvent.keyDown(await screen.findByTestId('syntheticClick'), { + key: 'Enter', + code: 'Enter', + charCode: 13, + }); + + expect(mockedClickHandler).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.tsx b/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.tsx index 5e277e5194f877..33c85d247a0df7 100644 --- a/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.tsx +++ b/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_title.tsx @@ -8,7 +8,20 @@ import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; import classNames from 'classnames'; -import React, { useMemo } from 'react'; +import { once } from 'lodash'; +import React, { useMemo, useEffect, useRef, useState } from 'react'; +import { + type Observable, + fromEvent, + map, + race, + mergeMap, + takeUntil, + takeLast, + takeWhile, + defaultIfEmpty, + repeatWhen, +} from 'rxjs'; import { ViewMode } from '@kbn/presentation-publishing'; import { getEditTitleAriaLabel, placeholderTitle } from '../presentation_panel_strings'; @@ -18,6 +31,51 @@ import { } from '../../panel_actions/customize_panel_action'; import { openCustomizePanelFlyout } from '../../panel_actions/customize_panel_action/open_customize_panel'; +const createDocumentMouseMoveListener = once(() => fromEvent(document, 'mousemove')); +const createDocumentMouseUpListener = once(() => fromEvent(document, 'mouseup')); + +export const usePresentationPanelTitleClickHandler = (titleElmRef: HTMLElement | null) => { + const onClick = useRef | null>(null); + const [initialized, setInitialized] = useState(false); + + useEffect(() => { + if (titleElmRef) { + const mouseup = createDocumentMouseUpListener(); + const mousemove = createDocumentMouseMoveListener(); + const mousedown = fromEvent(titleElmRef, 'mousedown'); + const keydown = fromEvent(titleElmRef, 'keydown'); + + const mousedragExclusiveClick$ = mousedown + .pipe( + mergeMap(function (md) { + // create reference for when mouse is down + const startX = md.offsetX; + const startY = md.offsetY; + + return mousemove + .pipe( + map(function (mm) { + return { dragged: startX !== mm.clientX && startY !== mm.clientY }; + }) + ) + .pipe(takeUntil(mouseup), takeLast(1)) + .pipe(defaultIfEmpty({ dragged: false })); + }) + ) + .pipe(repeatWhen(() => mousedown)); + + onClick.current = race( + keydown.pipe(takeWhile((kd) => kd.key === 'Enter')).pipe(map(() => ({ dragged: false }))), + mousedragExclusiveClick$ + ); + + setInitialized(true); + } + }, [titleElmRef]); + + return initialized ? onClick.current : null; +}; + export const PresentationPanelTitle = ({ api, viewMode, @@ -31,6 +89,7 @@ export const PresentationPanelTitle = ({ panelDescription?: string; viewMode?: ViewMode; }) => { + const [panelTitleElmRef, setPanelTitleElmRef] = useState(null); const panelTitleElement = useMemo(() => { if (hideTitle) return null; const titleClassNames = classNames('embPanel__titleText', { @@ -45,20 +104,30 @@ export const PresentationPanelTitle = ({ return ( - openCustomizePanelFlyout({ - api: api as CustomizePanelActionApi, - focusOnTitle: true, - }) - } > {panelTitle || placeholderTitle} ); - }, [hideTitle, panelTitle, viewMode, api]); + }, [setPanelTitleElmRef, hideTitle, panelTitle, viewMode, api]); + + const onClick = usePresentationPanelTitleClickHandler(panelTitleElmRef); + + useEffect(() => { + const panelTitleClickSubscription = onClick?.subscribe(function onClickHandler({ dragged }) { + if (!dragged) { + openCustomizePanelFlyout({ + api: api as CustomizePanelActionApi, + focusOnTitle: true, + }); + } + }); + + return () => panelTitleClickSubscription?.unsubscribe(); + }, [api, onClick]); const describedPanelTitleElement = useMemo(() => { if (!panelDescription) { From 6348ab3275c0d1fd79219f62795c73af8e2a4333 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Tue, 9 Apr 2024 08:42:45 -0400 Subject: [PATCH 20/75] [Security Solution][Endpoint] Adds logic for checking and completing Sentinelone `isolate` and `release` actions (#179013) ## Summary Adds checks for `isolate` and `release` response action for SentinelOne to see if they have completed. Changes include: - `isolate` and `release` are no longer marked "complete" once request is sent to SentinelOne. They are kept in `pending` state - Added logic to the SentinelOne Response Actions client to use the activity data from SentinelOne (index `logs-sentinel_one.activity-default`) and check if `isolate` and `release` action were complete - logic is invoked from the background task, which is not yet fully enabled - Note that the data in the SentinelOne index may be delayed. The frequency of how often that data is pulled in is defined via the SentinelOne Integration - Enhanced the SentinelOne host script so that it also automatically generates a SentinelOne alert when the host VM running the SentinelOne agent is created - Refactor: Moved`server/endpoint/mocks.ts` file to its own directory (`server/endpoint/mocks/**`) - File is getting to large... having it in a directory will allows us to break this file down into smaller pieces while still exporting out of `server/endpoint/mocks` path. - Added new `utils.mock.ts` that includes 1 new generic utilty - `applyEsClientSearchMock()` --- .../endpoint_action_generator.ts | 64 ++-- .../sentinelone_data_generator.ts | 82 ++++ .../service/response_actions/sentinel_one.ts | 11 + .../common/endpoint/types/index.ts | 1 + .../common/endpoint/types/sentinel_one.ts | 55 +++ .../plugins/security_solution/common/index.ts | 1 + .../endpoint/sentinelone_host/index.ts | 7 +- .../server/endpoint/mocks/index.ts | 8 + .../server/endpoint/{ => mocks}/mocks.ts | 37 +- .../server/endpoint/mocks/utils.mock.ts | 94 +++++ .../lib/base_response_actions_client.test.ts | 44 ++- .../lib/base_response_actions_client.ts | 50 ++- .../sentinel_one_actions_client.test.ts | 275 +++++++++++-- .../sentinel_one_actions_client.ts | 360 +++++++++++++++--- .../server/endpoint/services/actions/mocks.ts | 33 +- .../server/endpoint/utils/queue_processor.ts | 6 +- 16 files changed, 956 insertions(+), 172 deletions(-) create mode 100644 x-pack/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts create mode 100644 x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts create mode 100644 x-pack/plugins/security_solution/common/endpoint/types/sentinel_one.ts create mode 100644 x-pack/plugins/security_solution/server/endpoint/mocks/index.ts rename x-pack/plugins/security_solution/server/endpoint/{ => mocks}/mocks.ts (90%) create mode 100644 x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts index f3f9bde438d681..83976ff215e82a 100644 --- a/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/endpoint_action_generator.ts @@ -38,39 +38,47 @@ import { getFileDownloadId } from '../service/response_actions/get_file_download export class EndpointActionGenerator extends BaseDataGenerator { /** Generate a random endpoint Action request (isolate or unisolate) */ - generate(overrides: DeepPartial = {}): LogsEndpointAction { + generate< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} + >( + overrides: DeepPartial> = {} + ): LogsEndpointAction { const timeStamp = overrides['@timestamp'] ? new Date(overrides['@timestamp']) : new Date(); - - return merge( - { - '@timestamp': timeStamp.toISOString(), - agent: { - id: [this.seededUUIDv4()], - }, - EndpointActions: { - action_id: this.seededUUIDv4(), - expiration: this.randomFutureDate(timeStamp), - type: 'INPUT_ACTION', - input_type: 'endpoint', - data: { - command: this.randomResponseActionCommand(), - comment: this.randomString(15), - parameters: undefined, - }, - }, - error: undefined, - user: { - id: this.randomUser(), + const doc: LogsEndpointAction = { + '@timestamp': timeStamp.toISOString(), + agent: { + id: [this.seededUUIDv4()], + }, + EndpointActions: { + action_id: this.seededUUIDv4(), + expiration: this.randomFutureDate(timeStamp), + type: 'INPUT_ACTION', + input_type: 'endpoint', + data: { + command: this.randomResponseActionCommand(), + comment: this.randomString(15), + parameters: undefined, }, - rule: undefined, }, - overrides - ); + error: undefined, + user: { + id: this.randomUser(), + }, + rule: undefined, + }; + + return merge(doc, overrides); } - generateActionEsHit( - overrides: DeepPartial = {} - ): estypes.SearchHit { + generateActionEsHit< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} + >( + overrides: DeepPartial> = {} + ): estypes.SearchHit> { return Object.assign(this.toEsSearchHit(this.generate(overrides)), { _index: `.ds-${ENDPOINT_ACTIONS_DS}-some_namespace`, }); diff --git a/x-pack/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts b/x-pack/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts new file mode 100644 index 00000000000000..54862b4a51549b --- /dev/null +++ b/x-pack/plugins/security_solution/common/endpoint/data_generators/sentinelone_data_generator.ts @@ -0,0 +1,82 @@ +/* + * 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. + */ + +import type { DeepPartial } from 'utility-types'; +import { merge } from 'lodash'; +import type { SearchResponse, SearchHit } from '@elastic/elasticsearch/lib/api/types'; +import { EndpointActionGenerator } from './endpoint_action_generator'; +import { SENTINEL_ONE_ACTIVITY_INDEX } from '../..'; +import type { + LogsEndpointAction, + SentinelOneActivityEsDoc, + EndpointActionDataParameterTypes, + EndpointActionResponseDataOutput, +} from '../types'; + +export class SentinelOneDataGenerator extends EndpointActionGenerator { + generate< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} + >( + overrides: DeepPartial> = {} + ): LogsEndpointAction { + return super.generate({ + EndpointActions: { + input_type: 'sentinel_one', + }, + ...overrides, + }) as LogsEndpointAction; + } + + /** Generate a SentinelOne activity index ES doc */ + generateActivityEsDoc( + overrides: DeepPartial = {} + ): SentinelOneActivityEsDoc { + const doc: SentinelOneActivityEsDoc = { + sentinel_one: { + activity: { + agent: { + id: this.seededUUIDv4(), + }, + updated_at: '2024-03-29T13:45:21.723Z', + description: { + primary: 'Some description here', + }, + id: this.seededUUIDv4(), + type: 1001, + }, + }, + }; + + return merge(doc, overrides); + } + + generateActivityEsSearchHit( + overrides: DeepPartial = {} + ): SearchHit { + const hit = this.toEsSearchHit( + this.generateActivityEsDoc(overrides), + SENTINEL_ONE_ACTIVITY_INDEX + ); + + hit.inner_hits = { + first_found: { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + hits: { hits: [this.toEsSearchHit(hit._source!, hit._index)] }, + }, + }; + + return hit; + } + + generateActivityEsSearchResponse( + docs: Array> = [this.generateActivityEsSearchHit()] + ): SearchResponse { + return this.toEsSearchResponse(docs); + } +} diff --git a/x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts b/x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts new file mode 100644 index 00000000000000..761e1de67cd280 --- /dev/null +++ b/x-pack/plugins/security_solution/common/endpoint/service/response_actions/sentinel_one.ts @@ -0,0 +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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Index name where the SentinelOne activity log is written to by the SentinelOne integration + */ +export const SENTINEL_ONE_ACTIVITY_INDEX = 'logs-sentinel_one.activity-default'; diff --git a/x-pack/plugins/security_solution/common/endpoint/types/index.ts b/x-pack/plugins/security_solution/common/endpoint/types/index.ts index 68867e92d72940..9fc98799db9620 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/index.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/index.ts @@ -14,6 +14,7 @@ export * from './os'; export * from './trusted_apps'; export * from './utility_types'; export * from './agents'; +export * from './sentinel_one'; export type { ConditionEntriesMap, ConditionEntry } from './exception_list_items'; /** diff --git a/x-pack/plugins/security_solution/common/endpoint/types/sentinel_one.ts b/x-pack/plugins/security_solution/common/endpoint/types/sentinel_one.ts new file mode 100644 index 00000000000000..447fc6d037a2b9 --- /dev/null +++ b/x-pack/plugins/security_solution/common/endpoint/types/sentinel_one.ts @@ -0,0 +1,55 @@ +/* + * 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. + */ + +/** + * The `activity` document ingested from SentinelOne via the integration + * + * NOTE: not all properties are currently mapped below. Check the index definition if wanting to + * see what else is available and add it bellow if needed + */ +export interface SentinelOneActivityEsDoc { + sentinel_one: { + activity: { + agent: { + /** This is the internal ID of the host in sentinelOne (NOT the agent's UUID) */ + id: string; + }; + updated_at: string; + description: { + primary: string; + secondary?: string; + }; + id: string; + /** The activity type. Valid values can be retrieved from S1 via API: `/web/api/v2.1/activities/types` */ + type: number; + }; + }; +} + +export interface SentinelOneActionRequestCommonMeta { + /** The S1 agent id */ + agentId: string; + /** The S1 agent assigned UUID */ + agentUUID: string; + /** The host name */ + hostName: string; +} + +/** Metadata capture for the isolation actions (`isolate` and `release`) */ +export type SentinelOneIsolationRequestMeta = SentinelOneActionRequestCommonMeta; + +/** Metadata captured when creating the isolation response document in ES for both `isolate` and `release` */ +export interface SentinelOneIsolationResponseMeta { + /** The document ID in the Elasticsearch S1 activity index that was used to complete the response action */ + elasticDocId: string; + /** The SentinelOne activity log entry ID */ + activityLogEntryId: string; + /** The SentinelOne activity log entry type */ + activityLogEntryType: number; + /** The SentinelOne activity log primary description */ + activityLogEntryDescription: string; +} diff --git a/x-pack/plugins/security_solution/common/index.ts b/x-pack/plugins/security_solution/common/index.ts index 24181c66f74446..46dfd562ee8a67 100644 --- a/x-pack/plugins/security_solution/common/index.ts +++ b/x-pack/plugins/security_solution/common/index.ts @@ -22,6 +22,7 @@ export { export { ELASTIC_SECURITY_RULE_ID } from './detection_engine/constants'; export { ENABLED_FIELD } from './detection_engine/rule_management/rule_fields'; export { allowedExperimentalValues, type ExperimentalFeatures } from './experimental_features'; +export { SENTINEL_ONE_ACTIVITY_INDEX } from './endpoint/service/response_actions/sentinel_one'; // Careful of exporting anything from this file as any file(s) you export here will cause your page bundle size to increase. // If you're using functions/types/etc... internally it's best to import directly from their paths than expose the functions/types/etc... here. diff --git a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts index 2811fe9e57d099..1d59f4d9cfef00 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/sentinelone_host/index.ts @@ -121,7 +121,7 @@ const runCli: RunFn = async ({ log, flags }) => { ).data; // Avoid enrolling another VM with SentinelOne if we already have one running - const hostVm = + const s1HostVm = forceNewS1Host || runningS1VMs.length === 0 ? await createVm({ type: 'multipass', @@ -204,9 +204,12 @@ const runCli: RunFn = async ({ log, flags }) => { createDetectionEngineSentinelOneRuleIfNeeded(kbnClient, log), ]); + // Trigger an alert on the SentinelOn host so that we get an alert back in Kibana + await s1HostVm.exec('nslookup elastic.co'); + log.info(`Done! -${hostVm.info()} +${s1HostVm.info()} ${agentPolicyVm ? `${agentPolicyVm.info()}\n` : ''} ${await getMultipassVmCountNotice(2)} `); diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks/index.ts b/x-pack/plugins/security_solution/server/endpoint/mocks/index.ts new file mode 100644 index 00000000000000..599c6328855e56 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/mocks/index.ts @@ -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. + */ + +export * from './mocks'; diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/mocks/mocks.ts similarity index 90% rename from x-pack/plugins/security_solution/server/endpoint/mocks.ts rename to x-pack/plugins/security_solution/server/endpoint/mocks/mocks.ts index f3d39737a7cf2c..1fbfeef9382e58 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks/mocks.ts @@ -48,32 +48,31 @@ import { createCasesClientMock } from '@kbn/cases-plugin/server/client/mocks'; import type { AddVersionOpts, VersionedRouteConfig } from '@kbn/core-http-server'; import { unsecuredActionsClientMock } from '@kbn/actions-plugin/server/unsecured_actions_client/unsecured_actions_client.mock'; import type { PluginStartContract } from '@kbn/actions-plugin/server'; -import { responseActionsClientMock } from './services/actions/clients/mocks'; -import { getEndpointAuthzInitialStateMock } from '../../common/endpoint/service/authz/mocks'; -import { createMockConfig, requestContextMock } from '../lib/detection_engine/routes/__mocks__'; +import { responseActionsClientMock } from '../services/actions/clients/mocks'; +import { getEndpointAuthzInitialStateMock } from '../../../common/endpoint/service/authz/mocks'; +import { createMockConfig, requestContextMock } from '../../lib/detection_engine/routes/__mocks__'; import type { EndpointAppContextService, EndpointAppContextServiceSetupContract, EndpointAppContextServiceStartContract, -} from './endpoint_app_context_services'; -import type { ManifestManager } from './services/artifacts/manifest_manager/manifest_manager'; -import { getManifestManagerMock } from './services/artifacts/manifest_manager/manifest_manager.mock'; -import type { EndpointAppContext } from './types'; +} from '../endpoint_app_context_services'; +import type { ManifestManager } from '../services/artifacts/manifest_manager/manifest_manager'; +import { getManifestManagerMock } from '../services/artifacts/manifest_manager/manifest_manager.mock'; +import type { EndpointAppContext } from '../types'; import { allowedExperimentalValues, parseExperimentalConfigValue, -} from '../../common/experimental_features'; -import { requestContextFactoryMock } from '../request_context_factory.mock'; -import { EndpointMetadataService } from './services/metadata'; -import type { SecuritySolutionRequestHandlerContextMock } from '../lib/detection_engine/routes/__mocks__/request_context'; -import { createMockClients } from '../lib/detection_engine/routes/__mocks__/request_context'; -import { createEndpointMetadataServiceTestContextMock } from './services/metadata/mocks'; - -import type { EndpointAuthz } from '../../common/endpoint/types/authz'; -import { EndpointFleetServicesFactory } from './services/fleet'; -import { createLicenseServiceMock } from '../../common/license/mocks'; -import { createFeatureUsageServiceMock } from './services/feature_usage/mocks'; -import { createProductFeaturesServiceMock } from '../lib/product_features_service/mocks'; +} from '../../../common/experimental_features'; +import { requestContextFactoryMock } from '../../request_context_factory.mock'; +import { EndpointMetadataService } from '../services/metadata'; +import type { SecuritySolutionRequestHandlerContextMock } from '../../lib/detection_engine/routes/__mocks__/request_context'; +import { createMockClients } from '../../lib/detection_engine/routes/__mocks__/request_context'; +import { createEndpointMetadataServiceTestContextMock } from '../services/metadata/mocks'; +import type { EndpointAuthz } from '../../../common/endpoint/types/authz'; +import { EndpointFleetServicesFactory } from '../services/fleet'; +import { createLicenseServiceMock } from '../../../common/license/mocks'; +import { createFeatureUsageServiceMock } from '../services/feature_usage/mocks'; +import { createProductFeaturesServiceMock } from '../../lib/product_features_service/mocks'; /** * Creates a mocked EndpointAppContext. */ diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts b/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts new file mode 100644 index 00000000000000..e4de97523a84a4 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts @@ -0,0 +1,94 @@ +/* + * 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. + */ + +import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; +import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import { v4 as uuidV4 } from 'uuid'; +import { BaseDataGenerator } from '../../../common/endpoint/data_generators/base_data_generator'; + +interface ApplyEsClientSearchMockOptions { + esClientMock: ElasticsearchClientMock; + index: string; + response: SearchResponse; + /** + * Mock is to be used only when search is using ES's Point-in-Time + */ + pitUsage?: boolean; +} + +/** + * Generic utility for applying mocks to ES Client mock search method. Any existing mock implementation + * for the `.search()` method will be called if the mock being applied does not match the target + * index, thus this utility can be chained on top of other already applied mock implementations. + * + * This utility also handles search requests using Point In Time. + */ +export const applyEsClientSearchMock = ({ + esClientMock, + index, + response, + pitUsage, +}: ApplyEsClientSearchMockOptions) => { + const priorSearchMockImplementation = esClientMock.search.getMockImplementation(); + const priorOpenPointInTimeImplementation = esClientMock.openPointInTime.getMockImplementation(); + const priorClosePointInTimeImplementation = esClientMock.closePointInTime.getMockImplementation(); + const openedPitIds = new Set(); + + esClientMock.openPointInTime.mockImplementation(async (...args) => { + const options = args[0]; + + if (options.index === index) { + const pitResponse = { id: `mock:pit:${index}:${uuidV4()}` }; + openedPitIds.add(pitResponse.id); + + return pitResponse; + } + + if (priorOpenPointInTimeImplementation) { + return priorOpenPointInTimeImplementation(...args); + } + + return { id: 'mock' }; + }); + + esClientMock.closePointInTime.mockImplementation(async (...args) => { + const closePitResponse = { succeeded: true, num_freed: 1 }; + const options = args[0]; + const pitId = 'id' in options ? options.id : 'body' in options ? options.body?.id : undefined; + + if (pitId) { + if (openedPitIds.has(pitId)) { + openedPitIds.delete(pitId); + return closePitResponse; + } + } + + if (priorClosePointInTimeImplementation) { + return priorClosePointInTimeImplementation(options); + } + + return closePitResponse; + }); + + esClientMock.search.mockImplementation(async (...args) => { + const params = args[0] ?? {}; + const searchReqIndexes = Array.isArray(params.index) ? params.index : [params.index]; + const pit = 'pit' in params ? params.pit : undefined; + + if (params.index && !pitUsage && searchReqIndexes.includes(index)) { + return response; + } else if (pit && pitUsage && openedPitIds.has(pit.id)) { + return response; + } + + if (priorSearchMockImplementation) { + return priorSearchMockImplementation(...args); + } + + return BaseDataGenerator.toEsSearchResponse([]); + }); +}; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts index cb08cd6cfc30a7..a41e651ee34494 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts @@ -460,6 +460,30 @@ describe('ResponseActionsClientImpl base class', () => { }); describe('#riteActionRequestToEndpointIndex()', () => { + it('should write doc with all expected data', async () => { + indexDocOptions.meta = { one: 1 }; + + await expect( + baseClassMock.writeActionRequestToEndpointIndex(indexDocOptions) + ).resolves.toEqual({ + '@timestamp': expect.any(String), + EndpointActions: { + action_id: expect.any(String), + data: { + command: 'isolate', + comment: 'test comment', + parameters: undefined, + }, + expiration: expect.any(String), + input_type: 'endpoint', + type: 'INPUT_ACTION', + }, + agent: { id: ['one'] }, + meta: { one: 1 }, + user: { id: 'foo' }, + }); + }); + it('should write doc with error when license is not Enterprise', async () => { ( constructorOptions.endpointService.getLicenseService().isEnterprise as jest.Mock @@ -514,6 +538,7 @@ describe('ResponseActionsClientImpl base class', () => { comment: 'some comment', output: undefined, }, + meta: { one: 1 }, }; }); @@ -539,6 +564,7 @@ describe('ResponseActionsClientImpl base class', () => { error: { message: 'test error', }, + meta: { one: 1 }, } as LogsEndpointActionResponse); }); @@ -677,10 +703,20 @@ class MockClassWithExposedProtectedMembers extends ResponseActionsClientImpl { return super.fetchActionDetails(actionId); } - public async writeActionRequestToEndpointIndex( - actionRequest: ResponseActionsClientWriteActionRequestToEndpointIndexOptions - ): Promise { - return super.writeActionRequestToEndpointIndex(actionRequest); + public async writeActionRequestToEndpointIndex< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} + >( + actionRequest: ResponseActionsClientWriteActionRequestToEndpointIndexOptions< + TParameters, + TOutputContent, + TMeta + > + ): Promise> { + return super.writeActionRequestToEndpointIndex( + actionRequest + ); } public async writeActionResponseToEndpointIndex< diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts index 5df10794680631..c784c5e5eef5bb 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts @@ -111,19 +111,24 @@ export interface ResponseActionsClientUpdateCasesOptions { actionId: string; } -export type ResponseActionsClientWriteActionRequestToEndpointIndexOptions = - ResponseActionsRequestBody & - Pick & { - command: ResponseActionsApiCommandNames; - actionId?: string; - }; +export type ResponseActionsClientWriteActionRequestToEndpointIndexOptions< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} +> = ResponseActionsRequestBody & + Pick & + Pick, 'meta'> & { + command: ResponseActionsApiCommandNames; + actionId?: string; + }; export type ResponseActionsClientWriteActionResponseToEndpointIndexOptions< - TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} > = { agentId: LogsEndpointActionResponse['agent']['id']; actionId: string; -} & Pick & +} & Pick, 'error' | 'meta'> & Pick['EndpointActions'], 'data'>; export type ResponseActionsClientValidateRequestResponse = @@ -327,9 +332,17 @@ export abstract class ResponseActionsClientImpl implements ResponseActionsClient * Creates a Response Action request document in the Endpoint index (`.logs-endpoint.actions-default`) * @protected */ - protected async writeActionRequestToEndpointIndex( - actionRequest: ResponseActionsClientWriteActionRequestToEndpointIndexOptions - ): Promise { + protected async writeActionRequestToEndpointIndex< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} + >( + actionRequest: ResponseActionsClientWriteActionRequestToEndpointIndexOptions< + TParameters, + TOutputContent, + TMeta + > + ): Promise> { let errorMsg = String(actionRequest.error ?? '').trim(); if (!errorMsg) { @@ -346,7 +359,7 @@ export abstract class ResponseActionsClientImpl implements ResponseActionsClient this.notifyUsage(actionRequest.command); - const doc: LogsEndpointAction = { + const doc: LogsEndpointAction = { '@timestamp': new Date().toISOString(), agent: { id: actionRequest.endpoint_ids, @@ -367,6 +380,7 @@ export abstract class ResponseActionsClientImpl implements ResponseActionsClient user: { id: this.options.username, }, + meta: actionRequest.meta, ...(errorMsg ? { error: { message: errorMsg } } : {}), ...(actionRequest.ruleId && actionRequest.ruleName ? { rule: { id: actionRequest.ruleId, name: actionRequest.ruleName } } @@ -407,15 +421,20 @@ export abstract class ResponseActionsClientImpl implements ResponseActionsClient protected buildActionResponseEsDoc< // Default type purposely set to empty object in order to ensure proper types are used when calling the method - TOutputContent extends EndpointActionResponseDataOutput = Record + TOutputContent extends EndpointActionResponseDataOutput = Record, + TMeta extends {} = {} >({ actionId, error, agentId, data, - }: ResponseActionsClientWriteActionResponseToEndpointIndexOptions): LogsEndpointActionResponse { + meta, + }: ResponseActionsClientWriteActionResponseToEndpointIndexOptions< + TOutputContent, + TMeta + >): LogsEndpointActionResponse { const timestamp = new Date().toISOString(); - const doc: LogsEndpointActionResponse = { + const doc: LogsEndpointActionResponse = { '@timestamp': timestamp, agent: { id: agentId, @@ -428,6 +447,7 @@ export abstract class ResponseActionsClientImpl implements ResponseActionsClient data, }, error, + meta, }; return doc; diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts index b19242e60340b9..a0a585b12f7ecf 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ResponseActionsClient } from '../lib/types'; +import type { ResponseActionsClient, ProcessPendingActionsMethodOptions } from '../lib/types'; import { responseActionsClientMock } from '../mocks'; import { SentinelOneActionsClient } from './sentinel_one_actions_client'; import { getActionDetailsById as _getActionDetailsById } from '../../action_details_by_id'; @@ -13,10 +13,21 @@ import { ResponseActionsNotSupportedError } from '../errors'; import type { SentinelOneActionsClientOptionsMock } from './mocks'; import { sentinelOneMock } from './mocks'; import { - ENDPOINT_ACTION_RESPONSES_INDEX, + ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, ENDPOINT_ACTIONS_INDEX, } from '../../../../../../common/endpoint/constants'; import type { NormalizedExternalConnectorClient } from '../../..'; +import { applyEsClientSearchMock } from '../../../../mocks/utils.mock'; +import { SENTINEL_ONE_ACTIVITY_INDEX } from '../../../../../../common'; +import { SentinelOneDataGenerator } from '../../../../../../common/endpoint/data_generators/sentinelone_data_generator'; +import type { + EndpointActionResponse, + LogsEndpointAction, + LogsEndpointActionResponse, + SentinelOneActivityEsDoc, + SentinelOneIsolationRequestMeta, +} from '../../../../../../common/endpoint/types'; +import type { SearchHit } from '@elastic/elasticsearch/lib/api/types'; jest.mock('../../action_details_by_id', () => { const originalMod = jest.requireActual('../../action_details_by_id'); @@ -91,7 +102,7 @@ describe('SentinelOneActionsClient class', () => { it('should write action request and response to endpoint indexes', async () => { await s1ActionsClient.isolate(createS1IsolationOptions()); - expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(2); + expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(1); expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith( 1, { @@ -115,28 +126,17 @@ describe('SentinelOneActionsClient class', () => { }, agent: { id: ['1-2-3'] }, user: { id: 'foo' }, + meta: { + agentId: '1845174760470303882', + agentUUID: '1-2-3', + hostName: 'sentinelone-1460', + }, }, index: ENDPOINT_ACTIONS_INDEX, refresh: 'wait_for', }, { meta: true } ); - expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith(2, { - document: { - '@timestamp': expect.any(String), - EndpointActions: { - action_id: expect.any(String), - data: { command: 'isolate' }, - input_type: 'sentinel_one', - started_at: expect.any(String), - completed_at: expect.any(String), - }, - agent: { id: ['1-2-3'] }, - error: undefined, - }, - index: ENDPOINT_ACTION_RESPONSES_INDEX, - refresh: 'wait_for', - }); }); it('should return action details', async () => { @@ -173,7 +173,7 @@ describe('SentinelOneActionsClient class', () => { it('should write action request and response to endpoint indexes', async () => { await s1ActionsClient.release(createS1IsolationOptions()); - expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(2); + expect(classConstructorOptions.esClient.index).toHaveBeenCalledTimes(1); expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith( 1, { @@ -197,28 +197,17 @@ describe('SentinelOneActionsClient class', () => { }, agent: { id: ['1-2-3'] }, user: { id: 'foo' }, + meta: { + agentId: '1845174760470303882', + agentUUID: '1-2-3', + hostName: 'sentinelone-1460', + }, }, index: ENDPOINT_ACTIONS_INDEX, refresh: 'wait_for', }, { meta: true } ); - expect(classConstructorOptions.esClient.index).toHaveBeenNthCalledWith(2, { - document: { - '@timestamp': expect.any(String), - EndpointActions: { - action_id: expect.any(String), - data: { command: 'unisolate' }, - input_type: 'sentinel_one', - started_at: expect.any(String), - completed_at: expect.any(String), - }, - agent: { id: ['1-2-3'] }, - error: undefined, - }, - index: ENDPOINT_ACTION_RESPONSES_INDEX, - refresh: 'wait_for', - }); }); it('should return action details', async () => { @@ -237,4 +226,218 @@ describe('SentinelOneActionsClient class', () => { expect(classConstructorOptions.casesClient?.attachments.bulkCreate).toHaveBeenCalled(); }); }); + + describe('#processPendingActions()', () => { + let abortController: AbortController; + let processPendingActionsOptions: ProcessPendingActionsMethodOptions; + + beforeEach(() => { + abortController = new AbortController(); + processPendingActionsOptions = { + abortSignal: abortController.signal, + addToQueue: jest.fn(), + }; + }); + + describe('for Isolate and Release', () => { + let actionRequestHits: Array< + SearchHit> + >; + let s1ActivityHits: Array>; + + beforeEach(() => { + const s1DataGenerator = new SentinelOneDataGenerator('seed'); + const actionRequestsSearchResponse = s1DataGenerator.toEsSearchResponse([ + s1DataGenerator.generateActionEsHit({ + agent: { id: 'agent-uuid-1' }, + EndpointActions: { data: { command: 'isolate' } }, + meta: { + agentId: 's1-agent-a', + agentUUID: 'agent-uuid-1', + hostName: 's1-host-name', + }, + }), + ]); + const actionResponsesSearchResponse = s1DataGenerator.toEsSearchResponse< + LogsEndpointActionResponse | EndpointActionResponse + >([]); + const s1ActivitySearchResponse = s1DataGenerator.generateActivityEsSearchResponse([ + s1DataGenerator.generateActivityEsSearchHit({ + sentinel_one: { + activity: { + agent: { + id: 's1-agent-a', + }, + type: 1001, + }, + }, + }), + ]); + + actionRequestHits = actionRequestsSearchResponse.hits.hits; + s1ActivityHits = s1ActivitySearchResponse.hits.hits; + + applyEsClientSearchMock({ + esClientMock: classConstructorOptions.esClient, + index: ENDPOINT_ACTIONS_INDEX, + response: actionRequestsSearchResponse, + pitUsage: true, + }); + + applyEsClientSearchMock({ + esClientMock: classConstructorOptions.esClient, + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + response: actionResponsesSearchResponse, + }); + + applyEsClientSearchMock({ + esClientMock: classConstructorOptions.esClient, + index: SENTINEL_ONE_ACTIVITY_INDEX, + response: s1ActivitySearchResponse, + }); + }); + + it('should generate action response docs for completed actions', async () => { + await s1ActionsClient.processPendingActions(processPendingActionsOptions); + + expect(processPendingActionsOptions.addToQueue).toHaveBeenCalledWith({ + '@timestamp': expect.any(String), + EndpointActions: { + action_id: '1d6e6796-b0af-496f-92b0-25fcb06db499', + completed_at: expect.any(String), + data: { + command: 'isolate', + }, + input_type: 'sentinel_one', + started_at: expect.any(String), + }, + agent: { + id: 'agent-uuid-1', + }, + error: undefined, + meta: { + activityLogEntryDescription: 'Some description here', + activityLogEntryId: 'd78282bc-e413-468d-9df6-570b91756a6d', + activityLogEntryType: 1001, + elasticDocId: '85f7f003-ebed-4157-b8e6-16ae44fc4be7', + }, + }); + }); + + it('should NOT generate action responses if no activity received from S1', async () => { + s1ActivityHits.length = 0; + await s1ActionsClient.processPendingActions(processPendingActionsOptions); + + expect(processPendingActionsOptions.addToQueue).not.toHaveBeenCalled(); + }); + + it('should complete action as failure S1 agent id meta is missing (edge case)', async () => { + actionRequestHits[0]!._source!.meta!.agentId = ''; + await s1ActionsClient.processPendingActions(processPendingActionsOptions); + + expect(processPendingActionsOptions.addToQueue).toHaveBeenCalledWith( + expect.objectContaining({ + error: { + message: + "Unable to very if action completed. SentinelOne agent id ('meta.agentId') missing on action request document!", + }, + }) + ); + }); + + it('should generate failed isolate response doc if S1 activity `type` is 2010', async () => { + s1ActivityHits[0]._source!.sentinel_one.activity.type = 2010; + s1ActivityHits[0]._source!.sentinel_one.activity.description.primary = + 'Agent SOME_HOST_NAME was unable to disconnect from network.'; + await s1ActionsClient.processPendingActions(processPendingActionsOptions); + + expect(processPendingActionsOptions.addToQueue).toHaveBeenCalledWith( + expect.objectContaining({ + error: { + message: 'Agent SOME_HOST_NAME was unable to disconnect from network.', + }, + }) + ); + }); + + it('should search SentinelOne activity ES index with expected query for isolate', async () => { + await s1ActionsClient.processPendingActions(processPendingActionsOptions); + + expect(classConstructorOptions.esClient.search).toHaveBeenNthCalledWith(4, { + _source: false, + collapse: { + field: 'sentinel_one.activity.agent.id', + inner_hits: { + name: 'first_found', + size: 1, + sort: [{ 'sentinel_one.activity.updated_at': 'asc' }], + }, + }, + index: SENTINEL_ONE_ACTIVITY_INDEX, + query: { + bool: { + minimum_should_match: 1, + must: [{ terms: { 'sentinel_one.activity.type': [1001, 2010] } }], + should: [ + { + bool: { + filter: [ + { term: { 'sentinel_one.activity.agent.id': 's1-agent-a' } }, + { + range: { + 'sentinel_one.activity.updated_at': { gt: expect.any(String) }, + }, + }, + ], + }, + }, + ], + }, + }, + size: 1000, + sort: [{ 'sentinel_one.activity.updated_at': { order: 'asc' } }], + }); + }); + + it('should search SentinelOne activity ES index with expected query for release', async () => { + actionRequestHits[0]._source!.EndpointActions.data.command = 'unisolate'; + await s1ActionsClient.processPendingActions(processPendingActionsOptions); + + expect(classConstructorOptions.esClient.search).toHaveBeenNthCalledWith(4, { + _source: false, + collapse: { + field: 'sentinel_one.activity.agent.id', + inner_hits: { + name: 'first_found', + size: 1, + sort: [{ 'sentinel_one.activity.updated_at': 'asc' }], + }, + }, + index: SENTINEL_ONE_ACTIVITY_INDEX, + query: { + bool: { + minimum_should_match: 1, + must: [{ terms: { 'sentinel_one.activity.type': [1002] } }], + should: [ + { + bool: { + filter: [ + { term: { 'sentinel_one.activity.agent.id': 's1-agent-a' } }, + { + range: { + 'sentinel_one.activity.updated_at': { gt: expect.any(String) }, + }, + }, + ], + }, + }, + ], + }, + }, + size: 1000, + sort: [{ 'sentinel_one.activity.updated_at': { order: 'asc' } }], + }); + }); + }); + }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts index e674caa69c7e63..cd013128c42cfa 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/clients/sentinelone/sentinel_one_actions_client.ts @@ -9,23 +9,44 @@ import { SENTINELONE_CONNECTOR_ID, SUB_ACTION, } from '@kbn/stack-connectors-plugin/common/sentinelone/constants'; +import { groupBy } from 'lodash'; import type { ActionTypeExecutorResult } from '@kbn/actions-plugin/common'; import type { SentinelOneGetAgentsParams, SentinelOneGetAgentsResponse, } from '@kbn/stack-connectors-plugin/common/sentinelone/types'; +import type { + QueryDslQueryContainer, + SearchHit, + SearchRequest, +} from '@elastic/elasticsearch/lib/api/types'; import type { NormalizedExternalConnectorClientExecuteOptions, NormalizedExternalConnectorClient, } from '../lib/normalized_external_connector_client'; +import { SENTINEL_ONE_ACTIVITY_INDEX } from '../../../../../../common'; +import { catchAndWrapError } from '../../../../utils'; import type { CommonResponseActionMethodOptions, ProcessPendingActionsMethodOptions, } from '../../..'; -import type { ResponseActionAgentType } from '../../../../../../common/endpoint/service/response_actions/constants'; +import type { + ResponseActionAgentType, + ResponseActionsApiCommandNames, +} from '../../../../../../common/endpoint/service/response_actions/constants'; import { stringify } from '../../../../utils/stringify'; import { ResponseActionsClientError } from '../errors'; -import type { ActionDetails, LogsEndpointAction } from '../../../../../../common/endpoint/types'; +import type { + ActionDetails, + EndpointActionDataParameterTypes, + EndpointActionResponseDataOutput, + LogsEndpointAction, + LogsEndpointActionResponse, + SentinelOneActionRequestCommonMeta, + SentinelOneActivityEsDoc, + SentinelOneIsolationRequestMeta, + SentinelOneIsolationResponseMeta, +} from '../../../../../../common/endpoint/types'; import type { IsolationRouteRequestBody } from '../../../../../../common/api/endpoint'; import type { ResponseActionsClientOptions, @@ -48,18 +69,41 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { connectorActions.setup(SENTINELONE_CONNECTOR_ID); } - protected async writeActionRequestToEndpointIndex( - actionRequest: Omit - ): Promise { - const agentId = actionRequest.endpoint_ids[0]; - const agentDetails = await this.getAgentDetails(agentId); - - return super.writeActionRequestToEndpointIndex({ + protected async writeActionRequestToEndpointIndex< + TParameters extends EndpointActionDataParameterTypes = EndpointActionDataParameterTypes, + TOutputContent extends EndpointActionResponseDataOutput = EndpointActionResponseDataOutput, + TMeta extends {} = {} + >( + actionRequest: ResponseActionsClientWriteActionRequestToEndpointIndexOptions< + TParameters, + TOutputContent, + TMeta + > + ): Promise< + LogsEndpointAction + > { + const agentUUID = actionRequest.endpoint_ids[0]; + const agentDetails = await this.getAgentDetails(agentUUID); + + const doc = await super.writeActionRequestToEndpointIndex< + TParameters, + TOutputContent, + TMeta & SentinelOneActionRequestCommonMeta + >({ ...actionRequest, hosts: { - [agentId]: { name: agentDetails.computerName }, + [agentUUID]: { name: agentDetails.computerName }, }, + meta: { + // Add common meta data + agentUUID, + agentId: agentDetails.id, + hostName: agentDetails.computerName, + ...(actionRequest.meta ?? {}), + } as TMeta & SentinelOneActionRequestCommonMeta, }); + + return doc; } /** @@ -101,7 +145,9 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { } /** Gets agent details directly from SentinelOne */ - private async getAgentDetails(id: string): Promise { + private async getAgentDetails( + agentUUID: string + ): Promise { const executeOptions: NormalizedExternalConnectorClientExecuteOptions< SentinelOneGetAgentsParams, SUB_ACTION @@ -109,23 +155,33 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { params: { subAction: SUB_ACTION.GET_AGENTS, subActionParams: { - uuid: id, + uuid: agentUUID, }, }, }; - const s1ApiResponse: SentinelOneGetAgentsResponse | undefined = ( - (await this.connectorActionsClient.execute( + let s1ApiResponse: SentinelOneGetAgentsResponse | undefined; + + try { + const response = (await this.connectorActionsClient.execute( executeOptions - )) as ActionTypeExecutorResult - ).data; + )) as ActionTypeExecutorResult; - this.log.debug( - `Response for SentinelOne agent id [${id}] returned:\n${stringify(s1ApiResponse)}` - ); + this.log.debug( + `Response for SentinelOne agent id [${agentUUID}] returned:\n${stringify(response)}` + ); + + s1ApiResponse = response.data; + } catch (err) { + throw new ResponseActionsClientError( + `Error while attempting to retrieve SentinelOne host with agent id [${agentUUID}]`, + 500, + err + ); + } if (!s1ApiResponse || !s1ApiResponse.data[0]) { - throw new ResponseActionsClientError(`SentinelOne agent id [${id}] not found`, 404); + throw new ResponseActionsClientError(`SentinelOne agent id [${agentUUID}] not found`, 404); } return s1ApiResponse.data[0]; @@ -152,7 +208,11 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { actionRequest: IsolationRouteRequestBody, options: CommonResponseActionMethodOptions = {} ): Promise { - const reqIndexOptions: ResponseActionsClientWriteActionRequestToEndpointIndexOptions = { + const reqIndexOptions: ResponseActionsClientWriteActionRequestToEndpointIndexOptions< + undefined, + {}, + SentinelOneIsolationRequestMeta + > = { ...actionRequest, ...this.getMethodOptions(options), command: 'isolate', @@ -192,16 +252,6 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { comment: reqIndexOptions.comment, }); - if (!actionRequestDoc.error) { - await this.writeActionResponseToEndpointIndex({ - actionId: actionRequestDoc.EndpointActions.action_id, - agentId: actionRequestDoc.agent.id, - data: { - command: actionRequestDoc.EndpointActions.data.command, - }, - }); - } - return this.fetchActionDetails(actionRequestDoc.EndpointActions.action_id); } @@ -209,7 +259,11 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { actionRequest: IsolationRouteRequestBody, options: CommonResponseActionMethodOptions = {} ): Promise { - const reqIndexOptions: ResponseActionsClientWriteActionRequestToEndpointIndexOptions = { + const reqIndexOptions: ResponseActionsClientWriteActionRequestToEndpointIndexOptions< + undefined, + {}, + SentinelOneIsolationRequestMeta + > = { ...actionRequest, ...this.getMethodOptions(options), command: 'unisolate', @@ -249,16 +303,6 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { comment: reqIndexOptions.comment, }); - if (!actionRequestDoc.error) { - await this.writeActionResponseToEndpointIndex({ - actionId: actionRequestDoc.EndpointActions.action_id, - agentId: actionRequestDoc.agent.id, - data: { - command: actionRequestDoc.EndpointActions.data.command, - }, - }); - } - return this.fetchActionDetails(actionRequestDoc.EndpointActions.action_id); } @@ -266,11 +310,231 @@ export class SentinelOneActionsClient extends ResponseActionsClientImpl { abortSignal, addToQueue, }: ProcessPendingActionsMethodOptions): Promise { - // TODO:PT implement resolving of pending S1 actions - // if (abortSignal.aborted) { - // return; - // } - // Dev test entry below - // await this.getAgentDetails('123').catch(() => {}); + if (abortSignal.aborted) { + return; + } + + for await (const pendingActions of this.fetchAllPendingActions()) { + if (abortSignal.aborted) { + return; + } + + const pendingActionsByType = groupBy(pendingActions, 'EndpointActions.data.command'); + + for (const [actionType, typePendingActions] of Object.entries(pendingActionsByType)) { + if (abortSignal.aborted) { + return; + } + + switch (actionType as ResponseActionsApiCommandNames) { + case 'isolate': + case 'unisolate': + { + const isolationResponseDocs = await this.checkPendingIsolateOrReleaseActions( + typePendingActions as Array< + LogsEndpointAction + >, + actionType as 'isolate' | 'unisolate' + ); + if (isolationResponseDocs.length) { + addToQueue(...isolationResponseDocs); + } + } + break; + } + } + } + } + + /** + * Checks if the provided Isolate or Unisolate actions are complete and if so, then it builds the Response + * document for them and returns it. (NOTE: the response is NOT written to ES - only returned) + * @param actionRequests + * @param command + * @private + */ + private async checkPendingIsolateOrReleaseActions( + actionRequests: Array>, + command: ResponseActionsApiCommandNames & ('isolate' | 'unisolate') + ): Promise { + const completedResponses: LogsEndpointActionResponse[] = []; + const actionsByAgentId: { + [s1AgentId: string]: Array< + LogsEndpointAction + >; + } = {}; + const warnings: string[] = []; + + // Create the `OR` clause that filters for each agent id and an updated date of greater than the date when + // the isolate request was created + const agentListQuery: QueryDslQueryContainer[] = actionRequests.reduce((acc, action) => { + const s1AgentId = action.meta?.agentId; + + if (s1AgentId) { + if (!actionsByAgentId[s1AgentId]) { + actionsByAgentId[s1AgentId] = []; + } + + actionsByAgentId[s1AgentId].push(action); + + acc.push({ + bool: { + filter: [ + { term: { 'sentinel_one.activity.agent.id': s1AgentId } }, + { range: { 'sentinel_one.activity.updated_at': { gt: action['@timestamp'] } } }, + ], + }, + }); + } else { + // This is an edge case and should never happen. But just in case :-) + warnings.push( + `${command} response action ID [${action.EndpointActions.action_id}] missing SentinelOne agent ID, thus unable to check on it's status. Forcing it to complete as failure.` + ); + + completedResponses.push( + this.buildActionResponseEsDoc<{}, SentinelOneIsolationResponseMeta>({ + actionId: action.EndpointActions.action_id, + agentId: Array.isArray(action.agent.id) ? action.agent.id[0] : action.agent.id, + data: { command }, + error: { + message: `Unable to very if action completed. SentinelOne agent id ('meta.agentId') missing on action request document!`, + }, + }) + ); + } + + return acc; + }, [] as QueryDslQueryContainer[]); + + if (agentListQuery.length > 0) { + const query: QueryDslQueryContainer = { + bool: { + must: [ + { + terms: { + // Activity Types can be retrieved from S1 via API: `/web/api/v2.1/activities/types` + 'sentinel_one.activity.type': + command === 'isolate' + ? [ + // { + // "id": 1001 + // "action": "Agent Disconnected From Network", + // "descriptionTemplate": "Agent {{ computer_name }} was disconnected from network.", + // }, + 1001, + + // { + // "id": 2010 + // "action": "Agent Mitigation Report Quarantine Network Failed", + // "descriptionTemplate": "Agent {{ computer_name }} was unable to disconnect from network.", + // }, + 2010, + ] + : [ + // { + // "id": 1002 + // "action": "Agent Reconnected To Network", + // "descriptionTemplate": "Agent {{ computer_name }} was connected to network.", + // }, + 1002, + ], + }, + }, + ], + should: agentListQuery, + minimum_should_match: 1, + }, + }; + + const searchRequestOptions: SearchRequest = { + index: SENTINEL_ONE_ACTIVITY_INDEX, + query, + // There may be many documents for each host/agent, so we collapse it and only get back the + // first one that came in after the isolate request was sent + collapse: { + field: 'sentinel_one.activity.agent.id', + inner_hits: { + name: 'first_found', + size: 1, + sort: [{ 'sentinel_one.activity.updated_at': 'asc' }], + }, + }, + // we don't need the source. The document will be stored in `inner_hits.first_found` + // due to use of `collapse + _source: false, + sort: [{ 'sentinel_one.activity.updated_at': { order: 'asc' } }], + size: 1000, + }; + + this.log.debug( + `searching for ${command} responses from [${SENTINEL_ONE_ACTIVITY_INDEX}] index with:\n${stringify( + searchRequestOptions, + 15 + )}` + ); + + const searchResults = await this.options.esClient + .search(searchRequestOptions) + .catch(catchAndWrapError); + + this.log.debug( + `Search results for SentinelOne ${command} activity documents:\n${stringify(searchResults)}` + ); + + for (const searchResultHit of searchResults.hits.hits) { + const isolateActivityResponseDoc = searchResultHit.inner_hits?.first_found.hits + .hits[0] as SearchHit; + + if (isolateActivityResponseDoc && isolateActivityResponseDoc._source) { + const s1ActivityData = isolateActivityResponseDoc._source.sentinel_one.activity; + + const elasticDocId = isolateActivityResponseDoc._id; + const s1AgentId = s1ActivityData.agent.id; + const activityLogEntryId = s1ActivityData.id; + const activityLogEntryType = s1ActivityData.type; + const activityLogEntryDescription = s1ActivityData.description.primary; + + for (const actionRequest of actionsByAgentId[s1AgentId]) { + completedResponses.push( + this.buildActionResponseEsDoc<{}, SentinelOneIsolationResponseMeta>({ + actionId: actionRequest.EndpointActions.action_id, + agentId: Array.isArray(actionRequest.agent.id) + ? actionRequest.agent.id[0] + : actionRequest.agent.id, + data: { command }, + error: + activityLogEntryType === 2010 && command === 'isolate' + ? { + message: + activityLogEntryDescription ?? + `Action failed. SentinelOne activity log entry [${activityLogEntryId}] has a 'type' value of 2010 indicating a failure to disconnect`, + } + : undefined, + meta: { + elasticDocId, + activityLogEntryId, + activityLogEntryType, + activityLogEntryDescription, + }, + }) + ); + } + } + } + } else { + this.log.debug(`Nothing to search for. List of agents IDs is empty.`); + } + + this.log.debug( + `${completedResponses.length} ${command} action responses generated:\n${stringify( + completedResponses + )}` + ); + + if (warnings.length > 0) { + this.log.warn(warnings.join('\n')); + } + + return completedResponses; } } diff --git a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts index d15fb6ad2fe3d7..9911ae781c20f2 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/actions/mocks.ts @@ -10,6 +10,7 @@ import type { ElasticsearchClientMock } from '@kbn/core/server/mocks'; import { AGENT_ACTIONS_RESULTS_INDEX } from '@kbn/fleet-plugin/common'; import { Readable } from 'stream'; import type { TransportRequestOptions } from '@elastic/transport'; +import { applyEsClientSearchMock } from '../../mocks/utils.mock'; import type { HapiReadableStream } from '../../../types'; import { EndpointActionGenerator } from '../../../../common/endpoint/data_generators/endpoint_action_generator'; import { FleetActionGenerator } from '../../../../common/endpoint/data_generators/fleet_action_generator'; @@ -104,26 +105,22 @@ export const applyActionsEsSearchMock = ( LogsEndpointActionResponse | EndpointActionResponse > = createActionResponsesEsSearchResultsMock() ) => { - const priorSearchMockImplementation = esClient.search.getMockImplementation(); - - esClient.search.mockImplementation(async (...args) => { - const params = args[0] ?? {}; - const indexes = Array.isArray(params.index) ? params.index : [params.index]; - - if (indexes.includes(ENDPOINT_ACTIONS_INDEX)) { - return actionRequests; - } else if ( - indexes.includes(AGENT_ACTIONS_RESULTS_INDEX) || - indexes.includes(ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN) - ) { - return actionResponses; - } + applyEsClientSearchMock({ + esClientMock: esClient, + index: ENDPOINT_ACTIONS_INDEX, + response: actionRequests, + }); - if (priorSearchMockImplementation) { - return priorSearchMockImplementation(...args); - } + applyEsClientSearchMock({ + esClientMock: esClient, + index: AGENT_ACTIONS_RESULTS_INDEX, + response: actionResponses, + }); - return new EndpointActionGenerator().toEsSearchResponse([]); + applyEsClientSearchMock({ + esClientMock: esClient, + index: ENDPOINT_ACTION_RESPONSES_INDEX_PATTERN, + response: actionResponses, }); }; diff --git a/x-pack/plugins/security_solution/server/endpoint/utils/queue_processor.ts b/x-pack/plugins/security_solution/server/endpoint/utils/queue_processor.ts index 42dd639c9b5f2c..05bd638956f897 100644 --- a/x-pack/plugins/security_solution/server/endpoint/utils/queue_processor.ts +++ b/x-pack/plugins/security_solution/server/endpoint/utils/queue_processor.ts @@ -133,8 +133,10 @@ export class QueueProcessor { * Adds an update to the queue */ public addToQueue(...data: T[]) { - this.queue.push(...data); - this.processQueue(); + if (data.length > 0) { + this.queue.push(...data); + this.processQueue(); + } } /** From 22dd3fbc4555f142ecbaad349027acfb4a7ab78c Mon Sep 17 00:00:00 2001 From: Tre Date: Tue, 9 Apr 2024 14:17:44 +0100 Subject: [PATCH 21/75] =?UTF-8?q?[serverless]=20skip=20"GET=20should=20get?= =?UTF-8?q?=20updated=20labels=20after=20dynamically=20up=E2=80=A6=20(#180?= =?UTF-8?q?352)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary skip "GET should get updated labels after dynamically updating them" for oblt and security suites Details about the failures in https://github.com/elastic/kibana/issues/180348 --- .../test_suites/observability/telemetry/telemetry_config.ts | 4 +++- .../test_suites/security/telemetry/telemetry_config.ts | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/telemetry_config.ts b/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/telemetry_config.ts index 78732f6b528264..8fdeb64ac1c198 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/telemetry_config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/telemetry_config.ts @@ -12,7 +12,9 @@ export default function telemetryConfigTest({ getService }: FtrProviderContext) const svlCommonApi = getService('svlCommonApi'); const supertest = getService('supertest'); - describe('/api/telemetry/v2/config API Telemetry config', () => { + // failsOnMKI, see https://github.com/elastic/kibana/issues/180348 + describe('/api/telemetry/v2/config API Telemetry config', function () { + this.tags(['failsOnMKI']); const baseConfig = { allowChangingOptInStatus: false, optIn: true, diff --git a/x-pack/test_serverless/api_integration/test_suites/security/telemetry/telemetry_config.ts b/x-pack/test_serverless/api_integration/test_suites/security/telemetry/telemetry_config.ts index 41a02950c4f0f2..6701fc93a506a3 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/telemetry/telemetry_config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/telemetry/telemetry_config.ts @@ -12,7 +12,10 @@ export default function telemetryConfigTest({ getService }: FtrProviderContext) const svlCommonApi = getService('svlCommonApi'); const supertest = getService('supertest'); - describe('/api/telemetry/v2/config API Telemetry config', () => { + // failsOnMKI, see https://github.com/elastic/kibana/issues/180348 + describe('/api/telemetry/v2/config API Telemetry config', function () { + this.tags(['failsOnMKI']); + const baseConfig = { allowChangingOptInStatus: false, optIn: true, From f7ebd29b33790115191147c4be65b87c70eb5f54 Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Tue, 9 Apr 2024 06:18:08 -0700 Subject: [PATCH 22/75] [Fleet] Add callout when editing an output about plain text secrets being re-saved to secret storage (#180334) ## Summary Resolves #177879. When editing an output we automatically convert any existing plain text secrets to use secrets storage, but this is not at all obvious to the user. This PR adds a callout about the secret being re-saved to use secret storage. This is done for all secrets fields for all output types (Kafka, Logstash, remote ES): image ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../output_form_kafka_authentication.tsx | 10 +++ .../output_form_logstash.tsx | 7 ++ .../output_form_remote_es.tsx | 7 ++ .../output_form_secret_form_row.test.tsx | 23 ++++++ .../output_form_secret_form_row.tsx | 74 +++++++++++++------ 5 files changed, 98 insertions(+), 23 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx index 5d21567cbbb352..199b92d4de98e0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx @@ -75,6 +75,10 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ onToggleSecretStorage: (secretEnabled: boolean) => void; }> = (props) => { const { inputs, useSecretsStorage, onToggleSecretStorage } = props; + const [isConvertedToSecret, setIsConvertedToSecret] = React.useState({ + kafkaAuthPassword: false, + kafkaSslKey: false, + }); const [isFirstLoad, setIsFirstLoad] = React.useState(true); useEffect(() => { @@ -85,11 +89,13 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ if (inputs.kafkaAuthPasswordInput.value && !inputs.kafkaAuthPasswordSecretInput.value) { inputs.kafkaAuthPasswordSecretInput.setValue(inputs.kafkaAuthPasswordInput.value); inputs.kafkaAuthPasswordInput.clear(); + setIsConvertedToSecret({ ...isConvertedToSecret, kafkaAuthPassword: true }); } if (inputs.kafkaSslKeyInput.value && !inputs.kafkaSslKeySecretInput.value) { inputs.kafkaSslKeySecretInput.setValue(inputs.kafkaSslKeyInput.value); inputs.kafkaSslKeyInput.clear(); + setIsConvertedToSecret({ ...isConvertedToSecret, kafkaSslKey: true }); } } }, [ @@ -100,6 +106,7 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ inputs.kafkaSslKeySecretInput, isFirstLoad, setIsFirstLoad, + isConvertedToSecret, ]); const onToggleSecretAndClearValue = (secretEnabled: boolean) => { @@ -110,6 +117,7 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ inputs.kafkaAuthPasswordSecretInput.setValue(''); inputs.kafkaSslKeySecretInput.setValue(''); } + setIsConvertedToSecret({ kafkaAuthPassword: false, kafkaSslKey: false }); onToggleSecretStorage(secretEnabled); }; @@ -221,6 +229,7 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ )} {...inputs.kafkaSslKeySecretInput.formRowProps} useSecretsStorage={useSecretsStorage} + isConvertedToSecret={isConvertedToSecret.kafkaSslKey} onToggleSecretStorage={onToggleSecretAndClearValue} cancelEdit={inputs.kafkaSslKeySecretInput.cancelEdit} > @@ -291,6 +300,7 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ )} {...inputs.kafkaAuthPasswordSecretInput.formRowProps} useSecretsStorage={useSecretsStorage} + isConvertedToSecret={isConvertedToSecret.kafkaAuthPassword} onToggleSecretStorage={onToggleSecretAndClearValue} cancelEdit={inputs.kafkaAuthPasswordSecretInput.cancelEdit} > diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_logstash.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_logstash.tsx index 9277ee7290937d..1884c5aa7551fc 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_logstash.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_logstash.tsx @@ -32,6 +32,9 @@ export const OutputFormLogstashSection: React.FunctionComponent = (props) const { docLinks } = useStartServices(); const [isFirstLoad, setIsFirstLoad] = React.useState(true); + const [isConvertedToSecret, setIsConvertedToSecret] = React.useState({ + sslKey: false, + }); useEffect(() => { if (!isFirstLoad) return; @@ -41,6 +44,7 @@ export const OutputFormLogstashSection: React.FunctionComponent = (props) if (inputs.sslKeyInput.value && !inputs.sslKeySecretInput.value) { inputs.sslKeySecretInput.setValue(inputs.sslKeyInput.value); inputs.sslKeyInput.clear(); + setIsConvertedToSecret({ ...isConvertedToSecret, sslKey: true }); } } }, [ @@ -49,6 +53,7 @@ export const OutputFormLogstashSection: React.FunctionComponent = (props) inputs.sslKeySecretInput, isFirstLoad, setIsFirstLoad, + isConvertedToSecret, ]); const onToggleSecretAndClearValue = (secretEnabled: boolean) => { @@ -57,6 +62,7 @@ export const OutputFormLogstashSection: React.FunctionComponent = (props) } else { inputs.sslKeySecretInput.setValue(''); } + setIsConvertedToSecret({ sslKey: false }); onToggleSecretStorage(secretEnabled); }; @@ -172,6 +178,7 @@ export const OutputFormLogstashSection: React.FunctionComponent = (props) })} {...inputs.sslKeySecretInput.formRowProps} useSecretsStorage={useSecretsStorage} + isConvertedToSecret={isConvertedToSecret.sslKey} onToggleSecretStorage={onToggleSecretAndClearValue} cancelEdit={inputs.sslKeySecretInput.cancelEdit} > diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_remote_es.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_remote_es.tsx index 1b44bdc97ed8f1..354c6ce7d38216 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_remote_es.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_remote_es.tsx @@ -23,6 +23,9 @@ interface Props { export const OutputFormRemoteEsSection: React.FunctionComponent = (props) => { const { inputs, useSecretsStorage, onToggleSecretStorage } = props; + const [isConvertedToSecret, setIsConvertedToSecret] = React.useState({ + serviceToken: false, + }); const [isFirstLoad, setIsFirstLoad] = React.useState(true); @@ -34,6 +37,7 @@ export const OutputFormRemoteEsSection: React.FunctionComponent = (props) if (inputs.serviceTokenInput.value && !inputs.serviceTokenSecretInput.value) { inputs.serviceTokenSecretInput.setValue(inputs.serviceTokenInput.value); inputs.serviceTokenInput.clear(); + setIsConvertedToSecret({ serviceToken: true }); } } }, [ @@ -42,6 +46,7 @@ export const OutputFormRemoteEsSection: React.FunctionComponent = (props) inputs.serviceTokenSecretInput, isFirstLoad, setIsFirstLoad, + isConvertedToSecret, ]); const onToggleSecretAndClearValue = (secretEnabled: boolean) => { @@ -50,6 +55,7 @@ export const OutputFormRemoteEsSection: React.FunctionComponent = (props) } else { inputs.serviceTokenSecretInput.setValue(''); } + setIsConvertedToSecret({ ...isConvertedToSecret, serviceToken: false }); onToggleSecretStorage(secretEnabled); }; @@ -104,6 +110,7 @@ export const OutputFormRemoteEsSection: React.FunctionComponent = (props) {...inputs.serviceTokenSecretInput.formRowProps} cancelEdit={inputs.serviceTokenSecretInput.cancelEdit} useSecretsStorage={useSecretsStorage} + isConvertedToSecret={isConvertedToSecret.serviceToken} onToggleSecretStorage={onToggleSecretAndClearValue} > { expect(onToggleSecretStorage).toHaveBeenCalledWith(true); }); + + it('should display input normally and display a callout when the field is converted to secret storage', () => { + const { getByText, queryByText } = render( + + + + ); + + expect(queryByText('Replace Test Secret')).not.toBeInTheDocument(); + expect( + getByText('This field will be re-saved using secret storage from plain text storage.', { + exact: false, + }) + ).toBeInTheDocument(); + }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_secret_form_row.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_secret_form_row.tsx index 2028c6107bfd36..3b39ecc4dfa2b4 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_secret_form_row.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_secret_form_row.tsx @@ -7,16 +7,18 @@ import { EuiButtonEmpty, + EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiIcon, + EuiLink, EuiPanel, EuiSpacer, EuiText, EuiToolTip, } from '@elastic/eui'; -import React, { useState } from 'react'; +import React, { useMemo, useState } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; @@ -24,6 +26,7 @@ export const SecretFormRow: React.FC<{ fullWidth?: boolean; children: ConstructorParameters[0]['children']; useSecretsStorage: boolean; + isConvertedToSecret?: boolean; onToggleSecretStorage: (secretEnabled: boolean) => void; error?: string[]; isInvalid?: boolean; @@ -43,10 +46,11 @@ export const SecretFormRow: React.FC<{ onToggleSecretStorage, cancelEdit, useSecretsStorage, + isConvertedToSecret = false, label, }) => { const hasInitialValue = !!initialValue; - const [editMode, setEditMode] = useState(!initialValue); + const [editMode, setEditMode] = useState(isConvertedToSecret || !initialValue); const valueHiddenPanel = ( @@ -101,7 +105,7 @@ export const SecretFormRow: React.FC<{ const editValue = ( <> {children} - {hasInitialValue && ( + {hasInitialValue && !isConvertedToSecret && ( {cancelButton} @@ -110,7 +114,7 @@ export const SecretFormRow: React.FC<{ ); const secretLabel = ( - + <>   {title} @@ -123,25 +127,49 @@ export const SecretFormRow: React.FC<{ > - + ); - const helpText = !initialValue ? ( - onToggleSecretStorage(false)} color="primary" size="xs"> - - - ), - }} - /> - ) : undefined; + const helpText = useMemo(() => { + if (isConvertedToSecret) + return ( + + onToggleSecretStorage(false)} color="primary"> + + + ), + }} + /> + + ); + + if (!initialValue) + return ( + onToggleSecretStorage(false)} color="primary"> + + + ), + }} + /> + ); + return undefined; + }, [initialValue, isConvertedToSecret, onToggleSecretStorage]); const plainTextHelp = ( onToggleSecretStorage(true)} color="primary" size="xs"> + onToggleSecretStorage(true)} color="primary"> - + ), }} /> From c88b3bdc95bbe8164437aa5ea55aeabf607f0566 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 9 Apr 2024 20:18:40 +0700 Subject: [PATCH 23/75] [Fleet] Settings Framework API and UI (#179795) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Follow up on https://github.com/elastic/kibana/pull/170539 Related to https://github.com/elastic/ingest-dev/issues/2471 (Phase 1) Dynamically creating settings fields from configuration. These settings are saved in the agent policy SO's `advanced_settings` field. In the current pr the agent policy read/create/update works including the UI. It still has to be extended to support a few more type of settings: e.g. dropdown values, settings consisting of multiple fields. image These settings are added to the full agent policy agents section: image ## Old description: Add support for saved object mapping and api field name, ## Example API calls and full policy generation Screenshot 2024-04-02 at 3 54 35 PM Screenshot 2024-04-02 at 4 13 42 PM Screenshot 2024-04-02 at 4 13 54 PM Screenshot 2024-04-02 at 5 42 27 PM ## Open questions/Issues ### Saved objects *I think we will still have to do some work to add a new model version when adding a new saved object field, I do not see an easy way to programatically generate that. In a first time it probably could be a manual action to add those migration ### API Open api generation, I think as a first iteration it could be a manual operation to update openAPI spec, but we should be able to programatically generate that with a script in the future --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Co-authored-by: Julia Bardi --- .../src/constants.ts | 2 +- .../current_fields.json | 1 + .../current_mappings.json | 4 + .../check_registered_types.test.ts | 2 +- .../fleet/common/experimental_features.ts | 1 + .../plugins/fleet/common/openapi/bundled.json | 5 + .../plugins/fleet/common/openapi/bundled.yaml | 6 + .../components/schemas/agent_policy.yaml | 4 + .../common/settings/agent_policy_settings.ts | 100 +++++++++++ x-pack/plugins/fleet/common/settings/index.ts | 8 + x-pack/plugins/fleet/common/settings/types.ts | 21 +++ .../fleet/common/types/models/agent_policy.ts | 1 + .../components/form_settings/index.test.tsx | 104 ++++++++++++ .../fleet/components/form_settings/index.tsx | 157 ++++++++++++++++++ .../components/agent_policy_form.tsx | 153 ++++++++++++----- .../components/settings/index.tsx | 14 +- .../components/create_agent_policy.tsx | 11 +- .../fleet/server/saved_objects/index.ts | 13 ++ .../agent_policies/full_agent_policy.test.ts | 24 +++ .../agent_policies/full_agent_policy.ts | 11 +- .../form_settings/form_settings.test.ts | 75 +++++++++ .../services/form_settings/form_settings.ts | 105 ++++++++++++ .../server/services/form_settings/index.ts | 12 ++ .../fleet/server/types/models/agent_policy.ts | 2 + x-pack/plugins/fleet/tsconfig.json | 1 + 25 files changed, 785 insertions(+), 52 deletions(-) create mode 100644 x-pack/plugins/fleet/common/settings/agent_policy_settings.ts create mode 100644 x-pack/plugins/fleet/common/settings/index.ts create mode 100644 x-pack/plugins/fleet/common/settings/types.ts create mode 100644 x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.test.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.tsx create mode 100644 x-pack/plugins/fleet/server/services/form_settings/form_settings.test.ts create mode 100644 x-pack/plugins/fleet/server/services/form_settings/form_settings.ts create mode 100644 x-pack/plugins/fleet/server/services/form_settings/index.ts diff --git a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/constants.ts b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/constants.ts index 124515299efc77..0a09032d290e53 100644 --- a/packages/core/saved-objects/core-saved-objects-base-server-internal/src/constants.ts +++ b/packages/core/saved-objects/core-saved-objects-base-server-internal/src/constants.ts @@ -180,7 +180,7 @@ export const HASH_TO_VERSION_MAP = { 'infrastructure-monitoring-log-view|c50526fc6040c5355ed027d34d05b35c': '10.0.0', 'infrastructure-ui-source|3d1b76c39bfb2cc8296b024d73854724': '10.0.0', 'ingest_manager_settings|b91ffb075799c78ffd7dbd51a279c8c9': '10.1.0', - 'ingest-agent-policies|20768dc7ce5eced3eb309e50d8a6cf76': '10.0.0', + 'ingest-agent-policies|0fd93cd11c019b118e93a9157c22057b': '10.1.0', 'ingest-download-sources|0b0f6828e59805bd07a650d80817c342': '10.0.0', 'ingest-outputs|b1237f7fdc0967709e75d65d208ace05': '10.6.0', 'ingest-package-policies|a1a074bad36e68d54f98d2158d60f879': '10.0.0', diff --git a/packages/kbn-check-mappings-update-cli/current_fields.json b/packages/kbn-check-mappings-update-cli/current_fields.json index a66ab72d98aa3c..33aace82602918 100644 --- a/packages/kbn-check-mappings-update-cli/current_fields.json +++ b/packages/kbn-check-mappings-update-cli/current_fields.json @@ -471,6 +471,7 @@ ], "infrastructure-ui-source": [], "ingest-agent-policies": [ + "advanced_settings", "agent_features", "agent_features.enabled", "agent_features.name", diff --git a/packages/kbn-check-mappings-update-cli/current_mappings.json b/packages/kbn-check-mappings-update-cli/current_mappings.json index 00d9a5f82fd1cc..05e1a48d55d2ff 100644 --- a/packages/kbn-check-mappings-update-cli/current_mappings.json +++ b/packages/kbn-check-mappings-update-cli/current_mappings.json @@ -1590,6 +1590,10 @@ }, "ingest-agent-policies": { "properties": { + "advanced_settings": { + "index": false, + "type": "flattened" + }, "agent_features": { "properties": { "enabled": { diff --git a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts index 9a1299b6f1fe44..d2d3761c7ab314 100644 --- a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts +++ b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts @@ -106,7 +106,7 @@ describe('checking migration metadata changes on all registered SO types', () => "infra-custom-dashboards": "1a5994f2e05bb8a1609825ddbf5012f77c5c67f3", "infrastructure-monitoring-log-view": "5f86709d3c27aed7a8379153b08ee5d3d90d77f5", "infrastructure-ui-source": "113182d6895764378dfe7fa9fa027244f3a457c4", - "ingest-agent-policies": "7633e578f60c074f8267bc50ec4763845e431437", + "ingest-agent-policies": "d2ee0bf36a512c2ac744b0def1c822b7880f1f83", "ingest-download-sources": "279a68147e62e4d8858c09ad1cf03bd5551ce58d", "ingest-outputs": "daafff49255ab700e07491376fe89f04fc998b91", "ingest-package-policies": "8a99e165aab00c6c365540427a3abeb7bea03f31", diff --git a/x-pack/plugins/fleet/common/experimental_features.ts b/x-pack/plugins/fleet/common/experimental_features.ts index 48e77dbe1988d6..a12711012f3074 100644 --- a/x-pack/plugins/fleet/common/experimental_features.ts +++ b/x-pack/plugins/fleet/common/experimental_features.ts @@ -29,6 +29,7 @@ export const allowedExperimentalValues = Object.freeze>( enableStrictKQLValidation: false, subfeaturePrivileges: false, enablePackagesStateMachine: true, + advancedPolicySettings: true, }); type ExperimentalConfigKeys = Array; diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index 1ed749fe31dea8..d10af2053ef4e5 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -7383,6 +7383,11 @@ "type": "object", "description": "Override settings that are defined in the agent policy. Input settings cannot be overridden. The override option should be used only in unusual circumstances and not as a routine procedure.", "nullable": true + }, + "advanced_settings": { + "type": "object", + "description": "Advanced settings stored in the agent policy, e.g. agent_limits_go_max_procs", + "nullable": true } }, "required": [ diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index 03bb90fd84d734..25850c8c6d811e 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -4734,6 +4734,12 @@ components: settings cannot be overridden. The override option should be used only in unusual circumstances and not as a routine procedure. nullable: true + advanced_settings: + type: object + description: >- + Advanced settings stored in the agent policy, e.g. + agent_limits_go_max_procs + nullable: true required: - id - status diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml index 8b088e34c10dcc..070d72a5ec3534 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/agent_policy.yaml @@ -69,6 +69,10 @@ properties: type: object description: Override settings that are defined in the agent policy. Input settings cannot be overridden. The override option should be used only in unusual circumstances and not as a routine procedure. nullable: true + advanced_settings: + type: object + description: Advanced settings stored in the agent policy, e.g. agent_limits_go_max_procs + nullable: true required: - id - status diff --git a/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts b/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts new file mode 100644 index 00000000000000..7b170d330e650d --- /dev/null +++ b/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts @@ -0,0 +1,100 @@ +/* + * 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. + */ + +import { i18n } from '@kbn/i18n'; +import { z } from 'zod'; + +import type { SettingsConfig } from './types'; + +export const zodStringWithDurationValidation = z + .string() + .refine((val) => val.match(/^(\d+[s|m|h|d])?$/), { + message: i18n.translate( + 'xpack.fleet.settings.agentPolicyAdvanced.downloadTimeoutValidationMessage', + { + defaultMessage: 'Must be a string with a time unit, e.g. 30s, 5m, 2h, 1d', + } + ), + }); + +export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ + { + name: 'agent.limits.go_max_procs', + title: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.goMaxProcsTitle', { + defaultMessage: 'GO_MAX_PROCS', + }), + description: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.goMaxProcsDescription', { + defaultMessage: 'Limits the maximum number of CPUs that can be executing simultaneously', + }), + learnMoreLink: + 'https://www.elastic.co/guide/en/fleet/current/enable-custom-policy-settings.html#limit-cpu-usage', + api_field: { + name: 'agent_limits_go_max_procs', + }, + schema: z.number().int().min(0).default(0), + }, + { + name: 'agent.download.timeout', + title: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.downloadTimeoutTitle', { + defaultMessage: 'Agent binary download timeout', + }), + description: i18n.translate( + 'xpack.fleet.settings.agentPolicyAdvanced.downloadTimeoutDescription', + { + defaultMessage: 'Timeout in seconds for downloading the agent binary', + } + ), + learnMoreLink: + 'https://www.elastic.co/guide/en/fleet/current/enable-custom-policy-settings.html#configure-agent-download-timeout', + api_field: { + name: 'agent_download_timeout', + }, + schema: zodStringWithDurationValidation.default('120s'), + }, + { + name: 'agent.download.target_directory', + api_field: { + name: 'agent_download_target_directory', + }, + title: i18n.translate( + 'xpack.fleet.settings.agentPolicyAdvanced.agentDownloadTargetDirectoryTitle', + { + defaultMessage: 'Agent binary target directory', + } + ), + description: i18n.translate( + 'xpack.fleet.settings.agentPolicyAdvanced.agentDownloadTargetDirectoryDescription', + { + defaultMessage: 'The disk path to which the agent binary will be downloaded', + } + ), + learnMoreLink: + 'https://www.elastic.co/guide/en/fleet/current/elastic-agent-standalone-download.html', + schema: z.string(), + }, + { + name: 'agent.logging.metrics.period', + api_field: { + name: 'agent_logging_metrics_period', + }, + title: i18n.translate( + 'xpack.fleet.settings.agentPolicyAdvanced.agentLoggingMetricsPeriodTitle', + { + defaultMessage: 'Agent logging metrics period', + } + ), + description: i18n.translate( + 'xpack.fleet.settings.agentPolicyAdvanced.agentLoggingMetricsPeriodDescription', + { + defaultMessage: 'The frequency of agent metrics logging', + } + ), + learnMoreLink: + 'https://www.elastic.co/guide/en/fleet/current/elastic-agent-standalone-logging-config.html#elastic-agent-standalone-logging-settings', + schema: zodStringWithDurationValidation.default('30s'), + }, +]; diff --git a/x-pack/plugins/fleet/common/settings/index.ts b/x-pack/plugins/fleet/common/settings/index.ts new file mode 100644 index 00000000000000..b33370b5939717 --- /dev/null +++ b/x-pack/plugins/fleet/common/settings/index.ts @@ -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. + */ + +export { AGENT_POLICY_ADVANCED_SETTINGS } from './agent_policy_settings'; diff --git a/x-pack/plugins/fleet/common/settings/types.ts b/x-pack/plugins/fleet/common/settings/types.ts new file mode 100644 index 00000000000000..0fc8ad98f17c04 --- /dev/null +++ b/x-pack/plugins/fleet/common/settings/types.ts @@ -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. + */ + +import type { z } from 'zod'; + +export type SettingsSection = 'AGENT_POLICY_ADVANCED_SETTINGS'; + +export interface SettingsConfig { + name: string; + title: string; + description: string; + learnMoreLink?: string; + schema: z.ZodTypeAny; + api_field: { + name: string; + }; +} diff --git a/x-pack/plugins/fleet/common/types/models/agent_policy.ts b/x-pack/plugins/fleet/common/types/models/agent_policy.ts index 4e5d6250208a5d..60e635f73f6cc2 100644 --- a/x-pack/plugins/fleet/common/types/models/agent_policy.ts +++ b/x-pack/plugins/fleet/common/types/models/agent_policy.ts @@ -39,6 +39,7 @@ export interface NewAgentPolicy { agent_features?: Array<{ name: string; enabled: boolean }>; is_protected?: boolean; overrides?: { [key: string]: any } | null; + advanced_settings?: { [key: string]: any } | null; } // SO definition for this type is declared in server/types/interfaces diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.test.tsx new file mode 100644 index 00000000000000..7d0cb7dbae3411 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.test.tsx @@ -0,0 +1,104 @@ +/* + * 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. + */ + +import { act, fireEvent } from '@testing-library/react'; + +import React from 'react'; + +import { z } from 'zod'; + +import { zodStringWithDurationValidation } from '../../../../../common/settings/agent_policy_settings'; +import type { SettingsConfig } from '../../../../../common/settings/types'; +import { createFleetTestRendererMock } from '../../../../mock'; + +import { ConfiguredSettings } from '.'; + +const mockUpdateAgentPolicy = jest.fn(); +const mockUpdateAdvancedSettingsHasErrors = jest.fn(); + +jest.mock('../../sections/agent_policy/components/agent_policy_form', () => ({ + useAgentPolicyFormContext: () => ({ + updateAdvancedSettingsHasErrors: mockUpdateAdvancedSettingsHasErrors, + updateAgentPolicy: mockUpdateAgentPolicy, + agentPolicy: { + advanced_settings: { + agent_limits_go_max_procs: 0, + agent_download_timeout: '120s', + }, + }, + }), +})); + +describe('ConfiguredSettings', () => { + const testRenderer = createFleetTestRendererMock(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + function render(settingsConfig: SettingsConfig[]) { + return testRenderer.render(); + } + + it('should render number field', () => { + const result = render([ + { + name: 'agent.limits.go_max_procs', + title: 'GO_MAX_PROCS', + description: 'Description', + learnMoreLink: '', + api_field: { + name: 'agent_limits_go_max_procs', + }, + schema: z.number().int().min(0).default(0), + }, + ]); + + expect(result.getByText('GO_MAX_PROCS')).not.toBeNull(); + const input = result.getByTestId('configuredSetting-agent.limits.go_max_procs'); + expect(input).toHaveValue(0); + + act(() => { + fireEvent.change(input, { target: { value: '1' } }); + }); + + expect(mockUpdateAgentPolicy).toHaveBeenCalledWith( + expect.objectContaining({ + advanced_settings: expect.objectContaining({ agent_limits_go_max_procs: 1 }), + }) + ); + }); + + it('should render string field with time duration validation', () => { + const result = render([ + { + name: 'agent.download.timeout', + title: 'Agent binary download timeout', + description: 'Description', + learnMoreLink: '', + api_field: { + name: 'agent_download_timeout', + }, + schema: zodStringWithDurationValidation.default('120s'), + }, + ]); + + expect(result.getByText('Agent binary download timeout')).not.toBeNull(); + const input = result.getByTestId('configuredSetting-agent.download.timeout'); + expect(input).toHaveValue('120s'); + + act(() => { + fireEvent.change(input, { target: { value: '120' } }); + }); + + expect(input).toHaveAttribute('aria-invalid', 'true'); + expect( + result.getByText('Must be a string with a time unit, e.g. 30s, 5m, 2h, 1d') + ).not.toBeNull(); + expect(mockUpdateAdvancedSettingsHasErrors).toHaveBeenCalledWith(true); + }); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.tsx new file mode 100644 index 00000000000000..03d66d23615bae --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/index.tsx @@ -0,0 +1,157 @@ +/* + * 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. + */ + +import { z, ZodFirstPartyTypeKind } from 'zod'; +import React, { useState } from 'react'; +import { + EuiDescribedFormGroup, + EuiFieldNumber, + EuiFieldText, + EuiFormRow, + EuiLink, +} from '@elastic/eui'; + +import type { SettingsConfig } from '../../../../../common/settings/types'; +import { useAgentPolicyFormContext } from '../../sections/agent_policy/components/agent_policy_form'; + +export const settingComponentRegistry = new Map< + string, + (settingsconfig: SettingsConfig) => React.ReactElement +>(); + +settingComponentRegistry.set(ZodFirstPartyTypeKind.ZodNumber, (settingsConfig) => { + return ( + ( + + )} + /> + ); +}); + +settingComponentRegistry.set(ZodFirstPartyTypeKind.ZodString, (settingsConfig) => { + return ( + ( + + )} + /> + ); +}); + +const SettingsFieldWrapper: React.FC<{ + settingsConfig: SettingsConfig; + typeName: keyof typeof ZodFirstPartyTypeKind; + renderItem: Function; +}> = ({ settingsConfig, typeName, renderItem }) => { + const [error, setError] = useState(''); + const agentPolicyFormContext = useAgentPolicyFormContext(); + + const fieldKey = `configuredSetting-${settingsConfig.name}`; + const defaultValue: number = + settingsConfig.schema instanceof z.ZodDefault + ? settingsConfig.schema._def.defaultValue() + : undefined; + const coercedSchema = settingsConfig.schema as z.ZodString; + + const convertValue = (value: string, type: keyof typeof ZodFirstPartyTypeKind): any => { + if (type === ZodFirstPartyTypeKind.ZodNumber) { + if (value === '') { + return 0; + } + return parseInt(value, 10); + } + return value; + }; + + const handleChange = (e: React.ChangeEvent) => { + const newValue = convertValue(e.target.value, typeName); + const validationResults = coercedSchema.safeParse(newValue); + + if (!validationResults.success) { + setError(validationResults.error.issues[0].message); + agentPolicyFormContext?.updateAdvancedSettingsHasErrors(true); + } else { + setError(''); + agentPolicyFormContext?.updateAdvancedSettingsHasErrors(false); + } + + const newAdvancedSettings = { + ...(agentPolicyFormContext?.agentPolicy.advanced_settings ?? {}), + [settingsConfig.api_field.name]: newValue, + }; + + agentPolicyFormContext?.updateAgentPolicy({ advanced_settings: newAdvancedSettings }); + }; + + const fieldValue = + agentPolicyFormContext?.agentPolicy.advanced_settings?.[settingsConfig.api_field.name] ?? + defaultValue; + + return ( + {settingsConfig.title}

!JG!j{(B2#te4V(NI6)xB^RFgp2X1!%TV>q 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
V>+{OB| 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

} + description={ + <> + {settingsConfig.description}.{' '} + + Learn more. + + + } + > + + {renderItem({ fieldValue, handleChange, isInvalid: !!error, fieldKey, coercedSchema })} + + + ); +}; + +export function ConfiguredSettings({ + configuredSettings, +}: { + configuredSettings: SettingsConfig[]; +}) { + return ( + <> + {configuredSettings.map((configuredSetting) => { + const Component = settingComponentRegistry.get( + configuredSetting.schema instanceof z.ZodDefault + ? configuredSetting.schema._def.innerType._def.typeName === 'ZodEffects' + ? configuredSetting.schema._def.innerType._def.schema._def.typeName + : configuredSetting.schema._def.innerType._def.typeName + : configuredSetting.schema._def.typeName + ); + + if (!Component) { + throw new Error(`Unknown setting type: ${configuredSetting.schema._type}}`); + } + + return ; + })} + + ); +} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx index 230a4152cf55d7..8a0d92b1592079 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_form.tsx @@ -12,13 +12,19 @@ import { EuiForm, EuiHorizontalRule, EuiSpacer, + EuiTitle, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import styled from 'styled-components'; +import { AGENT_POLICY_ADVANCED_SETTINGS } from '../../../../../../common/settings'; import type { NewAgentPolicy, AgentPolicy } from '../../../types'; import { useAuthz } from '../../../../../hooks'; +import { ConfiguredSettings } from '../../../components/form_settings'; + +import { ExperimentalFeaturesService } from '../../../../../services'; + import { AgentPolicyAdvancedOptionsContent } from './agent_policy_advanced_fields'; import { AgentPolicyGeneralFields } from './agent_policy_general_fields'; import { AgentPolicyFormSystemMonitoringCheckbox } from './agent_policy_system_monitoring_field'; @@ -37,7 +43,21 @@ interface Props { updateSysMonitoring: (newValue: boolean) => void; validation: ValidationResults; isEditing?: boolean; + // form error state is passed up to the form + updateAdvancedSettingsHasErrors: (hasErrors: boolean) => void; } +const AgentPolicyFormContext = React.createContext< + | { + agentPolicy: Partial & { [key: string]: any }; + updateAgentPolicy: (u: Partial) => void; + updateAdvancedSettingsHasErrors: (hasErrors: boolean) => void; + } + | undefined +>(undefined); + +export const useAgentPolicyFormContext = () => { + return React.useContext(AgentPolicyFormContext); +}; export const AgentPolicyForm: React.FunctionComponent = ({ agentPolicy, @@ -46,10 +66,13 @@ export const AgentPolicyForm: React.FunctionComponent = ({ updateSysMonitoring, validation, isEditing = false, + updateAdvancedSettingsHasErrors, }) => { const authz = useAuthz(); const disabled = !authz.fleet.allAgents; + const { advancedPolicySettings } = ExperimentalFeaturesService.get(); + const generalSettingsWrapper = (children: JSX.Element[]) => ( = ({ ); return ( - - {!isEditing ? ( - - ) : ( - generalSettingsWrapper([ + + + {!isEditing ? ( , - ]) - )} - {!isEditing ? ( - - ) : null} - {!isEditing ? ( - <> - - - + ) : ( + generalSettingsWrapper([ + , + ]) + )} + {!isEditing ? ( + + ) : null} + {!isEditing ? ( + <> + + + + } + buttonClassName="ingest-active-button" + > + + - } - buttonClassName="ingest-active-button" - > - + + {advancedPolicySettings ? ( + <> + + + +

+ +

+
+ + + + ) : null} +
+ + ) : ( + <> -
- - ) : ( - - )} -
+ {advancedPolicySettings ? ( + <> + + + +

+ +

+
+ + + + ) : null} + + + )} +
+ ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx index b3559fb876e1ff..f9ca5fa24226cd 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/details_page/components/settings/index.tsx @@ -52,6 +52,7 @@ const pickAgentPolicyKeysToSend = (agentPolicy: AgentPolicy) => 'fleet_server_host_id', 'agent_features', 'is_protected', + 'advanced_settings', ]); const FormWrapper = styled.div` @@ -77,6 +78,7 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( const [agentCount, setAgentCount] = useState(0); const [withSysMonitoring, setWithSysMonitoring] = useState(true); const validation = agentPolicyFormValidation(agentPolicy); + const [hasAdvancedSettingsErrors, setHasAdvancedSettingsErrors] = useState(false); const updateAgentPolicy = (updatedFields: Partial) => { setAgentPolicy({ @@ -169,6 +171,7 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( updateSysMonitoring={(newValue) => setWithSysMonitoring(newValue)} validation={validation} isEditing={true} + updateAdvancedSettingsHasErrors={setHasAdvancedSettingsErrors} /> {hasChanges ? ( @@ -202,7 +205,11 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( {showDevtoolsRequest ? ( 0} + isDisabled={ + isLoading || + Object.keys(validation).length > 0 || + hasAdvancedSettingsErrors + } btnProps={{ color: 'text', }} @@ -221,7 +228,10 @@ export const SettingsView = memo<{ agentPolicy: AgentPolicy }>( onClick={onSubmit} isLoading={isLoading} isDisabled={ - !hasFleetAllPrivileges || isLoading || Object.keys(validation).length > 0 + !hasFleetAllPrivileges || + isLoading || + Object.keys(validation).length > 0 || + hasAdvancedSettingsErrors } iconType="save" color="primary" diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/list_page/components/create_agent_policy.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/list_page/components/create_agent_policy.tsx index 09650bafdff3cd..bfe9d233b2bf47 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/list_page/components/create_agent_policy.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/list_page/components/create_agent_policy.tsx @@ -53,6 +53,7 @@ export const CreateAgentPolicyFlyout: React.FunctionComponent = ({ const [isLoading, setIsLoading] = useState(false); const [withSysMonitoring, setWithSysMonitoring] = useState(true); const validation = agentPolicyFormValidation(agentPolicy); + const [hasAdvancedSettingsErrors, setHasAdvancedSettingsErrors] = useState(false); const updateAgentPolicy = (updatedFields: Partial) => { setAgentPolicy({ @@ -95,6 +96,7 @@ export const CreateAgentPolicyFlyout: React.FunctionComponent = ({ withSysMonitoring={withSysMonitoring} updateSysMonitoring={(newValue) => setWithSysMonitoring(newValue)} validation={validation} + updateAdvancedSettingsHasErrors={setHasAdvancedSettingsErrors} /> ); @@ -120,7 +122,9 @@ export const CreateAgentPolicyFlyout: React.FunctionComponent = ({ {showDevtoolsRequest ? ( 0} + isDisabled={ + isLoading || Object.keys(validation).length > 0 || hasAdvancedSettingsErrors + } description={i18n.translate( 'xpack.fleet.createAgentPolicy.devtoolsRequestDescription', { @@ -136,7 +140,10 @@ export const CreateAgentPolicyFlyout: React.FunctionComponent = ({ fill isLoading={isLoading} isDisabled={ - !hasFleetAllPrivileges || isLoading || Object.keys(validation).length > 0 + !hasFleetAllPrivileges || + isLoading || + Object.keys(validation).length > 0 || + hasAdvancedSettingsErrors } onClick={async () => { setIsLoading(true); diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 4aef23990ffec9..363b26be84a47e 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -156,6 +156,7 @@ export const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({ is_protected: { type: 'boolean' }, overrides: { type: 'flattened', index: false }, keep_monitoring_alive: { type: 'boolean' }, + advanced_settings: { type: 'flattened', index: false }, }, }, migrations: { @@ -165,6 +166,18 @@ export const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({ '8.5.0': migrateAgentPolicyToV850, '8.9.0': migrateAgentPolicyToV890, }, + modelVersions: { + '1': { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + advanced_settings: { type: 'flattened', index: false }, + }, + }, + ], + }, + }, }, [OUTPUT_SAVED_OBJECT_TYPE]: { name: OUTPUT_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts index 0ecd385c2516cb..7f203dd1399548 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.test.ts @@ -714,6 +714,30 @@ describe('getFullAgentPolicy', () => { revision: 1, }); }); + + it('should return a policy with advanced settings', async () => { + mockAgentPolicy({ + advanced_settings: { + agent_limits_go_max_procs: 2, + agent_download_timeout: '60s', + agent_download_target_directory: '/tmp', + agent_logging_metrics_period: '10s', + }, + }); + const agentPolicy = await getFullAgentPolicy(savedObjectsClientMock.create(), 'agent-policy'); + + expect(agentPolicy).toMatchObject({ + id: 'agent-policy', + agent: { + download: { + timeout: '60s', + target_directory: '/tmp', + }, + limits: { go_max_procs: 2 }, + logging: { metrics: { period: '10s' } }, + }, + }); + }); }); describe('transformOutputToFullPolicyOutput', () => { diff --git a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts index ab277a97774d07..bec47eea524c49 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts @@ -10,6 +10,7 @@ import type { SavedObjectsClientContract } from '@kbn/core/server'; import { safeLoad } from 'js-yaml'; import deepMerge from 'deepmerge'; +import { set } from '@kbn/safer-lodash-set'; import { getDefaultPresetForEsOutput, @@ -37,7 +38,7 @@ import { kafkaCompressionType, outputType, } from '../../../common/constants'; - +import { getSettingsValuesForAgentPolicy } from '../form_settings'; import { getPackageInfo } from '../epm/packages'; import { pkgToPkgKey, splitPkgKey } from '../epm/registry'; import { appContextService } from '../app_context'; @@ -242,6 +243,14 @@ export async function getFullAgentPolicy( fullAgentPolicy.fleet = generateFleetConfig(fleetServerHosts, proxies); } + const settingsValues = getSettingsValuesForAgentPolicy( + 'AGENT_POLICY_ADVANCED_SETTINGS', + agentPolicy + ); + Object.entries(settingsValues).forEach(([settingsKey, settingValue]) => { + set(fullAgentPolicy, settingsKey, settingValue); + }); + // populate protection and signed properties const messageSigningService = appContextService.getMessageSigningService(); if (messageSigningService && fullAgentPolicy.agent) { diff --git a/x-pack/plugins/fleet/server/services/form_settings/form_settings.test.ts b/x-pack/plugins/fleet/server/services/form_settings/form_settings.test.ts new file mode 100644 index 00000000000000..d620737e8dc278 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/form_settings/form_settings.test.ts @@ -0,0 +1,75 @@ +/* + * 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. + */ + +import { z } from 'zod'; +import { schema } from '@kbn/config-schema'; + +import type { SettingsConfig } from '../../../common/settings/types'; + +import { _getSettingsAPISchema, _getSettingsValuesForAgentPolicy } from './form_settings'; + +const TEST_SETTINGS: SettingsConfig[] = [ + { + name: 'test.foo', + title: 'test', + description: 'test', + schema: z.boolean(), + api_field: { + name: 'test_foo', + }, + }, + { + name: 'test.foo.default_value', + title: 'test', + description: 'test', + schema: z.string().default('test'), + api_field: { + name: 'test_foo_default_value', + }, + }, +]; + +describe('form_settings', () => { + describe('_getSettingsAPISchema', () => { + it('generate a valid API schema for api_field', () => { + const apiSchema = schema.object(_getSettingsAPISchema(TEST_SETTINGS)); + + expect(() => + apiSchema.validate({ + advanced_settings: { + test_foo: 'not valid', + }, + }) + ).toThrowError(/Expected boolean, received string/); + + expect(() => + apiSchema.validate({ + advanced_settings: { + test_foo: true, + }, + }) + ).not.toThrow(); + }); + + it('generate a valid API schema for api_field with default value', () => { + const apiSchema = schema.object(_getSettingsAPISchema(TEST_SETTINGS)); + const res = apiSchema.validate({ advanced_settings: {} }); + expect(res).toEqual({ advanced_settings: { test_foo_default_value: 'test' } }); + }); + }); + + describe('_getSettingsValuesForAgentPolicy', () => { + it('generate the proper values for agent policy (full agent policy)', () => { + const res = _getSettingsValuesForAgentPolicy(TEST_SETTINGS, { + advanced_settings: { + test_foo_default_value: 'test', + }, + } as any); + expect(res).toEqual({ 'test.foo.default_value': 'test' }); + }); + }); +}); diff --git a/x-pack/plugins/fleet/server/services/form_settings/form_settings.ts b/x-pack/plugins/fleet/server/services/form_settings/form_settings.ts new file mode 100644 index 00000000000000..a381fcd55b4ba0 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/form_settings/form_settings.ts @@ -0,0 +1,105 @@ +/* + * 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. + */ + +import { type Props, schema } from '@kbn/config-schema'; +import { stringifyZodError } from '@kbn/zod-helpers'; + +import type { SettingsConfig, SettingsSection } from '../../../common/settings/types'; +import { AGENT_POLICY_ADVANCED_SETTINGS } from '../../../common/settings'; +import type { AgentPolicy } from '../../types'; + +export function getSettingsAPISchema(settingSection: SettingsSection) { + const settings = getSettings(settingSection); + + return _getSettingsAPISchema(settings); +} + +export function _getSettingsAPISchema(settings: SettingsConfig[]): Props { + const validations: Props = {}; + settings.forEach((setting) => { + if (!setting.api_field) { + return; + } + const defaultValueRes = setting.schema.safeParse(undefined); + const defaultValue = defaultValueRes.success ? defaultValueRes.data : undefined; + if (defaultValue) { + validations[setting.api_field.name] = schema.oneOf( + [ + schema.any({ + validate: (val: any) => { + const res = setting.schema.safeParse(val); + if (!res.success) { + return stringifyZodError(res.error); + } + }, + }), + schema.literal(null), + ], + { + defaultValue, + } + ); + } else { + validations[setting.api_field.name] = schema.maybe( + schema.nullable( + schema.any({ + validate: (val: any) => { + const res = setting.schema.safeParse(val); + if (!res.success) { + return stringifyZodError(res.error); + } + }, + }) + ) + ); + } + }); + + const advancedSettingsValidations: Props = { + advanced_settings: schema.maybe( + schema.object({ + ...validations, + }) + ), + }; + return advancedSettingsValidations; +} + +export function getSettingsValuesForAgentPolicy( + settingSection: SettingsSection, + agentPolicy: AgentPolicy +) { + const settings = getSettings(settingSection); + + return _getSettingsValuesForAgentPolicy(settings, agentPolicy); +} + +export function _getSettingsValuesForAgentPolicy( + settings: SettingsConfig[], + agentPolicy: AgentPolicy +) { + const settingsValues: { [k: string]: any } = {}; + settings.forEach((setting) => { + if (!setting.api_field) { + return; + } + + const val = agentPolicy.advanced_settings?.[setting.api_field.name]; + if (val) { + settingsValues[setting.name] = val; + } + }); + return settingsValues; +} + +export function getSettings(settingSection: SettingsSection) { + if (settingSection === 'AGENT_POLICY_ADVANCED_SETTINGS') { + return AGENT_POLICY_ADVANCED_SETTINGS; + } + + throw new Error(`Invalid settings section ${settingSection}`); +} diff --git a/x-pack/plugins/fleet/server/services/form_settings/index.ts b/x-pack/plugins/fleet/server/services/form_settings/index.ts new file mode 100644 index 00000000000000..b88cd1e0eda2aa --- /dev/null +++ b/x-pack/plugins/fleet/server/services/form_settings/index.ts @@ -0,0 +1,12 @@ +/* + * 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. + */ + +export { + getSettings, + getSettingsAPISchema, + getSettingsValuesForAgentPolicy, +} from './form_settings'; diff --git a/x-pack/plugins/fleet/server/types/models/agent_policy.ts b/x-pack/plugins/fleet/server/types/models/agent_policy.ts index 518510f0b84542..748a5c81c1bfb1 100644 --- a/x-pack/plugins/fleet/server/types/models/agent_policy.ts +++ b/x-pack/plugins/fleet/server/types/models/agent_policy.ts @@ -9,6 +9,7 @@ import { schema } from '@kbn/config-schema'; import { agentPolicyStatuses, dataTypes } from '../../../common/constants'; import { isValidNamespace } from '../../../common/services'; +import { getSettingsAPISchema } from '../../services/form_settings'; import { PackagePolicySchema } from './package_policy'; @@ -81,6 +82,7 @@ export const AgentPolicyBaseSchema = { }) ) ), + ...getSettingsAPISchema('AGENT_POLICY_ADVANCED_SETTINGS'), }; export const NewAgentPolicySchema = schema.object({ diff --git a/x-pack/plugins/fleet/tsconfig.json b/x-pack/plugins/fleet/tsconfig.json index b99fb0cce0985e..d57c36aa70165e 100644 --- a/x-pack/plugins/fleet/tsconfig.json +++ b/x-pack/plugins/fleet/tsconfig.json @@ -105,5 +105,6 @@ "@kbn/core-http-server-mocks", "@kbn/code-editor", "@kbn/core-test-helpers-model-versions", + "@kbn/zod-helpers", ] } From 737156f24d64e05292cc0e273dd04cb9db3a0307 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 9 Apr 2024 08:19:40 -0500 Subject: [PATCH 24/75] [ci] Upgrade follow-redirects to 1.15.6 (#180326) --- .buildkite/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.buildkite/package-lock.json b/.buildkite/package-lock.json index 401f25347ebc0e..b782b9c1d34eba 100644 --- a/.buildkite/package-lock.json +++ b/.buildkite/package-lock.json @@ -696,9 +696,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -2200,9 +2200,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "form-data": { "version": "4.0.0", From 8a211291204d9140aa7546a2b68797d02a52bbcc Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Tue, 9 Apr 2024 08:30:58 -0500 Subject: [PATCH 25/75] Add APM OpenAPI spec (#180096) Add a YAML OpenAPI spec for some of the [APM APIs](https://www.elastic.co/guide/en/kibana/current/apm-api.html). This spec was artisanally crafted by @sorenlouv and previously published https://gist.github.com/sorenlouv/19fb1ffc0b7552fb41b193462d6ee9db. It has been copied here to fulfill some requirements for https://github.com/elastic/docs-projects/issues/175. We will prioritize the existing issue https://github.com/elastic/kibana/issues/129061 to replace the contents with automatically-generated and complete specs. --- .../apm/docs/openapi/apm.yaml | 169 ++++++++++++++++++ .../apm/docs/openapi/apm/README.md | 17 ++ 2 files changed, 186 insertions(+) create mode 100644 x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml create mode 100644 x-pack/plugins/observability_solution/apm/docs/openapi/apm/README.md diff --git a/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml b/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml new file mode 100644 index 00000000000000..c110abbfafa92b --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml @@ -0,0 +1,169 @@ +openapi: 3.0.0 +info: + title: APM UI + version: 1.0.0 +paths: + /api/apm/agent_keys: + post: + summary: Create an APM agent key + description: Create a new agent key for APM. + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + privileges: + type: array + items: + type: string + enum: + - event:write + - config_agent:read + responses: + "200": + description: Agent key created successfully + content: + application/json: + schema: + type: object + properties: + api_key: + type: string + expiration: + type: integer + format: int64 + id: + type: string + name: + type: string + encoded: + type: string + /api/apm/services/{serviceName}/annotation/search: + get: + summary: Search for annotations + description: Search for annotations related to a specific service. + parameters: + - name: serviceName + in: path + required: true + description: The name of the service + schema: + type: string + - name: environment + in: query + required: false + description: The environment to filter annotations by + schema: + type: string + - name: start + in: query + required: false + description: The start date for the search + schema: + type: string + - name: end + in: query + required: false + description: The end date for the search + schema: + type: string + responses: + "200": + description: Successful response + content: + application/json: + schema: + type: object + properties: + annotations: + type: array + items: + type: object + properties: + type: + type: string + enum: + - version + id: + type: string + "@timestamp": + type: number + text: + type: string + /api/apm/services/{serviceName}/annotation: + post: + summary: Create a service annotation + description: Create a new annotation for a specific service. + parameters: + - name: serviceName + in: path + required: true + description: The name of the service + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + '@timestamp': + type: string + service: + type: object + properties: + version: + type: string + environment: + type: string + message: + type: string + tags: + type: array + items: + type: string + + responses: + '200': + description: Annotation created successfully + content: + application/json: + schema: + type: object + properties: + _id: + type: string + _index: + type: string + _source: + type: object + properties: + annotation: + type: string + tags: + type: array + items: + type: string + message: + type: string + service: + type: object + properties: + name: + type: string + environment: + type: string + version: + type: string + event: + type: object + properties: + created: + type: string + '@timestamp': + type: string diff --git a/x-pack/plugins/observability_solution/apm/docs/openapi/apm/README.md b/x-pack/plugins/observability_solution/apm/docs/openapi/apm/README.md new file mode 100644 index 00000000000000..da35d6b891239e --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/docs/openapi/apm/README.md @@ -0,0 +1,17 @@ +# APM app OpenAPI documentation + +This directory contains [OpenAPI specifications](https://swagger.io/specification/) for the [APM app API](https://www.elastic.co/guide/en/kibana/current/apm-api.html) in Kibana. + +Included: + +* [Agent Configuration API](https://www.elastic.co/guide/en/kibana/current/agent-config-api.html) +* [Annotation API](https://www.elastic.co/guide/en/kibana/current/apm-annotation-api.html) + +Not included: + +* [APM agent Key API](https://www.elastic.co/guide/en/kibana/current/agent-key-api.html) +* [RUM source map API](https://www.elastic.co/guide/en/kibana/current/rum-sourcemap-api.html) + +The specifications for the included APIs are in the apm.yaml file in this directory. + +These specifications are manually written. The missing ones will be included in the future. From 051b32c49b4796606f65d3a84d89e935d1e1eb2a Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:55:46 -0400 Subject: [PATCH 26/75] skip failing test suite (#171168) --- .../cypress/e2e/artifacts/artifacts_mocked_data.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts index 8d21ff38043640..d1b724acad6eff 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifacts_mocked_data.cy.ts @@ -32,7 +32,8 @@ const loginWithoutAccess = (url: string) => { }; // Flaky: https://github.com/elastic/kibana/issues/171168 -describe('Artifacts pages', { tags: ['@ess', '@serverless'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/171168 +describe.skip('Artifacts pages', { tags: ['@ess', '@serverless'] }, () => { let endpointData: ReturnTypeFromChainable | undefined; before(() => { From 57fa1a024f611b623f02a85f235536b10ef7ff30 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:56:04 -0400 Subject: [PATCH 27/75] skip failing test suite (#171643) --- ...dpoint_list_with_security_essentials.cy.ts | 63 +++++++++---------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts index 9cd298535df26d..e8ea8d5ae1d708 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts @@ -15,45 +15,42 @@ import { visitEndpointList, } from '../../screens'; -describe( - 'When on the Endpoint List in Security Essentials PLI', - { - tags: ['@serverless'], - env: { - ftrConfig: { - productTypes: [{ product_line: 'security', product_tier: 'essentials' }], - }, +// Failing: See https://github.com/elastic/kibana/issues/171643 +describe.skip('When on the Endpoint List in Security Essentials PLI', { + tags: ['@serverless'], + env: { + ftrConfig: { + productTypes: [{ product_line: 'security', product_tier: 'essentials' }], }, }, - () => { - describe('and Isolated hosts exist', () => { - let indexedEndpointData: CyIndexEndpointHosts; +}, () => { + describe('and Isolated hosts exist', () => { + let indexedEndpointData: CyIndexEndpointHosts; - before(() => { - indexEndpointHosts({ isolation: true }).then((response) => { - indexedEndpointData = response; - }); + before(() => { + indexEndpointHosts({ isolation: true }).then((response) => { + indexedEndpointData = response; }); + }); - after(() => { - if (indexedEndpointData) { - indexedEndpointData.cleanup(); - } - }); + after(() => { + if (indexedEndpointData) { + indexedEndpointData.cleanup(); + } + }); - beforeEach(() => { - login(); - visitEndpointList(); - openRowActionMenu(); - }); + beforeEach(() => { + login(); + visitEndpointList(); + openRowActionMenu(); + }); - it('should display `release` options in host row actions', () => { - getUnIsolateActionMenuItem().should('exist'); - }); + it('should display `release` options in host row actions', () => { + getUnIsolateActionMenuItem().should('exist'); + }); - it('should NOT display access to response console', () => { - getConsoleActionMenuItem().should('not.exist'); - }); + it('should NOT display access to response console', () => { + getConsoleActionMenuItem().should('not.exist'); }); - } -); + }); +}); From 70732768d68089a011f1273ace424cdde2e1660a Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:56:12 -0400 Subject: [PATCH 28/75] skip failing test suite (#170985) --- .../essentials_with_endpoint.roles.cy.ts | 365 +++++++++--------- 1 file changed, 181 insertions(+), 184 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts index 4e0ae2080a97b7..41b2f00dd9b412 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts @@ -23,182 +23,224 @@ import { ensurePolicyDetailsPageAuthzAccess, } from '../../../screens'; -describe( - 'Roles for Security Essential PLI with Endpoint Essentials addon', - { - tags: ['@serverless'], - env: { - ftrConfig: { - productTypes: [ - { product_line: 'security', product_tier: 'essentials' }, - { product_line: 'endpoint', product_tier: 'essentials' }, - ], - }, +// Failing: See https://github.com/elastic/kibana/issues/170985 +describe.skip('Roles for Security Essential PLI with Endpoint Essentials addon', { + tags: ['@serverless'], + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + ], }, }, - () => { - const allPages = getEndpointManagementPageList(); - const pageById = getEndpointManagementPageMap(); +}, () => { + const allPages = getEndpointManagementPageList(); + const pageById = getEndpointManagementPageMap(); - let loadedEndpoints: CyIndexEndpointHosts; + let loadedEndpoints: CyIndexEndpointHosts; - before(() => { - indexEndpointHosts().then((response) => { - loadedEndpoints = response; - }); - }); - - after(() => { - if (loadedEndpoints) { - loadedEndpoints.cleanup(); - } + before(() => { + indexEndpointHosts().then((response) => { + loadedEndpoints = response; }); + }); - // roles `t1_analyst` and `t2_analyst` are the same as far as endpoint access - [ROLE.t1_analyst, ROLE.t2_analyst].forEach((roleName) => { - describe(`for role: ${roleName}`, () => { - const deniedPages = allPages.filter((page) => page.id !== 'endpointList'); - - beforeEach(() => { - login(roleName); - }); - - it('should have READ access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('read', true); - }); + after(() => { + if (loadedEndpoints) { + loadedEndpoints.cleanup(); + } + }); - for (const { url, title } of deniedPages) { - it(`should NOT have access to: ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('exist'); - }); - } - - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); - }); - }); - }); - - describe('for role: t3_analyst', () => { - const artifactPagesFullAccess = [ - pageById.trustedApps, - pageById.eventFilters, - pageById.blocklist, - ]; + // roles `t1_analyst` and `t2_analyst` are the same as far as endpoint access + [ROLE.t1_analyst, ROLE.t2_analyst].forEach((roleName) => { + describe(`for role: ${roleName}`, () => { + const deniedPages = allPages.filter((page) => page.id !== 'endpointList'); beforeEach(() => { - login(ROLE.t3_analyst); + login(roleName); }); - it('should have access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('all', true); - }); - - it('should have read access to Endpoint Policy Management', () => { - ensurePolicyListPageAuthzAccess('read', true); - ensurePolicyDetailsPageAuthzAccess( - loadedEndpoints.data.integrationPolicies[0].id, - 'read', - true - ); + it('should have READ access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('read', true); }); - for (const { title, id } of artifactPagesFullAccess) { - it(`should have CRUD access to: ${title}`, () => { - ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); + for (const { url, title } of deniedPages) { + it(`should NOT have access to: ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('exist'); }); } - it(`should NOT have access to Host Isolation Exceptions`, () => { - ensureArtifactPageAuthzAccess( - 'none', - pageById.hostIsolationExceptions.id as EndpointArtifactPageId - ); - }); - it('should NOT have access to Fleet', () => { visitFleetAgentList(); ensureFleetPermissionDeniedScreen(); }); }); + }); - describe('for role: threat_intelligence_analyst', () => { - const deniedPages = allPages.filter(({ id }) => id !== 'blocklist' && id !== 'endpointList'); + describe('for role: t3_analyst', () => { + const artifactPagesFullAccess = [ + pageById.trustedApps, + pageById.eventFilters, + pageById.blocklist, + ]; - beforeEach(() => { - login(ROLE.threat_intelligence_analyst); - }); + beforeEach(() => { + login(ROLE.t3_analyst); + }); - it('should have access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('read', true); - }); + it('should have access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('all', true); + }); - it(`should have ALL access to: Blocklist`, () => { - cy.visit(pageById.blocklist.url); - getArtifactListEmptyStateAddButton(pageById.blocklist.id as EndpointArtifactPageId).should( - 'exist' - ); + it('should have read access to Endpoint Policy Management', () => { + ensurePolicyListPageAuthzAccess('read', true); + ensurePolicyDetailsPageAuthzAccess( + loadedEndpoints.data.integrationPolicies[0].id, + 'read', + true + ); + }); + + for (const { title, id } of artifactPagesFullAccess) { + it(`should have CRUD access to: ${title}`, () => { + ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); }); + } - for (const { url, title } of deniedPages) { - it(`should NOT have access to: ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('exist'); - }); - } + it(`should NOT have access to Host Isolation Exceptions`, () => { + ensureArtifactPageAuthzAccess( + 'none', + pageById.hostIsolationExceptions.id as EndpointArtifactPageId + ); + }); - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); - }); + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); }); + }); - describe('for role: rule_author', () => { - const artifactPagesFullAccess = [ - pageById.trustedApps, - pageById.eventFilters, - pageById.blocklist, - ]; + describe('for role: threat_intelligence_analyst', () => { + const deniedPages = allPages.filter(({ id }) => id !== 'blocklist' && id !== 'endpointList'); - beforeEach(() => { - login(ROLE.rule_author); - }); + beforeEach(() => { + login(ROLE.threat_intelligence_analyst); + }); - for (const { id, title } of artifactPagesFullAccess) { - it(`should have CRUD access to: ${title}`, () => { - ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); - }); - } + it('should have access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('read', true); + }); + + it(`should have ALL access to: Blocklist`, () => { + cy.visit(pageById.blocklist.url); + getArtifactListEmptyStateAddButton(pageById.blocklist.id as EndpointArtifactPageId).should( + 'exist' + ); + }); - it('should have access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('all', true); + for (const { url, title } of deniedPages) { + it(`should NOT have access to: ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('exist'); }); + } - it('should have access to policy management', () => { - ensurePolicyListPageAuthzAccess('all', true); - ensurePolicyDetailsPageAuthzAccess( - loadedEndpoints.data.integrationPolicies[0].id, - 'all', - true - ); + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); + }); + }); + + describe('for role: rule_author', () => { + const artifactPagesFullAccess = [ + pageById.trustedApps, + pageById.eventFilters, + pageById.blocklist, + ]; + + beforeEach(() => { + login(ROLE.rule_author); + }); + + for (const { id, title } of artifactPagesFullAccess) { + it(`should have CRUD access to: ${title}`, () => { + ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); }); + } - it(`should NOT have access to Host Isolation Exceptions`, () => { - ensureArtifactPageAuthzAccess( - 'none', - pageById.hostIsolationExceptions.id as EndpointArtifactPageId - ); + it('should have access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('all', true); + }); + + it('should have access to policy management', () => { + ensurePolicyListPageAuthzAccess('all', true); + ensurePolicyDetailsPageAuthzAccess( + loadedEndpoints.data.integrationPolicies[0].id, + 'all', + true + ); + }); + + it(`should NOT have access to Host Isolation Exceptions`, () => { + ensureArtifactPageAuthzAccess( + 'none', + pageById.hostIsolationExceptions.id as EndpointArtifactPageId + ); + }); + + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); + }); + }); + + describe('for role: soc_manager', () => { + const artifactPagesFullAccess = [ + pageById.trustedApps, + pageById.eventFilters, + pageById.blocklist, + ]; + const grantedAccessPages = [pageById.endpointList, pageById.policyList]; + + beforeEach(() => { + login(ROLE.soc_manager); + }); + + for (const { id, title } of artifactPagesFullAccess) { + it(`should have CRUD access to: ${title}`, () => { + ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); }); + } - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); + for (const { url, title } of grantedAccessPages) { + it(`should have access to: ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('not.exist'); }); + } + + it(`should NOT have access to Host Isolation Exceptions`, () => { + ensureArtifactPageAuthzAccess( + 'none', + pageById.hostIsolationExceptions.id as EndpointArtifactPageId + ); }); - describe('for role: soc_manager', () => { + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); + }); + }); + + // Endpoint Operations Manager, Endpoint Policy Manager and Platform Engineer currently have the same level of access + [ + ROLE.platform_engineer, + ROLE.endpoint_operations_analyst, + ROLE.endpoint_policy_manager, + ].forEach((roleName) => { + describe(`for role: ${roleName}`, () => { const artifactPagesFullAccess = [ pageById.trustedApps, pageById.eventFilters, @@ -207,7 +249,7 @@ describe( const grantedAccessPages = [pageById.endpointList, pageById.policyList]; beforeEach(() => { - login(ROLE.soc_manager); + login(roleName); }); for (const { id, title } of artifactPagesFullAccess) { @@ -230,55 +272,10 @@ describe( ); }); - it('should NOT have access to Fleet', () => { + it('should have access to Fleet', () => { visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); - }); - }); - - // Endpoint Operations Manager, Endpoint Policy Manager and Platform Engineer currently have the same level of access - [ - ROLE.platform_engineer, - ROLE.endpoint_operations_analyst, - ROLE.endpoint_policy_manager, - ].forEach((roleName) => { - describe(`for role: ${roleName}`, () => { - const artifactPagesFullAccess = [ - pageById.trustedApps, - pageById.eventFilters, - pageById.blocklist, - ]; - const grantedAccessPages = [pageById.endpointList, pageById.policyList]; - - beforeEach(() => { - login(roleName); - }); - - for (const { id, title } of artifactPagesFullAccess) { - it(`should have CRUD access to: ${title}`, () => { - ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); - }); - } - - for (const { url, title } of grantedAccessPages) { - it(`should have access to: ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('not.exist'); - }); - } - - it(`should NOT have access to Host Isolation Exceptions`, () => { - ensureArtifactPageAuthzAccess( - 'none', - pageById.hostIsolationExceptions.id as EndpointArtifactPageId - ); - }); - - it('should have access to Fleet', () => { - visitFleetAgentList(); - getFleetAgentListTable().should('exist'); - }); + getFleetAgentListTable().should('exist'); }); }); - } -); + }); +}); From a32ca3b0a65f88fdabc78bb9add63727e910d515 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 09:56:31 -0400 Subject: [PATCH 29/75] skip failing test suite (#171644) --- .../e2e/artifacts/artifact_tabs_in_policy_details.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts index b6040691c485f4..7fd516d217b953 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/artifacts/artifact_tabs_in_policy_details.cy.ts @@ -59,7 +59,8 @@ const visitArtifactTab = (tabId: string) => { cy.get(`#${tabId}`).click(); }; -describe('Artifact tabs in Policy Details page', { tags: ['@ess', '@serverless'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/171644 +describe.skip('Artifact tabs in Policy Details page', { tags: ['@ess', '@serverless'] }, () => { let endpointData: ReturnTypeFromChainable | undefined; before(() => { From 6b97bb5181ae8d8d1635c48c365c06d5ecdc5540 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 9 Apr 2024 09:03:22 -0500 Subject: [PATCH 30/75] fix lint error --- .../essentials_with_endpoint.roles.cy.ts | 364 +++++++++--------- 1 file changed, 184 insertions(+), 180 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts index 41b2f00dd9b412..cdef86bb1d4a71 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/essentials_with_endpoint.roles.cy.ts @@ -24,223 +24,182 @@ import { } from '../../../screens'; // Failing: See https://github.com/elastic/kibana/issues/170985 -describe.skip('Roles for Security Essential PLI with Endpoint Essentials addon', { - tags: ['@serverless'], - env: { - ftrConfig: { - productTypes: [ - { product_line: 'security', product_tier: 'essentials' }, - { product_line: 'endpoint', product_tier: 'essentials' }, - ], +describe.skip( + 'Roles for Security Essential PLI with Endpoint Essentials addon', + { + tags: ['@serverless'], + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + ], + }, }, }, -}, () => { - const allPages = getEndpointManagementPageList(); - const pageById = getEndpointManagementPageMap(); + () => { + const allPages = getEndpointManagementPageList(); + const pageById = getEndpointManagementPageMap(); - let loadedEndpoints: CyIndexEndpointHosts; + let loadedEndpoints: CyIndexEndpointHosts; - before(() => { - indexEndpointHosts().then((response) => { - loadedEndpoints = response; + before(() => { + indexEndpointHosts().then((response) => { + loadedEndpoints = response; + }); + }); + + after(() => { + if (loadedEndpoints) { + loadedEndpoints.cleanup(); + } }); - }); - after(() => { - if (loadedEndpoints) { - loadedEndpoints.cleanup(); - } - }); + // roles `t1_analyst` and `t2_analyst` are the same as far as endpoint access + [ROLE.t1_analyst, ROLE.t2_analyst].forEach((roleName) => { + describe(`for role: ${roleName}`, () => { + const deniedPages = allPages.filter((page) => page.id !== 'endpointList'); + + beforeEach(() => { + login(roleName); + }); + + it('should have READ access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('read', true); + }); - // roles `t1_analyst` and `t2_analyst` are the same as far as endpoint access - [ROLE.t1_analyst, ROLE.t2_analyst].forEach((roleName) => { - describe(`for role: ${roleName}`, () => { - const deniedPages = allPages.filter((page) => page.id !== 'endpointList'); + for (const { url, title } of deniedPages) { + it(`should NOT have access to: ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('exist'); + }); + } + + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); + }); + }); + }); + + describe('for role: t3_analyst', () => { + const artifactPagesFullAccess = [ + pageById.trustedApps, + pageById.eventFilters, + pageById.blocklist, + ]; beforeEach(() => { - login(roleName); + login(ROLE.t3_analyst); }); - it('should have READ access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('read', true); + it('should have access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('all', true); }); - for (const { url, title } of deniedPages) { - it(`should NOT have access to: ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('exist'); + it('should have read access to Endpoint Policy Management', () => { + ensurePolicyListPageAuthzAccess('read', true); + ensurePolicyDetailsPageAuthzAccess( + loadedEndpoints.data.integrationPolicies[0].id, + 'read', + true + ); + }); + + for (const { title, id } of artifactPagesFullAccess) { + it(`should have CRUD access to: ${title}`, () => { + ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); }); } + it(`should NOT have access to Host Isolation Exceptions`, () => { + ensureArtifactPageAuthzAccess( + 'none', + pageById.hostIsolationExceptions.id as EndpointArtifactPageId + ); + }); + it('should NOT have access to Fleet', () => { visitFleetAgentList(); ensureFleetPermissionDeniedScreen(); }); }); - }); - - describe('for role: t3_analyst', () => { - const artifactPagesFullAccess = [ - pageById.trustedApps, - pageById.eventFilters, - pageById.blocklist, - ]; - - beforeEach(() => { - login(ROLE.t3_analyst); - }); - - it('should have access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('all', true); - }); - it('should have read access to Endpoint Policy Management', () => { - ensurePolicyListPageAuthzAccess('read', true); - ensurePolicyDetailsPageAuthzAccess( - loadedEndpoints.data.integrationPolicies[0].id, - 'read', - true - ); - }); + describe('for role: threat_intelligence_analyst', () => { + const deniedPages = allPages.filter(({ id }) => id !== 'blocklist' && id !== 'endpointList'); - for (const { title, id } of artifactPagesFullAccess) { - it(`should have CRUD access to: ${title}`, () => { - ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); + beforeEach(() => { + login(ROLE.threat_intelligence_analyst); }); - } - - it(`should NOT have access to Host Isolation Exceptions`, () => { - ensureArtifactPageAuthzAccess( - 'none', - pageById.hostIsolationExceptions.id as EndpointArtifactPageId - ); - }); - - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); - }); - }); - - describe('for role: threat_intelligence_analyst', () => { - const deniedPages = allPages.filter(({ id }) => id !== 'blocklist' && id !== 'endpointList'); - beforeEach(() => { - login(ROLE.threat_intelligence_analyst); - }); + it('should have access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('read', true); + }); - it('should have access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('read', true); - }); + it(`should have ALL access to: Blocklist`, () => { + cy.visit(pageById.blocklist.url); + getArtifactListEmptyStateAddButton(pageById.blocklist.id as EndpointArtifactPageId).should( + 'exist' + ); + }); - it(`should have ALL access to: Blocklist`, () => { - cy.visit(pageById.blocklist.url); - getArtifactListEmptyStateAddButton(pageById.blocklist.id as EndpointArtifactPageId).should( - 'exist' - ); - }); + for (const { url, title } of deniedPages) { + it(`should NOT have access to: ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('exist'); + }); + } - for (const { url, title } of deniedPages) { - it(`should NOT have access to: ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('exist'); + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); }); - } - - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); }); - }); - describe('for role: rule_author', () => { - const artifactPagesFullAccess = [ - pageById.trustedApps, - pageById.eventFilters, - pageById.blocklist, - ]; - - beforeEach(() => { - login(ROLE.rule_author); - }); + describe('for role: rule_author', () => { + const artifactPagesFullAccess = [ + pageById.trustedApps, + pageById.eventFilters, + pageById.blocklist, + ]; - for (const { id, title } of artifactPagesFullAccess) { - it(`should have CRUD access to: ${title}`, () => { - ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); + beforeEach(() => { + login(ROLE.rule_author); }); - } - - it('should have access to Endpoint list page', () => { - ensureEndpointListPageAuthzAccess('all', true); - }); - it('should have access to policy management', () => { - ensurePolicyListPageAuthzAccess('all', true); - ensurePolicyDetailsPageAuthzAccess( - loadedEndpoints.data.integrationPolicies[0].id, - 'all', - true - ); - }); - - it(`should NOT have access to Host Isolation Exceptions`, () => { - ensureArtifactPageAuthzAccess( - 'none', - pageById.hostIsolationExceptions.id as EndpointArtifactPageId - ); - }); + for (const { id, title } of artifactPagesFullAccess) { + it(`should have CRUD access to: ${title}`, () => { + ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); + }); + } - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); - }); - }); - - describe('for role: soc_manager', () => { - const artifactPagesFullAccess = [ - pageById.trustedApps, - pageById.eventFilters, - pageById.blocklist, - ]; - const grantedAccessPages = [pageById.endpointList, pageById.policyList]; - - beforeEach(() => { - login(ROLE.soc_manager); - }); + it('should have access to Endpoint list page', () => { + ensureEndpointListPageAuthzAccess('all', true); + }); - for (const { id, title } of artifactPagesFullAccess) { - it(`should have CRUD access to: ${title}`, () => { - ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); + it('should have access to policy management', () => { + ensurePolicyListPageAuthzAccess('all', true); + ensurePolicyDetailsPageAuthzAccess( + loadedEndpoints.data.integrationPolicies[0].id, + 'all', + true + ); }); - } - for (const { url, title } of grantedAccessPages) { - it(`should have access to: ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('not.exist'); + it(`should NOT have access to Host Isolation Exceptions`, () => { + ensureArtifactPageAuthzAccess( + 'none', + pageById.hostIsolationExceptions.id as EndpointArtifactPageId + ); }); - } - it(`should NOT have access to Host Isolation Exceptions`, () => { - ensureArtifactPageAuthzAccess( - 'none', - pageById.hostIsolationExceptions.id as EndpointArtifactPageId - ); + it('should NOT have access to Fleet', () => { + visitFleetAgentList(); + ensureFleetPermissionDeniedScreen(); + }); }); - it('should NOT have access to Fleet', () => { - visitFleetAgentList(); - ensureFleetPermissionDeniedScreen(); - }); - }); - - // Endpoint Operations Manager, Endpoint Policy Manager and Platform Engineer currently have the same level of access - [ - ROLE.platform_engineer, - ROLE.endpoint_operations_analyst, - ROLE.endpoint_policy_manager, - ].forEach((roleName) => { - describe(`for role: ${roleName}`, () => { + describe('for role: soc_manager', () => { const artifactPagesFullAccess = [ pageById.trustedApps, pageById.eventFilters, @@ -249,7 +208,7 @@ describe.skip('Roles for Security Essential PLI with Endpoint Essentials addon', const grantedAccessPages = [pageById.endpointList, pageById.policyList]; beforeEach(() => { - login(roleName); + login(ROLE.soc_manager); }); for (const { id, title } of artifactPagesFullAccess) { @@ -272,10 +231,55 @@ describe.skip('Roles for Security Essential PLI with Endpoint Essentials addon', ); }); - it('should have access to Fleet', () => { + it('should NOT have access to Fleet', () => { visitFleetAgentList(); - getFleetAgentListTable().should('exist'); + ensureFleetPermissionDeniedScreen(); + }); + }); + + // Endpoint Operations Manager, Endpoint Policy Manager and Platform Engineer currently have the same level of access + [ + ROLE.platform_engineer, + ROLE.endpoint_operations_analyst, + ROLE.endpoint_policy_manager, + ].forEach((roleName) => { + describe(`for role: ${roleName}`, () => { + const artifactPagesFullAccess = [ + pageById.trustedApps, + pageById.eventFilters, + pageById.blocklist, + ]; + const grantedAccessPages = [pageById.endpointList, pageById.policyList]; + + beforeEach(() => { + login(roleName); + }); + + for (const { id, title } of artifactPagesFullAccess) { + it(`should have CRUD access to: ${title}`, () => { + ensureArtifactPageAuthzAccess('all', id as EndpointArtifactPageId); + }); + } + + for (const { url, title } of grantedAccessPages) { + it(`should have access to: ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('not.exist'); + }); + } + + it(`should NOT have access to Host Isolation Exceptions`, () => { + ensureArtifactPageAuthzAccess( + 'none', + pageById.hostIsolationExceptions.id as EndpointArtifactPageId + ); + }); + + it('should have access to Fleet', () => { + visitFleetAgentList(); + getFleetAgentListTable().should('exist'); + }); }); }); - }); -}); + } +); From cbf73ec1970e83792f55882738c6f0cb42f2d5d3 Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 9 Apr 2024 09:04:11 -0500 Subject: [PATCH 31/75] fix lint error --- ...dpoint_list_with_security_essentials.cy.ts | 62 ++++++++++--------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts index e8ea8d5ae1d708..7f003848db88ca 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/endpoint_list_with_security_essentials.cy.ts @@ -16,41 +16,45 @@ import { } from '../../screens'; // Failing: See https://github.com/elastic/kibana/issues/171643 -describe.skip('When on the Endpoint List in Security Essentials PLI', { - tags: ['@serverless'], - env: { - ftrConfig: { - productTypes: [{ product_line: 'security', product_tier: 'essentials' }], +describe.skip( + 'When on the Endpoint List in Security Essentials PLI', + { + tags: ['@serverless'], + env: { + ftrConfig: { + productTypes: [{ product_line: 'security', product_tier: 'essentials' }], + }, }, }, -}, () => { - describe('and Isolated hosts exist', () => { - let indexedEndpointData: CyIndexEndpointHosts; + () => { + describe('and Isolated hosts exist', () => { + let indexedEndpointData: CyIndexEndpointHosts; - before(() => { - indexEndpointHosts({ isolation: true }).then((response) => { - indexedEndpointData = response; + before(() => { + indexEndpointHosts({ isolation: true }).then((response) => { + indexedEndpointData = response; + }); }); - }); - after(() => { - if (indexedEndpointData) { - indexedEndpointData.cleanup(); - } - }); + after(() => { + if (indexedEndpointData) { + indexedEndpointData.cleanup(); + } + }); - beforeEach(() => { - login(); - visitEndpointList(); - openRowActionMenu(); - }); + beforeEach(() => { + login(); + visitEndpointList(); + openRowActionMenu(); + }); - it('should display `release` options in host row actions', () => { - getUnIsolateActionMenuItem().should('exist'); - }); + it('should display `release` options in host row actions', () => { + getUnIsolateActionMenuItem().should('exist'); + }); - it('should NOT display access to response console', () => { - getConsoleActionMenuItem().should('not.exist'); + it('should NOT display access to response console', () => { + getConsoleActionMenuItem().should('not.exist'); + }); }); - }); -}); + } +); From 923d683dc9757786728962ef85d68a152268561c Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:06:20 -0400 Subject: [PATCH 32/75] skip failing test suite (#172549) --- .../e2e/response_actions/response_actions_history.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts index a36f7e3beaec46..fb953d22f23be0 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_actions_history.cy.ts @@ -10,7 +10,8 @@ import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts'; import { login } from '../../tasks/login'; import { loadPage } from '../../tasks/common'; -describe('Response actions history page', { tags: ['@ess', '@serverless'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/172549 +describe.skip('Response actions history page', { tags: ['@ess', '@serverless'] }, () => { let endpointData: ReturnTypeFromChainable; before(() => { From 66fcd179bfbf9b431446f19ad677933e20ae1db0 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:07:35 -0400 Subject: [PATCH 33/75] skip failing test suite (#169894) --- .../management/cypress/e2e/response_actions/responder.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts index e737779ad8ff98..4968fb9bda21a1 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/responder.cy.ts @@ -21,7 +21,8 @@ import { indexNewCase } from '../../tasks/index_new_case'; import { indexEndpointHosts } from '../../tasks/index_endpoint_hosts'; import { indexEndpointRuleAlerts } from '../../tasks/index_endpoint_rule_alerts'; -describe('When accessing Endpoint Response Console', { tags: ['@ess', '@serverless'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/169894 +describe.skip('When accessing Endpoint Response Console', { tags: ['@ess', '@serverless'] }, () => { const performResponderSanityChecks = () => { openResponderActionLogFlyout(); // Ensure the popover in the action log date quick select picker is accessible From 5336a237db4b75aa8c20cb636756d540f454ff13 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Tue, 9 Apr 2024 16:22:10 +0200 Subject: [PATCH 34/75] [HTTP/OAS] Prepare `@kbn/config-schema` for generating OAS (#180184) ## Summary Introduces a set of meta fields that will be used to track metadata lost in how we currently use `joi` inside of `@kbn/config-schema`. ## Notes * Related https://github.com/elastic/kibana/issues/180056 * Changes cherry-picked from https://github.com/elastic/kibana/pull/156357 * Changes are not used for anything in this PR, they are intended to enable our OAS generation scripts --- packages/kbn-config-schema/index.ts | 14 + .../kbn-config-schema/src/oas_meta_fields.ts | 17 + .../{map_of_type.test.ts => map_type.test.ts} | 12 + .../kbn-config-schema/src/types/map_type.ts | 8 +- .../src/types/maybe_type.test.ts | 7 + .../kbn-config-schema/src/types/maybe_type.ts | 2 + .../src/types/record_type.test.ts | 12 + .../src/types/record_type.ts | 8 +- .../src/types/string_type.test.ts | 12 + .../src/types/string_type.ts | 35 +- .../kbn-config-schema/src/types/type.test.ts | 23 + packages/kbn-config-schema/src/types/type.ts | 6 + .../connector_types.test.ts.snap | 524 +++++++++++++ ...s_upgrade_and_rollback_checks.test.ts.snap | 737 ++++++++++++++++++ 14 files changed, 1401 insertions(+), 16 deletions(-) create mode 100644 packages/kbn-config-schema/src/oas_meta_fields.ts rename packages/kbn-config-schema/src/types/{map_of_type.test.ts => map_type.test.ts} (94%) create mode 100644 packages/kbn-config-schema/src/types/type.test.ts diff --git a/packages/kbn-config-schema/index.ts b/packages/kbn-config-schema/index.ts index 57c61c125ec73b..0aec0ae1f5a1ec 100644 --- a/packages/kbn-config-schema/index.ts +++ b/packages/kbn-config-schema/index.ts @@ -238,3 +238,17 @@ export const schema = { }; export type Schema = typeof schema; + +import { + META_FIELD_X_OAS_OPTIONAL, + META_FIELD_X_OAS_MAX_LENGTH, + META_FIELD_X_OAS_MIN_LENGTH, + META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES, +} from './src/oas_meta_fields'; + +export const metaFields = Object.freeze({ + META_FIELD_X_OAS_OPTIONAL, + META_FIELD_X_OAS_MAX_LENGTH, + META_FIELD_X_OAS_MIN_LENGTH, + META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES, +}); diff --git a/packages/kbn-config-schema/src/oas_meta_fields.ts b/packages/kbn-config-schema/src/oas_meta_fields.ts new file mode 100644 index 00000000000000..e54751f36f099f --- /dev/null +++ b/packages/kbn-config-schema/src/oas_meta_fields.ts @@ -0,0 +1,17 @@ +/* + * 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 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 or the Server + * Side Public License, v 1. + */ + +/** + * These fields are used in Joi meta to capture additional information used + * by OpenAPI spec generator. + */ +export const META_FIELD_X_OAS_OPTIONAL = 'x-oas-optional' as const; +export const META_FIELD_X_OAS_MIN_LENGTH = 'x-oas-min-length' as const; +export const META_FIELD_X_OAS_MAX_LENGTH = 'x-oas-max-length' as const; +export const META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES = + 'x-oas-get-additional-properties' as const; diff --git a/packages/kbn-config-schema/src/types/map_of_type.test.ts b/packages/kbn-config-schema/src/types/map_type.test.ts similarity index 94% rename from packages/kbn-config-schema/src/types/map_of_type.test.ts rename to packages/kbn-config-schema/src/types/map_type.test.ts index 7552a6d65a621c..f1cb809a162432 100644 --- a/packages/kbn-config-schema/src/types/map_of_type.test.ts +++ b/packages/kbn-config-schema/src/types/map_type.test.ts @@ -7,6 +7,7 @@ */ import { schema } from '../..'; +import { META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES } from '../oas_meta_fields'; test('handles object as input', () => { const type = schema.mapOf(schema.string(), schema.string()); @@ -186,6 +187,17 @@ test('error preserves full path', () => { ); }); +test('meta', () => { + const stringSchema = schema.string(); + const type = schema.mapOf(schema.string(), stringSchema); + const result = type + .getSchema() + .describe() + .metas![0][META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES](); + + expect(result).toBe(stringSchema.getSchema()); +}); + describe('#extendsDeep', () => { describe('#keyType', () => { const type = schema.mapOf(schema.string(), schema.object({ foo: schema.string() })); diff --git a/packages/kbn-config-schema/src/types/map_type.ts b/packages/kbn-config-schema/src/types/map_type.ts index 61caf76efc613b..cf14d7af7f1cbf 100644 --- a/packages/kbn-config-schema/src/types/map_type.ts +++ b/packages/kbn-config-schema/src/types/map_type.ts @@ -9,6 +9,7 @@ import typeDetect from 'type-detect'; import { SchemaTypeError, SchemaTypesError } from '../errors'; import { internals } from '../internals'; +import { META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES } from '../oas_meta_fields'; import { Type, TypeOptions, ExtendsDeepOptions } from './type'; export type MapOfOptions = TypeOptions>; @@ -20,7 +21,12 @@ export class MapOfType extends Type> { constructor(keyType: Type, valueType: Type, options: MapOfOptions = {}) { const defaultValue = options.defaultValue; - const schema = internals.map().entries(keyType.getSchema(), valueType.getSchema()); + const schema = internals + .map() + .entries(keyType.getSchema(), valueType.getSchema()) + .meta({ + [META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES]: () => valueType.getSchema(), + }); super(schema, { ...options, diff --git a/packages/kbn-config-schema/src/types/maybe_type.test.ts b/packages/kbn-config-schema/src/types/maybe_type.test.ts index ff69c2bb360455..312b88520a12a6 100644 --- a/packages/kbn-config-schema/src/types/maybe_type.test.ts +++ b/packages/kbn-config-schema/src/types/maybe_type.test.ts @@ -7,6 +7,7 @@ */ import { schema } from '../..'; +import { META_FIELD_X_OAS_OPTIONAL } from '../oas_meta_fields'; test('returns value if specified', () => { const type = schema.maybe(schema.string()); @@ -96,6 +97,12 @@ describe('maybe + object', () => { }); }); +test('meta', () => { + const maybeString = schema.maybe(schema.string()); + const result = maybeString.getSchema().describe().metas[0]; + expect(result).toEqual({ [META_FIELD_X_OAS_OPTIONAL]: true }); +}); + describe('#extendsDeep', () => { const type = schema.maybe(schema.object({ foo: schema.string() })); diff --git a/packages/kbn-config-schema/src/types/maybe_type.ts b/packages/kbn-config-schema/src/types/maybe_type.ts index e90434077cc365..6cd88dfc9a7cdb 100644 --- a/packages/kbn-config-schema/src/types/maybe_type.ts +++ b/packages/kbn-config-schema/src/types/maybe_type.ts @@ -8,6 +8,7 @@ import { Type, ExtendsDeepOptions } from './type'; +import { META_FIELD_X_OAS_OPTIONAL } from '../oas_meta_fields'; export class MaybeType extends Type { private readonly maybeType: Type; @@ -16,6 +17,7 @@ export class MaybeType extends Type { type .getSchema() .optional() + .meta({ [META_FIELD_X_OAS_OPTIONAL]: true }) .default(() => undefined) ); this.maybeType = type; diff --git a/packages/kbn-config-schema/src/types/record_type.test.ts b/packages/kbn-config-schema/src/types/record_type.test.ts index 9bfd4fab31b7a2..609c17eb43d8ee 100644 --- a/packages/kbn-config-schema/src/types/record_type.test.ts +++ b/packages/kbn-config-schema/src/types/record_type.test.ts @@ -7,6 +7,7 @@ */ import { schema } from '../..'; +import { META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES } from '../oas_meta_fields'; test('handles object as input', () => { const type = schema.recordOf(schema.string(), schema.string()); @@ -208,3 +209,14 @@ describe('#extendsDeep', () => { ).toThrowErrorMatchingInlineSnapshot(`"[key.bar]: definition for this key is missing"`); }); }); + +test('meta', () => { + const stringSchema = schema.string(); + const type = schema.mapOf(schema.string(), stringSchema); + const result = type + .getSchema() + .describe() + .metas![0][META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES](); + + expect(result).toBe(stringSchema.getSchema()); +}); diff --git a/packages/kbn-config-schema/src/types/record_type.ts b/packages/kbn-config-schema/src/types/record_type.ts index 782263d9932eaf..ac083ada116bc8 100644 --- a/packages/kbn-config-schema/src/types/record_type.ts +++ b/packages/kbn-config-schema/src/types/record_type.ts @@ -10,6 +10,7 @@ import typeDetect from 'type-detect'; import { SchemaTypeError, SchemaTypesError } from '../errors'; import { internals } from '../internals'; import { Type, TypeOptions, ExtendsDeepOptions } from './type'; +import { META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES } from '../oas_meta_fields'; export type RecordOfOptions = TypeOptions>; @@ -19,7 +20,12 @@ export class RecordOfType extends Type> { private readonly options: RecordOfOptions; constructor(keyType: Type, valueType: Type, options: RecordOfOptions = {}) { - const schema = internals.record().entries(keyType.getSchema(), valueType.getSchema()); + const schema = internals + .record() + .entries(keyType.getSchema(), valueType.getSchema()) + .meta({ + [META_FIELD_X_OAS_GET_ADDITIONAL_PROPERTIES]: () => valueType.getSchema(), + }); super(schema, options); this.keyType = keyType; diff --git a/packages/kbn-config-schema/src/types/string_type.test.ts b/packages/kbn-config-schema/src/types/string_type.test.ts index d07b52983d88cf..0f567cd2b7e203 100644 --- a/packages/kbn-config-schema/src/types/string_type.test.ts +++ b/packages/kbn-config-schema/src/types/string_type.test.ts @@ -7,6 +7,7 @@ */ import { schema } from '../..'; +import { META_FIELD_X_OAS_MAX_LENGTH, META_FIELD_X_OAS_MIN_LENGTH } from '../oas_meta_fields'; test('returns value is string and defined', () => { expect(schema.string().validate('test')).toBe('test'); @@ -166,6 +167,17 @@ describe('#defaultValue', () => { }); }); +test('meta', () => { + const string = schema.string({ minLength: 1, maxLength: 3 }); + const [meta1, meta2] = string.getSchema().describe().metas; + expect(meta1).toEqual({ + [META_FIELD_X_OAS_MIN_LENGTH]: 1, + }); + expect(meta2).toEqual({ + [META_FIELD_X_OAS_MAX_LENGTH]: 3, + }); +}); + describe('#validate', () => { test('is called with input value', () => { let calledWith; diff --git a/packages/kbn-config-schema/src/types/string_type.ts b/packages/kbn-config-schema/src/types/string_type.ts index e5251013e3a7e8..999a4d85fb3849 100644 --- a/packages/kbn-config-schema/src/types/string_type.ts +++ b/packages/kbn-config-schema/src/types/string_type.ts @@ -10,6 +10,8 @@ import typeDetect from 'type-detect'; import { internals } from '../internals'; import { Type, TypeOptions, convertValidationFunction } from './type'; +import { META_FIELD_X_OAS_MIN_LENGTH, META_FIELD_X_OAS_MAX_LENGTH } from '../oas_meta_fields'; + export type StringOptions = TypeOptions & { minLength?: number; maxLength?: number; @@ -37,24 +39,29 @@ export class StringType extends Type { } return value; }); + if (options.minLength !== undefined) { - schema = schema.custom( - convertValidationFunction((value) => { - if (value.length < options.minLength!) { - return `value has length [${value.length}] but it must have a minimum length of [${options.minLength}].`; - } - }) - ); + schema = schema + .custom( + convertValidationFunction((value) => { + if (value.length < options.minLength!) { + return `value has length [${value.length}] but it must have a minimum length of [${options.minLength}].`; + } + }) + ) + .meta({ [META_FIELD_X_OAS_MIN_LENGTH]: options.minLength }); } if (options.maxLength !== undefined) { - schema = schema.custom( - convertValidationFunction((value) => { - if (value.length > options.maxLength!) { - return `value has length [${value.length}] but it must have a maximum length of [${options.maxLength}].`; - } - }) - ); + schema = schema + .custom( + convertValidationFunction((value) => { + if (value.length > options.maxLength!) { + return `value has length [${value.length}] but it must have a maximum length of [${options.maxLength}].`; + } + }) + ) + .meta({ [META_FIELD_X_OAS_MAX_LENGTH]: options.maxLength }); } schema.type = 'string'; diff --git a/packages/kbn-config-schema/src/types/type.test.ts b/packages/kbn-config-schema/src/types/type.test.ts new file mode 100644 index 00000000000000..9cb61b88aa030a --- /dev/null +++ b/packages/kbn-config-schema/src/types/type.test.ts @@ -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 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 or the Server + * Side Public License, v 1. + */ + +import { get } from 'lodash'; +import { internals } from '../internals'; +import { Type, TypeOptions } from './type'; + +class MyType extends Type { + constructor(opts: TypeOptions = {}) { + super(internals.any(), opts); + } +} + +test('describe', () => { + const type = new MyType({ description: 'my description' }); + const meta = type.getSchema().describe(); + expect(get(meta, 'flags.description')).toBe('my description'); +}); diff --git a/packages/kbn-config-schema/src/types/type.ts b/packages/kbn-config-schema/src/types/type.ts index 8023da2dda9200..145650d0e3d823 100644 --- a/packages/kbn-config-schema/src/types/type.ts +++ b/packages/kbn-config-schema/src/types/type.ts @@ -13,6 +13,8 @@ import { Reference } from '../references'; export interface TypeOptions { defaultValue?: T | Reference | (() => T); validate?: (value: T) => string | void; + /** A human-friendly description of this type to be used in documentation */ + description?: string; } export interface SchemaStructureEntry { @@ -86,6 +88,10 @@ export abstract class Type { schema = schema.custom(convertValidationFunction(options.validate)); } + if (options.description) { + schema = schema.description(options.description); + } + // Attach generic error handler only if it hasn't been attached yet since // only the last error handler is counted. if (schema.$_getFlag('error') === undefined) { diff --git a/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap b/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap index f27cc6ab836234..f85e0abce89c7d 100644 --- a/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap +++ b/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap @@ -30,6 +30,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -114,6 +119,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -203,6 +213,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -219,6 +234,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, "stopSequences": Object { @@ -244,6 +264,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "system": Object { @@ -252,6 +277,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -268,6 +298,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "number", }, }, @@ -349,6 +384,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -365,6 +405,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, "stopSequences": Object { @@ -390,6 +435,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "system": Object { @@ -398,6 +448,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -414,6 +469,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "number", }, }, @@ -855,6 +915,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -1520,6 +1585,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1536,6 +1606,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1552,6 +1627,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1588,6 +1668,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1604,6 +1689,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1620,6 +1710,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2504,6 +2599,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -3136,6 +3236,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -3560,6 +3665,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 50, + }, + ], "rules": Array [ Object { "args": Object { @@ -3577,6 +3687,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3593,6 +3708,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3609,6 +3729,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 15000, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3631,6 +3759,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3674,6 +3810,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 512, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3694,6 +3838,14 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + Object { + "x-oas-max-length": 130, + }, + ], "rules": Array [ Object { "args": Object { @@ -3728,6 +3880,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 25000, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3812,6 +3972,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "responders": Object { @@ -4052,6 +4217,11 @@ Object { "type": "alternatives", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4068,6 +4238,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 100, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4096,6 +4274,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 50, + }, + ], "rules": Array [ Object { "args": Object { @@ -4113,6 +4296,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4129,6 +4317,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 100, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4334,6 +4530,11 @@ Object { "type": "alternatives", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4384,6 +4585,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 25000, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4406,6 +4615,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 100, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4428,6 +4645,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 100, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4681,6 +4906,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4697,6 +4927,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4713,6 +4948,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4748,6 +4991,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 255, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4808,6 +5059,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "group": Object { @@ -4816,6 +5072,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4879,6 +5140,11 @@ Object { "type": "object", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "severity": Object { @@ -4937,6 +5203,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "source": Object { @@ -4945,6 +5216,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4961,6 +5237,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 1024, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4983,6 +5267,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -6543,6 +6832,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "appsVulnerabilityStatuses": Object { @@ -12250,6 +12544,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "appsVulnerabilityStatuses": Object { @@ -17957,6 +18256,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "appsVulnerabilityStatuses": Object { @@ -23664,6 +23968,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "appsVulnerabilityStatuses": Object { @@ -28663,6 +28972,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "computerName": Object { @@ -28671,6 +28985,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28696,6 +29015,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28712,6 +29036,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28728,6 +29057,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28744,6 +29078,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28767,6 +29106,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28783,6 +29127,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28794,6 +29143,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -28807,6 +29161,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "scriptId": Object { @@ -28829,6 +29188,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28845,6 +29209,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "number", }, "singularityxdrKeyword": Object { @@ -28853,6 +29222,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28869,6 +29243,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -28885,6 +29264,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -32824,6 +33208,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -32880,6 +33269,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -32900,6 +33294,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -32925,6 +33324,11 @@ Object { "type": "object", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -32959,6 +33363,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -33026,6 +33435,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -33105,6 +33519,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -33138,6 +33557,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -33152,6 +33576,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -33237,6 +33666,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -33270,6 +33704,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -34626,6 +35065,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -34764,6 +35208,11 @@ Object { "type": "number", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -34777,6 +35226,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -34883,6 +35337,11 @@ Object { "type": "number", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -34896,6 +35355,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35205,6 +35669,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "ca": Object { @@ -35213,6 +35682,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35255,6 +35729,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "hasAuth": Object { @@ -35277,6 +35756,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -35422,6 +35906,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, }, @@ -35668,6 +36157,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35904,6 +36398,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35920,6 +36419,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35936,6 +36440,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35966,6 +36475,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35982,6 +36496,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -35998,6 +36517,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { diff --git a/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap b/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap index 0313aafa1be5e9..bbfa2fb3bb28b0 100644 --- a/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap +++ b/x-pack/plugins/alerting/server/integration_tests/__snapshots__/serverless_upgrade_and_rollback_checks.test.ts.snap @@ -16,6 +16,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -87,6 +95,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -148,6 +161,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -244,6 +262,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -442,6 +465,11 @@ Object { "type": "object", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -464,6 +492,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -521,6 +554,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "termSize": Object { @@ -529,6 +567,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -679,6 +722,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -704,6 +755,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -789,6 +845,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -809,6 +870,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -831,12 +897,22 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, "boundaryIndexTitle": Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -859,6 +935,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -879,6 +963,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -899,6 +988,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -919,6 +1013,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -939,6 +1038,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -959,6 +1063,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -979,6 +1088,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -1001,6 +1115,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, @@ -1029,6 +1148,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1073,6 +1200,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1121,6 +1253,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -1149,6 +1286,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -1186,6 +1328,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1208,6 +1358,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1339,6 +1494,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-min-length": 1, + }, + ], "rules": Array [ Object { "args": Object { @@ -1554,6 +1714,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1570,6 +1735,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1640,6 +1810,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1673,6 +1848,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "searchConfiguration": Object { @@ -1731,6 +1911,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -1773,6 +1958,11 @@ Object { "type": "object", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -1786,6 +1976,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -1808,6 +2003,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "windowSize": Object { @@ -1931,6 +2131,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "searchConfiguration": Object { @@ -1989,6 +2194,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -2031,6 +2241,11 @@ Object { "type": "object", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -2044,6 +2259,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2066,6 +2286,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2082,6 +2307,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2098,6 +2328,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "windowSize": Object { @@ -2177,6 +2412,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "searchConfiguration": Object { @@ -2235,6 +2475,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -2277,6 +2522,11 @@ Object { "type": "object", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -2290,6 +2540,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2312,6 +2567,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2328,6 +2588,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2344,6 +2609,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "windowSize": Object { @@ -2393,6 +2663,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "criteria": Object { @@ -2490,6 +2765,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2511,6 +2791,11 @@ Object { "type": "any", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -2579,6 +2864,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2610,6 +2900,11 @@ Object { "type": "number", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, }, @@ -2629,6 +2924,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2700,6 +3000,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "alertOnNoData": Object { @@ -2708,6 +3013,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "criteria": Object { @@ -2734,6 +3044,11 @@ Object { "only": true, "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, "comparator": Object { @@ -2762,6 +3077,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2778,6 +3098,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -2913,6 +3238,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3053,6 +3383,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "searchConfiguration": Object { @@ -3084,6 +3419,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + ], "rules": Array [ Object { "args": Object { @@ -3119,6 +3459,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3157,6 +3505,11 @@ Object { "type": "object", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "index": Object { @@ -3196,6 +3549,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "allowNoIndex": Object { @@ -3204,6 +3562,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "fieldAttrs": Object { @@ -3212,6 +3575,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3244,6 +3615,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "number", }, "customDescription": Object { @@ -3252,6 +3628,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 300, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3274,6 +3658,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3304,6 +3693,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3336,6 +3733,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3352,6 +3754,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, @@ -3374,6 +3781,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3406,6 +3821,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "count": Object { @@ -3414,6 +3834,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3430,6 +3855,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 300, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3452,6 +3885,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3485,6 +3923,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "format": Object { @@ -3500,6 +3943,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3516,9 +3964,19 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -3530,6 +3988,11 @@ Object { "flags": Object { "error": [Function], }, + "metas": Array [ + Object { + "x-oas-max-length": 1000, + }, + ], "rules": Array [ Object { "args": Object { @@ -3552,6 +4015,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "runtimeField": Object { @@ -3577,6 +4045,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 300, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3599,6 +4075,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3622,6 +4103,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3638,9 +4124,19 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -3654,6 +4150,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3686,6 +4187,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -3810,6 +4316,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3842,6 +4356,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 300, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3864,6 +4386,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3887,6 +4414,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -3903,9 +4435,19 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -3919,6 +4461,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4057,6 +4604,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4084,6 +4636,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "script": Object { @@ -4092,6 +4649,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 1000000, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4114,6 +4679,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "searchable": Object { @@ -4122,6 +4692,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "shortDotsEnable": Object { @@ -4130,6 +4705,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "boolean", }, "subType": Object { @@ -4161,6 +4741,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4190,6 +4775,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4198,6 +4788,11 @@ Object { "type": "object", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4211,6 +4806,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 1000, + }, + ], "rules": Array [ Object { "args": Object { @@ -4247,6 +4847,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4263,6 +4868,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4296,6 +4906,11 @@ Object { "type": "string", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "runtimeFieldMap": Object { @@ -4304,6 +4919,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4342,6 +4965,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 300, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4364,6 +4995,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4387,6 +5023,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4403,9 +5044,19 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4419,6 +5070,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4451,6 +5107,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4575,6 +5236,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-get-additional-properties": [Function], + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4607,6 +5276,14 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-max-length": 300, + }, + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4629,6 +5306,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4652,6 +5334,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4668,9 +5355,19 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "any", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4684,6 +5381,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4822,6 +5524,11 @@ Object { "type": "string", }, }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4905,6 +5612,11 @@ Object { }, }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "alternatives", }, "value": Object { @@ -4930,6 +5642,11 @@ Object { "type": "object", }, ], + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "type": "array", }, "timeFieldName": Object { @@ -4938,6 +5655,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4968,6 +5690,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { @@ -4986,6 +5713,11 @@ Object { "unknown": true, }, "keys": Object {}, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "preferences": Object { "stripUnknown": Object { "objects": false, @@ -4999,6 +5731,11 @@ Object { "error": [Function], "presence": "optional", }, + "metas": Array [ + Object { + "x-oas-optional": true, + }, + ], "rules": Array [ Object { "args": Object { From 29e3ccd6262f4b05e469ac63e357639d66fd5483 Mon Sep 17 00:00:00 2001 From: Katerina Date: Tue, 9 Apr 2024 17:25:18 +0300 Subject: [PATCH 35/75] [APM] Add tooltip for service health status column (#180343) ## Summary fixes https://github.com/elastic/kibana/issues/179038 ## After ![image](https://github.com/elastic/kibana/assets/3369346/e51b3d15-1308-416f-abd3-b2cdea38a76d) --- .../service_inventory/service_list/index.tsx | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx index 6c849e97fcd3d3..e42fd862dc0583 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx @@ -10,6 +10,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiIcon, + EuiIconTip, EuiLink, EuiSpacer, EuiText, @@ -153,9 +154,27 @@ export function getServiceColumns({ ? [ { field: ServiceInventoryFieldName.HealthStatus, - name: i18n.translate('xpack.apm.servicesTable.healthColumnLabel', { - defaultMessage: 'Health', - }), + name: ( + <> + {i18n.translate('xpack.apm.servicesTable.healthColumnLabel', { + defaultMessage: 'Health', + })}{' '} + + + ), width: `${unit * 6}px`, sortable: true, render: (_, { healthStatus }) => { From 3e08d4d6db35bc959219d930709a12f3dbe4839e Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Tue, 9 Apr 2024 07:37:22 -0700 Subject: [PATCH 36/75] [DOCS] Add HTTP header example for webhook connectors (#180092) --- .../management/connectors/action-types/cases-webhook.asciidoc | 1 + docs/management/connectors/action-types/webhook.asciidoc | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/management/connectors/action-types/cases-webhook.asciidoc b/docs/management/connectors/action-types/cases-webhook.asciidoc index 8610c4593d513a..3d5bfecffcb3b3 100644 --- a/docs/management/connectors/action-types/cases-webhook.asciidoc +++ b/docs/management/connectors/action-types/cases-webhook.asciidoc @@ -53,6 +53,7 @@ image::management/connectors/images/cases-webhook-connector-comments.png[Add cas Add HTTP header:: A set of key-value pairs sent as headers with the request URLs for the create case, update case, get case, and create comment methods. +For example, set `Content-Type` to the appropriate media type for your requests. Create case method:: The REST API HTTP request method to create a case in the third-party system: `post`(default), `put`, or `patch`. diff --git a/docs/management/connectors/action-types/webhook.asciidoc b/docs/management/connectors/action-types/webhook.asciidoc index 1868f96d14c1dc..d9a4dd43daeafb 100644 --- a/docs/management/connectors/action-types/webhook.asciidoc +++ b/docs/management/connectors/action-types/webhook.asciidoc @@ -34,7 +34,9 @@ Authentication:: The authentication type: none, basic, or SSL. If you choose basic authentication, you must provide a user name and password. If you choose SSL authentication, you must provide SSL server certificate authentication data in a CRT and key file format or a PFX file format. You can also optionally provide a passphrase if the files are password-protected. -HTTP headers:: A set of key-value pairs sent as headers with the request. +HTTP headers:: +A set of key-value pairs sent as headers with the request. +For example, set `Content-Type` to the appropriate media type for your requests. Certificate authority:: A certificate authority (CA) that the connector can trust, for example to sign and validate server certificates. This option is available for all authentication types. From d4282ee6301651ec4c29a7c2462231d7b7a08799 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Tue, 9 Apr 2024 17:02:34 +0200 Subject: [PATCH 37/75] [Security Solution] Allows to execute Cypress tests using projects with overridden images (#180285) ## Summary To make sure that our Cypress tests are working fine on MKI environments we are executing them in our periodic pipeline. When the pipeline is triggered, we built a new image of the latest commit available in main, we create a project in QA overriding the image and we execute our Cypress tests using that created project. Currently our `yarn cypress:open:qa:serverless` script, creates a project in QA using the last available version, so, if there is a test failing in the periodic pipeline, currently there is no easy way to execute it in our locals. To facilitate this work, this PR we are introducing the `commit` option. ## How to test it Setup a valid Elastic Cloud API key for QA environment: 1. Navigate to QA environment. 2. Click on the `User menu button` located on the top right of the header. 3. Click on `Organization`. 4. Click on the `API keys` tab. 5. Click on `Create API key` button. 6. Add a name, set an expiration date, assign an organization owner role. 7. Click on `Create API key` 8. Save the value of the key Store the saved key on `~/.elastic/cloud.json` using the following format: ```json { "api_key": { "qa": "" } } ``` Store the email and password of the account you used to login in the QA Environment at the root directory of your Kibana project on `.ftr/role_users.json`, using the following format: ```json { "admin": { "email": "", "password": "" } } ``` From the `x-pack/test/security_solution_cypress` you can execute the following command making sure that the commit you want to use has an available image already. In order to check for the existance of an image check: https://container-library.elastic.co/r/kibana-ci, if the image with the commit you want to use does not exist **DON'T USE THE COMMIT FLAG SINCE YOU MAY CAUSE A MAJOR ISSUE IN CONTROL PLANE > CAUSE A BULK OF ALERTS IN CONTROL PLANE** and the project will not be functional. ```cli yarn cypress:open:qa:serverless --commit ``` --- .../run_cypress/parallel_serverless.ts | 24 +++++++++++++++---- .../cypress/README.md | 22 ++++++++++++++--- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts index d4fa3866402e6e..d9418b81b538d4 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts @@ -100,7 +100,8 @@ const getApiKeyFromElasticCloudJsonFile = (): string | undefined => { async function createSecurityProject( projectName: string, apiKey: string, - productTypes: ProductType[] + productTypes: ProductType[], + commit: string ): Promise { const body: CreateProjectRequestBody = { name: projectName, @@ -110,10 +111,12 @@ async function createSecurityProject( log.info(`Kibana override flag equals to ${process.env.KIBANA_MKI_USE_LATEST_COMMIT}!`); if ( - process.env.KIBANA_MKI_USE_LATEST_COMMIT && - process.env.KIBANA_MKI_USE_LATEST_COMMIT === '1' + (process.env.KIBANA_MKI_USE_LATEST_COMMIT && + process.env.KIBANA_MKI_USE_LATEST_COMMIT === '1') || + commit ) { - const kibanaOverrideImage = `${process.env.BUILDKITE_COMMIT?.substring(0, 12)}`; + const override = commit ? commit : process.env.BUILDKITE_COMMIT; + const kibanaOverrideImage = `${override?.substring(0, 12)}`; log.info( `Overriding Kibana image in the MKI with docker.elastic.co/kibana-ci/kibana-serverless:sec-sol-qg-${kibanaOverrideImage}` ); @@ -446,6 +449,11 @@ export const cli = () => { alias: 'ca', type: 'boolean', default: true, + }) + .option('commit', { + alias: 'c', + type: 'string', + default: '', }); log.info(` @@ -472,6 +480,7 @@ ${JSON.stringify(argv, null, 2)} const tier: string = argv.tier; const endpointAddon: boolean = argv.endpointAddon; const cloudAddon: boolean = argv.cloudAddon; + const commit: string = argv.commit; log.info(` ---------------------------------------------- @@ -557,7 +566,12 @@ ${JSON.stringify(cypressConfigFile, null, 2)} log.info(`${id}: Creating project ${PROJECT_NAME}...`); // Creating project for the test to run - const project = await createSecurityProject(PROJECT_NAME, API_KEY, productTypes); + const project = await createSecurityProject( + PROJECT_NAME, + API_KEY, + productTypes, + commit + ); if (!project) { log.info('Failed to create project.'); diff --git a/x-pack/test/security_solution_cypress/cypress/README.md b/x-pack/test/security_solution_cypress/cypress/README.md index dea0f72240d1a6..d7ec660e1b24db 100644 --- a/x-pack/test/security_solution_cypress/cypress/README.md +++ b/x-pack/test/security_solution_cypress/cypress/README.md @@ -303,7 +303,10 @@ For test developing or test debugging purposes, you need to modify the configura ### Running serverless tests locally pointing to a MKI project created in QA environment (Second Quality Gate) -Run the tests with the following yarn scripts from `x-pack/test/security_solution_cypress`: +Note that when using any of the below scripts, the tests are going to be executed through an MKI project with the version that is currently available in QA. If you need to use +a specific commit (i.e. debugging a failing tests on the periodic pipeline), check the section: `Running serverless tests locally pointing to a MKI project created in QA environment with an overridden image`. + +Run the tests with the following yarn scripts from `x-pack/test/security_solution_cypress`: | Script Name | Description | | ----------- | ----------- | @@ -312,9 +315,9 @@ Run the tests with the following yarn scripts from `x-pack/test/security_solutio | cypress:run:qa:serverless:explore | Runs all tests tagged as SERVERLESS in the `e2e/explore` directory in headless mode using the QA environment and real MKI prorjects. | | cypress:run:qa:serverless:investigations | Runs all tests tagged as SERVERLESS in the `e2e/investigations` directory in headless mode using the QA environment and reak MKI projects. | | cypress:run:qa:serverless:rule_management | Runs all tests tagged as SERVERLESS in the `e2e/detection_response/rule_management` directory, excluding `e2e/detection_response/rule_management/prebuilt_rules` in headless mode using the QA environment and reak MKI projects. | -| cypress:run:qa:serverless:rule_management:prebuilt_rules | Runs all tests tagged as SERVERLESS in the `e2e/detection_response/rule_management/prebuilt_rules` directory in headless mode using the QA environment and reak MKI projects. | +| cypress:run:qa:serverless:rule_management:prebuilt_rules | Runs all tests tagged as SERVERLESS in the `e2e/detection_response/rule_management/prebuilt_rules` directory in headless mode using the QA environment and real MKI projects. | | cypress:run:qa:serverless:detection_engine | Runs all tests tagged as SERVERLESS in the `e2e/detection_response/detection_engine` directory, excluding `e2e/detection_response/detection_engine/exceptions` in headless mode using the QA environment and reak MKI projects. | -| cypress:run:qa:serverless:detection_engine:prebuilt_rules | Runs all tests tagged as SERVERLESS in the `e2e/detection_response/detection_engine/exceptions` directory in headless mode using the QA environment and reak MKI projects. | +| cypress:run:qa:serverless:detection_engine:prebuilt_rules | Runs all tests tagged as SERVERLESS in the `e2e/detection_response/detection_engine/exceptions` directory in headless mode using the QA environment and real MKI projects. | | cypress:run:qa:serverless:ai_assistant | Runs all tests tagged as SERVERLESS in the `e2e/ai_assistant` directory in headless mode using the QA environment and reak MKI projects. | @@ -355,6 +358,19 @@ Store the email and password of the account you used to login in the QA Environm } ``` +### Running serverless tests locally pointing to a MKI project created in QA environment with an overridden image + +In order to execute Cypress using a project wih an overridden image, you need to first make sure that the image is created (if you need to debug a failing test of the periodic pipeline, the image is already created you just need to check the commit that was used). + +In order to check for the existance of an image check: https://container-library.elastic.co/r/kibana-ci, if the image with the commit you want to use does not exist **DON'T USE THE COMMIT FLAG SINCE YOU MAY CAUSE A MAJOR ISSUE IN CONTROL PLANE > CAUSE A BULK OF ALERTS IN CONTROL PLANE** and the project will not be functional. + +You need to have everything setup as mentioned above in `Setup required`. Once the setup is ready you just need to execute Cypress with the following option: + +``` +yarn cypress:open:qa:serverless --commit +``` + + #### Testing with different roles If you want to execute a test using Cypress on visual mode with MKI, you need to make sure you have the user created in your organization, and add it tot he `.ftr/role_users.json`: From 083ef155f47388b5a80165fa079d652e62c376a0 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 9 Apr 2024 18:05:02 +0300 Subject: [PATCH 38/75] fix: [Rules > Create new rule][SCREEN READER]: Cursor must not get trapped in custom interface elements (#179689) Closes: https://github.com/elastic/security-team/issues/8652 ## Description The Create new rule form has a custom UI component for setting a timeline template that is trapping screen readers. The only way to escape this element is to turn off the screen reader and press the `TAB` key. This was verified in VoiceOver, NVDA, and JAWS using their preferred browsers. This issue also affects keyboard users, so it's blocker for a significant number of users to create a new rule. ### Steps to recreate 1. Open [Create new rule](https://kibana.siem.estc.dev/app/security/rules/create) 2. Open the screen reader of your choice 3. Navigate through Step 1 using the native screen reader traversal method (arrow keys or `Ctrl + Opt + ARROW`) instead of the `TAB` key as a keyboard user would 4. Verify the inability to close the Timeline Template input even when pressing `ESC` or `TAB` ### What was done?: 1. [components/timeline/search_or_filter/super_select.tsx](https://github.com/elastic/kibana/pull/179689/files#diff-2bfe78c53eba5ea9275663cd898e4c1bbcecf859ed3cd6aa39fdc5dc9464df17) It was removed as it is not used anymore. 2. The `readOnly` attribute has been removed from the `EuiFieldText` element. 3. `onFocus` has been replaced with `onKeyDown` to correctly support keyboard navigation. ### Screen https://github.com/elastic/kibana/assets/20072247/d94d884a-f54c-4aad-ac0f-0b6f201be66b --- .../search_or_filter/super_select.tsx | 273 ------------------ .../timeline/search_super_select/index.tsx | 23 +- 2 files changed, 18 insertions(+), 278 deletions(-) delete mode 100644 x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/super_select.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/super_select.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/super_select.tsx deleted file mode 100644 index e26d8339a2134e..00000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/super_select.tsx +++ /dev/null @@ -1,273 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - Duplicated EuiSuperSelect, because due to the recent changes there is no way to pass panelClassName - prop to EuiInputPopover, which doesn't allow us to properly style the EuiInputPopover panel - (we want the panel to be wider than the input) -*/ - -import type { EuiSuperSelectProps } from '@elastic/eui'; -import { - EuiScreenReaderOnly, - EuiSuperSelectControl, - EuiInputPopover, - EuiContextMenuItem, - keys, - EuiI18n, -} from '@elastic/eui'; -import React, { Component } from 'react'; -import classNames from 'classnames'; - -enum ShiftDirection { - BACK = 'back', - FORWARD = 'forward', -} - -export class EuiSuperSelect extends Component> { - static defaultProps = { - compressed: false, - fullWidth: false, - hasDividers: false, - isInvalid: false, - isLoading: false, - }; - - private itemNodes: Array = []; - private _isMounted: boolean = false; - - state = { - isPopoverOpen: this.props.isOpen || false, - }; - - componentDidMount() { - this._isMounted = true; - if (this.props.isOpen) { - this.openPopover(); - } - } - - componentWillUnmount() { - this._isMounted = false; - } - - setItemNode = (node: HTMLButtonElement | null, index: number) => { - this.itemNodes[index] = node; - }; - - openPopover = () => { - this.setState({ - isPopoverOpen: true, - }); - - const focusSelected = () => { - const indexOfSelected = this.props.options.reduce((acc, option, index) => { - if (acc != null) return acc; - if (option == null) return null; - return option.value === this.props.valueOfSelected ? index : null; - }, null); - - requestAnimationFrame(() => { - if (!this._isMounted) { - return; - } - - if (this.props.valueOfSelected != null) { - if (indexOfSelected != null) { - this.focusItemAt(indexOfSelected); - } else { - focusSelected(); - } - } - }); - }; - - requestAnimationFrame(focusSelected); - }; - - closePopover = () => { - this.setState({ - isPopoverOpen: false, - }); - }; - - itemClicked = (value: T) => { - this.setState({ - isPopoverOpen: false, - }); - if (this.props.onChange) { - this.props.onChange(value); - } - }; - - onSelectKeyDown = (event: React.KeyboardEvent) => { - if (event.key === keys.ARROW_UP || event.key === keys.ARROW_DOWN) { - event.preventDefault(); - event.stopPropagation(); - this.openPopover(); - } - }; - - onItemKeyDown = (event: React.KeyboardEvent) => { - switch (event.key) { - case keys.ESCAPE: - // close the popover and prevent ancestors from handling - event.preventDefault(); - event.stopPropagation(); - this.closePopover(); - break; - - case keys.TAB: - // no-op - event.preventDefault(); - event.stopPropagation(); - break; - - case keys.ARROW_UP: - event.preventDefault(); - event.stopPropagation(); - this.shiftFocus(ShiftDirection.BACK); - break; - - case keys.ARROW_DOWN: - event.preventDefault(); - event.stopPropagation(); - this.shiftFocus(ShiftDirection.FORWARD); - break; - } - }; - - focusItemAt(index: number) { - const targetElement = this.itemNodes[index]; - if (targetElement != null) { - targetElement.focus(); - } - } - - shiftFocus(direction: ShiftDirection) { - const currentIndex = this.itemNodes.indexOf(document.activeElement as HTMLButtonElement); - let targetElementIndex: number; - - if (currentIndex === -1) { - // somehow the select options has lost focus - targetElementIndex = 0; - } else { - if (direction === ShiftDirection.BACK) { - targetElementIndex = currentIndex === 0 ? this.itemNodes.length - 1 : currentIndex - 1; - } else { - targetElementIndex = currentIndex === this.itemNodes.length - 1 ? 0 : currentIndex + 1; - } - } - - this.focusItemAt(targetElementIndex); - } - - render() { - const { - className, - options, - valueOfSelected, - onChange, - isOpen, - isInvalid, - hasDividers, - itemClassName, - itemLayoutAlign, - fullWidth, - popoverProps, - compressed, - ...rest - } = this.props; - - const popoverClasses = classNames('euiSuperSelect', popoverProps?.className); - - const buttonClasses = classNames( - { - 'euiSuperSelect--isOpen__button': this.state.isPopoverOpen, - }, - className - ); - - const itemClasses = classNames( - 'euiSuperSelect__item', - { - 'euiSuperSelect__item--hasDividers': hasDividers, - }, - itemClassName - ); - - const button = ( - - ); - - const items = options.map((option, index) => { - const { value, dropdownDisplay, inputDisplay, ...optionRest } = option; - - return ( - this.itemClicked(value)} - onKeyDown={this.onItemKeyDown} - layoutAlign={itemLayoutAlign} - buttonRef={(node) => this.setItemNode(node, index)} - role="option" - id={value} - aria-selected={valueOfSelected === value} - {...optionRest} - > - {dropdownDisplay || inputDisplay} - - ); - }); - - return ( - - -

- -

-
-
- {items} -
-
- ); - } -} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx index 7289f32fca36e0..c1927579f8019c 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/search_super_select/index.tsx @@ -5,8 +5,8 @@ * 2.0. */ -import type { EuiSelectableOption } from '@elastic/eui'; -import { EuiInputPopover, EuiFieldText, htmlIdGenerator } from '@elastic/eui'; +import type { EuiSelectableOption, EuiFieldTextProps } from '@elastic/eui'; +import { EuiInputPopover, EuiFieldText, htmlIdGenerator, keys } from '@elastic/eui'; import React, { memo, useCallback, useMemo, useState } from 'react'; import styled from 'styled-components'; @@ -90,15 +90,20 @@ const SearchTimelineSuperSelectComponent: React.FC { + if (event.key === keys.ENTER) { + setIsPopoverOpen(true); + } + }, []); + const popoverId = useMemo(() => htmlIdGenerator('searchTimelinePopover')(), []); const superSelect = useMemo( () => ( ), - [ariaLabel, handleOpenPopover, isDisabled, isPopoverOpen, popoverId, timelineTitle] + [ + ariaLabel, + handleKeyboardOpen, + handleOpenPopover, + isDisabled, + isPopoverOpen, + popoverId, + timelineTitle, + ] ); const handleGetSelectableOptions = useCallback( From de6d2ba61a8f39fe695bb8c1c81881964658b4fa Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 9 Apr 2024 18:05:21 +0300 Subject: [PATCH 39/75] fix: [Dashboard][SCREEN READER]: Headings must be properly nested for usability (#180191) Closes: https://github.com/elastic/security-team/issues/8637 Closes: https://github.com/elastic/security-team/issues/8693 Closes: https://github.com/elastic/security-team/issues/8639 Closes: https://github.com/elastic/security-team/issues/8638 ### What was done? 1. `h4` was changed to `h2` for `header-section-title` 2. `Hidden` `h1` was added for Dashboard Overview page ### Screens #### https://github.com/elastic/security-team/issues/8637 ![image](https://github.com/elastic/kibana/assets/20072247/3d5409bd-0cf3-4a31-a565-ecf5851ff889) #### https://github.com/elastic/security-team/issues/8693 : ![image](https://github.com/elastic/kibana/assets/20072247/b7bad8f9-7998-4791-9e16-af3f47a9f316) #### https://github.com/elastic/security-team/issues/8639 ![image](https://github.com/elastic/kibana/assets/20072247/c37e111e-90f6-492d-818e-52adedbe1345) ### https://github.com/elastic/security-team/issues/8638 ![image](https://github.com/elastic/kibana/assets/20072247/914af668-e35f-4f24-90f4-d5d0cf6f5f22) --- .../__snapshots__/index.test.tsx.snap | 4 ++-- .../common/components/header_section/index.tsx | 4 ++-- .../authentications_host_table.test.tsx.snap | 4 ++-- .../authentications_user_table.test.tsx.snap | 4 ++-- .../public/overview/pages/overview.tsx | 13 ++++++++++++- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap index 46c33d5102feb1..3ef2ecf88449b6 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/header_section/__snapshots__/index.test.tsx.snap @@ -39,7 +39,7 @@ exports[`HeaderSection it renders 1`] = ` -

Test title -

+
diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx b/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx index 70c6e6778a6040..75cd089a87e36a 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx @@ -169,7 +169,7 @@ const HeaderSectionComponent: React.FC = ({ )} -

+

{title} {tooltip && ( <> @@ -182,7 +182,7 @@ const HeaderSectionComponent: React.FC = ({ /> )} -

+
diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap b/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap index b0b2754c24d3bc..bf74c41fa303fa 100644 --- a/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap @@ -104,7 +104,7 @@ exports[`Authentication Host Table Component rendering it renders the host authe
-

@@ -113,7 +113,7 @@ exports[`Authentication Host Table Component rendering it renders the host authe > Authentications -

+
diff --git a/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap b/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap index 3d31cd3759ffec..4acce15364b6ba 100644 --- a/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/explore/components/authentication/__snapshots__/authentications_user_table.test.tsx.snap @@ -104,7 +104,7 @@ exports[`Authentication User Table Component rendering it renders the user authe
-

@@ -113,7 +113,7 @@ exports[`Authentication User Table Component rendering it renders the user authe > Authentications -

+
diff --git a/x-pack/plugins/security_solution/public/overview/pages/overview.tsx b/x-pack/plugins/security_solution/public/overview/pages/overview.tsx index e91a7487f6491e..c10fab09fa47b4 100644 --- a/x-pack/plugins/security_solution/public/overview/pages/overview.tsx +++ b/x-pack/plugins/security_solution/public/overview/pages/overview.tsx @@ -5,9 +5,16 @@ * 2.0. */ -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiShowFor } from '@elastic/eui'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiShowFor, + EuiScreenReaderOnly, +} from '@elastic/eui'; import React, { useCallback, useState, useMemo } from 'react'; +import { OVERVIEW } from '../../app/translations'; import { InputsModelId } from '../../common/store/inputs/constants'; import { FiltersGlobal } from '../../common/components/filters_global'; import { SiemSearchBar } from '../../common/components/search_bar'; @@ -69,6 +76,10 @@ const OverviewComponent = () => { return ( <> + +

{OVERVIEW}

+
+ {indicesExist ? ( <> From 49777dc232ca7b1adfd923903fd6751c8898b656 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Tue, 9 Apr 2024 17:12:46 +0200 Subject: [PATCH 40/75] Moves ES|QL out of Technical preview (GA) (#178860) ## Summary Moves ES|QL out of Technical preview (GA) which means that: - Removes tech preview badge from unified search - Removes tech preview callout from Discover - Removes tech preview badge from inline editing flyout (I am keeping it to indicate the inline editing is still on tech preview but I am removing the specific ES|QL message - Removes tech preview text from advanced setting --- .../components/layout/discover_layout.tsx | 5 -- .../layout/esql_tech_preview_callout.tsx | 55 ------------------- src/plugins/discover/server/ui_settings.ts | 7 +-- .../dataview_picker/change_dataview.tsx | 6 -- .../shared/edit_on_the_fly/flyout_wrapper.tsx | 16 ++---- .../translations/translations/fr-FR.json | 18 ++---- .../translations/translations/ja-JP.json | 6 -- .../translations/translations/zh-CN.json | 6 -- 8 files changed, 11 insertions(+), 108 deletions(-) delete mode 100644 src/plugins/discover/public/application/main/components/layout/esql_tech_preview_callout.tsx diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx index 41a05a18da62b4..344e0b36c9d0e5 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx @@ -51,7 +51,6 @@ import { DiscoverHistogramLayout } from './discover_histogram_layout'; import { ErrorCallout } from '../../../../components/common/error_callout'; import { addLog } from '../../../../utils/add_log'; import { DiscoverResizableLayout } from './discover_resizable_layout'; -import { ESQLTechPreviewCallout } from './esql_tech_preview_callout'; import { PanelsToggle, PanelsToggleProps } from '../../../../components/panels_toggle'; import { sendErrorMsg } from '../../hooks/use_saved_search_messages'; @@ -72,7 +71,6 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) { filterManager, history, spaces, - docLinks, } = useDiscoverServices(); const pageBackgroundColor = useEuiBackgroundColor('plain'); const globalQueryState = data.query.getState(); @@ -219,8 +217,6 @@ export function DiscoverLayout({ stateContainer }: DiscoverLayoutProps) { return ( <> - {/* Temporarily display a tech preview callout for ES|QL*/} - {isPlainRecord && } { - const [hideCallout, setHideCallout] = useLocalStorage(ESQL_TECH_PREVIEW_CALLOUT, false); - - const onDismiss = useCallback(() => { - setHideCallout(true); - }, [setHideCallout]); - - if (hideCallout) { - return null; - } - - return ( - - - - ), - }} - /> - } - color="primary" - iconType="beaker" - onDismiss={onDismiss} - size="s" - /> - ); -}; diff --git a/src/plugins/discover/server/ui_settings.ts b/src/plugins/discover/server/ui_settings.ts index 806ae826bf3ab9..096869d18ca514 100644 --- a/src/plugins/discover/server/ui_settings.ts +++ b/src/plugins/discover/server/ui_settings.ts @@ -34,10 +34,6 @@ import { } from '@kbn/discover-utils'; import { DEFAULT_ROWS_PER_PAGE, ROWS_PER_PAGE_OPTIONS } from '../common/constants'; -const technicalPreviewLabel = i18n.translate('discover.advancedSettings.technicalPreviewLabel', { - defaultMessage: 'technical preview', -}); - export const getUiSettings: ( docLinks: DocLinksServiceSetup, enableValidations: boolean @@ -321,7 +317,7 @@ export const getUiSettings: ( value: true, description: i18n.translate('discover.advancedSettings.enableESQLDescription', { defaultMessage: - '{technicalPreviewLabel} This tech preview feature is highly experimental--do not rely on this for production saved searches, visualizations or dashboards. This setting enables ES|QL in Discover. If you have feedback on this experience please reach out to us on {link}', + 'This setting enables ES|QL in Discover. If you have feedback on this experience please reach out to us on {link}', values: { link: `
` + @@ -329,7 +325,6 @@ export const getUiSettings: ( defaultMessage: 'discuss.elastic.co/c/elastic-stack/kibana', }) + '', - technicalPreviewLabel: `[${technicalPreviewLabel}]`, }, }), requiresPageReload: true, diff --git a/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx b/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx index eb75d3486d5d50..e9d8058ff1420e 100644 --- a/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx +++ b/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx @@ -12,7 +12,6 @@ import { css } from '@emotion/react'; import { EuiPopover, EuiPanel, - EuiBadge, EuiHorizontalRule, EuiButton, EuiContextMenuPanel, @@ -361,11 +360,6 @@ export function ChangeDataView({ {i18n.translate('unifiedSearch.query.queryBar.textBasedLanguagesTryLabel', { defaultMessage: 'Try ES|QL', })} - - {i18n.translate('unifiedSearch.query.queryBar.textBasedLanguagesTechPreviewLabel', { - defaultMessage: 'Technical preview', - })} - ); diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx index f8ee1c5779693d..3c013cdc95998f 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/flyout_wrapper.tsx @@ -62,18 +62,10 @@ export const FlyoutWrapper = ({ values: { lang: language }, })} Date: Tue, 9 Apr 2024 16:13:44 +0100 Subject: [PATCH 41/75] skip flaky suite (#171665) --- .../cypress/e2e/automated_response_actions/results.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts index 344c4b0b3bd212..c818599d06410a 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/results.cy.ts @@ -14,7 +14,8 @@ import { indexEndpointRuleAlerts } from '../../tasks/index_endpoint_rule_alerts' import { login, ROLE } from '../../tasks/login'; -describe('Results', { tags: ['@ess', '@serverless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/171665 +describe.skip('Results', { tags: ['@ess', '@serverless'] }, () => { let endpointData: ReturnTypeFromChainable | undefined; let alertData: ReturnTypeFromChainable | undefined; const [endpointAgentId, endpointHostname] = generateRandomStringName(2); From f427c2522de7f6acd23027c7c07751887edd1060 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 16:21:49 +0100 Subject: [PATCH 42/75] skip flaky suite (#170357) --- .../security_solution_endpoint/apps/endpoint/endpoint_list.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts index 6f9c89bd8c930c..e4d9b91e579b7e 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/endpoint_list.ts @@ -87,7 +87,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // FLAKY: https://github.com/elastic/kibana/issues/170357 // FLAKY: https://github.com/elastic/kibana/issues/173670 - describe('endpoint list', function () { + describe.skip('endpoint list', function () { targetTags(this, ['@ess', '@serverless']); let indexedData: IndexedHostsAndAlertsResponse; From 4b690837c295a9e6dcaa343fe5f62b9ba0d2136c Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 16:27:22 +0100 Subject: [PATCH 43/75] skip flaky suite (#171666) --- .../apis/endpoint_response_actions/execute.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts index 1234c45f9210fb..f8019154206e0e 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_response_actions/execute.ts @@ -16,7 +16,8 @@ export default function ({ getService }: FtrProviderContext) { const supertestWithoutAuth = getService('supertestWithoutAuth'); const endpointTestResources = getService('endpointTestResources'); - describe('Endpoint `execute` response action', function () { + // FLAKY: https://github.com/elastic/kibana/issues/171666 + describe.skip('Endpoint `execute` response action', function () { targetTags(this, ['@ess', '@serverless']); let indexedData: IndexedHostsAndAlertsResponse; From 125c8951e575bcd151317e4ba646a3f5f904b5cc Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Tue, 9 Apr 2024 17:39:08 +0200 Subject: [PATCH 44/75] [ES|QL] Runs the _query requests with the version (#180248) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Due to https://github.com/elastic/kibana/issues/179641 ES is going to add a mandatory field `version`. (it is optional for now but they want to make it required for the GA). The version will change in backwards incompatible changes: - syntax changes - functions / commands output changes This is the first PR which is adding the first version manually for now. In https://github.com/elastic/kibana/issues/179641 we are exploring how to deal with versioning in kibana. We are going to offer a solution in 8.15. For now we are adding the version hardcoded (otherwise when the field is marked required kibana _query requests will fail. 👮‍♀️ If you are aware of any other application which uses the _query api and is not updated in this PR please let me know --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-es-types/src/search.ts | 1 + packages/kbn-esql-utils/constants.ts | 11 +++++++++++ packages/kbn-esql-utils/index.ts | 2 ++ .../kbn-generate-csv/src/generate_csv_esql.test.ts | 6 ++++-- packages/kbn-generate-csv/src/generate_csv_esql.ts | 3 ++- packages/kbn-generate-csv/tsconfig.json | 1 + .../load_field_stats_text_based.ts | 3 ++- src/plugins/data/common/search/expressions/esql.ts | 2 ++ .../esql_async_search_strategy.test.ts | 12 +++++++++++- src/plugins/data/tsconfig.json | 3 ++- test/api_integration/apis/esql/errors.ts | 2 ++ test/tsconfig.json | 1 + .../hooks/esql/use_esql_overall_stats_data.ts | 5 ++++- .../esql_requests/get_count_and_cardinality.ts | 2 ++ .../esql_requests/get_date_field_stats.ts | 2 ++ .../esql_requests/get_numeric_field_stats.ts | 2 ++ .../esql_requests/get_text_field_stats.ts | 2 ++ .../classes/sources/esql_source/esql_source.tsx | 7 ++++++- .../server/functions/query/index.ts | 2 ++ .../server/functions/visualize_esql.ts | 2 ++ .../rule_types/esql/build_esql_search_request.ts | 2 ++ .../rule_types/es_query/lib/fetch_esql_query.test.ts | 2 ++ .../rule_types/es_query/lib/fetch_esql_query.ts | 2 ++ 23 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 packages/kbn-esql-utils/constants.ts diff --git a/packages/kbn-es-types/src/search.ts b/packages/kbn-es-types/src/search.ts index 43fbe155860901..f9f304914afaa3 100644 --- a/packages/kbn-es-types/src/search.ts +++ b/packages/kbn-es-types/src/search.ts @@ -678,6 +678,7 @@ export interface ESQLSearchParams { // https://github.com/elastic/elasticsearch/pull/102767 // time_zone?: string; query: string; + version: string; filter?: unknown; locale?: string; dropNullColumns?: boolean; diff --git a/packages/kbn-esql-utils/constants.ts b/packages/kbn-esql-utils/constants.ts new file mode 100644 index 00000000000000..51dcbab83654b7 --- /dev/null +++ b/packages/kbn-esql-utils/constants.ts @@ -0,0 +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 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 or the Server + * Side Public License, v 1. + */ + +// we are expecting to retrieve this from an API instead +// https://github.com/elastic/elasticsearch/issues/107069 +export const ESQL_LATEST_VERSION = '2024.04.01'; diff --git a/packages/kbn-esql-utils/index.ts b/packages/kbn-esql-utils/index.ts index 1592777d136f30..885c4919865824 100644 --- a/packages/kbn-esql-utils/index.ts +++ b/packages/kbn-esql-utils/index.ts @@ -17,3 +17,5 @@ export { getESQLWithSafeLimit, TextBasedLanguages, } from './src'; + +export { ESQL_LATEST_VERSION } from './constants'; diff --git a/packages/kbn-generate-csv/src/generate_csv_esql.test.ts b/packages/kbn-generate-csv/src/generate_csv_esql.test.ts index 3e925893d37e4c..ee514788c72cf2 100644 --- a/packages/kbn-generate-csv/src/generate_csv_esql.test.ts +++ b/packages/kbn-generate-csv/src/generate_csv_esql.test.ts @@ -22,6 +22,7 @@ import { IKibanaSearchResponse } from '@kbn/data-plugin/common'; import { IScopedSearchClient } from '@kbn/data-plugin/server'; import { dataPluginMock } from '@kbn/data-plugin/server/mocks'; import { CancellationToken } from '@kbn/reporting-common'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import type { ReportingConfigType } from '@kbn/reporting-server'; import type { ESQLSearchReponse as ESQLSearchResponse } from '@kbn/es-types'; import { @@ -311,7 +312,7 @@ describe('CsvESQLGenerator', () => { ); expect(mockDataClientSearchFn).toBeCalledWith( - { params: { filter: undefined, locale: 'en', query: '' } }, + { params: { filter: undefined, locale: 'en', query: '', version: ESQL_LATEST_VERSION } }, { strategy: 'esql', transport: { @@ -389,7 +390,7 @@ describe('CsvESQLGenerator', () => { ); expect(mockDataClientSearchFn).toBeCalledWith( - { params: { filter: undefined, locale: 'en', query: '' } }, + { params: { filter: undefined, locale: 'en', query: '', version: ESQL_LATEST_VERSION } }, { strategy: 'esql', transport: { @@ -485,6 +486,7 @@ describe('CsvESQLGenerator', () => { }, locale: 'en', query: '', + version: ESQL_LATEST_VERSION, }, }, { diff --git a/packages/kbn-generate-csv/src/generate_csv_esql.ts b/packages/kbn-generate-csv/src/generate_csv_esql.ts index cea0838460ab51..dbfe073ff62f30 100644 --- a/packages/kbn-generate-csv/src/generate_csv_esql.ts +++ b/packages/kbn-generate-csv/src/generate_csv_esql.ts @@ -8,7 +8,7 @@ import { lastValueFrom } from 'rxjs'; import type { Writable } from 'stream'; - +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { errors as esErrors } from '@elastic/elasticsearch'; import type { IScopedClusterClient, IUiSettingsClient, Logger } from '@kbn/core/server'; import { @@ -100,6 +100,7 @@ export class CsvESQLGenerator { // we will need to add it back in once it is supported again. // https://github.com/elastic/elasticsearch/pull/102767 // timezone + version: ESQL_LATEST_VERSION, }, }; diff --git a/packages/kbn-generate-csv/tsconfig.json b/packages/kbn-generate-csv/tsconfig.json index 6db6b731929a16..ce90e0fc346d5d 100644 --- a/packages/kbn-generate-csv/tsconfig.json +++ b/packages/kbn-generate-csv/tsconfig.json @@ -28,5 +28,6 @@ "@kbn/reporting-export-types-csv-common", "@kbn/es-query", "@kbn/es-types", + "@kbn/esql-utils", ] } diff --git a/packages/kbn-unified-field-list/src/services/field_stats_text_based/load_field_stats_text_based.ts b/packages/kbn-unified-field-list/src/services/field_stats_text_based/load_field_stats_text_based.ts index 347bdba7238086..7d63c02633e778 100644 --- a/packages/kbn-unified-field-list/src/services/field_stats_text_based/load_field_stats_text_based.ts +++ b/packages/kbn-unified-field-list/src/services/field_stats_text_based/load_field_stats_text_based.ts @@ -15,7 +15,7 @@ import type { } from '@kbn/data-plugin/public'; import type { ESQLSearchParams, ESQLSearchReponse } from '@kbn/es-types'; import type { AggregateQuery } from '@kbn/es-query'; -import { getESQLWithSafeLimit } from '@kbn/esql-utils'; +import { ESQL_LATEST_VERSION, getESQLWithSafeLimit } from '@kbn/esql-utils'; import type { FieldStatsResponse } from '../../types'; import { buildSearchFilter, @@ -77,6 +77,7 @@ export const loadFieldStatsTextBased: LoadFieldStatsTextBasedHandler = async ({ params: { ...(filter ? { filter } : {}), ...body, + version: ESQL_LATEST_VERSION, }, }, { diff --git a/src/plugins/data/common/search/expressions/esql.ts b/src/plugins/data/common/search/expressions/esql.ts index 7ed11099c4bef9..d9893c8c203f60 100644 --- a/src/plugins/data/common/search/expressions/esql.ts +++ b/src/plugins/data/common/search/expressions/esql.ts @@ -17,6 +17,7 @@ import { Observable, defer, throwError } from 'rxjs'; import { catchError, map, switchMap, tap } from 'rxjs'; import { buildEsQuery } from '@kbn/es-query'; import type { ESQLSearchReponse, ESQLSearchParams } from '@kbn/es-types'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { getEsQueryConfig } from '../../es_query'; import { getTime } from '../../query'; import { @@ -130,6 +131,7 @@ export const getEsqlFn = ({ getStartDependencies }: EsqlFnArguments) => { query, // time_zone: timezone, locale, + version: ESQL_LATEST_VERSION, }; if (input) { const esQueryConfigs = getEsQueryConfig( diff --git a/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.test.ts b/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.test.ts index b88683157db033..b1e36954e0b67b 100644 --- a/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.test.ts +++ b/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.test.ts @@ -8,6 +8,7 @@ import { firstValueFrom } from 'rxjs'; import { KbnServerError } from '@kbn/kibana-utils-plugin/server'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { KbnSearchError } from '../../report_search_error'; import { errors } from '@elastic/elasticsearch'; import indexNotFoundException from '../../../../common/search/test_data/index_not_found_exception.json'; @@ -66,6 +67,7 @@ describe('ES|QL async search strategy', () => { const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; await esSearch .search( @@ -89,6 +91,7 @@ describe('ES|QL async search strategy', () => { const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); @@ -108,6 +111,7 @@ describe('ES|QL async search strategy', () => { query: 'from logs* | limit 10', wait_for_completion_timeout: '10s', keep_alive: '5m', + version: ESQL_LATEST_VERSION, }; const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); @@ -123,7 +127,7 @@ describe('ES|QL async search strategy', () => { it('sets transport options on POST requests', async () => { const transportOptions = { maxRetries: 1 }; mockApiCaller.mockResolvedValueOnce(mockAsyncResponse); - const params = { query: 'from logs' }; + const params = { query: 'from logs', version: ESQL_LATEST_VERSION }; const esSearch = esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); await firstValueFrom( @@ -140,6 +144,7 @@ describe('ES|QL async search strategy', () => { wait_for_completion_timeout: '100ms', keep_on_completion: false, query: 'from logs', + version: ESQL_LATEST_VERSION, }, }), expect.objectContaining({ maxRetries: 1, meta: true, signal: undefined }) @@ -150,6 +155,7 @@ describe('ES|QL async search strategy', () => { mockApiCaller.mockResolvedValueOnce(mockAsyncResponse); const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; const esSearch = esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); @@ -175,6 +181,7 @@ describe('ES|QL async search strategy', () => { const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); @@ -197,6 +204,7 @@ describe('ES|QL async search strategy', () => { const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); const abortController = new AbortController(); @@ -230,6 +238,7 @@ describe('ES|QL async search strategy', () => { const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); @@ -253,6 +262,7 @@ describe('ES|QL async search strategy', () => { const params = { query: 'from logs* | limit 10', + version: ESQL_LATEST_VERSION, }; const esSearch = await esqlAsyncSearchStrategyProvider(mockSearchConfig, mockLogger); diff --git a/src/plugins/data/tsconfig.json b/src/plugins/data/tsconfig.json index 74fc83691ec53f..c96442ccae5ed7 100644 --- a/src/plugins/data/tsconfig.json +++ b/src/plugins/data/tsconfig.json @@ -53,7 +53,8 @@ "@kbn/bfetch-error", "@kbn/es-types", "@kbn/code-editor", - "@kbn/core-test-helpers-model-versions" + "@kbn/core-test-helpers-model-versions", + "@kbn/esql-utils" ], "exclude": [ "target/**/*", diff --git a/test/api_integration/apis/esql/errors.ts b/test/api_integration/apis/esql/errors.ts index ad4e251a8f3641..9a79706a43ae3f 100644 --- a/test/api_integration/apis/esql/errors.ts +++ b/test/api_integration/apis/esql/errors.ts @@ -11,6 +11,7 @@ import Path from 'path'; import expect from '@kbn/expect'; import { MappingProperty } from '@elastic/elasticsearch/lib/api/types'; import { REPO_ROOT } from '@kbn/repo-info'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import uniqBy from 'lodash/uniqBy'; import { groupBy, mapValues } from 'lodash'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -123,6 +124,7 @@ export default function ({ getService }: FtrProviderContext) { path: '/_query', body: { query, + version: ESQL_LATEST_VERSION, }, }); return { resp, error: undefined }; diff --git a/test/tsconfig.json b/test/tsconfig.json index c5c7467dd8bcd9..ebf1a1e71c01bd 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -73,5 +73,6 @@ "@kbn/links-plugin", "@kbn/ftr-common-functional-ui-services", "@kbn/monaco", + "@kbn/esql-utils", ] } diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/esql/use_esql_overall_stats_data.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/esql/use_esql_overall_stats_data.ts index 1d5e2e4626e709..3cb59da17ad8c6 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/esql/use_esql_overall_stats_data.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/esql/use_esql_overall_stats_data.ts @@ -14,7 +14,7 @@ import { type UseCancellableSearch, useCancellableSearch } from '@kbn/ml-cancell import type { estypes } from '@elastic/elasticsearch'; import type { ISearchOptions } from '@kbn/data-plugin/common'; import type { TimeBucketsInterval } from '@kbn/ml-time-buckets'; -import { getESQLWithSafeLimit } from '@kbn/esql-utils'; +import { getESQLWithSafeLimit, ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { OMIT_FIELDS } from '../../../../../common/constants'; import type { DataStatsFetchProgress, @@ -84,6 +84,7 @@ const getESQLDocumentCountStats = async ( params: { query: esqlBaseQuery + aggQuery, ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }; try { @@ -129,6 +130,7 @@ const getESQLDocumentCountStats = async ( params: { query: esqlBaseQuery + ' | STATS _count_ = COUNT(*) | LIMIT 1', ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }; try { @@ -247,6 +249,7 @@ export const useESQLOverallStatsData = ( params: { query: esqlBaseQuery + '| LIMIT 0', ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }, { strategy: ESQL_SEARCH_STRATEGY } diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_count_and_cardinality.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_count_and_cardinality.ts index 41bc6e4b52b6da..9bcf5e7190fb2f 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_count_and_cardinality.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_count_and_cardinality.ts @@ -9,6 +9,7 @@ import pLimit from 'p-limit'; import { chunk } from 'lodash'; import { isDefined } from '@kbn/ml-is-defined'; import type { ESQLSearchReponse } from '@kbn/es-types'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import type { UseCancellableSearch } from '@kbn/ml-cancellable-search'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { i18n } from '@kbn/i18n'; @@ -105,6 +106,7 @@ const getESQLOverallStatsInChunk = async ({ params: { query, ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_date_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_date_field_stats.ts index fb068994665769..846aadf7e17ad2 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_date_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_date_field_stats.ts @@ -8,6 +8,7 @@ import type { UseCancellableSearch } from '@kbn/ml-cancellable-search'; import type { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; import { ESQL_SEARCH_STRATEGY } from '@kbn/data-plugin/common'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import type { Column } from '../../hooks/esql/use_esql_overall_stats_data'; import { getSafeESQLName } from '../requests/esql_utils'; import type { DateFieldStats, FieldStatsError } from '../../../../../common/types/field_stats'; @@ -40,6 +41,7 @@ export const getESQLDateFieldStats = async ({ params: { query: esqlBaseQuery + dateStatsQuery, ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }; try { diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_numeric_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_numeric_field_stats.ts index 2f0ea4d7b30702..615d07abc40662 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_numeric_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_numeric_field_stats.ts @@ -8,6 +8,7 @@ import type { UseCancellableSearch } from '@kbn/ml-cancellable-search'; import type { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; import { ESQL_SEARCH_STRATEGY } from '@kbn/data-plugin/common'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { chunk } from 'lodash'; import pLimit from 'p-limit'; import type { Column } from '../../hooks/esql/use_esql_overall_stats_data'; @@ -69,6 +70,7 @@ const getESQLNumericFieldStatsInChunk = async ({ params: { query: esqlBaseQuery + numericStatsQuery, ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }; try { diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_text_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_text_field_stats.ts index d78e286e88d314..f79e6fc9a71450 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_text_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/esql_requests/get_text_field_stats.ts @@ -8,6 +8,7 @@ import type { UseCancellableSearch } from '@kbn/ml-cancellable-search'; import type { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; import { ESQL_SEARCH_STRATEGY } from '@kbn/data-plugin/common'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import type { Column } from '../../hooks/esql/use_esql_overall_stats_data'; import type { FieldExamples, FieldStatsError } from '../../../../../common/types/field_stats'; @@ -39,6 +40,7 @@ export const getESQLExampleFieldValues = async ({ `| KEEP ${textFields.map((f) => f.name).join(',')} | LIMIT 10`, ...(filter ? { filter } : {}), + version: ESQL_LATEST_VERSION, }, }; const textFieldsResp = await runRequest(request, { strategy: ESQL_SEARCH_STRATEGY }); diff --git a/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx index a40e8daf79d4a5..af6a60f934e829 100644 --- a/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx +++ b/x-pack/plugins/maps/public/classes/sources/esql_source/esql_source.tsx @@ -11,7 +11,11 @@ import { lastValueFrom } from 'rxjs'; import { tap } from 'rxjs'; import { v4 as uuidv4 } from 'uuid'; import { Adapters } from '@kbn/inspector-plugin/common/adapters'; -import { getIndexPatternFromESQLQuery, getLimitFromESQLQuery } from '@kbn/esql-utils'; +import { + getIndexPatternFromESQLQuery, + getLimitFromESQLQuery, + ESQL_LATEST_VERSION, +} from '@kbn/esql-utils'; import { buildEsQuery } from '@kbn/es-query'; import type { Filter, Query } from '@kbn/es-query'; import type { ESQLSearchParams, ESQLSearchReponse } from '@kbn/es-types'; @@ -153,6 +157,7 @@ export class ESQLSource const params: ESQLSearchParams = { query: this._descriptor.esql, dropNullColumns: true, + version: ESQL_LATEST_VERSION, }; const query: Query[] = []; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts index 6c6df6f5e90d95..1cedf540a545ae 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts @@ -11,6 +11,7 @@ import pLimit from 'p-limit'; import Path from 'path'; import { lastValueFrom, startWith } from 'rxjs'; import { promisify } from 'util'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { FunctionVisibility, MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; import { VisualizeESQLUserIntention, @@ -95,6 +96,7 @@ export function registerQueryFunction({ path: '_query', body: { query, + version: ESQL_LATEST_VERSION, }, }); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts index be1e73a8039ff0..d66c356997c5a7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts @@ -6,6 +6,7 @@ */ import { esFieldTypeToKibanaFieldType } from '@kbn/field-types'; import type { ESQLSearchReponse } from '@kbn/es-types'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { VisualizeESQLUserIntention } from '@kbn/observability-ai-assistant-plugin/common/functions/visualize_esql'; import { visualizeESQLFunction } from '../../common/functions/visualize_esql'; import { FunctionRegistrationParameters } from '.'; @@ -28,6 +29,7 @@ export function registerVisualizeESQLFunction({ path: '_query', body: { query: performantQuery, + version: ESQL_LATEST_VERSION, }, })) as ESQLSearchReponse; const columns = diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts index 54ddd9b818c23d..9b04127613d22c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/esql/build_esql_search_request.ts @@ -7,6 +7,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Filter } from '@kbn/es-query'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import type { RuleFilterArray, TimestampOverride, @@ -56,6 +57,7 @@ export const buildEsqlSearchRequest = ({ // we limit size of the response to maxAlertNumber + 1 // ES|QL currently does not support pagination and returns 10,000 results query: `${query} | limit ${size + 1}`, + version: ESQL_LATEST_VERSION, filter: { bool: { filter: requestFilter, diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.test.ts index 1d7096d20140eb..ce50dcb2edede7 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.test.ts @@ -67,6 +67,7 @@ describe('fetchEsqlQuery', () => { }, }, "query": "from test", + "version": "2024.04.01", } `); }); @@ -94,6 +95,7 @@ describe('fetchEsqlQuery', () => { }, }, "query": "from test | limit 100", + "version": "2024.04.01", } `); }); diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts index 87ae2c1123547f..4b527f529874e8 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_esql_query.ts @@ -6,6 +6,7 @@ */ import { parseAggregationResults } from '@kbn/triggers-actions-ui-plugin/common'; +import { ESQL_LATEST_VERSION } from '@kbn/esql-utils'; import { SharePluginStart } from '@kbn/share-plugin/server'; import { IScopedClusterClient, Logger } from '@kbn/core/server'; import { OnlyEsqlQueryRuleParams } from '../types'; @@ -90,6 +91,7 @@ export const getEsqlQuery = ( const query = { query: alertLimit ? `${params.esqlQuery.esql} | limit ${alertLimit}` : params.esqlQuery.esql, + version: ESQL_LATEST_VERSION, filter: { bool: { filter: rangeFilter, From 15dea75d5263bae1122c38b1b24c14449c6db20d Mon Sep 17 00:00:00 2001 From: Clint Andrew Hall Date: Tue, 9 Apr 2024 12:03:35 -0400 Subject: [PATCH 45/75] [dx] Tweak profiling to include the webpack visualization from CI (#180335) --- package.json | 1 + packages/kbn-optimizer/src/worker/webpack.config.ts | 7 +++++++ yarn.lock | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/package.json b/package.json index 816332219392a3..d0f1c3a68daae4 100644 --- a/package.json +++ b/package.json @@ -1519,6 +1519,7 @@ "@types/vinyl-fs": "^3.0.2", "@types/watchpack": "^1.1.5", "@types/webpack": "^4.41.3", + "@types/webpack-bundle-analyzer": "^4.7.0", "@types/webpack-env": "^1.15.3", "@types/webpack-merge": "^4.1.5", "@types/webpack-sources": "^0.1.4", diff --git a/packages/kbn-optimizer/src/worker/webpack.config.ts b/packages/kbn-optimizer/src/worker/webpack.config.ts index d36895151587f1..ecf2ea603767dc 100644 --- a/packages/kbn-optimizer/src/worker/webpack.config.ts +++ b/packages/kbn-optimizer/src/worker/webpack.config.ts @@ -20,6 +20,7 @@ import * as UiSharedDepsSrc from '@kbn/ui-shared-deps-src'; import StatoscopeWebpackPlugin from '@statoscope/webpack-plugin'; // @ts-expect-error import VisualizerPlugin from 'webpack-visualizer-plugin2'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import { Bundle, BundleRemotes, WorkerConfig, parseDllManifest } from '../common'; import { BundleRemotesPlugin } from './bundle_remotes_plugin'; @@ -92,6 +93,12 @@ export function getWebpackConfig( saveReportTo: `${bundle.outputDir}/${bundle.id}.statoscope.html`, }), new VisualizerPlugin({ filename: `${bundle.id}.visualizer.html` }), + new BundleAnalyzerPlugin({ + analyzerMode: 'static', + reportFilename: `${bundle.id}.analyzer.html`, + openAnalyzer: false, + logLevel: 'silent', + }), ] : []), // @ts-ignore something is wrong with the StatoscopeWebpackPlugin type. diff --git a/yarn.lock b/yarn.lock index 01a86c1aa00312..02456e91ca8403 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10812,6 +10812,15 @@ "@types/node" "*" chokidar "^2.1.2" +"@types/webpack-bundle-analyzer@^4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#fe199e724ce3d38705f6f1ba4d62429b7c360541" + integrity sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg== + dependencies: + "@types/node" "*" + tapable "^2.2.0" + webpack "^5" + "@types/webpack-env@^1.15.3", "@types/webpack-env@^1.16.0": version "1.16.3" resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.3.tgz#b776327a73e561b71e7881d0cd6d34a1424db86a" From c3c9df690c13a89e0e6a1ecbe32094a98f3bd410 Mon Sep 17 00:00:00 2001 From: Dan Panzarella Date: Tue, 9 Apr 2024 12:05:02 -0400 Subject: [PATCH 46/75] [Security Solution] Disable v2 transform names (#180383) --- .../security_solution/common/endpoint/utils/package_v2.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/common/endpoint/utils/package_v2.ts b/x-pack/plugins/security_solution/common/endpoint/utils/package_v2.ts index 5717f8d601502d..56b23ed956770b 100644 --- a/x-pack/plugins/security_solution/common/endpoint/utils/package_v2.ts +++ b/x-pack/plugins/security_solution/common/endpoint/utils/package_v2.ts @@ -5,10 +5,10 @@ * 2.0. */ -import semverLte from 'semver/functions/lte'; +// import semverLte from 'semver/functions/lte'; // switch to "v2" logic -const MIN_ENDPOINT_PACKAGE_V2_VERSION = '8.14.0-prerelease.1'; +// const MIN_ENDPOINT_PACKAGE_V2_VERSION = '8.14.0-prerelease.1'; export function isEndpointPackageV2(version: string) { - return semverLte(MIN_ENDPOINT_PACKAGE_V2_VERSION, version); + return false; } From 3839523be92cc78bf01300ca1f3e3d25fc94611b Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 17:13:58 +0100 Subject: [PATCH 47/75] skip flaky suite (#171653, #171654) --- .../apps/integrations/policy_details.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/policy_details.ts b/x-pack/test/security_solution_endpoint/apps/integrations/policy_details.ts index f4d587daf64f14..a2b1feaabd7cd3 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/policy_details.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/policy_details.ts @@ -30,7 +30,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // FLAKY: https://github.com/elastic/kibana/issues/171653 // FLAKY: https://github.com/elastic/kibana/issues/171654 - describe('When on the Endpoint Policy Details Page', function () { + describe.skip('When on the Endpoint Policy Details Page', function () { targetTags(this, ['@ess', '@serverless']); let indexedData: IndexedHostsAndAlertsResponse; From 09228a3ed6f9c2b75596b530fecf6bd33eeb68e3 Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Tue, 9 Apr 2024 09:31:05 -0700 Subject: [PATCH 48/75] [ResponseOps] Remove usage of deprecated React rendering utilities (#180098) ## Summary Partially addresses https://github.com/elastic/kibana-team/issues/805 Follows https://github.com/elastic/kibana/pull/180003 These changes come up from searching in the code and finding where certain kinds of deprecated AppEx-SharedUX modules are imported. **Reviewers: Please interact with critical paths through the UI components touched in this PR, ESPECIALLY in terms of testing dark mode and i18n.** * Started with focusing on code owned by ResponseOps. * Stack Management changes trickled into this PR because ResponseOps needs the `theme` field from `ManagementAppMountParams` * Security changes trickled into this PR, in its test code, because of the Stack Management changes. ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../management_app/management_app.tsx | 58 ++++++++----------- .../management_app/management_router.tsx | 7 ++- .../management_app_wrapper.tsx | 15 ++++- src/plugins/management/public/types.ts | 4 +- src/plugins/management/tsconfig.json | 1 + .../application/maintenance_windows.tsx | 32 +++++----- .../alerting/public/lib/test_utils.tsx | 10 ++-- x-pack/plugins/alerting/tsconfig.json | 4 +- .../cases/public/common/use_cases_toast.tsx | 12 ++-- .../public/common/use_is_dark_theme.test.tsx | 46 --------------- .../cases/public/common/use_is_dark_theme.tsx | 31 ---------- .../visualizations/actions/action_wrapper.tsx | 10 ++-- .../actions/add_to_existing_case.test.tsx | 7 ++- .../actions/add_to_existing_case.tsx | 6 +- .../visualizations/actions/mocks.ts | 23 +++----- x-pack/plugins/cases/tsconfig.json | 2 +- .../api_keys/api_keys_management_app.test.tsx | 3 +- .../role_mappings_management_app.test.tsx | 5 +- .../roles/roles_management_app.test.tsx | 3 +- .../users/users_management_app.test.tsx | 3 +- .../management/spaces_management_app.test.tsx | 3 +- .../public/connector_types/lib/test_utils.tsx | 7 +-- .../public/application/alerts_app.tsx | 29 ++++------ .../public/application/app.tsx | 41 +++++++------ .../public/application/connectors_app.tsx | 29 ++++------ .../hooks/use_bulk_edit_response.tsx | 10 ++-- .../hooks/use_bulk_operation_toast.tsx | 10 ++-- .../connectors_selection.test.tsx | 12 ++-- .../toolbar/components/inspect/modal.test.tsx | 8 ++- .../rule_details/components/rule_details.tsx | 19 ++++-- .../sections/rule_form/rule_add.tsx | 7 ++- .../sections/rule_form/rule_edit.tsx | 7 ++- .../components/rule_status_dropdown.tsx | 9 ++- .../rules_list/components/rules_list.tsx | 7 ++- .../application/sections/test_utils.tsx | 8 +-- .../triggers_actions_ui/public/plugin.ts | 4 +- .../plugins/triggers_actions_ui/tsconfig.json | 5 +- 37 files changed, 217 insertions(+), 280 deletions(-) delete mode 100644 x-pack/plugins/cases/public/common/use_is_dark_theme.test.tsx delete mode 100644 x-pack/plugins/cases/public/common/use_is_dark_theme.tsx diff --git a/src/plugins/management/public/components/management_app/management_app.tsx b/src/plugins/management/public/components/management_app/management_app.tsx index c64f8e74ff3a56..d7284c450ee4ad 100644 --- a/src/plugins/management/public/components/management_app/management_app.tsx +++ b/src/plugins/management/public/components/management_app/management_app.tsx @@ -10,13 +10,13 @@ import './management_app.scss'; import React, { useState, useEffect, useCallback } from 'react'; import { BehaviorSubject } from 'rxjs'; -import { I18nProvider } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { AppMountParameters, ChromeBreadcrumb, ScopedHistory } from '@kbn/core/public'; import { CoreStart } from '@kbn/core/public'; import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import { reactRouterNavigate, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { reactRouterNavigate } from '@kbn/kibana-react-plugin/public'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import { KibanaPageTemplate, KibanaPageTemplateProps } from '@kbn/shared-ux-page-kibana-template'; import useObservable from 'react-use/lib/useObservable'; import { AppContextProvider } from './management_context'; @@ -32,7 +32,6 @@ import { SectionsServiceStart, NavigationCardsSubject } from '../../types'; interface ManagementAppProps { appBasePath: string; history: AppMountParameters['history']; - theme$: AppMountParameters['theme$']; dependencies: ManagementAppDependencies; } @@ -45,13 +44,8 @@ export interface ManagementAppDependencies { cardsNavigationConfig$: BehaviorSubject; } -export const ManagementApp = ({ - dependencies, - history, - theme$, - appBasePath, -}: ManagementAppProps) => { - const { setBreadcrumbs, isSidebarEnabled$, cardsNavigationConfig$ } = dependencies; +export const ManagementApp = ({ dependencies, history, appBasePath }: ManagementAppProps) => { + const { coreStart, setBreadcrumbs, isSidebarEnabled$, cardsNavigationConfig$ } = dependencies; const [selectedId, setSelectedId] = useState(''); const [sections, setSections] = useState(); const isSidebarEnabled = useObservable(isSidebarEnabled$); @@ -114,30 +108,28 @@ export const ManagementApp = ({ }; return ( - - + + - - - - - + + + - - + + ); }; diff --git a/src/plugins/management/public/components/management_app/management_router.tsx b/src/plugins/management/public/components/management_app/management_router.tsx index 6c62163f2356c3..3d56f097127bf9 100644 --- a/src/plugins/management/public/components/management_app/management_router.tsx +++ b/src/plugins/management/public/components/management_app/management_router.tsx @@ -14,6 +14,7 @@ import { AppMountParameters, ChromeBreadcrumb, ScopedHistory, + ThemeServiceStart, } from '@kbn/core/public'; import { KibanaErrorBoundary, KibanaErrorBoundaryProvider } from '@kbn/shared-ux-error-boundary'; import { ManagementAppWrapper } from '../management_app_wrapper'; @@ -22,7 +23,7 @@ import { ManagementSection } from '../../utils'; interface ManagementRouterProps { history: AppMountParameters['history']; - theme$: AppMountParameters['theme$']; + theme: ThemeServiceStart; setBreadcrumbs: (crumbs?: ChromeBreadcrumb[], appHistory?: ScopedHistory) => void; onAppMounted: (id: string) => void; sections: ManagementSection[]; @@ -35,7 +36,7 @@ export const ManagementRouter = memo( setBreadcrumbs, onAppMounted, sections, - theme$, + theme, analytics, }: ManagementRouterProps) => { return ( @@ -55,7 +56,7 @@ export const ManagementRouter = memo( setBreadcrumbs={setBreadcrumbs} onAppMounted={onAppMounted} history={history} - theme$={theme$} + theme={theme} /> )} /> diff --git a/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx b/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx index 6a9a5ad4baeda4..8f044c15afd725 100644 --- a/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx +++ b/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx @@ -8,7 +8,12 @@ import React, { createRef, Component } from 'react'; -import { ChromeBreadcrumb, AppMountParameters, ScopedHistory } from '@kbn/core/public'; +import { + ChromeBreadcrumb, + AppMountParameters, + ScopedHistory, + ThemeServiceStart, +} from '@kbn/core/public'; import classNames from 'classnames'; import { APP_WRAPPER_CLASS } from '@kbn/core/public'; import { ThrowIfError } from '@kbn/shared-ux-error-boundary'; @@ -20,7 +25,7 @@ interface ManagementSectionWrapperProps { setBreadcrumbs: (crumbs?: ChromeBreadcrumb[], history?: ScopedHistory) => void; onAppMounted: (id: string) => void; history: AppMountParameters['history']; - theme$: AppMountParameters['theme$']; + theme: ThemeServiceStart; } interface ManagementSectionWrapperState { @@ -40,15 +45,19 @@ export class ManagementAppWrapper extends Component< } componentDidMount() { - const { setBreadcrumbs, app, onAppMounted, history, theme$ } = this.props; + const { setBreadcrumbs, app, onAppMounted, history, theme } = this.props; const { mount, basePath } = app; const appHistory = history.createSubHistory(app.basePath); + // TODO: Remove this: it provides a deprecated field still needed in ManagementAppMountParams + const { theme$ } = theme; + const mountResult = mount({ basePath, setBreadcrumbs: (crumbs: ChromeBreadcrumb[]) => setBreadcrumbs(crumbs, appHistory), element: this.mountElementRef.current!, history: appHistory, + theme, theme$, }); diff --git a/src/plugins/management/public/types.ts b/src/plugins/management/public/types.ts index 264a4450e8f91f..eee1b8617a49a4 100644 --- a/src/plugins/management/public/types.ts +++ b/src/plugins/management/public/types.ts @@ -7,7 +7,7 @@ */ import { Observable } from 'rxjs'; -import { ScopedHistory, Capabilities } from '@kbn/core/public'; +import { ScopedHistory, Capabilities, ThemeServiceStart } from '@kbn/core/public'; import type { LocatorPublic } from '@kbn/share-plugin/common'; import { ChromeBreadcrumb, CoreTheme } from '@kbn/core/public'; import type { CardsNavigationComponentProps } from '@kbn/management-cards-navigation'; @@ -70,6 +70,8 @@ export interface ManagementAppMountParams { element: HTMLElement; // element the section should render into setBreadcrumbs: (crumbs: ChromeBreadcrumb[]) => void; history: ScopedHistory; + theme: ThemeServiceStart; + /** @deprecated - use `theme` **/ theme$: Observable; } diff --git a/src/plugins/management/tsconfig.json b/src/plugins/management/tsconfig.json index 116debbf724963..91e0e940c8fc65 100644 --- a/src/plugins/management/tsconfig.json +++ b/src/plugins/management/tsconfig.json @@ -27,6 +27,7 @@ "@kbn/serverless", "@kbn/shared-ux-error-boundary", "@kbn/deeplinks-management", + "@kbn/react-kibana-context-render", ], "exclude": [ "target/**/*" diff --git a/x-pack/plugins/alerting/public/application/maintenance_windows.tsx b/x-pack/plugins/alerting/public/application/maintenance_windows.tsx index bb2ba1847abac3..5f4b81bb716f7b 100644 --- a/x-pack/plugins/alerting/public/application/maintenance_windows.tsx +++ b/x-pack/plugins/alerting/public/application/maintenance_windows.tsx @@ -7,17 +7,18 @@ import React, { Suspense } from 'react'; import ReactDOM from 'react-dom'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { Router, Routes, Route } from '@kbn/shared-ux-router'; + +import { EuiLoadingSpinner } from '@elastic/eui'; import { CoreStart } from '@kbn/core/public'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; -import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import { ManagementAppMountParams } from '@kbn/management-plugin/public'; -import { EuiLoadingSpinner } from '@elastic/eui'; -import { AlertingPluginStart } from '../plugin'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; +import { Route, Router, Routes } from '@kbn/shared-ux-router'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { MAINTENANCE_WINDOW_PATHS } from '../../common'; import { useLicense } from '../hooks/use_license'; +import { AlertingPluginStart } from '../plugin'; const MaintenanceWindowsLazy: React.FC = React.lazy(() => import('../pages/maintenance_windows')); const MaintenanceWindowsCreateLazy: React.FC = React.lazy( @@ -76,14 +77,13 @@ export const renderApp = ({ mountParams: ManagementAppMountParams; kibanaVersion: string; }) => { - const { element, history, theme$ } = mountParams; - const i18nCore = core.i18n; - const isDarkMode = core.theme.getTheme().darkMode; + const { element, history } = mountParams; + const { i18n, theme } = core; const queryClient = new QueryClient(); ReactDOM.render( - + - - - - - - - + + + - , + , element ); return () => { diff --git a/x-pack/plugins/alerting/public/lib/test_utils.tsx b/x-pack/plugins/alerting/public/lib/test_utils.tsx index 6e1642bfe0d364..9c7b59a1527c49 100644 --- a/x-pack/plugins/alerting/public/lib/test_utils.tsx +++ b/x-pack/plugins/alerting/public/lib/test_utils.tsx @@ -6,14 +6,14 @@ */ import React from 'react'; -import { of, BehaviorSubject } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { I18nProvider } from '@kbn/i18n-react'; -import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; import { render as reactRender, RenderOptions, RenderResult } from '@testing-library/react'; import { Capabilities, CoreStart } from '@kbn/core/public'; import { coreMock } from '@kbn/core/public/mocks'; -import { euiDarkVars } from '@kbn/ui-theme'; import type { ILicense } from '@kbn/licensing-plugin/public'; import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; @@ -40,8 +40,6 @@ export const createAppMockRenderer = ({ capabilities, license, }: AppMockRendererArgs = {}): AppMockRenderer => { - const theme$ = of({ eui: euiDarkVars, darkMode: true }); - const licensingPluginMock = licensingMock.createStart(); const queryClient = new QueryClient({ @@ -83,7 +81,7 @@ export const createAppMockRenderer = ({ }; const AppWrapper: React.FC<{ children: React.ReactElement }> = React.memo(({ children }) => ( - + {children} diff --git a/x-pack/plugins/alerting/tsconfig.json b/x-pack/plugins/alerting/tsconfig.json index de830800f5aeaa..2158a9d7d33a8b 100644 --- a/x-pack/plugins/alerting/tsconfig.json +++ b/x-pack/plugins/alerting/tsconfig.json @@ -68,7 +68,9 @@ "@kbn/core-ui-settings-server-mocks", "@kbn/core-test-helpers-kbn-server", "@kbn/core-http-router-server-internal", - "@kbn/core-execution-context-server-mocks" + "@kbn/core-execution-context-server-mocks", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme" ], "exclude": [ "target/**/*" diff --git a/x-pack/plugins/cases/public/common/use_cases_toast.tsx b/x-pack/plugins/cases/public/common/use_cases_toast.tsx index 624c46aaf5a4f9..71a9e3add1ae4d 100644 --- a/x-pack/plugins/cases/public/common/use_cases_toast.tsx +++ b/x-pack/plugins/cases/public/common/use_cases_toast.tsx @@ -9,7 +9,7 @@ import type { ErrorToastOptions } from '@kbn/core/public'; import { EuiButtonEmpty, EuiText, logicalCSS, useEuiTheme } from '@elastic/eui'; import React, { useMemo } from 'react'; import { css } from '@emotion/react'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { isValidOwner } from '../../common/utils/owner'; import type { CaseUI } from '../../common'; import { AttachmentType } from '../../common/types/domain'; @@ -106,7 +106,8 @@ const getErrorMessage = (error: Error | ServerError): string => { export const useCasesToast = () => { const { appId } = useApplication(); - const { getUrlForApp, navigateToUrl } = useKibana().services.application; + const { application, i18n, theme } = useKibana().services; + const { getUrlForApp, navigateToUrl } = application; const toasts = useToasts(); @@ -147,12 +148,13 @@ export const useCasesToast = () => { return toasts.addSuccess({ color: 'success', iconType: 'check', - title: toMountPoint(), + title: toMountPoint(, { i18n, theme }), text: toMountPoint( + />, + { i18n, theme } ), }); }, @@ -175,7 +177,7 @@ export const useCasesToast = () => { }); }, }), - [appId, getUrlForApp, navigateToUrl, toasts] + [i18n, theme, appId, getUrlForApp, navigateToUrl, toasts] ); }; diff --git a/x-pack/plugins/cases/public/common/use_is_dark_theme.test.tsx b/x-pack/plugins/cases/public/common/use_is_dark_theme.test.tsx deleted file mode 100644 index 460fac7c01be58..00000000000000 --- a/x-pack/plugins/cases/public/common/use_is_dark_theme.test.tsx +++ /dev/null @@ -1,46 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { BehaviorSubject } from 'rxjs'; -import { renderHook } from '@testing-library/react-hooks'; -import { useKibana } from './lib/kibana'; -import { useIsDarkTheme } from './use_is_dark_theme'; -import type { CoreTheme } from '@kbn/core-theme-browser'; -import type { AppMockRenderer } from './mock'; -import { createAppMockRenderer } from './mock'; - -jest.mock('./lib/kibana'); - -const useKibanaMock = useKibana as jest.Mocked; - -describe('useIsDarkTheme', () => { - let appMockRender: AppMockRenderer; - - beforeEach(() => { - appMockRender = createAppMockRenderer(); - useKibanaMock().services.theme.theme$ = new BehaviorSubject({ darkMode: true }); - }); - - it('returns true if the theme is in dark mode', async () => { - const { result } = renderHook(() => useIsDarkTheme(), { - wrapper: appMockRender.AppWrapper, - }); - - expect(result.current).toBe(true); - }); - - it('returns the default theme if the theme service is undefined', async () => { - // @ts-expect-error: service maybe undefined - useKibanaMock().services.theme = undefined; - - const { result } = renderHook(() => useIsDarkTheme(), { - wrapper: appMockRender.AppWrapper, - }); - - expect(result.current).toBe(false); - }); -}); diff --git a/x-pack/plugins/cases/public/common/use_is_dark_theme.tsx b/x-pack/plugins/cases/public/common/use_is_dark_theme.tsx deleted file mode 100644 index 4e6120d953a275..00000000000000 --- a/x-pack/plugins/cases/public/common/use_is_dark_theme.tsx +++ /dev/null @@ -1,31 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { useMemo } from 'react'; -import { of } from 'rxjs'; -import useObservable from 'react-use/lib/useObservable'; -import { useKibana } from './lib/kibana'; - -const themeDefault = { darkMode: false }; - -/** - * Indicates if the currently applied theme is either dark or light. - * @return {boolean} - Returns true if the currently applied theme is dark. - */ -export function useIsDarkTheme(): boolean { - const { - services: { theme }, - } = useKibana(); - - const themeObservable$ = useMemo(() => { - return theme?.theme$ ?? of(themeDefault); - }, [theme]); - - const { darkMode } = useObservable(themeObservable$, themeDefault); - - return darkMode; -} diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx index 798ddea7081933..543969c731d362 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx @@ -8,9 +8,8 @@ import type { PropsWithChildren } from 'react'; import React from 'react'; import { Router } from '@kbn/shared-ux-router'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { useIsDarkTheme } from '../../../common/use_is_dark_theme'; import { SECURITY_SOLUTION_OWNER } from '../../../../common'; import type { CasesUIActionProps } from './types'; import { KibanaContextProvider, useKibana } from '../../../common/lib/kibana'; @@ -30,8 +29,7 @@ const ActionWrapperWithContext: React.FC> = ({ caseContextProps, currentAppId, }) => { - const { application } = useKibana().services; - const isDarkTheme = useIsDarkTheme(); + const { application, i18n, theme } = useKibana().services; const owner = getCaseOwnerByAppId(currentAppId); const casePermissions = canUseCases(application.capabilities)(owner ? [owner] : undefined); @@ -39,7 +37,7 @@ const ActionWrapperWithContext: React.FC> = ({ const syncAlerts = owner === SECURITY_SOLUTION_OWNER; return ( - + > = ({ > {children} - + ); }; diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx index 6742242b71fb25..1e1eb398c991b5 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.test.tsx @@ -14,7 +14,7 @@ import { createAddToExistingCaseLensAction } from './add_to_existing_case'; import type { ActionContext } from './types'; import { useCasesAddToExistingCaseModal } from '../../all_cases/selector_modal/use_cases_add_to_existing_case_modal'; import React from 'react'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { getMockApplications$, getMockCaseUiActionProps, @@ -44,10 +44,13 @@ jest.mock('../../../client/helpers/can_use_cases', () => { }); jest.mock('@kbn/kibana-react-plugin/public', () => ({ - toMountPoint: jest.fn(), KibanaThemeProvider: jest.fn().mockImplementation(({ children }) => <>{children}), })); +jest.mock('@kbn/react-kibana-mount', () => ({ + toMountPoint: jest.fn(), +})); + jest.mock('../../../common/lib/kibana', () => { return { useKibana: jest.fn(), diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx index b71248353ec540..647abe8b41f2a8 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx @@ -10,7 +10,7 @@ import type { Embeddable as LensEmbeddable } from '@kbn/lens-plugin/public'; import { createAction } from '@kbn/ui-actions-plugin/public'; import { isErrorEmbeddable } from '@kbn/embeddable-plugin/public'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import type { CaseUI } from '../../../../common'; import { isLensEmbeddable, hasInput, getLensCaseAttachment } from './utils'; @@ -59,7 +59,7 @@ export const createAddToExistingCaseLensAction = ({ history, caseContextProps, }: CasesUIActionProps) => { - const { application: applicationService, theme } = core; + const { application: applicationService, i18n, theme } = core; let currentAppId: string | undefined; @@ -124,7 +124,7 @@ export const createAddToExistingCaseLensAction = ({ onSuccess={onSuccess} /> , - { theme$: theme.theme$ } + { i18n, theme } ); mount(targetDomElement); diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/mocks.ts b/x-pack/plugins/cases/public/components/visualizations/actions/mocks.ts index 7957b24b1ba481..aee3b128d554bd 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/mocks.ts +++ b/x-pack/plugins/cases/public/components/visualizations/actions/mocks.ts @@ -4,23 +4,16 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type { CoreTheme, PublicAppInfo } from '@kbn/core/public'; -import { BehaviorSubject, of } from 'rxjs'; -import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; -import { createBrowserHistory } from 'history'; -import type { CasesUIActionProps } from './types'; -const mockTheme: CoreTheme = { - darkMode: false, -}; +import { createBrowserHistory } from 'history'; +import { BehaviorSubject } from 'rxjs'; -const createThemeMock = (): CoreTheme => { - return { ...mockTheme }; -}; +import type { PublicAppInfo } from '@kbn/core/public'; +import { coreMock } from '@kbn/core/public/mocks'; +import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; +import type { CasesUIActionProps } from './types'; -export const createTheme$Mock = () => { - return of(createThemeMock()); -}; +const coreStart = coreMock.createStart(); export class MockEmbeddable { public type; @@ -76,8 +69,8 @@ export const getMockApplications$ = () => export const getMockCaseUiActionProps = () => { const core = { + ...coreStart, application: { currentAppId$: getMockCurrentAppId$(), capabilities: {} }, - theme: { theme$: createTheme$Mock() }, uiSettings: { get: jest.fn().mockReturnValue(true), }, diff --git a/x-pack/plugins/cases/tsconfig.json b/x-pack/plugins/cases/tsconfig.json index 1a1f8e56543bf7..e493964cc088ec 100644 --- a/x-pack/plugins/cases/tsconfig.json +++ b/x-pack/plugins/cases/tsconfig.json @@ -64,7 +64,6 @@ "@kbn/ui-actions-plugin", "@kbn/core-lifecycle-browser", "@kbn/core-saved-objects-api-server-mocks", - "@kbn/core-theme-browser", "@kbn/serverless", "@kbn/core-http-server", "@kbn/alerting-plugin", @@ -73,6 +72,7 @@ "@kbn/rison", "@kbn/core-application-browser", "@kbn/react-kibana-context-render", + "@kbn/react-kibana-mount", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/security/public/management/api_keys/api_keys_management_app.test.tsx b/x-pack/plugins/security/public/management/api_keys/api_keys_management_app.test.tsx index 36307494a7711c..dae1ffd5709f4d 100644 --- a/x-pack/plugins/security/public/management/api_keys/api_keys_management_app.test.tsx +++ b/x-pack/plugins/security/public/management/api_keys/api_keys_management_app.test.tsx @@ -56,7 +56,8 @@ describe('apiKeysManagementApp', () => { element, setBreadcrumbs, history, - theme$: themeServiceMock.createTheme$(), + theme: coreStartMock.theme, + theme$: themeServiceMock.createTheme$(), // needed as a deprecated field in ManagementAppMountParams }); }); diff --git a/x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.test.tsx b/x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.test.tsx index 8e11a1929ca160..2f0ad8f240fa35 100644 --- a/x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.test.tsx +++ b/x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.test.tsx @@ -40,7 +40,7 @@ async function mountApp( const setBreadcrumbs = jest.fn(); const startServices = await coreMock.createSetup().getStartServices(); - const [{ application }] = startServices; + const [{ application, theme }] = startServices; application.capabilities = { ...application.capabilities, role_mappings: { @@ -57,7 +57,8 @@ async function mountApp( element: container, setBreadcrumbs, history: scopedHistoryMock.create({ pathname }), - theme$: themeServiceMock.createTheme$(), + theme, + theme$: themeServiceMock.createTheme$(), // needed as a deprecated field in ManagementAppMountParams }); }); diff --git a/x-pack/plugins/security/public/management/roles/roles_management_app.test.tsx b/x-pack/plugins/security/public/management/roles/roles_management_app.test.tsx index 7545c69b7a95f8..d9b14789054953 100644 --- a/x-pack/plugins/security/public/management/roles/roles_management_app.test.tsx +++ b/x-pack/plugins/security/public/management/roles/roles_management_app.test.tsx @@ -55,7 +55,8 @@ async function mountApp(basePath: string, pathname: string) { element: container, setBreadcrumbs, history: scopedHistoryMock.create({ pathname }), - theme$: themeServiceMock.createTheme$(), + theme: coreStart.theme, + theme$: themeServiceMock.createTheme$(), // needed as a deprecated field in ManagementAppMountParams }); }); diff --git a/x-pack/plugins/security/public/management/users/users_management_app.test.tsx b/x-pack/plugins/security/public/management/users/users_management_app.test.tsx index 992ec3204de216..c442daf8ed2737 100644 --- a/x-pack/plugins/security/public/management/users/users_management_app.test.tsx +++ b/x-pack/plugins/security/public/management/users/users_management_app.test.tsx @@ -38,7 +38,8 @@ describe('usersManagementApp', () => { element, setBreadcrumbs, history, - theme$: themeServiceMock.createTheme$(), + theme: coreStartMock.theme, + theme$: themeServiceMock.createTheme$(), // needed as a deprecated field in ManagementAppMountParams }); }); diff --git a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx index 2c3f613db50a01..649b74cb14ee1a 100644 --- a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx @@ -58,7 +58,8 @@ async function mountApp(basePath: string, pathname: string, spaceId?: string) { element: container, setBreadcrumbs, history: scopedHistoryMock.create({ pathname }), - theme$: themeServiceMock.createTheme$(), + theme: coreStart.theme, + theme$: themeServiceMock.createTheme$(), // needed as a deprecated field in ManagementAppMountParams }); return { unmount, container, setBreadcrumbs, docTitle: coreStart.chrome.docTitle }; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx b/x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx index 59a6d3808ff815..6503cc77634690 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx @@ -6,14 +6,12 @@ */ import React, { useCallback } from 'react'; -import { of } from 'rxjs'; import { I18nProvider } from '@kbn/i18n-react'; import { EuiButton } from '@elastic/eui'; import { Form, useForm, FormData } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { act } from 'react-dom/test-utils'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { render as reactRender, RenderOptions, RenderResult } from '@testing-library/react'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; import { ConnectorServices } from '@kbn/triggers-actions-ui-plugin/public/types'; import { TriggersAndActionsUiServices } from '@kbn/triggers-actions-ui-plugin/public'; @@ -93,13 +91,10 @@ export interface AppMockRenderer { export const createAppMockRenderer = (): AppMockRenderer => { const services = createStartServicesMock(); - const theme$ = of({ darkMode: false }); const AppWrapper: React.FC<{ children: React.ReactElement }> = ({ children }) => ( - - {children} - + {children} ); AppWrapper.displayName = 'AppWrapper'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx index 9bf267fb9852a2..5b1ac69c0fa66d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx @@ -8,10 +8,8 @@ import React, { lazy } from 'react'; import { Router, Routes, Route } from '@kbn/shared-ux-router'; import { render, unmountComponentAtNode } from 'react-dom'; -import { I18nProvider } from '@kbn/i18n-react'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { suspendedComponentWithProps } from './lib/suspended_component_with_props'; import { setDataViewsService } from '../common/lib/data_apis'; @@ -29,23 +27,18 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, theme, theme$ } = deps; - const isDarkMode = theme.getTheme().darkMode; + const { dataViews, i18n, theme } = deps; setDataViewsService(dataViews); return ( - - - - - - - - - - - - - + + + + + + + + + ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx index 808778e95a6236..6116f4571990d0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx @@ -8,12 +8,16 @@ import React, { lazy } from 'react'; import { Redirect } from 'react-router-dom'; import { Router, Routes, Route } from '@kbn/shared-ux-router'; -import { ChromeBreadcrumb, CoreStart, CoreTheme, ScopedHistory } from '@kbn/core/public'; +import { + ChromeBreadcrumb, + CoreStart, + I18nStart, + ScopedHistory, + ThemeServiceStart, +} from '@kbn/core/public'; import { render, unmountComponentAtNode } from 'react-dom'; -import { I18nProvider } from '@kbn/i18n-react'; -import { Observable } from 'rxjs'; import { KibanaFeature } from '@kbn/features-plugin/common'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import { ChartsPluginStart } from '@kbn/charts-plugin/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -26,7 +30,6 @@ import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { LensPublicStart } from '@kbn/lens-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; import { ruleDetailsRoute } from '@kbn/rule-data-utils'; import { QueryClientProvider } from '@tanstack/react-query'; @@ -74,7 +77,8 @@ export interface TriggersAndActionsUiServices extends CoreStart { history: ScopedHistory; kibanaFeatures: KibanaFeature[]; element: HTMLElement; - theme$: Observable; + i18n: I18nStart; + theme: ThemeServiceStart; unifiedSearch: UnifiedSearchPublicPluginStart; licensing: LicensingPluginStart; expressions: ExpressionsStart; @@ -92,26 +96,21 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, theme } = deps; + const { dataViews, i18n, theme } = deps; const sections: Section[] = ['rules', 'logs']; - const isDarkMode = theme.getTheme().darkMode; const sectionsRegex = sections.join('|'); setDataViewsService(dataViews); return ( - - - - - - - - - - - - - + + + + + + + + + ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx index 8d23a724f2571b..8fe0d9745d1c21 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx @@ -10,10 +10,9 @@ import { Redirect } from 'react-router-dom'; import { Router, Routes, Route } from '@kbn/shared-ux-router'; import { ChromeBreadcrumb, CoreStart, CoreTheme, ScopedHistory } from '@kbn/core/public'; import { render, unmountComponentAtNode } from 'react-dom'; -import { I18nProvider } from '@kbn/i18n-react'; import { Observable } from 'rxjs'; import { KibanaFeature } from '@kbn/features-plugin/common'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import { ChartsPluginStart } from '@kbn/charts-plugin/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -24,7 +23,6 @@ import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import { QueryClientProvider } from '@tanstack/react-query'; import { Storage } from '@kbn/kibana-utils-plugin/public'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; import { DashboardStart } from '@kbn/dashboard-plugin/public'; import { suspendedComponentWithProps } from './lib/suspended_component_with_props'; @@ -75,26 +73,21 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, theme } = deps; - const isDarkMode = theme.getTheme().darkMode; + const { dataViews, i18n, theme } = deps; const sections: Section[] = ['connectors', 'logs']; const sectionsRegex = sections.join('|'); setDataViewsService(dataViews); return ( - - - - - - - - - - - - - + + + + + + + + + ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx index 8958cd484f1b97..b1d69c89094e94 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiFlexGroup, EuiFlexItem, EuiButtonEmpty } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { useKibana } from '../../common/lib/kibana'; import { BulkEditResponse } from '../../types'; @@ -63,6 +63,8 @@ export interface UseBulkEditResponseProps { export function useBulkEditResponse(props: UseBulkEditResponseProps) { const { onSearchPopulate } = props; const { + i18n: i18nStart, + theme, notifications: { toasts }, } = useKibana().services; @@ -122,7 +124,7 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { if (numberOfErrors === total) { toasts.addDanger({ title: failureMessage(numberOfErrors, translationMap[property]), - text: toMountPoint(renderToastErrorBody(response)), + text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme }), }); return; } @@ -130,10 +132,10 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { // Some failure toasts.addWarning({ title: someSuccessMessage(numberOfSuccess, numberOfErrors, translationMap[property]), - text: toMountPoint(renderToastErrorBody(response)), + text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme }), }); }, - [toasts, renderToastErrorBody] + [i18nStart, theme, toasts, renderToastErrorBody] ); return useMemo(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx index b71b0abaec7a37..88ad5c8f52958a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx @@ -7,7 +7,7 @@ import React, { useCallback, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiFlexGroup, EuiFlexItem, EuiButton } from '@elastic/eui'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import type { BulkOperationError } from '@kbn/alerting-plugin/server'; import { useKibana } from '../../common/lib/kibana'; import { @@ -48,6 +48,8 @@ export const useBulkOperationToast = ({ onSearchPopulate?: (filter: string) => void; }) => { const { + i18n, + theme, notifications: { toasts }, } = useKibana().services; @@ -120,7 +122,7 @@ export const useBulkOperationToast = ({ SINGLE_RULE_TITLE, MULTIPLE_RULE_TITLE ), - text: toMountPoint(renderToastErrorBody(errors, 'danger')), + text: toMountPoint(renderToastErrorBody(errors, 'danger'), { i18n, theme }), }); return; } @@ -133,10 +135,10 @@ export const useBulkOperationToast = ({ SINGLE_RULE_TITLE, MULTIPLE_RULE_TITLE ), - text: toMountPoint(renderToastErrorBody(errors, 'warning')), + text: toMountPoint(renderToastErrorBody(errors, 'warning'), { i18n, theme }), }); }, - [toasts, renderToastErrorBody] + [i18n, theme, toasts, renderToastErrorBody] ); return useMemo(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx index e3bf983d7bd096..afb483b70f0071 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx @@ -6,15 +6,17 @@ */ import * as React from 'react'; +import { coreMock } from '@kbn/core/public/mocks'; import { render, screen } from '@testing-library/react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; import { ConnectorsSelection } from './connectors_selection'; import { actionTypeRegistryMock } from '../../action_type_registry.mock'; import { ActionType, GenericValidationResult } from '../../../types'; import { EuiFieldText } from '@elastic/eui'; describe('connectors_selection', () => { + const core = coreMock.createStart(); const mockedActionParamsFields = React.lazy(async () => ({ default() { return ( @@ -92,7 +94,7 @@ describe('connectors_selection', () => { it('renders a selector', () => { const wrapper = mountWithIntl( - + { connectors={connectors} onConnectorSelected={jest.fn()} /> - + ); expect( @@ -111,7 +113,7 @@ describe('connectors_selection', () => { it('renders the title of the connector', () => { render( - + { connectors={connectors} onConnectorSelected={jest.fn()} /> - + ); expect(screen.getByRole('combobox')).toHaveValue('test pagerduty'); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx index f885610e33c6f8..cb08e3f672fd8f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/toolbar/components/inspect/modal.test.tsx @@ -6,8 +6,9 @@ */ import React from 'react'; +import { of } from 'rxjs'; import { fireEvent, render, screen } from '@testing-library/react'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; import type { ModalInspectProps } from './modal'; import { ModalInspectQuery } from './modal'; @@ -42,8 +43,11 @@ describe('Modal Inspect', () => { }; const renderModalInspectQuery = () => { + const theme = { theme$: of({ darkMode: false }) }; return render(, { - wrapper: ({ children }) => {children}, + wrapper: ({ children }) => ( + {children} + ), }); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx index 8bb60c0706f152..7421bec047e03a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx @@ -24,7 +24,7 @@ import { EuiIconTip, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { RuleExecutionStatusErrorReasons, parseDuration } from '@kbn/alerting-plugin/common'; import { getRuleDetailsRoute } from '@kbn/rule-data-utils'; import { UpdateApiKeyModalConfirmation } from '../../../components/update_api_key_modal_confirmation'; @@ -90,12 +90,9 @@ const ruleDetailStyle = { export const RuleDetails: React.FunctionComponent = ({ rule, ruleType, - actionTypes, bulkDisableRules, bulkEnableRules, bulkDeleteRules, - snoozeRule, - unsnoozeRule, requestRefresh, refreshToken, }) => { @@ -107,6 +104,8 @@ export const RuleDetails: React.FunctionComponent = ({ setBreadcrumbs, chrome, http, + i18n: i18nStart, + theme, notifications: { toasts }, } = useKibana().services; const ruleReducer = useMemo(() => getRuleReducer(actionTypeRegistry), [actionTypeRegistry]); @@ -218,12 +217,20 @@ export const RuleDetails: React.FunctionComponent = ({ )} - + , + { i18n: i18nStart, theme } ), }); } } - }, [rule.schedule.interval, config.minimumScheduleInterval, toasts, hasEditButton]); + }, [ + i18nStart, + theme, + rule.schedule.interval, + config.minimumScheduleInterval, + toasts, + hasEditButton, + ]); const setRule = async () => { history.push(getRuleDetailsRoute(rule.id)); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx index 1b12fbffa4a1bb..ef8057c0144d19 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx @@ -10,7 +10,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiTitle, EuiFlyoutHeader, EuiFlyout, EuiFlyoutBody, EuiPortal } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { isEmpty } from 'lodash'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { Rule, @@ -125,6 +125,8 @@ const RuleAdd = < http, notifications: { toasts }, application: { capabilities }, + i18n: i18nStart, + theme, } = useKibana().services; const canShowActions = hasShowActionsCapability(capabilities); @@ -270,7 +272,8 @@ const RuleAdd = < title: message.summary, ...(message.details && { text: toMountPoint( - {message.details} + {message.details}, + { i18n: i18nStart, theme } ), }), }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx index e4fcd86eef445b..bfad87299a5230 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx @@ -26,7 +26,7 @@ import { } from '@elastic/eui'; import { cloneDeep, omit } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { Rule, @@ -138,6 +138,8 @@ export const RuleEdit = < const { http, notifications: { toasts }, + i18n: i18nStart, + theme, } = useKibana().services; const setRule = (value: Rule) => { @@ -223,7 +225,8 @@ export const RuleEdit = < title: message.summary, ...(message.details && { text: toMountPoint( - {message.details} + {message.details}, + { i18n: i18nStart, theme } ), }), }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx index 1470fe26061070..624e6e5f276e7b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx @@ -9,7 +9,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import type { RuleSnooze } from '@kbn/alerting-plugin/common'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { EuiLoadingSpinner, @@ -65,6 +65,8 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ const { notifications: { toasts }, + i18n: i18nStart, + theme, } = useKibana().services; useEffect(() => { @@ -92,12 +94,13 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ title: message.summary, ...(message.details && { text: toMountPoint( - {message.details} + {message.details}, + { i18n: i18nStart, theme } ), }), }); throw new Error(); - }, [enableRule, toasts]); + }, [i18nStart, theme, enableRule, toasts]); const onEnable = useCallback(async () => { setIsUpdating(true); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index 92c2239f349a48..6fcce17f005423 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { capitalize, isEmpty, isEqual, sortBy } from 'lodash'; import { KueryNode } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { RuleTypeModal } from '@kbn/alerts-ui-shared'; import React, { @@ -190,6 +190,8 @@ export const RulesList = ({ kibanaFeatures, notifications: { toasts }, ruleTypeRegistry, + i18n: i18nStart, + theme, } = kibanaServices; const canExecuteActions = hasExecuteActionsCapability(capabilities); @@ -692,7 +694,8 @@ export const RulesList = ({ toasts.addDanger({ title: parsedError.summary, text: toMountPoint( - {parsedError.details} + {parsedError.details}, + { theme, i18n: i18nStart } ), }); } else { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx index bb55f89f15500e..e6fab7c1e1eddc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx @@ -7,11 +7,11 @@ import React from 'react'; import { QueryClient, QueryClientProvider, QueryClientProviderProps } from '@tanstack/react-query'; -import { of } from 'rxjs'; +import { coreMock } from '@kbn/core/public/mocks'; import { I18nProvider } from '@kbn/i18n-react'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { render as reactRender, RenderOptions, RenderResult } from '@testing-library/react'; -import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; import { TriggersAndActionsUiServices } from '../..'; import { createStartServicesMock } from '../../common/lib/kibana/kibana_react.mock'; @@ -31,7 +31,7 @@ export const createAppMockRenderer = ( queryClientContext?: QueryClientProviderProps['context'] ): AppMockRenderer => { const services = createStartServicesMock(); - const theme$ = of({ darkMode: false }); + const core = coreMock.createStart(); const queryClient = new QueryClient({ defaultOptions: { @@ -53,7 +53,7 @@ export const createAppMockRenderer = ( const AppWrapper: React.FC<{ children: React.ReactElement }> = React.memo(({ children }) => ( - + {children} diff --git a/x-pack/plugins/triggers_actions_ui/public/plugin.ts b/x-pack/plugins/triggers_actions_ui/public/plugin.ts index 174d3816792bf6..fa0db949e3b50b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/plugin.ts +++ b/x-pack/plugins/triggers_actions_ui/public/plugin.ts @@ -313,7 +313,7 @@ export class Plugin unifiedSearch: pluginsStart.unifiedSearch, isCloud: Boolean(plugins.cloud?.isCloudEnabled), element: params.element, - theme$: params.theme$, + theme: params.theme, storage: new Storage(window.localStorage), setBreadcrumbs: params.setBreadcrumbs, history: params.history, @@ -411,7 +411,7 @@ export class Plugin unifiedSearch: pluginsStart.unifiedSearch, isCloud: Boolean(plugins.cloud?.isCloudEnabled), element: params.element, - theme$: params.theme$, + theme: params.theme, storage: new Storage(window.localStorage), setBreadcrumbs: params.setBreadcrumbs, history: params.history, diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index c25e1697986bd1..794cfbd6071d30 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -61,7 +61,10 @@ "@kbn/code-editor", "@kbn/code-editor-mock", "@kbn/io-ts-utils", - "@kbn/lens-plugin" + "@kbn/lens-plugin", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-mount", + "@kbn/react-kibana-context-theme" ], "exclude": ["target/**/*"] } From 0d22468c0cb83259407554bb783f75d8a8d68470 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 18:06:36 +0100 Subject: [PATCH 49/75] skip flaky suite (#180401) --- x-pack/test/security_solution_endpoint/apps/endpoint/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts index 6786f82a6fabe4..58e1eec24b4236 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts @@ -16,7 +16,8 @@ import { export default function (providerContext: FtrProviderContext) { const { loadTestFile, getService, getPageObjects } = providerContext; - describe('endpoint', function () { + // FLAKY: https://github.com/elastic/kibana/issues/180401 + describe.skip('endpoint', function () { const ingestManager = getService('ingestManager'); const log = getService('log'); const endpointTestResources = getService('endpointTestResources'); From 7194ca267c8a1fd92e3f96a964993f8292e873c3 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 9 Apr 2024 20:07:42 +0100 Subject: [PATCH 50/75] skip flaky suite (#180404) --- test/functional/apps/discover/group3/_lens_vis.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/functional/apps/discover/group3/_lens_vis.ts b/test/functional/apps/discover/group3/_lens_vis.ts index 5747dbd85de64a..d83cbe992e9292 100644 --- a/test/functional/apps/discover/group3/_lens_vis.ts +++ b/test/functional/apps/discover/group3/_lens_vis.ts @@ -107,7 +107,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { return await chartElement.getAttribute('data-title'); } - describe('discover lens vis', function describeIndexTests() { + // FLAKY: https://github.com/elastic/kibana/issues/180404 + describe.skip('discover lens vis', function describeIndexTests() { before(async () => { await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); From 1d5a77ae93dd40558b273aa7e37c47b56b79aa7a Mon Sep 17 00:00:00 2001 From: Nick Partridge Date: Tue, 9 Apr 2024 12:53:22 -0700 Subject: [PATCH 51/75] [Lens] Fix default formatter for gauge charts (#179473) --- .../components/gauge_component.test.tsx | 172 ++++++++++++++---- .../public/components/gauge_component.tsx | 11 +- .../components/heatmap_component.test.tsx | 9 - .../partition_vis_component.test.tsx | 9 - .../public/utils/get_color_picker.test.tsx | 9 - .../visualizations/common/utils/accessors.ts | 2 +- .../common/components/charts/common.test.tsx | 9 - 7 files changed, 146 insertions(+), 75 deletions(-) diff --git a/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.test.tsx b/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.test.tsx index ca21711d9bfb75..5ed6fdf52f6695 100644 --- a/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.test.tsx +++ b/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.test.tsx @@ -11,7 +11,7 @@ import { ColorStop } from '@kbn/coloring'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks'; import type { Datatable } from '@kbn/expressions-plugin/public'; -import { DatatableColumn, DatatableRow } from '@kbn/expressions-plugin/common'; +import { DatatableColumn, DatatableColumnMeta, DatatableRow } from '@kbn/expressions-plugin/common'; import { shallowWithIntl } from '@kbn/test-jest-helpers'; import { GaugeRenderProps, @@ -29,15 +29,7 @@ import { ColorBandSimpleConfig, Color, } from '@elastic/charts'; - -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); +import { ExpressionValueVisDimension } from '@kbn/visualizations-plugin/common'; const numberColumn = (id = 'metric-accessor'): DatatableColumn => ({ id, @@ -51,17 +43,8 @@ const numberColumn = (id = 'metric-accessor'): DatatableColumn => ({ }, }); -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - -const chartsThemeService = chartPluginMock.createSetupContract().theme; -const paletteThemeService = chartPluginMock.createSetupContract().palettes; +const { theme: chartsThemeService, palettes: paletteThemeService } = + chartPluginMock.createSetupContract(); const formatService = fieldFormatsServiceMock.createStartContract(); const args: GaugeArguments = { labelMajor: 'Gauge', @@ -113,13 +96,17 @@ describe('GaugeComponent', function () { }; }); + beforeEach(() => { + jest.clearAllMocks(); + }); + it('renders the chart', () => { const component = shallowWithIntl(); expect(component.find(Chart)).toMatchSnapshot(); }); it('returns null when metric is not provided', async () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -134,7 +121,7 @@ describe('GaugeComponent', function () { }); it('shows empty placeholder when minimum accessor equals maximum accessor', async () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -148,7 +135,7 @@ describe('GaugeComponent', function () { expect(component.find('EmptyPlaceholder')).toHaveLength(1); }); it('shows empty placeholder when minimum accessor value is greater maximum accessor value', async () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -162,7 +149,7 @@ describe('GaugeComponent', function () { expect(component.find('EmptyPlaceholder')).toHaveLength(1); }); it('when metric value is bigger than max, it takes maximum value', () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -180,7 +167,7 @@ describe('GaugeComponent', function () { describe('labelMajor and labelMinor settings', () => { it('displays no labelMajor and no labelMinor when no passed', () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -194,7 +181,7 @@ describe('GaugeComponent', function () { expect(datum?.subtitle).toEqual(''); }); it('displays custom labelMajor and labelMinor when passed', () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -209,7 +196,7 @@ describe('GaugeComponent', function () { expect(datum?.subtitle).toEqual('custom labelMinor'); }); it('displays auto labelMajor', () => { - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -237,7 +224,7 @@ describe('GaugeComponent', function () { rangeMax: 4, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -267,7 +254,7 @@ describe('GaugeComponent', function () { rangeMax: 4, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -295,7 +282,7 @@ describe('GaugeComponent', function () { rangeMax: 100, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -323,7 +310,7 @@ describe('GaugeComponent', function () { rangeMax: 10, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -351,7 +338,7 @@ describe('GaugeComponent', function () { rangeMax: 30, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -379,7 +366,7 @@ describe('GaugeComponent', function () { rangeMax: 10, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -409,7 +396,7 @@ describe('GaugeComponent', function () { rangeMax: 100, }, }; - const customProps = { + const customProps: GaugeRenderProps = { ...wrapperProps, args: { ...wrapperProps.args, @@ -442,4 +429,119 @@ describe('GaugeComponent', function () { expect(settingsComponent.prop('ariaUseDefaultSummary')).toEqual(true); }); }); + + describe('formatting', () => { + let baseFormattingProps: GaugeRenderProps; + const metricFormat: ExpressionValueVisDimension['format'] = { + id: 'bytes', + }; + const tableFormatParams = { + id: 'number', + params: { + pattern: '0,00000', + }, + }; + const metricMetaParams: DatatableColumnMeta = { + type: 'number', + params: { + id: 'test', + params: { + pattern: '000,000.00', + }, + }, + }; + const createColumnsWithMetricParams = (params?: DatatableColumnMeta['params']) => + wrapperProps.data.columns.map((c) => + c.id !== 'metric-accessor' + ? c + : { + ...c, + meta: { + ...c.meta, + params, + }, + } + ); + + beforeAll(() => { + baseFormattingProps = { + ...wrapperProps, + args: { + ...wrapperProps.args, + metric: { + ...(wrapperProps.args.metric as ExpressionValueVisDimension), + accessor: { + id: 'metric-accessor', + name: 'metric-accessor', + meta: metricMetaParams, + }, + format: metricFormat, + }, + }, + data: { + ...wrapperProps.data, + columns: createColumnsWithMetricParams(tableFormatParams), + }, + }; + }); + + it('should use custom metric format params, if provided', () => { + shallowWithIntl(); + expect(formatService.deserialize).toBeCalledWith(metricFormat); + }); + + it('should use table metric format params, if provided', () => { + const customProps: GaugeRenderProps = { + ...baseFormattingProps, + args: { + ...baseFormattingProps.args, + metric: 'metric-accessor', + }, + }; + shallowWithIntl(); + expect(formatService.deserialize).toBeCalledWith(tableFormatParams); + }); + + it('should use default metric format params, if no others provided', () => { + const testParams = { + id: 'test', + }; + const customProps: GaugeRenderProps = { + ...baseFormattingProps, + args: { + ...baseFormattingProps.args, + metric: 'metric-accessor', + }, + data: { + ...baseFormattingProps.data, + columns: createColumnsWithMetricParams(testParams), + }, + }; + + shallowWithIntl(); + expect(formatService.deserialize).toBeCalledWith(testParams); + }); + + it('should use fallback if no default metric format and no others provided', () => { + const customProps: GaugeRenderProps = { + ...baseFormattingProps, + args: { + ...baseFormattingProps.args, + metric: 'metric-accessor', + }, + data: { + ...wrapperProps.data, + columns: createColumnsWithMetricParams(), + }, + }; + + shallowWithIntl(); + expect(formatService.deserialize).toBeCalledWith({ + id: 'number', + params: { + pattern: '0,0.0', + }, + }); + }); + }); }); diff --git a/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.tsx b/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.tsx index 714ac6f3e057e4..0e1ebe988e602e 100644 --- a/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.tsx +++ b/src/plugins/chart_expressions/expression_gauge/public/components/gauge_component.tsx @@ -14,7 +14,11 @@ import { FieldFormat } from '@kbn/field-formats-plugin/common'; import type { CustomPaletteState } from '@kbn/charts-plugin/public'; import { EmptyPlaceholder } from '@kbn/charts-plugin/public'; import { getOverridesFor } from '@kbn/chart-expressions-common'; -import { findAccessor, isVisDimension } from '@kbn/visualizations-plugin/common/utils'; +import { + findAccessor, + getFormatByAccessor, + isVisDimension, +} from '@kbn/visualizations-plugin/common/utils'; import { i18n } from '@kbn/i18n'; import { GaugeRenderProps, @@ -307,10 +311,11 @@ export const GaugeComponent: FC = ({ ? metricColumn?.meta?.params : undefined; - const defaultMetricFormatParams = { + const defaultMetricFormatParams = (args.metric && + getFormatByAccessor(args.metric, data.columns)) || { id: 'number', params: { - pattern: max - min > 5 ? `0,0` : `0,0.0`, + pattern: max - min > 5 ? '0,0' : '0,0.0', }, }; diff --git a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx index bf9524c1861345..86d40144c67bdf 100644 --- a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx +++ b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx @@ -30,15 +30,6 @@ import HeatmapComponent from './heatmap_component'; import { LegendSize } from '@kbn/visualizations-plugin/common'; import { FieldFormat } from '@kbn/field-formats-plugin/common'; -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - const actWithTimeout = (action: Function, timer: number = 1) => act( () => diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx index b5b2fb553676f5..9d327c1272b7c4 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.test.tsx @@ -28,15 +28,6 @@ import { ChartTypes } from '../../common/types'; import { LegendSize } from '@kbn/visualizations-plugin/common'; import { cloneDeep } from 'lodash'; -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - const actWithTimeout = (action: Function, timer: number = 1) => act( () => diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/get_color_picker.test.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/utils/get_color_picker.test.tsx index 04aa0136dcadd1..14164045326c7b 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/get_color_picker.test.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/get_color_picker.test.tsx @@ -23,15 +23,6 @@ import { createMockBucketColumns, createMockVisData } from '../mocks'; const bucketColumns = createMockBucketColumns(); const visData = createMockVisData(); -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - describe('LegendColorPickerWrapper', () => { const mockState = new Map(); const uiState = { diff --git a/src/plugins/visualizations/common/utils/accessors.ts b/src/plugins/visualizations/common/utils/accessors.ts index 929d0fae7b4b42..c258e06779f22e 100644 --- a/src/plugins/visualizations/common/utils/accessors.ts +++ b/src/plugins/visualizations/common/utils/accessors.ts @@ -103,7 +103,7 @@ export function getFormatByAccessor( defaultColumnFormat?: SerializedFieldFormat ): SerializedFieldFormat | undefined { return typeof dimension === 'string' - ? getColumnByAccessor(dimension, columns)?.meta.params || defaultColumnFormat + ? getColumnByAccessor(dimension, columns)?.meta?.params || defaultColumnFormat : dimension.format || defaultColumnFormat; } diff --git a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx b/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx index 20dfc140c41385..10234da2fac2f5 100644 --- a/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/charts/common.test.tsx @@ -23,15 +23,6 @@ import { LEGACY_LIGHT_THEME, LEGACY_DARK_THEME } from '@elastic/charts'; jest.mock('../../lib/kibana'); -jest.mock('@elastic/charts', () => { - const original = jest.requireActual('@elastic/charts'); - - return { - ...original, - getSpecId: jest.fn(() => {}), - }; -}); - describe('WrappedByAutoSizer', () => { it('should render correct default height', () => { const wrapper = shallow(); From 3c11bc94f7344575fb594352835860a1e607dda0 Mon Sep 17 00:00:00 2001 From: Joe McElroy Date: Tue, 9 Apr 2024 22:25:36 +0100 Subject: [PATCH 52/75] [Search] [Playground] knn support + tidy up small parts (#180376) - fixes issue with KNN where wasn't included in the query - highlights the score and index in the documents flyout - fixes a couple issues with selecting source fields - added gpt4, removed some the older gpt-3.5 models. --------- Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com> --- .../fetch_query_source_fields.mock.ts | 394 ++++++++++++++++++ .../message_list/assistant_message.tsx | 4 +- .../message_list/citations_table.tsx | 16 +- .../message_list/retrieval_docs_flyout.tsx | 12 +- .../public/hooks/use_llms_models.test.ts | 50 +-- .../plugins/search_playground/public/types.ts | 9 +- .../public/utils/create_query.test.ts | 28 ++ .../public/utils/create_query.ts | 12 +- .../utils/transform_annotation_to_doc.ts | 2 +- .../search_playground/server/routes.test.ts | 2 +- .../search_playground/server/routes.ts | 5 +- .../server/utils/conversational_chain.test.ts | 18 +- .../server/utils/elasticsearch_retriever.ts | 9 +- .../utils/fetch_query_source_fields.test.ts | 56 +++ 14 files changed, 531 insertions(+), 86 deletions(-) diff --git a/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts b/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts index c690563691ddec..f013db7f0e72b1 100644 --- a/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts +++ b/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts @@ -1082,3 +1082,397 @@ export const ELSER_PASSAGE_CHUNKED_TWO_INDICES = { }, }, }; + +export const DENSE_PASSAGE_FIRST_SINGLE_INDEX_FIELD_CAPS = { + indices: ['search-example-main'], + fields: { + 'page_content_key.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + page_content_ner: { + object: { + type: 'object', + metadata_field: false, + searchable: false, + aggregatable: false, + }, + }, + page_content_key: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'page_content_ner.entities.end_pos': { + integer: { + type: 'integer', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'label.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'page_content_ner.entities.class_name': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'page_content_e5_embbeding.model_id': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + title: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'page_content_ner.entities.entity': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'page_content_e5_embbeding.predicted_value': { + dense_vector: { + type: 'dense_vector', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'title.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + page_id: { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + page_content_e5_embbeding: { + object: { + type: 'object', + metadata_field: false, + searchable: false, + aggregatable: false, + }, + }, + category_id: { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'page_content_ner.entities.start_pos': { + integer: { + type: 'integer', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'main_button.button_title': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'main_button.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'main_button.button_title.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'bread_crumbs.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + main_button: { + object: { + type: 'object', + metadata_field: false, + searchable: false, + aggregatable: false, + }, + }, + 'page_content_ner.entities': { + object: { + type: 'object', + metadata_field: false, + searchable: false, + aggregatable: false, + }, + }, + page_notification: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + buttons: { + object: { + type: 'object', + metadata_field: false, + searchable: false, + aggregatable: false, + }, + }, + 'buttons.button_title.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'main_button.button_new_tab': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + label: { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + bread_crumbs: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'page_content_ner.predicted_value': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + url: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'url.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + page_content_text: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'buttons.button_title': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'page_content_e5_embbeding.model_id.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'page_notification.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'page_content_ner.model_id': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + filter_list: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'buttons.button_link': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'page_content_ner.entities.class_probability': { + float: { + type: 'float', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'buttons.button_new_tab': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + title_text: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'main_button.button_link': { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + page_content: { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + updated_date: { + date: { + type: 'date', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + 'buttons.button_link.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + }, +}; + +export const DENSE_PASSAGE_FIRST_SINGLE_INDEX_DOC = { + _index: 'search-example-main', + _id: 'id', + _version: 1, + _seq_no: 2, + _primary_term: 1, + found: true, + _source: { + page_notification: '-', + 'main_button.button_new_tab': '-', + page_content_key: '', + label: '', + bread_crumbs: 'breadcrumbs', + title: 'title', + type: '11', + url: '/', + page_content_text: 'page_content_text', + page_id: '2,061', + 'buttons.button_title': '-', + page_content_e5_embbeding: { + predicted_value: [0.09232209622859955], + model_id: '.multilingual-e5-small_linux-x86_64', + }, + category_id: 'category_id', + filter_list: 'filter', + 'buttons.button_link': '-', + 'buttons.button_new_tab': '-', + 'main_button.button_title': '-', + title_text: 'title_text', + 'main_button.button_link': '-', + page_content: 'bla', + updated_date: '2024-03-21T11:23:12.503000', + title_keyword: 'title_keyword', + }, +}; diff --git a/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx b/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx index 324d2549065739..736c08a6fc0e09 100644 --- a/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx +++ b/x-pack/plugins/search_playground/public/components/message_list/assistant_message.tsx @@ -54,7 +54,7 @@ export const AssistantMessage: React.FC = ({

@@ -65,7 +65,7 @@ export const AssistantMessage: React.FC = ({ > diff --git a/x-pack/plugins/search_playground/public/components/message_list/citations_table.tsx b/x-pack/plugins/search_playground/public/components/message_list/citations_table.tsx index dbc9cc5e95ff9c..6de4ec26485d7e 100644 --- a/x-pack/plugins/search_playground/public/components/message_list/citations_table.tsx +++ b/x-pack/plugins/search_playground/public/components/message_list/citations_table.tsx @@ -19,10 +19,12 @@ export const CitationsTable: React.FC = ({ citations }) => const toggleDetails = (citation: Doc) => { const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; - if (itemIdToExpandedRowMapValues[citation.id]) { - delete itemIdToExpandedRowMapValues[citation.id]; + if (itemIdToExpandedRowMapValues[citation.metadata._id]) { + delete itemIdToExpandedRowMapValues[citation.metadata._id]; } else { - itemIdToExpandedRowMapValues[citation.id] = {citation.content}; + itemIdToExpandedRowMapValues[citation.metadata._id] = ( + {citation.content} + ); } setItemIdToExpandedRowMap(itemIdToExpandedRowMapValues); @@ -32,9 +34,9 @@ export const CitationsTable: React.FC = ({ citations }) => = ({ citations }) => iconSide="right" size="s" onClick={() => toggleDetails(citation)} - iconType={itemIdToExpandedRowMapValues[citation.id] ? 'arrowDown' : 'arrowRight'} + iconType={ + itemIdToExpandedRowMapValues[citation.metadata._id] ? 'arrowDown' : 'arrowRight' + } > {i18n.translate('xpack.searchPlayground.chat.message.assistant.citations.snippet', { defaultMessage: 'Snippet', diff --git a/x-pack/plugins/search_playground/public/components/message_list/retrieval_docs_flyout.tsx b/x-pack/plugins/search_playground/public/components/message_list/retrieval_docs_flyout.tsx index 9ac8fa384ea0a8..08c2c9ebc04fa1 100644 --- a/x-pack/plugins/search_playground/public/components/message_list/retrieval_docs_flyout.tsx +++ b/x-pack/plugins/search_playground/public/components/message_list/retrieval_docs_flyout.tsx @@ -32,7 +32,7 @@ interface RetrievalDocsFlyoutProps { const RESULT_FIELDS_TRUNCATE_AT = 4; const truncateFields = (doc: Doc) => - Object.entries(doc) + Object.entries({ context: doc.content, score: doc.metadata._score }) .slice(0, RESULT_FIELDS_TRUNCATE_AT) .map(([field, value]) => ({ field, value })); @@ -71,7 +71,7 @@ export const RetrievalDocsFlyout: React.FC = ({ ), render: (value: unknown) => ( - {(typeof value === 'string' ? value : JSON.stringify(value)).slice(0, 255)} + {value} ), }, @@ -92,7 +92,7 @@ export const RetrievalDocsFlyout: React.FC = ({

{i18n.translate('xpack.searchPlayground.chat.message.assistant.retrievalDoc.subtitle', { defaultMessage: - 'The documents that were referenced in order to create an answer to your query', + 'The documents that were referenced in order to create an answer to your query. You can change the context field using the Edit Context button.', })}

@@ -100,7 +100,7 @@ export const RetrievalDocsFlyout: React.FC = ({ {retrievalDocs.map((doc) => ( - + @@ -108,7 +108,7 @@ export const RetrievalDocsFlyout: React.FC = ({ 'xpack.searchPlayground.chat.message.assistant.retrievalDoc.result.id', { defaultMessage: 'ID: {id}', - values: { id: doc.id }, + values: { id: doc.metadata._id }, } )} @@ -122,7 +122,7 @@ export const RetrievalDocsFlyout: React.FC = ({ } )} - workplace_index + {doc.metadata._index} diff --git a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts index cb1e8e0a414e56..b3f0ea62220688 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts @@ -50,29 +50,8 @@ describe('useLLMsModels Hook', () => { connectorId: 'connectorId1', disabled: false, icon: expect.any(Function), - name: 'gpt-3.5-turbo-1106', - value: 'gpt-3.5-turbo-1106', - }, - { - connectorId: 'connectorId1', - disabled: false, - icon: expect.any(Function), - name: 'gpt-3.5-turbo-16k', - value: 'gpt-3.5-turbo-16k', - }, - { - connectorId: 'connectorId1', - disabled: false, - icon: expect.any(Function), - name: 'gpt-3.5-turbo-16k-0613', - value: 'gpt-3.5-turbo-16k-0613', - }, - { - connectorId: 'connectorId1', - disabled: false, - icon: expect.any(Function), - name: 'gpt-3.5-turbo-instruct', - value: 'gpt-3.5-turbo-instruct', + name: 'gpt-4', + value: 'gpt-4', }, ]); }); @@ -101,29 +80,8 @@ describe('useLLMsModels Hook', () => { connectorId: undefined, disabled: true, icon: expect.any(Function), - name: 'gpt-3.5-turbo-1106', - value: 'gpt-3.5-turbo-1106', - }, - { - connectorId: undefined, - disabled: true, - icon: expect.any(Function), - name: 'gpt-3.5-turbo-16k', - value: 'gpt-3.5-turbo-16k', - }, - { - connectorId: undefined, - disabled: true, - icon: expect.any(Function), - name: 'gpt-3.5-turbo-16k-0613', - value: 'gpt-3.5-turbo-16k-0613', - }, - { - connectorId: undefined, - disabled: true, - icon: expect.any(Function), - name: 'gpt-3.5-turbo-instruct', - value: 'gpt-3.5-turbo-instruct', + name: 'gpt-4', + value: 'gpt-4', }, ]); }); diff --git a/x-pack/plugins/search_playground/public/types.ts b/x-pack/plugins/search_playground/public/types.ts index 0b4ad0dcc5b524..ecb1f6a58ab7e5 100644 --- a/x-pack/plugins/search_playground/public/types.ts +++ b/x-pack/plugins/search_playground/public/types.ts @@ -84,7 +84,7 @@ export interface Message { } export interface DocAnnotation { - metadata: { id: string; score: number }; + metadata: { _id: string; _score: number; _index: string }; pageContent: string; } @@ -94,8 +94,8 @@ export interface Annotation { } export interface Doc { - id: string; content: string; + metadata: { _id: string; _score: number; _index: string }; } export interface AIMessage extends Message { @@ -106,10 +106,7 @@ export interface AIMessage extends Message { export enum SummarizationModelName { gpt3_5_turbo = 'gpt-3.5-turbo', - gpt3_5_turbo_1106 = 'gpt-3.5-turbo-1106', - gpt3_5_turbo_16k = 'gpt-3.5-turbo-16k', - gpt3_5_turbo_16k_0613 = 'gpt-3.5-turbo-16k-0613', - gpt3_5_turbo_instruct = 'gpt-3.5-turbo-instruct', + gpt_4 = 'gpt-4', } export interface ElasticsearchIndex { diff --git a/x-pack/plugins/search_playground/public/utils/create_query.test.ts b/x-pack/plugins/search_playground/public/utils/create_query.test.ts index 5af3e6f55bd633..95d2bd75935851 100644 --- a/x-pack/plugins/search_playground/public/utils/create_query.test.ts +++ b/x-pack/plugins/search_playground/public/utils/create_query.test.ts @@ -464,5 +464,33 @@ describe('create_query', () => { 'search-search-labs': ['body_content'], }); }); + + it('should return an error when no source fields', () => { + const fieldDescriptors: IndicesQuerySourceFields = { + 'search-search-labs': { + elser_query_fields: [], + dense_vector_query_fields: [], + bm25_query_fields: [], + source_fields: [], + }, + }; + + expect(() => getDefaultSourceFields(fieldDescriptors)).toThrowError('No source fields found'); + }); + + it('should return the first single field when no source fields', () => { + const fieldDescriptors: IndicesQuerySourceFields = { + 'search-search-labs': { + elser_query_fields: [], + dense_vector_query_fields: [], + bm25_query_fields: [], + source_fields: ['non_suggested_field'], + }, + }; + + expect(getDefaultSourceFields(fieldDescriptors)).toEqual({ + 'search-search-labs': ['non_suggested_field'], + }); + }); }); }); diff --git a/x-pack/plugins/search_playground/public/utils/create_query.ts b/x-pack/plugins/search_playground/public/utils/create_query.ts index d973e44de2c96f..58077d5e0591ac 100644 --- a/x-pack/plugins/search_playground/public/utils/create_query.ts +++ b/x-pack/plugins/search_playground/public/utils/create_query.ts @@ -16,11 +16,11 @@ const SUGGESTED_SPARSE_FIELDS = [ 'vector.tokens', // LangChain field ]; -const SUGGESTED_BM25_FIELDS = ['title', 'body_content', 'text', 'content']; +const SUGGESTED_BM25_FIELDS = ['title', 'body_content', 'page_content_text', 'text', 'content']; const SUGGESTED_DENSE_VECTOR_FIELDS = ['content_vector.tokens']; -const SUGGESTED_SOURCE_FIELDS = ['body_content', 'content', 'text']; +const SUGGESTED_SOURCE_FIELDS = ['body_content', 'content', 'text', 'page_content_text']; interface Matches { queryMatches: any[]; @@ -135,13 +135,19 @@ export function getDefaultSourceFields(fieldDescriptors: IndicesQuerySourceField (acc: IndexFields, index: string) => { const indexFieldDescriptors = fieldDescriptors[index]; + if (indexFieldDescriptors.source_fields.length === 0) { + throw new Error('No source fields found'); + } + const suggested = indexFieldDescriptors.source_fields.filter((x) => SUGGESTED_SOURCE_FIELDS.includes(x) ); + const fields = suggested.length === 0 ? [indexFieldDescriptors.source_fields[0]] : suggested; + return { ...acc, - [index]: suggested, + [index]: fields, }; }, {} diff --git a/x-pack/plugins/search_playground/public/utils/transform_annotation_to_doc.ts b/x-pack/plugins/search_playground/public/utils/transform_annotation_to_doc.ts index ae5fdeb989990f..b41332861b5f17 100644 --- a/x-pack/plugins/search_playground/public/utils/transform_annotation_to_doc.ts +++ b/x-pack/plugins/search_playground/public/utils/transform_annotation_to_doc.ts @@ -8,6 +8,6 @@ import { DocAnnotation, Doc } from '../types'; export const transformAnnotationToDoc = (docAnnotation: DocAnnotation): Doc => ({ - id: docAnnotation.metadata.id, content: docAnnotation.pageContent, + metadata: docAnnotation.metadata, }); diff --git a/x-pack/plugins/search_playground/server/routes.test.ts b/x-pack/plugins/search_playground/server/routes.test.ts index 21467ab221162a..b149fde95c1e46 100644 --- a/x-pack/plugins/search_playground/server/routes.test.ts +++ b/x-pack/plugins/search_playground/server/routes.test.ts @@ -15,6 +15,6 @@ describe('createRetriever', () => { const retriever = createRetriever(esQuery); const result = retriever(question); - expect(result).toEqual({ match: { text: 'How can I "do something" with quotes?' } }); + expect(result).toEqual({ query: { match: { text: 'How can I "do something" with quotes?' } } }); }); }); diff --git a/x-pack/plugins/search_playground/server/routes.ts b/x-pack/plugins/search_playground/server/routes.ts index dc5606f6136dae..81cc96d8890fa2 100644 --- a/x-pack/plugins/search_playground/server/routes.ts +++ b/x-pack/plugins/search_playground/server/routes.ts @@ -25,8 +25,9 @@ import { export function createRetriever(esQuery: string) { return (question: string) => { try { - const query = JSON.parse(esQuery.replace(/{query}/g, question.replace(/"/g, '\\"'))); - return query.query; + const replacedQuery = esQuery.replace(/{query}/g, question.replace(/"/g, '\\"')); + const query = JSON.parse(replacedQuery); + return query; } catch (e) { throw Error(e); } diff --git a/x-pack/plugins/search_playground/server/utils/conversational_chain.test.ts b/x-pack/plugins/search_playground/server/utils/conversational_chain.test.ts index c10bda602e67dd..830246ab65ad69 100644 --- a/x-pack/plugins/search_playground/server/utils/conversational_chain.test.ts +++ b/x-pack/plugins/search_playground/server/utils/conversational_chain.test.ts @@ -118,8 +118,8 @@ describe('conversational chain', () => { [ { documents: [ - { metadata: { id: '1', index: 'index' }, pageContent: 'value' }, - { metadata: { id: '1', index: 'website' }, pageContent: 'value2' }, + { metadata: { _id: '1', _index: 'index' }, pageContent: 'value' }, + { metadata: { _id: '1', _index: 'website' }, pageContent: 'value2' }, ], type: 'retrieved_docs', }, @@ -127,7 +127,7 @@ describe('conversational chain', () => { [ { index: 'index,website', - query: { query: { match: { field: 'what is the work from home policy?' } } }, + query: { match: { field: 'what is the work from home policy?' } }, size: 3, }, ] @@ -158,8 +158,8 @@ describe('conversational chain', () => { [ { documents: [ - { metadata: { id: '1', index: 'index' }, pageContent: 'value' }, - { metadata: { id: '1', index: 'website' }, pageContent: 'value2' }, + { metadata: { _id: '1', _index: 'index' }, pageContent: 'value' }, + { metadata: { _id: '1', _index: 'website' }, pageContent: 'value2' }, ], type: 'retrieved_docs', }, @@ -167,7 +167,7 @@ describe('conversational chain', () => { [ { index: 'index,website', - query: { query: { match: { field: 'rewrite the question' } } }, + query: { match: { field: 'rewrite the question' } }, size: 3, }, ] @@ -198,8 +198,8 @@ describe('conversational chain', () => { [ { documents: [ - { metadata: { id: '1', index: 'index' }, pageContent: 'value' }, - { metadata: { id: '1', index: 'website' }, pageContent: 'value2' }, + { metadata: { _id: '1', _index: 'index' }, pageContent: 'value' }, + { metadata: { _id: '1', _index: 'website' }, pageContent: 'value2' }, ], type: 'retrieved_docs', }, @@ -207,7 +207,7 @@ describe('conversational chain', () => { [ { index: 'index,website', - query: { query: { match: { field: 'rewrite "the" question' } } }, + query: { match: { field: 'rewrite "the" question' } }, size: 3, }, ] diff --git a/x-pack/plugins/search_playground/server/utils/elasticsearch_retriever.ts b/x-pack/plugins/search_playground/server/utils/elasticsearch_retriever.ts index b2e030262c1f9e..7d55f0996552af 100644 --- a/x-pack/plugins/search_playground/server/utils/elasticsearch_retriever.ts +++ b/x-pack/plugins/search_playground/server/utils/elasticsearch_retriever.ts @@ -63,9 +63,10 @@ export class ElasticsearchRetriever extends BaseRetriever { async _getRelevantDocuments(query: string): Promise { try { + const queryBody = this.query_body_fn(query); const results = await this.client.search({ + ...queryBody, index: this.index, - query: this.query_body_fn(query), size: this.k, }); @@ -81,9 +82,9 @@ export class ElasticsearchRetriever extends BaseRetriever { return new Document({ pageContent: hit._source[pageContentFieldKey], metadata: { - score: hit._score, - id: hit._id, - index: hit._index, + _score: hit._score, + _id: hit._id, + _index: hit._index, }, }); }; diff --git a/x-pack/plugins/search_playground/server/utils/fetch_query_source_fields.test.ts b/x-pack/plugins/search_playground/server/utils/fetch_query_source_fields.test.ts index 959c9b910c7a2f..40838ce0b88eef 100644 --- a/x-pack/plugins/search_playground/server/utils/fetch_query_source_fields.test.ts +++ b/x-pack/plugins/search_playground/server/utils/fetch_query_source_fields.test.ts @@ -6,6 +6,8 @@ */ import { + DENSE_PASSAGE_FIRST_SINGLE_INDEX_DOC, + DENSE_PASSAGE_FIRST_SINGLE_INDEX_FIELD_CAPS, DENSE_VECTOR_DOCUMENT_FIRST, DENSE_VECTOR_DOCUMENT_FIRST_FIELD_CAPS, ELSER_PASSAGE_CHUNKED_TWO_INDICES, @@ -71,6 +73,60 @@ describe('fetch_query_source_fields', () => { }); }); + it('dense vector passage first - should return the correct fields', () => { + expect( + parseFieldsCapabilities(DENSE_PASSAGE_FIRST_SINGLE_INDEX_FIELD_CAPS, [ + { + index: 'search-example-main', + doc: DENSE_PASSAGE_FIRST_SINGLE_INDEX_DOC, + }, + ]) + ).toEqual({ + 'search-example-main': { + bm25_query_fields: [ + 'page_content_key', + 'page_content_e5_embbeding.model_id', + 'title', + 'main_button.button_title', + 'page_notification', + 'bread_crumbs', + 'url', + 'page_content_text', + 'buttons.button_title', + 'filter_list', + 'buttons.button_link', + 'buttons.button_new_tab', + 'title_text', + 'main_button.button_link', + ], + dense_vector_query_fields: [ + { + field: 'page_content_e5_embbeding.predicted_value', + model_id: '.multilingual-e5-small_linux-x86_64', + nested: false, + }, + ], + elser_query_fields: [], + source_fields: [ + 'page_content_key', + 'page_content_e5_embbeding.model_id', + 'title', + 'main_button.button_title', + 'page_notification', + 'bread_crumbs', + 'url', + 'page_content_text', + 'buttons.button_title', + 'filter_list', + 'buttons.button_link', + 'buttons.button_new_tab', + 'title_text', + 'main_button.button_link', + ], + }, + }); + }); + it('should return the correct fields for a document first index', () => { expect( parseFieldsCapabilities(DENSE_VECTOR_DOCUMENT_FIRST_FIELD_CAPS, [ From 459ed573b67b4c22c41638ba3e87a6596487636e Mon Sep 17 00:00:00 2001 From: Cee Chen <549407+cee-chen@users.noreply.github.com> Date: Tue, 9 Apr 2024 14:49:25 -0700 Subject: [PATCH 53/75] Upgrade EUI to v93.6.0 (#180316) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `v93.5.2` ⏩ `v93.6.0` --- ## [`v93.6.0`](https://github.com/elastic/eui/releases/v93.6.0) - Updated `EuiBreadcrumb` styles to improve visual distinction of clickable breadcrumbs ([#7615](https://github.com/elastic/eui/pull/7615)) **Deprecations** - Deprecated `color` prop on `EuiBreadcrumb` ([#7615](https://github.com/elastic/eui/pull/7615)) **Bug fixes** - Fixed `EuiComboBox` to correctly select full matches within groups via the `Enter` key ([#7658](https://github.com/elastic/eui/pull/7658)) **Accessibility** - Updated `EuiHeaderBreadcrumb` styles to ensure min. required color contrast ([#7643](https://github.com/elastic/eui/pull/7643)) - `EuiSuperSelect` now correctly reads out parent `EuiFormRow` labels to screen readers ([#7650](https://github.com/elastic/eui/pull/7650)) - `EuiSuperSelect` now more closely mimics native `