From 6ea7940f20d5b560b4469f25234c998dfdf50c45 Mon Sep 17 00:00:00 2001 From: Alison Goryachev Date: Mon, 14 Oct 2019 14:27:25 -0400 Subject: [PATCH 01/46] [SR] address slm retention copy feedback (#47625) --- .../client_integration/policy_add.test.ts | 4 +++- .../policy_form/steps/step_logistics.tsx | 4 ++-- .../policy_form/steps/step_retention.tsx | 4 ++-- .../policy_form/steps/step_review.tsx | 10 +++++++++- .../retention_update_modal_provider.tsx | 19 +++++++++++++------ .../policy_details/tabs/tab_summary.tsx | 2 +- .../policy_retention_schedule.tsx | 8 ++++---- .../home/snapshot_list/snapshot_list.tsx | 4 ++-- .../services/validation/validate_policy.ts | 2 +- 9 files changed, 37 insertions(+), 20 deletions(-) diff --git a/x-pack/legacy/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts b/x-pack/legacy/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts index 19feb85e4f04e..2d85a61b04852 100644 --- a/x-pack/legacy/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts +++ b/x-pack/legacy/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts @@ -137,7 +137,9 @@ describe.skip('', () => { form.setInputValue('maxCountInput', MAX_COUNT); find('maxCountInput').simulate('blur'); - expect(form.getErrorsMessages()).toEqual(['Min count cannot be greater than max count.']); + expect(form.getErrorsMessages()).toEqual([ + 'Minimum count cannot be greater than maximum count.', + ]); }); }); }); diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_logistics.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_logistics.tsx index 007d9bd78e4a6..80240ae0e7718 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_logistics.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_logistics.tsx @@ -308,7 +308,7 @@ export const PolicyStepLogistics: React.FunctionComponent = ({ > ), @@ -382,7 +382,7 @@ export const PolicyStepLogistics: React.FunctionComponent = ({ ), diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_retention.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_retention.tsx index b32d579650134..3944cd52c7ee2 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_retention.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_retention.tsx @@ -70,7 +70,7 @@ export const PolicyStepRetention: React.FunctionComponent = ({ description={ } idAria="expirationDescription" @@ -136,7 +136,7 @@ export const PolicyStepRetention: React.FunctionComponent = ({ description={ } idAria="countDescription" diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_review.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_review.tsx index b2f9a4231e853..52667ee7ebc87 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_review.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/components/policy_form/steps/step_review.tsx @@ -61,7 +61,15 @@ export const PolicyStepReview: React.FunctionComponent = ({ } > updateCurrentStep(step)}> - + ); diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/components/retention_update_modal_provider.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/components/retention_update_modal_provider.tsx index 7e2f8fa6d2adb..b75cea5c3be8a 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/components/retention_update_modal_provider.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/components/retention_update_modal_provider.tsx @@ -114,7 +114,7 @@ export const RetentionSettingsUpdateModalProvider: React.FunctionComponent ), @@ -279,10 +279,17 @@ export const RetentionSettingsUpdateModalProvider: React.FunctionComponent - + {isEditing ? ( + + ) : ( + + )} diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_details/tabs/tab_summary.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_details/tabs/tab_summary.tsx index 68dc9fb164c70..31553e110b215 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_details/tabs/tab_summary.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_details/tabs/tab_summary.tsx @@ -165,7 +165,7 @@ export const TabSummary: React.FunctionComponent = ({ policy }) => { description={i18n.translate( 'xpack.snapshotRestore.policyDetails.snapshotsDeletedStat', { - defaultMessage: 'Deletions', + defaultMessage: 'Deleted', } )} titleSize="s" diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx index 6611895b31d69..b5ef134533150 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx @@ -60,7 +60,7 @@ export const PolicyRetentionSchedule: React.FunctionComponent = ({

{cronSchedule} }} />

@@ -142,7 +142,7 @@ export const PolicyRetentionSchedule: React.FunctionComponent = ({ title={ } color="warning" @@ -151,7 +151,7 @@ export const PolicyRetentionSchedule: React.FunctionComponent = ({

@@ -210,7 +210,7 @@ export const PolicyRetentionSchedule: React.FunctionComponent = ({ name: i18n.translate( 'xpack.snapshotRestore.policyRetentionSchedulePanel.addButtonLabel', { - defaultMessage: 'Configure schedule', + defaultMessage: 'Schedule', } ), icon: 'plusInCircle', diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/snapshot_list/snapshot_list.tsx b/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/snapshot_list/snapshot_list.tsx index 23014e80cc049..e10a528d8a961 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/snapshot_list/snapshot_list.tsx +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/sections/home/snapshot_list/snapshot_list.tsx @@ -173,7 +173,7 @@ export const SnapshotList: React.FunctionComponent } body={ - + <>

-
+ } data-test-subj="emptyPrompt" /> diff --git a/x-pack/legacy/plugins/snapshot_restore/public/app/services/validation/validate_policy.ts b/x-pack/legacy/plugins/snapshot_restore/public/app/services/validation/validate_policy.ts index 8a60740b1610c..80734d2f0522c 100644 --- a/x-pack/legacy/plugins/snapshot_restore/public/app/services/validation/validate_policy.ts +++ b/x-pack/legacy/plugins/snapshot_restore/public/app/services/validation/validate_policy.ts @@ -88,7 +88,7 @@ export const validatePolicy = (policy: SlmPolicyPayload): PolicyValidation => { ) { validation.errors.minCount.push( i18n.translate('xpack.snapshotRestore.policyValidation.invalidMinCountErrorMessage', { - defaultMessage: 'Min count cannot be greater than max count.', + defaultMessage: 'Minimum count cannot be greater than maximum count.', }) ); } From cda7eba4c9dbb3739c726a194ceed155111f15fc Mon Sep 17 00:00:00 2001 From: cachedout Date: Mon, 14 Oct 2019 18:27:39 +0000 Subject: [PATCH 02/46] Add request disconnects (#47344) * Add Kibana disconnects to monitoring * Add functional test fixture --- .../__snapshots__/metrics.test.js.snap | 14 +++- .../server/lib/metrics/kibana/metrics.js | 14 +++- .../api/v1/kibana/metric_set_instance.js | 5 +- .../monitoring/kibana/fixtures/instance.json | 66 +++++++++++++++++-- 4 files changed, 91 insertions(+), 8 deletions(-) diff --git a/x-pack/legacy/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap b/x-pack/legacy/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap index 21fce7e64376c..7b401e5275e22 100644 --- a/x-pack/legacy/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap +++ b/x-pack/legacy/plugins/monitoring/server/lib/metrics/__test__/__snapshots__/metrics.test.js.snap @@ -2842,7 +2842,19 @@ Object { "units": "ms", "uuidField": "kibana_stats.kibana.uuid", }, - "kibana_requests": KibanaMetric { + "kibana_requests_disconnects": KibanaMetric { + "app": "kibana", + "derivative": false, + "description": "Total number of client disconnects to the Kibana instance.", + "field": "kibana_stats.requests.disconnects", + "format": "0.[00]", + "label": "Client Disconnects", + "metricAgg": "max", + "timestampField": "kibana_stats.timestamp", + "units": "", + "uuidField": "kibana_stats.kibana.uuid", + }, + "kibana_requests_total": KibanaMetric { "app": "kibana", "derivative": false, "description": "Total number of client requests received by the Kibana instance.", diff --git a/x-pack/legacy/plugins/monitoring/server/lib/metrics/kibana/metrics.js b/x-pack/legacy/plugins/monitoring/server/lib/metrics/kibana/metrics.js index 3aafbcb3674c7..3699779545d39 100644 --- a/x-pack/legacy/plugins/monitoring/server/lib/metrics/kibana/metrics.js +++ b/x-pack/legacy/plugins/monitoring/server/lib/metrics/kibana/metrics.js @@ -180,7 +180,7 @@ export const metrics = { metricAgg: 'max', units: '' }), - kibana_requests: new KibanaMetric({ + kibana_requests_total: new KibanaMetric({ field: 'kibana_stats.requests.total', label: i18n.translate('xpack.monitoring.metrics.kibanaInstance.clientRequestsLabel', { defaultMessage: 'Client Requests' @@ -191,5 +191,17 @@ export const metrics = { format: SMALL_FLOAT, metricAgg: 'max', units: '' + }), + kibana_requests_disconnects: new KibanaMetric({ + field: 'kibana_stats.requests.disconnects', + label: i18n.translate('xpack.monitoring.metrics.kibanaInstance.clientRequestsDisconnectsLabel', { + defaultMessage: 'Client Disconnects' + }), + description: i18n.translate('xpack.monitoring.metrics.kibanaInstance.clientRequestsDisconnectsDescription', { + defaultMessage: 'Total number of client disconnects to the Kibana instance.' + }), + format: SMALL_FLOAT, + metricAgg: 'max', + units: '' }) }; diff --git a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/kibana/metric_set_instance.js b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/kibana/metric_set_instance.js index 2af1b9afce8e0..b57d94486235f 100644 --- a/x-pack/legacy/plugins/monitoring/server/routes/api/v1/kibana/metric_set_instance.js +++ b/x-pack/legacy/plugins/monitoring/server/routes/api/v1/kibana/metric_set_instance.js @@ -19,5 +19,8 @@ export const metricSet = [ keys: ['kibana_max_response_times', 'kibana_average_response_times'], name: 'kibana_response_times' }, - 'kibana_requests' + { + keys: ['kibana_requests_total', 'kibana_requests_disconnects'], + name: 'kibana_requests' + } ]; diff --git a/x-pack/test/api_integration/apis/monitoring/kibana/fixtures/instance.json b/x-pack/test/api_integration/apis/monitoring/kibana/fixtures/instance.json index df3df7043e2c5..2bd656a5af264 100644 --- a/x-pack/test/api_integration/apis/monitoring/kibana/fixtures/instance.json +++ b/x-pack/test/api_integration/apis/monitoring/kibana/fixtures/instance.json @@ -577,18 +577,74 @@ 174 ] ] + }, + { + "bucket_size": "10 seconds", + "timeRange": { + "min": 1504027457000, + "max": 1504027568000 + }, + "metric": { + "app": "kibana", + "field": "kibana_stats.requests.disconnects", + "metricAgg": "max", + "label": "Client Disconnects", + "description": "Total number of client disconnects to the Kibana instance.", + "units": "", + "format": "0.[00]", + "hasCalculation": false, + "isDerivative": false + }, + "data": [ + [ + 1504027460000, + 0 + ], + [ + 1504027470000, + 0 + ], + [ + 1504027480000, + 0 + ], + [ + 1504027490000, + 0 + ], + [ + 1504027500000, + 0 + ], + [ + 1504027510000, + 0 + ], + [ + 1504027520000, + 0 + ], + [ + 1504027530000, + 0 + ], + [ + 1504027540000, + 0 + ] + ] } ] }, "kibanaSummary": { - "uuid": "de3b8f2a-7bb9-4931-9bf3-997ba7824cf9", - "name": "tsullivan.local", - "index": ".kibana", "host": "tsullivan.local", - "transport_address": "tsullivan.local:5601", - "version": "7.0.0-alpha1", + "index": ".kibana", + "name": "tsullivan.local", "snapshot": false, "status": "green", + "transport_address": "tsullivan.local:5601", + "uuid": "de3b8f2a-7bb9-4931-9bf3-997ba7824cf9", + "version": "7.0.0-alpha1", "availability": false, "os_memory_free": 1645989888, "uptime": 200102 From 1b62f5376ebe1493073e365a090eaaec6151e6fd Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Mon, 14 Oct 2019 13:54:20 -0500 Subject: [PATCH 03/46] Update log example data canvas link to correct workpad (#47979) --- .../plugins/canvas/server/sample_data/load_sample_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/legacy/plugins/canvas/server/sample_data/load_sample_data.ts b/x-pack/legacy/plugins/canvas/server/sample_data/load_sample_data.ts index b571c8d0e969b..08a71badb33ed 100644 --- a/x-pack/legacy/plugins/canvas/server/sample_data/load_sample_data.ts +++ b/x-pack/legacy/plugins/canvas/server/sample_data/load_sample_data.ts @@ -42,7 +42,7 @@ export function loadSampleData(addSavedObjectsToSampleDataset, addAppLinksToSamp addSavedObjectsToSampleDataset('logs', updateCanvasWorkpadTimestamps(webLogsSavedObjects)); addAppLinksToSampleDataset('logs', { - path: '/app/canvas#/workpad/workpad-5563cc40-5760-4afe-bf33-9da72fac53b7', + path: '/app/canvas#/workpad/workpad-ad72a4e9-b422-480c-be6d-a64a0b79541d', icon: 'canvasApp', label, }); From 11afc283ecced34a9d3d9d316848035d45cd86d0 Mon Sep 17 00:00:00 2001 From: Poff Poffenberger Date: Mon, 14 Oct 2019 14:01:51 -0500 Subject: [PATCH 04/46] [Canvas] i18n for Link, Error, and RenderWithFn components (#47900) * i18n error component * i18n for link component * Updating error component i18n key * i18n for RenderWithFn --- .../legacy/plugins/canvas/i18n/components.ts | 19 +++++++++++++++++++ x-pack/legacy/plugins/canvas/i18n/errors.ts | 9 +++++++++ .../canvas/public/components/error/error.js | 7 +++++-- .../canvas/public/components/link/link.js | 6 +++++- .../render_with_fn/render_with_fn.js | 5 ++++- 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/x-pack/legacy/plugins/canvas/i18n/components.ts b/x-pack/legacy/plugins/canvas/i18n/components.ts index e3ebea5914a16..3c73dd4090757 100644 --- a/x-pack/legacy/plugins/canvas/i18n/components.ts +++ b/x-pack/legacy/plugins/canvas/i18n/components.ts @@ -365,6 +365,16 @@ export const ComponentStrings = { description: 'Title for the "My elements" tab when adding a new element', }), }, + Error: { + getDescription: () => + i18n.translate('xpack.canvas.errorComponent.description', { + defaultMessage: 'Expression failed with the message:', + }), + getTitle: () => + i18n.translate('xpack.canvas.errorComponent.title', { + defaultMessage: 'Whoops! Expression failed', + }), + }, Expression: { getCancelButtonLabel: () => i18n.translate('xpack.canvas.expression.cancelButtonLabel', { @@ -504,6 +514,15 @@ export const ComponentStrings = { defaultMessage: 'Keyboard Shortcuts', }), }, + Link: { + getErrorMessage: (message: string) => + i18n.translate('xpack.canvas.link.errorMessage', { + defaultMessage: 'LINK ERROR: {message}', + values: { + message, + }, + }), + }, MultiElementSettings: { getMultipleElementsActionsDescription: () => i18n.translate('xpack.canvas.groupSettings.multipleElementsActionsDescription', { diff --git a/x-pack/legacy/plugins/canvas/i18n/errors.ts b/x-pack/legacy/plugins/canvas/i18n/errors.ts index 4c32622105c04..36050344b9e12 100644 --- a/x-pack/legacy/plugins/canvas/i18n/errors.ts +++ b/x-pack/legacy/plugins/canvas/i18n/errors.ts @@ -73,6 +73,15 @@ export const ErrorStrings = { defaultMessage: "Couldn't fetch Elasticsearch indices", }), }, + RenderWithFn: { + getRenderErrorMessage: (functionName: string) => + i18n.translate('xpack.canvas.error.RenderWithFn.renderErrorMessage', { + defaultMessage: "Rendering '{functionName}' failed", + values: { + functionName: functionName || 'function', + }, + }), + }, WorkpadFileUpload: { getAcceptJSONOnlyErrorMessage: () => i18n.translate('xpack.canvas.error.workpadUpload.acceptJSONOnlyErrorMessage', { diff --git a/x-pack/legacy/plugins/canvas/public/components/error/error.js b/x-pack/legacy/plugins/canvas/public/components/error/error.js index 1db25835b77cb..2f82e7d669bd5 100644 --- a/x-pack/legacy/plugins/canvas/public/components/error/error.js +++ b/x-pack/legacy/plugins/canvas/public/components/error/error.js @@ -8,8 +8,11 @@ import React from 'react'; import PropTypes from 'prop-types'; import { EuiCallOut } from '@elastic/eui'; import { get } from 'lodash'; +import { ComponentStrings } from '../../../i18n'; import { ShowDebugging } from './show_debugging'; +const { Error: strings } = ComponentStrings; + export const Error = ({ payload }) => { const message = get(payload, 'error.message'); @@ -18,9 +21,9 @@ export const Error = ({ payload }) => { style={{ maxWidth: 500 }} color="danger" iconType="cross" - title="Whoops! Expression failed" + title={strings.getTitle()} > -

{message ? 'Expression failed with the message:' : ''}

+

{message ? strings.getDescription() : ''}

{message &&

{message}

} diff --git a/x-pack/legacy/plugins/canvas/public/components/link/link.js b/x-pack/legacy/plugins/canvas/public/components/link/link.js index 3f8e65c31f97a..ce709243ceebf 100644 --- a/x-pack/legacy/plugins/canvas/public/components/link/link.js +++ b/x-pack/legacy/plugins/canvas/public/components/link/link.js @@ -8,6 +8,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { EuiLink } from '@elastic/eui'; +import { ComponentStrings } from '../../../i18n'; + +const { Link: strings } = ComponentStrings; + const isModifiedEvent = ev => !!(ev.metaKey || ev.altKey || ev.ctrlKey || ev.shiftKey); export class Link extends React.PureComponent { @@ -53,7 +57,7 @@ export class Link extends React.PureComponent { return {children}; } catch (e) { console.error(e); - return
LINK ERROR: {e.message}
; + return
{strings.getErrorMessage(e.message)}
; } } } diff --git a/x-pack/legacy/plugins/canvas/public/components/render_with_fn/render_with_fn.js b/x-pack/legacy/plugins/canvas/public/components/render_with_fn/render_with_fn.js index 3b7a01acc40d6..4bf816939a364 100644 --- a/x-pack/legacy/plugins/canvas/public/components/render_with_fn/render_with_fn.js +++ b/x-pack/legacy/plugins/canvas/public/components/render_with_fn/render_with_fn.js @@ -8,6 +8,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import { isEqual, cloneDeep } from 'lodash'; import { RenderToDom } from '../render_to_dom'; +import { ErrorStrings } from '../../../i18n'; + +const { RenderWithFn: strings } = ErrorStrings; export class RenderWithFn extends React.Component { static propTypes = { @@ -87,7 +90,7 @@ export class RenderWithFn extends React.Component { this.firstRender = false; } catch (err) { console.error('renderFn threw', err); - this.props.onError(err, { title: `Rendering '${functionName || 'function'}' failed` }); + this.props.onError(err, { title: strings.getRenderErrorMessage(functionName) }); } }; From 57ee30929c8c3c9dc179dcbd31af057e94d98975 Mon Sep 17 00:00:00 2001 From: Dima Arnautov Date: Mon, 14 Oct 2019 21:27:12 +0200 Subject: [PATCH 05/46] [ML] Render Custom URL as textarea on focus (#48077) --- .../{list.test.js.snap => list.test.tsx.snap} | 24 +- .../{constants.js => constants.ts} | 4 +- .../jobs/components/custom_url_editor/list.js | 253 ---------------- .../components/custom_url_editor/list.test.js | 70 ----- .../custom_url_editor/list.test.tsx | 66 +++++ .../components/custom_url_editor/list.tsx | 270 ++++++++++++++++++ .../components/custom_url_editor/utils.d.ts | 10 + 7 files changed, 363 insertions(+), 334 deletions(-) rename x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/{list.test.js.snap => list.test.tsx.snap} (95%) rename x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/{constants.js => constants.ts} (90%) delete mode 100644 x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.js delete mode 100644 x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.js create mode 100644 x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.tsx create mode 100644 x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.tsx create mode 100644 x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/utils.d.ts diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/list.test.js.snap b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/list.test.tsx.snap similarity index 95% rename from x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/list.test.js.snap rename to x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/list.test.tsx.snap index 9120dca7130f5..a423955eff74c 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/list.test.js.snap +++ b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/__snapshots__/list.test.tsx.snap @@ -38,7 +38,7 @@ exports[`CustomUrlList renders a list of custom URLs 1`] = ` @@ -187,7 +189,7 @@ exports[`CustomUrlList renders a list of custom URLs 1`] = ` @@ -336,7 +340,7 @@ exports[`CustomUrlList renders a list of custom URLs 1`] = ` diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/constants.js b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/constants.ts similarity index 90% rename from x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/constants.js rename to x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/constants.ts index dc2231334ed3f..1017f67946d6b 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/constants.js +++ b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/constants.ts @@ -7,10 +7,10 @@ export const URL_TYPE = { KIBANA_DASHBOARD: 'KIBANA_DASHBOARD', KIBANA_DISCOVER: 'KIBANA_DISCOVER', - OTHER: 'OTHER' + OTHER: 'OTHER', }; export const TIME_RANGE_TYPE = { AUTO: 'auto', - INTERVAL: 'interval' + INTERVAL: 'interval', }; diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.js b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.js deleted file mode 100644 index 58242c4594c23..0000000000000 --- a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.js +++ /dev/null @@ -1,253 +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; - * you may not use this file except in compliance with the Elastic License. - */ - - -/* - * React component for listing the custom URLs added to a job, - * with buttons for testing and deleting each custom URL. - */ - -import PropTypes from 'prop-types'; -import React, { - Component -} from 'react'; - -import { - EuiButtonIcon, - EuiFieldText, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiToolTip, -} from '@elastic/eui'; - -import { toastNotifications } from 'ui/notify'; - -import { isValidLabel, openCustomUrlWindow } from '../../../util/custom_url_utils'; -import { getTestUrl } from '../../../jobs/components/custom_url_editor/utils'; - -import { parseInterval } from '../../../../common/util/parse_interval'; -import { TIME_RANGE_TYPE } from './constants'; -import { FormattedMessage, injectI18n } from '@kbn/i18n/react'; - - -function isValidTimeRange(timeRange) { - // Allow empty timeRange string, which gives the 'auto' behaviour. - if ((timeRange === undefined) || (timeRange.length === 0) || (timeRange === TIME_RANGE_TYPE.AUTO)) { - return true; - } - - const interval = parseInterval(timeRange); - return (interval !== null); -} - -export const CustomUrlList = injectI18n(class CustomUrlList extends Component { - static propTypes = { - job: PropTypes.object.isRequired, - customUrls: PropTypes.array.isRequired, - setCustomUrls: PropTypes.func.isRequired, - } - - constructor(props) { - super(props); - } - - onLabelChange = (e, index) => { - const { customUrls, setCustomUrls } = this.props; - if (index < customUrls.length) { - customUrls[index] = { - ...customUrls[index], - url_name: e.target.value, - }; - setCustomUrls(customUrls); - } - }; - - onUrlValueChange = (e, index) => { - const { customUrls, setCustomUrls } = this.props; - if (index < customUrls.length) { - customUrls[index] = { - ...customUrls[index], - url_value: e.target.value, - }; - setCustomUrls(customUrls); - } - }; - - onTimeRangeChange = (e, index) => { - const { customUrls, setCustomUrls } = this.props; - if (index < customUrls.length) { - customUrls[index] = { - ...customUrls[index], - }; - - const timeRange = e.target.value; - if (timeRange !== undefined && timeRange.length > 0) { - customUrls[index].time_range = timeRange; - } else { - delete customUrls[index].time_range; - } - setCustomUrls(customUrls); - } - }; - - onDeleteButtonClick = (index) => { - const { customUrls, setCustomUrls } = this.props; - if (index < customUrls.length) { - customUrls.splice(index, 1); - setCustomUrls(customUrls); - } - }; - - onTestButtonClick = (index) => { - const { customUrls, job } = this.props; - if (index < customUrls.length) { - getTestUrl(job, customUrls[index]) - .then((testUrl) => { - openCustomUrlWindow(testUrl, customUrls[index]); - }) - .catch((resp) => { - console.log('Error obtaining URL for test:', resp); - toastNotifications.addDanger( - this.props.intl.formatMessage({ - id: 'xpack.ml.customUrlEditorList.obtainingUrlToTestConfigurationErrorMessage', - defaultMessage: 'An error occurred obtaining the URL to test the configuration' - }) - ); - }); - } - }; - - render() { - const customUrls = this.props.customUrls; - const { intl } = this.props; - - // TODO - swap URL input to a textarea on focus / blur. - const customUrlRows = customUrls.map((customUrl, index) => { - - // Validate the label. - const label = customUrl.url_name; - const otherUrls = [...customUrls]; - otherUrls.splice(index, 1); // Don't compare label with itself. - const isInvalidLabel = !isValidLabel(label, otherUrls); - const invalidLabelError = (isInvalidLabel === true) ? [ - intl.formatMessage({ - id: 'xpack.ml.customUrlEditorList.labelIsNotUniqueErrorMessage', - defaultMessage: 'A unique label must be supplied' - }) - ] : []; - - // Validate the time range. - const timeRange = customUrl.time_range; - const isInvalidTimeRange = !(isValidTimeRange(timeRange)); - const invalidIntervalError = (isInvalidTimeRange === true) ? [ - intl.formatMessage({ - id: 'xpack.ml.customUrlEditorList.invalidTimeRangeFormatErrorMessage', - defaultMessage: 'Invalid format' - }) - ] : []; - - return ( - - - } - isInvalid={isInvalidLabel} - error={invalidLabelError} - > - this.onLabelChange(e, index)} - /> - - - - } - > - this.onUrlValueChange(e, index)} - /> - - - - } - error={invalidIntervalError} - isInvalid={isInvalidTimeRange} - > - this.onTimeRangeChange(e, index)} - /> - - - - - } - > - this.onTestButtonClick(index)} - iconType="popout" - aria-label={intl.formatMessage({ - id: 'xpack.ml.customUrlEditorList.testCustomUrlAriaLabel', - defaultMessage: 'Test custom URL' - })} - /> - - - - - - } - > - this.onDeleteButtonClick(index)} - iconType="trash" - aria-label={intl.formatMessage({ - id: 'xpack.ml.customUrlEditorList.deleteCustomUrlAriaLabel', - defaultMessage: 'Delete custom URL' - })} - /> - - - - - ); - }); - - return ( - - {customUrlRows} - - ); - } -}); diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.js b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.js deleted file mode 100644 index 378e5231d58af..0000000000000 --- a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.js +++ /dev/null @@ -1,70 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -// Mock the mlJobService that is used for testing custom URLs. -jest.mock('../../../services/job_service.js', () => 'mlJobService'); - -import { shallowWithIntl } from 'test_utils/enzyme_helpers'; -import React from 'react'; - -import { CustomUrlList } from './list'; - -function prepareTest(setCustomUrlsFn) { - - const customUrls = [ - { - url_name: 'Show data', - time_range: 'auto', - url_value: 'kibana#/discover?_g=(time:(from:\'$earliest$\',mode:absolute,to:\'$latest$\'))&_a=' + - '(index:e532ba80-b76f-11e8-a9dc-37914a458883,query:(language:lucene,query:\'airline:"$airline$"\'))' - }, - { - url_name: 'Show dashboard', - time_range: '1h', - url_value: 'kibana#/dashboard/52ea8840-bbef-11e8-a04d-b1701b2b977e?_g=' + - '(time:(from:\'$earliest$\',mode:absolute,to:\'$latest$\'))&' + - '_a=(filters:!(),query:(language:lucene,query:\'airline:"$airline$"\'))' - }, - { - url_name: 'Show airline', - time_range: 'auto', - url_value: 'http://airlinecodes.info/airline-code-$airline$' - }, - - ]; - - const props = { - job: {}, - customUrls, - setCustomUrls: setCustomUrlsFn, - }; - - const wrapper = shallowWithIntl( - - ); - - return wrapper; -} - - -describe('CustomUrlList', () => { - - const setCustomUrls = jest.fn(() => {}); - - test('renders a list of custom URLs', () => { - const wrapper = prepareTest(setCustomUrls); - expect(wrapper).toMatchSnapshot(); - }); - - test('calls setCustomUrls on updating a custom URL field', () => { - const wrapper = prepareTest(setCustomUrls); - const url1LabelInput = wrapper.find('EuiFieldText').first(); - url1LabelInput.simulate('change', { target: { value: 'Edit' } }); - wrapper.update(); - expect(setCustomUrls).toHaveBeenCalled(); - }); - -}); diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.tsx b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.tsx new file mode 100644 index 0000000000000..f9fb9c644583f --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.test.tsx @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { Job } from '../../new_job_new/common/job_creator/configs'; + +import { CustomUrlList, CustomUrlListProps } from './list'; + +function prepareTest(setCustomUrlsFn: jest.Mock) { + const customUrls = [ + { + url_name: 'Show data', + time_range: 'auto', + url_value: + "kibana#/discover?_g=(time:(from:'$earliest$',mode:absolute,to:'$latest$'))&_a=" + + '(index:e532ba80-b76f-11e8-a9dc-37914a458883,query:(language:lucene,query:\'airline:"$airline$"\'))', + }, + { + url_name: 'Show dashboard', + time_range: '1h', + url_value: + 'kibana#/dashboard/52ea8840-bbef-11e8-a04d-b1701b2b977e?_g=' + + "(time:(from:'$earliest$',mode:absolute,to:'$latest$'))&" + + '_a=(filters:!(),query:(language:lucene,query:\'airline:"$airline$"\'))', + }, + { + url_name: 'Show airline', + time_range: 'auto', + url_value: 'http://airlinecodes.info/airline-code-$airline$', + }, + ]; + + const props: CustomUrlListProps = { + job: {} as Job, + customUrls, + setCustomUrls: setCustomUrlsFn, + }; + + return shallow(); +} + +describe('CustomUrlList', () => { + const setCustomUrls = jest.fn(() => {}); + + test('renders a list of custom URLs', () => { + const wrapper = prepareTest(setCustomUrls); + expect(wrapper).toMatchSnapshot(); + }); + + test('switches custom URL field to textarea and calls setCustomUrls on change', () => { + const wrapper = prepareTest(setCustomUrls); + wrapper.update(); + const url1LabelInput = wrapper.find('[data-test-subj="mlJobEditCustomUrlInput_0"]'); + url1LabelInput.simulate('focus'); + wrapper.update(); + const url1LabelTextarea = wrapper.find('[data-test-subj="mlJobEditCustomUrlTextarea_0"]'); + expect(url1LabelTextarea).toBeDefined(); + url1LabelTextarea.simulate('change', { target: { value: 'Edit' } }); + wrapper.update(); + expect(setCustomUrls).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.tsx b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.tsx new file mode 100644 index 0000000000000..5f93a36793873 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/list.tsx @@ -0,0 +1,270 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, useState, ChangeEvent } from 'react'; + +import { + EuiButtonIcon, + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiToolTip, + EuiTextArea, +} from '@elastic/eui'; + +import { toastNotifications } from 'ui/notify'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { isValidLabel, openCustomUrlWindow } from '../../../util/custom_url_utils'; +import { getTestUrl } from './utils'; + +import { parseInterval } from '../../../../common/util/parse_interval'; +import { TIME_RANGE_TYPE } from './constants'; +import { KibanaUrlConfig } from '../../../../common/types/custom_urls'; +import { Job } from '../../new_job_new/common/job_creator/configs'; + +function isValidTimeRange(timeRange: KibanaUrlConfig['time_range']): boolean { + // Allow empty timeRange string, which gives the 'auto' behaviour. + if (timeRange === undefined || timeRange.length === 0 || timeRange === TIME_RANGE_TYPE.AUTO) { + return true; + } + + const interval = parseInterval(timeRange); + return interval !== null; +} + +export interface CustomUrlListProps { + job: Job; + customUrls: KibanaUrlConfig[]; + setCustomUrls: (customUrls: KibanaUrlConfig[]) => {}; +} + +/* + * React component for listing the custom URLs added to a job, + * with buttons for testing and deleting each custom URL. + */ +export const CustomUrlList: FC = ({ job, customUrls, setCustomUrls }) => { + const [expandedUrlIndex, setExpandedUrlIndex] = useState(null); + + const onLabelChange = (e: ChangeEvent, index: number) => { + if (index < customUrls.length) { + customUrls[index] = { + ...customUrls[index], + url_name: e.target.value, + }; + setCustomUrls(customUrls); + } + }; + + const onUrlValueChange = ( + e: ChangeEvent, + index: number + ) => { + if (index < customUrls.length) { + customUrls[index] = { + ...customUrls[index], + url_value: e.target.value, + }; + setCustomUrls(customUrls); + } + }; + + const onTimeRangeChange = (e: ChangeEvent, index: number) => { + if (index < customUrls.length) { + customUrls[index] = { + ...customUrls[index], + }; + + const timeRange = e.target.value; + if (timeRange !== undefined && timeRange.length > 0) { + customUrls[index].time_range = timeRange; + } else { + delete customUrls[index].time_range; + } + setCustomUrls(customUrls); + } + }; + + const onDeleteButtonClick = (index: number) => { + if (index < customUrls.length) { + customUrls.splice(index, 1); + setCustomUrls(customUrls); + } + }; + + const onTestButtonClick = (index: number) => { + if (index < customUrls.length) { + getTestUrl(job, customUrls[index]) + .then(testUrl => { + openCustomUrlWindow(testUrl, customUrls[index]); + }) + .catch(resp => { + // eslint-disable-next-line no-console + console.error('Error obtaining URL for test:', resp); + toastNotifications.addDanger( + i18n.translate( + 'xpack.ml.customUrlEditorList.obtainingUrlToTestConfigurationErrorMessage', + { + defaultMessage: 'An error occurred obtaining the URL to test the configuration', + } + ) + ); + }); + } + }; + + const customUrlRows = customUrls.map((customUrl, index) => { + // Validate the label. + const label = customUrl.url_name; + const otherUrls = [...customUrls]; + otherUrls.splice(index, 1); // Don't compare label with itself. + const isInvalidLabel = !isValidLabel(label, otherUrls); + const invalidLabelError = isInvalidLabel + ? [ + i18n.translate('xpack.ml.customUrlEditorList.labelIsNotUniqueErrorMessage', { + defaultMessage: 'A unique label must be supplied', + }), + ] + : []; + + // Validate the time range. + const timeRange = customUrl.time_range; + const isInvalidTimeRange = !isValidTimeRange(timeRange); + const invalidIntervalError = isInvalidTimeRange + ? [ + i18n.translate('xpack.ml.customUrlEditorList.invalidTimeRangeFormatErrorMessage', { + defaultMessage: 'Invalid format', + }), + ] + : []; + + return ( + + + + } + isInvalid={isInvalidLabel} + error={invalidLabelError} + > + onLabelChange(e, index)} + /> + + + + + } + > + {index === expandedUrlIndex ? ( + { + if (input) { + input.focus(); + } + }} + fullWidth={true} + value={customUrl.url_value} + onChange={e => onUrlValueChange(e, index)} + onBlur={() => { + setExpandedUrlIndex(null); + }} + data-test-subj={`mlJobEditCustomUrlTextarea_${index}`} + /> + ) : ( + setExpandedUrlIndex(index)} + data-test-subj={`mlJobEditCustomUrlInput_${index}`} + /> + )} + + + + + } + error={invalidIntervalError} + isInvalid={isInvalidTimeRange} + > + onTimeRangeChange(e, index)} + /> + + + + + + } + > + onTestButtonClick(index)} + iconType="popout" + aria-label={i18n.translate('xpack.ml.customUrlEditorList.testCustomUrlAriaLabel', { + defaultMessage: 'Test custom URL', + })} + /> + + + + + + + } + > + onDeleteButtonClick(index)} + iconType="trash" + aria-label={i18n.translate( + 'xpack.ml.customUrlEditorList.deleteCustomUrlAriaLabel', + { + defaultMessage: 'Delete custom URL', + } + )} + /> + + + + + ); + }); + + return <>{customUrlRows}; +}; diff --git a/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/utils.d.ts b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/utils.d.ts new file mode 100644 index 0000000000000..1841a17c4e728 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/jobs/components/custom_url_editor/utils.d.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { KibanaUrlConfig } from '../../../../common/types/custom_urls'; +import { Job } from '../../new_job_new/common/job_creator/configs'; + +export function getTestUrl(job: Job, customUrl: KibanaUrlConfig): Promise; From ca33b6ee2338233e0b14884b52b7cdb9e50f5505 Mon Sep 17 00:00:00 2001 From: Kaarina Tungseth Date: Mon, 14 Oct 2019 14:35:14 -0500 Subject: [PATCH 06/46] [DOCS] Improvements to the upgrade docs (#48126) --- docs/setup/upgrade.asciidoc | 76 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/docs/setup/upgrade.asciidoc b/docs/setup/upgrade.asciidoc index 05294f8694461..ce0259c690b82 100644 --- a/docs/setup/upgrade.asciidoc +++ b/docs/setup/upgrade.asciidoc @@ -1,58 +1,62 @@ [[upgrade]] == Upgrading {kib} +Depending on the {kib} version you're upgrading from, the upgrade process to 7.0 +varies. -[IMPORTANT] -=========================================== -Before upgrading {kib}: +[float] +[[upgrade-before-you-begin]] +=== Before you begin -* Consult the <> docs. -* Test upgrades in a dev environment before upgrading your production servers. -* Backup your data using the {es} {ref}/modules-snapshots.html[snapshots] feature. - You **cannot roll back** to an earlier version unless you have a backup of - your data. -* If you are using custom plugins, check that a compatible version is - available. -=========================================== +Before you upgrade {kib}: -Depending on which version of {kib} you're upgrading from, the upgrade process to 7.0 -will vary. +* Consult the <>. +* Before you upgrade production servers, test the upgrades in a dev environment. +* Backup your data with {es} {ref}/modules-snapshots.html[snapshots]. + To roll back to an earlier version, you **must** have a backup of your data. +* If you are using custom plugins, check that a compatible version is + available. +* Shut down all {kib} nodes. Running more than one {kib} version against the + same Elasticseach index is unsupported. If you upgrade while older {kib} nodes are + running, the upgrade can fail. -The recommended path is to upgrade to 6.7 before upgrading to 7.0. -This makes it easier to identify the changes you need to make to upgrade and enables -you to perform a rolling upgrade with no downtime. +To identify the changes you need to make to upgrade, and to enable you to +perform an Elasticsearch rolling upgrade with no downtime, you must upgrade to +6.7 before you upgrade to 7.0. -Please see -*{stack-ref}/upgrading-elastic-stack.html[Upgrading the Elastic Stack]* for a -comprehensive overview of the upgrade process. +For a comprehensive overview of the upgrade process, refer to +*{stack-ref}/upgrading-elastic-stack.html[Upgrading the Elastic Stack]*. [float] -==== Upgrading from 5.x or earlier -{es} can read indices created in the previous major version. If you have indices -created in 5.x or before, you must reindex or delete them before upgrading to 7.0.0. -See {stack-ref}/upgrading-elastic-stack.html#oss-stack-upgrade[Upgrading the Elastic Stack] -for more information. - -Once your reindex is complete, you can follow the <> +[[upgrade-5x-earlier]] +=== Upgrading from 5.x or earlier +{es} can read indices created in the previous major version. Before you upgrade +to 7.0.0, you must reindex or delete any indices created in 5.x or earlier. +For more information, refer to +{stack-ref}/upgrading-elastic-stack.html#oss-stack-upgrade[Upgrading the Elastic Stack]. + +When your reindex is complete, follow the <> instructions. [float] -==== Upgrading from 6.x +[[upgrade-6x]] +=== Upgrading from 6.x The recommended path is to upgrade to 6.7 before upgrading to 7.0. This makes it -easier to identify the required changes, and enables you to use the Upgrade Assistant -to prepare for your upgrade to 7.0 (see below). +easier to identify the required changes, and enables you to use the Upgrade +Assistant to prepare for your upgrade to 7.0. -*Note:* Saved searches, visualizations, and dashboards created in {kib} 6.x -can be generally imported into 7.x. +TIP: The ability to import {kib} 6.x saved searches, visualizations, and +dashboards is supported. [float] -==== Upgrading from 6.7 -6.7 includes an https://www.elastic.co/guide/en/kibana/6.7/upgrade-assistant.html[Upgrade Assistant] -to help you prepare for your upgrade to 7.0. To access the assistant, go to *Management > 7.0 Upgrade Assistant*. +[[upgrade-67]] +=== Upgrading from 6.7 +To help you prepare for your upgrade to 7.0, 6.7 includes an https://www.elastic.co/guide/en/kibana/6.7/upgrade-assistant.html[Upgrade Assistant] +To access the assistant, go to *Management > 7.0 Upgrade Assistant*. -After you have addressed any issues that were identified by the Upgrade Assistant, -<>. +After you have addressed any issues that were identified by the Upgrade +Assistant, <>. include::upgrade/upgrade-standard.asciidoc[] From 679bce17bed9dc81c7f36f4f102ef75c44553dd2 Mon Sep 17 00:00:00 2001 From: Tim Roes Date: Mon, 14 Oct 2019 22:20:50 +0200 Subject: [PATCH 07/46] Prepare for TS 3.7 conversion (#47794) --- .../np_ready/public/app/dashboard_container_example.tsx | 2 +- x-pack/legacy/plugins/actions/server/actions_config.ts | 2 +- x-pack/legacy/plugins/alerting/server/types.ts | 4 ++-- x-pack/legacy/plugins/infra/types/eui.d.ts | 1 + .../server/lib/reindexing/reindex_actions.test.ts | 4 +--- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx index ba9a874bcc5d3..5cfaa1c22f4e5 100644 --- a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx +++ b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx @@ -86,7 +86,7 @@ export class DashboardContainerExample extends React.Component { } public switchViewMode = () => { - this.setState((prevState: State) => { + this.setState<'viewMode'>((prevState: State) => { if (!this.container || isErrorEmbeddable(this.container)) { return prevState; } diff --git a/x-pack/legacy/plugins/actions/server/actions_config.ts b/x-pack/legacy/plugins/actions/server/actions_config.ts index 0d33914920b21..3053c88f1c9ef 100644 --- a/x-pack/legacy/plugins/actions/server/actions_config.ts +++ b/x-pack/legacy/plugins/actions/server/actions_config.ts @@ -61,7 +61,7 @@ function isWhitelistedHostnameInUri(config: ActionsConfigType, uri: string): boo tryCatch(() => new URL(uri)), map(url => url.hostname), mapNullable(hostname => isWhitelisted(config, hostname)), - getOrElse(() => false) + getOrElse(() => false) ); } diff --git a/x-pack/legacy/plugins/alerting/server/types.ts b/x-pack/legacy/plugins/alerting/server/types.ts index e0b9f6e03beab..3c71412da2c89 100644 --- a/x-pack/legacy/plugins/alerting/server/types.ts +++ b/x-pack/legacy/plugins/alerting/server/types.ts @@ -5,7 +5,7 @@ */ import { AlertInstance } from './lib'; -import { AlertTypeRegistry } from './alert_type_registry'; +import { AlertTypeRegistry as OrigAlertTypeRegistry } from './alert_type_registry'; import { PluginSetupContract, PluginStartContract } from './plugin'; import { SavedObjectAttributes, SavedObjectsClientContract } from '../../../../../src/core/server'; @@ -95,4 +95,4 @@ export interface AlertingPlugin { start: PluginStartContract; } -export type AlertTypeRegistry = PublicMethodsOf; +export type AlertTypeRegistry = PublicMethodsOf; diff --git a/x-pack/legacy/plugins/infra/types/eui.d.ts b/x-pack/legacy/plugins/infra/types/eui.d.ts index f117181eae43d..530cda2d57731 100644 --- a/x-pack/legacy/plugins/infra/types/eui.d.ts +++ b/x-pack/legacy/plugins/infra/types/eui.d.ts @@ -96,6 +96,7 @@ declare module '@elastic/eui' { message?: any; rowProps?: any; cellProps?: any; + responsive?: boolean; }; export const EuiInMemoryTable: React.SFC; } diff --git a/x-pack/legacy/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.test.ts b/x-pack/legacy/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.test.ts index e685b231a356d..4569fdfa33a83 100644 --- a/x-pack/legacy/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.test.ts +++ b/x-pack/legacy/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.test.ts @@ -299,9 +299,7 @@ describe('ReindexActions', () => { }); describe('runWhileConsumerLocked', () => { - Object.keys(IndexGroup).forEach(typeKey => { - const consumerType = IndexGroup[typeKey as any] as IndexGroup; - + Object.entries(IndexGroup).forEach(([typeKey, consumerType]) => { describe(`IndexConsumerType.${typeKey}`, () => { it('creates the lock doc if it does not exist and executes callback', async () => { expect.assertions(3); From 27c5cb2167d0397e7c51c7dd81c7fc4b38a8138f Mon Sep 17 00:00:00 2001 From: Frank Hassanabad Date: Mon, 14 Oct 2019 14:22:27 -0600 Subject: [PATCH 08/46] [SIEM][Detection Engine] Adds Read, Update, Delete API endpoints (#47765) ## Summary * Adds a Read, Update, Delete, and Find API endpoints. * Adds several scripts to exercise the endpoints as well as improves the helper scripts * Fixes a bad assumption with the way alert params works with `null` * Fixes a bug where I was using an array instead of a number of `max_signals` * Fixes a bug with the log level since it upgraded recently and requires a log level IMPORTANT NOTE: --- This still uses auto-generated GUID's and not the alert id so there are not stable id's just yet. However, either we will add that capability through alert params or the alerting team will add the capability to do a POST of the {id} into the create endpoints. Testing: --- Follow the `README.md` for initial setup of our temporary environment variables. Use the scripts and post a signal after a hard reset like so: ```ts ./hard_reset.sh ./post_signal.sh ``` Then run the following scripts to test each piece: ```sh # Creates a new signal ./post_signal.sh { "id": "908a6af1-ac63-4d52-a856-fc635a00db0f", "alertTypeId": "siem.signals", "interval": "5m", "actions": [ { "group": "default", "params": { "message": "SIEM Alert Fired" }, "id": "7edd7e98-9286-4fdb-a5c5-16de776bc7c7" } ], "alertTypeParams": {}, "enabled": true, "throttle": null, "createdBy": "elastic", "updatedBy": "elastic", "apiKeyOwner": "elastic", "scheduledTaskId": "4f401ca0-e402-11e9-94ed-051d758a6c79" } # Read a signal that is from the result ./read_signal.sh 908a6af1-ac63-4d52-a856-fc635a00db0f # Edit the file `vim signals/temp_update_1.json` (manually) and add the ID into # it like so since we don't have stable alert ID's just yet { "id": "908a6af1-ac63-4d52-a856-fc635a00db0f", "description": "Only watch winlogbeat users", "index": ["winlogbeat-*"], "interval": "9m", "name": "Just watch other winlogbeat users", "severity": 500, "enabled": false, "type": "filter", "from": "now-5d", "to": "now-1d", "kql": "user.name: something_else" } # Then update it ./update_signal.sh # Then run a find to see all signals ./find_signals.sh # Delete the signal ./delete_signal.sh 908a6af1-ac63-4d52-a856-fc635a00db0f ``` Take a look at the arguments and play around with removing fields from the update document as well as using different features of the API to see if something is broken for the initial roll out. ### Checklist Use ~~strikethroughs~~ to remove checklist items you don't feel are applicable to this PR. ~~- [ ] This was checked for cross-browser compatibility, [including a check against IE11](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility)~~ ~~- [ ] 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/master/packages/kbn-i18n/README.md)~~ ~~- [ ] [Documentation](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#writing-documentation) was added for features that require explanation or tutorials~~ ~~- [ ] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios~~ ~~- [ ] This was checked for [keyboard-only and screenreader accessibility](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Accessibility_testing_checklist)~~ ### For maintainers ~~- [ ] This was checked for breaking API changes and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~~ ~~- [ ] This includes a feature addition or change that requires a release note and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~~ --- .../plugins/siem/server/kibana.index.ts | 8 ++ .../server/lib/detection_engine/README.md | 8 +- .../detection_engine/alerts/create_signal.ts | 1 + .../detection_engine/alerts/delete_signals.ts | 43 +++++++ .../detection_engine/alerts/find_signals.ts | 30 +++++ .../detection_engine/alerts/read_signals.ts | 18 +++ .../alerts/signals_alert_type.ts | 4 +- .../alerts/update_signals.test.ts | 52 ++++++++ .../detection_engine/alerts/update_signals.ts | 119 ++++++++++++++++++ .../routes/create_signals_route.ts | 2 +- .../routes/delete_signals_route.ts | 40 ++++++ .../routes/find_signals_route.ts | 63 ++++++++++ .../routes/read_signals_route.ts | 36 ++++++ .../routes/updated_signals_route.ts | 114 +++++++++++++++++ .../lib/detection_engine/scripts/README.md | 1 + .../scripts/check_env_variables.sh | 46 +++++++ .../scripts/delete_all_actions.sh | 34 +++++ .../scripts/delete_all_alert_tasks.sh | 23 ++++ .../scripts/delete_all_alerts.sh | 23 ++++ .../detection_engine/scripts/delete_signal.sh | 16 +++ .../scripts/delete_signal_index.sh | 9 ++ .../scripts/find_saved_object.sh | 9 ++ .../detection_engine/scripts/find_signals.sh | 15 +++ .../scripts/get_action_instances.sh | 9 ++ .../scripts/get_action_types.sh | 9 ++ .../scripts/get_alert_instances.sh | 9 ++ .../scripts/get_alert_tasks.sh | 9 ++ .../scripts/get_alert_types.sh | 9 ++ .../scripts/get_saved_objects.sh | 10 ++ .../scripts/get_signal_mapping.sh | 9 ++ .../detection_engine/scripts/hard_reset.sh | 16 +++ .../detection_engine/scripts/post_signal.sh | 9 ++ .../scripts/put_signal_index.sh | 10 +- .../detection_engine/scripts/read_signal.sh | 15 +++ .../scripts/signals/temp_update_1.json | 13 ++ .../detection_engine/scripts/update_signal.sh | 25 ++++ 36 files changed, 859 insertions(+), 7 deletions(-) create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/delete_signals.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/find_signals.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/read_signals.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.test.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/delete_signals_route.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/find_signals_route.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/read_signals_route.ts create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/updated_signals_route.ts create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/check_env_variables.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_actions.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alerts.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_signals.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/hard_reset.sh create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/read_signal.sh create mode 100644 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/signals/temp_update_1.json create mode 100755 x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/update_signal.sh diff --git a/x-pack/legacy/plugins/siem/server/kibana.index.ts b/x-pack/legacy/plugins/siem/server/kibana.index.ts index ea29b7cdeef81..0e69cfda7af1a 100644 --- a/x-pack/legacy/plugins/siem/server/kibana.index.ts +++ b/x-pack/legacy/plugins/siem/server/kibana.index.ts @@ -17,6 +17,10 @@ import { } from './saved_objects'; import { createSignalsRoute } from './lib/detection_engine/routes/create_signals_route'; +import { readSignalsRoute } from './lib/detection_engine/routes/read_signals_route'; +import { findSignalsRoute } from './lib/detection_engine/routes/find_signals_route'; +import { deleteSignalsRoute } from './lib/detection_engine/routes/delete_signals_route'; +import { updateSignalsRoute } from './lib/detection_engine/routes/updated_signals_route'; const APP_ID = 'siem'; @@ -46,6 +50,10 @@ export const initServerWithKibana = (kbnServer: Server) => { 'Detected feature flags for actions and alerting and enabling signals API endpoints' ); createSignalsRoute(kbnServer); + readSignalsRoute(kbnServer); + updateSignalsRoute(kbnServer); + deleteSignalsRoute(kbnServer); + findSignalsRoute(kbnServer); } logger.info('Plugin done initializing'); diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/README.md b/x-pack/legacy/plugins/siem/server/lib/detection_engine/README.md index b90cc93406999..5ac2a7a2d3060 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/README.md +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/README.md @@ -17,6 +17,7 @@ export ELASTICSEARCH_URL=https://${ip}:9200 export KIBANA_URL=http://localhost:5601 export SIGNALS_INDEX=.siem-signals-${your user id} export TASK_MANAGER_INDEX=.kibana-task-manager-${your user id} +export KIBANA_INDEX=.kibana-${your user id} # This is for the kbn-action and kbn-alert tool export KBN_URLBASE=http://${user}:${password}@localhost:5601 @@ -69,18 +70,19 @@ server log [11:39:05.561] [info][siem] Detected feature flags for actions a Open a terminal and go into the scripts folder `cd kibana/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts` and run: ``` -./delete_signal_index.sh -./put_signal_index.sh +./hard_reset.sh ./post_signal.sh ``` which will: +* Delete any existing actions you have +* Delete any existing alerts you have +* Delete any existing alert tasks you have * Delete any existing signal mapping you might have had. * Add the latest signal index and its mappings * Posts a sample signal which checks for root or admin every 5 minutes - Now you can run ```sh diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/create_signal.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/create_signal.ts index 6ebdecfeeba83..8685b4f082fa5 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/create_signal.ts +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/create_signal.ts @@ -82,6 +82,7 @@ export const createSignal = async ({ id: actionResults.id, params: { message: 'SIEM Alert Fired', + level: 'info', }, }, ], diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/delete_signals.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/delete_signals.ts new file mode 100644 index 0000000000000..dad9147d9eb68 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/delete_signals.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AlertAction } from '../../../../../alerting/server/types'; +import { ActionsClient } from '../../../../../actions/server/actions_client'; +import { AlertsClient } from '../../../../../alerting/server/alerts_client'; + +export interface DeleteSignalParams { + alertsClient: AlertsClient; + actionsClient: ActionsClient; + id: string; +} + +export const deleteAllSignalActions = async ( + actionsClient: ActionsClient, + actions: AlertAction[] +): Promise => { + try { + await Promise.all(actions.map(async ({ id }) => actionsClient.delete({ id }))); + return null; + } catch (error) { + return error; + } +}; + +export const deleteSignals = async ({ alertsClient, actionsClient, id }: DeleteSignalParams) => { + const alert = await alertsClient.get({ id }); + + // TODO: Remove this as cast as soon as signal.actions TypeScript bug is fixed + // where it is trying to return AlertAction[] or RawAlertAction[] + const actions = (alert.actions as (AlertAction[] | undefined)) || []; + + const actionsErrors = await deleteAllSignalActions(actionsClient, actions); + const deletedAlert = await alertsClient.delete({ id }); + if (actionsErrors != null) { + throw actionsErrors; + } else { + return deletedAlert; + } +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/find_signals.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/find_signals.ts new file mode 100644 index 0000000000000..0dd784d83f31f --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/find_signals.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SIGNALS_ID } from '../../../../common/constants'; +import { AlertsClient } from '../../../../../alerting/server/alerts_client'; + +export interface GetSignalParams { + alertsClient: AlertsClient; + perPage?: number; + page?: number; + sortField?: string; + fields?: string[]; +} + +// TODO: Change this from a search to a filter once this ticket is solved: +// https://github.com/elastic/kibana/projects/26#card-27462236 +export const findSignals = async ({ alertsClient, perPage, page, fields }: GetSignalParams) => { + return alertsClient.find({ + options: { + fields, + page, + perPage, + searchFields: ['alertTypeId'], + search: SIGNALS_ID, + }, + }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/read_signals.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/read_signals.ts new file mode 100644 index 0000000000000..15b4cd57e3aa2 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/read_signals.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AlertsClient } from '../../../../../alerting/server/alerts_client'; + +export interface ReadSignalParams { + alertsClient: AlertsClient; + id: string; +} + +// TODO: Change this from a search to a filter once this ticket is solved: +// https://github.com/elastic/kibana/projects/26#card-27462236 +export const readSignals = async ({ alertsClient, id }: ReadSignalParams) => { + return alertsClient.get({ id }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/signals_alert_type.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/signals_alert_type.ts index adc62917b961f..54e7799da982c 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/signals_alert_type.ts +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/signals_alert_type.ts @@ -28,10 +28,10 @@ export const signalsAlertType = ({ logger }: { logger: Logger }): AlertType => { params: schema.object({ description: schema.string(), from: schema.string(), - filter: schema.maybe(schema.object({}, { allowUnknowns: true })), + filter: schema.nullable(schema.object({}, { allowUnknowns: true })), id: schema.number(), index: schema.arrayOf(schema.string()), - kql: schema.maybe(schema.string({ defaultValue: undefined })), + kql: schema.nullable(schema.string()), maxSignals: schema.number({ defaultValue: 100 }), name: schema.string(), severity: schema.number(), diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.test.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.test.ts new file mode 100644 index 0000000000000..e3e00e5cea5ce --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.test.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { calculateInterval, calculateKqlAndFilter } from './update_signals'; + +describe('update_signals', () => { + describe('#calculateInterval', () => { + test('given a undefined interval, it returns the signalInterval ', () => { + const interval = calculateInterval(undefined, '10m'); + expect(interval).toEqual('10m'); + }); + + test('given a undefined signalInterval, it returns a undefined interval ', () => { + const interval = calculateInterval('10m', undefined); + expect(interval).toEqual('10m'); + }); + + test('given both an undefined signalInterval and a undefined interval, it returns 5m', () => { + const interval = calculateInterval(undefined, undefined); + expect(interval).toEqual('5m'); + }); + }); + + describe('#calculateKqlAndFilter', () => { + test('given a undefined kql filter it returns a null kql', () => { + const kqlFilter = calculateKqlAndFilter(undefined, {}); + expect(kqlFilter).toEqual({ + filter: {}, + kql: null, + }); + }); + + test('given a undefined filter it returns a null filter', () => { + const kqlFilter = calculateKqlAndFilter('some kql string', undefined); + expect(kqlFilter).toEqual({ + filter: null, + kql: 'some kql string', + }); + }); + + test('given both a undefined filter and undefined kql it returns both as undefined', () => { + const kqlFilter = calculateKqlAndFilter(undefined, undefined); + expect(kqlFilter).toEqual({ + filter: undefined, + kql: undefined, + }); + }); + }); +}); diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.ts new file mode 100644 index 0000000000000..7c307695dd2a5 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/alerts/update_signals.ts @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { defaults } from 'lodash/fp'; +import { AlertAction } from '../../../../../alerting/server/types'; +import { AlertsClient } from '../../../../../alerting/server/alerts_client'; +import { ActionsClient } from '../../../../../actions/server/actions_client'; +import { readSignals } from './read_signals'; + +export interface SignalParams { + alertsClient: AlertsClient; + actionsClient: ActionsClient; + description?: string; + from?: string; + id: string; + index?: string[]; + interval?: string; + enabled?: boolean; + filter?: Record | undefined; + kql?: string | undefined; + maxSignals?: string; + name?: string; + severity?: number; + type?: string; // TODO: Replace this type with a static enum type + to?: string; + references?: string[]; +} + +export const calculateInterval = ( + interval: string | undefined, + signalInterval: string | undefined +): string => { + if (interval != null) { + return interval; + } else if (signalInterval != null) { + return signalInterval; + } else { + return '5m'; + } +}; + +export const calculateKqlAndFilter = ( + kql: string | undefined, + filter: {} | undefined +): { kql: string | null | undefined; filter: {} | null | undefined } => { + if (filter != null) { + return { kql: null, filter }; + } else if (kql != null) { + return { kql, filter: null }; + } else { + return { kql: undefined, filter: undefined }; + } +}; + +export const updateSignal = async ({ + alertsClient, + actionsClient, // TODO: Use this whenever we add feature support for different action types + description, + enabled, + filter, + from, + id, + index, + interval, + kql, + name, + severity, + to, + type, + references, +}: SignalParams) => { + // TODO: Error handling and abstraction. Right now if this is an error then what happens is we get the error of + // "message": "Saved object [alert/{id}] not found" + const signal = await readSignals({ alertsClient, id }); + + // TODO: Remove this as cast as soon as signal.actions TypeScript bug is fixed + // where it is trying to return AlertAction[] or RawAlertAction[] + const actions = (signal.actions as AlertAction[] | undefined) || []; + + const alertTypeParams = signal.alertTypeParams || {}; + + const { kql: nextKql, filter: nextFilter } = calculateKqlAndFilter(kql, filter); + + const nextAlertTypeParams = defaults( + { + ...alertTypeParams, + }, + { + description, + filter: nextFilter, + from, + index, + kql: nextKql, + name, + severity, + to, + type, + references, + } + ); + + if (signal.enabled && !enabled) { + await alertsClient.disable({ id }); + } else if (!signal.enabled && enabled) { + await alertsClient.enable({ id }); + } + + return alertsClient.update({ + id, + data: { + interval: calculateInterval(interval, signal.interval), + actions, + alertTypeParams: nextAlertTypeParams, + }, + }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/create_signals_route.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/create_signals_route.ts index 19070243520b8..5ba8e9e363209 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/create_signals_route.ts +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/create_signals_route.ts @@ -47,7 +47,7 @@ export const createSignalsRoute = (server: Hapi.Server) => { index: Joi.array().required(), interval: Joi.string().default('5m'), kql: Joi.string(), - max_signals: Joi.array().default([]), + max_signals: Joi.number().default(100), name: Joi.string().required(), severity: Joi.number().required(), to: Joi.string().required(), diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/delete_signals_route.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/delete_signals_route.ts new file mode 100644 index 0000000000000..559077c862c1e --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/delete_signals_route.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import Hapi from 'hapi'; +import { isFunction } from 'lodash/fp'; + +import { deleteSignals } from '../alerts/delete_signals'; + +export const deleteSignalsRoute = (server: Hapi.Server) => { + server.route({ + method: 'DELETE', + path: '/api/siem/signals/{id}', + options: { + tags: ['access:signals-all'], + validate: { + options: { + abortEarly: false, + }, + }, + }, + async handler(request: Hapi.Request, headers) { + const { id } = request.params; + const alertsClient = isFunction(request.getAlertsClient) ? request.getAlertsClient() : null; + const actionsClient = isFunction(request.getActionsClient) + ? request.getActionsClient() + : null; + if (alertsClient == null || actionsClient == null) { + return headers.response().code(404); + } + return deleteSignals({ + actionsClient, + alertsClient, + id, + }); + }, + }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/find_signals_route.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/find_signals_route.ts new file mode 100644 index 0000000000000..f774f8d76797d --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/find_signals_route.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import Hapi from 'hapi'; +import Joi from 'joi'; +import { isFunction } from 'lodash/fp'; +import { findSignals } from '../alerts/find_signals'; + +interface FindSignalsRequest extends Omit { + query: { + per_page: number; + page: number; + search?: string; + sort_field?: string; + fields?: string[]; + }; +} + +export const findSignalsRoute = (server: Hapi.Server) => { + server.route({ + method: 'GET', + path: '/api/siem/signals/_find', + options: { + tags: ['access:signals-all'], + validate: { + options: { + abortEarly: false, + }, + query: Joi.object() + .keys({ + per_page: Joi.number() + .min(0) + .default(20), + page: Joi.number() + .min(1) + .default(1), + sort_field: Joi.string(), + fields: Joi.array() + .items(Joi.string()) + .single(), + }) + .default(), + }, + }, + async handler(request: FindSignalsRequest, headers) { + const { query } = request; + const alertsClient = isFunction(request.getAlertsClient) ? request.getAlertsClient() : null; + if (alertsClient == null) { + return headers.response().code(404); + } + + return findSignals({ + alertsClient, + perPage: query.per_page, + page: query.page, + sortField: query.sort_field, + }); + }, + }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/read_signals_route.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/read_signals_route.ts new file mode 100644 index 0000000000000..0d4f9ac0ef1fc --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/read_signals_route.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import Hapi from 'hapi'; +import { isFunction } from 'lodash/fp'; + +import { readSignals } from '../alerts/read_signals'; + +export const readSignalsRoute = (server: Hapi.Server) => { + server.route({ + method: 'GET', + path: '/api/siem/signals/{id}', + options: { + tags: ['access:signals-all'], + validate: { + options: { + abortEarly: false, + }, + }, + }, + async handler(request: Hapi.Request, headers) { + const { id } = request.params; + const alertsClient = isFunction(request.getAlertsClient) ? request.getAlertsClient() : null; + if (alertsClient == null) { + return headers.response().code(404); + } + return readSignals({ + alertsClient, + id, + }); + }, + }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/updated_signals_route.ts b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/updated_signals_route.ts new file mode 100644 index 0000000000000..be567695f730d --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/routes/updated_signals_route.ts @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import Hapi from 'hapi'; +import Joi from 'joi'; +import { isFunction } from 'lodash/fp'; +import { updateSignal } from '../alerts/update_signals'; + +interface SignalsRequest extends Hapi.Request { + payload: { + description: string; + enabled: boolean; + filter: Record | undefined; + from: string; + id: string; + index: string[]; + interval: string; + kql: string | undefined; + max_signals: string; + name: string; + severity: number; + type: string; + to: string; + references: string[]; + }; +} + +export const updateSignalsRoute = (server: Hapi.Server) => { + server.route({ + method: 'PUT', + path: '/api/siem/signals/{id?}', + options: { + tags: ['access:signals-all'], + validate: { + options: { + abortEarly: false, + }, + params: { + id: Joi.when(Joi.ref('$payload.id'), { + is: Joi.exist(), + then: Joi.string().optional(), + otherwise: Joi.string().required(), + }), + }, + payload: Joi.object({ + description: Joi.string(), + enabled: Joi.boolean(), + filter: Joi.object(), + from: Joi.string(), + id: Joi.string(), + index: Joi.array(), + interval: Joi.string(), + kql: Joi.string(), + max_signals: Joi.number().default(100), + name: Joi.string(), + severity: Joi.number(), + to: Joi.string(), + type: Joi.string(), // TODO: Restrict this to only be kql or filter for the moment + references: Joi.array().default([]), + }).nand('filter', 'kql'), + }, + }, + async handler(request: SignalsRequest, headers) { + const { + description, + enabled, + filter, + kql, + from, + id, + index, + interval, + // eslint-disable-next-line @typescript-eslint/camelcase + max_signals: maxSignals, + name, + severity, + to, + type, + references, + } = request.payload; + const alertsClient = isFunction(request.getAlertsClient) ? request.getAlertsClient() : null; + + const actionsClient = isFunction(request.getActionsClient) + ? request.getActionsClient() + : null; + + if (!alertsClient || !actionsClient) { + return headers.response().code(404); + } + + return updateSignal({ + alertsClient, + actionsClient, + description, + enabled, + filter, + from, + id: request.params.id ? request.params.id : id, + index, + interval, + kql, + maxSignals, + name, + severity, + to, + type, + references, + }); + }, + }); +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/README.md b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/README.md index 0258f5455ca87..b3ab0011e1f8f 100644 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/README.md +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/README.md @@ -11,6 +11,7 @@ export ELASTICSEARCH_URL=https://${ip}:9200 export KIBANA_URL=http://localhost:5601 export SIGNALS_INDEX=.siem-signals-${your user id} export TASK_MANAGER_INDEX=.kibana-task-manager-${your user id} +export KIBANA_INDEX=.kibana-${your user id} # This is for the kbn-action and kbn-alert tool export KBN_URLBASE=http://${user}:${password}@localhost:5601 diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/check_env_variables.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/check_env_variables.sh new file mode 100755 index 0000000000000..c534b33d28413 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/check_env_variables.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +# Add this to the start of any scripts to detect if env variables are set + +set -e + +if [ -z "${ELASTICSEARCH_USERNAME}" ]; then + echo "Set ELASTICSEARCH_USERNAME in your enviornment" + exit 1 +fi + +if [ -z "${ELASTICSEARCH_PASSWORD}" ]; then + echo "Set ELASTICSEARCH_PASSWORD in your enviornment" + exit 1 +fi + +if [ -z "${ELASTICSEARCH_URL}" ]; then + echo "Set ELASTICSEARCH_URL in your enviornment" + exit 1 +fi + +if [ -z "${KIBANA_URL}" ]; then + echo "Set KIBANA_URL in your enviornment" + exit 1 +fi + +if [ -z "${SIGNALS_INDEX}" ]; then + echo "Set SIGNALS_INDEX in your enviornment" + exit 1 +fi + +if [ -z "${TASK_MANAGER_INDEX}" ]; then + echo "Set TASK_MANAGER_INDEX in your enviornment" + exit 1 +fi + +if [ -z "${KIBANA_INDEX}" ]; then + echo "Set KIBANA_INDEX in your enviornment" + exit 1 +fi diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_actions.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_actions.sh new file mode 100755 index 0000000000000..e9818980c7506 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_actions.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# Example: ./delete_all_actions.sh +# https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html +curl -s -k \ + -H "Content-Type: application/json" \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X POST ${ELASTICSEARCH_URL}/${KIBANA_INDEX}*/_delete_by_query \ + --data '{ + "query": { + "exists": { "field": "action" } + } + }' \ + | jq . + +curl -s -k \ + -H "Content-Type: application/json" \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X POST ${ELASTICSEARCH_URL}/${KIBANA_INDEX}*/_delete_by_query \ + --data '{ + "query": { + "exists": { "field": "action_task_params" } + } + }' \ + | jq . diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh new file mode 100755 index 0000000000000..cd285ac180219 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alert_tasks.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# Example: ./delete_all_alert_tasks.sh +# https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html +curl -s -k \ + -H "Content-Type: application/json" \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X POST ${ELASTICSEARCH_URL}/${TASK_MANAGER_INDEX}*/_delete_by_query \ + --data '{ + "query": { + "term" : { "task.scope" : "alerting" } + } + }' \ + | jq . diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alerts.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alerts.sh new file mode 100755 index 0000000000000..f4038d4afe0cb --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_all_alerts.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# Example: ./delete_all_alerts.sh +# https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html +curl -s -k \ + -H "Content-Type: application/json" \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X POST ${ELASTICSEARCH_URL}/${KIBANA_INDEX}*/_delete_by_query \ + --data '{ + "query": { + "exists": { "field": "alert" } + } + }' \ + | jq . diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal.sh new file mode 100755 index 0000000000000..c393665315e25 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# Example: ./delete_signal.sh ${id} +curl -s -k \ + -H 'kbn-xsrf: 123' \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X DELETE ${KIBANA_URL}/api/siem/signals/$1 | jq . diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal_index.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal_index.sh index edb88d8b9338c..8d5deec1ba3a1 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal_index.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/delete_signal_index.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./delete_signal_index.sh # https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_saved_object.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_saved_object.sh index 3b9b8686df9a6..2b26c939a924c 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_saved_object.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_saved_object.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Uses a default of alert if no argument is specified TYPE=${1:-alert} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_signals.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_signals.sh new file mode 100755 index 0000000000000..f851bda0c12c9 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/find_signals.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# Example: ./find_signals.sh +curl -s -k \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X GET ${KIBANA_URL}/api/siem/signals/_find | jq . diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_instances.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_instances.sh index e04bdba4f1073..e2177bb750057 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_instances.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_instances.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_action_instances.sh # https://github.com/elastic/kibana/blob/master/x-pack/legacy/plugins/actions/README.md#get-apiaction_find-find-actions curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_types.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_types.sh index 47a571f47bf68..7937f2f99a37f 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_types.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_action_types.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_action_types.sh # https://github.com/elastic/kibana/blob/master/x-pack/legacy/plugins/actions/README.md curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_instances.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_instances.sh index a3c03d56d6506..3abc8c9adee62 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_instances.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_instances.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_alert_instances.sh # https://github.com/elastic/kibana/blob/master/x-pack/legacy/plugins/alerting/README.md#get-apialert_find-find-alerts curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_tasks.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_tasks.sh index 210fc2d532b7d..8a94c254ab656 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_tasks.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_tasks.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_alert_tasks.sh # https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_types.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_types.sh index e70bbb9e882c3..7f7361a6252bc 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_types.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_alert_types.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_alert_types.sh # https://github.com/elastic/kibana/blob/master/x-pack/legacy/plugins/alerting/README.md#get-apialerttypes-list-alert-types curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_saved_objects.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_saved_objects.sh index 71725ed308a85..4829beba86743 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_saved_objects.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_saved_objects.sh @@ -1,6 +1,16 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_saved_object.sh +# Example: ./get_saved_objects.sh alert 836dab88-edff-42a5-a219-4aae46fcd385 # https://www.elastic.co/guide/en/kibana/master/saved-objects-api-get.html curl -s -k \ -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_signal_mapping.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_signal_mapping.sh index d30f66df72eda..8b384fcc76f72 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_signal_mapping.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/get_signal_mapping.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./get_signal_mapping.sh # https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html curl -s -k \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/hard_reset.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/hard_reset.sh new file mode 100755 index 0000000000000..ee8fa18e1234d --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/hard_reset.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +./delete_all_actions.sh +./delete_all_alerts.sh +./delete_all_alert_tasks.sh +./delete_signal_index.sh +./put_signal_index.sh diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/post_signal.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/post_signal.sh index 3393084c56c96..961953c71b2dc 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/post_signal.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/post_signal.sh @@ -1,5 +1,14 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Uses a default if no argument is specified SIGNAL=${1:-./signals/root_or_admin_1.json} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/put_signal_index.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/put_signal_index.sh index 54b60c7ccdbe6..1b3b148a99161 100755 --- a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/put_signal_index.sh +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/put_signal_index.sh @@ -1,7 +1,15 @@ #!/bin/sh +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + # Example: ./put_signal_index.sh -# https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html curl -s -k \ -H "Content-Type: application/json" \ -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/read_signal.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/read_signal.sh new file mode 100755 index 0000000000000..7eb07e6e2dedf --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/read_signal.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# Example: ./read_signal.sh {id} +curl -s -k \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X GET ${KIBANA_URL}/api/siem/signals/$1 | jq . diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/signals/temp_update_1.json b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/signals/temp_update_1.json new file mode 100644 index 0000000000000..8ca571666ea4e --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/signals/temp_update_1.json @@ -0,0 +1,13 @@ +{ + "id": "f47e5de7-0023-4898-b856-cf3874e883ea", + "description": "Only watch winlogbeat users", + "index": ["winlogbeat-*"], + "interval": "9m", + "name": "Just watch other winlogbeat users", + "severity": 500, + "enabled": false, + "type": "filter", + "from": "now-5d", + "to": "now-1d", + "kql": "user.name: something_else" +} diff --git a/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/update_signal.sh b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/update_signal.sh new file mode 100755 index 0000000000000..0980999156f11 --- /dev/null +++ b/x-pack/legacy/plugins/siem/server/lib/detection_engine/scripts/update_signal.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License; +# you may not use this file except in compliance with the Elastic License. +# + +set -e +./check_env_variables.sh + +# TODO: Since we only have GUID's at the moment, you have to use ./find_signals.sh and then copy and paste that +# into the temp_update_1.json as your ID in order to run this script. + +# Uses a default if no argument is specified +SIGNAL=${1:-./signals/temp_update_1.json} + +# Example: ./update_signal.sh {id} ./signals/root_or_admin_1.json +curl -s -k \ + -H 'Content-Type: application/json' \ + -H 'kbn-xsrf: 123' \ + -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} \ + -X PUT ${KIBANA_URL}/api/siem/signals \ + -d @${SIGNAL} \ + | jq . From 0df08fdc4ef79c86c50552dccdc221c17eb9c2aa Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 14 Oct 2019 14:48:24 -0600 Subject: [PATCH 09/46] [Maps] clean features in locked tooltip after re-fetch (#48016) * [Maps] clean features in locked tooltip after re-fetch * fetch geometry from FEATURE_ID_PROPERTY_NAME instead of _id * set FEATURE_ID_PROPERTY_NAME for pew pew source * do not update tooltip state if no features were removed * set FEATURE_ID_PROPERTY_NAME for EMS_file source and kibana_regionmap source * avoid adding lodash to map actions * use if else instead of early return --- .../maps/public/actions/map_actions.js | 40 +++++++++++++++---- .../maps/public/elasticsearch_geo_utils.js | 6 +++ .../public/elasticsearch_geo_utils.test.js | 26 +++++++++++- .../ems_file_source/ems_file_source.js | 12 +++++- .../es_geo_grid_source/convert_to_geojson.js | 6 ++- .../es_pew_pew_source/convert_to_lines.js | 5 ++- .../es_search_source/es_search_source.js | 12 ++++-- .../kibana_regionmap_source.js | 4 ++ .../maps/public/layers/vector_layer.js | 4 +- 9 files changed, 96 insertions(+), 19 deletions(-) diff --git a/x-pack/legacy/plugins/maps/public/actions/map_actions.js b/x-pack/legacy/plugins/maps/public/actions/map_actions.js index fe6fbe9d8debf..b159cd02a7c28 100644 --- a/x-pack/legacy/plugins/maps/public/actions/map_actions.js +++ b/x-pack/legacy/plugins/maps/public/actions/map_actions.js @@ -23,7 +23,7 @@ import { unregisterCancelCallback } from '../reducers/non_serializable_instances'; import { updateFlyout } from '../actions/ui_actions'; -import { SOURCE_DATA_ID_ORIGIN } from '../../common/constants'; +import { FEATURE_ID_PROPERTY_NAME, SOURCE_DATA_ID_ORIGIN } from '../../common/constants'; export const SET_SELECTED_LAYER = 'SET_SELECTED_LAYER'; export const SET_TRANSIENT_LAYER = 'SET_TRANSIENT_LAYER'; @@ -203,11 +203,36 @@ function setLayerDataLoadErrorStatus(layerId, errorMessage) { }; } -export function clearTooltipStateForLayer(layerId) { +export function cleanTooltipStateForLayer(layerId, layerFeatures = []) { return (dispatch, getState) => { const tooltipState = getTooltipState(getState()); - if (tooltipState && tooltipState.layerId === layerId) { + + if (!tooltipState) { + return; + } + + const nextTooltipFeatures = tooltipState.features.filter(tooltipFeature => { + if (tooltipFeature.layerId !== layerId) { + // feature from another layer, keep it + return true; + } + + // Keep feature if it is still in layer + return layerFeatures.some(layerFeature => { + return layerFeature.properties[FEATURE_ID_PROPERTY_NAME] === tooltipFeature.id; + }); + }); + + if (tooltipState.features.length === nextTooltipFeatures.length) { + // no features got removed, nothing to update + return; + } + + if (nextTooltipFeatures.length === 0) { + // all features removed from tooltip, close tooltip dispatch(setTooltipState(null)); + } else { + dispatch(setTooltipState({ ...tooltipState, features: nextTooltipFeatures })); } }; } @@ -223,7 +248,7 @@ export function toggleLayerVisible(layerId) { const makeVisible = !layer.isVisible(); if (!makeVisible) { - dispatch(clearTooltipStateForLayer(layerId)); + dispatch(cleanTooltipStateForLayer(layerId)); } await dispatch({ @@ -456,7 +481,8 @@ export function updateSourceDataRequest(layerId, newData) { export function endDataLoad(layerId, dataId, requestToken, data, meta) { return async (dispatch) => { dispatch(unregisterCancelCallback(requestToken)); - dispatch(clearTooltipStateForLayer(layerId)); + const features = data ? data.features : []; + dispatch(cleanTooltipStateForLayer(layerId, features)); dispatch({ type: LAYER_DATA_LOAD_ENDED, layerId, @@ -478,7 +504,7 @@ export function endDataLoad(layerId, dataId, requestToken, data, meta) { export function onDataLoadError(layerId, dataId, requestToken, errorMessage) { return async (dispatch) => { dispatch(unregisterCancelCallback(requestToken)); - dispatch(clearTooltipStateForLayer(layerId)); + dispatch(cleanTooltipStateForLayer(layerId)); dispatch({ type: LAYER_DATA_LOAD_ERROR, data: null, @@ -599,7 +625,7 @@ export function removeLayer(layerId) { layerGettingRemoved.getInFlightRequestTokens().forEach(requestToken => { dispatch(cancelRequest(requestToken)); }); - dispatch(clearTooltipStateForLayer(layerId)); + dispatch(cleanTooltipStateForLayer(layerId)); layerGettingRemoved.destroy(); dispatch({ type: REMOVE_LAYER, diff --git a/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js b/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js index 10ef1ee517c3c..4a5715af64d0a 100644 --- a/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js +++ b/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js @@ -11,6 +11,7 @@ import { DECIMAL_DEGREES_PRECISION, ES_GEO_FIELD_TYPE, ES_SPATIAL_RELATIONS, + FEATURE_ID_PROPERTY_NAME, GEO_JSON_TYPE, POLYGON_COORDINATES_EXTERIOR_INDEX, LON_INDEX, @@ -74,6 +75,11 @@ export function hitsToGeoJson(hits, flattenHit, geoFieldName, geoFieldType) { // don't include geometry field value in properties delete properties[geoFieldName]; + // _id is unique to Elasticsearch documents. + // Move _id to FEATURE_ID_PROPERTY_NAME to standardize featureId keys across all sources + properties[FEATURE_ID_PROPERTY_NAME] = properties._id; + delete properties._id; + //create new geojson Feature for every individual geojson geometry. for (let j = 0; j < tmpGeometriesAccumulator.length; j++) { features.push({ diff --git a/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.test.js b/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.test.js index fe65a307f8905..5f2ae9fd7b19a 100644 --- a/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.test.js +++ b/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.test.js @@ -7,6 +7,7 @@ jest.mock('ui/new_platform'); jest.mock('ui/index_patterns'); +import { FEATURE_ID_PROPERTY_NAME } from '../common/constants'; import { hitsToGeoJson, geoPointToGeometry, @@ -15,7 +16,6 @@ import { convertMapExtentToPolygon, roundCoordinates, } from './elasticsearch_geo_utils'; - import { flattenHitWrapper } from 'ui/index_patterns'; const geoFieldName = 'location'; @@ -33,10 +33,33 @@ const flattenHitMock = hit => { properties[fieldName] = hit._source[fieldName]; } } + for (const fieldName in hit.fields) { + if (hit.fields.hasOwnProperty(fieldName)) { + properties[fieldName] = hit.fields[fieldName]; + } + } + properties._id = hit._id; + return properties; }; describe('hitsToGeoJson', () => { + it('Should set FEATURE_ID_PROPERTY_NAME to _id', () => { + const docId = 'if3mu20BBQNX22Q14Ppm'; + const hits = [ + { + _id: docId, + fields: { + [geoFieldName]: '20,100' + } + } + ]; + const geojson = hitsToGeoJson(hits, flattenHitMock, geoFieldName, 'geo_point'); + expect(geojson.type).toBe('FeatureCollection'); + expect(geojson.features.length).toBe(1); + expect(geojson.features[0].properties[FEATURE_ID_PROPERTY_NAME]).toBe(docId); + }); + it('Should convert elasitcsearch hits to geojson', () => { const hits = [ { @@ -63,7 +86,6 @@ describe('hitsToGeoJson', () => { }); }); - it('Should handle documents where geoField is not populated', () => { const hits = [ { diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js b/x-pack/legacy/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js index 5faaf459dc314..3af1378e8e016 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/ems_file_source/ems_file_source.js @@ -7,7 +7,7 @@ import { AbstractVectorSource } from '../vector_source'; import { VECTOR_SHAPE_TYPES } from '../vector_feature_types'; import React from 'react'; -import { EMS_FILE } from '../../../../common/constants'; +import { EMS_FILE, FEATURE_ID_PROPERTY_NAME } from '../../../../common/constants'; import { getEMSClient } from '../../../meta'; import { EMSFileCreateSourceEditor } from './create_source_editor'; import { i18n } from '@kbn/i18n'; @@ -79,6 +79,16 @@ export class EMSFileSource extends AbstractVectorSource { featureCollectionPath: 'data', fetchUrl: emsFileLayer.getDefaultFormatUrl() }); + + const emsIdField = emsFileLayer._config.fields.find(field => { + return field.type === 'id'; + }); + featureCollection.features.forEach((feature, index) => { + feature.properties[FEATURE_ID_PROPERTY_NAME] = emsIdField + ? feature.properties[emsIdField.id] + : index; + }); + return { data: featureCollection, meta: {} diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/es_geo_grid_source/convert_to_geojson.js b/x-pack/legacy/plugins/maps/public/layers/sources/es_geo_grid_source/convert_to_geojson.js index 11003013f351a..e06568285dd6b 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/es_geo_grid_source/convert_to_geojson.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/es_geo_grid_source/convert_to_geojson.js @@ -6,7 +6,7 @@ import { RENDER_AS } from './render_as'; import { getTileBoundingBox } from './geo_tile_utils'; -import { EMPTY_FEATURE_COLLECTION } from '../../../../common/constants'; +import { EMPTY_FEATURE_COLLECTION, FEATURE_ID_PROPERTY_NAME } from '../../../../common/constants'; export function convertToGeoJson({ table, renderAs }) { @@ -35,7 +35,9 @@ export function convertToGeoJson({ table, renderAs }) { return; } - const properties = {}; + const properties = { + [FEATURE_ID_PROPERTY_NAME]: gridKey + }; metricColumns.forEach(metricColumn => { properties[metricColumn.aggConfig.id] = row[metricColumn.id]; }); diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/es_pew_pew_source/convert_to_lines.js b/x-pack/legacy/plugins/maps/public/layers/sources/es_pew_pew_source/convert_to_lines.js index ce5efb3b44176..c334776e6c4e8 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/es_pew_pew_source/convert_to_lines.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/es_pew_pew_source/convert_to_lines.js @@ -6,6 +6,8 @@ import _ from 'lodash'; +import { FEATURE_ID_PROPERTY_NAME } from '../../../../common/constants'; + const LAT_INDEX = 0; const LON_INDEX = 1; @@ -27,7 +29,7 @@ export function convertToLines(esResponse) { const sourceBuckets = _.get(destBucket, 'sourceGrid.buckets', []); for (let j = 0; j < sourceBuckets.length; j++) { const { - key, // eslint-disable-line no-unused-vars + key, sourceCentroid, ...rest } = sourceBuckets[j]; @@ -46,6 +48,7 @@ export function convertToLines(esResponse) { coordinates: [[sourceCentroid.location.lon, sourceCentroid.location.lat], dest] }, properties: { + [FEATURE_ID_PROPERTY_NAME]: `${dest.join()},${key}`, ...rest } }); diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js b/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js index 2fc0cf06b4020..502ed034a4416 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js @@ -14,7 +14,13 @@ import { SearchSource } from '../../../kibana_services'; import { hitsToGeoJson } from '../../../elasticsearch_geo_utils'; import { CreateSourceEditor } from './create_source_editor'; import { UpdateSourceEditor } from './update_source_editor'; -import { ES_SEARCH, ES_GEO_FIELD_TYPE, ES_SIZE_LIMIT, SORT_ORDER } from '../../../../common/constants'; +import { + ES_SEARCH, + ES_GEO_FIELD_TYPE, + ES_SIZE_LIMIT, + FEATURE_ID_PROPERTY_NAME, + SORT_ORDER, +} from '../../../../common/constants'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; import { ESTooltipProperty } from '../../tooltips/es_tooltip_property'; @@ -359,7 +365,7 @@ export class ESSearchSource extends AbstractESSource { async filterAndFormatPropertiesToHtml(properties) { const indexPattern = await this._getIndexPattern(); - const propertyValues = await this._loadTooltipProperties(properties._id, indexPattern); + const propertyValues = await this._loadTooltipProperties(properties[FEATURE_ID_PROPERTY_NAME], indexPattern); return this._descriptor.tooltipProperties.map(propertyName => { return new ESTooltipProperty(propertyName, propertyName, propertyValues[propertyName], indexPattern); @@ -466,7 +472,7 @@ export class ESSearchSource extends AbstractESSource { return { index: properties._index, // Can not use index pattern title because it may reference many indices - id: properties._id, + id: properties[FEATURE_ID_PROPERTY_NAME], path: geoField.name, }; } diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js b/x-pack/legacy/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js index 0f52937f2211f..c75c5600aaf92 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/kibana_regionmap_source/kibana_regionmap_source.js @@ -10,6 +10,7 @@ import { CreateSourceEditor } from './create_source_editor'; import { getKibanaRegionList } from '../../../meta'; import { i18n } from '@kbn/i18n'; import { getDataSourceLabel } from '../../../../common/i18n_getters'; +import { FEATURE_ID_PROPERTY_NAME } from '../../../../common/constants'; export class KibanaRegionmapSource extends AbstractVectorSource { @@ -80,6 +81,9 @@ export class KibanaRegionmapSource extends AbstractVectorSource { featureCollectionPath: vectorFileMeta.meta.feature_collection_path, fetchUrl: vectorFileMeta.url }); + featureCollection.features.forEach((feature, index) => { + feature.properties[FEATURE_ID_PROPERTY_NAME] = index; + }); return { data: featureCollection }; diff --git a/x-pack/legacy/plugins/maps/public/layers/vector_layer.js b/x-pack/legacy/plugins/maps/public/layers/vector_layer.js index 829078d98996e..ffe2ce379436d 100644 --- a/x-pack/legacy/plugins/maps/public/layers/vector_layer.js +++ b/x-pack/legacy/plugins/maps/public/layers/vector_layer.js @@ -544,10 +544,8 @@ export class VectorLayer extends AbstractLayer { for (let i = 0; i < featureCollection.features.length; i++) { const id = randomizedIds[i]; const feature = featureCollection.features[i]; - feature.properties[FEATURE_ID_PROPERTY_NAME] = id; - feature.id = id; + feature.id = id; // Mapbox feature state id, must be integer } - } async syncData(syncContext) { From e211113629805690c2d4e1761dd5be75c83cbb81 Mon Sep 17 00:00:00 2001 From: Steph Milovic Date: Mon, 14 Oct 2019 14:43:19 -0700 Subject: [PATCH 10/46] [SIEM] Source/Destination Ip Table on Ip Details (#47608) --- .../siem/common/graphql/shared/schema.gql.ts | 2 +- .../__snapshots__/index.test.tsx.snap | 162 ---- .../page/network/domains_table/columns.tsx | 200 ----- .../page/network/domains_table/index.test.tsx | 130 --- .../page/network/domains_table/index.tsx | 235 ------ .../page/network/domains_table/mock.ts | 75 -- .../network/domains_table/translations.ts | 99 --- .../__snapshots__/index.test.tsx.snap | 196 ++++- .../network_top_n_flow_table/columns.tsx | 38 +- .../network_top_n_flow_table/index.test.tsx | 34 +- .../network_top_n_flow_table/index.tsx | 60 +- .../network/network_top_n_flow_table/mock.ts | 6 +- .../components/paginated_table/index.tsx | 9 +- .../containers/domains/index.gql_query.ts | 71 -- .../siem/public/containers/domains/index.tsx | 175 ----- .../network_top_n_flow/index.gql_query.ts | 4 +- .../containers/network_top_n_flow/index.tsx | 15 +- .../siem/public/graphql/introspection.json | 741 ++++-------------- .../plugins/siem/public/graphql/types.ts | 255 +----- .../plugins/siem/public/mock/global_state.ts | 24 +- .../siem/public/pages/network/ip_details.tsx | 133 +++- .../network/navigation/network_routes.tsx | 6 +- .../public/pages/network/navigation/types.ts | 4 +- .../siem/public/store/network/actions.ts | 49 +- .../siem/public/store/network/helpers.test.ts | 47 +- .../siem/public/store/network/helpers.ts | 8 +- .../siem/public/store/network/model.ts | 20 +- .../siem/public/store/network/reducer.ts | 179 +++-- .../siem/public/store/network/selectors.ts | 32 +- .../server/graphql/ip_details/resolvers.ts | 23 +- .../server/graphql/ip_details/schema.gql.ts | 67 +- .../siem/server/graphql/network/resolvers.ts | 1 + .../siem/server/graphql/network/schema.gql.ts | 5 +- .../plugins/siem/server/graphql/types.ts | 344 +------- .../ip_details/elasticsearch_adapter.test.ts | 22 +- .../lib/ip_details/elasticsearch_adapter.ts | 90 +-- .../siem/server/lib/ip_details/index.ts | 17 - .../siem/server/lib/ip_details/mock.ts | 73 +- .../lib/ip_details/query_domains.dsl.ts | 204 ----- .../siem/server/lib/ip_details/types.ts | 38 +- .../lib/network/elastic_adapter.test.ts | 48 +- .../lib/network/elasticsearch_adapter.ts | 9 +- .../plugins/siem/server/lib/network/index.ts | 6 +- .../plugins/siem/server/lib/network/mock.ts | 307 ++++++-- .../lib/network/query_top_n_flow.dsl.ts | 35 +- .../translations/translations/ja-JP.json | 13 - .../translations/translations/zh-CN.json | 13 - .../test/api_integration/apis/siem/domains.ts | 141 ---- .../test/api_integration/apis/siem/index.js | 1 - .../apis/siem/network_top_n_flow.ts | 10 +- 50 files changed, 1177 insertions(+), 3299 deletions(-) delete mode 100644 x-pack/legacy/plugins/siem/public/components/page/network/domains_table/__snapshots__/index.test.tsx.snap delete mode 100644 x-pack/legacy/plugins/siem/public/components/page/network/domains_table/columns.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.test.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/page/network/domains_table/mock.ts delete mode 100644 x-pack/legacy/plugins/siem/public/components/page/network/domains_table/translations.ts delete mode 100644 x-pack/legacy/plugins/siem/public/containers/domains/index.gql_query.ts delete mode 100644 x-pack/legacy/plugins/siem/public/containers/domains/index.tsx delete mode 100644 x-pack/legacy/plugins/siem/server/lib/ip_details/query_domains.dsl.ts delete mode 100644 x-pack/test/api_integration/apis/siem/domains.ts diff --git a/x-pack/legacy/plugins/siem/common/graphql/shared/schema.gql.ts b/x-pack/legacy/plugins/siem/common/graphql/shared/schema.gql.ts index dc94826c637cc..d043c1587d3c3 100644 --- a/x-pack/legacy/plugins/siem/common/graphql/shared/schema.gql.ts +++ b/x-pack/legacy/plugins/siem/common/graphql/shared/schema.gql.ts @@ -53,7 +53,7 @@ export const sharedSchema = gql` source } - enum FlowTargetNew { + enum FlowTargetSourceDest { destination source } diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/__snapshots__/index.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 7c9dfb87400a2..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,162 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Domains Table Component Rendering it renders the default Domains table 1`] = ` - -`; diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/columns.tsx b/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/columns.tsx deleted file mode 100644 index cf5da3fbebba6..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/columns.tsx +++ /dev/null @@ -1,200 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { EuiIcon, EuiToolTip } from '@elastic/eui'; -import numeral from '@elastic/numeral'; -import { getOr, isEmpty } from 'lodash/fp'; -import moment from 'moment'; -import React from 'react'; -import { StaticIndexPattern } from 'ui/index_patterns'; - -import { - DomainsEdges, - DomainsItem, - DomainsNetworkField, - FlowDirection, - FlowTarget, -} from '../../../../graphql/types'; -import { assertUnreachable } from '../../../../lib/helpers'; -import { escapeQueryValue } from '../../../../lib/keury'; -import { networkModel } from '../../../../store'; -import { DragEffects, DraggableWrapper } from '../../../drag_and_drop/draggable_wrapper'; -import { escapeDataProviderId } from '../../../drag_and_drop/helpers'; -import { defaultToEmptyTag, getEmptyTagValue } from '../../../empty_value'; -import { PreferenceFormattedDate } from '../../../formatted_date'; -import { Columns } from '../../../paginated_table'; -import { LocalizedDateTooltip } from '../../../localized_date_tooltip'; -import { IS_OPERATOR } from '../../../timeline/data_providers/data_provider'; -import { PreferenceFormattedBytes } from '../../../formatted_bytes'; -import { Provider } from '../../../timeline/data_providers/provider'; -import { AddToKql } from '../../add_to_kql'; - -import * as i18n from './translations'; - -export type DomainsColumns = [ - Columns, - Columns, - Columns, - Columns, - Columns, - Columns -]; - -export const getDomainsColumns = ( - indexPattern: StaticIndexPattern, - ip: string, - flowDirection: FlowDirection, - flowTarget: FlowTarget, - type: networkModel.NetworkType, - tableId: string -): DomainsColumns => [ - { - field: `node.${flowTarget}.domainName`, - name: i18n.DOMAIN_NAME, - truncateText: false, - hideForMobile: false, - sortable: true, - render: domainName => { - const domainNameAttr = `${flowTarget}.domain`; - if (domainName != null) { - const id = escapeDataProviderId( - `${tableId}-table-${flowTarget}-${flowDirection}-domain-${domainName}` - ); - return ( - - snapshot.isDragging ? ( - - - - ) : ( - <>{domainName} - ) - } - /> - ); - } else { - return getEmptyTagValue(); - } - }, - }, - { - field: 'node.network.direction', - name: i18n.DIRECTION, - truncateText: false, - hideForMobile: false, - render: directions => - isEmpty(directions) - ? getEmptyTagValue() - : directions && - directions.map((direction, index) => ( - - <> - {defaultToEmptyTag(direction)} - {index < directions.length - 1 ? '\u00A0' : null} - - - )), - }, - { - field: 'node.network.bytes', - name: i18n.BYTES, - truncateText: false, - hideForMobile: false, - sortable: true, - render: bytes => { - if (bytes != null) { - return ; - } else { - return getEmptyTagValue(); - } - }, - }, - { - field: 'node.network.packets', - name: i18n.PACKETS, - truncateText: false, - hideForMobile: false, - sortable: true, - render: packets => { - if (packets != null) { - return numeral(packets).format('0,000'); - } else { - return getEmptyTagValue(); - } - }, - }, - { - field: `node.${flowTarget}.uniqueIpCount`, - name: getFlowTargetTitle(flowTarget), - truncateText: false, - hideForMobile: false, - sortable: true, - render: uniqueIpCount => { - if (uniqueIpCount != null) { - return numeral(uniqueIpCount).format('0,000'); - } else { - return getEmptyTagValue(); - } - }, - }, - { - name: ( - - <> - {i18n.LAST_SEEN}{' '} - - - - ), - truncateText: false, - hideForMobile: false, - render: ({ node }) => { - const lastSeenAttr = `${flowTarget}.lastSeen`; - const lastSeen = getOr(null, lastSeenAttr, node); - if (lastSeen != null) { - return ( - - - - ); - } - return getEmptyTagValue(); - }, - }, -]; - -const getFlowTargetTitle = (flowTarget: FlowTarget): string => { - switch (flowTarget) { - case FlowTarget.client: - return i18n.UNIQUE_CLIENTS; - case FlowTarget.server: - return i18n.UNIQUE_SERVERS; - case FlowTarget.source: - return i18n.UNIQUE_DESTINATIONS; - case FlowTarget.destination: - return i18n.UNIQUE_SOURCES; - } - assertUnreachable(flowTarget); -}; diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.test.tsx b/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.test.tsx deleted file mode 100644 index 45b5998f4d45c..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.test.tsx +++ /dev/null @@ -1,130 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { mount, shallow } from 'enzyme'; -import toJson from 'enzyme-to-json'; -import { getOr } from 'lodash/fp'; -import * as React from 'react'; -import { MockedProvider } from 'react-apollo/test-utils'; -import { Provider as ReduxStoreProvider } from 'react-redux'; - -import { FlowTarget } from '../../../../graphql/types'; -import { - apolloClientObservable, - mockIndexPattern, - mockGlobalState, - TestProviders, -} from '../../../../mock'; -import { createStore, networkModel, State } from '../../../../store'; - -import { DomainsTable } from '.'; -import { mockDomainsData } from './mock'; - -jest.mock('../../../../lib/settings/use_kibana_ui_setting'); - -describe('Domains Table Component', () => { - const loadPage = jest.fn(); - const ip = '10.10.10.10'; - const state: State = mockGlobalState; - - let store = createStore(state, apolloClientObservable); - - beforeEach(() => { - store = createStore(state, apolloClientObservable); - }); - - describe('Rendering', () => { - test('it renders the default Domains table', () => { - const wrapper = shallow( - - - - ); - - expect(toJson(wrapper)).toMatchSnapshot(); - }); - }); - - describe('Sorting on Table', () => { - test('when you click on the column header, you should show the sorting icon', () => { - const wrapper = mount( - - - - - - ); - expect(store.getState().network.details.queries!.domains.domainsSortField).toEqual({ - direction: 'desc', - field: 'bytes', - }); - - wrapper - .find('.euiTable thead tr th button') - .at(1) - .simulate('click'); - - wrapper.update(); - - expect(store.getState().network.details.queries!.domains.domainsSortField).toEqual({ - direction: 'asc', - field: 'bytes', - }); - expect( - wrapper - .find('.euiTable thead tr th button') - .first() - .text() - ).toEqual('DomainClick to sort in ascending order'); - expect( - wrapper - .find('.euiTable thead tr th button') - .at(1) - .text() - ).toEqual('BytesClick to sort in descending order'); - expect( - wrapper - .find('.euiTable thead tr th button') - .at(1) - .find('svg') - ).toBeTruthy(); - }); - }); -}); diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.tsx b/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.tsx deleted file mode 100644 index 52cd8ec70f326..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/index.tsx +++ /dev/null @@ -1,235 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { isEqual } from 'lodash/fp'; -import React from 'react'; -import { connect } from 'react-redux'; -import { ActionCreator } from 'redux'; -import { StaticIndexPattern } from 'ui/index_patterns'; - -import { networkActions } from '../../../../store/actions'; -import { - Direction, - DomainsEdges, - DomainsFields, - DomainsSortField, - FlowDirection, - FlowTarget, -} from '../../../../graphql/types'; -import { networkModel, networkSelectors, State } from '../../../../store'; -import { FlowDirectionSelect } from '../../../flow_controls/flow_direction_select'; -import { Criteria, ItemsPerRow, PaginatedTable, SortingBasicTable } from '../../../paginated_table'; - -import { getDomainsColumns } from './columns'; -import * as i18n from './translations'; -const tableType = networkModel.IpDetailsTableType.domains; - -interface OwnProps { - data: DomainsEdges[]; - flowTarget: FlowTarget; - fakeTotalCount: number; - id: string; - isInspect: boolean; - indexPattern: StaticIndexPattern; - ip: string; - loading: boolean; - loadPage: (newActivePage: number) => void; - showMorePagesIndicator: boolean; - totalCount: number; - type: networkModel.NetworkType; -} - -interface DomainsTableReduxProps { - activePage: number; - domainsSortField: DomainsSortField; - flowDirection: FlowDirection; - limit: number; -} - -interface DomainsTableDispatchProps { - updateDomainsDirection: ActionCreator<{ - flowDirection: FlowDirection; - networkType: networkModel.NetworkType; - }>; - updateDomainsLimit: ActionCreator<{ - limit: number; - networkType: networkModel.NetworkType; - }>; - updateDomainsSort: ActionCreator<{ - domainsSort: DomainsSortField; - networkType: networkModel.NetworkType; - }>; - updateTableActivePage: ActionCreator<{ - activePage: number; - tableType: networkModel.IpDetailsTableType; - }>; -} - -type DomainsTableProps = OwnProps & DomainsTableReduxProps & DomainsTableDispatchProps; - -const rowItems: ItemsPerRow[] = [ - { - text: i18n.ROWS_5, - numberOfRow: 5, - }, - { - text: i18n.ROWS_10, - numberOfRow: 10, - }, -]; - -export const DomainsTableId = 'domains-table'; - -class DomainsTableComponent extends React.PureComponent { - public render() { - const { - activePage, - data, - domainsSortField, - fakeTotalCount, - flowDirection, - flowTarget, - id, - indexPattern, - ip, - isInspect, - limit, - loading, - loadPage, - showMorePagesIndicator, - totalCount, - type, - updateDomainsLimit, - updateTableActivePage, - } = this.props; - - return ( - - } - headerTitle={i18n.DOMAINS} - headerUnit={i18n.UNIT(totalCount)} - id={id} - isInspect={isInspect} - itemsPerRow={rowItems} - limit={limit} - loading={loading} - loadPage={newActivePage => loadPage(newActivePage)} - onChange={this.onChange} - pageOfItems={data} - sorting={getSortField(domainsSortField, flowTarget)} - totalCount={fakeTotalCount} - updateActivePage={newPage => - updateTableActivePage({ - activePage: newPage, - tableType, - }) - } - updateLimitPagination={newLimit => - updateDomainsLimit({ limit: newLimit, networkType: type }) - } - /> - ); - } - - private onChange = (criteria: Criteria) => { - if (criteria.sort != null) { - const splitField = criteria.sort.field.split('.'); - const newDomainsSort: DomainsSortField = { - field: getSortFromString(splitField[splitField.length - 1]), - direction: criteria.sort.direction, - }; - if (!isEqual(newDomainsSort, this.props.domainsSortField)) { - this.props.updateDomainsSort({ - domainsSortField: newDomainsSort, - networkType: this.props.type, - }); - } - } - }; - - private onChangeDomainsDirection = (flowDirection: FlowDirection) => - this.props.updateDomainsDirection({ flowDirection, networkType: this.props.type }); -} - -const makeMapStateToProps = () => { - const getDomainsSelector = networkSelectors.domainsSelector(); - const mapStateToProps = (state: State) => ({ - ...getDomainsSelector(state), - }); - return mapStateToProps; -}; - -export const DomainsTable = connect( - makeMapStateToProps, - { - updateDomainsLimit: networkActions.updateDomainsLimit, - updateDomainsDirection: networkActions.updateDomainsFlowDirection, - updateDomainsSort: networkActions.updateDomainsSort, - updateTableActivePage: networkActions.updateIpDetailsTableActivePage, - } -)(DomainsTableComponent); - -const getSortField = (sortField: DomainsSortField, flowTarget: FlowTarget): SortingBasicTable => { - switch (sortField.field) { - case DomainsFields.domainName: - return { - field: `node.${flowTarget}.${sortField.field}`, - direction: sortField.direction, - }; - case DomainsFields.bytes: - return { - field: `node.network.${sortField.field}`, - direction: sortField.direction, - }; - case DomainsFields.packets: - return { - field: `node.network.${sortField.field}`, - direction: sortField.direction, - }; - case DomainsFields.uniqueIpCount: - return { - field: `node.${flowTarget}.${sortField.field}`, - direction: sortField.direction, - }; - default: - return { - field: 'node.network.bytes', - direction: Direction.desc, - }; - } -}; - -const getSortFromString = (sortField: string): DomainsFields => { - switch (sortField) { - case DomainsFields.domainName.valueOf(): - return DomainsFields.domainName; - case DomainsFields.bytes.valueOf(): - return DomainsFields.bytes; - case DomainsFields.packets.valueOf(): - return DomainsFields.packets; - case DomainsFields.uniqueIpCount.valueOf(): - return DomainsFields.uniqueIpCount; - default: - return DomainsFields.bytes; - } -}; diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/mock.ts b/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/mock.ts deleted file mode 100644 index 624db09f03943..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/mock.ts +++ /dev/null @@ -1,75 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { DomainsData } from '../../../../graphql/types'; - -export const mockDomainsData: DomainsData = { - totalCount: 2, - edges: [ - { - node: { - source: null, - destination: { - uniqueIpCount: 96, - domainName: 'samsungtv-kitchen.iot.sr.local.example.com', - firstSeen: null, - lastSeen: null, - }, - network: { - bytes: 1054651765, - direction: [], - packets: 707990, - }, - }, - cursor: { - value: 'samsungtv-kitchen.iot.sr.local.example.com', - }, - }, - { - node: { - source: null, - destination: { - uniqueIpCount: 6, - domainName: '.row.exmaple.com', - firstSeen: null, - lastSeen: null, - }, - network: { - bytes: 0, - direction: [], - packets: 0, - }, - }, - cursor: { - value: 'row.exmaple.com', - }, - }, - { - node: { - source: null, - destination: { - uniqueIpCount: 1, - domainName: '10.10.10.10', - firstSeen: null, - lastSeen: null, - }, - network: { - bytes: 0, - direction: [], - packets: 0, - }, - }, - cursor: { - value: '10.10.10.10', - }, - }, - ], - pageInfo: { - activePage: 1, - fakeTotalCount: 50, - showMorePagesIndicator: true, - }, -}; diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/translations.ts b/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/translations.ts deleted file mode 100644 index b702eb0578337..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/page/network/domains_table/translations.ts +++ /dev/null @@ -1,99 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { i18n } from '@kbn/i18n'; - -export const DOMAINS = i18n.translate('xpack.siem.network.ipDetails.domainsTable.domainsTitle', { - defaultMessage: 'Domains', -}); - -export const UNIT = (totalCount: number) => - i18n.translate('xpack.siem.network.ipDetails.domainsTable.unit', { - values: { totalCount }, - defaultMessage: `{totalCount, plural, =1 {domain} other {domains}}`, - }); - -// Columns -export const DOMAIN_NAME = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.domainNameTitle', - { - defaultMessage: 'Domain', - } -); - -export const DIRECTION = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.directionTitle', - { - defaultMessage: 'Direction', - } -); - -export const BYTES = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.bytesTitle', - { - defaultMessage: 'Bytes', - } -); - -export const PACKETS = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.packetsTitle', - { - defaultMessage: 'Packets', - } -); - -export const UNIQUE_DESTINATIONS = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.uniqueDestinationsTitle', - { - defaultMessage: 'Unique destinations', - } -); - -export const UNIQUE_SOURCES = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.uniqueSourcesTitle', - { - defaultMessage: 'Unique sources', - } -); - -export const UNIQUE_CLIENTS = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.uniqueClientsTitle', - { - defaultMessage: 'Unique servers', - } -); - -export const UNIQUE_SERVERS = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.uniqueServersTitle', - { - defaultMessage: 'Unique clients', - } -); - -export const LAST_SEEN = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.lastSeenTitle', - { - defaultMessage: 'Last seen', - } -); - -export const FIRST_LAST_SEEN_TOOLTIP = i18n.translate( - 'xpack.siem.network.ipDetails.domainsTable.columns.firstLastSeenToolTip', - { - defaultMessage: 'Relative to the selected date range', - } -); - -// Row Select -export const ROWS_5 = i18n.translate('xpack.siem.network.ipDetails.domainsTable.rows', { - values: { numRows: 5 }, - defaultMessage: '{numRows} {numRows, plural, =0 {rows} =1 {row} other {rows}}', -}); - -export const ROWS_10 = i18n.translate('xpack.siem.network.ipDetails.domainsTable.rows', { - values: { numRows: 10 }, - defaultMessage: '{numRows} {numRows, plural, =0 {rows} =1 {row} other {rows}}', -}); diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/__snapshots__/index.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/__snapshots__/index.test.tsx.snap index bcd7e6a0461a0..498c620312a3a 100644 --- a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/__snapshots__/index.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/__snapshots__/index.test.tsx.snap @@ -1,6 +1,200 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`NetworkTopNFlow Table Component rendering it renders the default NetworkTopNFlow table 1`] = ` +exports[`NetworkTopNFlow Table Component rendering it renders the default NetworkTopNFlow table on the IP Details page 1`] = ` + +`; + +exports[`NetworkTopNFlow Table Component rendering it renders the default NetworkTopNFlow table on the Network page 1`] = ` ]; +export type NetworkTopNFlowColumnsIpDetails = [ + Columns, + Columns, + Columns, + Columns, + Columns, + Columns +]; + export const getNetworkTopNFlowColumns = ( indexPattern: StaticIndexPattern, - flowTarget: FlowTargetNew, + flowTarget: FlowTargetSourceDest, type: networkModel.NetworkType, tableId: string ): NetworkTopNFlowColumns => [ @@ -211,7 +220,7 @@ export const getNetworkTopNFlowColumns = ( { align: 'right', field: `node.${flowTarget}.${getOppositeField(flowTarget)}_ips`, - name: flowTarget === FlowTargetNew.source ? i18n.DESTINATION_IPS : i18n.SOURCE_IPS, + name: flowTarget === FlowTargetSourceDest.source ? i18n.DESTINATION_IPS : i18n.SOURCE_IPS, sortable: true, render: ips => { if (ips != null) { @@ -223,5 +232,24 @@ export const getNetworkTopNFlowColumns = ( }, ]; -const getOppositeField = (flowTarget: FlowTargetNew): FlowTargetNew => - flowTarget === FlowTargetNew.source ? FlowTargetNew.destination : FlowTargetNew.source; +export const getNFlowColumnsCurated = ( + indexPattern: StaticIndexPattern, + flowTarget: FlowTargetSourceDest, + type: networkModel.NetworkType, + tableId: string +): NetworkTopNFlowColumns | NetworkTopNFlowColumnsIpDetails => { + const columns = getNetworkTopNFlowColumns(indexPattern, flowTarget, type, tableId); + + // Columns to exclude from host details pages + if (type === networkModel.NetworkType.details) { + columns.pop(); + return columns; + } + + return columns; +}; + +const getOppositeField = (flowTarget: FlowTargetSourceDest): FlowTargetSourceDest => + flowTarget === FlowTargetSourceDest.source + ? FlowTargetSourceDest.destination + : FlowTargetSourceDest.source; diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.test.tsx b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.test.tsx index d1d3a6a8c462c..aad28521b1c45 100644 --- a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.test.tsx +++ b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.test.tsx @@ -11,7 +11,7 @@ import * as React from 'react'; import { MockedProvider } from 'react-apollo/test-utils'; import { Provider as ReduxStoreProvider } from 'react-redux'; -import { FlowTargetNew } from '../../../../graphql/types'; +import { FlowTargetSourceDest } from '../../../../graphql/types'; import { apolloClientObservable, mockGlobalState, @@ -34,13 +34,13 @@ describe('NetworkTopNFlow Table Component', () => { }); describe('rendering', () => { - test('it renders the default NetworkTopNFlow table', () => { + test('it renders the default NetworkTopNFlow table on the Network page', () => { const wrapper = shallow( { expect(toJson(wrapper)).toMatchSnapshot(); }); + + test('it renders the default NetworkTopNFlow table on the IP Details page', () => { + const wrapper = shallow( + + + + ); + + expect(toJson(wrapper)).toMatchSnapshot(); + }); }); describe('Sorting on Table', () => { @@ -69,7 +95,7 @@ describe('NetworkTopNFlow Table Component', () => { void; @@ -46,7 +47,12 @@ interface NetworkTopNFlowTableReduxProps { } interface NetworkTopNFlowTableDispatchProps { - updateTableActivePage: ActionCreator<{ + setIpDetailsTablesActivePageToZero: ActionCreator; + updateIpDetailsTableActivePage: ActionCreator<{ + activePage: number; + tableType: networkModel.IpDetailsTableType; + }>; + updateNetworkPageTableActivePage: ActionCreator<{ activePage: number; tableType: networkModel.NetworkTableType; }>; @@ -87,18 +93,24 @@ const NetworkTopNFlowTableComponent = React.memo( flowTargeted, id, indexPattern, + ip, isInspect, limit, loading, loadPage, + setIpDetailsTablesActivePageToZero, showMorePagesIndicator, topNFlowSort, totalCount, type, + updateIpDetailsTableActivePage, + updateNetworkPageTableActivePage, updateTopNFlowLimit, updateTopNFlowSort, - updateTableActivePage, }) => { + useEffect(() => { + setIpDetailsTablesActivePageToZero(null); + }, [ip]); const onChange = (criteria: Criteria, tableType: networkModel.TopNTableType) => { if (criteria.sort != null) { const splitField = criteria.sort.field.split('.'); @@ -120,14 +132,23 @@ const NetworkTopNFlowTableComponent = React.memo( }; let tableType: networkModel.TopNTableType; - let headerTitle: string; - - if (flowTargeted === FlowTargetNew.source) { - headerTitle = i18n.SOURCE_IP; - tableType = networkModel.NetworkTableType.topNFlowSource; + const headerTitle: string = + flowTargeted === FlowTargetSourceDest.source ? i18n.SOURCE_IP : i18n.DESTINATION_IP; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let updateTableActivePage: any; + if (type === networkModel.NetworkType.page) { + tableType = + flowTargeted === FlowTargetSourceDest.source + ? networkModel.NetworkTableType.topNFlowSource + : networkModel.NetworkTableType.topNFlowDestination; + updateTableActivePage = updateNetworkPageTableActivePage; } else { - headerTitle = i18n.DESTINATION_IP; - tableType = networkModel.NetworkTableType.topNFlowDestination; + tableType = + flowTargeted === FlowTargetSourceDest.source + ? networkModel.IpDetailsTableType.topNFlowSource + : networkModel.IpDetailsTableType.topNFlowDestination; + updateTableActivePage = updateIpDetailsTableActivePage; } const field = @@ -139,12 +160,7 @@ const NetworkTopNFlowTableComponent = React.memo( return ( ( NetworkTopNFlowTableComponent.displayName = 'NetworkTopNFlowTableComponent'; const mapStateToProps = (state: State, ownProps: OwnProps) => - networkSelectors.topNFlowSelector(ownProps.flowTargeted); + networkSelectors.topNFlowSelector(ownProps.flowTargeted, ownProps.type); export const NetworkTopNFlowTable = connect( mapStateToProps, { + setIpDetailsTablesActivePageToZero: networkActions.setIpDetailsTablesActivePageToZero, updateTopNFlowLimit: networkActions.updateTopNFlowLimit, updateTopNFlowSort: networkActions.updateTopNFlowSort, - updateTableActivePage: networkActions.updateNetworkPageTableActivePage, + updateNetworkPageTableActivePage: networkActions.updateNetworkPageTableActivePage, + updateIpDetailsTableActivePage: networkActions.updateIpDetailsTableActivePage, } )(NetworkTopNFlowTableComponent); diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/mock.ts b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/mock.ts index 9e7cb9e8b4b6d..9ef63bf6d3167 100644 --- a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/mock.ts +++ b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/mock.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { NetworkTopNFlowData, FlowTarget } from '../../../../graphql/types'; +import { NetworkTopNFlowData, FlowTargetSourceDest } from '../../../../graphql/types'; export const mockData: { NetworkTopNFlow: NetworkTopNFlowData } = { NetworkTopNFlow: { @@ -30,7 +30,7 @@ export const mockData: { NetworkTopNFlow: NetworkTopNFlowData } = { region_iso_code: ['US-CA'], region_name: ['California'], }, - flowTarget: FlowTarget.source, + flowTarget: FlowTargetSourceDest.source, }, }, destination: null, @@ -63,7 +63,7 @@ export const mockData: { NetworkTopNFlow: NetworkTopNFlowData } = { region_iso_code: ['MY-10'], region_name: ['Selangor'], }, - flowTarget: FlowTarget.source, + flowTarget: FlowTargetSourceDest.source, }, }, destination: null, diff --git a/x-pack/legacy/plugins/siem/public/components/paginated_table/index.tsx b/x-pack/legacy/plugins/siem/public/components/paginated_table/index.tsx index 257ee03c944bf..1529648b7133e 100644 --- a/x-pack/legacy/plugins/siem/public/components/paginated_table/index.tsx +++ b/x-pack/legacy/plugins/siem/public/components/paginated_table/index.tsx @@ -21,10 +21,12 @@ import styled, { css } from 'styled-components'; import { Direction } from '../../graphql/types'; import { AuthTableColumns } from '../page/hosts/authentications_table'; -import { DomainsColumns } from '../page/network/domains_table/columns'; import { HostsTableColumns } from '../page/hosts/hosts_table'; import { NetworkDnsColumns } from '../page/network/network_dns_table/columns'; -import { NetworkTopNFlowColumns } from '../page/network/network_top_n_flow_table/columns'; +import { + NetworkTopNFlowColumns, + NetworkTopNFlowColumnsIpDetails, +} from '../page/network/network_top_n_flow_table/columns'; import { TlsColumns } from '../page/network/tls_table/columns'; import { UncommonProcessTableColumns } from '../page/hosts/uncommon_process_table'; import { UsersColumns } from '../page/network/users_table/columns'; @@ -63,12 +65,11 @@ declare type HostsTableColumnsTest = [ declare type BasicTableColumns = | AuthTableColumns - | DomainsColumns - | DomainsColumns | HostsTableColumns | HostsTableColumnsTest | NetworkDnsColumns | NetworkTopNFlowColumns + | NetworkTopNFlowColumnsIpDetails | TlsColumns | UncommonProcessTableColumns | UsersColumns; diff --git a/x-pack/legacy/plugins/siem/public/containers/domains/index.gql_query.ts b/x-pack/legacy/plugins/siem/public/containers/domains/index.gql_query.ts deleted file mode 100644 index 8266a83bcad5e..0000000000000 --- a/x-pack/legacy/plugins/siem/public/containers/domains/index.gql_query.ts +++ /dev/null @@ -1,71 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import gql from 'graphql-tag'; - -export const domainsQuery = gql` - query GetDomainsQuery( - $sourceId: ID! - $filterQuery: String - $flowDirection: FlowDirection! - $flowTarget: FlowTarget! - $ip: String! - $pagination: PaginationInputPaginated! - $sort: DomainsSortField! - $timerange: TimerangeInput! - $defaultIndex: [String!]! - $inspect: Boolean! - ) { - source(id: $sourceId) { - id - Domains( - filterQuery: $filterQuery - flowDirection: $flowDirection - flowTarget: $flowTarget - ip: $ip - pagination: $pagination - sort: $sort - timerange: $timerange - defaultIndex: $defaultIndex - ) { - totalCount - edges { - node { - source { - uniqueIpCount - domainName - firstSeen - lastSeen - } - destination { - uniqueIpCount - domainName - firstSeen - lastSeen - } - network { - bytes - direction - packets - } - } - cursor { - value - } - } - pageInfo { - activePage - fakeTotalCount - showMorePagesIndicator - } - inspect @include(if: $inspect) { - dsl - response - } - } - } - } -`; diff --git a/x-pack/legacy/plugins/siem/public/containers/domains/index.tsx b/x-pack/legacy/plugins/siem/public/containers/domains/index.tsx deleted file mode 100644 index 8aca3bc2086ac..0000000000000 --- a/x-pack/legacy/plugins/siem/public/containers/domains/index.tsx +++ /dev/null @@ -1,175 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { getOr } from 'lodash/fp'; -import React from 'react'; -import { Query } from 'react-apollo'; -import { connect } from 'react-redux'; - -import chrome from 'ui/chrome'; -import { DEFAULT_INDEX_KEY } from '../../../common/constants'; -import { - DomainsEdges, - DomainsSortField, - GetDomainsQuery, - FlowDirection, - FlowTarget, - PageInfoPaginated, -} from '../../graphql/types'; -import { inputsModel, networkModel, networkSelectors, State, inputsSelectors } from '../../store'; -import { createFilter, getDefaultFetchPolicy } from '../helpers'; -import { generateTablePaginationOptions } from '../../components/paginated_table/helpers'; -import { QueryTemplatePaginated, QueryTemplatePaginatedProps } from '../query_template_paginated'; -import { domainsQuery } from './index.gql_query'; - -const ID = 'domainsQuery'; - -export interface DomainsArgs { - domains: DomainsEdges[]; - id: string; - inspect: inputsModel.InspectQuery; - isInspected: boolean; - loading: boolean; - loadPage: (newActivePage: number) => void; - pageInfo: PageInfoPaginated; - refetch: inputsModel.Refetch; - totalCount: number; -} - -export interface OwnProps extends QueryTemplatePaginatedProps { - children: (args: DomainsArgs) => React.ReactNode; - flowTarget: FlowTarget; - ip: string; - type: networkModel.NetworkType; -} - -export interface DomainsComponentReduxProps { - activePage: number; - domainsSortField: DomainsSortField; - flowDirection: FlowDirection; - isInspected: boolean; - limit: number; -} - -type DomainsProps = OwnProps & DomainsComponentReduxProps; - -class DomainsComponentQuery extends QueryTemplatePaginated< - DomainsProps, - GetDomainsQuery.Query, - GetDomainsQuery.Variables -> { - public render() { - const { - activePage, - children, - domainsSortField, - endDate, - filterQuery, - flowDirection, - flowTarget, - id = ID, - ip, - isInspected, - limit, - skip, - sourceId, - startDate, - } = this.props; - const variables: GetDomainsQuery.Variables = { - defaultIndex: chrome.getUiSettingsClient().get(DEFAULT_INDEX_KEY), - filterQuery: createFilter(filterQuery), - flowDirection, - flowTarget, - inspect: isInspected, - ip, - pagination: generateTablePaginationOptions(activePage, limit), - sort: domainsSortField, - sourceId, - timerange: { - interval: '12h', - from: startDate!, - to: endDate!, - }, - }; - return ( - - query={domainsQuery} - fetchPolicy={getDefaultFetchPolicy()} - notifyOnNetworkStatusChange - skip={skip} - variables={{ - defaultIndex: chrome.getUiSettingsClient().get(DEFAULT_INDEX_KEY), - filterQuery: createFilter(filterQuery), - flowDirection, - flowTarget, - inspect: isInspected, - ip, - pagination: generateTablePaginationOptions(activePage, limit), - sort: domainsSortField, - sourceId, - timerange: { - interval: '12h', - from: startDate!, - to: endDate!, - }, - }} - > - {({ data, loading, fetchMore, networkStatus, refetch }) => { - const domains = getOr([], `source.Domains.edges`, data); - this.setFetchMore(fetchMore); - this.setFetchMoreOptions((newActivePage: number) => ({ - variables: { - pagination: generateTablePaginationOptions(newActivePage, limit), - }, - updateQuery: (prev, { fetchMoreResult }) => { - if (!fetchMoreResult) { - return prev; - } - return { - ...fetchMoreResult, - source: { - ...fetchMoreResult.source, - Domains: { - ...fetchMoreResult.source.Domains, - edges: [...fetchMoreResult.source.Domains.edges], - }, - }, - }; - }, - })); - const isLoading = this.isItAValidLoading(loading, variables, networkStatus); - return children({ - domains, - id, - inspect: getOr(null, 'source.Domains.inspect', data), - isInspected, - loading: isLoading, - loadPage: this.wrappedLoadMore, - pageInfo: getOr({}, 'source.Domains.pageInfo', data), - refetch: this.memoizedRefetchQuery(variables, limit, refetch), - totalCount: getOr(-1, 'source.Domains.totalCount', data), - }); - }} - - ); - } -} - -const makeMapStateToProps = () => { - const getDomainsSelector = networkSelectors.domainsSelector(); - const getQuery = inputsSelectors.globalQueryByIdSelector(); - const mapStateToProps = (state: State, { id = ID }: OwnProps) => { - const { isInspected } = getQuery(state, id); - return { - ...getDomainsSelector(state), - isInspected, - }; - }; - - return mapStateToProps; -}; - -export const DomainsQuery = connect(makeMapStateToProps)(DomainsComponentQuery); diff --git a/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.gql_query.ts b/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.gql_query.ts index 3b15cea33ef31..81a94bc94652b 100644 --- a/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.gql_query.ts +++ b/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.gql_query.ts @@ -9,10 +9,11 @@ import gql from 'graphql-tag'; export const networkTopNFlowQuery = gql` query GetNetworkTopNFlowQuery( $sourceId: ID! + $ip: String $filterQuery: String $pagination: PaginationInputPaginated! $sort: NetworkTopNFlowSortField! - $flowTarget: FlowTargetNew! + $flowTarget: FlowTargetSourceDest! $timerange: TimerangeInput! $defaultIndex: [String!]! $inspect: Boolean! @@ -22,6 +23,7 @@ export const networkTopNFlowQuery = gql` NetworkTopNFlow( filterQuery: $filterQuery flowTarget: $flowTarget + ip: $ip pagination: $pagination sort: $sort timerange: $timerange diff --git a/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.tsx b/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.tsx index 6b7864d48ed08..eba9c5640fb58 100644 --- a/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.tsx +++ b/x-pack/legacy/plugins/siem/public/containers/network_top_n_flow/index.tsx @@ -12,7 +12,7 @@ import { connect } from 'react-redux'; import chrome from 'ui/chrome'; import { DEFAULT_INDEX_KEY } from '../../../common/constants'; import { - FlowTargetNew, + FlowTargetSourceDest, GetNetworkTopNFlowQuery, NetworkTopNFlowEdges, NetworkTopNFlowSortField, @@ -28,6 +28,7 @@ const ID = 'networkTopNFlowQuery'; export interface NetworkTopNFlowArgs { id: string; + ip?: string; inspect: inputsModel.InspectQuery; isInspected: boolean; loading: boolean; @@ -40,7 +41,8 @@ export interface NetworkTopNFlowArgs { export interface OwnProps extends QueryTemplatePaginatedProps { children: (args: NetworkTopNFlowArgs) => React.ReactNode; - flowTarget: FlowTargetNew; + flowTarget: FlowTargetSourceDest; + ip?: string; type: networkModel.NetworkType; } @@ -66,6 +68,7 @@ class NetworkTopNFlowComponentQuery extends QueryTemplatePaginated< flowTarget, filterQuery, id = `${ID}-${flowTarget}`, + ip, isInspected, limit, skip, @@ -78,6 +81,7 @@ class NetworkTopNFlowComponentQuery extends QueryTemplatePaginated< filterQuery: createFilter(filterQuery), flowTarget, inspect: isInspected, + ip, pagination: generateTablePaginationOptions(activePage, limit), sort: topNFlowSort, sourceId, @@ -136,8 +140,11 @@ class NetworkTopNFlowComponentQuery extends QueryTemplatePaginated< } } -const mapStateToProps = (state: State, { flowTarget, id = `${ID}-${flowTarget}` }: OwnProps) => { - const getNetworkTopNFlowSelector = networkSelectors.topNFlowSelector(flowTarget); +const mapStateToProps = ( + state: State, + { flowTarget, id = `${ID}-${flowTarget}`, type }: OwnProps +) => { + const getNetworkTopNFlowSelector = networkSelectors.topNFlowSelector(flowTarget, type); const getQuery = inputsSelectors.globalQueryByIdSelector(); const { isInspected } = getQuery(state, id); return { diff --git a/x-pack/legacy/plugins/siem/public/graphql/introspection.json b/x-pack/legacy/plugins/siem/public/graphql/introspection.json index 9173bbe5295f7..b8bdf27bed7fa 100644 --- a/x-pack/legacy/plugins/siem/public/graphql/introspection.json +++ b/x-pack/legacy/plugins/siem/public/graphql/introspection.json @@ -1193,113 +1193,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "Domains", - "description": "", - "args": [ - { - "name": "filterQuery", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "id", - "description": "", - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "defaultValue": null - }, - { - "name": "ip", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "pagination", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "PaginationInputPaginated", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "sort", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "DomainsSortField", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "flowDirection", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "FlowDirection", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "flowTarget", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "FlowTarget", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "timerange", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "INPUT_OBJECT", "name": "TimerangeInput", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "defaultIndex", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "DomainsData", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "Tls", "description": "", @@ -1665,13 +1558,19 @@ "type": { "kind": "SCALAR", "name": "String", "ofType": null }, "defaultValue": null }, + { + "name": "ip", + "description": "", + "type": { "kind": "SCALAR", "name": "String", "ofType": null }, + "defaultValue": null + }, { "name": "flowTarget", "description": "", "type": { "kind": "NON_NULL", "name": null, - "ofType": { "kind": "ENUM", "name": "FlowTargetNew", "ofType": null } + "ofType": { "kind": "ENUM", "name": "FlowTargetSourceDest", "ofType": null } }, "defaultValue": null }, @@ -6384,7 +6283,7 @@ }, { "kind": "INPUT_OBJECT", - "name": "DomainsSortField", + "name": "TlsSortField", "description": "", "fields": null, "inputFields": [ @@ -6394,7 +6293,7 @@ "type": { "kind": "NON_NULL", "name": null, - "ofType": { "kind": "ENUM", "name": "DomainsFields", "ofType": null } + "ofType": { "kind": "ENUM", "name": "TlsFields", "ofType": null } }, "defaultValue": null }, @@ -6415,60 +6314,13 @@ }, { "kind": "ENUM", - "name": "DomainsFields", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "domainName", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "direction", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "bytes", "description": "", "isDeprecated": false, "deprecationReason": null }, - { - "name": "packets", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "uniqueIpCount", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "FlowDirection", + "name": "TlsFields", "description": "", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [ - { - "name": "uniDirectional", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "biDirectional", - "description": "", - "isDeprecated": false, - "deprecationReason": null - } + { "name": "_id", "description": "", "isDeprecated": false, "deprecationReason": null } ], "possibleTypes": null }, @@ -6494,7 +6346,7 @@ }, { "kind": "OBJECT", - "name": "DomainsData", + "name": "TlsData", "description": "", "fields": [ { @@ -6510,7 +6362,7 @@ "ofType": { "kind": "NON_NULL", "name": null, - "ofType": { "kind": "OBJECT", "name": "DomainsEdges", "ofType": null } + "ofType": { "kind": "OBJECT", "name": "TlsEdges", "ofType": null } } } }, @@ -6557,7 +6409,7 @@ }, { "kind": "OBJECT", - "name": "DomainsEdges", + "name": "TlsEdges", "description": "", "fields": [ { @@ -6567,7 +6419,7 @@ "type": { "kind": "NON_NULL", "name": null, - "ofType": { "kind": "OBJECT", "name": "DomainsNode", "ofType": null } + "ofType": { "kind": "OBJECT", "name": "TlsNode", "ofType": null } }, "isDeprecated": false, "deprecationReason": null @@ -6592,7 +6444,7 @@ }, { "kind": "OBJECT", - "name": "DomainsNode", + "name": "TlsNode", "description": "", "fields": [ { @@ -6612,42 +6464,82 @@ "deprecationReason": null }, { - "name": "source", + "name": "alternativeNames", "description": "", "args": [], - "type": { "kind": "OBJECT", "name": "DomainsItem", "ofType": null }, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } + } + }, "isDeprecated": false, "deprecationReason": null }, { - "name": "destination", + "name": "notAfter", "description": "", "args": [], - "type": { "kind": "OBJECT", "name": "DomainsItem", "ofType": null }, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } + } + }, "isDeprecated": false, "deprecationReason": null }, { - "name": "client", + "name": "commonNames", "description": "", "args": [], - "type": { "kind": "OBJECT", "name": "DomainsItem", "ofType": null }, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } + } + }, "isDeprecated": false, "deprecationReason": null }, { - "name": "server", + "name": "ja3", "description": "", "args": [], - "type": { "kind": "OBJECT", "name": "DomainsItem", "ofType": null }, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } + } + }, "isDeprecated": false, "deprecationReason": null }, { - "name": "network", + "name": "issuerNames", "description": "", "args": [], - "type": { "kind": "OBJECT", "name": "DomainsNetworkField", "ofType": null }, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } + } + }, "isDeprecated": false, "deprecationReason": null } @@ -6658,419 +6550,23 @@ "possibleTypes": null }, { - "kind": "OBJECT", - "name": "DomainsItem", + "kind": "INPUT_OBJECT", + "name": "UsersSortField", "description": "", - "fields": [ - { - "name": "uniqueIpCount", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "domainName", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, + "fields": null, + "inputFields": [ { - "name": "firstSeen", + "name": "field", "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Date", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { "kind": "ENUM", "name": "UsersFields", "ofType": null } + }, + "defaultValue": null }, { - "name": "lastSeen", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Date", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DomainsNetworkField", - "description": "", - "fields": [ - { - "name": "bytes", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "packets", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Float", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transport", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "direction", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "NetworkDirectionEcs", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "NetworkDirectionEcs", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "inbound", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "outbound", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "internal", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "external", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "incoming", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "outgoing", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "listening", - "description": "", - "isDeprecated": false, - "deprecationReason": null - }, - { "name": "unknown", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "TlsSortField", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "field", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "TlsFields", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "direction", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "Direction", "ofType": null } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "TlsFields", - "description": "", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { "name": "_id", "description": "", "isDeprecated": false, "deprecationReason": null } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsData", - "description": "", - "fields": [ - { - "name": "edges", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "TlsEdges", "ofType": null } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCount", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "Float", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pageInfo", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "PageInfoPaginated", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inspect", - "description": "", - "args": [], - "type": { "kind": "OBJECT", "name": "Inspect", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsEdges", - "description": "", - "fields": [ - { - "name": "node", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "TlsNode", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cursor", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "OBJECT", "name": "CursorType", "ofType": null } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TlsNode", - "description": "", - "fields": [ - { - "name": "_id", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "String", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timestamp", - "description": "", - "args": [], - "type": { "kind": "SCALAR", "name": "Date", "ofType": null }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "alternativeNames", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "notAfter", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "commonNames", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ja3", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "issuerNames", - "description": "", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "SCALAR", "name": "String", "ofType": null } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "UsersSortField", - "description": "", - "fields": null, - "inputFields": [ - { - "name": "field", - "description": "", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { "kind": "ENUM", "name": "UsersFields", "ofType": null } - }, - "defaultValue": null - }, - { - "name": "direction", + "name": "direction", "description": "", "type": { "kind": "NON_NULL", @@ -7690,7 +7186,7 @@ }, { "kind": "ENUM", - "name": "FlowTargetNew", + "name": "FlowTargetSourceDest", "description": "", "fields": null, "inputFields": null, @@ -8025,7 +7521,7 @@ "name": "flowTarget", "description": "", "args": [], - "type": { "kind": "ENUM", "name": "FlowTarget", "ofType": null }, + "type": { "kind": "ENUM", "name": "FlowTargetSourceDest", "ofType": null }, "isDeprecated": false, "deprecationReason": null } @@ -11283,6 +10779,83 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "ENUM", + "name": "NetworkDirectionEcs", + "description": "", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "inbound", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outbound", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "internal", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "external", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "incoming", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outgoing", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "listening", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { "name": "unknown", "description": "", "isDeprecated": false, "deprecationReason": null } + ], + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "FlowDirection", + "description": "", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "uniDirectional", + "description": "", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "biDirectional", + "description": "", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, { "kind": "INPUT_OBJECT", "name": "FavoriteTimelineInput", diff --git a/x-pack/legacy/plugins/siem/public/graphql/types.ts b/x-pack/legacy/plugins/siem/public/graphql/types.ts index 2d82dcb7b30f3..7514259caa2a7 100644 --- a/x-pack/legacy/plugins/siem/public/graphql/types.ts +++ b/x-pack/legacy/plugins/siem/public/graphql/types.ts @@ -67,12 +67,6 @@ export interface HostsSortField { direction: Direction; } -export interface DomainsSortField { - field: DomainsFields; - - direction: Direction; -} - export interface TlsSortField { field: TlsFields; @@ -245,17 +239,8 @@ export enum HostsFields { lastSeen = 'lastSeen', } -export enum DomainsFields { - domainName = 'domainName', - direction = 'direction', - bytes = 'bytes', - packets = 'packets', - uniqueIpCount = 'uniqueIpCount', -} - -export enum FlowDirection { - uniDirectional = 'uniDirectional', - biDirectional = 'biDirectional', +export enum TlsFields { + _id = '_id', } export enum FlowTarget { @@ -265,27 +250,12 @@ export enum FlowTarget { source = 'source', } -export enum NetworkDirectionEcs { - inbound = 'inbound', - outbound = 'outbound', - internal = 'internal', - external = 'external', - incoming = 'incoming', - outgoing = 'outgoing', - listening = 'listening', - unknown = 'unknown', -} - -export enum TlsFields { - _id = '_id', -} - export enum UsersFields { name = 'name', count = 'count', } -export enum FlowTargetNew { +export enum FlowTargetSourceDest { destination = 'destination', source = 'source', } @@ -313,6 +283,22 @@ export enum SortFieldTimeline { created = 'created', } +export enum NetworkDirectionEcs { + inbound = 'inbound', + outbound = 'outbound', + internal = 'internal', + external = 'external', + incoming = 'incoming', + outgoing = 'outgoing', + listening = 'listening', + unknown = 'unknown', +} + +export enum FlowDirection { + uniDirectional = 'uniDirectional', + biDirectional = 'biDirectional', +} + export type ToStringArray = string[]; export type Date = string; @@ -431,8 +417,6 @@ export interface Source { IpOverview?: Maybe; - Domains: DomainsData; - Tls: TlsData; Users: UsersData; @@ -1328,58 +1312,6 @@ export interface AutonomousSystemOrganization { name?: Maybe; } -export interface DomainsData { - edges: DomainsEdges[]; - - totalCount: number; - - pageInfo: PageInfoPaginated; - - inspect?: Maybe; -} - -export interface DomainsEdges { - node: DomainsNode; - - cursor: CursorType; -} - -export interface DomainsNode { - _id?: Maybe; - - timestamp?: Maybe; - - source?: Maybe; - - destination?: Maybe; - - client?: Maybe; - - server?: Maybe; - - network?: Maybe; -} - -export interface DomainsItem { - uniqueIpCount?: Maybe; - - domainName?: Maybe; - - firstSeen?: Maybe; - - lastSeen?: Maybe; -} - -export interface DomainsNetworkField { - bytes?: Maybe; - - packets?: Maybe; - - transport?: Maybe; - - direction?: Maybe; -} - export interface TlsData { edges: TlsEdges[]; @@ -1573,7 +1505,7 @@ export interface AutonomousSystemItem { export interface GeoItem { geo?: Maybe; - flowTarget?: Maybe; + flowTarget?: Maybe; } export interface TopNFlowItemDestination { @@ -2068,25 +2000,6 @@ export interface IpOverviewSourceArgs { defaultIndex: string[]; } -export interface DomainsSourceArgs { - filterQuery?: Maybe; - - id?: Maybe; - - ip: string; - - pagination: PaginationInputPaginated; - - sort: DomainsSortField; - - flowDirection: FlowDirection; - - flowTarget: FlowTarget; - - timerange: TimerangeInput; - - defaultIndex: string[]; -} export interface TlsSourceArgs { filterQuery?: Maybe; @@ -2153,7 +2066,9 @@ export interface NetworkTopNFlowSourceArgs { filterQuery?: Maybe; - flowTarget: FlowTargetNew; + ip?: Maybe; + + flowTarget: FlowTargetSourceDest; pagination: PaginationInputPaginated; @@ -2396,123 +2311,6 @@ export namespace GetAuthenticationsQuery { }; } -export namespace GetDomainsQuery { - export type Variables = { - sourceId: string; - filterQuery?: Maybe; - flowDirection: FlowDirection; - flowTarget: FlowTarget; - ip: string; - pagination: PaginationInputPaginated; - sort: DomainsSortField; - timerange: TimerangeInput; - defaultIndex: string[]; - inspect: boolean; - }; - - export type Query = { - __typename?: 'Query'; - - source: Source; - }; - - export type Source = { - __typename?: 'Source'; - - id: string; - - Domains: Domains; - }; - - export type Domains = { - __typename?: 'DomainsData'; - - totalCount: number; - - edges: Edges[]; - - pageInfo: PageInfo; - - inspect: Maybe; - }; - - export type Edges = { - __typename?: 'DomainsEdges'; - - node: Node; - - cursor: Cursor; - }; - - export type Node = { - __typename?: 'DomainsNode'; - - source: Maybe<_Source>; - - destination: Maybe; - - network: Maybe; - }; - - export type _Source = { - __typename?: 'DomainsItem'; - - uniqueIpCount: Maybe; - - domainName: Maybe; - - firstSeen: Maybe; - - lastSeen: Maybe; - }; - - export type Destination = { - __typename?: 'DomainsItem'; - - uniqueIpCount: Maybe; - - domainName: Maybe; - - firstSeen: Maybe; - - lastSeen: Maybe; - }; - - export type Network = { - __typename?: 'DomainsNetworkField'; - - bytes: Maybe; - - direction: Maybe; - - packets: Maybe; - }; - - export type Cursor = { - __typename?: 'CursorType'; - - value: Maybe; - }; - - export type PageInfo = { - __typename?: 'PageInfoPaginated'; - - activePage: number; - - fakeTotalCount: number; - - showMorePagesIndicator: boolean; - }; - - export type Inspect = { - __typename?: 'Inspect'; - - dsl: string[]; - - response: string[]; - }; -} - export namespace GetEventsOverTimeQuery { export type Variables = { sourceId: string; @@ -3276,10 +3074,11 @@ export namespace GetNetworkDnsQuery { export namespace GetNetworkTopNFlowQuery { export type Variables = { sourceId: string; + ip?: Maybe; filterQuery?: Maybe; pagination: PaginationInputPaginated; sort: NetworkTopNFlowSortField; - flowTarget: FlowTargetNew; + flowTarget: FlowTargetSourceDest; timerange: TimerangeInput; defaultIndex: string[]; inspect: boolean; @@ -3358,7 +3157,7 @@ export namespace GetNetworkTopNFlowQuery { geo: Maybe; - flowTarget: Maybe; + flowTarget: Maybe; }; export type Geo = { @@ -3406,7 +3205,7 @@ export namespace GetNetworkTopNFlowQuery { geo: Maybe<_Geo>; - flowTarget: Maybe; + flowTarget: Maybe; }; export type _Geo = { diff --git a/x-pack/legacy/plugins/siem/public/mock/global_state.ts b/x-pack/legacy/plugins/siem/public/mock/global_state.ts index 83fa30c97145f..02f098cb7b9a9 100644 --- a/x-pack/legacy/plugins/siem/public/mock/global_state.ts +++ b/x-pack/legacy/plugins/siem/public/mock/global_state.ts @@ -7,8 +7,6 @@ import { DEFAULT_TIMELINE_WIDTH } from '../components/timeline/body/helpers'; import { Direction, - DomainsFields, - FlowDirection, FlowTarget, HostsFields, NetworkDnsFields, @@ -16,7 +14,7 @@ import { TlsFields, UsersFields, } from '../graphql/types'; -import { State } from '../store'; +import { networkModel, State } from '../store'; import { defaultHeaders } from './header'; import { @@ -71,17 +69,17 @@ export const mockGlobalState: State = { network: { page: { queries: { - topNFlowSource: { + [networkModel.NetworkTableType.topNFlowSource]: { activePage: 0, limit: 10, topNFlowSort: { field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc }, }, - topNFlowDestination: { + [networkModel.NetworkTableType.topNFlowDestination]: { activePage: 0, limit: 10, topNFlowSort: { field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc }, }, - dns: { + [networkModel.NetworkTableType.dns]: { activePage: 0, limit: 10, dnsSortField: { field: NetworkDnsFields.queryCount, direction: Direction.desc }, @@ -96,18 +94,22 @@ export const mockGlobalState: State = { filterQueryDraft: null, flowTarget: FlowTarget.source, queries: { - domains: { + [networkModel.IpDetailsTableType.topNFlowSource]: { activePage: 0, limit: 10, - flowDirection: FlowDirection.uniDirectional, - domainsSortField: { field: DomainsFields.bytes, direction: Direction.desc }, + topNFlowSort: { field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc }, + }, + [networkModel.IpDetailsTableType.topNFlowDestination]: { + activePage: 0, + limit: 10, + topNFlowSort: { field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc }, }, - tls: { + [networkModel.IpDetailsTableType.tls]: { activePage: 0, limit: 10, tlsSortField: { field: TlsFields._id, direction: Direction.desc }, }, - users: { + [networkModel.IpDetailsTableType.users]: { activePage: 0, limit: 10, usersSortField: { field: UsersFields.name, direction: Direction.asc }, diff --git a/x-pack/legacy/plugins/siem/public/pages/network/ip_details.tsx b/x-pack/legacy/plugins/siem/public/pages/network/ip_details.tsx index d815b37496bf1..80fcce20a4982 100644 --- a/x-pack/legacy/plugins/siem/public/pages/network/ip_details.tsx +++ b/x-pack/legacy/plugins/siem/public/pages/network/ip_details.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiHorizontalRule, EuiSpacer } from '@elastic/eui'; +import { EuiHorizontalRule, EuiSpacer, EuiFlexItem } from '@elastic/eui'; import { getOr } from 'lodash/fp'; import React from 'react'; import { connect } from 'react-redux'; @@ -17,23 +17,23 @@ import { HeaderPage } from '../../components/header_page'; import { LastEventTime } from '../../components/last_event_time'; import { getNetworkUrl } from '../../components/link_to/redirect_to_network'; import { manageQuery } from '../../components/page/manage_query'; -import { DomainsTable } from '../../components/page/network/domains_table'; import { FlowTargetSelectConnected } from '../../components/page/network/flow_target_select_connected'; import { IpOverview } from '../../components/page/network/ip_overview'; import { UsersTable } from '../../components/page/network/users_table'; import { TlsTable } from '../../components/page/network/tls_table'; -import { DomainsQuery } from '../../containers/domains'; import { IpOverviewQuery } from '../../containers/ip_overview'; import { indicesExistOrDataTemporarilyUnavailable, WithSource } from '../../containers/source'; import { TlsQuery } from '../../containers/tls'; import { UsersQuery } from '../../containers/users'; -import { LastEventIndexKey } from '../../graphql/types'; +import { FlowTargetSourceDest, LastEventIndexKey } from '../../graphql/types'; import { decodeIpv6 } from '../../lib/helpers'; import { networkModel, networkSelectors, State } from '../../store'; import { setAbsoluteRangeDatePicker as dispatchAbsoluteRangeDatePicker } from '../../store/inputs/actions'; import { NetworkKql } from './kql'; import { NetworkEmptyPage } from './network_empty_page'; +import { NetworkTopNFlowQuery } from '../../containers/network_top_n_flow'; +import { NetworkTopNFlowTable } from '../../components/page/network/network_top_n_flow_table'; import * as i18n from './translations'; import { IPDetailsComponentProps } from './types'; import { AnomalyTableProvider } from '../../components/ml/anomaly/anomaly_table_provider'; @@ -41,11 +41,12 @@ import { scoreIntervalToDateTime } from '../../components/ml/score/score_interva import { AnomaliesNetworkTable } from '../../components/ml/tables/anomalies_network_table'; import { networkToCriteria } from '../../components/ml/criteria/network_to_criteria'; import { SpyRoute } from '../../utils/route/spy_routes'; +import { ConditionalFlexGroup } from '../../pages/network/navigation/conditional_flex_group'; -const DomainsTableManage = manageQuery(DomainsTable); const TlsTableManage = manageQuery(TlsTable); const UsersTableManage = manageQuery(UsersTable); const IpOverviewManage = manageQuery(IpOverview); +const NetworkTopNFlowTableManage = manageQuery(NetworkTopNFlowTable); export const IPDetailsComponent = pure( ({ @@ -127,46 +128,92 @@ export const IPDetailsComponent = pure( - - {({ - id, - inspect, - isInspected, - domains, - totalCount, - pageInfo, - loading, - loadPage, - refetch, - }) => ( - + + - )} - + > + {({ + id, + inspect, + isInspected, + loading, + loadPage, + networkTopNFlow, + pageInfo, + refetch, + totalCount, + }) => ( + + )} + + + + + + {({ + id, + inspect, + isInspected, + loading, + loadPage, + networkTopNFlow, + pageInfo, + refetch, + totalCount, + }) => ( + + )} + + + diff --git a/x-pack/legacy/plugins/siem/public/pages/network/navigation/network_routes.tsx b/x-pack/legacy/plugins/siem/public/pages/network/navigation/network_routes.tsx index 08d9252357b37..0ed652804cc8e 100644 --- a/x-pack/legacy/plugins/siem/public/pages/network/navigation/network_routes.tsx +++ b/x-pack/legacy/plugins/siem/public/pages/network/navigation/network_routes.tsx @@ -8,7 +8,7 @@ import React, { useCallback } from 'react'; import { Route, Switch } from 'react-router-dom'; import { EuiFlexItem } from '@elastic/eui'; -import { FlowTargetNew } from '../../../graphql/types'; +import { FlowTargetSourceDest } from '../../../graphql/types'; import { scoreIntervalToDateTime } from '../../../components/ml/score/score_interval_to_datetime'; import { IPsQueryTabBody } from './ips_query_tab_body'; @@ -70,11 +70,11 @@ export const NetworkRoutes = ({ render={() => ( - + - + )} diff --git a/x-pack/legacy/plugins/siem/public/pages/network/navigation/types.ts b/x-pack/legacy/plugins/siem/public/pages/network/navigation/types.ts index 838aaea38608f..bcdc0ef7aa790 100644 --- a/x-pack/legacy/plugins/siem/public/pages/network/navigation/types.ts +++ b/x-pack/legacy/plugins/siem/public/pages/network/navigation/types.ts @@ -7,7 +7,7 @@ import { StaticIndexPattern } from 'ui/index_patterns'; import { NavTab } from '../../../components/navigation/types'; -import { FlowTargetNew } from '../../../graphql/types'; +import { FlowTargetSourceDest } from '../../../graphql/types'; import { networkModel } from '../../../store'; import { ESTermQuery } from '../../../../common/typed_json'; import { NarrowDateRange } from '../../../components/ml/types'; @@ -25,7 +25,7 @@ export type DnsQueryTabBodyProps = QueryTabBodyProps & GlobalTimeArgs; export type IPsQueryTabBodyProps = QueryTabBodyProps & GlobalTimeArgs & { indexPattern: StaticIndexPattern; - flowTarget: FlowTargetNew; + flowTarget: FlowTargetSourceDest; }; export type AnomaliesQueryTabBodyProps = QueryTabBodyProps & diff --git a/x-pack/legacy/plugins/siem/public/store/network/actions.ts b/x-pack/legacy/plugins/siem/public/store/network/actions.ts index 7408037b9f835..c2c71a4643e6a 100644 --- a/x-pack/legacy/plugins/siem/public/store/network/actions.ts +++ b/x-pack/legacy/plugins/siem/public/store/network/actions.ts @@ -7,8 +7,6 @@ import actionCreatorFactory from 'typescript-fsa'; import { - DomainsSortField, - FlowDirection, FlowTarget, NetworkDnsSortField, NetworkTopNFlowSortField, @@ -17,59 +15,61 @@ import { } from '../../graphql/types'; import { KueryFilterQuery, networkModel, SerializedFilterQuery } from '../model'; -import { IpDetailsTableType, NetworkTableType, NetworkType } from './model'; - const actionCreator = actionCreatorFactory('x-pack/siem/local/network'); export const updateNetworkPageTableActivePage = actionCreator<{ activePage: number; - tableType: NetworkTableType; + tableType: networkModel.NetworkTableType; }>('UPDATE_NETWORK_PAGE_TABLE_ACTIVE_PAGE'); -export const setNetworkTablesActivePageToZero = actionCreator( - 'SET_NETWORK_TABLES_ACTIVE_PAGE_TO_ZERO' -); - export const updateIpDetailsTableActivePage = actionCreator<{ activePage: number; - tableType: IpDetailsTableType; + tableType: networkModel.IpDetailsTableType; }>('UPDATE_NETWORK_DETAILS_TABLE_ACTIVE_PAGE'); +export const setIpDetailsTablesActivePageToZero = actionCreator( + 'SET_IP_DETAILS_TABLES_ACTIVE_PAGE_TO_ZERO' +); + +export const setNetworkTablesActivePageToZero = actionCreator( + 'SET_NETWORK_TABLES_ACTIVE_PAGE_TO_ZERO' +); + export const updateDnsLimit = actionCreator<{ limit: number; - networkType: NetworkType; + networkType: networkModel.NetworkType; }>('UPDATE_DNS_LIMIT'); export const updateDnsSort = actionCreator<{ dnsSortField: NetworkDnsSortField; - networkType: NetworkType; + networkType: networkModel.NetworkType; }>('UPDATE_DNS_SORT'); export const updateIsPtrIncluded = actionCreator<{ isPtrIncluded: boolean; - networkType: NetworkType; + networkType: networkModel.NetworkType; }>('UPDATE_DNS_IS_PTR_INCLUDED'); export const updateTopNFlowLimit = actionCreator<{ limit: number; - networkType: NetworkType; + networkType: networkModel.NetworkType; tableType: networkModel.TopNTableType; }>('UPDATE_TOP_N_FLOW_LIMIT'); export const updateTopNFlowSort = actionCreator<{ topNFlowSort: NetworkTopNFlowSortField; - networkType: NetworkType; - tableType: networkModel.NetworkTableType; + networkType: networkModel.NetworkType; + tableType: networkModel.TopNTableType; }>('UPDATE_TOP_N_FLOW_SORT'); export const setNetworkFilterQueryDraft = actionCreator<{ filterQueryDraft: KueryFilterQuery; - networkType: NetworkType; + networkType: networkModel.NetworkType; }>('SET_NETWORK_FILTER_QUERY_DRAFT'); export const applyNetworkFilterQuery = actionCreator<{ filterQuery: SerializedFilterQuery; - networkType: NetworkType; + networkType: networkModel.NetworkType; }>('APPLY_NETWORK_FILTER_QUERY'); // IP Details Actions @@ -77,19 +77,6 @@ export const updateIpDetailsFlowTarget = actionCreator<{ flowTarget: FlowTarget; }>('UPDATE_IP_DETAILS_TARGET'); -// Domains Table Actions -export const updateDomainsLimit = actionCreator<{ - limit: number; -}>('UPDATE_DOMAINS_LIMIT'); - -export const updateDomainsFlowDirection = actionCreator<{ - flowDirection: FlowDirection; -}>('UPDATE_DOMAINS_DIRECTION'); - -export const updateDomainsSort = actionCreator<{ - domainsSortField: DomainsSortField; -}>('UPDATE_DOMAINS_SORT'); - // TLS Table Actions export const updateTlsSort = actionCreator<{ tlsSortField: TlsSortField; diff --git a/x-pack/legacy/plugins/siem/public/store/network/helpers.test.ts b/x-pack/legacy/plugins/siem/public/store/network/helpers.test.ts index 91b918cb45436..13c98eb800916 100644 --- a/x-pack/legacy/plugins/siem/public/store/network/helpers.test.ts +++ b/x-pack/legacy/plugins/siem/public/store/network/helpers.test.ts @@ -8,8 +8,6 @@ import { Direction, NetworkTopNFlowFields, NetworkDnsFields, - FlowDirection, - DomainsFields, TlsFields, UsersFields, FlowTarget, @@ -52,12 +50,19 @@ export const mockNetworkState: NetworkModel = { }, details: { queries: { - [IpDetailsTableType.domains]: { - activePage: 8, - flowDirection: FlowDirection.uniDirectional, + [IpDetailsTableType.topNFlowSource]: { + activePage: 7, limit: DEFAULT_TABLE_LIMIT, - domainsSortField: { - field: DomainsFields.bytes, + topNFlowSort: { + field: NetworkTopNFlowFields.bytes_out, + direction: Direction.desc, + }, + }, + [IpDetailsTableType.topNFlowDestination]: { + activePage: 3, + limit: DEFAULT_TABLE_LIMIT, + topNFlowSort: { + field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc, }, }, @@ -88,17 +93,17 @@ describe('Network redux store', () => { describe('#setNetworkQueriesActivePageToZero', () => { test('set activePage to zero for all queries in hosts page ', () => { expect(setNetworkQueriesActivePageToZero(mockNetworkState, NetworkType.page)).toEqual({ - topNFlowSource: { + [NetworkTableType.topNFlowSource]: { activePage: 0, limit: 10, topNFlowSort: { field: 'bytes_out', direction: 'desc' }, }, - topNFlowDestination: { + [NetworkTableType.topNFlowDestination]: { activePage: 0, limit: 10, topNFlowSort: { field: 'bytes_out', direction: 'desc' }, }, - dns: { + [NetworkTableType.dns]: { activePage: 0, limit: 10, dnsSortField: { field: 'uniqueDomains', direction: 'desc' }, @@ -109,14 +114,26 @@ describe('Network redux store', () => { test('set activePage to zero for all queries in host details ', () => { expect(setNetworkQueriesActivePageToZero(mockNetworkState, NetworkType.details)).toEqual({ - domains: { + [IpDetailsTableType.topNFlowSource]: { + activePage: 0, + limit: 10, + topNFlowSort: { field: 'bytes_out', direction: 'desc' }, + }, + [IpDetailsTableType.topNFlowDestination]: { + activePage: 0, + limit: 10, + topNFlowSort: { field: 'bytes_out', direction: 'desc' }, + }, + [IpDetailsTableType.tls]: { + activePage: 0, + limit: 10, + tlsSortField: { field: '_id', direction: 'desc' }, + }, + [IpDetailsTableType.users]: { activePage: 0, - flowDirection: 'uniDirectional', limit: 10, - domainsSortField: { field: 'bytes', direction: 'desc' }, + usersSortField: { field: 'name', direction: 'asc' }, }, - tls: { activePage: 0, limit: 10, tlsSortField: { field: '_id', direction: 'desc' } }, - users: { activePage: 0, limit: 10, usersSortField: { field: 'name', direction: 'asc' } }, }); }); }); diff --git a/x-pack/legacy/plugins/siem/public/store/network/helpers.ts b/x-pack/legacy/plugins/siem/public/store/network/helpers.ts index 2d19ad4f44213..b9876457625fb 100644 --- a/x-pack/legacy/plugins/siem/public/store/network/helpers.ts +++ b/x-pack/legacy/plugins/siem/public/store/network/helpers.ts @@ -34,8 +34,12 @@ export const setNetworkDetailsQueriesActivePageToZero = ( state: NetworkModel ): IpOverviewQueries => ({ ...state.details.queries, - [IpDetailsTableType.domains]: { - ...state.details.queries[IpDetailsTableType.domains], + [IpDetailsTableType.topNFlowSource]: { + ...state.details.queries[IpDetailsTableType.topNFlowSource], + activePage: DEFAULT_TABLE_ACTIVE_PAGE, + }, + [IpDetailsTableType.topNFlowDestination]: { + ...state.details.queries[IpDetailsTableType.topNFlowDestination], activePage: DEFAULT_TABLE_ACTIVE_PAGE, }, [IpDetailsTableType.tls]: { diff --git a/x-pack/legacy/plugins/siem/public/store/network/model.ts b/x-pack/legacy/plugins/siem/public/store/network/model.ts index 8fefb6099da6b..541a2fe1a02e3 100644 --- a/x-pack/legacy/plugins/siem/public/store/network/model.ts +++ b/x-pack/legacy/plugins/siem/public/store/network/model.ts @@ -5,15 +5,13 @@ */ import { - DomainsSortField, - FlowDirection, FlowTarget, NetworkDnsSortField, NetworkTopNFlowSortField, TlsSortField, UsersSortField, } from '../../graphql/types'; -import { KueryFilterQuery, networkModel, SerializedFilterQuery } from '../model'; +import { KueryFilterQuery, SerializedFilterQuery } from '../model'; export enum NetworkType { page = 'page', @@ -27,11 +25,14 @@ export enum NetworkTableType { } export type TopNTableType = - | networkModel.NetworkTableType.topNFlowDestination - | networkModel.NetworkTableType.topNFlowSource; + | NetworkTableType.topNFlowDestination + | NetworkTableType.topNFlowSource + | IpDetailsTableType.topNFlowDestination + | IpDetailsTableType.topNFlowSource; export enum IpDetailsTableType { - domains = 'domains', + topNFlowSource = 'topNFlowSourceIp', + topNFlowDestination = 'topNFlowDestinationIp', tls = 'tls', users = 'users', } @@ -64,10 +65,6 @@ export interface NetworkPageModel { } // IP Details Models -export interface DomainsQuery extends BasicQueryPaginated { - flowDirection: FlowDirection; - domainsSortField: DomainsSortField; -} export interface TlsQuery extends BasicQueryPaginated { tlsSortField: TlsSortField; @@ -78,7 +75,8 @@ export interface UsersQuery extends BasicQueryPaginated { } export interface IpOverviewQueries { - [IpDetailsTableType.domains]: DomainsQuery; + [IpDetailsTableType.topNFlowSource]: TopNFlowQuery; + [IpDetailsTableType.topNFlowDestination]: TopNFlowQuery; [IpDetailsTableType.tls]: TlsQuery; [IpDetailsTableType.users]: UsersQuery; } diff --git a/x-pack/legacy/plugins/siem/public/store/network/reducer.ts b/x-pack/legacy/plugins/siem/public/store/network/reducer.ts index 84f0772ee4ec6..df7d496714530 100644 --- a/x-pack/legacy/plugins/siem/public/store/network/reducer.ts +++ b/x-pack/legacy/plugins/siem/public/store/network/reducer.ts @@ -8,8 +8,6 @@ import { reducerWithInitialState } from 'typescript-fsa-reducers'; import { Direction, - DomainsFields, - FlowDirection, FlowTarget, NetworkDnsFields, NetworkTopNFlowFields, @@ -20,29 +18,27 @@ import { DEFAULT_TABLE_ACTIVE_PAGE, DEFAULT_TABLE_LIMIT } from '../constants'; import { applyNetworkFilterQuery, + setIpDetailsTablesActivePageToZero, setNetworkFilterQueryDraft, + setNetworkTablesActivePageToZero, updateDnsLimit, updateDnsSort, - updateDomainsFlowDirection, - updateDomainsLimit, - updateTlsLimit, - updateDomainsSort, updateIpDetailsFlowTarget, - updateIsPtrIncluded, updateIpDetailsTableActivePage, + updateIsPtrIncluded, updateNetworkPageTableActivePage, + updateTlsLimit, + updateTlsSort, updateTopNFlowLimit, updateTopNFlowSort, - updateTlsSort, updateUsersLimit, updateUsersSort, - setNetworkTablesActivePageToZero, } from './actions'; import { IpDetailsTableType, NetworkModel, NetworkTableType, NetworkType } from './model'; import { - setNetworkQueriesActivePageToZero, - setNetworkPageQueriesActivePageToZero, setNetworkDetailsQueriesActivePageToZero, + setNetworkPageQueriesActivePageToZero, + setNetworkQueriesActivePageToZero, } from './helpers'; export type NetworkState = NetworkModel; @@ -81,12 +77,19 @@ export const initialNetworkState: NetworkState = { }, details: { queries: { - [IpDetailsTableType.domains]: { + [IpDetailsTableType.topNFlowSource]: { activePage: DEFAULT_TABLE_ACTIVE_PAGE, - flowDirection: FlowDirection.uniDirectional, limit: DEFAULT_TABLE_LIMIT, - domainsSortField: { - field: DomainsFields.bytes, + topNFlowSort: { + field: NetworkTopNFlowFields.bytes_out, + direction: Direction.desc, + }, + }, + [IpDetailsTableType.topNFlowDestination]: { + activePage: DEFAULT_TABLE_ACTIVE_PAGE, + limit: DEFAULT_TABLE_LIMIT, + topNFlowSort: { + field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc, }, }, @@ -125,6 +128,13 @@ export const networkReducer = reducerWithInitialState(initialNetworkState) queries: setNetworkDetailsQueriesActivePageToZero(state), }, })) + .case(setIpDetailsTablesActivePageToZero, state => ({ + ...state, + details: { + ...state.details, + queries: setNetworkDetailsQueriesActivePageToZero(state), + }, + })) .case(updateIpDetailsTableActivePage, (state, { activePage, tableType }) => ({ ...state, [NetworkType.details]: { @@ -190,32 +200,84 @@ export const networkReducer = reducerWithInitialState(initialNetworkState) }, }, })) - .case(updateTopNFlowLimit, (state, { limit, networkType, tableType }) => ({ - ...state, - [networkType]: { - ...state[networkType], - queries: { - ...state[networkType].queries, - [tableType]: { - ...state[NetworkType.page].queries[tableType], - limit, + .case(updateTopNFlowLimit, (state, { limit, networkType, tableType }) => { + if ( + networkType === NetworkType.page && + (tableType === NetworkTableType.topNFlowSource || + tableType === NetworkTableType.topNFlowDestination) + ) { + return { + ...state, + [networkType]: { + ...state[networkType], + queries: { + ...state[networkType].queries, + [tableType]: { + ...state[networkType].queries[tableType], + limit, + }, + }, }, - }, - }, - })) - .case(updateTopNFlowSort, (state, { topNFlowSort, networkType, tableType }) => ({ - ...state, - [networkType]: { - ...state[networkType], - queries: { - ...state[networkType].queries, - [tableType]: { - ...state[NetworkType.page].queries[tableType], - topNFlowSort, + }; + } else if ( + tableType === IpDetailsTableType.topNFlowDestination || + tableType === IpDetailsTableType.topNFlowSource + ) { + return { + ...state, + [NetworkType.details]: { + ...state[NetworkType.details], + queries: { + ...state[NetworkType.details].queries, + [tableType]: { + ...state[NetworkType.details].queries[tableType], + limit, + }, + }, }, - }, - }, - })) + }; + } + return state; + }) + .case(updateTopNFlowSort, (state, { topNFlowSort, networkType, tableType }) => { + if ( + networkType === NetworkType.page && + (tableType === NetworkTableType.topNFlowSource || + tableType === NetworkTableType.topNFlowDestination) + ) { + return { + ...state, + [networkType]: { + ...state[networkType], + queries: { + ...state[networkType].queries, + [tableType]: { + ...state[networkType].queries[tableType], + topNFlowSort, + }, + }, + }, + }; + } else if ( + tableType === IpDetailsTableType.topNFlowDestination || + tableType === IpDetailsTableType.topNFlowSource + ) { + return { + ...state, + [NetworkType.details]: { + ...state[NetworkType.details], + queries: { + ...state[NetworkType.details].queries, + [tableType]: { + ...state[NetworkType.details].queries[tableType], + topNFlowSort, + }, + }, + }, + }; + } + return state; + }) .case(setNetworkFilterQueryDraft, (state, { filterQueryDraft, networkType }) => ({ ...state, [networkType]: { @@ -239,19 +301,6 @@ export const networkReducer = reducerWithInitialState(initialNetworkState) flowTarget, }, })) - .case(updateDomainsLimit, (state, { limit }) => ({ - ...state, - [NetworkType.details]: { - ...state[NetworkType.details], - queries: { - ...state[NetworkType.details].queries, - [IpDetailsTableType.domains]: { - ...state[NetworkType.details].queries.domains, - limit, - }, - }, - }, - })) .case(updateTlsLimit, (state, { limit }) => ({ ...state, [NetworkType.details]: { @@ -265,32 +314,6 @@ export const networkReducer = reducerWithInitialState(initialNetworkState) }, }, })) - .case(updateDomainsFlowDirection, (state, { flowDirection }) => ({ - ...state, - [NetworkType.details]: { - ...state[NetworkType.details], - queries: { - ...state[NetworkType.details].queries, - [IpDetailsTableType.domains]: { - ...state[NetworkType.details].queries.domains, - flowDirection, - }, - }, - }, - })) - .case(updateDomainsSort, (state, { domainsSortField }) => ({ - ...state, - [NetworkType.details]: { - ...state[NetworkType.details], - queries: { - ...state[NetworkType.details].queries, - [IpDetailsTableType.domains]: { - ...state[NetworkType.details].queries.domains, - domainsSortField, - }, - }, - }, - })) .case(updateTlsSort, (state, { tlsSortField }) => ({ ...state, [NetworkType.details]: { diff --git a/x-pack/legacy/plugins/siem/public/store/network/selectors.ts b/x-pack/legacy/plugins/siem/public/store/network/selectors.ts index 3a11949b3990b..c2d1fa2988e1d 100644 --- a/x-pack/legacy/plugins/siem/public/store/network/selectors.ts +++ b/x-pack/legacy/plugins/siem/public/store/network/selectors.ts @@ -10,8 +10,8 @@ import { createSelector } from 'reselect'; import { isFromKueryExpressionValid } from '../../lib/keury'; import { State } from '../reducer'; -import { NetworkDetailsModel, NetworkPageModel, NetworkType } from './model'; -import { FlowTargetNew } from '../../graphql/types'; +import { IpDetailsTableType, NetworkDetailsModel, NetworkPageModel, NetworkType } from './model'; +import { FlowTargetSourceDest } from '../../graphql/types'; const selectNetworkPage = (state: State): NetworkPageModel => state.network.page; @@ -31,14 +31,24 @@ export enum NetworkTableType { topNFlowSource = 'topNFlowSource', topNFlowDestination = 'topNFlowDestination', } -export const topNFlowSelector = (flowTarget: FlowTargetNew) => - createSelector( - selectNetworkPage, +export const topNFlowSelector = (flowTarget: FlowTargetSourceDest, networkType: NetworkType) => { + if (networkType === NetworkType.page) { + return createSelector( + selectNetworkPage, + network => + flowTarget === FlowTargetSourceDest.source + ? network.queries[NetworkTableType.topNFlowSource] + : network.queries[NetworkTableType.topNFlowDestination] + ); + } + return createSelector( + selectNetworkDetails, network => - flowTarget === FlowTargetNew.source - ? network.queries[NetworkTableType.topNFlowSource] - : network.queries[NetworkTableType.topNFlowDestination] + flowTarget === FlowTargetSourceDest.source + ? network.queries[IpDetailsTableType.topNFlowSource] + : network.queries[IpDetailsTableType.topNFlowDestination] ); +}; // Filter Query Selectors export const networkFilterQueryAsJson = () => @@ -79,12 +89,6 @@ export const ipDetailsFlowTargetSelector = () => network => network.flowTarget ); -export const domainsSelector = () => - createSelector( - selectNetworkDetails, - network => network.queries.domains - ); - export const tlsSelector = () => createSelector( selectNetworkDetails, diff --git a/x-pack/legacy/plugins/siem/server/graphql/ip_details/resolvers.ts b/x-pack/legacy/plugins/siem/server/graphql/ip_details/resolvers.ts index 102cc4d0ae08c..fb65883de12d8 100644 --- a/x-pack/legacy/plugins/siem/server/graphql/ip_details/resolvers.ts +++ b/x-pack/legacy/plugins/siem/server/graphql/ip_details/resolvers.ts @@ -6,12 +6,7 @@ import { SourceResolvers } from '../../graphql/types'; import { AppResolverOf, ChildResolverOf } from '../../lib/framework'; -import { - DomainsRequestOptions, - IpDetails, - TlsRequestOptions, - UsersRequestOptions, -} from '../../lib/ip_details'; +import { IpDetails, TlsRequestOptions, UsersRequestOptions } from '../../lib/ip_details'; import { createOptions, createOptionsPaginated } from '../../utils/build_query/create_options'; import { QuerySourceResolver } from '../sources/resolvers'; @@ -20,11 +15,6 @@ export type QueryIpOverviewResolver = ChildResolverOf< QuerySourceResolver >; -export type QueryDomainsResolver = ChildResolverOf< - AppResolverOf, - QuerySourceResolver ->; - export type QueryTlsResolver = ChildResolverOf< AppResolverOf, QuerySourceResolver @@ -44,7 +34,6 @@ export const createIpDetailsResolvers = ( ): { Source: { IpOverview: QueryIpOverviewResolver; - Domains: QueryDomainsResolver; Tls: QueryTlsResolver; Users: QueryUsersResolver; }; @@ -54,16 +43,6 @@ export const createIpDetailsResolvers = ( const options = { ...createOptions(source, args, info), ip: args.ip }; return libs.ipDetails.getIpOverview(req, options); }, - async Domains(source, args, { req }, info) { - const options: DomainsRequestOptions = { - ...createOptionsPaginated(source, args, info), - ip: args.ip, - domainsSortField: args.sort, - flowTarget: args.flowTarget, - flowDirection: args.flowDirection, - }; - return libs.ipDetails.getDomains(req, options); - }, async Tls(source, args, { req }, info) { const options: TlsRequestOptions = { ...createOptionsPaginated(source, args, info), diff --git a/x-pack/legacy/plugins/siem/server/graphql/ip_details/schema.gql.ts b/x-pack/legacy/plugins/siem/server/graphql/ip_details/schema.gql.ts index 1566c54c7d56b..3acbed3977d73 100644 --- a/x-pack/legacy/plugins/siem/server/graphql/ip_details/schema.gql.ts +++ b/x-pack/legacy/plugins/siem/server/graphql/ip_details/schema.gql.ts @@ -42,71 +42,6 @@ const ipOverviewSchema = gql` } `; -const domainsSchema = gql` - enum DomainsFields { - domainName - direction - bytes - packets - uniqueIpCount - } - - input DomainsSortField { - field: DomainsFields! - direction: Direction! - } - - type DomainsNetworkField { - bytes: Float - packets: Float - transport: String - direction: [NetworkDirectionEcs!] - } - - type DomainsItem { - uniqueIpCount: Float - domainName: String - firstSeen: Date - lastSeen: Date - } - - type DomainsNode { - _id: String - timestamp: Date - source: DomainsItem - destination: DomainsItem - client: DomainsItem - server: DomainsItem - network: DomainsNetworkField - } - - type DomainsEdges { - node: DomainsNode! - cursor: CursorType! - } - - type DomainsData { - edges: [DomainsEdges!]! - totalCount: Float! - pageInfo: PageInfoPaginated! - inspect: Inspect - } - - extend type Source { - Domains( - filterQuery: String - id: String - ip: String! - pagination: PaginationInputPaginated! - sort: DomainsSortField! - flowDirection: FlowDirection! - flowTarget: FlowTarget! - timerange: TimerangeInput! - defaultIndex: [String!]! - ): DomainsData! - } -`; - const tlsSchema = gql` enum TlsFields { _id @@ -199,4 +134,4 @@ const usersSchema = gql` } `; -export const ipDetailsSchemas = [ipOverviewSchema, domainsSchema, tlsSchema, usersSchema]; +export const ipDetailsSchemas = [ipOverviewSchema, tlsSchema, usersSchema]; diff --git a/x-pack/legacy/plugins/siem/server/graphql/network/resolvers.ts b/x-pack/legacy/plugins/siem/server/graphql/network/resolvers.ts index eb358395bd5b6..23a8d4694ccae 100644 --- a/x-pack/legacy/plugins/siem/server/graphql/network/resolvers.ts +++ b/x-pack/legacy/plugins/siem/server/graphql/network/resolvers.ts @@ -38,6 +38,7 @@ export const createNetworkResolvers = ( ...createOptionsPaginated(source, args, info), flowTarget: args.flowTarget, networkTopNFlowSort: args.sort, + ip: args.ip, }; return libs.network.getNetworkTopNFlow(req, options); }, diff --git a/x-pack/legacy/plugins/siem/server/graphql/network/schema.gql.ts b/x-pack/legacy/plugins/siem/server/graphql/network/schema.gql.ts index 52be207fcd871..acd19b6efc0ed 100644 --- a/x-pack/legacy/plugins/siem/server/graphql/network/schema.gql.ts +++ b/x-pack/legacy/plugins/siem/server/graphql/network/schema.gql.ts @@ -25,7 +25,7 @@ export const networkSchema = gql` type GeoItem { geo: GeoEcsFields - flowTarget: FlowTarget + flowTarget: FlowTargetSourceDest } type AutonomousSystemItem { @@ -122,7 +122,8 @@ export const networkSchema = gql` NetworkTopNFlow( id: String filterQuery: String - flowTarget: FlowTargetNew! + ip: String + flowTarget: FlowTargetSourceDest! pagination: PaginationInputPaginated! sort: NetworkTopNFlowSortField! timerange: TimerangeInput! diff --git a/x-pack/legacy/plugins/siem/server/graphql/types.ts b/x-pack/legacy/plugins/siem/server/graphql/types.ts index ae17c9ef067b6..8505d3efc4341 100644 --- a/x-pack/legacy/plugins/siem/server/graphql/types.ts +++ b/x-pack/legacy/plugins/siem/server/graphql/types.ts @@ -69,12 +69,6 @@ export interface HostsSortField { direction: Direction; } -export interface DomainsSortField { - field: DomainsFields; - - direction: Direction; -} - export interface TlsSortField { field: TlsFields; @@ -247,17 +241,8 @@ export enum HostsFields { lastSeen = 'lastSeen', } -export enum DomainsFields { - domainName = 'domainName', - direction = 'direction', - bytes = 'bytes', - packets = 'packets', - uniqueIpCount = 'uniqueIpCount', -} - -export enum FlowDirection { - uniDirectional = 'uniDirectional', - biDirectional = 'biDirectional', +export enum TlsFields { + _id = '_id', } export enum FlowTarget { @@ -267,27 +252,12 @@ export enum FlowTarget { source = 'source', } -export enum NetworkDirectionEcs { - inbound = 'inbound', - outbound = 'outbound', - internal = 'internal', - external = 'external', - incoming = 'incoming', - outgoing = 'outgoing', - listening = 'listening', - unknown = 'unknown', -} - -export enum TlsFields { - _id = '_id', -} - export enum UsersFields { name = 'name', count = 'count', } -export enum FlowTargetNew { +export enum FlowTargetSourceDest { destination = 'destination', source = 'source', } @@ -315,6 +285,22 @@ export enum SortFieldTimeline { created = 'created', } +export enum NetworkDirectionEcs { + inbound = 'inbound', + outbound = 'outbound', + internal = 'internal', + external = 'external', + incoming = 'incoming', + outgoing = 'outgoing', + listening = 'listening', + unknown = 'unknown', +} + +export enum FlowDirection { + uniDirectional = 'uniDirectional', + biDirectional = 'biDirectional', +} + export type ToStringArray = string[] | string; export type Date = string; @@ -433,8 +419,6 @@ export interface Source { IpOverview?: Maybe; - Domains: DomainsData; - Tls: TlsData; Users: UsersData; @@ -1330,58 +1314,6 @@ export interface AutonomousSystemOrganization { name?: Maybe; } -export interface DomainsData { - edges: DomainsEdges[]; - - totalCount: number; - - pageInfo: PageInfoPaginated; - - inspect?: Maybe; -} - -export interface DomainsEdges { - node: DomainsNode; - - cursor: CursorType; -} - -export interface DomainsNode { - _id?: Maybe; - - timestamp?: Maybe; - - source?: Maybe; - - destination?: Maybe; - - client?: Maybe; - - server?: Maybe; - - network?: Maybe; -} - -export interface DomainsItem { - uniqueIpCount?: Maybe; - - domainName?: Maybe; - - firstSeen?: Maybe; - - lastSeen?: Maybe; -} - -export interface DomainsNetworkField { - bytes?: Maybe; - - packets?: Maybe; - - transport?: Maybe; - - direction?: Maybe; -} - export interface TlsData { edges: TlsEdges[]; @@ -1575,7 +1507,7 @@ export interface AutonomousSystemItem { export interface GeoItem { geo?: Maybe; - flowTarget?: Maybe; + flowTarget?: Maybe; } export interface TopNFlowItemDestination { @@ -2070,25 +2002,6 @@ export interface IpOverviewSourceArgs { defaultIndex: string[]; } -export interface DomainsSourceArgs { - filterQuery?: Maybe; - - id?: Maybe; - - ip: string; - - pagination: PaginationInputPaginated; - - sort: DomainsSortField; - - flowDirection: FlowDirection; - - flowTarget: FlowTarget; - - timerange: TimerangeInput; - - defaultIndex: string[]; -} export interface TlsSourceArgs { filterQuery?: Maybe; @@ -2155,7 +2068,9 @@ export interface NetworkTopNFlowSourceArgs { filterQuery?: Maybe; - flowTarget: FlowTargetNew; + ip?: Maybe; + + flowTarget: FlowTargetSourceDest; pagination: PaginationInputPaginated; @@ -2618,8 +2533,6 @@ export namespace SourceResolvers { IpOverview?: IpOverviewResolver, TypeParent, TContext>; - Domains?: DomainsResolver; - Tls?: TlsResolver; Users?: UsersResolver; @@ -2796,32 +2709,6 @@ export namespace SourceResolvers { defaultIndex: string[]; } - export type DomainsResolver = Resolver< - R, - Parent, - TContext, - DomainsArgs - >; - export interface DomainsArgs { - filterQuery?: Maybe; - - id?: Maybe; - - ip: string; - - pagination: PaginationInputPaginated; - - sort: DomainsSortField; - - flowDirection: FlowDirection; - - flowTarget: FlowTarget; - - timerange: TimerangeInput; - - defaultIndex: string[]; - } - export type TlsResolver = Resolver< R, Parent, @@ -2925,7 +2812,9 @@ export namespace SourceResolvers { filterQuery?: Maybe; - flowTarget: FlowTargetNew; + ip?: Maybe; + + flowTarget: FlowTargetSourceDest; pagination: PaginationInputPaginated; @@ -5892,178 +5781,6 @@ export namespace AutonomousSystemOrganizationResolvers { > = Resolver; } -export namespace DomainsDataResolvers { - export interface Resolvers { - edges?: EdgesResolver; - - totalCount?: TotalCountResolver; - - pageInfo?: PageInfoResolver; - - inspect?: InspectResolver, TypeParent, TContext>; - } - - export type EdgesResolver< - R = DomainsEdges[], - Parent = DomainsData, - TContext = SiemContext - > = Resolver; - export type TotalCountResolver< - R = number, - Parent = DomainsData, - TContext = SiemContext - > = Resolver; - export type PageInfoResolver< - R = PageInfoPaginated, - Parent = DomainsData, - TContext = SiemContext - > = Resolver; - export type InspectResolver< - R = Maybe, - Parent = DomainsData, - TContext = SiemContext - > = Resolver; -} - -export namespace DomainsEdgesResolvers { - export interface Resolvers { - node?: NodeResolver; - - cursor?: CursorResolver; - } - - export type NodeResolver< - R = DomainsNode, - Parent = DomainsEdges, - TContext = SiemContext - > = Resolver; - export type CursorResolver< - R = CursorType, - Parent = DomainsEdges, - TContext = SiemContext - > = Resolver; -} - -export namespace DomainsNodeResolvers { - export interface Resolvers { - _id?: _IdResolver, TypeParent, TContext>; - - timestamp?: TimestampResolver, TypeParent, TContext>; - - source?: SourceResolver, TypeParent, TContext>; - - destination?: DestinationResolver, TypeParent, TContext>; - - client?: ClientResolver, TypeParent, TContext>; - - server?: ServerResolver, TypeParent, TContext>; - - network?: NetworkResolver, TypeParent, TContext>; - } - - export type _IdResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; - export type TimestampResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; - export type SourceResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; - export type DestinationResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; - export type ClientResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; - export type ServerResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; - export type NetworkResolver< - R = Maybe, - Parent = DomainsNode, - TContext = SiemContext - > = Resolver; -} - -export namespace DomainsItemResolvers { - export interface Resolvers { - uniqueIpCount?: UniqueIpCountResolver, TypeParent, TContext>; - - domainName?: DomainNameResolver, TypeParent, TContext>; - - firstSeen?: FirstSeenResolver, TypeParent, TContext>; - - lastSeen?: LastSeenResolver, TypeParent, TContext>; - } - - export type UniqueIpCountResolver< - R = Maybe, - Parent = DomainsItem, - TContext = SiemContext - > = Resolver; - export type DomainNameResolver< - R = Maybe, - Parent = DomainsItem, - TContext = SiemContext - > = Resolver; - export type FirstSeenResolver< - R = Maybe, - Parent = DomainsItem, - TContext = SiemContext - > = Resolver; - export type LastSeenResolver< - R = Maybe, - Parent = DomainsItem, - TContext = SiemContext - > = Resolver; -} - -export namespace DomainsNetworkFieldResolvers { - export interface Resolvers { - bytes?: BytesResolver, TypeParent, TContext>; - - packets?: PacketsResolver, TypeParent, TContext>; - - transport?: TransportResolver, TypeParent, TContext>; - - direction?: DirectionResolver, TypeParent, TContext>; - } - - export type BytesResolver< - R = Maybe, - Parent = DomainsNetworkField, - TContext = SiemContext - > = Resolver; - export type PacketsResolver< - R = Maybe, - Parent = DomainsNetworkField, - TContext = SiemContext - > = Resolver; - export type TransportResolver< - R = Maybe, - Parent = DomainsNetworkField, - TContext = SiemContext - > = Resolver; - export type DirectionResolver< - R = Maybe, - Parent = DomainsNetworkField, - TContext = SiemContext - > = Resolver; -} - export namespace TlsDataResolvers { export interface Resolvers { edges?: EdgesResolver; @@ -6743,7 +6460,7 @@ export namespace GeoItemResolvers { export interface Resolvers { geo?: GeoResolver, TypeParent, TContext>; - flowTarget?: FlowTargetResolver, TypeParent, TContext>; + flowTarget?: FlowTargetResolver, TypeParent, TContext>; } export type GeoResolver< @@ -6752,7 +6469,7 @@ export namespace GeoItemResolvers { TContext = SiemContext > = Resolver; export type FlowTargetResolver< - R = Maybe, + R = Maybe, Parent = GeoItem, TContext = SiemContext > = Resolver; @@ -8193,11 +7910,6 @@ export type IResolvers = { Overview?: OverviewResolvers.Resolvers; AutonomousSystem?: AutonomousSystemResolvers.Resolvers; AutonomousSystemOrganization?: AutonomousSystemOrganizationResolvers.Resolvers; - DomainsData?: DomainsDataResolvers.Resolvers; - DomainsEdges?: DomainsEdgesResolvers.Resolvers; - DomainsNode?: DomainsNodeResolvers.Resolvers; - DomainsItem?: DomainsItemResolvers.Resolvers; - DomainsNetworkField?: DomainsNetworkFieldResolvers.Resolvers; TlsData?: TlsDataResolvers.Resolvers; TlsEdges?: TlsEdgesResolvers.Resolvers; TlsNode?: TlsNodeResolvers.Resolvers; diff --git a/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.test.ts b/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.test.ts index 09eed2af8a980..6493a3e05bfc9 100644 --- a/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.test.ts +++ b/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.test.ts @@ -5,21 +5,13 @@ */ import { FlowTarget } from '../../graphql/types'; -import { - formatDomainsEdges, - getIpOverviewAgg, - getIpOverviewHostAgg, - getUsersEdges, -} from './elasticsearch_adapter'; +import { getIpOverviewAgg, getIpOverviewHostAgg, getUsersEdges } from './elasticsearch_adapter'; import { formattedDestination, formattedEmptySource, formattedHost, formattedSource, - mockDomainsResponseBuckets, - mockFormattedDestination, - mockFormattedSource, mockFormattedUsersEdges, mockUsersData, responseAggs, @@ -51,18 +43,6 @@ describe('elasticsearch_adapter', () => { }); }); - describe('#getDomains', () => { - test('will return a source correctly', () => { - const source = formatDomainsEdges(mockDomainsResponseBuckets, FlowTarget.source); - expect(source).toEqual(mockFormattedSource); - }); - - test('will return a destination correctly', () => { - const destination = formatDomainsEdges(mockDomainsResponseBuckets, FlowTarget.destination); - expect(destination).toEqual(mockFormattedDestination); - }); - }); - describe('#getUsers', () => { test('will format edges correctly', () => { // @ts-ignore Re-work `DatabaseSearchResponse` types as mock ES Response won't match diff --git a/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.ts b/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.ts index cb781021b7e61..5443ff62f6227 100644 --- a/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.ts +++ b/x-pack/legacy/plugins/siem/server/lib/ip_details/elasticsearch_adapter.ts @@ -8,9 +8,6 @@ import { get, getOr } from 'lodash/fp'; import { AutonomousSystem, - DomainsData, - DomainsEdges, - FlowTarget, GeoEcsFields, HostEcsFields, IpOverviewData, @@ -23,16 +20,9 @@ import { inspectStringifyObject } from '../../utils/build_query'; import { DatabaseSearchResponse, FrameworkAdapter, FrameworkRequest } from '../framework'; import { TermAggregation } from '../types'; import { DEFAULT_MAX_TABLE_QUERY_SIZE } from '../../../common/constants'; -import { - DomainsRequestOptions, - IpOverviewRequestOptions, - TlsRequestOptions, - UsersRequestOptions, -} from './index'; -import { buildDomainsQuery } from './query_domains.dsl'; +import { IpOverviewRequestOptions, TlsRequestOptions, UsersRequestOptions } from './index'; import { buildOverviewQuery } from './query_overview.dsl'; import { - DomainsBuckets, IpDetailsAdapter, IpOverviewHit, OverviewHit, @@ -72,42 +62,6 @@ export class ElasticsearchIpOverviewAdapter implements IpDetailsAdapter { }; } - public async getDomains( - request: FrameworkRequest, - options: DomainsRequestOptions - ): Promise { - if (options.pagination && options.pagination.querySize >= DEFAULT_MAX_TABLE_QUERY_SIZE) { - throw new Error(`No query size above ${DEFAULT_MAX_TABLE_QUERY_SIZE}`); - } - const dsl = buildDomainsQuery(options); - const response = await this.framework.callWithRequest( - request, - 'search', - dsl - ); - - const { activePage, cursorStart, fakePossibleCount, querySize } = options.pagination; - const totalCount = getOr(0, 'aggregations.domain_count.value', response); - const domainsEdges: DomainsEdges[] = getDomainsEdges(response, options); - const fakeTotalCount = fakePossibleCount <= totalCount ? fakePossibleCount : totalCount; - const edges = domainsEdges.splice(cursorStart, querySize - cursorStart); - const inspect = { - dsl: [inspectStringifyObject(dsl)], - response: [inspectStringifyObject(response)], - }; - const showMorePagesIndicator = totalCount > fakeTotalCount; - return { - edges, - inspect, - pageInfo: { - activePage: activePage ? activePage : 0, - fakeTotalCount, - showMorePagesIndicator, - }, - totalCount, - }; - } - public async getTls(request: FrameworkRequest, options: TlsRequestOptions): Promise { if (options.pagination && options.pagination.querySize >= DEFAULT_MAX_TABLE_QUERY_SIZE) { throw new Error(`No query size above ${DEFAULT_MAX_TABLE_QUERY_SIZE}`); @@ -219,40 +173,6 @@ export const getIpOverviewHostAgg = (overviewHostHit: OverviewHostHit | {}) => { }; }; -const getDomainsEdges = ( - response: DatabaseSearchResponse, - options: DomainsRequestOptions -): DomainsEdges[] => { - return formatDomainsEdges( - getOr([], `aggregations.${options.flowTarget}_domains.buckets`, response), - options.flowTarget - ); -}; - -export const formatDomainsEdges = ( - buckets: DomainsBuckets[], - flowTarget: FlowTarget -): DomainsEdges[] => - buckets.map((bucket: DomainsBuckets) => ({ - node: { - _id: bucket.key, - [flowTarget]: { - uniqueIpCount: getOrNumber('uniqueIpCount.value', bucket), - domainName: bucket.key, - lastSeen: get('lastSeen.value_as_string', bucket), - }, - network: { - bytes: getOrNumber('bytes.value', bucket), - packets: getOrNumber('packets.value', bucket), - direction: bucket.direction.buckets.map(bucketDir => bucketDir.key), - }, - }, - cursor: { - value: bucket.key, - tiebreaker: null, - }, - })); - const getTlsEdges = ( response: DatabaseSearchResponse, options: TlsRequestOptions @@ -281,14 +201,6 @@ export const formatTlsEdges = (buckets: TlsBuckets[]): TlsEdges[] => { }); }; -const getOrNumber = (path: string, bucket: DomainsBuckets) => { - const numb = get(path, bucket); - if (numb == null) { - return null; - } - return numb; -}; - export const getUsersEdges = ( response: DatabaseSearchResponse ): UsersEdges[] => diff --git a/x-pack/legacy/plugins/siem/server/lib/ip_details/index.ts b/x-pack/legacy/plugins/siem/server/lib/ip_details/index.ts index d06ce065931a7..4a16664790a05 100644 --- a/x-pack/legacy/plugins/siem/server/lib/ip_details/index.ts +++ b/x-pack/legacy/plugins/siem/server/lib/ip_details/index.ts @@ -5,9 +5,6 @@ */ import { - DomainsData, - DomainsSortField, - FlowDirection, FlowTarget, IpOverviewData, TlsSortField, @@ -25,13 +22,6 @@ export interface IpOverviewRequestOptions extends RequestOptions { ip: string; } -export interface DomainsRequestOptions extends RequestOptionsPaginated { - ip: string; - domainsSortField: DomainsSortField; - flowTarget: FlowTarget; - flowDirection: FlowDirection; -} - export interface TlsRequestOptions extends RequestOptionsPaginated { ip: string; tlsSortField: TlsSortField; @@ -53,13 +43,6 @@ export class IpDetails { return this.adapter.getIpDetails(req, options); } - public async getDomains( - req: FrameworkRequest, - options: DomainsRequestOptions - ): Promise { - return this.adapter.getDomains(req, options); - } - public async getTls(req: FrameworkRequest, options: TlsRequestOptions): Promise { return this.adapter.getTls(req, options); } diff --git a/x-pack/legacy/plugins/siem/server/lib/ip_details/mock.ts b/x-pack/legacy/plugins/siem/server/lib/ip_details/mock.ts index 9466f9d437fa3..1db86e7766fcf 100644 --- a/x-pack/legacy/plugins/siem/server/lib/ip_details/mock.ts +++ b/x-pack/legacy/plugins/siem/server/lib/ip_details/mock.ts @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { DomainsEdges, NetworkDirectionEcs, UsersEdges } from '../../graphql/types'; +import { UsersEdges } from '../../graphql/types'; -import { DomainsBuckets, IpOverviewHit, UsersResponse } from './types'; +import { IpOverviewHit, UsersResponse } from './types'; export const responseAggs: IpOverviewHit = { aggregations: { @@ -252,75 +252,6 @@ export const formattedEmptySource = { }, }; -export const mockDomainsResponseBuckets: DomainsBuckets[] = [ - { - key: 'example.com', - uniqueIpCount: { - value: 805, - }, - lastSeen: { - value: 1554920919000, - value_as_string: '2019-04-10T18:28:39.000Z', - }, - bytes: { - value: 974964465, - }, - packets: { - value: 16946245, - }, - direction: { - buckets: [ - { - key: NetworkDirectionEcs.outbound, - doc_count: 51668, - }, - { - key: NetworkDirectionEcs.inbound, - doc_count: 25681, - }, - ], - }, - }, -]; - -export const mockFormattedSource: DomainsEdges[] = [ - { - cursor: { tiebreaker: null, value: 'example.com' }, - node: { - _id: 'example.com', - network: { - bytes: 974964465, - direction: [NetworkDirectionEcs.outbound, NetworkDirectionEcs.inbound], - packets: 16946245, - }, - source: { - domainName: 'example.com', - lastSeen: '2019-04-10T18:28:39.000Z', - uniqueIpCount: 805, - }, - }, - }, -]; - -export const mockFormattedDestination: DomainsEdges[] = [ - { - cursor: { tiebreaker: null, value: 'example.com' }, - node: { - _id: 'example.com', - destination: { - domainName: 'example.com', - lastSeen: '2019-04-10T18:28:39.000Z', - uniqueIpCount: 805, - }, - network: { - bytes: 974964465, - direction: [NetworkDirectionEcs.outbound, NetworkDirectionEcs.inbound], - packets: 16946245, - }, - }, - }, -]; - export const mockUsersData: UsersResponse = { took: 445, timed_out: false, diff --git a/x-pack/legacy/plugins/siem/server/lib/ip_details/query_domains.dsl.ts b/x-pack/legacy/plugins/siem/server/lib/ip_details/query_domains.dsl.ts deleted file mode 100644 index e81a337458203..0000000000000 --- a/x-pack/legacy/plugins/siem/server/lib/ip_details/query_domains.dsl.ts +++ /dev/null @@ -1,204 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { - Direction, - DomainsFields, - DomainsSortField, - FlowDirection, - FlowTarget, -} from '../../graphql/types'; -import { assertUnreachable, createQueryFilterClauses } from '../../utils/build_query'; - -import { DomainsRequestOptions } from './index'; - -const getAggs = ( - ip: string, - flowTarget: FlowTarget, - flowDirection: FlowDirection, - domainsSortField: DomainsSortField, - querySize: number -) => { - return { - domain_count: { - cardinality: { - field: `${flowTarget}.domain`, - }, - }, - [`${flowTarget}_domains`]: { - terms: { - field: `${flowTarget}.domain`, - size: querySize, - order: { - ...getQueryOrder(domainsSortField), - }, - }, - aggs: { - lastSeen: { - max: { - field: '@timestamp', - }, - }, - bytes: { - sum: { - field: - flowDirection === FlowDirection.uniDirectional - ? 'network.bytes' - : `${flowTarget}.bytes`, - }, - }, - direction: { - terms: { - field: 'network.direction', - }, - }, - uniqueIpCount: { - cardinality: { - field: `${getOppositeField(flowTarget)}.ip`, - }, - }, - packets: { - sum: { - field: - flowDirection === FlowDirection.uniDirectional - ? 'network.packets' - : `${flowTarget}.packets`, - }, - }, - }, - }, - }; -}; - -const getUniDirectionalFilter = (flowDirection: FlowDirection) => - flowDirection === FlowDirection.uniDirectional - ? { - must_not: [ - { - exists: { - field: 'destination.bytes', - }, - }, - ], - } - : {}; - -const getBiDirectionalFilter = (flowDirection: FlowDirection, flowTarget: FlowTarget) => { - if ( - flowDirection === FlowDirection.biDirectional && - [FlowTarget.source, FlowTarget.destination].includes(flowTarget) - ) { - return [ - { - exists: { - field: 'source.bytes', - }, - }, - { - exists: { - field: 'destination.bytes', - }, - }, - ]; - } else if ( - flowDirection === FlowDirection.biDirectional && - [FlowTarget.client, FlowTarget.server].includes(flowTarget) - ) { - return [ - { - exists: { - field: 'client.bytes', - }, - }, - { - exists: { - field: 'server.bytes', - }, - }, - ]; - } - return []; -}; - -export const buildDomainsQuery = ({ - ip, - domainsSortField, - filterQuery, - flowDirection, - flowTarget, - pagination: { querySize }, - defaultIndex, - sourceConfiguration: { - fields: { timestamp }, - }, - timerange: { from, to }, -}: DomainsRequestOptions) => { - const filter = [ - ...createQueryFilterClauses(filterQuery), - { range: { [timestamp]: { gte: from, lte: to } } }, - { term: { [`${flowTarget}.ip`]: ip } }, - ...getBiDirectionalFilter(flowDirection, flowTarget), - ]; - - const dslQuery = { - allowNoIndices: true, - index: defaultIndex, - ignoreUnavailable: true, - body: { - aggs: { - ...getAggs(ip, flowTarget, flowDirection, domainsSortField, querySize), - }, - query: { - bool: { - filter, - ...getUniDirectionalFilter(flowDirection), - }, - }, - size: 0, - track_total_hits: false, - }, - }; - - return dslQuery; -}; - -const getOppositeField = (flowTarget: FlowTarget): FlowTarget => { - switch (flowTarget) { - case FlowTarget.source: - return FlowTarget.destination; - case FlowTarget.destination: - return FlowTarget.source; - case FlowTarget.server: - return FlowTarget.client; - case FlowTarget.client: - return FlowTarget.server; - default: - return assertUnreachable(flowTarget); - } -}; - -type QueryOrder = - | { _key: Direction } - | { bytes: Direction } - | { packets: Direction } - | { uniqueIpCount: Direction }; - -const getQueryOrder = (domainsSortField: DomainsSortField): QueryOrder => { - switch (domainsSortField.field) { - case DomainsFields.bytes: - return { bytes: domainsSortField.direction }; - case DomainsFields.packets: - return { packets: domainsSortField.direction }; - case DomainsFields.uniqueIpCount: - return { uniqueIpCount: domainsSortField.direction }; - case DomainsFields.domainName: - return { _key: domainsSortField.direction }; - case DomainsFields.direction: - return { _key: domainsSortField.direction }; - default: - return assertUnreachable(domainsSortField.field); - } -}; diff --git a/x-pack/legacy/plugins/siem/server/lib/ip_details/types.ts b/x-pack/legacy/plugins/siem/server/lib/ip_details/types.ts index a53d04544007d..be7519e64b651 100644 --- a/x-pack/legacy/plugins/siem/server/lib/ip_details/types.ts +++ b/x-pack/legacy/plugins/siem/server/lib/ip_details/types.ts @@ -4,14 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import { DomainsData, IpOverviewData, NetworkDirectionEcs, UsersData } from '../../graphql/types'; +import { TlsData, IpOverviewData, UsersData } from '../../graphql/types'; import { FrameworkRequest, RequestBasicOptions } from '../framework'; import { Hit, ShardsResponse, TotalValue } from '../types'; export interface IpDetailsAdapter { getIpDetails(request: FrameworkRequest, options: RequestBasicOptions): Promise; - getDomains(request: FrameworkRequest, options: RequestBasicOptions): Promise; - getTls(request: FrameworkRequest, options: RequestBasicOptions): Promise; + getTls(request: FrameworkRequest, options: RequestBasicOptions): Promise; getUsers(request: FrameworkRequest, options: RequestBasicOptions): Promise; } @@ -82,39 +81,6 @@ export interface IpOverviewHit { timeout: number; } -export interface DirectionBuckets { - key: NetworkDirectionEcs; - doc_count?: number; -} - -export interface DomainsBuckets { - key: string; - timestamp?: { - value: number; - value_as_string: string; - }; - uniqueIpCount: { - value: number; - }; - bytes: { - value: number; - }; - packets: { - value: number; - }; - direction: { - buckets: DirectionBuckets[]; - }; - firstSeen?: { - value: number; - value_as_string: string; - }; - lastSeen?: { - value: number; - value_as_string: string; - }; -} - export interface TlsBuckets { key: string; timestamp?: { diff --git a/x-pack/legacy/plugins/siem/server/lib/network/elastic_adapter.test.ts b/x-pack/legacy/plugins/siem/server/lib/network/elastic_adapter.test.ts index fcf29c1c283c6..c3bcfafac8757 100644 --- a/x-pack/legacy/plugins/siem/server/lib/network/elastic_adapter.test.ts +++ b/x-pack/legacy/plugins/siem/server/lib/network/elastic_adapter.test.ts @@ -6,11 +6,21 @@ import { cloneDeep } from 'lodash/fp'; -import { FlowTargetNew, NetworkTopNFlowData } from '../../graphql/types'; +import { FlowTargetSourceDest, NetworkTopNFlowData } from '../../graphql/types'; import { FrameworkAdapter, FrameworkRequest } from '../framework'; import { ElasticsearchNetworkAdapter } from './elasticsearch_adapter'; -import { mockOptions, mockRequest, mockResponse, mockResult, mockTopNFlowQueryDsl } from './mock'; +import { + mockOptions, + mockRequest, + mockResponse, + mockResult, + mockOptionsIp, + mockRequestIp, + mockResponseIp, + mockResultIp, + mockTopNFlowQueryDsl, +} from './mock'; jest.mock('./query_top_n_flow.dsl', () => { const r = jest.requireActual('./query_top_n_flow.dsl'); @@ -49,7 +59,7 @@ describe('Network Top N flow elasticsearch_adapter with FlowTarget=source', () = describe('Unhappy Path - No data', () => { const mockNoDataResponse = cloneDeep(mockResponse); mockNoDataResponse.aggregations.top_n_flow_count.value = 0; - mockNoDataResponse.aggregations[FlowTargetNew.source].buckets = []; + mockNoDataResponse.aggregations[FlowTargetSourceDest.source].buckets = []; const mockCallWithRequest = jest.fn(); mockCallWithRequest.mockResolvedValue(mockNoDataResponse); const mockFramework: FrameworkAdapter = { @@ -90,8 +100,11 @@ describe('Network Top N flow elasticsearch_adapter with FlowTarget=source', () = const mockNoPaginationResponse = cloneDeep(mockResponse); mockNoPaginationResponse.aggregations.top_n_flow_count.value = 10; mockNoPaginationResponse.aggregations[ - FlowTargetNew.source - ].buckets = mockNoPaginationResponse.aggregations[FlowTargetNew.source].buckets.slice(0, -1); + FlowTargetSourceDest.source + ].buckets = mockNoPaginationResponse.aggregations[FlowTargetSourceDest.source].buckets.slice( + 0, + -1 + ); const mockCallWithRequest = jest.fn(); mockCallWithRequest.mockResolvedValue(mockNoPaginationResponse); const mockFramework: FrameworkAdapter = { @@ -115,4 +128,29 @@ describe('Network Top N flow elasticsearch_adapter with FlowTarget=source', () = expect(data.pageInfo.showMorePagesIndicator).toBeFalsy(); }); }); + + describe('Filter by IP', () => { + const mockCallWithRequest = jest.fn(); + mockCallWithRequest.mockResolvedValue(mockResponseIp); + const mockFramework: FrameworkAdapter = { + version: 'mock', + callWithRequest: mockCallWithRequest, + exposeStaticDir: jest.fn(), + getIndexPatternsService: jest.fn(), + getSavedObjectsService: jest.fn(), + registerGraphQLEndpoint: jest.fn(), + }; + jest.doMock('../framework', () => ({ + callWithRequest: mockCallWithRequest, + })); + + test('getNetworkTopNFlow', async () => { + const EsNetworkTopNFlow = new ElasticsearchNetworkAdapter(mockFramework); + const data: NetworkTopNFlowData = await EsNetworkTopNFlow.getNetworkTopNFlow( + mockRequestIp as FrameworkRequest, + mockOptionsIp + ); + expect(data).toEqual(mockResultIp); + }); + }); }); diff --git a/x-pack/legacy/plugins/siem/server/lib/network/elasticsearch_adapter.ts b/x-pack/legacy/plugins/siem/server/lib/network/elasticsearch_adapter.ts index 925e40de32f71..0b787a08cec17 100644 --- a/x-pack/legacy/plugins/siem/server/lib/network/elasticsearch_adapter.ts +++ b/x-pack/legacy/plugins/siem/server/lib/network/elasticsearch_adapter.ts @@ -7,9 +7,8 @@ import { get, getOr } from 'lodash/fp'; import { - FlowTargetNew, + FlowTargetSourceDest, AutonomousSystemItem, - FlowTarget, GeoItem, NetworkDnsData, NetworkDnsEdges, @@ -114,10 +113,10 @@ const getTopNFlowEdges = ( }; const getFlowTargetFromString = (flowAsString: string) => - flowAsString === 'source' ? FlowTarget.source : FlowTarget.destination; + flowAsString === 'source' ? FlowTargetSourceDest.source : FlowTargetSourceDest.destination; const getGeoItem = (result: NetworkTopNFlowBuckets): GeoItem | null => - result.location.top_geo.hits.hits.length > 0 + result.location.top_geo.hits.hits.length > 0 && result.location.top_geo.hits.hits[0]._source ? { geo: getOr( '', @@ -154,7 +153,7 @@ const getAsItem = (result: NetworkTopNFlowBuckets): AutonomousSystemItem | null const formatTopNFlowEdges = ( buckets: NetworkTopNFlowBuckets[], - flowTarget: FlowTargetNew + flowTarget: FlowTargetSourceDest ): NetworkTopNFlowEdges[] => buckets.map((bucket: NetworkTopNFlowBuckets) => ({ node: { diff --git a/x-pack/legacy/plugins/siem/server/lib/network/index.ts b/x-pack/legacy/plugins/siem/server/lib/network/index.ts index 774a6d02ce576..c183122af998f 100644 --- a/x-pack/legacy/plugins/siem/server/lib/network/index.ts +++ b/x-pack/legacy/plugins/siem/server/lib/network/index.ts @@ -5,7 +5,8 @@ */ import { - FlowTargetNew, + FlowTargetSourceDest, + Maybe, NetworkDnsSortField, NetworkTopNFlowData, NetworkTopNFlowSortField, @@ -18,7 +19,8 @@ export * from './types'; export interface NetworkTopNFlowRequestOptions extends RequestOptionsPaginated { networkTopNFlowSort: NetworkTopNFlowSortField; - flowTarget: FlowTargetNew; + flowTarget: FlowTargetSourceDest; + ip?: Maybe; } export interface NetworkDnsRequestOptions extends RequestOptionsPaginated { diff --git a/x-pack/legacy/plugins/siem/server/lib/network/mock.ts b/x-pack/legacy/plugins/siem/server/lib/network/mock.ts index 2e36acefa0cdb..b0df45ab60a2c 100644 --- a/x-pack/legacy/plugins/siem/server/lib/network/mock.ts +++ b/x-pack/legacy/plugins/siem/server/lib/network/mock.ts @@ -5,7 +5,7 @@ */ import { defaultIndexPattern } from '../../../default_index_pattern'; -import { Direction, FlowTargetNew, NetworkTopNFlowFields } from '../../graphql/types'; +import { Direction, FlowTargetSourceDest, NetworkTopNFlowFields } from '../../graphql/types'; import { NetworkTopNFlowRequestOptions } from '.'; @@ -55,7 +55,7 @@ export const mockOptions: NetworkTopNFlowRequestOptions = { '__typename', ], networkTopNFlowSort: { field: NetworkTopNFlowFields.bytes_out, direction: Direction.desc }, - flowTarget: FlowTargetNew.source, + flowTarget: FlowTargetSourceDest.source, }; export const mockRequest = { @@ -64,7 +64,7 @@ export const mockRequest = { operationName: 'GetNetworkTopNFlowQuery', variables: { filterQuery: '', - flowTarget: FlowTargetNew.source, + flowTarget: FlowTargetSourceDest.source, pagination: { activePage: 0, cursorStart: 0, @@ -74,56 +74,96 @@ export const mockRequest = { sourceId: 'default', timerange: { interval: '12h', from: 1549765830772, to: 1549852230772 }, }, - query: `query GetNetworkTopNFlowQuery($sourceId: ID!, $sort: NetworkTopNFlowSortField!, $flowTarget: FlowTargetNew!, $timerange: TimerangeInput!, $pagination: PaginationInput!, $filterQuery: String) { - source(id: $sourceId) { - id - NetworkTopNFlow(sort: $sort, flowTarget: $flowTarget, timerange: $timerange, pagination: $pagination, filterQuery: $filterQuery) { - totalCount - edges { - node { - source { - autonomous_system - domain - ip - location - flows - destination_ips - __typename + query: ` + query GetNetworkTopNFlowQuery( + $sourceId: ID! + $ip: String + $filterQuery: String + $pagination: PaginationInputPaginated! + $sort: NetworkTopNFlowSortField! + $flowTarget: FlowTargetSourceDest! + $timerange: TimerangeInput! + $defaultIndex: [String!]! + $inspect: Boolean! + ) { + source(id: $sourceId) { + id + NetworkTopNFlow( + filterQuery: $filterQuery + flowTarget: $flowTarget + ip: $ip + pagination: $pagination + sort: $sort + timerange: $timerange + defaultIndex: $defaultIndex + ) { + totalCount + edges { + node { + source { + autonomous_system { + name + number + } + domain + ip + location { + geo { + continent_name + country_name + country_iso_code + city_name + region_iso_code + region_name } - destination { - autonomous_system - domain - ip - location - source_ips - __typename - } - network { - bytes_in - bytes_out - __typename + flowTarget + } + flows + destination_ips + } + destination { + autonomous_system { + name + number + } + domain + ip + location { + geo { + continent_name + country_name + country_iso_code + city_name + region_iso_code + region_name } - __typename + flowTarget + } + flows + source_ips } - cursor { - value - __typename + network { + bytes_in + bytes_out } - __typename } - pageInfo { - activePage - __typename - fakeTotalCount - __typename - showMorePagesIndicator - __typename + cursor { + value } - __typename } - __typename + pageInfo { + activePage + fakeTotalCount + showMorePagesIndicator + } + inspect @include(if: $inspect) { + dsl + response + } } - }`, + } + } +`, }, }; @@ -144,7 +184,7 @@ export const mockResponse = { top_n_flow_count: { value: 545, }, - [FlowTargetNew.source]: { + [FlowTargetSourceDest.source]: { buckets: [ { key: '1.1.1.1', @@ -1459,3 +1499,178 @@ export const mockResult = { }, totalCount: 545, }; + +export const mockOptionsIp: NetworkTopNFlowRequestOptions = { + ...mockOptions, + ip: '1.1.1.1', +}; + +export const mockRequestIp = { + ...mockRequest, + payload: { + ...mockRequest.payload, + variables: { + ...mockRequest.payload.variables, + ip: '1.1.1.1', + }, + }, +}; + +export const mockResponseIp = { + took: 122, + timed_out: false, + _shards: { + total: 1, + successful: 1, + skipped: 0, + failed: 0, + }, + hits: { + max_score: null, + hits: [], + }, + aggregations: { + top_n_flow_count: { + value: 1, + }, + [FlowTargetSourceDest.source]: { + buckets: [ + { + key: '1.1.1.1', + flows: { value: 1234567 }, + destination_ips: { value: 345345 }, + bytes_in: { + value: 11276023407, + }, + bytes_out: { + value: 1025631, + }, + location: { + doc_count: 14, + top_geo: { + hits: { + total: { + value: 14, + relation: 'eq', + }, + max_score: 1, + hits: [ + { + _index: 'filebeat-8.0.0-2019.06.19-000005', + _type: '_doc', + _id: 'dd4fa2d4bd-692279846149410', + _score: 1, + _source: { + source: { + geo: { + continent_name: 'North America', + region_iso_code: 'US-PA', + city_name: 'Philadelphia', + country_iso_code: 'US', + region_name: 'Pennsylvania', + location: { + lon: -75.1534, + lat: 39.9359, + }, + }, + }, + }, + }, + ], + }, + }, + }, + autonomous_system: { + doc_count: 14, + top_as: { + hits: { + total: { + value: 14, + relation: 'eq', + }, + max_score: 1, + hits: [ + { + _index: 'filebeat-8.0.0-2019.06.19-000005', + _type: '_doc', + _id: 'dd4fa2d4bd-692279846149410', + _score: 1, + _source: { + source: { + as: { + number: 3356, + organization: { + name: 'Level 3 Parent, LLC', + }, + }, + }, + }, + }, + ], + }, + }, + }, + domain: { + buckets: [ + { + key: 'test.1.net', + }, + ], + }, + }, + ], + }, + }, +}; + +export const mockResultIp = { + inspect: { + dsl: [JSON.stringify(mockTopNFlowQueryDsl, null, 2)], + response: [JSON.stringify(mockResponseIp, null, 2)], + }, + edges: [ + { + cursor: { + tiebreaker: null, + value: '1.1.1.1', + }, + node: { + _id: '1.1.1.1', + network: { + bytes_in: 11276023407, + bytes_out: 1025631, + }, + source: { + domain: ['test.1.net'], + ip: '1.1.1.1', + autonomous_system: { + name: 'Level 3 Parent, LLC', + number: 3356, + }, + location: { + flowTarget: 'source', + geo: { + city_name: 'Philadelphia', + continent_name: 'North America', + country_iso_code: 'US', + location: { + lat: 39.9359, + lon: -75.1534, + }, + region_iso_code: 'US-PA', + region_name: 'Pennsylvania', + }, + }, + flows: 1234567, + destination_ips: 345345, + }, + }, + }, + ], + pageInfo: { + activePage: 0, + fakeTotalCount: 1, + showMorePagesIndicator: false, + }, + totalCount: 1, +}; diff --git a/x-pack/legacy/plugins/siem/server/lib/network/query_top_n_flow.dsl.ts b/x-pack/legacy/plugins/siem/server/lib/network/query_top_n_flow.dsl.ts index acc921606c8e8..5fcd5bf5d7187 100644 --- a/x-pack/legacy/plugins/siem/server/lib/network/query_top_n_flow.dsl.ts +++ b/x-pack/legacy/plugins/siem/server/lib/network/query_top_n_flow.dsl.ts @@ -6,7 +6,7 @@ import { Direction, - FlowTargetNew, + FlowTargetSourceDest, NetworkTopNFlowSortField, NetworkTopNFlowFields, } from '../../graphql/types'; @@ -14,7 +14,7 @@ import { assertUnreachable, createQueryFilterClauses } from '../../utils/build_q import { NetworkTopNFlowRequestOptions } from './index'; -const getCountAgg = (flowTarget: FlowTargetNew) => ({ +const getCountAgg = (flowTarget: FlowTargetSourceDest) => ({ top_n_flow_count: { cardinality: { field: `${flowTarget}.ip`, @@ -32,6 +32,7 @@ export const buildTopNFlowQuery = ({ fields: { timestamp }, }, timerange: { from, to }, + ip, }: NetworkTopNFlowRequestOptions) => { const filter = [ ...createQueryFilterClauses(filterQuery), @@ -48,9 +49,21 @@ export const buildTopNFlowQuery = ({ ...getFlowTargetAggs(networkTopNFlowSort, flowTarget, querySize), }, query: { - bool: { - filter, - }, + bool: ip + ? { + filter, + should: [ + { + term: { + [`${getOppositeField(flowTarget)}.ip`]: ip, + }, + }, + ], + minimum_should_match: 1, + } + : { + filter, + }, }, }, size: 0, @@ -61,7 +74,7 @@ export const buildTopNFlowQuery = ({ const getFlowTargetAggs = ( networkTopNFlowSortField: NetworkTopNFlowSortField, - flowTarget: FlowTargetNew, + flowTarget: FlowTargetSourceDest, querySize: number ) => ({ [flowTarget]: { @@ -142,12 +155,12 @@ const getFlowTargetAggs = ( }, }); -export const getOppositeField = (flowTarget: FlowTargetNew): FlowTargetNew => { +export const getOppositeField = (flowTarget: FlowTargetSourceDest): FlowTargetSourceDest => { switch (flowTarget) { - case FlowTargetNew.source: - return FlowTargetNew.destination; - case FlowTargetNew.destination: - return FlowTargetNew.source; + case FlowTargetSourceDest.source: + return FlowTargetSourceDest.destination; + case FlowTargetSourceDest.destination: + return FlowTargetSourceDest.source; } assertUnreachable(flowTarget); }; diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 0f7fe7c0eefc0..c6cf439c20b9b 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -9581,19 +9581,6 @@ "xpack.siem.network.emptyActionPrimary": "セットアップの手順を表示", "xpack.siem.network.emptyActionSecondary": "ドキュメントに移動", "xpack.siem.network.emptyTitle": "SIEM アプリケーションのネットワークに関連したインデックスがないようです", - "xpack.siem.network.ipDetails.domainsTable.columns.bytesTitle": "バイト", - "xpack.siem.network.ipDetails.domainsTable.columns.directionTitle": "方向", - "xpack.siem.network.ipDetails.domainsTable.columns.domainNameTitle": "ドメイン名", - "xpack.siem.network.ipDetails.domainsTable.columns.firstLastSeenToolTip": "選択された日付範囲との相関付けです", - "xpack.siem.network.ipDetails.domainsTable.columns.lastSeenTitle": "前回の認識", - "xpack.siem.network.ipDetails.domainsTable.columns.packetsTitle": "パケット", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueClientsTitle": "固有のサーバー", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueDestinationsTitle": "固有のデスティネーション", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueServersTitle": "固有のクライアント", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueSourcesTitle": "固有のソース", - "xpack.siem.network.ipDetails.domainsTable.domainsTitle": "ドメイン", - "xpack.siem.network.ipDetails.domainsTable.rows": "{numRows} {numRows, plural, =0 {rows} =1 {row} other {rows}}", - "xpack.siem.network.ipDetails.domainsTable.unit": "{totalCount, plural, =1 {domain} other {domains}}", "xpack.siem.network.ipDetails.ipOverview.autonomousSystemTitle": "自動システム", "xpack.siem.network.ipDetails.ipOverview.firstSeenTitle": "初回の認識", "xpack.siem.network.ipDetails.ipOverview.hostIdTitle": "ホスト ID", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index b485eef915d57..5e34e8d6eec3d 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -9746,19 +9746,6 @@ "xpack.siem.network.emptyActionPrimary": "查看设置说明", "xpack.siem.network.emptyActionSecondary": "前往文档", "xpack.siem.network.emptyTitle": "似乎您在 SIEM 应用程序中没有与网络相关的索引", - "xpack.siem.network.ipDetails.domainsTable.columns.bytesTitle": "字节", - "xpack.siem.network.ipDetails.domainsTable.columns.directionTitle": "方向", - "xpack.siem.network.ipDetails.domainsTable.columns.domainNameTitle": "域名", - "xpack.siem.network.ipDetails.domainsTable.columns.firstLastSeenToolTip": "相对于选定日期范围", - "xpack.siem.network.ipDetails.domainsTable.columns.lastSeenTitle": "最后看到时间", - "xpack.siem.network.ipDetails.domainsTable.columns.packetsTitle": "数据包", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueClientsTitle": "唯一服务器", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueDestinationsTitle": "唯一目标", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueServersTitle": "唯一客户端", - "xpack.siem.network.ipDetails.domainsTable.columns.uniqueSourcesTitle": "唯一源", - "xpack.siem.network.ipDetails.domainsTable.domainsTitle": "域", - "xpack.siem.network.ipDetails.domainsTable.rows": "{numRows} {numRows, plural, =0 {rows} =1 {row} other {rows}}", - "xpack.siem.network.ipDetails.domainsTable.unit": "{totalCount, plural, =1 {domain} other {domains}}", "xpack.siem.network.ipDetails.ipOverview.autonomousSystemTitle": "自治系统", "xpack.siem.network.ipDetails.ipOverview.firstSeenTitle": "首次看到时间", "xpack.siem.network.ipDetails.ipOverview.hostIdTitle": "主机 ID", diff --git a/x-pack/test/api_integration/apis/siem/domains.ts b/x-pack/test/api_integration/apis/siem/domains.ts deleted file mode 100644 index 7965feb0e30f4..0000000000000 --- a/x-pack/test/api_integration/apis/siem/domains.ts +++ /dev/null @@ -1,141 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import expect from '@kbn/expect'; -import { domainsQuery } from '../../../../legacy/plugins/siem/public/containers/domains/index.gql_query'; -import { - Direction, - DomainsFields, - FlowDirection, - FlowTarget, - GetDomainsQuery, -} from '../../../../legacy/plugins/siem/public/graphql/types'; -import { FtrProviderContext } from '../../ftr_provider_context'; - -const FROM = new Date('2000-01-01T00:00:00.000Z').valueOf(); -const TO = new Date('3000-01-01T00:00:00.000Z').valueOf(); -const IP = '10.100.7.196'; - -export default function({ getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - const client = getService('siemGraphQLClient'); - describe('Domains', () => { - describe('With filebeat', () => { - before(() => esArchiver.load('filebeat/default')); - after(() => esArchiver.unload('filebeat/default')); - - it('Ensure data is returned for FlowTarget.Source and Direction.Unidirectional', () => { - return client - .query({ - query: domainsQuery, - variables: { - sourceId: 'default', - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - ip: IP, - flowDirection: FlowDirection.uniDirectional, - flowTarget: FlowTarget.source, - sort: { field: DomainsFields.bytes, direction: Direction.desc }, - pagination: { - activePage: 0, - cursorStart: 0, - fakePossibleCount: 30, - querySize: 10, - }, - defaultIndex: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], - inspect: false, - }, - }) - .then(resp => { - const domains = resp.data.source.Domains; - expect(domains.edges.length).to.be(1); - expect(domains.totalCount).to.be(1); - expect(domains.edges[0].node.source!.uniqueIpCount).to.be(122); - expect(domains.edges[0].node.source!.domainName).to.be( - 'samsungtv-kitchen.iot.sr.local.crowbird.com' - ); - expect(domains.edges[0].node.network!.bytes).to.be(25209932); - }); - }); - - it('Ensure data is returned for FlowTarget.Source and Direction.Bidirectional', () => { - return client - .query({ - query: domainsQuery, - variables: { - sourceId: 'default', - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - ip: IP, - flowDirection: FlowDirection.biDirectional, - flowTarget: FlowTarget.source, - sort: { field: DomainsFields.bytes, direction: Direction.desc }, - pagination: { - activePage: 0, - cursorStart: 0, - fakePossibleCount: 30, - querySize: 10, - }, - defaultIndex: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], - inspect: false, - }, - }) - .then(resp => { - const domains = resp.data.source.Domains; - expect(domains.edges.length).to.be(1); - expect(domains.totalCount).to.be(1); - expect(domains.edges[0].node.source!.domainName).to.be( - 'samsungtv-kitchen.iot.sr.local.crowbird.com' - ); - expect(domains.edges[0].node.source!.uniqueIpCount).to.be(81); - expect(domains.edges[0].node.network!.bytes).to.be(27033419); - }); - }); - - it('Ensure data is returned for FlowTarget.Destination and Direction.Unidirectional and Pagination works', () => { - return client - .query({ - query: domainsQuery, - variables: { - sourceId: 'default', - timerange: { - interval: '12h', - to: TO, - from: FROM, - }, - ip: IP, - flowDirection: FlowDirection.uniDirectional, - flowTarget: FlowTarget.destination, - sort: { field: DomainsFields.bytes, direction: Direction.desc }, - pagination: { - activePage: 0, - cursorStart: 0, - fakePossibleCount: 30, - querySize: 10, - }, - defaultIndex: ['auditbeat-*', 'filebeat-*', 'packetbeat-*', 'winlogbeat-*'], - inspect: false, - }, - }) - .then(resp => { - const domains = resp.data.source.Domains; - expect(domains.edges.length).to.be(10); - expect(domains.totalCount).to.be(12); - expect(domains.edges.map(i => i.node.destination!.domainName).join(',')).to.be( - 'samsungtv-kitchen.iot.sr.local.crowbird.com,12s3.lvlt.dash.row.aiv-cdn.net,151.205.0.17,151.205.0.19,151.205.0.21,151.205.0.23,15s3.lvlt.dash.row.aiv-cdn.net,api-global.netflix.com,d25xi40x97liuc.cloudfront.net,d2lkq7nlcrdi7q.cloudfront.net' - ); - expect(domains.pageInfo.fakeTotalCount).to.equal(12); - }); - }); - }); - }); -} diff --git a/x-pack/test/api_integration/apis/siem/index.js b/x-pack/test/api_integration/apis/siem/index.js index a28c2f42a52df..77edf1e55c63c 100644 --- a/x-pack/test/api_integration/apis/siem/index.js +++ b/x-pack/test/api_integration/apis/siem/index.js @@ -7,7 +7,6 @@ export default function ({ loadTestFile }) { describe('Siem GraphQL Endpoints', () => { loadTestFile(require.resolve('./authentications')); - loadTestFile(require.resolve('./domains')); loadTestFile(require.resolve('./events_over_time')); loadTestFile(require.resolve('./hosts')); loadTestFile(require.resolve('./kpi_network')); diff --git a/x-pack/test/api_integration/apis/siem/network_top_n_flow.ts b/x-pack/test/api_integration/apis/siem/network_top_n_flow.ts index 9b5861dfedb4c..efa0dc9c72d9c 100644 --- a/x-pack/test/api_integration/apis/siem/network_top_n_flow.ts +++ b/x-pack/test/api_integration/apis/siem/network_top_n_flow.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import { networkTopNFlowQuery } from '../../../../legacy/plugins/siem/public/containers/network_top_n_flow/index.gql_query'; import { Direction, - FlowTargetNew, + FlowTargetSourceDest, GetNetworkTopNFlowQuery, NetworkTopNFlowFields, } from '../../../../legacy/plugins/siem/public/graphql/types'; @@ -38,7 +38,7 @@ export default function({ getService }: FtrProviderContext) { to: TO, from: FROM, }, - flowTarget: FlowTargetNew.source, + flowTarget: FlowTargetSourceDest.source, sort: { field: NetworkTopNFlowFields.bytes_in, direction: Direction.desc }, pagination: { activePage: 0, @@ -75,7 +75,7 @@ export default function({ getService }: FtrProviderContext) { to: TO, from: FROM, }, - flowTarget: FlowTargetNew.source, + flowTarget: FlowTargetSourceDest.source, sort: { field: NetworkTopNFlowFields.bytes_in, direction: Direction.asc }, pagination: { activePage: 0, @@ -113,7 +113,7 @@ export default function({ getService }: FtrProviderContext) { from: FROM, }, sort: { field: NetworkTopNFlowFields.bytes_in, direction: Direction.desc }, - flowTarget: FlowTargetNew.destination, + flowTarget: FlowTargetSourceDest.destination, pagination: { activePage: 0, cursorStart: 0, @@ -147,7 +147,7 @@ export default function({ getService }: FtrProviderContext) { from: FROM, }, sort: { field: NetworkTopNFlowFields.bytes_in, direction: Direction.desc }, - flowTarget: FlowTargetNew.source, + flowTarget: FlowTargetSourceDest.source, pagination: { activePage: 1, cursorStart: 10, From 8685db2a829db1ee2676af4b938a609d8006bc73 Mon Sep 17 00:00:00 2001 From: Andrew Cholakian Date: Mon, 14 Oct 2019 16:43:45 -0500 Subject: [PATCH 11/46] [Uptime] Aggregate by IP in pagination (#47598) Fixes issue where at most 2 IPs could be shown in MonitorList component. This adds an aggregation by monitor.ip to fix this. --- .../search/find_potential_matches.ts | 23 ++++++++++++------- .../apis/uptime/graphql/monitor_states.ts | 15 +++++++++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/x-pack/legacy/plugins/uptime/server/lib/adapters/monitor_states/search/find_potential_matches.ts b/x-pack/legacy/plugins/uptime/server/lib/adapters/monitor_states/search/find_potential_matches.ts index b9ffd27d23022..002dc2862fa1b 100644 --- a/x-pack/legacy/plugins/uptime/server/lib/adapters/monitor_states/search/find_potential_matches.ts +++ b/x-pack/legacy/plugins/uptime/server/lib/adapters/monitor_states/search/find_potential_matches.ts @@ -38,8 +38,10 @@ export const findPotentialMatches = async ( // Here we grab the most recent 2 check groups per location and add them to the list. // Why 2? Because the most recent one may be a partial result from mode: all, and hence not match a summary doc. b.locations.buckets.forEach((lb: any) => { - lb.top.hits.hits.forEach((h: any) => { - checkGroups.add(h._source.monitor.check_group); + lb.ips.buckets.forEach((ib: any) => { + ib.top.hits.hits.forEach((h: any) => { + checkGroups.add(h._source.monitor.check_group); + }); }); }); } @@ -95,13 +97,18 @@ const queryBody = (queryContext: QueryContext, searchAfter: any, size: number) = locations: { terms: { field: 'observer.geo.name', missing: '__missing__' }, aggs: { - top: { - top_hits: { - sort: [{ '@timestamp': 'desc' }], - _source: { - includes: ['monitor.check_group', '@timestamp'], + ips: { + terms: { field: 'monitor.ip', missing: '0.0.0.0' }, + aggs: { + top: { + top_hits: { + sort: [{ '@timestamp': 'desc' }], + _source: { + includes: ['monitor.check_group', '@timestamp'], + }, + size: 2, + }, }, - size: 2, }, }, }, diff --git a/x-pack/test/api_integration/apis/uptime/graphql/monitor_states.ts b/x-pack/test/api_integration/apis/uptime/graphql/monitor_states.ts index 3779065962c68..9dca3f40c6303 100644 --- a/x-pack/test/api_integration/apis/uptime/graphql/monitor_states.ts +++ b/x-pack/test/api_integration/apis/uptime/graphql/monitor_states.ts @@ -84,6 +84,8 @@ export default function({ getService }: FtrProviderContext) { }); describe('monitor state scoping', async () => { + const numIps = 4; // Must be > 2 for IP uniqueness checks + before('load heartbeat data', () => getService('esArchiver').load('uptime/blank')); after('unload heartbeat index', () => getService('esArchiver').unload('uptime/blank')); @@ -106,7 +108,7 @@ export default function({ getService }: FtrProviderContext) { const es = getService('es'); dateRangeStart = new Date().toISOString(); - checks = await makeChecks(es, index, testMonitorId, 1, 2, {}, d => { + checks = await makeChecks(es, index, testMonitorId, 1, numIps, {}, d => { if (d.summary) { d.monitor.status = 'down'; d.summary.up--; @@ -118,6 +120,17 @@ export default function({ getService }: FtrProviderContext) { nonSummaryIp = checks[0][0].monitor.ip; }); + it('should return all IPs', async () => { + const res = await getMonitorStates(makeApiParams(testMonitorId)); + + const uniqueIps = new Set(); + res.monitorStates.summaries[0].state.checks.forEach((c: any) => + uniqueIps.add(c.monitor.ip) + ); + + expect(uniqueIps.size).to.eql(4); + }); + it('should match non summary documents without a status filter', async () => { const params = makeApiParams(testMonitorId, [{ match: { 'monitor.ip': nonSummaryIp } }]); From 7fbea4280146f894255b5917e90aeea50b273bd4 Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Mon, 14 Oct 2019 17:22:26 -0500 Subject: [PATCH 12/46] [Metrics] Always display loading indicator when new data is loading (#48038) * [Metrics] Always display loading indicator when new data is loading * Add loading data sources indicator to Metrics Explorer tab --- .../infra/public/components/metrics_explorer/charts.tsx | 2 +- .../public/pages/infrastructure/metrics_explorer/index.tsx | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/legacy/plugins/infra/public/components/metrics_explorer/charts.tsx b/x-pack/legacy/plugins/infra/public/components/metrics_explorer/charts.tsx index 7e481d515d64a..32c9ac36b5c52 100644 --- a/x-pack/legacy/plugins/infra/public/components/metrics_explorer/charts.tsx +++ b/x-pack/legacy/plugins/infra/public/components/metrics_explorer/charts.tsx @@ -44,7 +44,7 @@ export const MetricsExplorerCharts = ({ timeRange, onTimeChange, }: Props) => { - if (!data && loading) { + if (loading) { return ( { if (!source) { - return null; + return ; } const { From e8df2fa2162e8f60ceb6b8f6437ab68edc752c30 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Mon, 14 Oct 2019 15:37:16 -0700 Subject: [PATCH 13/46] Add API Keys app to Management > Security. (#45740) * Add API Keys app to Management > Security. - For admins, list all API Keys created by the user: Name, Date Created, Expiration Date, Status, User, and Realm. - For non-admins, list own API keys: Name, Date Created, Expiration Date, and Status. - Surface admin status above table. - Ability to search by Name and Revoke (invalidate) API keys, and filter by User and Realm. - Surface feedback when API keys are disabled on Elasticsearch or when user lacks required permissions. * Add `SectionLoading` component to `es_ui_shared` plugin. --- .../components/section_loading/index.ts | 20 + .../section_loading/section_loading.tsx | 60 ++ .../plugins/security/common/constants.ts | 1 + .../plugins/security/common/model/api_key.ts | 20 + .../plugins/security/common/model/index.ts | 1 + x-pack/legacy/plugins/security/index.js | 2 + .../security/public/lib/api_keys_api.ts | 48 ++ .../management/api_keys_grid/api_keys.html | 3 + .../management/api_keys_grid/api_keys.js | 33 ++ .../components/api_keys_grid_page.tsx | 528 ++++++++++++++++++ .../components/empty_prompt/empty_prompt.tsx | 64 +++ .../components/empty_prompt/index.ts | 7 + .../api_keys_grid/components/index.ts | 7 + .../components/invalidate_provider/index.ts | 7 + .../invalidate_provider.tsx | 182 ++++++ .../components/not_enabled/index.ts | 7 + .../components/not_enabled/not_enabled.tsx | 38 ++ .../components/permission_denied/index.ts | 7 + .../permission_denied/permission_denied.tsx | 34 ++ .../services/documentation_links.ts | 21 + .../public/views/management/breadcrumbs.ts | 12 + .../public/views/management/management.js | 15 +- .../views/management/management_urls.ts | 1 + .../server/routes/api/v1/api_keys/get.js | 45 ++ .../server/routes/api/v1/api_keys/index.js | 23 + .../routes/api/v1/api_keys/invalidate.js | 70 +++ .../routes/api/v1/api_keys/privileges.js | 75 +++ .../legacy/server/lib/esjs_shield_plugin.js | 19 + 28 files changed, 1349 insertions(+), 1 deletion(-) create mode 100644 src/plugins/es_ui_shared/public/components/section_loading/index.ts create mode 100644 src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx create mode 100644 x-pack/legacy/plugins/security/common/model/api_key.ts create mode 100644 x-pack/legacy/plugins/security/public/lib/api_keys_api.ts create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.html create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.js create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/api_keys_grid_page.tsx create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/empty_prompt.tsx create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/index.ts create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/index.ts create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/index.ts create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/invalidate_provider.tsx create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/index.ts create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/not_enabled.tsx create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/index.ts create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/permission_denied.tsx create mode 100644 x-pack/legacy/plugins/security/public/views/management/api_keys_grid/services/documentation_links.ts create mode 100644 x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/get.js create mode 100644 x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/index.js create mode 100644 x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/invalidate.js create mode 100644 x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/privileges.js diff --git a/src/plugins/es_ui_shared/public/components/section_loading/index.ts b/src/plugins/es_ui_shared/public/components/section_loading/index.ts new file mode 100644 index 0000000000000..6e10fe9a89cd1 --- /dev/null +++ b/src/plugins/es_ui_shared/public/components/section_loading/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { SectionLoading } from './section_loading'; diff --git a/src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx b/src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx new file mode 100644 index 0000000000000..41495d605d768 --- /dev/null +++ b/src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx @@ -0,0 +1,60 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; + +import { + EuiEmptyPrompt, + EuiLoadingSpinner, + EuiText, + EuiFlexGroup, + EuiFlexItem, + EuiTextColor, +} from '@elastic/eui'; + +interface Props { + inline?: boolean; + children: React.ReactNode; + [key: string]: any; +} + +export const SectionLoading: React.FunctionComponent = ({ inline, children, ...rest }) => { + if (inline) { + return ( + + + + + + + {children} + + + + ); + } + + return ( + } + body={{children}} + data-test-subj="sectionLoading" + /> + ); +}; diff --git a/x-pack/legacy/plugins/security/common/constants.ts b/x-pack/legacy/plugins/security/common/constants.ts index 2a255ecd335e5..2ec429b4d9c4c 100644 --- a/x-pack/legacy/plugins/security/common/constants.ts +++ b/x-pack/legacy/plugins/security/common/constants.ts @@ -8,3 +8,4 @@ export const GLOBAL_RESOURCE = '*'; export const IGNORED_TYPES = ['space']; export const APPLICATION_PREFIX = 'kibana-'; export const RESERVED_PRIVILEGES_APPLICATION_WILDCARD = 'kibana-*'; +export const INTERNAL_API_BASE_PATH = '/internal/security'; diff --git a/x-pack/legacy/plugins/security/common/model/api_key.ts b/x-pack/legacy/plugins/security/common/model/api_key.ts new file mode 100644 index 0000000000000..acdf999da4a0f --- /dev/null +++ b/x-pack/legacy/plugins/security/common/model/api_key.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export interface ApiKey { + id: string; + name: string; + username: string; + realm: string; + creation: number; + expiration: number; + invalidated: boolean; +} + +export interface ApiKeyToInvalidate { + id: string; + name: string; +} diff --git a/x-pack/legacy/plugins/security/common/model/index.ts b/x-pack/legacy/plugins/security/common/model/index.ts index 31757543ac3f8..19243c25fef7e 100644 --- a/x-pack/legacy/plugins/security/common/model/index.ts +++ b/x-pack/legacy/plugins/security/common/model/index.ts @@ -8,6 +8,7 @@ export { Role, RoleIndexPrivilege, RoleKibanaPrivilege } from './role'; export { FeaturesPrivileges } from './features_privileges'; export { RawKibanaPrivileges, RawKibanaFeaturePrivileges } from './raw_kibana_privileges'; export { KibanaPrivileges } from './kibana_privileges'; +export { ApiKey } from './api_key'; export { User, EditUser, getUserDisplayName } from '../../../../../plugins/security/common/model'; export { AuthenticatedUser, diff --git a/x-pack/legacy/plugins/security/index.js b/x-pack/legacy/plugins/security/index.js index 980af19cc8362..f9e82f575ce2e 100644 --- a/x-pack/legacy/plugins/security/index.js +++ b/x-pack/legacy/plugins/security/index.js @@ -7,6 +7,7 @@ import { resolve } from 'path'; import { initAuthenticateApi } from './server/routes/api/v1/authenticate'; import { initUsersApi } from './server/routes/api/v1/users'; +import { initApiKeysApi } from './server/routes/api/v1/api_keys'; import { initExternalRolesApi } from './server/routes/api/external/roles'; import { initPrivilegesApi } from './server/routes/api/external/privileges'; import { initIndicesApi } from './server/routes/api/v1/indices'; @@ -195,6 +196,7 @@ export const security = (kibana) => new kibana.Plugin({ initAPIAuthorization(server, authorization); initAppAuthorization(server, xpackMainPlugin, authorization); initUsersApi(securityPlugin, server); + initApiKeysApi(server); initExternalRolesApi(server); initIndicesApi(server); initPrivilegesApi(server); diff --git a/x-pack/legacy/plugins/security/public/lib/api_keys_api.ts b/x-pack/legacy/plugins/security/public/lib/api_keys_api.ts new file mode 100644 index 0000000000000..c6dcef392af98 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/lib/api_keys_api.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { kfetch } from 'ui/kfetch'; +import { ApiKey, ApiKeyToInvalidate } from '../../common/model/api_key'; +import { INTERNAL_API_BASE_PATH } from '../../common/constants'; + +interface CheckPrivilegesResponse { + areApiKeysEnabled: boolean; + isAdmin: boolean; +} + +interface InvalidateApiKeysResponse { + itemsInvalidated: ApiKeyToInvalidate[]; + errors: any[]; +} + +interface GetApiKeysResponse { + apiKeys: ApiKey[]; +} + +const apiKeysUrl = `${INTERNAL_API_BASE_PATH}/api_key`; + +export class ApiKeysApi { + public static async checkPrivileges(): Promise { + return kfetch({ pathname: `${apiKeysUrl}/privileges` }); + } + + public static async getApiKeys(isAdmin: boolean = false): Promise { + const query = { + isAdmin, + }; + + return kfetch({ pathname: apiKeysUrl, query }); + } + + public static async invalidateApiKeys( + apiKeys: ApiKeyToInvalidate[], + isAdmin: boolean = false + ): Promise { + const pathname = `${apiKeysUrl}/invalidate`; + const body = JSON.stringify({ apiKeys, isAdmin }); + return kfetch({ pathname, method: 'POST', body }); + } +} diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.html b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.html new file mode 100644 index 0000000000000..e46c6f72b5d20 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.html @@ -0,0 +1,3 @@ + +
+ diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.js b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.js new file mode 100644 index 0000000000000..f143df8c9742f --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/api_keys.js @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; +import routes from 'ui/routes'; +import template from './api_keys.html'; +import { API_KEYS_PATH } from '../management_urls'; +import { getApiKeysBreadcrumbs } from '../breadcrumbs'; +import { I18nContext } from 'ui/i18n'; +import { ApiKeysGridPage } from './components'; + +routes.when(API_KEYS_PATH, { + template, + k7Breadcrumbs: getApiKeysBreadcrumbs, + controller($scope) { + $scope.$$postDigest(() => { + const domNode = document.getElementById('apiKeysGridReactRoot'); + + render( + + + , domNode); + + // unmount react on controller destroy + $scope.$on('$destroy', () => { + unmountComponentAtNode(domNode); + }); + }); + }, +}); diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/api_keys_grid_page.tsx b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/api_keys_grid_page.tsx new file mode 100644 index 0000000000000..6bebf17c943a4 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/api_keys_grid_page.tsx @@ -0,0 +1,528 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Component } from 'react'; +import { + EuiBadge, + EuiButton, + EuiButtonIcon, + EuiCallOut, + EuiFlexGroup, + EuiFlexItem, + EuiInMemoryTable, + EuiPageContent, + EuiPageContentBody, + EuiPageContentHeader, + EuiPageContentHeaderSection, + EuiSpacer, + EuiText, + EuiTitle, + EuiToolTip, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import moment from 'moment-timezone'; +import _ from 'lodash'; +import { toastNotifications } from 'ui/notify'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { SectionLoading } from '../../../../../../../../../src/plugins/es_ui_shared/public/components/section_loading'; +import { ApiKey, ApiKeyToInvalidate } from '../../../../../common/model/api_key'; +import { ApiKeysApi } from '../../../../lib/api_keys_api'; +import { PermissionDenied } from './permission_denied'; +import { EmptyPrompt } from './empty_prompt'; +import { NotEnabled } from './not_enabled'; +import { InvalidateProvider } from './invalidate_provider'; + +interface State { + isLoadingApp: boolean; + isLoadingTable: boolean; + isAdmin: boolean; + areApiKeysEnabled: boolean; + apiKeys: ApiKey[]; + selectedItems: ApiKey[]; + permissionDenied: boolean; + error: any; +} + +const DATE_FORMAT = 'MMMM Do YYYY HH:mm:ss'; + +export class ApiKeysGridPage extends Component { + constructor(props: any) { + super(props); + this.state = { + isLoadingApp: true, + isLoadingTable: false, + isAdmin: false, + areApiKeysEnabled: false, + apiKeys: [], + permissionDenied: false, + selectedItems: [], + error: undefined, + }; + } + + public componentDidMount() { + this.checkPrivileges(); + } + + public render() { + const { + permissionDenied, + isLoadingApp, + isLoadingTable, + areApiKeysEnabled, + isAdmin, + error, + apiKeys, + } = this.state; + + if (permissionDenied) { + return ; + } + + if (isLoadingApp) { + return ( + + + + + + ); + } + + if (error) { + const { + body: { error: errorTitle, message, statusCode }, + } = error; + + return ( + + + } + color="danger" + iconType="alert" + > + {statusCode}: {errorTitle} - {message} + + + ); + } + + if (!areApiKeysEnabled) { + return ( + + + + ); + } + + if (!isLoadingTable && apiKeys && apiKeys.length === 0) { + return ( + + + + ); + } + + const description = ( + +

+ {isAdmin ? ( + + ) : ( + + )} +

+
+ ); + + return ( + + + + +

+ +

+
+ {description} +
+
+ + {this.renderTable()} +
+ ); + } + + private renderTable = () => { + const { apiKeys, selectedItems, isLoadingTable, isAdmin } = this.state; + + const message = isLoadingTable ? ( + + ) : ( + undefined + ); + + const sorting = { + sort: { + field: 'expiration', + direction: 'asc', + }, + }; + + const pagination = { + initialPageSize: 20, + pageSizeOptions: [10, 20, 50], + }; + + const selection = { + onSelectionChange: (newSelectedItems: ApiKey[]) => { + this.setState({ + selectedItems: newSelectedItems, + }); + }, + }; + + const search = { + toolsLeft: selectedItems.length ? ( + + {invalidateApiKeyPrompt => { + return ( + + invalidateApiKeyPrompt( + selectedItems.map(({ name, id }) => ({ name, id })), + this.onApiKeysInvalidated + ) + } + color="danger" + data-test-subj="bulkInvalidateActionButton" + > + + + ); + }} + + ) : ( + undefined + ), + toolsRight: ( + this.reloadApiKeys()} + data-test-subj="reloadButton" + > + + + ), + box: { + incremental: true, + }, + filters: isAdmin + ? [ + { + type: 'field_value_selection', + field: 'username', + name: i18n.translate('xpack.security.management.apiKeys.table.userFilterLabel', { + defaultMessage: 'User', + }), + multiSelect: false, + options: Object.keys( + apiKeys.reduce((apiKeysMap: any, apiKey) => { + apiKeysMap[apiKey.username] = true; + return apiKeysMap; + }, {}) + ).map(username => { + return { + value: username, + view: username, + }; + }), + }, + { + type: 'field_value_selection', + field: 'realm', + name: i18n.translate('xpack.security.management.apiKeys.table.realmFilterLabel', { + defaultMessage: 'Realm', + }), + multiSelect: false, + options: Object.keys( + apiKeys.reduce((apiKeysMap: any, apiKey) => { + apiKeysMap[apiKey.realm] = true; + return apiKeysMap; + }, {}) + ).map(realm => { + return { + value: realm, + view: realm, + }; + }), + }, + ] + : undefined, + }; + + return ( + <> + {isAdmin ? ( + <> + + } + color="success" + iconType="user" + size="s" + /> + + + + ) : ( + undefined + )} + + { + { + return { + 'data-test-subj': 'apiKeyRow', + }; + }} + /> + } + + ); + }; + + private getColumnConfig = () => { + const { isAdmin } = this.state; + + let config = [ + { + field: 'name', + name: i18n.translate('xpack.security.management.apiKeys.table.nameColumnName', { + defaultMessage: 'Name', + }), + sortable: true, + }, + ]; + + if (isAdmin) { + config = config.concat([ + { + field: 'username', + name: i18n.translate('xpack.security.management.apiKeys.table.userNameColumnName', { + defaultMessage: 'User', + }), + sortable: true, + }, + { + field: 'realm', + name: i18n.translate('xpack.security.management.apiKeys.table.realmColumnName', { + defaultMessage: 'Realm', + }), + sortable: true, + }, + ]); + } + + config = config.concat([ + { + field: 'creation', + name: i18n.translate('xpack.security.management.apiKeys.table.creationDateColumnName', { + defaultMessage: 'Created', + }), + sortable: true, + // @ts-ignore + render: (creationDateMs: number) => moment(creationDateMs).format(DATE_FORMAT), + }, + { + field: 'expiration', + name: i18n.translate('xpack.security.management.apiKeys.table.expirationDateColumnName', { + defaultMessage: 'Expires', + }), + sortable: true, + // @ts-ignore + render: (expirationDateMs: number) => { + if (expirationDateMs === undefined) { + return ( + + {i18n.translate( + 'xpack.security.management.apiKeys.table.expirationDateNeverMessage', + { + defaultMessage: 'Never', + } + )} + + ); + } + + return moment(expirationDateMs).format(DATE_FORMAT); + }, + }, + { + name: i18n.translate('xpack.security.management.apiKeys.table.statusColumnName', { + defaultMessage: 'Status', + }), + render: ({ expiration }: any) => { + const now = Date.now(); + + if (now > expiration) { + return Expired; + } + + return Active; + }, + }, + { + name: i18n.translate('xpack.security.management.apiKeys.table.actionsColumnName', { + defaultMessage: 'Actions', + }), + actions: [ + { + render: ({ name, id }: any) => { + return ( + + + + {invalidateApiKeyPrompt => { + return ( + + + invalidateApiKeyPrompt([{ id, name }], this.onApiKeysInvalidated) + } + /> + + ); + }} + + + + ); + }, + }, + ], + }, + ]); + + return config; + }; + + private onApiKeysInvalidated = (apiKeysInvalidated: ApiKeyToInvalidate[]): void => { + if (apiKeysInvalidated.length) { + this.reloadApiKeys(); + } + }; + + private async checkPrivileges() { + try { + const { isAdmin, areApiKeysEnabled } = await ApiKeysApi.checkPrivileges(); + this.setState({ isAdmin, areApiKeysEnabled }); + + if (areApiKeysEnabled) { + this.initiallyLoadApiKeys(); + } else { + // We're done loading and will just show the "Disabled" error. + this.setState({ isLoadingApp: false }); + } + } catch (e) { + if (_.get(e, 'body.statusCode') === 403) { + this.setState({ permissionDenied: true, isLoadingApp: false }); + } else { + toastNotifications.addDanger( + this.props.i18n.translate( + 'xpack.security.management.apiKeys.table.fetchingApiKeysErrorMessage', + { + defaultMessage: 'Error checking privileges: {message}', + values: { message: _.get(e, 'body.message', '') }, + } + ) + ); + } + } + } + + private initiallyLoadApiKeys = () => { + this.setState({ isLoadingApp: true, isLoadingTable: false }); + this.loadApiKeys(); + }; + + private reloadApiKeys = () => { + this.setState({ apiKeys: [], isLoadingApp: false, isLoadingTable: true }); + this.loadApiKeys(); + }; + + private loadApiKeys = async () => { + try { + const { isAdmin } = this.state; + const { apiKeys } = await ApiKeysApi.getApiKeys(isAdmin); + this.setState({ apiKeys }); + } catch (e) { + this.setState({ error: e }); + } + + this.setState({ isLoadingApp: false, isLoadingTable: false }); + }; +} diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/empty_prompt.tsx b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/empty_prompt.tsx new file mode 100644 index 0000000000000..957ca7010a1a0 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/empty_prompt.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Fragment } from 'react'; +import { EuiEmptyPrompt, EuiButton, EuiLink } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { documentationLinks } from '../../services/documentation_links'; + +interface Props { + isAdmin: boolean; +} + +export const EmptyPrompt: React.FunctionComponent = ({ isAdmin }) => ( + + {isAdmin ? ( + + ) : ( + + )} + + } + body={ + +

+ + + + ), + }} + /> +

+
+ } + actions={ + + + + } + data-test-subj="emptyPrompt" + /> +); diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/index.ts b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/index.ts new file mode 100644 index 0000000000000..982e34a0ceed5 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/empty_prompt/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { EmptyPrompt } from './empty_prompt'; diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/index.ts b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/index.ts new file mode 100644 index 0000000000000..9f4d4239d6b4c --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { ApiKeysGridPage } from './api_keys_grid_page'; diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/index.ts b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/index.ts new file mode 100644 index 0000000000000..17bfb41fa88b5 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { InvalidateProvider } from './invalidate_provider'; diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/invalidate_provider.tsx b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/invalidate_provider.tsx new file mode 100644 index 0000000000000..fe9ffc651db29 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/invalidate_provider/invalidate_provider.tsx @@ -0,0 +1,182 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Fragment, useRef, useState } from 'react'; +import { EuiConfirmModal, EuiOverlayMask } from '@elastic/eui'; +import { toastNotifications } from 'ui/notify'; +import { i18n } from '@kbn/i18n'; +import { ApiKeyToInvalidate } from '../../../../../../common/model/api_key'; +import { ApiKeysApi } from '../../../../../lib/api_keys_api'; + +interface Props { + isAdmin: boolean; + children: (invalidateApiKeys: InvalidateApiKeys) => React.ReactElement; +} + +export type InvalidateApiKeys = ( + apiKeys: ApiKeyToInvalidate[], + onSuccess?: OnSuccessCallback +) => void; + +type OnSuccessCallback = (apiKeysInvalidated: ApiKeyToInvalidate[]) => void; + +export const InvalidateProvider: React.FunctionComponent = ({ isAdmin, children }) => { + const [apiKeys, setApiKeys] = useState([]); + const [isModalOpen, setIsModalOpen] = useState(false); + const onSuccessCallback = useRef(null); + + const invalidateApiKeyPrompt: InvalidateApiKeys = (keys, onSuccess = () => undefined) => { + if (!keys || !keys.length) { + throw new Error('No API key IDs specified for invalidation'); + } + setIsModalOpen(true); + setApiKeys(keys); + onSuccessCallback.current = onSuccess; + }; + + const closeModal = () => { + setIsModalOpen(false); + setApiKeys([]); + }; + + const invalidateApiKey = async () => { + let result; + let error; + let errors; + + try { + result = await ApiKeysApi.invalidateApiKeys(apiKeys, isAdmin); + } catch (e) { + error = e; + } + + closeModal(); + + if (result) { + const { itemsInvalidated } = result; + ({ errors } = result); + + // Surface success notifications + if (itemsInvalidated && itemsInvalidated.length) { + const hasMultipleSuccesses = itemsInvalidated.length > 1; + const successMessage = hasMultipleSuccesses + ? i18n.translate( + 'xpack.security.management.apiKeys.invalidateApiKey.successMultipleNotificationTitle', + { + defaultMessage: 'Invalidated {count} API keys', + values: { count: itemsInvalidated.length }, + } + ) + : i18n.translate( + 'xpack.security.management.apiKeys.invalidateApiKey.successSingleNotificationTitle', + { + defaultMessage: "Invalidated API key '{name}'", + values: { name: itemsInvalidated[0].name }, + } + ); + toastNotifications.addSuccess(successMessage); + if (onSuccessCallback.current) { + onSuccessCallback.current([...itemsInvalidated]); + } + } + } + + // Surface error notifications + // `error` is generic server error + // `errors` are specific errors with removing particular API keys + if (error || (errors && errors.length)) { + const hasMultipleErrors = (errors && errors.length > 1) || (error && apiKeys.length > 1); + const errorMessage = hasMultipleErrors + ? i18n.translate( + 'xpack.security.management.apiKeys.invalidateApiKey.errorMultipleNotificationTitle', + { + defaultMessage: 'Error deleting {count} apiKeys', + values: { + count: (errors && errors.length) || apiKeys.length, + }, + } + ) + : i18n.translate( + 'xpack.security.management.apiKeys.invalidateApiKey.errorSingleNotificationTitle', + { + defaultMessage: "Error deleting API key '{name}'", + values: { name: (errors && errors[0].name) || apiKeys[0].name }, + } + ); + toastNotifications.addDanger(errorMessage); + } + }; + + const renderModal = () => { + if (!isModalOpen) { + return null; + } + + const isSingle = apiKeys.length === 1; + + return ( + + + {!isSingle ? ( + +

+ {i18n.translate( + 'xpack.security.management.apiKeys.invalidateApiKey.confirmModal.invalidateMultipleListDescription', + { defaultMessage: 'You are about to invalidate these API keys:' } + )} +

+
    + {apiKeys.map(({ name, id }) => ( +
  • {name}
  • + ))} +
+
+ ) : null} +
+
+ ); + }; + + return ( + + {children(invalidateApiKeyPrompt)} + {renderModal()} + + ); +}; diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/index.ts b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/index.ts new file mode 100644 index 0000000000000..faa788342fefa --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { NotEnabled } from './not_enabled'; diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/not_enabled.tsx b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/not_enabled.tsx new file mode 100644 index 0000000000000..c419e15450c1e --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/not_enabled/not_enabled.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { EuiCallOut, EuiLink } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { documentationLinks } from '../../services/documentation_links'; + +export const NotEnabled: React.FunctionComponent = () => ( + + } + color="danger" + iconType="alert" + > + + + + ), + }} + /> + +); diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/index.ts b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/index.ts new file mode 100644 index 0000000000000..8b0bc67f3f777 --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { PermissionDenied } from './permission_denied'; diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/permission_denied.tsx b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/permission_denied.tsx new file mode 100644 index 0000000000000..d406b1684b3ff --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/components/permission_denied/permission_denied.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { EuiEmptyPrompt, EuiFlexGroup, EuiPageContent } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React from 'react'; + +export const PermissionDenied = () => ( + + + + + + } + body={ +

+ +

+ } + /> +
+
+); diff --git a/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/services/documentation_links.ts b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/services/documentation_links.ts new file mode 100644 index 0000000000000..1f03763eb542a --- /dev/null +++ b/x-pack/legacy/plugins/security/public/views/management/api_keys_grid/services/documentation_links.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION } from 'ui/documentation_links'; + +class DocumentationLinksService { + private esDocBasePath = `${ELASTIC_WEBSITE_URL}guide/en/elasticsearch/reference/${DOC_LINK_VERSION}/`; + + public getApiKeyServiceSettingsDocUrl(): string { + return `${this.esDocBasePath}security-settings.html#api-key-service-settings`; + } + + public getCreateApiKeyDocUrl(): string { + return `${this.esDocBasePath}security-api-create-api-key.html`; + } +} + +export const documentationLinks = new DocumentationLinksService(); diff --git a/x-pack/legacy/plugins/security/public/views/management/breadcrumbs.ts b/x-pack/legacy/plugins/security/public/views/management/breadcrumbs.ts index a77c8317c1a2c..7d345ac13dc41 100644 --- a/x-pack/legacy/plugins/security/public/views/management/breadcrumbs.ts +++ b/x-pack/legacy/plugins/security/public/views/management/breadcrumbs.ts @@ -74,3 +74,15 @@ export function getCreateRoleBreadcrumbs() { }, ]; } + +export function getApiKeysBreadcrumbs() { + return [ + MANAGEMENT_BREADCRUMB, + { + text: i18n.translate('xpack.security.apiKeys.breadcrumb', { + defaultMessage: 'API Keys', + }), + href: '#/management/security/api_keys', + }, + ]; +} diff --git a/x-pack/legacy/plugins/security/public/views/management/management.js b/x-pack/legacy/plugins/security/public/views/management/management.js index 7cce644553380..8417191b4ee67 100644 --- a/x-pack/legacy/plugins/security/public/views/management/management.js +++ b/x-pack/legacy/plugins/security/public/views/management/management.js @@ -8,12 +8,13 @@ import 'plugins/security/views/management/change_password_form/change_password_f import 'plugins/security/views/management/password_form/password_form'; import 'plugins/security/views/management/users_grid/users'; import 'plugins/security/views/management/roles_grid/roles'; +import 'plugins/security/views/management/api_keys_grid/api_keys'; import 'plugins/security/views/management/edit_user/edit_user'; import 'plugins/security/views/management/edit_role/index'; import routes from 'ui/routes'; import { xpackInfo } from 'plugins/xpack_main/services/xpack_info'; import '../../services/shield_user'; -import { ROLES_PATH, USERS_PATH } from './management_urls'; +import { ROLES_PATH, USERS_PATH, API_KEYS_PATH } from './management_urls'; import { management } from 'ui/management'; import { i18n } from '@kbn/i18n'; @@ -76,6 +77,18 @@ routes.defaults(/^\/management\/security(\/|$)/, { url: `#${ROLES_PATH}`, }); } + + if (!security.hasItem('apiKeys')) { + security.register('apiKeys', { + name: 'securityApiKeysLink', + order: 30, + display: i18n.translate( + 'xpack.security.management.apiKeysTitle', { + defaultMessage: 'API Keys', + }), + url: `#${API_KEYS_PATH}`, + }); + } } if (!showSecurityLinks) { diff --git a/x-pack/legacy/plugins/security/public/views/management/management_urls.ts b/x-pack/legacy/plugins/security/public/views/management/management_urls.ts index 443b2a313aa5e..ea0cba9f7f3a7 100644 --- a/x-pack/legacy/plugins/security/public/views/management/management_urls.ts +++ b/x-pack/legacy/plugins/security/public/views/management/management_urls.ts @@ -11,3 +11,4 @@ export const EDIT_ROLES_PATH = `${ROLES_PATH}/edit`; export const CLONE_ROLES_PATH = `${ROLES_PATH}/clone`; export const USERS_PATH = `${SECURITY_PATH}/users`; export const EDIT_USERS_PATH = `${USERS_PATH}/edit`; +export const API_KEYS_PATH = `${SECURITY_PATH}/api_keys`; diff --git a/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/get.js b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/get.js new file mode 100644 index 0000000000000..a236badcd0d6b --- /dev/null +++ b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/get.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import Joi from 'joi'; +import { wrapError } from '../../../../../../../../plugins/security/server'; +import { INTERNAL_API_BASE_PATH } from '../../../../../common/constants'; + +export function initGetApiKeysApi(server, callWithRequest, routePreCheckLicenseFn) { + server.route({ + method: 'GET', + path: `${INTERNAL_API_BASE_PATH}/api_key`, + async handler(request) { + try { + const { isAdmin } = request.query; + + const result = await callWithRequest( + request, + 'shield.getAPIKeys', + { + owner: !isAdmin + } + ); + + const validKeys = result.api_keys.filter(({ invalidated }) => !invalidated); + + return { + apiKeys: validKeys, + }; + } catch (error) { + return wrapError(error); + } + }, + config: { + pre: [routePreCheckLicenseFn], + validate: { + query: Joi.object().keys({ + isAdmin: Joi.bool().required(), + }).required(), + }, + } + }); +} diff --git a/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/index.js b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/index.js new file mode 100644 index 0000000000000..ade1f0974096c --- /dev/null +++ b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/index.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { getClient } from '../../../../../../../server/lib/get_client_shield'; +import { routePreCheckLicense } from '../../../../lib/route_pre_check_license'; +import { initCheckPrivilegesApi } from './privileges'; +import { initGetApiKeysApi } from './get'; +import { initInvalidateApiKeysApi } from './invalidate'; + +export function initApiKeysApi(server) { + const callWithRequest = getClient(server).callWithRequest; + const routePreCheckLicenseFn = routePreCheckLicense(server); + + const { authorization } = server.plugins.security; + const { application } = authorization; + + initCheckPrivilegesApi(server, callWithRequest, routePreCheckLicenseFn, application); + initGetApiKeysApi(server, callWithRequest, routePreCheckLicenseFn, application); + initInvalidateApiKeysApi(server, callWithRequest, routePreCheckLicenseFn, application); +} diff --git a/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/invalidate.js b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/invalidate.js new file mode 100644 index 0000000000000..293142c60be67 --- /dev/null +++ b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/invalidate.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import Joi from 'joi'; +import { wrapError } from '../../../../../../../../plugins/security/server'; +import { INTERNAL_API_BASE_PATH } from '../../../../../common/constants'; + +export function initInvalidateApiKeysApi(server, callWithRequest, routePreCheckLicenseFn) { + server.route({ + method: 'POST', + path: `${INTERNAL_API_BASE_PATH}/api_key/invalidate`, + async handler(request) { + try { + const { apiKeys, isAdmin } = request.payload; + const itemsInvalidated = []; + const errors = []; + + // Send the request to invalidate the API key and return an error if it could not be deleted. + const sendRequestToInvalidateApiKey = async (id) => { + try { + const body = { id }; + + if (!isAdmin) { + body.owner = true; + } + + await callWithRequest(request, 'shield.invalidateAPIKey', { body }); + return null; + } catch (error) { + return wrapError(error); + } + }; + + const invalidateApiKey = async ({ id, name }) => { + const error = await sendRequestToInvalidateApiKey(id); + if (error) { + errors.push({ id, name, error }); + } else { + itemsInvalidated.push({ id, name }); + } + }; + + // Invalidate all API keys in parallel. + await Promise.all(apiKeys.map((key) => invalidateApiKey(key))); + + return { + itemsInvalidated, + errors, + }; + } catch (error) { + return wrapError(error); + } + }, + config: { + pre: [routePreCheckLicenseFn], + validate: { + payload: Joi.object({ + apiKeys: Joi.array().items(Joi.object({ + id: Joi.string().required(), + name: Joi.string().required(), + })).required(), + isAdmin: Joi.bool().required(), + }) + }, + } + }); +} diff --git a/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/privileges.js b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/privileges.js new file mode 100644 index 0000000000000..3aa30c9a3b9bb --- /dev/null +++ b/x-pack/legacy/plugins/security/server/routes/api/v1/api_keys/privileges.js @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { wrapError } from '../../../../../../../../plugins/security/server'; +import { INTERNAL_API_BASE_PATH } from '../../../../../common/constants'; + +export function initCheckPrivilegesApi(server, callWithRequest, routePreCheckLicenseFn) { + server.route({ + method: 'GET', + path: `${INTERNAL_API_BASE_PATH}/api_key/privileges`, + async handler(request) { + try { + const result = await Promise.all([ + callWithRequest( + request, + 'shield.hasPrivileges', + { + body: { + cluster: [ + 'manage_security', + 'manage_api_key', + ], + }, + } + ), + new Promise(async (resolve, reject) => { + try { + const result = await callWithRequest( + request, + 'shield.getAPIKeys', + { + owner: true + } + ); + // If the API returns a truthy result that means it's enabled. + resolve({ areApiKeysEnabled: !!result }); + } catch (e) { + // This is a brittle dependency upon message. Tracked by https://github.com/elastic/elasticsearch/issues/47759. + if (e.message.includes('api keys are not enabled')) { + return resolve({ areApiKeysEnabled: false }); + } + + // It's a real error, so rethrow it. + reject(e); + } + }), + ]); + + const [{ + cluster: { + manage_security: manageSecurity, + manage_api_key: manageApiKey, + } + }, { + areApiKeysEnabled, + }] = result; + + const isAdmin = manageSecurity || manageApiKey; + + return { + areApiKeysEnabled, + isAdmin, + }; + } catch (error) { + return wrapError(error); + } + }, + config: { + pre: [routePreCheckLicenseFn] + } + }); +} diff --git a/x-pack/legacy/server/lib/esjs_shield_plugin.js b/x-pack/legacy/server/lib/esjs_shield_plugin.js index 880e055c23985..b6252035aa321 100644 --- a/x-pack/legacy/server/lib/esjs_shield_plugin.js +++ b/x-pack/legacy/server/lib/esjs_shield_plugin.js @@ -502,6 +502,25 @@ ] }); + /** + * Gets API keys in Elasticsearch + * @param {boolean} owner A boolean flag that can be used to query API keys owned by the currently authenticated user. + * Defaults to false. The realm_name or username parameters cannot be specified when this parameter is set to true as + * they are assumed to be the currently authenticated ones. + */ + shield.getAPIKeys = ca({ + method: 'GET', + urls: [{ + fmt: `/_security/api_key?owner=<%=owner%>`, + req: { + owner: { + type: 'boolean', + required: true + } + } + }] + }); + /** * Creates an API key in Elasticsearch for the current user. * From 507324b3167ffe6abd56de1a28d541e743da38b3 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 15 Oct 2019 01:00:06 +0100 Subject: [PATCH 14/46] chore(NA): set back older terser defaults on new major version (#48140) --- src/optimize/base_optimizer.js | 4 +++- src/optimize/dynamic_dll_plugin/dll_config_model.js | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/optimize/base_optimizer.js b/src/optimize/base_optimizer.js index f88e05ab91dde..0e7d03498c0aa 100644 --- a/src/optimize/base_optimizer.js +++ b/src/optimize/base_optimizer.js @@ -479,8 +479,10 @@ export default class BaseOptimizer { optimization: { minimizer: [ new TerserPlugin({ - parallel: true, + parallel: this.getThreadLoaderPoolConfig().workers, sourceMap: false, + cache: false, + extractComments: false, terserOptions: { compress: false, mangle: false diff --git a/src/optimize/dynamic_dll_plugin/dll_config_model.js b/src/optimize/dynamic_dll_plugin/dll_config_model.js index 46aa472b5ae56..cb1f9be9b16c9 100644 --- a/src/optimize/dynamic_dll_plugin/dll_config_model.js +++ b/src/optimize/dynamic_dll_plugin/dll_config_model.js @@ -224,6 +224,8 @@ function optimized(config) { // the parallel processes on terser parallel: config.threadLoaderPoolConfig.workers, sourceMap: false, + cache: false, + extractComments: false, terserOptions: { compress: { // The following is required for dead-code the removal From d8f0ed58380121f0587bae59b36638663251976c Mon Sep 17 00:00:00 2001 From: Nathan L Smith Date: Mon, 14 Oct 2019 21:40:39 -0500 Subject: [PATCH 15/46] [APM] Use same colors for HTTP status everywhere (#47915) * [APM] Use same colors for HTTP status everywhere Use the same colors on the RPM/TPM graphs as in the status code badge. Fixes #47817. * don't export that const * Change colors * Remove unused import --- .../__test__/HttpStatusBadge.test.tsx | 32 ++++++++++----- .../shared/Summary/HttpStatusBadge/index.tsx | 23 +---------- .../__tests__/chartSelectors.test.ts | 27 ++++++++----- .../apm/public/selectors/chartSelectors.ts | 16 +++----- .../apm/public/utils/httpStatusCodeToColor.ts | 40 +++++++++++++++++++ 5 files changed, 85 insertions(+), 53 deletions(-) create mode 100644 x-pack/legacy/plugins/apm/public/utils/httpStatusCodeToColor.ts diff --git a/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/__test__/HttpStatusBadge.test.tsx b/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/__test__/HttpStatusBadge.test.tsx index a9400a8753b14..247e1c253d292 100644 --- a/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/__test__/HttpStatusBadge.test.tsx +++ b/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/__test__/HttpStatusBadge.test.tsx @@ -6,56 +6,66 @@ import React from 'react'; import { mount } from 'enzyme'; -import theme from '@elastic/eui/dist/eui_theme_light.json'; import { HttpStatusBadge } from '../index'; +import { + successColor, + neutralColor, + warningColor, + errorColor +} from '../../../../../utils/httpStatusCodeToColor'; describe('HttpStatusBadge', () => { describe('render', () => { describe('with status code 100', () => { - it('renders with the dark shade color', () => { + it('renders with neutral color', () => { const wrapper = mount(); expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( - theme.euiColorDarkShade + neutralColor ); }); }); + describe('with status code 200', () => { - it('renders with Secondary color', () => { + it('renders with success color', () => { const wrapper = mount(); expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( - theme.euiColorSecondary + successColor ); }); }); + describe('with status code 301', () => { - it('renders with dark shade color', () => { + it('renders with neutral color', () => { const wrapper = mount(); expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( - theme.euiColorDarkShade + neutralColor ); }); }); + describe('with status code 404', () => { - it('renders with Warning color', () => { + it('renders with warning color', () => { const wrapper = mount(); expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( - theme.euiColorWarning + warningColor ); }); }); + describe('with status code 502', () => { - it('renders with Danger color', () => { + it('renders with error color', () => { const wrapper = mount(); expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( - theme.euiColorDanger + errorColor ); }); }); + describe('with other status code', () => { it('renders with default color', () => { const wrapper = mount(); diff --git a/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/index.tsx b/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/index.tsx index 9c351e1645d1b..76ec7565fb80e 100644 --- a/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/shared/Summary/HttpStatusBadge/index.tsx @@ -7,27 +7,8 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiToolTip, EuiBadge } from '@elastic/eui'; -import theme from '@elastic/eui/dist/eui_theme_light.json'; import { statusCodes } from './statusCodes'; - -const { - euiColorDarkShade, - euiColorSecondary, - euiColorWarning, - euiColorDanger -} = theme; - -function getStatusColor(status: number) { - const colors: { [key: string]: string } = { - 1: euiColorDarkShade, - 2: euiColorSecondary, - 3: euiColorDarkShade, - 4: euiColorWarning, - 5: euiColorDanger - }; - - return colors[status.toString().substr(0, 1)] || 'default'; -} +import { httpStatusCodeToColor } from '../../../../utils/httpStatusCodeToColor'; interface HttpStatusBadgeProps { status: number; @@ -39,7 +20,7 @@ export function HttpStatusBadge({ status }: HttpStatusBadgeProps) { return ( - + {status} {statusCodes[status.toString()]} diff --git a/x-pack/legacy/plugins/apm/public/selectors/__tests__/chartSelectors.test.ts b/x-pack/legacy/plugins/apm/public/selectors/__tests__/chartSelectors.test.ts index 741cb5f8415e8..80a1b96efb3d6 100644 --- a/x-pack/legacy/plugins/apm/public/selectors/__tests__/chartSelectors.test.ts +++ b/x-pack/legacy/plugins/apm/public/selectors/__tests__/chartSelectors.test.ts @@ -10,6 +10,11 @@ import { getResponseTimeSeries, getTpmSeries } from '../chartSelectors'; +import { + successColor, + warningColor, + errorColor +} from '../../utils/httpStatusCodeToColor'; describe('chartSelectors', () => { describe('getAnomalyScoreSeries', () => { @@ -93,21 +98,21 @@ describe('chartSelectors', () => { it('produces correct series', () => { expect(getTpmSeries(apmTimeseries, transactionType)).toEqual([ { - color: '#00b3a4', + color: successColor, data: [{ x: 0, y: 5 }, { x: 0, y: 2 }], legendValue: '3.5 tpm', title: 'HTTP 2xx', type: 'linemark' }, { - color: '#f98510', + color: warningColor, data: [{ x: 0, y: 1 }], legendValue: '1.0 tpm', title: 'HTTP 4xx', type: 'linemark' }, { - color: '#db1374', + color: errorColor, data: [{ x: 0, y: 0 }], legendValue: '0.0 tpm', title: 'HTTP 5xx', @@ -124,7 +129,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis0); + ).toEqual(theme.euiColorSecondary); }); }); @@ -136,7 +141,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis0); + ).toEqual(theme.euiColorSecondary); }); }); @@ -148,7 +153,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis0); + ).toEqual(theme.euiColorSecondary); }); }); @@ -160,7 +165,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis0); + ).toEqual(theme.euiColorSecondary); }); }); @@ -172,7 +177,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis2); + ).toEqual(theme.euiColorDanger); }); }); @@ -184,7 +189,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis2); + ).toEqual(theme.euiColorDanger); }); }); @@ -196,7 +201,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis2); + ).toEqual(theme.euiColorDanger); }); }); @@ -208,7 +213,7 @@ describe('chartSelectors', () => { ...apmTimeseries, tpmBuckets: [{ key, dataPoints: [{ x: 0, y: 0 }] }] })[0].color - ).toEqual(theme.euiColorVis2); + ).toEqual(theme.euiColorDanger); }); }); diff --git a/x-pack/legacy/plugins/apm/public/selectors/chartSelectors.ts b/x-pack/legacy/plugins/apm/public/selectors/chartSelectors.ts index a614d396b196e..4b65190d8ef22 100644 --- a/x-pack/legacy/plugins/apm/public/selectors/chartSelectors.ts +++ b/x-pack/legacy/plugins/apm/public/selectors/chartSelectors.ts @@ -20,6 +20,7 @@ import { import { asDecimal, asMillis, tpmUnit } from '../utils/formatters'; import { IUrlParams } from '../context/UrlParamsContext/types'; import { getEmptySeries } from '../components/shared/charts/CustomPlot/getEmptySeries'; +import { httpStatusCodeToColor } from '../utils/httpStatusCodeToColor'; export interface ITpmBucket { title: string; @@ -181,21 +182,16 @@ export function getTpmSeries( function colorMatch(key: string) { if (/ok|success/i.test(key)) { - return theme.euiColorVis0; + return theme.euiColorSecondary; } else if (/error|fail/i.test(key)) { - return theme.euiColorVis2; + return theme.euiColorDanger; } } function getColorByKey(keys: string[]) { - const assignedColors: StringMap = { - 'HTTP 2xx': theme.euiColorVis0, - 'HTTP 3xx': theme.euiColorVis5, - 'HTTP 4xx': theme.euiColorVis7, - 'HTTP 5xx': theme.euiColorVis2 - }; + const assignedColors = ['HTTP 2xx', 'HTTP 3xx', 'HTTP 4xx', 'HTTP 5xx']; - const unknownKeys = difference(keys, Object.keys(assignedColors)); + const unknownKeys = difference(keys, assignedColors); const unassignedColors: StringMap = zipObject(unknownKeys, [ theme.euiColorVis1, theme.euiColorVis3, @@ -206,5 +202,5 @@ function getColorByKey(keys: string[]) { ]); return (key: string) => - colorMatch(key) || assignedColors[key] || unassignedColors[key]; + colorMatch(key) || httpStatusCodeToColor(key) || unassignedColors[key]; } diff --git a/x-pack/legacy/plugins/apm/public/utils/httpStatusCodeToColor.ts b/x-pack/legacy/plugins/apm/public/utils/httpStatusCodeToColor.ts new file mode 100644 index 0000000000000..db1ed490eb7f2 --- /dev/null +++ b/x-pack/legacy/plugins/apm/public/utils/httpStatusCodeToColor.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import theme from '@elastic/eui/dist/eui_theme_light.json'; +import { StringMap } from '../../typings/common'; + +const { euiColorDarkShade, euiColorWarning } = theme; + +export const errorColor = '#c23c2b'; +export const neutralColor = euiColorDarkShade; +export const successColor = '#327a42'; +export const warningColor = euiColorWarning; + +const httpStatusCodeColors: StringMap = { + 1: neutralColor, + 2: successColor, + 3: neutralColor, + 4: warningColor, + 5: errorColor +}; + +function getStatusColor(status: number) { + return httpStatusCodeColors[status.toString().substr(0, 1)]; +} + +/** + * Convert an HTTP status code to a color. + * + * If passed a string, it will remove all non-numeric characters + */ +export function httpStatusCodeToColor(status: string | number) { + if (typeof status === 'string') { + return getStatusColor(parseInt(status.replace(/\D/g, ''), 10)); + } else { + return getStatusColor(status); + } +} From b9d2dbae1ef68f655063c10464d40c3b6f9ffa53 Mon Sep 17 00:00:00 2001 From: Yulong Date: Tue, 15 Oct 2019 12:34:12 +0800 Subject: [PATCH 16/46] [Code] fix diff api (#48190) --- x-pack/legacy/plugins/code/server/git_operations.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/x-pack/legacy/plugins/code/server/git_operations.ts b/x-pack/legacy/plugins/code/server/git_operations.ts index c303e5656c551..54f32ed9b100c 100644 --- a/x-pack/legacy/plugins/code/server/git_operations.ts +++ b/x-pack/legacy/plugins/code/server/git_operations.ts @@ -317,6 +317,9 @@ export class GitOperations { public async getCommitDiff(uri: string, revision: string): Promise { const git = await this.openGit(uri); const commit = await this.getCommitOr404(uri, revision); + if (!revision.includes('..')) { + revision = `${revision}..${revision}~1`; + } const diffs = await git.diffSummary([revision]); const commitDiff: CommitDiff = { From 7ea28a561b6da0e4ccefeb6e73e041ff08a0ca60 Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Tue, 15 Oct 2019 09:29:35 +0200 Subject: [PATCH 17/46] fix config reload for legacy plugin. failed due to ES fields validation (#48080) --- src/core/server/legacy/legacy_service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts index 08b0ebc6501ec..500f50fcd8315 100644 --- a/src/core/server/legacy/legacy_service.ts +++ b/src/core/server/legacy/legacy_service.ts @@ -116,7 +116,7 @@ export class LegacyService implements CoreService { this.update$ = this.coreContext.configService.getConfig$().pipe( tap(config => { if (this.kbnServer !== undefined) { - this.kbnServer.applyLoggingConfiguration(config.toRaw()); + this.kbnServer.applyLoggingConfiguration(getLegacyRawConfig(config)); } }), tap({ error: err => this.log.error(err) }), From 47f5e552cc47234a6817c38df2dd83011faa848d Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Tue, 15 Oct 2019 09:08:02 +0100 Subject: [PATCH 18/46] [ML] Adding datafeed validation to advanced wizard (#48050) * [ML] Adding datafeed validation to advanced wizard * shared invalid time format message * updating translations * adding time format validation function --- .../plugins/ml/common/util/job_utils.js | 47 ++++++++++++------- .../common/job_validator/job_validator.ts | 21 +++++++-- .../new_job_new/common/job_validator/util.ts | 45 ++++++++++++------ .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 5 files changed, 76 insertions(+), 39 deletions(-) diff --git a/x-pack/legacy/plugins/ml/common/util/job_utils.js b/x-pack/legacy/plugins/ml/common/util/job_utils.js index 518e95b405648..2bc8bfaff566e 100644 --- a/x-pack/legacy/plugins/ml/common/util/job_utils.js +++ b/x-pack/legacy/plugins/ml/common/util/job_utils.js @@ -380,15 +380,15 @@ export function basicJobValidation(job, fields, limits, skipMmlChecks = false) { messages.push({ id: 'bucket_span_empty' }); valid = false; } else { - const bucketSpan = parseInterval(job.analysis_config.bucket_span, false); - if (bucketSpan === null || bucketSpan.asMilliseconds() === 0) { - messages.push({ id: 'bucket_span_invalid' }); - valid = false; - } else { + if (isValidTimeFormat(job.analysis_config.bucket_span)) { messages.push({ id: 'bucket_span_valid', bucketSpan: job.analysis_config.bucket_span }); + + } else { + messages.push({ id: 'bucket_span_invalid' }); + valid = false; } } @@ -440,26 +440,29 @@ export function basicJobValidation(job, fields, limits, skipMmlChecks = false) { export function basicDatafeedValidation(datafeed) { const messages = []; - const valid = true; + let valid = true; if (datafeed) { - // if (_.isEmpty(datafeed.query)) { - // messages.push({ id: 'query_empty' }); - // valid = false; - // } else if (isValidJson(datafeed.query) === false) { - // messages.push({ id: 'query_invalid' }); - // valid = false; - // } else { - // messages.push({ id: 'query_valid' }); - // } - messages.push({ id: 'query_delay_valid' }); + let queryDelayMessage = { id: 'query_delay_valid' }; + if (isValidTimeFormat(datafeed.query_delay) === false) { + queryDelayMessage = { id: 'query_delay_invalid' }; + valid = false; + } + messages.push(queryDelayMessage); + + let frequencyMessage = { id: 'frequency_valid' }; + if (isValidTimeFormat(datafeed.frequency) === false) { + frequencyMessage = { id: 'frequency_invalid' }; + valid = false; + } + messages.push(frequencyMessage); } return { messages, valid, - contains: id => (messages.some(m => id === m.id)), - find: id => (messages.find(m => id === m.id)), + contains: id => messages.some(m => id === m.id), + find: id => messages.find(m => id === m.id), }; } @@ -532,6 +535,14 @@ export function validateGroupNames(job) { }; } +function isValidTimeFormat(value) { + if (value === undefined) { + return true; + } + const interval = parseInterval(value, false); + return (interval !== null && interval.asMilliseconds() !== 0); +} + // Returns the latest of the last source data and last processed bucket timestamp, // as used for example in setting the end time of results views for cases where // anomalies might have been raised after the point at which data ingest has stopped. diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts index 88b7a66a623ed..edc41789ca9ad 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts @@ -42,6 +42,7 @@ export class JobValidator { private _jobCreator: JobCreatorType; private _validationSummary: ValidationSummary; private _lastJobConfig: string; + private _lastDatafeedConfig: string; private _validateTimeout: ReturnType | null = null; private _existingJobsAndGroups: ExistingJobsAndGroups; private _basicValidations: BasicValidations = { @@ -60,6 +61,7 @@ export class JobValidator { constructor(jobCreator: JobCreatorType, existingJobsAndGroups: ExistingJobsAndGroups) { this._jobCreator = jobCreator; this._lastJobConfig = this._jobCreator.formattedJobJson; + this._lastDatafeedConfig = this._jobCreator.formattedDatafeedJson; this._validationSummary = { basic: false, advanced: false, @@ -70,13 +72,19 @@ export class JobValidator { public validate(callback: () => void, forceValidate: boolean = false) { this._validating = true; const formattedJobConfig = this._jobCreator.formattedJobJson; + const formattedDatafeedConfig = this._jobCreator.formattedDatafeedJson; // only validate if the config has changed - if (forceValidate || formattedJobConfig !== this._lastJobConfig) { + if ( + forceValidate || + formattedJobConfig !== this._lastJobConfig || + formattedDatafeedConfig !== this._lastDatafeedConfig + ) { if (this._validateTimeout !== null) { // clear any previous on going validation timeouts clearTimeout(this._validateTimeout); } this._lastJobConfig = formattedJobConfig; + this._lastDatafeedConfig = formattedDatafeedConfig; this._validateTimeout = setTimeout(() => { this._runBasicValidation(); this._validating = false; @@ -107,10 +115,15 @@ export class JobValidator { // run standard basic validation const basicJobResults = basicJobValidation(jobConfig, undefined, limits); - populateValidationMessages(basicJobResults, this._basicValidations, jobConfig); + populateValidationMessages(basicJobResults, this._basicValidations, jobConfig, datafeedConfig); const basicDatafeedResults = basicDatafeedValidation(datafeedConfig); - populateValidationMessages(basicDatafeedResults, this._basicValidations, jobConfig); + populateValidationMessages( + basicDatafeedResults, + this._basicValidations, + jobConfig, + datafeedConfig + ); // run addition job and group id validation const idResults = checkForExistingJobAndGroupIds( @@ -118,7 +131,7 @@ export class JobValidator { this._jobCreator.groups, this._existingJobsAndGroups ); - populateValidationMessages(idResults, this._basicValidations, jobConfig); + populateValidationMessages(idResults, this._basicValidations, jobConfig, datafeedConfig); this._validationSummary.basic = this._isOverallBasicValid(); } diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts index ca85e776fcf49..0e913ad5da18d 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts @@ -6,7 +6,7 @@ import { i18n } from '@kbn/i18n'; import { BasicValidations } from './job_validator'; -import { Job } from '../job_creator/configs'; +import { Job, Datafeed } from '../job_creator/configs'; import { ALLOWED_DATA_UNITS, JOB_ID_MAX_LENGTH } from '../../../../../common/constants/validation'; import { newJobLimits } from '../../../new_job/utils/new_job_defaults'; import { ValidationResults, ValidationMessage } from '../../../../../common/util/job_utils'; @@ -15,7 +15,8 @@ import { ExistingJobsAndGroups } from '../../../../services/job_service'; export function populateValidationMessages( validationResults: ValidationResults, basicValidations: BasicValidations, - jobConfig: Job + jobConfig: Job, + datafeedConfig: Datafeed ) { const limits = newJobLimits(); @@ -136,20 +137,9 @@ export function populateValidationMessages( basicValidations.bucketSpan.message = msg; } else if (validationResults.contains('bucket_span_invalid')) { basicValidations.bucketSpan.valid = false; - const msg = i18n.translate( - 'xpack.ml.newJob.wizard.validateJob.bucketSpanInvalidTimeIntervalFormatErrorMessage', - { - defaultMessage: - '{bucketSpan} is not a valid time interval format e.g. {tenMinutes}, {oneHour}. It also needs to be higher than zero.', - values: { - bucketSpan: jobConfig.analysis_config.bucket_span, - tenMinutes: '10m', - oneHour: '1h', - }, - } + basicValidations.bucketSpan.message = invalidTimeFormatMessage( + jobConfig.analysis_config.bucket_span ); - - basicValidations.bucketSpan.message = msg; } if (validationResults.contains('query_empty')) { @@ -165,6 +155,16 @@ export function populateValidationMessages( }); basicValidations.query.message = msg; } + + if (validationResults.contains('query_delay_invalid')) { + basicValidations.queryDelay.valid = false; + basicValidations.queryDelay.message = invalidTimeFormatMessage(datafeedConfig.query_delay); + } + + if (validationResults.contains('frequency_invalid')) { + basicValidations.frequency.valid = false; + basicValidations.frequency.message = invalidTimeFormatMessage(datafeedConfig.frequency); + } } export function checkForExistingJobAndGroupIds( @@ -196,3 +196,18 @@ export function checkForExistingJobAndGroupIds( find: (id: string) => messages.find(m => id === m.id), }; } + +function invalidTimeFormatMessage(value: string | undefined) { + return i18n.translate( + 'xpack.ml.newJob.wizard.validateJob.frequencyInvalidTimeIntervalFormatErrorMessage', + { + defaultMessage: + '{value} is not a valid time interval format e.g. {tenMinutes}, {oneHour}. It also needs to be higher than zero.', + values: { + value, + tenMinutes: '10m', + oneHour: '1h', + }, + } + ); +} diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index c6cf439c20b9b..2237b99c0dc31 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7380,7 +7380,6 @@ "xpack.ml.newJob.wizard.summaryStep.viewResultsButton": "結果を表示", "xpack.ml.newJob.wizard.timeRangeStep.timeRangePicker.endDateLabel": "終了日", "xpack.ml.newJob.wizard.timeRangeStep.timeRangePicker.startDateLabel": "開始日", - "xpack.ml.newJob.wizard.validateJob.bucketSpanInvalidTimeIntervalFormatErrorMessage": "{bucketSpan} は有効な時間間隔のフォーマット (例: {tenMinutes}、{oneHour}) ではありません。また、0 よりも大きい数字である必要があります。", "xpack.ml.newJob.wizard.validateJob.bucketSpanMustBeSetErrorMessage": "バケットスパンを設定する必要があります", "xpack.ml.newJob.wizard.validateJob.duplicatedDetectorsErrorMessage": "重複する検知器が検出されました。", "xpack.ml.newJob.wizard.validateJob.groupNameAlreadyExists": "グループ ID が既に存在します。グループ ID は既存のジョブやグループと同じにできません。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 5e34e8d6eec3d..9f51feaedc8bb 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7483,7 +7483,6 @@ "xpack.ml.newJob.wizard.summaryStep.viewResultsButton": "查看结果", "xpack.ml.newJob.wizard.timeRangeStep.timeRangePicker.endDateLabel": "结束日期", "xpack.ml.newJob.wizard.timeRangeStep.timeRangePicker.startDateLabel": "开始日期", - "xpack.ml.newJob.wizard.validateJob.bucketSpanInvalidTimeIntervalFormatErrorMessage": "{bucketSpan} 不是有效的时间间隔格式,例如,{tenMinutes}、{oneHour}。它还需要大于零。", "xpack.ml.newJob.wizard.validateJob.bucketSpanMustBeSetErrorMessage": "必须设置存储桶跨度", "xpack.ml.newJob.wizard.validateJob.duplicatedDetectorsErrorMessage": "找到重复的检测工具。", "xpack.ml.newJob.wizard.validateJob.groupNameAlreadyExists": "组 ID 已存在。组 ID 不能与现有作业或组相同。", From 16e386b445cd6e6f0de322e4c628b6c461eb9254 Mon Sep 17 00:00:00 2001 From: Steph Milovic Date: Tue, 15 Oct 2019 01:30:14 -0700 Subject: [PATCH 19/46] do not update on network page (#48188) --- .../page/network/network_top_n_flow_table/index.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.tsx b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.tsx index e2257a6a6166c..b38b261e85743 100644 --- a/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.tsx +++ b/x-pack/legacy/plugins/siem/public/components/page/network/network_top_n_flow_table/index.tsx @@ -109,7 +109,9 @@ const NetworkTopNFlowTableComponent = React.memo( updateTopNFlowSort, }) => { useEffect(() => { - setIpDetailsTablesActivePageToZero(null); + if (ip && activePage !== 0) { + setIpDetailsTablesActivePageToZero(null); + } }, [ip]); const onChange = (criteria: Criteria, tableType: networkModel.TopNTableType) => { if (criteria.sort != null) { From 92917c1c19040c47daca3be10b280ce08d96a135 Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Tue, 15 Oct 2019 10:51:45 +0200 Subject: [PATCH 20/46] Document custom validation for http request (#47699) * document custom validation for http request * generate docs --- .../kibana-plugin-server.routeconfig.md | 2 +- ...bana-plugin-server.routeconfig.validate.md | 32 ++++++++++++++-- src/core/server/http/router/route.ts | 37 +++++++++++++++++-- 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/docs/development/core/server/kibana-plugin-server.routeconfig.md b/docs/development/core/server/kibana-plugin-server.routeconfig.md index 87ec365dc2510..84fa52719e3a9 100644 --- a/docs/development/core/server/kibana-plugin-server.routeconfig.md +++ b/docs/development/core/server/kibana-plugin-server.routeconfig.md @@ -18,5 +18,5 @@ export interface RouteConfig

RouteConfigOptions | Additional route options [RouteConfigOptions](./kibana-plugin-server.routeconfigoptions.md). | | [path](./kibana-plugin-server.routeconfig.path.md) | string | The endpoint \_within\_ the router path to register the route. E.g. if the router is registered at /elasticsearch and the route path is /search, the full path for the route is /elasticsearch/search. Supports: - named path segments path/{name}. - optional path segments path/{position?}. - multi-segments path/{coordinates*2}. Segments are accessible within a handler function as params property of [KibanaRequest](./kibana-plugin-server.kibanarequest.md) object. To have read access to params you \*must\* specify validation schema with [RouteConfig.validate](./kibana-plugin-server.routeconfig.validate.md). | -| [validate](./kibana-plugin-server.routeconfig.validate.md) | RouteSchemas<P, Q, B> | false | A schema created with @kbn/config-schema that every request will be validated against. You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify false. | +| [validate](./kibana-plugin-server.routeconfig.validate.md) | RouteSchemas<P, Q, B> | false | A schema created with @kbn/config-schema that every request will be validated against. You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify validate: false. In this case request params, query, and body will be \*\*empty\*\* objects and have no access to raw values. In some cases you may want to use another validation library. To do this, you need to instruct the @kbn/config-schema library to output \*\*non-validated values\*\* with setting schema as schema.object({}, { allowUnknowns: true }); | diff --git a/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md b/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md index f7177485f5fb6..8f8301e159e7e 100644 --- a/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md +++ b/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md @@ -4,7 +4,7 @@ ## RouteConfig.validate property -A schema created with `@kbn/config-schema` that every request will be validated against. You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify `false`. +A schema created with `@kbn/config-schema` that every request will be validated against. You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify `validate: false`. In this case request params, query, and body will be \*\*empty\*\* objects and have no access to raw values. In some cases you may want to use another validation library. To do this, you need to instruct the `@kbn/config-schema` library to output \*\*non-validated values\*\* with setting schema as `schema.object({}, { allowUnknowns: true })`; Signature: @@ -18,7 +18,7 @@ validate: RouteSchemas | false; ```ts import { schema } from '@kbn/config-schema'; router.get({ - path: 'path/{id}' + path: 'path/{id}', validate: { params: schema.object({ id: schema.string(), @@ -26,7 +26,33 @@ validate: RouteSchemas | false; query: schema.object({...}), body: schema.object({...}), }, - }) +}, +(context, req, res,) { + req.params; // type Readonly<{id: string}> + console.log(req.params.id); // value +}); + +router.get({ + path: 'path/{id}', + validate: false, // handler has no access to params, query, body values. +}, +(context, req, res,) { + req.params; // type Readonly<{}>; + console.log(req.params.id); // undefined +}); + +router.get({ + path: 'path/{id}', + validate: { + // handler has access to raw non-validated params in runtime + params: schema.object({}, { allowUnknowns: true }) + }, +}, +(context, req, res,) { + req.params; // type Readonly<{}>; + console.log(req.params.id); // value + myValidationLibrary.validate({ params: req.params }); +}); ``` diff --git a/src/core/server/http/router/route.ts b/src/core/server/http/router/route.ts index e805356014829..7734c80dd9346 100644 --- a/src/core/server/http/router/route.ts +++ b/src/core/server/http/router/route.ts @@ -68,12 +68,17 @@ export interface RouteConfig

+ * console.log(req.params.id); // value + * }); + * + * router.get({ + * path: 'path/{id}', + * validate: false, // handler has no access to params, query, body values. + * }, + * (context, req, res,) { + * req.params; // type Readonly<{}>; + * console.log(req.params.id); // undefined + * }); + * + * router.get({ + * path: 'path/{id}', + * validate: { + * // handler has access to raw non-validated params in runtime + * params: schema.object({}, { allowUnknowns: true }) + * }, + * }, + * (context, req, res,) { + * req.params; // type Readonly<{}>; + * console.log(req.params.id); // value + * myValidationLibrary.validate({ params: req.params }); + * }); * ``` */ validate: RouteSchemas | false; From a8ce1db62b04bb047753dfaa51fc7a594aff1ec6 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Tue, 15 Oct 2019 10:54:44 +0200 Subject: [PATCH 21/46] Added track_total_hits autocomplete (#48146) --- .../core_plugins/console/server/api_server/es_6_0/search.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/legacy/core_plugins/console/server/api_server/es_6_0/search.js b/src/legacy/core_plugins/console/server/api_server/es_6_0/search.js index f77144b1524c6..71cc9626a273c 100644 --- a/src/legacy/core_plugins/console/server/api_server/es_6_0/search.js +++ b/src/legacy/core_plugins/console/server/api_server/es_6_0/search.js @@ -189,6 +189,7 @@ export default function (api) { stats: [''], timeout: '1s', version: { __one_of: [true, false] }, + track_total_hits: { __one_of: [true, false] }, }, }); From e469cd65fa85807286643bc62372451350d1e17f Mon Sep 17 00:00:00 2001 From: ffknob Date: Tue, 15 Oct 2019 06:00:22 -0300 Subject: [PATCH 22/46] log stacktrace comes from _.error and not _error.exceptio[0] (#48185) --- .../components/app/ErrorGroupDetails/DetailView/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx index 3f009a990afa5..41fffc3b847b1 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx @@ -189,7 +189,7 @@ export function TabContent({ }) { const codeLanguage = idx(error, _ => _.service.language.name); const excStackframes = idx(error, _ => _.error.exception[0].stacktrace); - const logStackframes = idx(error, _ => _.error.exception[0].stacktrace); + const logStackframes = idx(error, _ => _.error.log.stacktrace); switch (currentTab.key) { case logStacktraceTab.key: From 2ed0ccb6d240abfbd61ddea03d80938a49f6df3a Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Tue, 15 Oct 2019 14:28:15 +0300 Subject: [PATCH 23/46] Prepare data.indexPatterns for move to NP (#48083) Replace ui/saved_objects by core.savedObjects --- .../components/index_pattern_select.tsx | 12 +---- .../index_patterns/index_pattern.ts | 7 ++- .../index_patterns/index_patterns.test.ts | 6 --- .../index_patterns/index_patterns_service.ts | 3 ++ .../data/public/index_patterns/utils.ts | 46 ++++++++++++++++++- .../public/vega_visualization.js | 5 +- 6 files changed, 55 insertions(+), 24 deletions(-) diff --git a/src/legacy/core_plugins/data/public/index_patterns/components/index_pattern_select.tsx b/src/legacy/core_plugins/data/public/index_patterns/components/index_pattern_select.tsx index c6f3a6e35bc43..77692d7bcaa0d 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/components/index_pattern_select.tsx +++ b/src/legacy/core_plugins/data/public/index_patterns/components/index_pattern_select.tsx @@ -22,6 +22,7 @@ import React, { Component } from 'react'; import { EuiComboBox } from '@elastic/eui'; import { SavedObjectsClientContract, SimpleSavedObject } from '../../../../../../core/public'; +import { getIndexPatternTitle } from '../utils'; interface IndexPatternSelectProps { onChange: (opt: any) => void; @@ -54,17 +55,6 @@ const getIndexPatterns = async ( return resp.savedObjects; }; -const getIndexPatternTitle = async ( - client: SavedObjectsClientContract, - indexPatternId: string -): Promise> => { - const savedObject = (await client.get('index-pattern', indexPatternId)) as SimpleSavedObject; - if (savedObject.error) { - throw new Error(`Unable to get index-pattern title: ${savedObject.error.message}`); - } - return savedObject.attributes.title; -}; - // Takes in stateful runtime dependencies and pre-wires them to the component export function createIndexPatternSelect(savedObjectsClient: SavedObjectsClientContract) { return (props: Omit) => ( diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.ts b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.ts index a5e02e43adf56..35ec4bad68e14 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.ts @@ -23,10 +23,10 @@ import { i18n } from '@kbn/i18n'; import { fieldFormats } from 'ui/registry/field_formats'; // @ts-ignore import { expandShorthand } from 'ui/utils/mapping_setup'; -import { findObjectByTitle } from 'ui/saved_objects'; + import { NotificationsSetup, SavedObjectsClientContract } from 'src/core/public'; import { SavedObjectNotFound, DuplicateField } from '../../../../../../plugins/kibana_utils/public'; - +import { findIndexPatternByTitle } from '../utils'; import { IndexPatternMissingIndices } from '../errors'; import { Field, FieldList, FieldType, FieldListInterface } from '../fields'; import { createFieldsFetcher } from './_fields_fetcher'; @@ -387,9 +387,8 @@ export class IndexPattern implements StaticIndexPattern { return response.id; }; - const potentialDuplicateByTitle = await findObjectByTitle( + const potentialDuplicateByTitle = await findIndexPatternByTitle( this.savedObjectsClient, - type, this.title ); // If there is potentially duplicate title, just create it diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_patterns.test.ts b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_patterns.test.ts index d2deaa92e2b40..f573f33ef7a52 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_patterns.test.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_patterns.test.ts @@ -36,12 +36,6 @@ jest.mock('ui/registry/field_formats', () => ({ }, })); -jest.mock('ui/notify', () => ({ - toastNotifications: { - addDanger: jest.fn(), - }, -})); - jest.mock('./index_pattern', () => { class IndexPattern { init = async () => { diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts b/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts index 17a0f45865d11..562dcb248edae 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts @@ -108,3 +108,6 @@ export type IndexPatternsStart = ReturnType; /** @public */ export { IndexPattern, IndexPatterns, StaticIndexPattern, Field, FieldType, FieldListInterface }; + +/** @public */ +export { getIndexPatternTitle, findIndexPatternByTitle } from './utils'; diff --git a/src/legacy/core_plugins/data/public/index_patterns/utils.ts b/src/legacy/core_plugins/data/public/index_patterns/utils.ts index 237b8386e7561..62f5ddbe9e2b0 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/utils.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/utils.ts @@ -17,12 +17,14 @@ * under the License. */ -import { get } from 'lodash'; +import { find, get } from 'lodash'; import { Field, FieldType } from './fields'; import { StaticIndexPattern } from './index_patterns'; import { getFilterableKbnTypeNames } from '../../../../../plugins/data/public'; +import { SavedObjectsClientContract, SimpleSavedObject } from '../../../../../core/public'; + export const ILLEGAL_CHARACTERS = 'ILLEGAL_CHARACTERS'; export const CONTAINS_SPACES = 'CONTAINS_SPACES'; export const INDEX_PATTERN_ILLEGAL_CHARACTERS_VISIBLE = ['\\', '/', '?', '"', '<', '>', '|']; @@ -44,6 +46,48 @@ function findIllegalCharacters(indexPattern: string): string[] { return illegalCharacters; } +/** + * Returns an object matching a given title + * + * @param client {SavedObjectsClientContract} + * @param title {string} + * @returns {Promise} + */ +export async function findIndexPatternByTitle( + client: SavedObjectsClientContract, + title: string +): Promise | void> { + if (!title) { + return Promise.resolve(); + } + + const { savedObjects } = await client.find({ + type: 'index-pattern', + perPage: 10, + search: `"${title}"`, + searchFields: ['title'], + fields: ['title'], + }); + + return find( + savedObjects, + (obj: SimpleSavedObject) => obj.get('title').toLowerCase() === title.toLowerCase() + ); +} + +export async function getIndexPatternTitle( + client: SavedObjectsClientContract, + indexPatternId: string +): Promise> { + const savedObject = (await client.get('index-pattern', indexPatternId)) as SimpleSavedObject; + + if (savedObject.error) { + throw new Error(`Unable to get index-pattern title: ${savedObject.error.message}`); + } + + return savedObject.attributes.title; +} + function indexPatternContainsSpaces(indexPattern: string): boolean { return indexPattern.includes(' '); } diff --git a/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js b/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js index ac1c67b512df1..1dc73d6f9ff20 100644 --- a/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js +++ b/src/legacy/core_plugins/vis_type_vega/public/vega_visualization.js @@ -21,10 +21,11 @@ import { i18n } from '@kbn/i18n'; import { toastNotifications } from 'ui/notify'; import { VegaView } from './vega_view/vega_view'; import { VegaMapView } from './vega_view/vega_map_view'; -import { findObjectByTitle } from 'ui/saved_objects'; import { timefilter } from 'ui/timefilter'; import { start as data } from '../../../core_plugins/data/public/legacy'; +import { findIndexPatternByTitle } from '../../data/public/index_patterns'; + export const createVegaVisualization = ({ serviceSettings }) => class VegaVisualization { constructor(el, vis) { this.savedObjectsClient = chrome.getSavedObjectsClient(); @@ -40,7 +41,7 @@ export const createVegaVisualization = ({ serviceSettings }) => class VegaVisual async findIndex(index) { let idxObj; if (index) { - idxObj = await findObjectByTitle(this.savedObjectsClient, 'index-pattern', index); + idxObj = await findIndexPatternByTitle(this.savedObjectsClient, index); if (!idxObj) { throw new Error(i18n.translate('visTypeVega.visualization.indexNotFoundErrorMessage', { defaultMessage: 'Index {index} not found', From f43a0a1f7988297b445623a1e5fb573acb52f539 Mon Sep 17 00:00:00 2001 From: Dario Gieselaar Date: Tue, 15 Oct 2019 13:30:51 +0200 Subject: [PATCH 24/46] [APM] Enhancement to JVM list & metrics view (#47944) * [APM] Enhancement to JVM list & metrics view - Change column labels to accurately reflect aggregation types - Add explanatory tooltipi for service.node.name column header - Use fixed unit (per minute) for gc rate/time - Sort table by default on CPU, desc * Hide per page options for table * Show metrics for unidentified service nodes * Review feedback * Display callout for unidentified metrics --- x-pack/legacy/plugins/apm/common/i18n.ts | 7 + .../plugins/apm/common/projections/metrics.ts | 39 +- .../apm/common/projections/service_nodes.ts | 47 +- .../plugins/apm/common/service_nodes.ts | 7 + .../__test__/__snapshots__/List.test.tsx.snap | 90 +- .../app/ErrorGroupOverview/List/index.tsx | 1 - .../app/Main/route_config/index.tsx | 7 + .../app/ServiceNodeMetrics/index.tsx | 115 +- .../app/ServiceNodeOverview/index.tsx | 51 +- .../shared/Links/ElasticDocsLink.tsx | 2 +- .../public/hooks/useServiceMetricCharts.ts | 5 +- .../__snapshots__/queries.test.ts.snap | 984 +++++++++++++++++- .../java/gc/fetchAndTransformGcMetrics.ts | 7 +- .../by_agent/java/gc/getGcRateChart.ts | 8 +- .../by_agent/java/gc/getGcTimeChart.ts | 2 +- .../apm/server/lib/metrics/queries.test.ts | 71 +- .../__snapshots__/queries.test.ts.snap | 133 +++ .../apm/server/lib/service_nodes/index.ts | 4 +- .../server/lib/service_nodes/queries.test.ts | 26 + .../lib/services/get_service_node_metadata.ts | 56 +- .../apm/server/routes/service_nodes.ts | 2 +- .../plugins/apm/server/routes/services.ts | 3 +- 22 files changed, 1416 insertions(+), 251 deletions(-) create mode 100644 x-pack/legacy/plugins/apm/common/service_nodes.ts diff --git a/x-pack/legacy/plugins/apm/common/i18n.ts b/x-pack/legacy/plugins/apm/common/i18n.ts index 18d2d4df7a93b..1e27baa7c28de 100644 --- a/x-pack/legacy/plugins/apm/common/i18n.ts +++ b/x-pack/legacy/plugins/apm/common/i18n.ts @@ -12,3 +12,10 @@ export const NOT_AVAILABLE_LABEL = i18n.translate( defaultMessage: 'N/A' } ); + +export const UNIDENTIFIED_SERVICE_NODES_LABEL = i18n.translate( + 'xpack.apm.serviceNodeNameMissing', + { + defaultMessage: '(Empty)' + } +); diff --git a/x-pack/legacy/plugins/apm/common/projections/metrics.ts b/x-pack/legacy/plugins/apm/common/projections/metrics.ts index 96d7992e2919b..5c9eeb54744d7 100644 --- a/x-pack/legacy/plugins/apm/common/projections/metrics.ts +++ b/x-pack/legacy/plugins/apm/common/projections/metrics.ts @@ -5,8 +5,25 @@ */ import { Setup } from '../../server/lib/helpers/setup_request'; -import { SERVICE_NAME, PROCESSOR_EVENT } from '../elasticsearch_fieldnames'; +import { + SERVICE_NAME, + PROCESSOR_EVENT, + SERVICE_NODE_NAME +} from '../elasticsearch_fieldnames'; import { rangeFilter } from '../../server/lib/helpers/range_filter'; +import { SERVICE_NODE_NAME_MISSING } from '../service_nodes'; + +function getServiceNodeNameFilters(serviceNodeName?: string) { + if (!serviceNodeName) { + return []; + } + + if (serviceNodeName === SERVICE_NODE_NAME_MISSING) { + return [{ bool: { must_not: [{ exists: { field: SERVICE_NODE_NAME } }] } }]; + } + + return [{ term: { [SERVICE_NODE_NAME]: serviceNodeName } }]; +} export function getMetricsProjection({ setup, @@ -19,24 +36,20 @@ export function getMetricsProjection({ }) { const { start, end, uiFiltersES, config } = setup; - const serviceNodeNameFilters = serviceNodeName - ? [{ term: { [SERVICE_NAME]: serviceName } }] - : []; + const filter = [ + { term: { [SERVICE_NAME]: serviceName } }, + { term: { [PROCESSOR_EVENT]: 'metric' } }, + { range: rangeFilter(start, end) }, + ...getServiceNodeNameFilters(serviceNodeName), + ...uiFiltersES + ]; return { index: config.get('apm_oss.metricsIndices'), body: { query: { bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - ...serviceNodeNameFilters, - { term: { [PROCESSOR_EVENT]: 'metric' } }, - { - range: rangeFilter(start, end) - }, - ...uiFiltersES - ] + filter } } } diff --git a/x-pack/legacy/plugins/apm/common/projections/service_nodes.ts b/x-pack/legacy/plugins/apm/common/projections/service_nodes.ts index 95f92fe623a13..10ce75785c3bc 100644 --- a/x-pack/legacy/plugins/apm/common/projections/service_nodes.ts +++ b/x-pack/legacy/plugins/apm/common/projections/service_nodes.ts @@ -5,42 +5,35 @@ */ import { Setup } from '../../server/lib/helpers/setup_request'; -import { - SERVICE_NAME, - SERVICE_NODE_NAME, - PROCESSOR_EVENT -} from '../elasticsearch_fieldnames'; -import { rangeFilter } from '../../server/lib/helpers/range_filter'; +import { SERVICE_NODE_NAME } from '../elasticsearch_fieldnames'; +import { mergeProjection } from './util/merge_projection'; +import { getMetricsProjection } from './metrics'; export function getServiceNodesProjection({ setup, - serviceName + serviceName, + serviceNodeName }: { setup: Setup; serviceName: string; + serviceNodeName?: string; }) { - const { start, end, uiFiltersES, config } = setup; - - return { - index: config.get('apm_oss.metricsIndices'), - body: { - query: { - bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - { term: { [PROCESSOR_EVENT]: 'metric' } }, - { range: rangeFilter(start, end) }, - ...uiFiltersES - ] - } - }, - aggs: { - nodes: { - terms: { - field: SERVICE_NODE_NAME + return mergeProjection( + getMetricsProjection({ + setup, + serviceName, + serviceNodeName + }), + { + body: { + aggs: { + nodes: { + terms: { + field: SERVICE_NODE_NAME + } } } } } - }; + ); } diff --git a/x-pack/legacy/plugins/apm/common/service_nodes.ts b/x-pack/legacy/plugins/apm/common/service_nodes.ts new file mode 100644 index 0000000000000..ae20a40af87ac --- /dev/null +++ b/x-pack/legacy/plugins/apm/common/service_nodes.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const SERVICE_NODE_NAME_MISSING = '_service_node_name_missing_'; diff --git a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap index cd5be4a06ca26..25691025856a0 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap +++ b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap @@ -41,7 +41,6 @@ exports[`ErrorGroupOverview -> List should render empty state 1`] = ` }, ] } - hidePerPageOptions={false} initialPageSize={25} initialSortDirection="desc" initialSortField="latestOccurrenceAt" @@ -284,49 +283,7 @@ exports[`ErrorGroupOverview -> List should render empty state 1`] = ` >

-
-
- -
-
-
+ />
@@ -404,7 +361,6 @@ exports[`ErrorGroupOverview -> List should render with data 1`] = ` }, ] } - hidePerPageOptions={false} initialPageSize={25} initialSortDirection="desc" initialSortField="latestOccurrenceAt" @@ -1088,49 +1044,7 @@ exports[`ErrorGroupOverview -> List should render with data 1`] = ` >
-
-
- -
-
-
+ />
diff --git a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/index.tsx index 96a8ad01bb8a1..37fa6499ff176 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupOverview/List/index.tsx @@ -159,7 +159,6 @@ const ErrorGroupList: React.FC = props => { initialSortField="latestOccurrenceAt" initialSortDirection="desc" sortItems={false} - hidePerPageOptions={false} /> ); }; diff --git a/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx index d579b6dff9c6f..6c95095592fe4 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/Main/route_config/index.tsx @@ -8,6 +8,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { Redirect, RouteComponentProps } from 'react-router-dom'; import { npStart } from 'ui/new_platform'; +import { SERVICE_NODE_NAME_MISSING } from '../../../../../common/service_nodes'; import { ErrorGroupDetails } from '../../ErrorGroupDetails'; import { ServiceDetails } from '../../ServiceDetails'; import { TransactionDetails } from '../../TransactionDetails'; @@ -18,6 +19,7 @@ import { AgentConfigurations } from '../../Settings/AgentConfigurations'; import { toQuery } from '../../../shared/Links/url_helpers'; import { ServiceNodeMetrics } from '../../ServiceNodeMetrics'; import { resolveUrlParams } from '../../../../context/UrlParamsContext/resolveUrlParams'; +import { UNIDENTIFIED_SERVICE_NODES_LABEL } from '../../../../../common/i18n'; const metricsBreadcrumb = i18n.translate('xpack.apm.breadcrumb.metricsTitle', { defaultMessage: 'Metrics' @@ -135,6 +137,11 @@ export const routes: BreadcrumbRoute[] = [ component: () => , breadcrumb: ({ location }) => { const { serviceNodeName } = resolveUrlParams(location, {}); + + if (serviceNodeName === SERVICE_NODE_NAME_MISSING) { + return UNIDENTIFIED_SERVICE_NODES_LABEL; + } + return serviceNodeName || ''; }, name: RouteName.SERVICE_NODE_METRICS diff --git a/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeMetrics/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeMetrics/index.tsx index fa2beffbffe0f..2833b0476428c 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeMetrics/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeMetrics/index.tsx @@ -13,11 +13,14 @@ import { EuiPanel, EuiSpacer, EuiStat, - EuiToolTip + EuiToolTip, + EuiCallOut } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { SERVICE_NODE_NAME_MISSING } from '../../../../common/service_nodes'; import { ApmHeader } from '../../shared/ApmHeader'; import { useUrlParams } from '../../../hooks/useUrlParams'; import { useAgentName } from '../../../hooks/useAgentName'; @@ -26,6 +29,7 @@ import { ChartsSyncContextProvider } from '../../../context/ChartsSyncContext'; import { MetricsChart } from '../../shared/charts/MetricsChart'; import { useFetcher, FETCH_STATUS } from '../../../hooks/useFetcher'; import { truncate, px, unit } from '../../../style/variables'; +import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; const INITIAL_DATA = { host: '', @@ -38,7 +42,7 @@ const Truncate = styled.span` `; export function ServiceNodeMetrics() { - const { urlParams } = useUrlParams(); + const { urlParams, uiFilters } = useUrlParams(); const { serviceName, serviceNodeName } = urlParams; const { agentName } = useAgentName(); @@ -47,21 +51,28 @@ export function ServiceNodeMetrics() { const { data: { host, containerId } = INITIAL_DATA, status } = useFetcher( callApmApi => { - if (serviceName && serviceNodeName) { + if (serviceName && serviceNodeName && start && end) { return callApmApi({ pathname: '/api/apm/services/{serviceName}/node/{serviceNodeName}/metadata', params: { - path: { serviceName, serviceNodeName } + path: { serviceName, serviceNodeName }, + query: { + start, + end, + uiFilters: JSON.stringify(uiFilters) + } } }); } }, - [serviceName, serviceNodeName] + [serviceName, serviceNodeName, start, end, uiFilters] ); const isLoading = status === FETCH_STATUS.LOADING; + const isAggregatedData = serviceNodeName === SERVICE_NODE_NAME_MISSING; + return (
@@ -74,39 +85,71 @@ export function ServiceNodeMetrics() { - - - - {host} - + {isAggregatedData ? ( + - - - + + {i18n.translate( + 'xpack.apm.serviceNodeMetrics.unidentifiedServiceNodesWarningDocumentationLink', + { defaultMessage: 'documentation of APM Server' } + )} + + ) + }} + > + + ) : ( + + + + {host} + } - )} - title={ - - {containerId} - - } - > - - + > + + + + {containerId} + + } + > + + + )} {agentName && serviceNodeName && ( diff --git a/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx index 38cbd12f5a527..b69076b3a1f70 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx @@ -7,6 +7,8 @@ import React, { useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; +import { UNIDENTIFIED_SERVICE_NODES_LABEL } from '../../../../common/i18n'; +import { SERVICE_NODE_NAME_MISSING } from '../../../../common/service_nodes'; import { PROJECTION } from '../../../../common/projections/typings'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { useUrlParams } from '../../../hooks/useUrlParams'; @@ -20,9 +22,9 @@ import { import { ServiceNodeMetricOverviewLink } from '../../shared/Links/apm/ServiceNodeMetricOverviewLink'; import { truncate, px, unit } from '../../../style/variables'; -const INITIAL_PAGE_SIZE = 10; -const INITIAL_SORT_FIELD = 'name'; -const INITIAL_SORT_DIRECTION = 'asc'; +const INITIAL_PAGE_SIZE = 25; +const INITIAL_SORT_FIELD = 'cpu'; +const INITIAL_SORT_DIRECTION = 'desc'; const ServiceNodeName = styled.div` ${truncate(px(8 * unit))} @@ -73,19 +75,43 @@ const ServiceNodeOverview = () => { const columns: Array> = [ { - name: i18n.translate('xpack.apm.jvmsTable.nameColumnLabel', { - defaultMessage: 'Name' - }), + name: ( + + <> + {i18n.translate('xpack.apm.jvmsTable.nameColumnLabel', { + defaultMessage: 'Name' + })} + + + ), field: 'name', sortable: true, render: (name: string) => { + const { displayedName, tooltip } = + name === SERVICE_NODE_NAME_MISSING + ? { + displayedName: UNIDENTIFIED_SERVICE_NODES_LABEL, + tooltip: i18n.translate( + 'xpack.apm.jvmsTable.explainServiceNodeNameMissing', + { + defaultMessage: + 'We could not identify which JVMs these metrics belong to. This is likely caused by running a version of APM Server that is older than 7.5. Upgrading to APM Server 7.5 or higher should resolve this issue.' + } + ) + } + : { displayedName: name, tooltip: name }; + return ( - + - {name} + {displayedName} ); @@ -93,7 +119,7 @@ const ServiceNodeOverview = () => { }, { name: i18n.translate('xpack.apm.jvmsTable.cpuColumnLabel', { - defaultMessage: 'CPU' + defaultMessage: 'CPU avg' }), field: 'cpu', sortable: true, @@ -101,7 +127,7 @@ const ServiceNodeOverview = () => { }, { name: i18n.translate('xpack.apm.jvmsTable.heapMemoryColumnLabel', { - defaultMessage: 'Heap memory max' + defaultMessage: 'Heap memory avg' }), field: 'heapMemory', sortable: true, @@ -109,7 +135,7 @@ const ServiceNodeOverview = () => { }, { name: i18n.translate('xpack.apm.jvmsTable.nonHeapMemoryColumnLabel', { - defaultMessage: 'Non-heap memory max' + defaultMessage: 'Non-heap memory avg' }), field: 'nonHeapMemory', sortable: true, @@ -117,7 +143,7 @@ const ServiceNodeOverview = () => { }, { name: i18n.translate('xpack.apm.jvmsTable.threadCountColumnLabel', { - defaultMessage: 'Thread count' + defaultMessage: 'Thread count max' }), field: 'threadCount', sortable: true, @@ -141,7 +167,6 @@ const ServiceNodeOverview = () => { initialPageSize={INITIAL_PAGE_SIZE} initialSortField={INITIAL_SORT_FIELD} initialSortDirection={INITIAL_SORT_DIRECTION} - hidePerPageOptions={false} /> diff --git a/x-pack/legacy/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx b/x-pack/legacy/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx index b63671f63a1e7..53a9fc8bafbd1 100644 --- a/x-pack/legacy/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx +++ b/x-pack/legacy/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx @@ -12,7 +12,7 @@ import { metadata } from 'ui/metadata'; const STACK_VERSION = metadata.branch; // union type constisting of valid guide sections that we link to -type DocsSection = '/apm/get-started' | '/x-pack'; +type DocsSection = '/apm/get-started' | '/x-pack' | '/apm/server'; interface Props extends EuiLinkAnchorProps { section: DocsSection; diff --git a/x-pack/legacy/plugins/apm/public/hooks/useServiceMetricCharts.ts b/x-pack/legacy/plugins/apm/public/hooks/useServiceMetricCharts.ts index 5bffabe43fc77..51a632ac5f0a6 100644 --- a/x-pack/legacy/plugins/apm/public/hooks/useServiceMetricCharts.ts +++ b/x-pack/legacy/plugins/apm/public/hooks/useServiceMetricCharts.ts @@ -17,7 +17,7 @@ export function useServiceMetricCharts( urlParams: IUrlParams, agentName?: string ) { - const { serviceName, start, end } = urlParams; + const { serviceName, start, end, serviceNodeName } = urlParams; const uiFilters = useUiFilters(urlParams); const { data = INITIAL_DATA, error, status } = useFetcher( callApmApi => { @@ -30,13 +30,14 @@ export function useServiceMetricCharts( start, end, agentName, + serviceNodeName, uiFilters: JSON.stringify(uiFilters) } } }); } }, - [serviceName, start, end, agentName, uiFilters] + [serviceName, start, end, agentName, serviceNodeName, uiFilters] ); return { diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/__snapshots__/queries.test.ts.snap b/x-pack/legacy/plugins/apm/server/lib/metrics/__snapshots__/queries.test.ts.snap index 16d03c0b50498..0b1fe575f7254 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/__snapshots__/queries.test.ts.snap +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/__snapshots__/queries.test.ts.snap @@ -1,6 +1,980 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`metrics queries fetches cpu chart data 1`] = ` +exports[`metrics queries with a service node name fetches cpu chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "processCPUAverage": Object { + "avg": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "processCPUMax": Object { + "max": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "systemCPUAverage": Object { + "avg": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + "systemCPUMax": Object { + "max": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "processCPUAverage": Object { + "avg": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "processCPUMax": Object { + "max": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "systemCPUAverage": Object { + "avg": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + "systemCPUMax": Object { + "max": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "service.node.name": "bar", + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with a service node name fetches heap memory chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "heapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.heap.committed", + }, + }, + "heapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.heap.max", + }, + }, + "heapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.heap.used", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "heapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.heap.committed", + }, + }, + "heapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.heap.max", + }, + }, + "heapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.heap.used", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "service.node.name": "bar", + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "term": Object { + "agent.name": "java", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with a service node name fetches memory chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "memoryUsedAvg": Object { + "avg": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + "memoryUsedMax": Object { + "max": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + "timeseriesData": Object { + "aggs": Object { + "memoryUsedAvg": Object { + "avg": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + "memoryUsedMax": Object { + "max": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "service.node.name": "bar", + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "exists": Object { + "field": "system.memory.actual.free", + }, + }, + Object { + "exists": Object { + "field": "system.memory.total", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with a service node name fetches non heap memory chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "nonHeapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.non_heap.committed", + }, + }, + "nonHeapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.non_heap.max", + }, + }, + "nonHeapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.non_heap.used", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "nonHeapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.non_heap.committed", + }, + }, + "nonHeapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.non_heap.max", + }, + }, + "nonHeapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.non_heap.used", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "service.node.name": "bar", + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "term": Object { + "agent.name": "java", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with a service node name fetches thread count chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "threadCount": Object { + "avg": Object { + "field": "jvm.thread.count", + }, + }, + "threadCountMax": Object { + "max": Object { + "field": "jvm.thread.count", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "threadCount": Object { + "avg": Object { + "field": "jvm.thread.count", + }, + }, + "threadCountMax": Object { + "max": Object { + "field": "jvm.thread.count", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "service.node.name": "bar", + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "term": Object { + "agent.name": "java", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with service_node_name_missing fetches cpu chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "processCPUAverage": Object { + "avg": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "processCPUMax": Object { + "max": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "systemCPUAverage": Object { + "avg": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + "systemCPUMax": Object { + "max": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "processCPUAverage": Object { + "avg": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "processCPUMax": Object { + "max": Object { + "field": "system.process.cpu.total.norm.pct", + }, + }, + "systemCPUAverage": Object { + "avg": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + "systemCPUMax": Object { + "max": Object { + "field": "system.cpu.total.norm.pct", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "bool": Object { + "must_not": Array [ + Object { + "exists": Object { + "field": "service.node.name", + }, + }, + ], + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with service_node_name_missing fetches heap memory chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "heapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.heap.committed", + }, + }, + "heapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.heap.max", + }, + }, + "heapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.heap.used", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "heapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.heap.committed", + }, + }, + "heapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.heap.max", + }, + }, + "heapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.heap.used", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "bool": Object { + "must_not": Array [ + Object { + "exists": Object { + "field": "service.node.name", + }, + }, + ], + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "term": Object { + "agent.name": "java", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with service_node_name_missing fetches memory chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "memoryUsedAvg": Object { + "avg": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + "memoryUsedMax": Object { + "max": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + "timeseriesData": Object { + "aggs": Object { + "memoryUsedAvg": Object { + "avg": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + "memoryUsedMax": Object { + "max": Object { + "script": Object { + "lang": "expression", + "source": "1 - doc['system.memory.actual.free'] / doc['system.memory.total']", + }, + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "bool": Object { + "must_not": Array [ + Object { + "exists": Object { + "field": "service.node.name", + }, + }, + ], + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "exists": Object { + "field": "system.memory.actual.free", + }, + }, + Object { + "exists": Object { + "field": "system.memory.total", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with service_node_name_missing fetches non heap memory chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "nonHeapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.non_heap.committed", + }, + }, + "nonHeapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.non_heap.max", + }, + }, + "nonHeapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.non_heap.used", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "nonHeapMemoryCommitted": Object { + "avg": Object { + "field": "jvm.memory.non_heap.committed", + }, + }, + "nonHeapMemoryMax": Object { + "avg": Object { + "field": "jvm.memory.non_heap.max", + }, + }, + "nonHeapMemoryUsed": Object { + "avg": Object { + "field": "jvm.memory.non_heap.used", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "bool": Object { + "must_not": Array [ + Object { + "exists": Object { + "field": "service.node.name", + }, + }, + ], + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "term": Object { + "agent.name": "java", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries with service_node_name_missing fetches thread count chart data 1`] = ` +Object { + "body": Object { + "aggs": Object { + "threadCount": Object { + "avg": Object { + "field": "jvm.thread.count", + }, + }, + "threadCountMax": Object { + "max": Object { + "field": "jvm.thread.count", + }, + }, + "timeseriesData": Object { + "aggs": Object { + "threadCount": Object { + "avg": Object { + "field": "jvm.thread.count", + }, + }, + "threadCountMax": Object { + "max": Object { + "field": "jvm.thread.count", + }, + }, + }, + "date_histogram": Object { + "extended_bounds": Object { + "max": 1528977600000, + "min": 1528113600000, + }, + "field": "@timestamp", + "fixed_interval": "10800s", + "min_doc_count": 0, + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "bool": Object { + "must_not": Array [ + Object { + "exists": Object { + "field": "service.node.name", + }, + }, + ], + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + Object { + "term": Object { + "agent.name": "java", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`metrics queries without a service node name fetches cpu chart data 1`] = ` Object { "body": Object { "aggs": Object { @@ -94,7 +1068,7 @@ Object { } `; -exports[`metrics queries fetches heap memory chart data 1`] = ` +exports[`metrics queries without a service node name fetches heap memory chart data 1`] = ` Object { "body": Object { "aggs": Object { @@ -183,7 +1157,7 @@ Object { } `; -exports[`metrics queries fetches memory chart data 1`] = ` +exports[`metrics queries without a service node name fetches memory chart data 1`] = ` Object { "body": Object { "aggs": Object { @@ -279,7 +1253,7 @@ Object { } `; -exports[`metrics queries fetches non heap memory chart data 1`] = ` +exports[`metrics queries without a service node name fetches non heap memory chart data 1`] = ` Object { "body": Object { "aggs": Object { @@ -368,7 +1342,7 @@ Object { } `; -exports[`metrics queries fetches thread count chart data 1`] = ` +exports[`metrics queries without a service node name fetches thread count chart data 1`] = ` Object { "body": Object { "aggs": Object { diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts index a43d8cd0dc2ea..9600da458e64e 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts @@ -10,7 +10,7 @@ */ import { idx } from '@kbn/elastic-idx'; -import { sum } from 'lodash'; +import { sum, round } from 'lodash'; import theme from '@elastic/eui/dist/eui_theme_light.json'; import { Setup } from '../../../../helpers/setup_request'; import { getMetricsDateHistogramParams } from '../../../../helpers/metrics'; @@ -23,6 +23,7 @@ import { METRIC_JAVA_GC_COUNT, METRIC_JAVA_GC_TIME } from '../../../../../../common/elasticsearch_fieldnames'; +import { getBucketSize } from '../../../../helpers/get_bucket_size'; const colors = [ theme.euiColorVis0, @@ -49,6 +50,8 @@ export async function fetchAndTransformGcMetrics({ }) { const { start, end, client } = setup; + const { bucketSize } = getBucketSize(start, end, 'auto'); + const projection = getMetricsProjection({ setup, serviceName, @@ -128,7 +131,7 @@ export async function fetchAndTransformGcMetrics({ // derivative/value will be undefined for the first hit and if the `max` value is null const y = 'value' in bucket && bucket.value.value !== null - ? bucket.value.value + ? round(bucket.value.value * (60 / bucketSize), 1) : null; return { diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcRateChart.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcRateChart.ts index 7374171a36014..aa4533db0c33b 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcRateChart.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcRateChart.ts @@ -14,17 +14,17 @@ import { ChartBase } from '../../../types'; const series = { [METRIC_JAVA_GC_COUNT]: { title: i18n.translate('xpack.apm.agentMetrics.java.gcRate', { - defaultMessage: 'GC count' + defaultMessage: 'GC rate' }), color: theme.euiColorVis0 } }; const chartBase: ChartBase = { - title: i18n.translate('xpack.apm.agentMetrics.java.gcCountChartTitle', { - defaultMessage: 'Garbage collection count' + title: i18n.translate('xpack.apm.agentMetrics.java.gcRateChartTitle', { + defaultMessage: 'Garbage collection rate per minute' }), - key: 'gc_count_line_chart', + key: 'gc_rate_line_chart', type: 'linemark', yUnit: 'integer', series diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcTimeChart.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcTimeChart.ts index 43c10f5b97c54..b6e992acf62a9 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcTimeChart.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/getGcTimeChart.ts @@ -22,7 +22,7 @@ const series = { const chartBase: ChartBase = { title: i18n.translate('xpack.apm.agentMetrics.java.gcTimeChartTitle', { - defaultMessage: 'Garbage collection time' + defaultMessage: 'Garbage collection time spent per minute' }), key: 'gc_time_line_chart', type: 'linemark', diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/queries.test.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/queries.test.ts index 8ee835675e50e..f276fa69e20e3 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/queries.test.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/queries.test.ts @@ -13,45 +13,66 @@ import { SearchParamsMock, inspectSearchParams } from '../../../public/utils/testHelpers'; +import { SERVICE_NODE_NAME_MISSING } from '../../../common/service_nodes'; describe('metrics queries', () => { let mock: SearchParamsMock; - afterEach(() => { - mock.teardown(); - }); + const createTests = (serviceNodeName?: string) => { + it('fetches cpu chart data', async () => { + mock = await inspectSearchParams(setup => + getCPUChartData(setup, 'foo', serviceNodeName) + ); - it('fetches cpu chart data', async () => { - mock = await inspectSearchParams(setup => getCPUChartData(setup, 'foo')); + expect(mock.params).toMatchSnapshot(); + }); - expect(mock.params).toMatchSnapshot(); - }); + it('fetches memory chart data', async () => { + mock = await inspectSearchParams(setup => + getMemoryChartData(setup, 'foo', serviceNodeName) + ); - it('fetches memory chart data', async () => { - mock = await inspectSearchParams(setup => getMemoryChartData(setup, 'foo')); + expect(mock.params).toMatchSnapshot(); + }); - expect(mock.params).toMatchSnapshot(); - }); + it('fetches heap memory chart data', async () => { + mock = await inspectSearchParams(setup => + getHeapMemoryChart(setup, 'foo', serviceNodeName) + ); - it('fetches heap memory chart data', async () => { - mock = await inspectSearchParams(setup => getHeapMemoryChart(setup, 'foo')); + expect(mock.params).toMatchSnapshot(); + }); - expect(mock.params).toMatchSnapshot(); - }); + it('fetches non heap memory chart data', async () => { + mock = await inspectSearchParams(setup => + getNonHeapMemoryChart(setup, 'foo', serviceNodeName) + ); + + expect(mock.params).toMatchSnapshot(); + }); - it('fetches non heap memory chart data', async () => { - mock = await inspectSearchParams(setup => - getNonHeapMemoryChart(setup, 'foo') - ); + it('fetches thread count chart data', async () => { + mock = await inspectSearchParams(setup => + getThreadCountChart(setup, 'foo', serviceNodeName) + ); - expect(mock.params).toMatchSnapshot(); + expect(mock.params).toMatchSnapshot(); + }); + }; + + afterEach(() => { + mock.teardown(); }); - it('fetches thread count chart data', async () => { - mock = await inspectSearchParams(setup => - getThreadCountChart(setup, 'foo') - ); + describe('without a service node name', () => { + createTests(); + }); + + describe('with service_node_name_missing', () => { + createTests(SERVICE_NODE_NAME_MISSING); + }); - expect(mock.params).toMatchSnapshot(); + describe('with a service node name', () => { + createTests('bar'); }); }); diff --git a/x-pack/legacy/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap b/x-pack/legacy/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap index d20adeba1bcc7..ce07759669d6b 100644 --- a/x-pack/legacy/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap +++ b/x-pack/legacy/plugins/apm/server/lib/service_nodes/__snapshots__/queries.test.ts.snap @@ -1,5 +1,137 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`service node queries fetches metadata for a service node 1`] = ` +Object { + "body": Object { + "aggs": Object { + "containerId": Object { + "terms": Object { + "field": "container.id", + "size": 1, + }, + }, + "host": Object { + "terms": Object { + "field": "host.hostname", + "size": 1, + }, + }, + "nodes": Object { + "terms": Object { + "field": "service.node.name", + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "term": Object { + "service.node.name": "bar", + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + +exports[`service node queries fetches metadata for unidentified service nodes 1`] = ` +Object { + "body": Object { + "aggs": Object { + "containerId": Object { + "terms": Object { + "field": "container.id", + "size": 1, + }, + }, + "host": Object { + "terms": Object { + "field": "host.hostname", + "size": 1, + }, + }, + "nodes": Object { + "terms": Object { + "field": "service.node.name", + }, + }, + }, + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "service.name": "foo", + }, + }, + Object { + "term": Object { + "processor.event": "metric", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "format": "epoch_millis", + "gte": 1528113600000, + "lte": 1528977600000, + }, + }, + }, + Object { + "bool": Object { + "must_not": Array [ + Object { + "exists": Object { + "field": "service.node.name", + }, + }, + ], + }, + }, + Object { + "term": Object { + "service.environment": "prod", + }, + }, + ], + }, + }, + "size": 0, + }, + "index": "myIndex", +} +`; + exports[`service node queries fetches services nodes 1`] = ` Object { "body": Object { @@ -29,6 +161,7 @@ Object { }, "terms": Object { "field": "service.node.name", + "missing": "_service_node_name_missing_", "size": 10000, }, }, diff --git a/x-pack/legacy/plugins/apm/server/lib/service_nodes/index.ts b/x-pack/legacy/plugins/apm/server/lib/service_nodes/index.ts index bef22584d8a46..afdf4795c4d29 100644 --- a/x-pack/legacy/plugins/apm/server/lib/service_nodes/index.ts +++ b/x-pack/legacy/plugins/apm/server/lib/service_nodes/index.ts @@ -7,6 +7,7 @@ import { Setup } from '../helpers/setup_request'; import { getServiceNodesProjection } from '../../../common/projections/service_nodes'; import { mergeProjection } from '../../../common/projections/util/merge_projection'; +import { SERVICE_NODE_NAME_MISSING } from '../../../common/service_nodes'; import { METRIC_PROCESS_CPU_PERCENT, METRIC_JAVA_THREAD_COUNT, @@ -30,7 +31,8 @@ const getServiceNodes = async ({ aggs: { nodes: { terms: { - size: 10000 + size: 10000, + missing: SERVICE_NODE_NAME_MISSING }, aggs: { cpu: { diff --git a/x-pack/legacy/plugins/apm/server/lib/service_nodes/queries.test.ts b/x-pack/legacy/plugins/apm/server/lib/service_nodes/queries.test.ts index b5b7e492386f4..80cd94b1549d7 100644 --- a/x-pack/legacy/plugins/apm/server/lib/service_nodes/queries.test.ts +++ b/x-pack/legacy/plugins/apm/server/lib/service_nodes/queries.test.ts @@ -14,6 +14,8 @@ import { SearchParamsMock, inspectSearchParams } from '../../../public/utils/testHelpers'; +import { getServiceNodeMetadata } from '../services/get_service_node_metadata'; +import { SERVICE_NODE_NAME_MISSING } from '../../../common/service_nodes'; describe('service node queries', () => { let mock: SearchParamsMock; @@ -29,4 +31,28 @@ describe('service node queries', () => { expect(mock.params).toMatchSnapshot(); }); + + it('fetches metadata for a service node', async () => { + mock = await inspectSearchParams(setup => + getServiceNodeMetadata({ + setup, + serviceName: 'foo', + serviceNodeName: 'bar' + }) + ); + + expect(mock.params).toMatchSnapshot(); + }); + + it('fetches metadata for unidentified service nodes', async () => { + mock = await inspectSearchParams(setup => + getServiceNodeMetadata({ + setup, + serviceName: 'foo', + serviceNodeName: SERVICE_NODE_NAME_MISSING + }) + ); + + expect(mock.params).toMatchSnapshot(); + }); }); diff --git a/x-pack/legacy/plugins/apm/server/lib/services/get_service_node_metadata.ts b/x-pack/legacy/plugins/apm/server/lib/services/get_service_node_metadata.ts index 14bad7151757d..88e9670f4b444 100644 --- a/x-pack/legacy/plugins/apm/server/lib/services/get_service_node_metadata.ts +++ b/x-pack/legacy/plugins/apm/server/lib/services/get_service_node_metadata.ts @@ -8,12 +8,11 @@ import { idx } from '@kbn/elastic-idx'; import { Setup } from '../helpers/setup_request'; import { HOST_NAME, - SERVICE_NAME, - SERVICE_NODE_NAME, - CONTAINER_ID, - PROCESSOR_EVENT + CONTAINER_ID } from '../../../common/elasticsearch_fieldnames'; import { NOT_AVAILABLE_LABEL } from '../../../common/i18n'; +import { mergeProjection } from '../../../common/projections/util/merge_projection'; +import { getServiceNodesProjection } from '../../../common/projections/service_nodes'; export async function getServiceNodeMetadata({ serviceName, @@ -24,37 +23,34 @@ export async function getServiceNodeMetadata({ serviceNodeName: string; setup: Setup; }) { - const { client, config } = setup; + const { client } = setup; - const query = { - index: config.get('apm_oss.metricsIndices'), - body: { - size: 0, - query: { - bool: { - filter: [ - { term: { [PROCESSOR_EVENT]: 'metric' } }, - { term: { [SERVICE_NAME]: serviceName } }, - { term: { [SERVICE_NODE_NAME]: serviceNodeName } } - ] - } - }, - aggs: { - host: { - terms: { - field: HOST_NAME, - size: 1 - } - }, - containerId: { - terms: { - field: CONTAINER_ID, - size: 1 + const query = mergeProjection( + getServiceNodesProjection({ + setup, + serviceName, + serviceNodeName + }), + { + body: { + size: 0, + aggs: { + host: { + terms: { + field: HOST_NAME, + size: 1 + } + }, + containerId: { + terms: { + field: CONTAINER_ID, + size: 1 + } } } } } - }; + ); const response = await client.search(query); diff --git a/x-pack/legacy/plugins/apm/server/routes/service_nodes.ts b/x-pack/legacy/plugins/apm/server/routes/service_nodes.ts index a87ef7d8e5878..285dd5b1f10f5 100644 --- a/x-pack/legacy/plugins/apm/server/routes/service_nodes.ts +++ b/x-pack/legacy/plugins/apm/server/routes/service_nodes.ts @@ -17,7 +17,7 @@ export const serviceNodesRoute = createRoute(core => ({ }), query: t.intersection([rangeRt, uiFiltersRt]) }, - handler: async (req, { path, query }) => { + handler: async (req, { path }) => { const setup = await setupRequest(req); const { serviceName } = path; diff --git a/x-pack/legacy/plugins/apm/server/routes/services.ts b/x-pack/legacy/plugins/apm/server/routes/services.ts index 99b8d3c7ba154..85d53925db86e 100644 --- a/x-pack/legacy/plugins/apm/server/routes/services.ts +++ b/x-pack/legacy/plugins/apm/server/routes/services.ts @@ -73,7 +73,8 @@ export const serviceNodeMetadataRoute = createRoute(() => ({ path: t.type({ serviceName: t.string, serviceNodeName: t.string - }) + }), + query: t.intersection([uiFiltersRt, rangeRt]) }, handler: async (req, { path }) => { const setup = await setupRequest(req); From 96058469e8139f5ce45269e66f9005873314a387 Mon Sep 17 00:00:00 2001 From: Garrett Spong Date: Tue, 15 Oct 2019 05:37:31 -0600 Subject: [PATCH 25/46] [SIEM] Show all SIEM ML Jobs in Anomaly Detection UI by default (#48067) ## Summary Resolves https://github.com/elastic/kibana/issues/46874 by showing all SIEM ML Jobs in the Anomaly Detection UI by default -- no installation necessary! These changes also check for job compatibility using the ML API's `recognize` endpoint, and will display an alert message for those jobs that are not compatible. This also introduces the ability to filter by groups, and refactors/cleans up functions within this feature that were being used elsewhere in the app. Finally, there is improved error support in that errors are filtered to only the job the user is trying to install/enable instead of showing errors for the entire module. ##### Compatibility Callout ![image](https://user-images.githubusercontent.com/2946766/66734388-247c4980-ee20-11e9-8d5d-fa685fa3daf4.png) ##### Filter by Groups ![image](https://user-images.githubusercontent.com/2946766/66734663-36aab780-ee21-11e9-9685-9305e53f2263.png) ### Checklist Use ~~strikethroughs~~ to remove checklist items you don't feel are applicable to this PR. - [x] This was checked for cross-browser compatibility, [including a check against IE11](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) - [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/master/packages/kbn-i18n/README.md) - [ ] [Documentation](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#writing-documentation) was added for features that require explanation or tutorials -- will work with @benskelker on creating updated documentation. - [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios - [ ] ~This was checked for [keyboard-only and screenreader accessibility](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Accessibility_testing_checklist)~ ### For maintainers - [ ] ~This was checked for breaking API changes and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process)~ - [x] This includes a feature addition or change that requires a release note and was [labeled appropriately](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#release-notes-process) --- .../components/embeddables/embedded_map.tsx | 4 +- .../ml/anomaly/use_anomalies_table_data.ts | 10 +- .../components/ml/api/anomalies_table_data.ts | 4 +- .../components/ml/api/get_ml_capabilities.ts | 4 +- .../components/ml/api/throw_if_not_ok.test.ts | 35 +- .../components/ml/api/throw_if_not_ok.ts | 24 +- .../public/components/ml/api/translations.ts | 7 - .../components/ml_popover/__mocks__/api.tsx | 469 ++++++++++++++++-- .../popover_description.test.tsx.snap | 2 +- .../upgrade_contents.test.tsx.snap | 2 +- .../siem/public/components/ml_popover/api.tsx | 160 +++--- .../ml_popover/config_templates.tsx | 42 -- .../components/ml_popover/helpers.test.tsx | 148 +----- .../public/components/ml_popover/helpers.tsx | 93 +--- .../ml_popover/hooks/translations.ts | 14 - .../hooks/use_job_summary_data.test.tsx | 17 - .../ml_popover/hooks/use_job_summary_data.tsx | 75 --- .../ml_popover/hooks/use_siem_jobs.test.tsx | 17 - .../ml_popover/hooks/use_siem_jobs.tsx | 45 +- .../hooks/use_siem_jobs_helpers.test.tsx | 105 ++++ .../hooks/use_siem_jobs_helpers.tsx | 154 ++++++ .../__snapshots__/filter_group.test.tsx.snap | 52 -- .../__snapshots__/job_switch.test.tsx.snap | 2 +- .../__snapshots__/jobs_table.test.tsx.snap | 88 ++-- .../jobs_table/filter_group.test.tsx | 46 -- .../ml_popover/jobs_table/filter_group.tsx | 71 --- .../groups_filter_popover.test.tsx.snap | 51 ++ .../jobs_table_filters.test.tsx.snap | 138 ++++++ .../filters/groups_filter_popover.test.tsx | 57 +++ .../filters/groups_filter_popover.tsx | 91 ++++ .../filters/jobs_table_filters.test.tsx | 124 +++++ .../jobs_table/filters/jobs_table_filters.tsx | 95 ++++ .../filters/toggle_selected_group.test.tsx | 44 ++ .../filters/toggle_selected_group.tsx | 22 + .../jobs_table/filters/translations.ts | 42 ++ .../ml_popover/jobs_table/job_switch.test.tsx | 34 +- .../ml_popover/jobs_table/job_switch.tsx | 14 +- .../ml_popover/jobs_table/jobs_table.test.tsx | 54 +- .../ml_popover/jobs_table/jobs_table.tsx | 40 +- .../ml_popover/jobs_table/translations.ts | 39 ++ .../components/ml_popover/ml_modules.tsx | 12 + .../components/ml_popover/ml_popover.tsx | 164 +++--- .../ml_popover/popover_description.test.tsx | 2 +- .../components/ml_popover/translations.ts | 50 +- .../public/components/ml_popover/types.ts | 142 +++++- .../ml_popover/upgrade_contents.test.tsx | 2 +- .../siem/public/hooks/api/__mock__/api.tsx | 28 ++ .../plugins/siem/public/hooks/api/api.test.ts | 40 ++ .../plugins/siem/public/hooks/api/api.tsx | 68 +++ .../siem/public/hooks/api/helpers.test.tsx | 39 ++ .../plugins/siem/public/hooks/api/helpers.tsx | 31 ++ .../plugins/siem/public/hooks/translations.ts | 28 ++ .../legacy/plugins/siem/public/hooks/types.ts | 22 + .../hooks/use_index_patterns.tsx | 20 +- .../translations/translations/ja-JP.json | 4 - .../translations/translations/zh-CN.json | 4 - 56 files changed, 2179 insertions(+), 1012 deletions(-) delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/config_templates.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.test.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.test.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.test.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/filter_group.test.tsx.snap delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filter_group.test.tsx delete mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filter_group.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/jobs_table_filters.test.tsx.snap create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/translations.ts create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/translations.ts create mode 100644 x-pack/legacy/plugins/siem/public/components/ml_popover/ml_modules.tsx create mode 100644 x-pack/legacy/plugins/siem/public/hooks/api/__mock__/api.tsx create mode 100644 x-pack/legacy/plugins/siem/public/hooks/api/api.test.ts create mode 100644 x-pack/legacy/plugins/siem/public/hooks/api/api.tsx create mode 100644 x-pack/legacy/plugins/siem/public/hooks/api/helpers.test.tsx create mode 100644 x-pack/legacy/plugins/siem/public/hooks/api/helpers.tsx create mode 100644 x-pack/legacy/plugins/siem/public/hooks/translations.ts create mode 100644 x-pack/legacy/plugins/siem/public/hooks/types.ts rename x-pack/legacy/plugins/siem/public/{components/ml_popover => }/hooks/use_index_patterns.tsx (65%) diff --git a/x-pack/legacy/plugins/siem/public/components/embeddables/embedded_map.tsx b/x-pack/legacy/plugins/siem/public/components/embeddables/embedded_map.tsx index 02bb853a6adf6..0a29845b4f64c 100644 --- a/x-pack/legacy/plugins/siem/public/components/embeddables/embedded_map.tsx +++ b/x-pack/legacy/plugins/siem/public/components/embeddables/embedded_map.tsx @@ -15,16 +15,16 @@ import { start } from '../../../../../../../src/legacy/core_plugins/embeddable_a import { EmbeddablePanel } from '../../../../../../../src/legacy/core_plugins/embeddable_api/public/np_ready/public'; import { Loader } from '../loader'; -import { useIndexPatterns } from '../ml_popover/hooks/use_index_patterns'; +import { useIndexPatterns } from '../../hooks/use_index_patterns'; import { useKibanaUiSetting } from '../../lib/settings/use_kibana_ui_setting'; import { DEFAULT_INDEX_KEY } from '../../../common/constants'; -import { getIndexPatternTitleIdMapping } from '../ml_popover/helpers'; import { IndexPatternsMissingPrompt } from './index_patterns_missing_prompt'; import { MapEmbeddable, SetQuery } from './types'; import * as i18n from './translations'; import { useStateToaster } from '../toasters'; import { createEmbeddable, displayErrorToast, setupEmbeddablesAPI } from './embedded_map_helpers'; import { MapToolTip } from './map_tool_tip/map_tool_tip'; +import { getIndexPatternTitleIdMapping } from '../../hooks/api/helpers'; const EmbeddableWrapper = styled(EuiFlexGroup)` position: relative; diff --git a/x-pack/legacy/plugins/siem/public/components/ml/anomaly/use_anomalies_table_data.ts b/x-pack/legacy/plugins/siem/public/components/ml/anomaly/use_anomalies_table_data.ts index 2178bdb9684f3..6c3b6444578d6 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/anomaly/use_anomalies_table_data.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml/anomaly/use_anomalies_table_data.ts @@ -71,6 +71,8 @@ export const useAnomaliesTableData = ({ const [anomalyScore] = useKibanaUiSetting(DEFAULT_ANOMALY_SCORE); const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); + const siemJobIds = siemJobs.filter(job => job.isInstalled).map(job => job.id); + useEffect(() => { let isSubscribed = true; const abortCtrl = new AbortController(); @@ -82,11 +84,11 @@ export const useAnomaliesTableData = ({ earliestMs: number, latestMs: number ) { - if (userPermissions && !skip && siemJobs.length > 0) { + if (userPermissions && !skip && siemJobIds.length > 0) { try { const data = await anomaliesTableData( { - jobIds: siemJobs, + jobIds: siemJobIds, criteriaFields: criteriaFieldsInput, aggregationInterval: 'auto', threshold: getThreshold(anomalyScore, threshold), @@ -114,7 +116,7 @@ export const useAnomaliesTableData = ({ } } else if (!userPermissions && isSubscribed) { setLoading(false); - } else if (siemJobs.length === 0 && isSubscribed) { + } else if (siemJobIds.length === 0 && isSubscribed) { setLoading(false); } else if (isSubscribed) { setTableData(null); @@ -134,7 +136,7 @@ export const useAnomaliesTableData = ({ endDate, skip, userPermissions, - siemJobs.join(), + siemJobIds.sort().join(), ]); return [loading, tableData]; diff --git a/x-pack/legacy/plugins/siem/public/components/ml/api/anomalies_table_data.ts b/x-pack/legacy/plugins/siem/public/components/ml/api/anomalies_table_data.ts index a3781f7b894e7..12c68467fe117 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/api/anomalies_table_data.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml/api/anomalies_table_data.ts @@ -9,7 +9,7 @@ import chrome from 'ui/chrome'; import { useKibanaUiSetting } from '../../../lib/settings/use_kibana_ui_setting'; import { DEFAULT_KBN_VERSION } from '../../../../common/constants'; import { Anomalies, InfluencerInput, CriteriaFields } from '../types'; -import { throwIfNotOk } from './throw_if_not_ok'; +import { throwIfNotOk } from '../../../hooks/api/api'; export interface Body { jobIds: string[]; criteriaFields: CriteriaFields[]; @@ -25,7 +25,7 @@ export interface Body { export const anomaliesTableData = async ( body: Body, - headers: Record, + headers: Record, signal: AbortSignal ): Promise => { const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); diff --git a/x-pack/legacy/plugins/siem/public/components/ml/api/get_ml_capabilities.ts b/x-pack/legacy/plugins/siem/public/components/ml/api/get_ml_capabilities.ts index 9f1af8db5eddc..deec12aacfc42 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/api/get_ml_capabilities.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml/api/get_ml_capabilities.ts @@ -9,7 +9,7 @@ import chrome from 'ui/chrome'; import { DEFAULT_KBN_VERSION } from '../../../../common/constants'; import { useKibanaUiSetting } from '../../../lib/settings/use_kibana_ui_setting'; import { InfluencerInput, MlCapabilities } from '../types'; -import { throwIfNotOk } from './throw_if_not_ok'; +import { throwIfNotOk } from '../../../hooks/api/api'; export interface Body { jobIds: string[]; @@ -25,7 +25,7 @@ export interface Body { } export const getMlCapabilities = async ( - headers: Record, + headers: Record, signal: AbortSignal ): Promise => { const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); diff --git a/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.test.ts b/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.test.ts index 9c6493c9c9b5a..374fbd830f920 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.test.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.test.ts @@ -6,14 +6,13 @@ import fetchMock from 'fetch-mock'; import { - throwIfNotOk, - parseJsonFromBody, + isMlStartJobError, MessageBody, - tryParseResponse, + parseJsonFromBody, throwIfErrorAttached, - isMlStartJobError, - ToasterErrors, throwIfErrorAttachedToSetup, + ToasterErrors, + tryParseResponse, } from './throw_if_not_ok'; import { SetupMlResponse } from '../../ml_popover/types'; @@ -22,32 +21,6 @@ describe('throw_if_not_ok', () => { fetchMock.reset(); }); - describe('#throwIfNotOk', () => { - test('does a throw if it is given response that is not ok and the body is not parsable', async () => { - fetchMock.mock('http://example.com', 500); - const response = await fetch('http://example.com'); - await expect(throwIfNotOk(response)).rejects.toThrow('Network Error: Internal Server Error'); - }); - - test('does a throw and returns a body if it is parsable', async () => { - fetchMock.mock('http://example.com', { - status: 500, - body: { - statusCode: 500, - message: 'I am a custom message', - }, - }); - const response = await fetch('http://example.com'); - await expect(throwIfNotOk(response)).rejects.toThrow('I am a custom message'); - }); - - test('does NOT do a throw if it is given response is not ok', async () => { - fetchMock.mock('http://example.com', 200); - const response = await fetch('http://example.com'); - await expect(throwIfNotOk(response)).resolves.toEqual(undefined); - }); - }); - describe('#parseJsonFromBody', () => { test('parses a json from the body correctly', async () => { fetchMock.mock('http://example.com', { diff --git a/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.ts b/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.ts index b26ee42cf470a..5d28f4b40ab60 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml/api/throw_if_not_ok.ts @@ -35,21 +35,6 @@ export class ToasterErrors extends Error implements ToasterErrorsType { } } -export const throwIfNotOk = async (response: Response): Promise => { - if (!response.ok) { - const body = await parseJsonFromBody(response); - if (body != null && body.message) { - if (body.statusCode != null) { - throw new ToasterErrors([body.message, `${i18n.STATUS_CODE} ${body.statusCode}`]); - } else { - throw new ToasterErrors([body.message]); - } - } else { - throw new ToasterErrors([`${i18n.NETWORK_ERROR} ${response.statusText}`]); - } - } -}; - export const parseJsonFromBody = async (response: Response): Promise => { try { const text = await response.text(); @@ -67,10 +52,13 @@ export const tryParseResponse = (response: string): string => { } }; -export const throwIfErrorAttachedToSetup = (setupResponse: SetupMlResponse): void => { +export const throwIfErrorAttachedToSetup = ( + setupResponse: SetupMlResponse, + jobIdErrorFilter: string[] = [] +): void => { const jobErrors = setupResponse.jobs.reduce( (accum, job) => - job.error != null + job.error != null && jobIdErrorFilter.includes(job.id) ? [ ...accum, job.error.msg, @@ -83,7 +71,7 @@ export const throwIfErrorAttachedToSetup = (setupResponse: SetupMlResponse): voi const dataFeedErrors = setupResponse.datafeeds.reduce( (accum, dataFeed) => - dataFeed.error != null + dataFeed.error != null && jobIdErrorFilter.includes(dataFeed.id.substr('datafeed-'.length)) ? [ ...accum, dataFeed.error.msg, diff --git a/x-pack/legacy/plugins/siem/public/components/ml/api/translations.ts b/x-pack/legacy/plugins/siem/public/components/ml/api/translations.ts index 2bf5a1a54626f..87edc531758fb 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/api/translations.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml/api/translations.ts @@ -12,10 +12,3 @@ export const STATUS_CODE = i18n.translate( defaultMessage: 'Status Code:', } ); - -export const NETWORK_ERROR = i18n.translate( - 'xpack.siem.components.ml.api.errors.networkErrorFailureTitle', - { - defaultMessage: 'Network Error:', - } -); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/__mocks__/api.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/__mocks__/api.tsx index 09e8502f33069..76c276cf69b63 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/__mocks__/api.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/__mocks__/api.tsx @@ -4,7 +4,16 @@ * you may not use this file except in compliance with the Elastic License. */ -import { Group, IndexPatternSavedObject, Job } from '../types'; +import { + Group, + JobSummary, + Module, + RecognizerModule, + SetupMlResponse, + SiemJob, + StartDatafeedResponse, + StopDatafeedResponse, +} from '../types'; export const mockGroupsResponse: Group[] = [ { @@ -22,7 +31,7 @@ export const mockGroupsResponse: Group[] = [ { id: 'suricata', jobIds: ['suricata_alert_rate'], calendarIds: [] }, ]; -export const mockOpenedJob: Job = { +export const mockOpenedJob: JobSummary = { datafeedId: 'datafeed-siem-api-rare_process_linux_ecs', datafeedIndices: ['auditbeat-*'], datafeedState: 'started', @@ -39,7 +48,7 @@ export const mockOpenedJob: Job = { processed_record_count: 3425264, }; -export const mockJobsSummaryResponse: Job[] = [ +export const mockJobsSummaryResponse: JobSummary[] = [ { id: 'rc-rare-process-windows-5', description: @@ -99,44 +108,446 @@ export const mockJobsSummaryResponse: Job[] = [ }, ]; -export const mockConfigTemplates = [ +export const mockGetModuleResponse: Module[] = [ { - name: 'siem_auditbeat_ecs', + id: 'siem_auditbeat', + title: 'SIEM Auditbeat', + description: + 'Detect suspicious network activity and unusual processes in Auditbeat data (beta)', + type: 'Auditbeat data', + logoFile: 'logo.json', defaultIndexPattern: 'auditbeat-*', - jobs: ['siem-api-rare_process_linux_ecs', 'siem-api-suspicious_login_activity_ecs'], + query: { bool: { filter: [{ term: { 'agent.type': 'auditbeat' } }] } }, + jobs: [ + { + id: 'rare_process_by_host_linux_ecs', + config: { + job_type: 'anomaly_detector', + description: 'SIEM Auditbeat: Detect unusually rare processes on Linux (beta)', + groups: ['siem', 'auditbeat', 'process'], + analysis_config: { + bucket_span: '15m', + detectors: [ + { + detector_description: 'rare process executions on Linux', + function: 'rare', + by_field_name: 'process.name', + partition_field_name: 'host.name', + }, + ], + influencers: ['host.name', 'process.name', 'user.name'], + }, + analysis_limits: { model_memory_limit: '256mb' }, + data_description: { time_field: '@timestamp' }, + custom_settings: { + created_by: 'ml-module-siem-auditbeat', + custom_urls: [ + { + url_name: 'Host Details by process name', + url_value: + "siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:'process.name%20:%20%22$process.name$%22',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Host Details by user name', + url_value: + "siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:'user.name%20:%20%22$user.name$%22',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Hosts Overview by process name', + url_value: + "siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:'process.name%20:%20%22$process.name$%22',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Hosts Overview by user name', + url_value: + "siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:'user.name%20:%20%22$user.name$%22',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + ], + }, + }, + }, + ], + datafeeds: [ + { + id: 'datafeed-rare_process_by_host_linux_ecs', + config: { + job_id: 'rare_process_by_host_linux_ecs', + indexes: ['INDEX_PATTERN_NAME'], + query: { + bool: { + filter: [ + { terms: { 'event.action': ['process_started', 'executed'] } }, + { term: { 'agent.type': 'auditbeat' } }, + ], + }, + }, + }, + }, + ], + kibana: {}, }, { - name: 'siem_winlogbeat_ecs', + id: 'siem_winlogbeat', + title: 'SIEM Winlogbeat', + description: 'Detect unusual processes and network activity in Winlogbeat data (beta)', + type: 'Winlogbeat data', + logoFile: 'logo.json', defaultIndexPattern: 'winlogbeat-*', - jobs: ['siem-api-rare_process_windows_ecs'], + query: { bool: { filter: [{ term: { 'agent.type': 'winlogbeat' } }] } }, + jobs: [ + { + id: 'windows_anomalous_network_activity_ecs', + config: { + job_type: 'anomaly_detector', + description: + 'SIEM Winlogbeat: Looks for unusual processes using the network which could indicate command-and-control, lateral movement, persistence, or data exfiltration activity (beta)', + groups: ['siem', 'winlogbeat', 'network'], + analysis_config: { + bucket_span: '15m', + detectors: [ + { + detector_description: 'rare by "process.name"', + function: 'rare', + by_field_name: 'process.name', + }, + ], + influencers: ['host.name', 'process.name', 'user.name', 'destination.ip'], + }, + analysis_limits: { model_memory_limit: '64mb' }, + data_description: { time_field: '@timestamp' }, + custom_settings: { + created_by: 'ml-module-siem-winlogbeat', + custom_urls: [ + { + url_name: 'Host Details by process name', + url_value: + "siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:'process.name%20:%20%22$process.name$%22',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Host Details by user name', + url_value: + "siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:'user.name%20:%20%22$user.name$%22',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Hosts Overview by process name', + url_value: + "siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:'process.name%20:%20%22$process.name$%22',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Hosts Overview by user name', + url_value: + "siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:'user.name%20:%20%22$user.name$%22',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + ], + }, + }, + }, + { + id: 'windows_anomalous_path_activity_ecs', + config: { + job_type: 'anomaly_detector', + groups: ['siem', 'winlogbeat', 'process'], + description: + 'SIEM Winlogbeat: Looks for activity in unusual paths that may indicate execution of malware or persistence mechanisms. Windows payloads often execute from user profile paths (beta)', + analysis_config: { + bucket_span: '15m', + detectors: [ + { + detector_description: 'rare by "process.working_directory"', + function: 'rare', + by_field_name: 'process.working_directory', + }, + ], + influencers: ['host.name', 'process.name', 'user.name'], + }, + analysis_limits: { model_memory_limit: '256mb' }, + data_description: { time_field: '@timestamp' }, + custom_settings: { + created_by: 'ml-module-siem-winlogbeat', + custom_urls: [ + { + url_name: 'Host Details by process name', + url_value: + "siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:'process.name%20:%20%22$process.name$%22',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Host Details by user name', + url_value: + "siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:'user.name%20:%20%22$user.name$%22',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Hosts Overview by process name', + url_value: + "siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:'process.name%20:%20%22$process.name$%22',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + { + url_name: 'Hosts Overview by user name', + url_value: + "siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:'user.name%20:%20%22$user.name$%22',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')),timeline:(linkTo:!(global),timerange:(from:'$earliest$',kind:absolute,to:'$latest$')))", + }, + ], + }, + }, + }, + ], + datafeeds: [ + { + id: 'datafeed-windows_anomalous_path_activity_ecs', + config: { + job_id: 'windows_anomalous_path_activity_ecs', + indices: ['INDEX_PATTERN_NAME'], + query: { + bool: { + filter: [ + { term: { 'event.action': 'Process Create (rule: ProcessCreate)' } }, + { term: { 'agent.type': 'winlogbeat' } }, + ], + }, + }, + }, + }, + { + id: 'datafeed-windows_anomalous_network_activity_ecs', + config: { + job_id: 'windows_anomalous_network_activity_ecs', + indices: ['INDEX_PATTERN_NAME'], + query: { + bool: { + filter: [ + { term: { 'event.action': 'Network connection detected (rule: NetworkConnect)' } }, + { term: { 'agent.type': 'winlogbeat' } }, + ], + must_not: [ + { + bool: { + should: [ + { term: { 'destination.ip': '127.0.0.1' } }, + { term: { 'destination.ip': '127.0.0.53' } }, + { term: { 'destination.ip': '::1' } }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + }, + }, + ], + kibana: {}, }, ]; -export const mockInstalledJobIds = ['siem-api-rare_process_linux_ecs']; - -export const mockEmbeddedJobIds = [ - 'siem-api-rare_process_linux_ecs', - 'siem-api-suspicious_login_activity_ecs', - 'siem-api-rare_process_windows_ecs', +export const checkRecognizerSuccess: RecognizerModule[] = [ + { + id: 'siem_auditbeat', + title: 'SIEM Auditbeat', + query: { bool: { filter: [{ term: { 'agent.type': 'auditbeat' } }] } }, + description: + 'Detect suspicious network activity and unusual processes in Auditbeat data (beta)', + logo: { icon: 'securityAnalyticsApp' }, + }, ]; -export const mockIndexPatternSavedObjects: IndexPatternSavedObject[] = [ - { - type: 'index-pattern', - id: '2d1fe420-eeee-11e9-ad95-4b5e687c2aee', - attributes: { - title: 'filebeat-*', +export const mockSetupMlJobAllError: SetupMlResponse = { + jobs: [ + { + id: 'linux_anomalous_network_url_activity_ecs', + success: false, + error: { + msg: + "[resource_already_exists_exception] The job cannot be created with the Id 'linux_anomalous_network_url_activity_ecs'. The Id is already used.", + path: '/_ml/anomaly_detectors/linux_anomalous_network_url_activity_ecs', + query: {}, + body: + '{"job_type":"anomaly_detector","groups":["siem","auditbeat","process"],"description":"SIEM Auditbeat: Looks for an unusual web URL request from a Linux instance. Curl and wget web request activity is very common but unusual web requests from a Linux server can sometimes be malware delivery or execution (beta)","analysis_config":{"bucket_span":"15m","detectors":[{"detector_description":"rare by \\"process.title\\"","function":"rare","by_field_name":"process.title"}],"influencers":["host.name","destination.ip","destination.port"]},"analysis_limits":{"model_memory_limit":"32mb"},"data_description":{"time_field":"@timestamp"},"custom_settings":{"created_by":"ml-module-siem-auditbeat","custom_urls":[{"url_name":"Host Details","url_value":"siem#/ml-hosts/$host.name$?_g=()&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"}]},"results_index_name":"linux_anomalous_network_url_activity_ecs"}', + statusCode: 400, + response: + '{"error":{"root_cause":[{"type":"resource_already_exists_exception","reason":"The job cannot be created with the Id \'linux_anomalous_network_url_activity_ecs\'. The Id is already used."}],"type":"resource_already_exists_exception","reason":"The job cannot be created with the Id \'linux_anomalous_network_url_activity_ecs\'. The Id is already used."},"status":400}', + }, + }, + { + id: 'linux_anomalous_network_port_activity_ecs', + success: false, + error: { + msg: + "[resource_already_exists_exception] The job cannot be created with the Id 'linux_anomalous_network_port_activity_ecs'. The Id is already used.", + path: '/_ml/anomaly_detectors/linux_anomalous_network_port_activity_ecs', + query: {}, + body: + '{"job_type":"anomaly_detector","description":"SIEM Auditbeat: Looks for unusual destination port activity that could indicate command-and-control, persistence mechanism, or data exfiltration activity (beta)","groups":["siem","auditbeat","process"],"analysis_config":{"bucket_span":"15m","detectors":[{"detector_description":"rare by \\"destination.port\\"","function":"rare","by_field_name":"destination.port"}],"influencers":["host.name","process.name","user.name","destination.ip"]},"analysis_limits":{"model_memory_limit":"32mb"},"data_description":{"time_field":"@timestamp"},"custom_settings":{"created_by":"ml-module-siem-auditbeat","custom_urls":[{"url_name":"Host Details by process name","url_value":"siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:\'process.name%20:%20%22$process.name$%22\',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"},{"url_name":"Host Details by user name","url_value":"siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:\'user.name%20:%20%22$user.name$%22\',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"},{"url_name":"Hosts Overview by process name","url_value":"siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:\'process.name%20:%20%22$process.name$%22\',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"},{"url_name":"Hosts Overview by user name","url_value":"siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:\'user.name%20:%20%22$user.name$%22\',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"}]},"results_index_name":"linux_anomalous_network_port_activity_ecs"}', + statusCode: 400, + response: + '{"error":{"root_cause":[{"type":"resource_already_exists_exception","reason":"The job cannot be created with the Id \'linux_anomalous_network_port_activity_ecs\'. The Id is already used."}],"type":"resource_already_exists_exception","reason":"The job cannot be created with the Id \'linux_anomalous_network_port_activity_ecs\'. The Id is already used."},"status":400}', + }, + }, + ], + datafeeds: [ + { + id: 'datafeed-linux_anomalous_network_activity_ecs', + success: false, + started: false, + error: { + msg: + '[status_exception] A datafeed [datafeed-linux_anomalous_network_activity_ecs] already exists for job [linux_anomalous_network_activity_ecs]', + path: '/_ml/datafeeds/datafeed-linux_anomalous_network_activity_ecs', + query: {}, + body: + '{"job_id":"linux_anomalous_network_activity_ecs","indices":["auditbeat-*"],"query":{"bool":{"filter":[{"term":{"event.action":"connected-to"}},{"term":{"agent.type":"auditbeat"}}],"must_not":[{"bool":{"should":[{"term":{"destination.ip":"127.0.0.1"}},{"term":{"destination.ip":"127.0.0.53"}},{"term":{"destination.ip":"::1"}}],"minimum_should_match":1}}]}}}', + statusCode: 409, + response: + '{"error":{"root_cause":[{"type":"status_exception","reason":"A datafeed [datafeed-linux_anomalous_network_activity_ecs] already exists for job [linux_anomalous_network_activity_ecs]"}],"type":"status_exception","reason":"A datafeed [datafeed-linux_anomalous_network_activity_ecs] already exists for job [linux_anomalous_network_activity_ecs]"},"status":409}', + }, + }, + { + id: 'datafeed-linux_anomalous_network_port_activity_ecs', + success: false, + started: false, + error: { + msg: + '[status_exception] A datafeed [datafeed-linux_anomalous_network_port_activity_ecs] already exists for job [linux_anomalous_network_port_activity_ecs]', + path: '/_ml/datafeeds/datafeed-linux_anomalous_network_port_activity_ecs', + query: {}, + body: + '{"job_id":"linux_anomalous_network_port_activity_ecs","indices":["auditbeat-*"],"query":{"bool":{"filter":[{"term":{"event.action":"connected-to"}},{"term":{"agent.type":"auditbeat"}}],"must_not":[{"bool":{"should":[{"term":{"destination.ip":"::1"}},{"term":{"destination.ip":"127.0.0.1"}},{"term":{"destination.ip":"::"}},{"term":{"user.name_map.uid":"jenkins"}}],"minimum_should_match":1}}]}}}', + statusCode: 409, + response: + '{"error":{"root_cause":[{"type":"status_exception","reason":"A datafeed [datafeed-linux_anomalous_network_port_activity_ecs] already exists for job [linux_anomalous_network_port_activity_ecs]"}],"type":"status_exception","reason":"A datafeed [datafeed-linux_anomalous_network_port_activity_ecs] already exists for job [linux_anomalous_network_port_activity_ecs]"},"status":409}', + }, + }, + ], + kibana: {}, +}; + +export const mockSetupMlJobSingleErrorSingleSuccess: SetupMlResponse = { + jobs: [ + { + id: 'linux_anomalous_network_activity_ecs', + success: false, + error: { + msg: + "[resource_already_exists_exception] The job cannot be created with the Id 'linux_anomalous_network_activity_ecs'. The Id is already used.", + path: '/_ml/anomaly_detectors/linux_anomalous_network_activity_ecs', + query: {}, + body: + '{"job_type":"anomaly_detector","description":"SIEM Auditbeat: Looks for unusual processes using the network which could indicate command-and-control, lateral movement, persistence, or data exfiltration activity (beta)","groups":["siem","auditbeat","network"],"analysis_config":{"bucket_span":"15m","detectors":[{"detector_description":"rare by \\"process.name\\"","function":"rare","by_field_name":"process.name"}],"influencers":["host.name","process.name","user.name","destination.ip"]},"analysis_limits":{"model_memory_limit":"64mb"},"data_description":{"time_field":"@timestamp"},"custom_settings":{"created_by":"ml-module-siem-auditbeat","custom_urls":[{"url_name":"Host Details by process name","url_value":"siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:\'process.name%20:%20%22$process.name$%22\',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"},{"url_name":"Host Details by user name","url_value":"siem#/ml-hosts/$host.name$?_g=()&kqlQuery=(filterQuery:(expression:\'user.name%20:%20%22$user.name$%22\',kind:kuery),queryLocation:hosts.details,type:details)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"},{"url_name":"Hosts Overview by process name","url_value":"siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:\'process.name%20:%20%22$process.name$%22\',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"},{"url_name":"Hosts Overview by user name","url_value":"siem#/ml-hosts?_g=()&kqlQuery=(filterQuery:(expression:\'user.name%20:%20%22$user.name$%22\',kind:kuery),queryLocation:hosts.page,type:page)&timerange=(global:(linkTo:!(timeline),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')),timeline:(linkTo:!(global),timerange:(from:\'$earliest$\',kind:absolute,to:\'$latest$\')))"}]},"results_index_name":"linux_anomalous_network_activity_ecs"}', + statusCode: 400, + response: + '{"error":{"root_cause":[{"type":"resource_already_exists_exception","reason":"The job cannot be created with the Id \'linux_anomalous_network_activity_ecs\'. The Id is already used."}],"type":"resource_already_exists_exception","reason":"The job cannot be created with the Id \'linux_anomalous_network_activity_ecs\'. The Id is already used."},"status":400}', + }, + }, + { id: 'linux_anomalous_network_port_activity_ecs', success: true }, + ], + datafeeds: [ + { + id: 'datafeed-linux_anomalous_network_activity_ecs', + success: false, + started: false, + error: { + msg: + '[status_exception] A datafeed [datafeed-linux_anomalous_network_activity_ecs] already exists for job [linux_anomalous_network_activity_ecs]', + path: '/_ml/datafeeds/datafeed-linux_anomalous_network_activity_ecs', + query: {}, + body: + '{"job_id":"linux_anomalous_network_activity_ecs","indices":["auditbeat-*"],"query":{"bool":{"filter":[{"term":{"event.action":"connected-to"}},{"term":{"agent.type":"auditbeat"}}],"must_not":[{"bool":{"should":[{"term":{"destination.ip":"127.0.0.1"}},{"term":{"destination.ip":"127.0.0.53"}},{"term":{"destination.ip":"::1"}}],"minimum_should_match":1}}]}}}', + statusCode: 409, + response: + '{"error":{"root_cause":[{"type":"status_exception","reason":"A datafeed [datafeed-linux_anomalous_network_activity_ecs] already exists for job [linux_anomalous_network_activity_ecs]"}],"type":"status_exception","reason":"A datafeed [datafeed-linux_anomalous_network_activity_ecs] already exists for job [linux_anomalous_network_activity_ecs]"},"status":409}', + }, + }, + + { id: 'datafeed-linux_anomalous_network_port_activity_ecs', success: true, started: false }, + ], + kibana: {}, +}; + +export const mockSetupMlJobAllSuccess: SetupMlResponse = { + jobs: [ + { + id: 'linux_anomalous_network_activity_ecs', + success: true, }, - updated_at: '2019-08-26T04:30:09.111Z', - version: 'WzE4LLwxXQ==', + { id: 'linux_anomalous_network_port_activity_ecs', success: true }, + ], + datafeeds: [ + { id: 'datafeed-linux_anomalous_network_activity_ecs', success: true, started: false }, + + { id: 'datafeed-linux_anomalous_network_port_activity_ecs', success: true, started: false }, + ], + kibana: {}, +}; + +export const mockStartDatafeedsError: StartDatafeedResponse = { + 'datafeed-linux_anomalous_network_service': { started: false, error: 'Job has no datafeed' }, +}; + +export const mockStartDatafeedsSuccess: StartDatafeedResponse = { + 'datafeed-linux_anomalous_network_service': { started: true }, +}; + +export const mockStopDatafeedsErrorDoesNotExist: StopDatafeedResponse = {}; + +export const mockStopDatafeedsSuccess: StopDatafeedResponse = { + 'datafeed-linux_anomalous_network_service': { stopped: true }, +}; + +export const mockSiemJobs: SiemJob[] = [ + { + id: 'linux_anomalous_network_activity_ecs', + description: + 'SIEM Auditbeat: Looks for unusual processes using the network which could indicate command-and-control, lateral movement, persistence, or data exfiltration activity (beta)', + groups: ['auditbeat', 'process', 'siem'], + processed_record_count: 32010, + memory_status: 'ok', + jobState: 'closed', + hasDatafeed: true, + datafeedId: 'datafeed-linux_anomalous_network_activity_ecs', + datafeedIndices: ['auditbeat-*'], + datafeedState: 'stopped', + latestTimestampMs: 1571022859393, + earliestTimestampMs: 1569812391387, + latestResultsTimestampMs: 1571022900000, + isSingleMetricViewerJob: true, + moduleId: 'siem_auditbeat', + defaultIndexPattern: 'auditbeat-*', + isCompatible: true, + isInstalled: true, + isElasticJob: true, }, { - type: 'index-pattern', - id: '5463ec70-c7ba-ffff-ad95-4b5e687c2aee', - attributes: { - title: 'auditbeat-*', - }, - updated_at: '2019-08-26T04:31:12.934Z', - version: 'WzELLywxXQ==', + id: 'rare_process_by_host_linux_ecs', + description: 'SIEM Auditbeat: Detect unusually rare processes on Linux (beta)', + groups: ['auditbeat', 'process', 'siem'], + processed_record_count: 0, + memory_status: 'ok', + jobState: 'closed', + hasDatafeed: true, + datafeedId: 'datafeed-rare_process_by_host_linux_ecs', + datafeedIndices: ['auditbeat-*'], + datafeedState: 'stopped', + isSingleMetricViewerJob: true, + moduleId: 'siem_auditbeat', + defaultIndexPattern: 'auditbeat-*', + isCompatible: true, + isInstalled: true, + isElasticJob: true, + }, + { + datafeedId: '', + datafeedIndices: [], + datafeedState: '', + hasDatafeed: false, + isSingleMetricViewerJob: false, + jobState: '', + memory_status: '', + processed_record_count: 0, + id: 'rare_process_by_host_windows_ecs', + description: 'SIEM Winlogbeat: Detect unusually rare processes on Windows (beta)', + groups: ['process', 'siem', 'winlogbeat'], + defaultIndexPattern: 'winlogbeat-*', + moduleId: 'siem_winlogbeat', + isCompatible: false, + isInstalled: false, + isElasticJob: true, }, ]; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap index 83dc5446de37e..5eeaee17ee72a 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`FilterGroup renders correctly against snapshot 1`] = ` +exports[`JobsTableFilters renders correctly against snapshot 1`] = ` diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap index fbad5012f1e5e..cf924f3a06edc 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`FilterGroup renders correctly against snapshot 1`] = ` +exports[`JobsTableFilters renders correctly against snapshot 1`] = ` diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/api.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/api.tsx index ee8298c77f94f..6f74df4aed384 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/api.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/api.tsx @@ -6,42 +6,75 @@ import chrome from 'ui/chrome'; import { + CheckRecognizerProps, CloseJobsResponse, - Group, - IndexPatternResponse, - IndexPatternSavedObject, - Job, + ErrorResponse, + GetModulesProps, + JobSummary, MlSetupArgs, + Module, + RecognizerModule, SetupMlResponse, StartDatafeedResponse, StopDatafeedResponse, } from './types'; -import { - throwIfNotOk, - throwIfErrorAttached, - throwIfErrorAttachedToSetup, -} from '../ml/api/throw_if_not_ok'; +import { throwIfErrorAttached, throwIfErrorAttachedToSetup } from '../ml/api/throw_if_not_ok'; import { useKibanaUiSetting } from '../../lib/settings/use_kibana_ui_setting'; import { DEFAULT_KBN_VERSION } from '../../../common/constants'; +import { throwIfNotOk } from '../../hooks/api/api'; -const emptyIndexPattern: IndexPatternSavedObject[] = []; +/** + * Checks the ML Recognizer API to see if a given indexPattern has any compatible modules + * + * @param indexPatternName ES index pattern to check for compatible modules + * @param headers optional headers to add + * @param signal to cancel request + */ +export const checkRecognizer = async ({ + indexPatternName, + headers = {}, + signal, +}: CheckRecognizerProps): Promise => { + const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); + const response = await fetch( + `${chrome.getBasePath()}/api/ml/modules/recognize/${indexPatternName}`, + { + method: 'GET', + credentials: 'same-origin', + headers: { + 'kbn-system-api': 'true', + 'content-type': 'application/json', + 'kbn-version': kbnVersion, + 'kbn-xsrf': kbnVersion, + ...headers, + }, + signal, + } + ); + await throwIfNotOk(response); + return response.json(); +}; /** - * Fetches ML Groups Data + * Returns ML Module for given moduleId. Returns all modules if no moduleId specified * - * @param headers + * @param moduleId id of the module to retrieve + * @param headers optional headers to add optional headers to add + * @param signal to cancel request */ -export const groupsData = async ( - headers: Record, - signal: AbortSignal -): Promise => { +export const getModules = async ({ + moduleId = '', + headers = {}, + signal, +}: GetModulesProps): Promise => { const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); - const response = await fetch(`${chrome.getBasePath()}/api/ml/jobs/groups`, { + const response = await fetch(`${chrome.getBasePath()}/api/ml/modules/get_module/${moduleId}`, { method: 'GET', credentials: 'same-origin', headers: { - 'content-type': 'application/json', 'kbn-system-api': 'true', + 'content-type': 'application/json', + 'kbn-version': kbnVersion, 'kbn-xsrf': kbnVersion, ...headers, }, @@ -56,13 +89,15 @@ export const groupsData = async ( * * @param configTemplate - name of configTemplate to setup * @param indexPatternName - default index pattern configTemplate should be installed with + * @param jobIdErrorFilter - if provided, filters all errors except for given jobIds * @param groups - list of groups to add to jobs being installed * @param prefix - prefix to be added to job name - * @param headers + * @param headers optional headers to add */ export const setupMlJob = async ({ configTemplate, indexPatternName = 'auditbeat-*', + jobIdErrorFilter = [], groups = ['siem'], prefix = '', headers = {}, @@ -81,13 +116,14 @@ export const setupMlJob = async ({ headers: { 'kbn-system-api': 'true', 'content-type': 'application/json', + 'kbn-version': kbnVersion, 'kbn-xsrf': kbnVersion, ...headers, }, }); await throwIfNotOk(response); const json = await response.json(); - throwIfErrorAttachedToSetup(json); + throwIfErrorAttachedToSetup(json, jobIdErrorFilter); return json; }; @@ -96,13 +132,17 @@ export const setupMlJob = async ({ * * @param datafeedIds * @param start - * @param headers + * @param headers optional headers to add */ -export const startDatafeeds = async ( - datafeedIds: string[], - headers: Record, - start = 0 -): Promise => { +export const startDatafeeds = async ({ + datafeedIds, + headers, + start = 0, +}: { + datafeedIds: string[]; + start: number; + headers?: Record; +}): Promise => { const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); const response = await fetch(`${chrome.getBasePath()}/api/ml/jobs/force_start_datafeeds`, { method: 'POST', @@ -114,6 +154,7 @@ export const startDatafeeds = async ( headers: { 'kbn-system-api': 'true', 'content-type': 'application/json', + 'kbn-version': kbnVersion, 'kbn-xsrf': kbnVersion, ...headers, }, @@ -128,12 +169,15 @@ export const startDatafeeds = async ( * Stops the given dataFeedIds and sets the corresponding Job's jobState to closed * * @param datafeedIds - * @param headers + * @param headers optional headers to add */ -export const stopDatafeeds = async ( - datafeedIds: string[], - headers: Record -): Promise<[StopDatafeedResponse, CloseJobsResponse]> => { +export const stopDatafeeds = async ({ + datafeedIds, + headers, +}: { + datafeedIds: string[]; + headers?: Record; +}): Promise<[StopDatafeedResponse | ErrorResponse, CloseJobsResponse]> => { const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); const stopDatafeedsResponse = await fetch(`${chrome.getBasePath()}/api/ml/jobs/stop_datafeeds`, { method: 'POST', @@ -176,63 +220,27 @@ export const stopDatafeeds = async ( }; /** - * Fetches Job Details for given jobIds + * Fetches a summary of all ML jobs currently installed * - * @param jobIds - * @param headers + * NOTE: If not sending jobIds in the body, you must at least send an empty body or the server will + * return a 500 + * + * @param signal to cancel request */ -export const jobsSummary = async ( - jobIds: string[], - headers: Record, - signal: AbortSignal -): Promise => { +export const getJobsSummary = async (signal: AbortSignal): Promise => { const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); const response = await fetch(`${chrome.getBasePath()}/api/ml/jobs/jobs_summary`, { method: 'POST', credentials: 'same-origin', - body: JSON.stringify({ jobIds }), + body: JSON.stringify({}), headers: { 'content-type': 'application/json', - 'kbn-xsrf': kbnVersion, 'kbn-system-api': 'true', - ...headers, + 'kbn-version': kbnVersion, + 'kbn-xsrf': kbnVersion, }, signal, }); await throwIfNotOk(response); return response.json(); }; - -/** - * Fetches Configured Index Patterns from the Kibana saved objects API (as ML does during create job flow) - * TODO: Used by more than just ML now -- refactor to shared component https://github.com/elastic/siem-team/issues/448 - * @param headers - */ -export const getIndexPatterns = async ( - headers: Record, - signal: AbortSignal -): Promise => { - const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); - const response = await fetch( - `${chrome.getBasePath()}/api/saved_objects/_find?type=index-pattern&fields=title&fields=type&per_page=10000`, - { - method: 'GET', - credentials: 'same-origin', - headers: { - 'content-type': 'application/json', - 'kbn-xsrf': kbnVersion, - 'kbn-system-api': 'true', - ...headers, - }, - signal, - } - ); - await throwIfNotOk(response); - const results: IndexPatternResponse = await response.json(); - - if (results.saved_objects && Array.isArray(results.saved_objects)) { - return results.saved_objects; - } else { - return emptyIndexPattern; - } -}; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/config_templates.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/config_templates.tsx deleted file mode 100644 index b6391668762d1..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/config_templates.tsx +++ /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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { ConfigTemplate } from './types'; - -/** - * Config Templates w/ corresponding defaultIndexPattern and jobId's of the SIEM Jobs embedded - * in ML. Added as part of: https://github.com/elastic/kibana/pull/39678/files - */ -export const configTemplates: ConfigTemplate[] = [ - { - name: 'siem_auditbeat_ecs', - defaultIndexPattern: 'auditbeat-*', - jobs: [ - 'rare_process_by_host_linux_ecs', - 'suspicious_login_activity_ecs', - 'linux_anomalous_network_activity_ecs', - 'linux_anomalous_network_port_activity_ecs', - 'linux_anomalous_network_service', - 'linux_anomalous_network_url_activity_ecs', - 'linux_anomalous_process_all_hosts_ecs', - 'linux_anomalous_user_name_ecs', - ], - }, - { - name: 'siem_winlogbeat_ecs', - defaultIndexPattern: 'winlogbeat-*', - jobs: [ - 'rare_process_by_host_windows_ecs', - 'windows_anomalous_network_activity_ecs', - 'windows_anomalous_path_activity_ecs', - 'windows_anomalous_process_all_hosts_ecs', - 'windows_anomalous_process_creation', - 'windows_anomalous_script', - 'windows_anomalous_service', - 'windows_anomalous_user_name_ecs', - ], - }, -]; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.test.tsx index a7025c68c429e..26ebfeb91629b 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.test.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.test.tsx @@ -4,153 +4,41 @@ * you may not use this file except in compliance with the Elastic License. */ -import { - mockConfigTemplates, - mockEmbeddedJobIds, - mockIndexPatternSavedObjects, - mockInstalledJobIds, - mockJobsSummaryResponse, -} from './__mocks__/api'; -import { - getConfigTemplatesToInstall, - getIndexPatternTitleIdMapping, - getIndexPatternTitles, - getJobsToDisplay, - getJobsToInstall, - searchFilter, - getStablePatternTitles, -} from './helpers'; +import { mockSiemJobs } from './__mocks__/api'; +import { filterJobs, getStablePatternTitles, searchFilter } from './helpers'; jest.mock('../ml/permissions/has_ml_admin_permissions', () => ({ hasMlAdminPermissions: () => true, })); describe('helpers', () => { - describe('getJobsToInstall', () => { - test('returns jobIds from all ConfigTemplates', () => { - const jobsToInstall = getJobsToInstall(mockConfigTemplates); - expect(jobsToInstall.length).toEqual(3); - }); - }); - - describe('getConfigTemplatesToInstall', () => { - test('returns all configTemplates if no jobs are installed', () => { - const configTemplatesToInstall = getConfigTemplatesToInstall( - mockConfigTemplates, - [], - ['auditbeat-*', 'winlogbeat-*'] - ); - expect(configTemplatesToInstall.length).toEqual(2); - }); - - test('returns subset of configTemplates if index not available', () => { - const configTemplatesToInstall = getConfigTemplatesToInstall( - mockConfigTemplates, - [], - ['auditbeat-*', 'spongbeat-*'] - ); - expect(configTemplatesToInstall.length).toEqual(1); - }); - - test('returns all configTemplates if only partial jobs installed', () => { - const configTemplatesToInstall = getConfigTemplatesToInstall( - mockConfigTemplates, - mockInstalledJobIds, - ['auditbeat-*', 'winlogbeat-*'] - ); - expect(configTemplatesToInstall.length).toEqual(2); - }); - - test('returns no configTemplates if index is substring of indexPatterns', () => { - const configTemplatesToInstall = getConfigTemplatesToInstall( - mockConfigTemplates, - mockInstalledJobIds, - ['winlogbeat-**'] - ); - expect(configTemplatesToInstall.length).toEqual(0); - }); - }); - - describe('getJobsToDisplay', () => { - test('returns empty array when null summaryData provided', () => { - const jobsToDisplay = getJobsToDisplay(null, mockEmbeddedJobIds, false, false); - expect(jobsToDisplay.length).toEqual(0); - }); - - test('returns all DisplayJobs', () => { - const jobsToDisplay = getJobsToDisplay( - mockJobsSummaryResponse, - mockEmbeddedJobIds, - false, - false - ); - expect(jobsToDisplay.length).toEqual(4); - }); - - test('returns DisplayJobs matching only embeddedJobs', () => { - const jobsToDisplay = getJobsToDisplay( - mockJobsSummaryResponse, - mockEmbeddedJobIds, - true, - false - ); - expect(jobsToDisplay.length).toEqual(3); - }); - - test('returns only custom DisplayJobs from jobsSummary', () => { - const jobsToDisplay = getJobsToDisplay( - mockJobsSummaryResponse, - mockEmbeddedJobIds, - false, - true - ); - expect(jobsToDisplay.length).toEqual(1); + describe('filterJobs', () => { + test('returns all jobs when no filter is suplied', () => { + const filteredJobs = filterJobs({ + jobs: mockSiemJobs, + selectedGroups: [], + showCustomJobs: false, + showElasticJobs: false, + filterQuery: '', + }); + expect(filteredJobs.length).toEqual(3); }); }); describe('searchFilter', () => { test('returns all jobs when nullfilterQuery is provided', () => { - const jobsToDisplay = searchFilter(mockJobsSummaryResponse); - expect(jobsToDisplay.length).toEqual(mockJobsSummaryResponse.length); + const jobsToDisplay = searchFilter(mockSiemJobs); + expect(jobsToDisplay.length).toEqual(mockSiemJobs.length); }); test('returns correct DisplayJobs when filterQuery matches job.id', () => { - const jobsToDisplay = searchFilter(mockJobsSummaryResponse, 'rare'); - expect(jobsToDisplay.length).toEqual(3); + const jobsToDisplay = searchFilter(mockSiemJobs, 'rare_process'); + expect(jobsToDisplay.length).toEqual(2); }); test('returns correct DisplayJobs when filterQuery matches job.description', () => { - const jobsToDisplay = searchFilter(mockJobsSummaryResponse, 'high number'); - expect(jobsToDisplay.length).toEqual(1); - }); - }); - - describe('getIndexPatternTitles', () => { - test('returns empty array when no index patterns are provided', () => { - const indexPatternTitles = getIndexPatternTitles([]); - expect(indexPatternTitles.length).toEqual(0); - }); - - test('returns titles when index patterns are provided', () => { - const indexPatternTitles = getIndexPatternTitles(mockIndexPatternSavedObjects); - expect(indexPatternTitles.length).toEqual(2); - }); - }); - - describe('getIndexPatternTitleIdMapping', () => { - test('returns empty array when no index patterns are provided', () => { - const indexPatternTitleIdMapping = getIndexPatternTitleIdMapping([]); - expect(indexPatternTitleIdMapping.length).toEqual(0); - }); - - test('returns correct mapping when index patterns are provided', () => { - const indexPatternTitleIdMapping = getIndexPatternTitleIdMapping( - mockIndexPatternSavedObjects - ); - expect(indexPatternTitleIdMapping).toEqual([ - { id: '2d1fe420-eeee-11e9-ad95-4b5e687c2aee', title: 'filebeat-*' }, - { id: '5463ec70-c7ba-ffff-ad95-4b5e687c2aee', title: 'auditbeat-*' }, - ]); + const jobsToDisplay = searchFilter(mockSiemJobs, 'Detect unusually'); + expect(jobsToDisplay.length).toEqual(2); }); }); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.tsx index d0fc3ab074ebf..eaca7a9068c37 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/helpers.tsx @@ -4,56 +4,39 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ConfigTemplate, IndexPatternSavedObject, Job } from './types'; +import { SiemJob } from './types'; /** - * Returns all `jobIds` for each configTemplate provided - * - * @param templates ConfigTemplates as provided by ML Team (https://github.com/elastic/machine-learning-data/issues/194#issuecomment-505779406) - */ -export const getJobsToInstall = (templates: ConfigTemplate[]): string[] => - templates.reduce((jobs: string[], template) => [...jobs, ...template.jobs], []); - -/** - * Returns which ConfigTemplates that need to be installed based off of which Jobs are already installed and the configured indexPattern - * - * @param templates ConfigTemplates as provided by ML Team - * @param installedJobIds list of installed JobIds - * @param indexPatterns list of the user's currently configured IndexPatterns - */ -export const getConfigTemplatesToInstall = ( - templates: ConfigTemplate[], - installedJobIds: string[], - indexPatterns: string[] -): ConfigTemplate[] => - templates - .filter(ct => !ct.jobs.every(ctJobId => installedJobIds.includes(ctJobId))) - .filter(ct => indexPatterns.includes(ct.defaultIndexPattern)); - -/** - * Returns a filtered array of Jobs that based on filterGroup selection (Elastic vs Custom Jobs) and any user provided filterQuery + * Returns a filtered array of Jobs according to JobsTableFilters selections * * @param jobs to filter - * @param embeddedJobIds jobIds as defined in the ConfigTemplates provided by the ML Team + * @param selectedGroups groups to filter on * @param showCustomJobs whether or not to show all Custom Jobs (Non-embedded Jobs in SIEM Group) * @param showElasticJobs whether or not to show Elastic Jobs (Embedded ConfigTemplate Jobs) * @param filterQuery user-provided search string to filter for occurrence in job names/description */ -export const getJobsToDisplay = ( - jobs: Job[] | null, - embeddedJobIds: string[], - showCustomJobs: boolean, - showElasticJobs: boolean, - filterQuery?: string -): Job[] => - jobs - ? searchFilter( - jobs - .filter(job => (showCustomJobs ? embeddedJobIds.includes(job.id) : true)) - .filter(job => (showElasticJobs ? !embeddedJobIds.includes(job.id) : true)), - filterQuery - ) - : []; +export const filterJobs = ({ + jobs, + selectedGroups, + showCustomJobs, + showElasticJobs, + filterQuery, +}: { + jobs: SiemJob[]; + selectedGroups: string[]; + showCustomJobs: boolean; + showElasticJobs: boolean; + filterQuery: string; +}): SiemJob[] => + searchFilter( + jobs + .filter(job => !showCustomJobs || (showCustomJobs && !job.isElasticJob)) + .filter(job => !showElasticJobs || (showElasticJobs && job.isElasticJob)) + .filter( + job => selectedGroups.length === 0 || selectedGroups.some(g => job.groups.includes(g)) + ), + filterQuery + ); /** * Returns filtered array of Jobs based on user-provided search string to filter for occurrence in job names/description @@ -61,21 +44,13 @@ export const getJobsToDisplay = ( * @param jobs to filter * @param filterQuery user-provided search string to filter for occurrence in job names/description */ -export const searchFilter = (jobs: Job[], filterQuery?: string): Job[] => +export const searchFilter = (jobs: SiemJob[], filterQuery?: string): SiemJob[] => jobs.filter(job => filterQuery == null ? true : job.id.includes(filterQuery) || job.description.includes(filterQuery) ); -/** - * Returns a string array of Index Pattern Titles - * - * @param indexPatterns IndexPatternSavedObject[] as provided from the useIndexPatterns() hook - */ -export const getIndexPatternTitles = (indexPatterns: IndexPatternSavedObject[]): string[] => - indexPatterns.reduce((acc: string[], v) => [...acc, v.attributes.title], []); - /** * Given an array of titles this will always return the same string for usage within * useEffect and other shallow compare areas. @@ -83,19 +58,3 @@ export const getIndexPatternTitles = (indexPatterns: IndexPatternSavedObject[]): * @param patterns string[] string array that will return a stable reference regardless of ordering or case sensitivity. */ export const getStablePatternTitles = (patterns: string[]) => patterns.sort().join(); - -/** - * Returns a mapping of indexPatternTitle to indexPatternId - * - * @param indexPatterns IndexPatternSavedObject[] as provided from the useIndexPatterns() hook - */ -export const getIndexPatternTitleIdMapping = ( - indexPatterns: IndexPatternSavedObject[] -): Array<{ title: string; id: string }> => - indexPatterns.reduce((acc: Array<{ title: string; id: string }>, v) => { - if (v.attributes && v.attributes.title) { - return [...acc, { title: v.attributes.title, id: v.id }]; - } else { - return acc; - } - }, []); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/translations.ts b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/translations.ts index 3982931a2b7ca..4740dbb59e352 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/translations.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/translations.ts @@ -6,20 +6,6 @@ import { i18n } from '@kbn/i18n'; -export const INDEX_PATTERN_FETCH_FAILURE = i18n.translate( - 'xpack.siem.components.mlPopup.hooks.errors.indexPatternFetchFailureTitle', - { - defaultMessage: 'Index pattern fetch failure', - } -); - -export const JOB_SUMMARY_FETCH_FAILURE = i18n.translate( - 'xpack.siem.components.mlPopup.hooks.errors.jobSummaryFetchFailureTitle', - { - defaultMessage: 'Job summary fetch failure', - } -); - export const SIEM_JOB_FETCH_FAILURE = i18n.translate( 'xpack.siem.components.mlPopup.hooks.errors.siemJobFetchFailureTitle', { diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.test.tsx deleted file mode 100644 index ad863369199a8..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.test.tsx +++ /dev/null @@ -1,17 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { getSiemJobsFromJobsSummary } from './use_job_summary_data'; -import { mockJobsSummaryResponse } from '../__mocks__/api'; - -describe('useJobSummaryData', () => { - describe('getSiemJobsFromJobsSummary', () => { - test('returns all jobs that are in the siem group', () => { - const siemJobs = getSiemJobsFromJobsSummary(mockJobsSummaryResponse); - expect(siemJobs.length).toEqual(3); - }); - }); -}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.tsx deleted file mode 100644 index 6ae18bc15ab9c..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_job_summary_data.tsx +++ /dev/null @@ -1,75 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useContext, useEffect, useState } from 'react'; - -import { jobsSummary } from '../api'; -import { Job } from '../types'; -import { hasMlUserPermissions } from '../../ml/permissions/has_ml_user_permissions'; -import { MlCapabilitiesContext } from '../../ml/permissions/ml_capabilities_provider'; -import { useStateToaster } from '../../toasters'; -import { errorToToaster } from '../../ml/api/error_to_toaster'; -import { useKibanaUiSetting } from '../../../lib/settings/use_kibana_ui_setting'; -import { DEFAULT_KBN_VERSION } from '../../../../common/constants'; - -import * as i18n from './translations'; - -type Return = [boolean, Job[] | null]; - -export const getSiemJobsFromJobsSummary = (data: Job[]) => - data.reduce((jobs: Job[], job: Job) => { - return job.groups.includes('siem') ? [...jobs, job] : jobs; - }, []); - -export const useJobSummaryData = (jobIds: string[] = [], refreshToggle = false): Return => { - const [jobSummaryData, setJobSummaryData] = useState(null); - const [loading, setLoading] = useState(true); - const capabilities = useContext(MlCapabilitiesContext); - const userPermissions = hasMlUserPermissions(capabilities); - const [, dispatchToaster] = useStateToaster(); - const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); - - useEffect(() => { - let isSubscribed = true; - const abortCtrl = new AbortController(); - setLoading(true); - - async function fetchSiemJobsFromJobsSummary() { - if (userPermissions) { - try { - const data: Job[] = await jobsSummary( - jobIds, - { - 'kbn-version': kbnVersion, - }, - abortCtrl.signal - ); - - // TODO: API returns all jobs even though we specified jobIds -- jobsSummary call seems to match request in ML App? - const siemJobs = getSiemJobsFromJobsSummary(data); - if (isSubscribed) { - setJobSummaryData(siemJobs); - } - } catch (error) { - if (isSubscribed) { - errorToToaster({ title: i18n.JOB_SUMMARY_FETCH_FAILURE, error, dispatchToaster }); - } - } - } - if (isSubscribed) { - setLoading(false); - } - } - - fetchSiemJobsFromJobsSummary(); - return () => { - isSubscribed = false; - abortCtrl.abort(); - }; - }, [refreshToggle, userPermissions]); - - return [loading, jobSummaryData]; -}; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.test.tsx deleted file mode 100644 index e1f5a346d092e..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.test.tsx +++ /dev/null @@ -1,17 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { mockGroupsResponse } from '../__mocks__/api'; -import { getSiemJobIdsFromGroupsData } from './use_siem_jobs'; - -describe('useSiemJobs', () => { - describe('getSiemJobsFromGroupData', () => { - test('returns all jobIds for siem group', () => { - const siemJobIds = getSiemJobIdsFromGroupsData(mockGroupsResponse); - expect(siemJobIds.length).toEqual(6); - }); - }); -}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.tsx index f7f45d67d3468..89f995773e833 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs.tsx @@ -4,33 +4,37 @@ * you may not use this file except in compliance with the Elastic License. */ -import { useState, useEffect, useContext } from 'react'; +import { useContext, useEffect, useState } from 'react'; -import { groupsData } from '../api'; -import { Group } from '.././types'; +import { checkRecognizer, getJobsSummary, getModules } from '../api'; +import { SiemJob } from '../types'; import { hasMlUserPermissions } from '../../ml/permissions/has_ml_user_permissions'; import { MlCapabilitiesContext } from '../../ml/permissions/ml_capabilities_provider'; import { useStateToaster } from '../../toasters'; import { errorToToaster } from '../../ml/api/error_to_toaster'; import { useKibanaUiSetting } from '../../../lib/settings/use_kibana_ui_setting'; -import { DEFAULT_KBN_VERSION } from '../../../../common/constants'; +import { DEFAULT_INDEX_KEY } from '../../../../common/constants'; import * as i18n from './translations'; +import { createSiemJobs } from './use_siem_jobs_helpers'; -type Return = [boolean, string[]]; - -export const getSiemJobIdsFromGroupsData = (data: Group[]) => - data.reduce((jobIds: string[], group: Group) => { - return group.id === 'siem' ? [...jobIds, ...group.jobIds] : jobIds; - }, []); +type Return = [boolean, SiemJob[]]; +/** + * Compiles a collection of SiemJobs, which are a list of all jobs relevant to the SIEM App. This + * includes all installed jobs in the `SIEM` ML group, and all jobs within ML Modules defined in + * ml_module (whether installed or not). Use the corresponding helper functions to filter the job + * list as necessary. E.g. installed jobs, running jobs, etc. + * + * @param refetchData + */ export const useSiemJobs = (refetchData: boolean): Return => { - const [siemJobs, setSiemJobs] = useState([]); + const [siemJobs, setSiemJobs] = useState([]); const [loading, setLoading] = useState(true); const capabilities = useContext(MlCapabilitiesContext); const userPermissions = hasMlUserPermissions(capabilities); + const [siemDefaultIndex] = useKibanaUiSetting(DEFAULT_INDEX_KEY); const [, dispatchToaster] = useStateToaster(); - const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); useEffect(() => { let isSubscribed = true; @@ -40,16 +44,17 @@ export const useSiemJobs = (refetchData: boolean): Return => { async function fetchSiemJobIdsFromGroupsData() { if (userPermissions) { try { - const data = await groupsData( - { - 'kbn-version': kbnVersion, - }, - abortCtrl.signal - ); + // Batch fetch all installed jobs, ML modules, and check which modules are compatible with siemDefaultIndex + const [jobSummaryData, modulesData, compatibleModules] = await Promise.all([ + getJobsSummary(abortCtrl.signal), + getModules({ signal: abortCtrl.signal }), + checkRecognizer({ indexPatternName: siemDefaultIndex, signal: abortCtrl.signal }), + ]); + + const compositeSiemJobs = createSiemJobs(jobSummaryData, modulesData, compatibleModules); - const siemJobIds = getSiemJobIdsFromGroupsData(data); if (isSubscribed) { - setSiemJobs(siemJobIds); + setSiemJobs(compositeSiemJobs); } } catch (error) { if (isSubscribed) { diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.test.tsx new file mode 100644 index 0000000000000..fc9f369a305aa --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + composeModuleAndInstalledJobs, + createSiemJobs, + getAugmentedFields, + getInstalledJobs, + getModuleJobs, + moduleToSiemJob, +} from './use_siem_jobs_helpers'; +import { + checkRecognizerSuccess, + mockGetModuleResponse, + mockJobsSummaryResponse, +} from '../__mocks__/api'; + +// TODO: Expand test coverage + +describe('useSiemJobsHelpers', () => { + describe('moduleToSiemJob', () => { + test('correctly converts module to SiemJob', () => { + const siemJob = moduleToSiemJob( + mockGetModuleResponse[0], + mockGetModuleResponse[0].jobs[0], + false + ); + expect(siemJob).toEqual({ + datafeedId: '', + datafeedIndices: [], + datafeedState: '', + defaultIndexPattern: 'auditbeat-*', + description: 'SIEM Auditbeat: Detect unusually rare processes on Linux (beta)', + groups: ['auditbeat', 'process', 'siem'], + hasDatafeed: false, + id: 'rare_process_by_host_linux_ecs', + isCompatible: false, + isElasticJob: true, + isInstalled: false, + isSingleMetricViewerJob: false, + jobState: '', + memory_status: '', + moduleId: 'siem_auditbeat', + processed_record_count: 0, + }); + }); + + describe('getAugmentedFields', () => { + test('return correct augmented fields for given matching compatible modules', () => { + const moduleJobs = getModuleJobs(mockGetModuleResponse, ['siem_auditbeat']); + const augmentedFields = getAugmentedFields('rare_process_by_host_linux_ecs', moduleJobs, [ + 'siem_auditbeat', + ]); + expect(augmentedFields).toEqual({ + defaultIndexPattern: 'auditbeat-*', + isCompatible: true, + isElasticJob: true, + moduleId: 'siem_auditbeat', + }); + }); + }); + + describe('getModuleJobs', () => { + test('returns all jobs within a module for a compatible moduleId', () => { + const moduleJobs = getModuleJobs(mockGetModuleResponse, ['siem_auditbeat']); + expect(moduleJobs.length).toEqual(3); + }); + }); + + describe('getInstalledJobs', () => { + test('returns all jobs from jobSummary for a compatible moduleId', () => { + const moduleJobs = getModuleJobs(mockGetModuleResponse, ['siem_auditbeat']); + const installedJobs = getInstalledJobs(mockJobsSummaryResponse, moduleJobs, [ + 'siem_auditbeat', + ]); + expect(installedJobs.length).toEqual(3); + }); + }); + + describe('composeModuleAndInstalledJobs', () => { + test('returns correct number of jobs when composing separate module and installed jobs', () => { + const moduleJobs = getModuleJobs(mockGetModuleResponse, ['siem_auditbeat']); + const installedJobs = getInstalledJobs(mockJobsSummaryResponse, moduleJobs, [ + 'siem_auditbeat', + ]); + const siemJobs = composeModuleAndInstalledJobs(installedJobs, moduleJobs); + expect(siemJobs.length).toEqual(6); + }); + }); + + describe('createSiemJobs', () => { + test('returns correct number of jobs when creating jobs with successful responses', () => { + const siemJobs = createSiemJobs( + mockJobsSummaryResponse, + mockGetModuleResponse, + checkRecognizerSuccess + ); + expect(siemJobs.length).toEqual(6); + }); + }); + }); +}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.tsx new file mode 100644 index 0000000000000..81b7914b81742 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_siem_jobs_helpers.tsx @@ -0,0 +1,154 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + AugmentedSiemJobFields, + JobSummary, + Module, + ModuleJob, + RecognizerModule, + SiemJob, +} from '../types'; +import { mlModules } from '../ml_modules'; + +/** + * Helper function for converting from ModuleJob -> SiemJob + * @param module + * @param moduleJob + * @param isCompatible + */ +export const moduleToSiemJob = ( + module: Module, + moduleJob: ModuleJob, + isCompatible: boolean +): SiemJob => { + return { + datafeedId: '', + datafeedIndices: [], + datafeedState: '', + hasDatafeed: false, + isSingleMetricViewerJob: false, + jobState: '', + memory_status: '', + processed_record_count: 0, + id: moduleJob.id, + description: moduleJob.config.description, + groups: [...moduleJob.config.groups].sort(), + defaultIndexPattern: module.defaultIndexPattern, + moduleId: module.id, + isCompatible, + isInstalled: false, + isElasticJob: true, + }; +}; + +/** + * Returns fields necessary to augment a ModuleJob to a SiemJob + * + * @param jobId + * @param moduleJobs + * @param compatibleModuleIds + */ +export const getAugmentedFields = ( + jobId: string, + moduleJobs: SiemJob[], + compatibleModuleIds: string[] +): AugmentedSiemJobFields => { + const moduleJob = moduleJobs.find(mj => mj.id === jobId); + return moduleJob !== undefined + ? { + moduleId: moduleJob.moduleId, + defaultIndexPattern: moduleJob.defaultIndexPattern, + isCompatible: compatibleModuleIds.includes(moduleJob.moduleId), + isElasticJob: true, + } + : { + moduleId: '', + defaultIndexPattern: '', + isCompatible: true, + isElasticJob: false, + }; +}; + +/** + * Process Modules[] from the `get_module` ML API into SiemJobs[] by filtering to SIEM specific + * modules and unpacking jobs from each module + * + * @param modulesData + * @param compatibleModuleIds + */ +export const getModuleJobs = (modulesData: Module[], compatibleModuleIds: string[]): SiemJob[] => + modulesData + .filter(module => mlModules.includes(module.id)) + .map(module => [ + ...module.jobs.map(moduleJob => + moduleToSiemJob(module, moduleJob, compatibleModuleIds.includes(module.id)) + ), + ]) + .flat(); + +/** + * Process JobSummary[] from the `jobs_summary` ML API into SiemJobs[] by filtering to to SIEM jobs + * and augmenting with moduleId/defaultIndexPattern/isCompatible + * + * @param jobSummaryData + * @param moduleJobs + * @param compatibleModuleIds + */ +export const getInstalledJobs = ( + jobSummaryData: JobSummary[], + moduleJobs: SiemJob[], + compatibleModuleIds: string[] +): SiemJob[] => + jobSummaryData + .filter(({ groups }) => groups.includes('siem')) + .map(jobSummary => ({ + ...jobSummary, + ...getAugmentedFields(jobSummary.id, moduleJobs, compatibleModuleIds), + isInstalled: true, + })); + +/** + * Combines installed jobs + moduleSiemJobs that don't overlap and sorts by name asc + * + * @param installedJobs + * @param moduleSiemJobs + */ +export const composeModuleAndInstalledJobs = ( + installedJobs: SiemJob[], + moduleSiemJobs: SiemJob[] +): SiemJob[] => { + const installedJobsIds = installedJobs.map(installedJob => installedJob.id); + + return [...installedJobs, ...moduleSiemJobs.filter(mj => !installedJobsIds.includes(mj.id))].sort( + (a, b) => a.id.localeCompare(b.id) + ); +}; +/** + * Creates a list of SiemJobs by composing JobSummary jobs (installed jobs) and Module + * jobs (pre-packaged SIEM jobs) into a single job object that can be used throughout the SIEM app + * + * @param jobSummaryData + * @param modulesData + * @param compatibleModules + */ +export const createSiemJobs = ( + jobSummaryData: JobSummary[], + modulesData: Module[], + compatibleModules: RecognizerModule[] +): SiemJob[] => { + // Create lookup of compatible modules + const compatibleModuleIds = compatibleModules.map(module => module.id); + + // Process modulesData: Filter to SIEM specific modules, and unpack jobs from modules + const moduleSiemJobs = getModuleJobs(modulesData, compatibleModuleIds); + + // Process jobSummaryData: Filter to SIEM jobs, and augment with moduleId/defaultIndexPattern/isCompatible + const installedJobs = getInstalledJobs(jobSummaryData, moduleSiemJobs, compatibleModuleIds); + + // Combine installed jobs + moduleSiemJobs that don't overlap, and sort by name asc + return composeModuleAndInstalledJobs(installedJobs, moduleSiemJobs); +}; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/filter_group.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/filter_group.test.tsx.snap deleted file mode 100644 index aa8524366d2b2..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/filter_group.test.tsx.snap +++ /dev/null @@ -1,52 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`FilterGroup renders correctly against snapshot 1`] = ` - - - - - - - - Elastic jobs - - - Custom jobs - - - - -`; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap index aeb4ce089883b..7f7c63504f317 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/__snapshots__/job_switch.test.tsx.snap @@ -8,7 +8,7 @@ exports[`JobSwitch renders correctly against snapshot 1`] = ` grow={false} > { - test('renders correctly against snapshot', () => { - const wrapper = shallow( - - ); - expect(toJson(wrapper)).toMatchSnapshot(); - }); - - test('when you click filter onChange is called and filter updated', () => { - const mockSetShowAllJobs = jest.fn(); - const wrapper = mount( - - ); - - wrapper - .find('[data-test-subj="show-elastic-jobs-filter-button"]') - .first() - .simulate('click'); - wrapper.update(); - - expect(mockSetShowAllJobs.mock.calls[0]).toEqual([true]); - }); -}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filter_group.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filter_group.tsx deleted file mode 100644 index 6a70fee696297..0000000000000 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filter_group.tsx +++ /dev/null @@ -1,71 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import { - EuiFilterButton, - EuiFilterGroup, - EuiFlexGroup, - EuiFlexItem, - // @ts-ignore no-exported-member - EuiSearchBar, -} from '@elastic/eui'; - -import { EuiSearchBarQuery } from '../../open_timeline/types'; -import * as i18n from '../translations'; - -interface FilterGroupProps { - showCustomJobs: boolean; - setShowCustomJobs: (showCustomJobs: boolean) => void; - showElasticJobs: boolean; - setShowElasticJobs: (showCustomJobs: boolean) => void; - setFilterQuery: (filterQuery: string) => void; -} - -export const FilterGroup = React.memo( - ({ showCustomJobs, setShowCustomJobs, showElasticJobs, setShowElasticJobs, setFilterQuery }) => ( - - - setFilterQuery(query.queryText.trim())} - /> - - - - - { - setShowCustomJobs(!showCustomJobs); - setShowElasticJobs(false); - }} - data-test-subj="show-custom-jobs-filter-button" - withNext - > - {i18n.SHOW_ELASTIC_JOBS} - - { - setShowElasticJobs(!showElasticJobs); - setShowCustomJobs(false); - }} - data-test-subj="show-elastic-jobs-filter-button" - > - {i18n.SHOW_CUSTOM_JOBS} - - - - - ) -); - -FilterGroup.displayName = 'FilterGroup'; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap new file mode 100644 index 0000000000000..4c9a27b76060c --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/groups_filter_popover.test.tsx.snap @@ -0,0 +1,51 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`GroupsFilterPopover renders correctly against snapshot 1`] = ` + + Groups + + } + closePopover={[Function]} + display="inlineBlock" + hasArrow={true} + isOpen={false} + ownFocus={true} + panelPaddingSize="none" +> + + auditbeat (2) + + + process (3) + + + winlogbeat (1) + + +`; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/jobs_table_filters.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/jobs_table_filters.test.tsx.snap new file mode 100644 index 0000000000000..fac91f75978f0 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/__snapshots__/jobs_table_filters.test.tsx.snap @@ -0,0 +1,138 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`JobsTableFilters renders correctly against snapshot 1`] = ` + + + + + + + + + + + + + Elastic jobs + + + Custom jobs + + + + +`; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx new file mode 100644 index 0000000000000..cb8748ea5e997 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.test.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { mount, shallow } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import * as React from 'react'; +import { GroupsFilterPopover } from './groups_filter_popover'; +import { mockSiemJobs } from '../../__mocks__/api'; +import { SiemJob } from '../../types'; +import { cloneDeep } from 'lodash/fp'; + +describe('GroupsFilterPopover', () => { + let siemJobs: SiemJob[]; + + beforeEach(() => { + siemJobs = cloneDeep(mockSiemJobs); + }); + + test('renders correctly against snapshot', () => { + const wrapper = shallow( + + ); + expect(toJson(wrapper)).toMatchSnapshot(); + }); + + test('when a filter is clicked, it becomes checked ', () => { + const mockOnSelectedGroupsChanged = jest.fn(); + const wrapper = mount( + + ); + + wrapper + .find('[data-test-subj="groups-filter-popover-button"]') + .first() + .simulate('click'); + wrapper.update(); + + wrapper + .find('EuiFilterSelectItem') + .first() + .simulate('click'); + wrapper.update(); + + expect( + wrapper + .find('EuiFilterSelectItem') + .first() + .prop('checked') + ).toEqual('on'); + }); +}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx new file mode 100644 index 0000000000000..e39046ba013c7 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/groups_filter_popover.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Dispatch, SetStateAction, useEffect, useState } from 'react'; +import { + EuiFilterButton, + EuiFilterSelectItem, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiPopover, + EuiSpacer, +} from '@elastic/eui'; +import * as i18n from './translations'; +import { SiemJob } from '../../types'; +import { toggleSelectedGroup } from './toggle_selected_group'; + +interface GroupsFilterPopoverProps { + siemJobs: SiemJob[]; + onSelectedGroupsChanged: Dispatch>; +} + +/** + * Popover for selecting which SiemJob groups to filter on. Component extracts unique groups and + * their counts from the provided SiemJobs. The 'siem' group is filtered out as all jobs will be + * siem jobs + * + * @param siemJobs jobs to fetch groups from to display for filtering + * @param onSelectedGroupsChanged change listener to be notified when group selection changes + */ +export const GroupsFilterPopover = React.memo( + ({ siemJobs, onSelectedGroupsChanged }) => { + const [isGroupPopoverOpen, setIsGroupPopoverOpen] = useState(false); + const [selectedGroups, setSelectedGroups] = useState([]); + + const groups = siemJobs + .map(j => j.groups) + .flat() + .filter(g => g !== 'siem'); + const uniqueGroups = Array.from(new Set(groups)); + + useEffect(() => { + onSelectedGroupsChanged(selectedGroups); + }, [selectedGroups.sort().join()]); + + return ( + setIsGroupPopoverOpen(!isGroupPopoverOpen)} + isSelected={isGroupPopoverOpen} + hasActiveFilters={selectedGroups.length > 0} + numActiveFilters={selectedGroups.length} + > + {i18n.GROUPS} + + } + isOpen={isGroupPopoverOpen} + closePopover={() => setIsGroupPopoverOpen(!isGroupPopoverOpen)} + panelPaddingSize="none" + > + {uniqueGroups.map((group, index) => ( + toggleSelectedGroup(group, selectedGroups, setSelectedGroups)} + > + {`${group} (${groups.filter(g => g === group).length})`} + + ))} + {uniqueGroups.length === 0 && ( + + + + +

{i18n.NO_GROUPS_AVAILABLE}

+
+
+ )} +
+ ); + } +); + +GroupsFilterPopover.displayName = 'GroupsFilterPopover'; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx new file mode 100644 index 0000000000000..5838c3105de6d --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.test.tsx @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { mount, shallow } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import * as React from 'react'; +import { JobsTableFilters } from './jobs_table_filters'; +import { SiemJob } from '../../types'; +import { cloneDeep } from 'lodash/fp'; +import { mockSiemJobs } from '../../__mocks__/api'; + +describe('JobsTableFilters', () => { + let siemJobs: SiemJob[]; + + beforeEach(() => { + siemJobs = cloneDeep(mockSiemJobs); + }); + + test('renders correctly against snapshot', () => { + const wrapper = shallow(); + expect(toJson(wrapper)).toMatchSnapshot(); + }); + + test('when you click Elastic Jobs filter, state is updated and it is selected', () => { + const onFilterChanged = jest.fn(); + const wrapper = mount( + + ); + + wrapper + .find('[data-test-subj="show-elastic-jobs-filter-button"]') + .first() + .simulate('click'); + wrapper.update(); + + expect( + wrapper + .find('[data-test-subj="show-elastic-jobs-filter-button"]') + .first() + .prop('hasActiveFilters') + ).toEqual(true); + }); + + test('when you click Custom Jobs filter, state is updated and it is selected', () => { + const onFilterChanged = jest.fn(); + const wrapper = mount( + + ); + + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); + wrapper.update(); + + expect( + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .prop('hasActiveFilters') + ).toEqual(true); + }); + + test('when you click Custom Jobs filter once, then Elastic Jobs filter, state is updated and selected changed', () => { + const onFilterChanged = jest.fn(); + const wrapper = mount( + + ); + + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); + wrapper.update(); + + wrapper + .find('[data-test-subj="show-elastic-jobs-filter-button"]') + .first() + .simulate('click'); + wrapper.update(); + + expect( + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .prop('hasActiveFilters') + ).toEqual(false); + expect( + wrapper + .find('[data-test-subj="show-elastic-jobs-filter-button"]') + .first() + .prop('hasActiveFilters') + ).toEqual(true); + }); + + test('when you click Custom Jobs filter twice, state is updated and it is revert', () => { + const onFilterChanged = jest.fn(); + const wrapper = mount( + + ); + + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); + wrapper.update(); + + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .simulate('click'); + wrapper.update(); + + expect( + wrapper + .find('[data-test-subj="show-custom-jobs-filter-button"]') + .first() + .prop('hasActiveFilters') + ).toEqual(false); + }); +}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx new file mode 100644 index 0000000000000..ba080757d34a8 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/jobs_table_filters.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Dispatch, SetStateAction, useEffect, useState } from 'react'; + +import { + EuiFilterButton, + EuiFilterGroup, + EuiFlexGroup, + EuiFlexItem, + // @ts-ignore no-exported-member + EuiSearchBar, +} from '@elastic/eui'; +import { EuiSearchBarQuery } from '../../../open_timeline/types'; +import * as i18n from './translations'; +import { JobsFilters, SiemJob } from '../../types'; +import { GroupsFilterPopover } from './groups_filter_popover'; + +interface JobsTableFiltersProps { + siemJobs: SiemJob[]; + onFilterChanged: Dispatch>; +} + +/** + * Collection of filters for filtering data within the JobsTable. Contains search bar, Elastic/Custom + * Jobs filter button toggle, and groups selection + * + * @param siemJobs jobs to fetch groups from to display for filtering + * @param onFilterChanged change listener to be notified on filter changes + */ +export const JobsTableFilters = React.memo( + ({ siemJobs, onFilterChanged }) => { + const [filterQuery, setFilterQuery] = useState(''); + const [selectedGroups, setSelectedGroups] = useState([]); + const [showCustomJobs, setShowCustomJobs] = useState(false); + const [showElasticJobs, setShowElasticJobs] = useState(false); + + // Propagate filter changes to parent + useEffect(() => { + onFilterChanged({ filterQuery, showCustomJobs, showElasticJobs, selectedGroups }); + }, [filterQuery, selectedGroups.sort().join(), showCustomJobs, showElasticJobs]); + + return ( + + + setFilterQuery(query.queryText.trim())} + /> + + + + + + + + + + + { + setShowElasticJobs(!showElasticJobs); + setShowCustomJobs(false); + }} + data-test-subj="show-elastic-jobs-filter-button" + withNext + > + {i18n.SHOW_ELASTIC_JOBS} + + { + setShowCustomJobs(!showCustomJobs); + setShowElasticJobs(false); + }} + data-test-subj="show-custom-jobs-filter-button" + > + {i18n.SHOW_CUSTOM_JOBS} + + + + + ); + } +); + +JobsTableFilters.displayName = 'JobsTableFilters'; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx new file mode 100644 index 0000000000000..353012732e1ae --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.test.tsx @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { toggleSelectedGroup } from './toggle_selected_group'; + +describe('#toggleSelectedGroup', () => { + let setSelectedGroups: jest.Mock; + beforeEach(() => { + setSelectedGroups = jest.fn(); + }); + + test('removes only job', () => { + toggleSelectedGroup('deadbeat', ['deadbeat'], setSelectedGroups); + expect(setSelectedGroups.mock.calls[0][0]).toEqual([]); + }); + + test('removes first job', () => { + toggleSelectedGroup('siem', ['siem', 'frankbeat', 'auditbeat'], setSelectedGroups); + expect(setSelectedGroups.mock.calls[0][0]).toEqual(['frankbeat', 'auditbeat']); + }); + + test('removes middle job', () => { + toggleSelectedGroup('frankbeat', ['siem', 'frankbeat', 'auditbeat'], setSelectedGroups); + expect(setSelectedGroups.mock.calls[0][0]).toEqual(['siem', 'auditbeat']); + }); + + test('removes last job', () => { + toggleSelectedGroup('auditbeat', ['siem', 'frankbeat', 'auditbeat'], setSelectedGroups); + expect(setSelectedGroups.mock.calls[0][0]).toEqual(['siem', 'frankbeat']); + }); + + test('adds job if element does not exist', () => { + toggleSelectedGroup('deadbeat', ['siem', 'frankbeat', 'auditbeat'], setSelectedGroups); + expect(setSelectedGroups.mock.calls[0][0]).toEqual([ + 'siem', + 'frankbeat', + 'auditbeat', + 'deadbeat', + ]); + }); +}); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx new file mode 100644 index 0000000000000..f6f252a4d7b9f --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/toggle_selected_group.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Dispatch, SetStateAction } from 'react'; + +export const toggleSelectedGroup = ( + group: string, + selectedGroups: string[], + setSelectedGroups: Dispatch> +): void => { + const selectedGroupIndex = selectedGroups.indexOf(group); + const updatedSelectedGroups = [...selectedGroups]; + if (selectedGroupIndex >= 0) { + updatedSelectedGroups.splice(selectedGroupIndex, 1); + } else { + updatedSelectedGroups.push(group); + } + setSelectedGroups(updatedSelectedGroups); +}; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/translations.ts b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/translations.ts new file mode 100644 index 0000000000000..b52a933407c2e --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/filters/translations.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; + +export const FILTER_PLACEHOLDER = i18n.translate( + 'xpack.siem.components.mlPopover.jobsTable.filters.searchFilterPlaceholder', + { + defaultMessage: 'e.g. rare_process_linux', + } +); + +export const GROUPS = i18n.translate( + 'xpack.siem.components.mlPopover.jobsTable.filters.groupsLabel', + { + defaultMessage: 'Groups', + } +); + +export const NO_GROUPS_AVAILABLE = i18n.translate( + 'xpack.siem.components.mlPopover.jobsTable.filters.noGroupsAvailableDescription', + { + defaultMessage: 'No Groups available', + } +); + +export const SHOW_ELASTIC_JOBS = i18n.translate( + 'xpack.siem.components.mlPopover.jobsTable.filters.showAllJobsLabel', + { + defaultMessage: 'Elastic jobs', + } +); + +export const SHOW_CUSTOM_JOBS = i18n.translate( + 'xpack.siem.components.mlPopover.jobsTable.filters.showSiemJobsLabel', + { + defaultMessage: 'Custom jobs', + } +); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.test.tsx index 844d346405e0e..2e869cce9ddf7 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.test.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.test.tsx @@ -9,17 +9,25 @@ import toJson from 'enzyme-to-json'; import * as React from 'react'; import { isChecked, isFailure, isJobLoading, JobSwitch } from './job_switch'; -import { mockOpenedJob } from '../__mocks__/api'; +import { cloneDeep } from 'lodash/fp'; +import { mockSiemJobs } from '../__mocks__/api'; +import { SiemJob } from '../types'; describe('JobSwitch', () => { + let siemJobs: SiemJob[]; let onJobStateChangeMock = jest.fn(); beforeEach(() => { + siemJobs = cloneDeep(mockSiemJobs); onJobStateChangeMock = jest.fn(); }); test('renders correctly against snapshot', () => { const wrapper = shallow( - + ); expect(toJson(wrapper)).toMatchSnapshot(); }); @@ -27,8 +35,8 @@ describe('JobSwitch', () => { test('should call onJobStateChange when the switch is clicked to be true/open', () => { const wrapper = mount( ); @@ -40,18 +48,18 @@ describe('JobSwitch', () => { target: { checked: true }, }); - expect(onJobStateChangeMock.mock.calls[0]).toEqual([ - 'siem-api-rare_process_linux_ecs', - 1562870521264, - true, - ]); + expect(onJobStateChangeMock.mock.calls[0][0].id).toEqual( + 'linux_anomalous_network_activity_ecs' + ); + expect(onJobStateChangeMock.mock.calls[0][1]).toEqual(1571022859393); + expect(onJobStateChangeMock.mock.calls[0][2]).toEqual(true); }); test('should have a switch when it is not in the loading state', () => { const wrapper = mount( ); @@ -61,8 +69,8 @@ describe('JobSwitch', () => { test('should not have a switch when it is in the loading state', () => { const wrapper = mount( ); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.tsx index 1b06a7bcadf0c..b62478acaf197 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/job_switch.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components'; import React, { useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner, EuiSwitch } from '@elastic/eui'; -import { Job } from '../types'; +import { SiemJob } from '../types'; const StaticSwitch = styled(EuiSwitch)` .euiSwitch__thumb, @@ -19,9 +19,9 @@ const StaticSwitch = styled(EuiSwitch)` StaticSwitch.displayName = 'StaticSwitch'; export interface JobSwitchProps { - job: Job; - isSummaryLoading: boolean; - onJobStateChange: (jobName: string, latestTimestampMs: number, enable: boolean) => void; + job: SiemJob; + isSiemJobsLoading: boolean; + onJobStateChange: (job: SiemJob, latestTimestampMs: number, enable: boolean) => void; } // Based on ML Job/Datafeed States from x-pack/legacy/plugins/ml/common/constants/states.js @@ -42,13 +42,13 @@ export const isFailure = (jobState: string, datafeedState: string): boolean => { }; export const JobSwitch = React.memo( - ({ job, isSummaryLoading, onJobStateChange }) => { + ({ job, isSiemJobsLoading, onJobStateChange }) => { const [isLoading, setIsLoading] = useState(false); return ( - {isSummaryLoading || isLoading || isJobLoading(job.jobState, job.datafeedId) ? ( + {isSiemJobsLoading || isLoading || isJobLoading(job.jobState, job.datafeedId) ? ( ) : ( ( checked={isChecked(job.jobState, job.datafeedState)} onChange={e => { setIsLoading(true); - onJobStateChange(job.id, job.latestTimestampMs || 0, e.target.checked); + onJobStateChange(job, job.latestTimestampMs || 0, e.target.checked); }} /> )} diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.test.tsx index 932dad267e3fa..5bd1660d2db48 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.test.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.test.tsx @@ -8,51 +8,43 @@ import { shallow, mount } from 'enzyme'; import toJson from 'enzyme-to-json'; import * as React from 'react'; import { JobsTable } from './jobs_table'; -import { mockJobsSummaryResponse } from '../__mocks__/api'; +import { mockSiemJobs } from '../__mocks__/api'; import { cloneDeep } from 'lodash/fp'; +import { SiemJob } from '../types'; describe('JobsTable', () => { + let siemJobs: SiemJob[]; let onJobStateChangeMock = jest.fn(); beforeEach(() => { + siemJobs = cloneDeep(mockSiemJobs); onJobStateChangeMock = jest.fn(); }); test('renders correctly against snapshot', () => { const wrapper = shallow( - + ); expect(toJson(wrapper)).toMatchSnapshot(); }); test('should render the hyperlink which points specifically to the job id', () => { const wrapper = mount( - + ); expect( wrapper .find('[data-test-subj="jobs-table-link"]') .first() .props().href - ).toEqual('/test/base/path/app/ml#/jobs?mlManagement=(jobId:rc-rare-process-windows-5)'); + ).toEqual( + '/test/base/path/app/ml#/jobs?mlManagement=(jobId:linux_anomalous_network_activity_ecs)' + ); }); test('should render the hyperlink with URI encodings which points specifically to the job id', () => { - const cloneJobsSummaryResponse = cloneDeep(mockJobsSummaryResponse); - cloneJobsSummaryResponse[0].id = 'job id with spaces'; + siemJobs[0].id = 'job id with spaces'; const wrapper = mount( - + ); expect( wrapper @@ -64,11 +56,7 @@ describe('JobsTable', () => { test('should call onJobStateChange when the switch is clicked to be true/open', () => { const wrapper = mount( - + ); wrapper .find('[data-test-subj="job-switch"] input') @@ -76,31 +64,19 @@ describe('JobsTable', () => { .simulate('change', { target: { checked: true }, }); - expect(onJobStateChangeMock.mock.calls[0]).toEqual([ - 'rc-rare-process-windows-5', - 1561402325194, - true, - ]); + expect(onJobStateChangeMock.mock.calls[0]).toEqual([siemJobs[0], 1571022859393, true]); }); test('should have a switch when it is not in the loading state', () => { const wrapper = mount( - + ); expect(wrapper.find('[data-test-subj="job-switch"]').exists()).toBe(true); }); test('should not have a switch when it is in the loading state', () => { const wrapper = mount( - + ); expect(wrapper.find('[data-test-subj="job-switch"]').exists()).toBe(false); }); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.tsx index 1cd429f92b6a9..b15c684b1bbbe 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/jobs_table.tsx @@ -9,17 +9,21 @@ import React, { useEffect, useState } from 'react'; import { CENTER_ALIGNMENT, + EuiBadge, EuiBasicTable, EuiButton, EuiEmptyPrompt, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, EuiLink, EuiText, } from '@elastic/eui'; import styled from 'styled-components'; -import * as i18n from '../translations'; +import * as i18n from './translations'; import { JobSwitch } from './job_switch'; -import { Job } from '../types'; +import { SiemJob } from '../types'; const JobNameWrapper = styled.div` margin: 5px 0; @@ -32,11 +36,11 @@ const truncateThreshold = 200; const getJobsTableColumns = ( isLoading: boolean, - onJobStateChange: (jobName: string, latestTimestampMs: number, enable: boolean) => void + onJobStateChange: (job: SiemJob, latestTimestampMs: number, enable: boolean) => void ) => [ { name: i18n.COLUMN_JOB_NAME, - render: ({ id, description }: Job) => ( + render: ({ id, description }: SiemJob) => ( ), }, + { + name: i18n.COLUMN_GROUPS, + render: ({ groups }: SiemJob) => ( + + {groups.map(group => ( + + {group} + + ))} + + ), + width: '140px', + }, { name: i18n.COLUMN_RUN_JOB, - render: (job: Job) => ( - - ), + render: (job: SiemJob) => + job.isCompatible ? ( + + ) : ( + + ), align: CENTER_ALIGNMENT, width: '80px', }, ]; -const getPaginatedItems = (items: Job[], pageIndex: number, pageSize: number): Job[] => +const getPaginatedItems = (items: SiemJob[], pageIndex: number, pageSize: number): SiemJob[] => items.slice(pageIndex * pageSize, pageIndex * pageSize + pageSize); export interface JobTableProps { isLoading: boolean; - jobs: Job[]; - onJobStateChange: (jobName: string, latestTimestampMs: number, enable: boolean) => void; + jobs: SiemJob[]; + onJobStateChange: (job: SiemJob, latestTimestampMs: number, enable: boolean) => void; } export const JobsTable = React.memo(({ isLoading, jobs, onJobStateChange }: JobTableProps) => { diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/translations.ts b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/translations.ts new file mode 100644 index 0000000000000..a508fda17228e --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/jobs_table/translations.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; + +export const COLUMN_JOB_NAME = i18n.translate( + 'xpack.siem.components.mlPopup.jobsTable.jobNameColumn', + { + defaultMessage: 'Job name', + } +); + +export const COLUMN_GROUPS = i18n.translate('xpack.siem.components.mlPopup.jobsTable.tagsColumn', { + defaultMessage: 'Groups', +}); + +export const COLUMN_RUN_JOB = i18n.translate( + 'xpack.siem.components.mlPopup.jobsTable.runJobColumn', + { + defaultMessage: 'Run job', + } +); + +export const NO_ITEMS_TEXT = i18n.translate( + 'xpack.siem.components.mlPopup.jobsTable.noItemsDescription', + { + defaultMessage: 'No SIEM Machine Learning jobs found', + } +); + +export const CREATE_CUSTOM_JOB = i18n.translate( + 'xpack.siem.components.mlPopup.jobsTable.createCustomJobButtonLabel', + { + defaultMessage: 'Create custom job', + } +); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_modules.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_modules.tsx new file mode 100644 index 0000000000000..99d805b8e9234 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_modules.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +/** + * ML Modules relevant to the SIEM App that should be used to display jobs within the Anomaly + * Detection UI. Added as part of: https://github.com/elastic/kibana/pull/39678/files + * + */ +export const mlModules: string[] = ['siem_auditbeat', 'siem_winlogbeat']; diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_popover.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_popover.tsx index 6815c23ebaa46..2c3bc469a51df 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_popover.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/ml_popover.tsx @@ -4,53 +4,42 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiButton, EuiPopover, EuiPopoverTitle, EuiSpacer } from '@elastic/eui'; -import React, { useContext, useEffect, useReducer, useState } from 'react'; +import { EuiButton, EuiCallOut, EuiPopover, EuiPopoverTitle, EuiSpacer } from '@elastic/eui'; +import React, { useContext, useReducer, useState } from 'react'; import styled from 'styled-components'; import moment from 'moment'; - -import { useJobSummaryData } from './hooks/use_job_summary_data'; import * as i18n from './translations'; -import { Job } from './types'; +import { JobsFilters, JobSummary, SiemJob } from './types'; import { hasMlAdminPermissions } from '../ml/permissions/has_ml_admin_permissions'; import { MlCapabilitiesContext } from '../ml/permissions/ml_capabilities_provider'; import { JobsTable } from './jobs_table/jobs_table'; import { setupMlJob, startDatafeeds, stopDatafeeds } from './api'; -import { useIndexPatterns } from './hooks/use_index_patterns'; import { UpgradeContents } from './upgrade_contents'; -import { FilterGroup } from './jobs_table/filter_group'; +import { JobsTableFilters } from './jobs_table/filters/jobs_table_filters'; import { ShowingCount } from './jobs_table/showing_count'; import { PopoverDescription } from './popover_description'; -import { - getConfigTemplatesToInstall, - getIndexPatternTitles, - getJobsToDisplay, - getJobsToInstall, - getStablePatternTitles, -} from './helpers'; -import { configTemplates } from './config_templates'; import { useStateToaster } from '../toasters'; import { errorToToaster } from '../ml/api/error_to_toaster'; -import { useKibanaUiSetting } from '../../lib/settings/use_kibana_ui_setting'; -import { DEFAULT_KBN_VERSION } from '../../../common/constants'; import { METRIC_TYPE, TELEMETRY_EVENT, trackUiAction as track } from '../../lib/track_usage'; +import { useSiemJobs } from './hooks/use_siem_jobs'; +import { filterJobs } from './helpers'; const PopoverContentsDiv = styled.div` - max-width: 550px; + max-width: 684px; `; PopoverContentsDiv.displayName = 'PopoverContentsDiv'; interface State { isLoading: boolean; - jobs: Job[]; + jobs: JobSummary[]; refreshToggle: boolean; } type Action = | { type: 'refresh' } | { type: 'loading' } - | { type: 'success'; results: Job[] } + | { type: 'success'; results: JobSummary[] } | { type: 'failure' }; function mlPopoverReducer(state: State, action: Action): State { @@ -92,26 +81,40 @@ const initialState: State = { refreshToggle: true, }; +const defaultFilterProps: JobsFilters = { + filterQuery: '', + showCustomJobs: false, + showElasticJobs: false, + selectedGroups: [], +}; + export const MlPopover = React.memo(() => { const [{ refreshToggle }, dispatch] = useReducer(mlPopoverReducer, initialState); const [isPopoverOpen, setIsPopoverOpen] = useState(false); - const [showCustomJobs, setShowCustomJobs] = useState(false); - const [showElasticJobs, setShowElasticJobs] = useState(false); - const [isLoadingJobSummaryData, jobSummaryData] = useJobSummaryData([], refreshToggle); - const [isCreatingJobs, setIsCreatingJobs] = useState(false); - const [filterQuery, setFilterQuery] = useState(''); + const [filterProperties, setFilterProperties] = useState(defaultFilterProps); + const [isLoadingSiemJobs, siemJobs] = useSiemJobs(refreshToggle); const [, dispatchToaster] = useStateToaster(); - const [, configuredIndexPatterns] = useIndexPatterns(refreshToggle); const capabilities = useContext(MlCapabilitiesContext); - const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); - const headers = { 'kbn-version': kbnVersion }; - - const configuredIndexPatternTitles = getIndexPatternTitles(configuredIndexPatterns); // Enable/Disable Job & Datafeed -- passed to JobsTable for use as callback on JobSwitch - const enableDatafeed = async (jobName: string, latestTimestampMs: number, enable: boolean) => { - submitTelemetry(jobName, enable, embeddedJobIds); + const enableDatafeed = async (job: SiemJob, latestTimestampMs: number, enable: boolean) => { + submitTelemetry(job, enable); + + if (!job.isInstalled) { + try { + await setupMlJob({ + configTemplate: job.moduleId, + indexPatternName: job.defaultIndexPattern, + jobIdErrorFilter: [job.id], + groups: job.groups, + }); + } catch (error) { + errorToToaster({ title: i18n.CREATE_JOB_FAILURE, error, dispatchToaster }); + dispatch({ type: 'refresh' }); + return; + } + } // Max start time for job is no more than two weeks ago to ensure job performance const maxStartTime = moment @@ -122,14 +125,14 @@ export const MlPopover = React.memo(() => { if (enable) { const startTime = Math.max(latestTimestampMs, maxStartTime); try { - await startDatafeeds([`datafeed-${jobName}`], headers, startTime); + await startDatafeeds({ datafeedIds: [`datafeed-${job.id}`], start: startTime }); } catch (error) { track(METRIC_TYPE.COUNT, TELEMETRY_EVENT.JOB_ENABLE_FAILURE); errorToToaster({ title: i18n.START_JOB_FAILURE, error, dispatchToaster }); } } else { try { - await stopDatafeeds([`datafeed-${jobName}`], headers); + await stopDatafeeds({ datafeedIds: [`datafeed-${job.id}`] }); } catch (error) { track(METRIC_TYPE.COUNT, TELEMETRY_EVENT.JOB_DISABLE_FAILURE); errorToToaster({ title: i18n.STOP_JOB_FAILURE, error, dispatchToaster }); @@ -138,60 +141,12 @@ export const MlPopover = React.memo(() => { dispatch({ type: 'refresh' }); }; - // All jobs from embedded configTemplates that should be installed - const embeddedJobIds = getJobsToInstall(configTemplates); + const filteredJobs = filterJobs({ + jobs: siemJobs, + ...filterProperties, + }); - // Jobs currently installed retrieved via ml jobs_summary api for 'siem' group - const siemGroupJobIds = jobSummaryData != null ? jobSummaryData.map(job => job.id) : []; - const installedJobIds = embeddedJobIds.filter(job => siemGroupJobIds.includes(job)); - - // Config templates that still need to be installed and have a defaultIndexPattern that is configured - const configTemplatesToInstall = getConfigTemplatesToInstall( - configTemplates, - installedJobIds, - configuredIndexPatternTitles || [] - ); - - // Filter installed job to show all 'siem' group jobs or just embedded - const jobsToDisplay = getJobsToDisplay( - jobSummaryData, - embeddedJobIds, - showCustomJobs, - showElasticJobs, - filterQuery - ); - - // Install Config Templates as effect of opening popover - useEffect(() => { - if ( - isPopoverOpen && - jobSummaryData != null && - configuredIndexPatternTitles.length > 0 && - configTemplatesToInstall.length > 0 - ) { - const setupJobs = async () => { - setIsCreatingJobs(true); - try { - await Promise.all( - configTemplatesToInstall.map(configTemplate => { - return setupMlJob({ - configTemplate: configTemplate.name, - indexPatternName: configTemplate.defaultIndexPattern, - groups: ['siem'], - headers, - }); - }) - ); - setIsCreatingJobs(false); - dispatch({ type: 'refresh' }); - } catch (error) { - errorToToaster({ title: i18n.CREATE_JOB_FAILURE, error, dispatchToaster }); - setIsCreatingJobs(false); - } - }; - setupJobs(); - } - }, [jobSummaryData, getStablePatternTitles(configuredIndexPatternTitles)]); + const incompatibleJobCount = siemJobs.filter(j => !j.isCompatible).length; if (!capabilities.isPlatinumOrTrialLicense) { // If the user does not have platinum show upgrade UI @@ -243,21 +198,30 @@ export const MlPopover = React.memo(() => { - + - + - + + + {incompatibleJobCount > 0 && ( + <> + +

{i18n.MODULE_NOT_COMPATIBLE_DESCRIPTION}

+
+ + + + )}
@@ -269,11 +233,11 @@ export const MlPopover = React.memo(() => { } }); -const submitTelemetry = (jobName: string, enabled: boolean, embeddedJobIds: string[]) => { +const submitTelemetry = (job: SiemJob, enabled: boolean) => { // Report type of job enabled/disabled track( METRIC_TYPE.COUNT, - embeddedJobIds.includes(jobName) + job.isElasticJob ? enabled ? TELEMETRY_EVENT.SIEM_JOB_ENABLED : TELEMETRY_EVENT.SIEM_JOB_DISABLED diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/popover_description.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/popover_description.test.tsx index 0c91773c48556..8f90877feb72f 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/popover_description.test.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/popover_description.test.tsx @@ -9,7 +9,7 @@ import toJson from 'enzyme-to-json'; import * as React from 'react'; import { PopoverDescription } from './popover_description'; -describe('FilterGroup', () => { +describe('JobsTableFilters', () => { test('renders correctly against snapshot', () => { const wrapper = shallow(); expect(toJson(wrapper)).toMatchSnapshot(); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/translations.ts b/x-pack/legacy/plugins/siem/public/components/ml_popover/translations.ts index 0ea9960edc16a..3fc9f3a484b89 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/translations.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/translations.ts @@ -32,46 +32,18 @@ export const LICENSE_BUTTON = i18n.translate('xpack.siem.components.mlPopup.lice defaultMessage: 'Manage license', }); -export const FILTER_PLACEHOLDER = i18n.translate( - 'xpack.siem.components.mlPopup.filterPlaceholder', +export const MODULE_NOT_COMPATIBLE_TITLE = (incompatibleJobCount: number) => + i18n.translate('xpack.siem.components.mlPopup.moduleNotCompatibleTitle', { + values: { incompatibleJobCount }, + defaultMessage: + '{incompatibleJobCount} {incompatibleJobCount, plural, =1 {job} other {jobs}} are currently unavailable', + }); + +export const MODULE_NOT_COMPATIBLE_DESCRIPTION = i18n.translate( + 'xpack.siem.components.mlPopup.moduleNotCompatibleDescription', { - defaultMessage: 'e.g. rare_process_linux', - } -); - -export const SHOW_ELASTIC_JOBS = i18n.translate('xpack.siem.components.mlPopup.showAllJobsLabel', { - defaultMessage: 'Elastic jobs', -}); - -export const SHOW_CUSTOM_JOBS = i18n.translate('xpack.siem.components.mlPopup.showSiemJobsLabel', { - defaultMessage: 'Custom jobs', -}); - -export const COLUMN_JOB_NAME = i18n.translate( - 'xpack.siem.components.mlPopup.jobsTable.jobNameColumn', - { - defaultMessage: 'Job name', - } -); - -export const COLUMN_RUN_JOB = i18n.translate( - 'xpack.siem.components.mlPopup.jobsTable.runJobColumn', - { - defaultMessage: 'Run job', - } -); - -export const NO_ITEMS_TEXT = i18n.translate( - 'xpack.siem.components.mlPopup.jobsTable.noItemsDescription', - { - defaultMessage: 'No SIEM Machine Learning jobs found', - } -); - -export const CREATE_CUSTOM_JOB = i18n.translate( - 'xpack.siem.components.mlPopup.jobsTable.createCustomJobButtonLabel', - { - defaultMessage: 'Create custom job', + defaultMessage: + 'You may be missing the required index patterns. Learn more in our documentation.', } ); diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/types.ts b/x-pack/legacy/plugins/siem/public/components/ml_popover/types.ts index 5e8f6aa40b5a9..203f4f646b62b 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/types.ts +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/types.ts @@ -12,26 +12,104 @@ export interface Group { calendarIds: string[]; } +export interface CheckRecognizerProps { + indexPatternName: string; + headers?: Record; + signal: AbortSignal; +} + +export interface RecognizerModule { + id: string; + title: string; + query: Record; + description: string; + logo: { + icon: string; + }; +} + +export interface GetModulesProps { + moduleId?: string; + headers?: Record; + signal: AbortSignal; +} + +export interface Module { + id: string; + title: string; + description: string; + type: string; + logoFile: string; + defaultIndexPattern: string; + query: Record; + jobs: ModuleJob[]; + datafeeds: ModuleDatafeed[]; + kibana: object; +} + +/** + * Representation of an ML Job as returned from `the ml/modules/get_module` API + */ +export interface ModuleJob { + id: string; + config: { + groups: string[]; + description: string; + analysis_config: { + bucket_span: string; + summary_count_field_name?: string; + detectors: Detector[]; + influencers: string[]; + }; + analysis_limits: { + model_memory_limit: string; + }; + data_description: { + time_field: string; + time_format?: string; + }; + model_plot_config?: { + enabled: boolean; + }; + custom_settings: { + created_by: string; + custom_urls: CustomURL[]; + }; + job_type: string; + }; +} + +// TODO: Speak to ML team about why the get_module API will sometimes return indexes and other times indices +// See mockGetModuleResponse for examples +export interface ModuleDatafeed { + id: string; + config: { + job_id: string; + indexes?: string[]; + indices?: string[]; + query: Record; + }; +} + export interface MlSetupArgs { configTemplate: string; indexPatternName: string; + jobIdErrorFilter: string[]; groups: string[]; prefix?: string; - headers: Record; + headers?: Record; } -export interface ConfigTemplate { - name: string; - defaultIndexPattern: string; - jobs: string[]; -} - -export interface Job { +/** + * Representation of an ML Job as returned from the `ml/jobs/jobs_summary` API + */ +export interface JobSummary { datafeedId: string; datafeedIndices: string[]; datafeedState: string; description: string; earliestTimestampMs?: number; + latestResultsTimestampMs?: number; groups: string[]; hasDatafeed: boolean; id: string; @@ -43,6 +121,37 @@ export interface Job { processed_record_count: number; } +export interface Detector { + detector_description: string; + function: string; + by_field_name: string; + partition_field_name?: string; +} + +export interface CustomURL { + url_name: string; + url_value: string; +} + +/** + * Representation of an ML Job as used by the SIEM App -- a composition of ModuleJob and JobSummary + * that includes necessary metadata like moduleName, defaultIndexPattern, etc. + */ +export interface SiemJob extends JobSummary { + moduleId: string; + defaultIndexPattern: string; + isCompatible: boolean; + isInstalled: boolean; + isElasticJob: boolean; +} + +export interface AugmentedSiemJobFields { + moduleId: string; + defaultIndexPattern: string; + isCompatible: boolean; + isElasticJob: boolean; +} + export interface SetupMlResponseJob { id: string; success: boolean; @@ -65,9 +174,16 @@ export interface SetupMlResponse { export interface StartDatafeedResponse { [key: string]: { started: boolean; + error?: string; }; } +export interface ErrorResponse { + statusCode?: number; + error?: string; + message?: string; +} + export interface StopDatafeedResponse { [key: string]: { stopped: boolean; @@ -90,9 +206,9 @@ export interface IndexPatternSavedObject { version: string; } -export interface IndexPatternResponse { - page: number; - per_page: number; - saved_objects: IndexPatternSavedObject[]; - total: number; +export interface JobsFilters { + filterQuery: string; + showCustomJobs: boolean; + showElasticJobs: boolean; + selectedGroups: string[]; } diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/upgrade_contents.test.tsx b/x-pack/legacy/plugins/siem/public/components/ml_popover/upgrade_contents.test.tsx index c866b0fd190f4..13d48c0e62b6d 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/upgrade_contents.test.tsx +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/upgrade_contents.test.tsx @@ -9,7 +9,7 @@ import toJson from 'enzyme-to-json'; import * as React from 'react'; import { UpgradeContents } from './upgrade_contents'; -describe('FilterGroup', () => { +describe('JobsTableFilters', () => { test('renders correctly against snapshot', () => { const wrapper = shallow(); expect(toJson(wrapper)).toMatchSnapshot(); diff --git a/x-pack/legacy/plugins/siem/public/hooks/api/__mock__/api.tsx b/x-pack/legacy/plugins/siem/public/hooks/api/__mock__/api.tsx new file mode 100644 index 0000000000000..13f53cd34feb6 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/api/__mock__/api.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { IndexPatternSavedObject } from '../../types'; + +export const mockIndexPatternSavedObjects: IndexPatternSavedObject[] = [ + { + type: 'index-pattern', + id: '2d1fe420-eeee-11e9-ad95-4b5e687c2aee', + attributes: { + title: 'filebeat-*', + }, + updated_at: '2019-08-26T04:30:09.111Z', + version: 'WzE4LLwxXQ==', + }, + { + type: 'index-pattern', + id: '5463ec70-c7ba-ffff-ad95-4b5e687c2aee', + attributes: { + title: 'auditbeat-*', + }, + updated_at: '2019-08-26T04:31:12.934Z', + version: 'WzELLywxXQ==', + }, +]; diff --git a/x-pack/legacy/plugins/siem/public/hooks/api/api.test.ts b/x-pack/legacy/plugins/siem/public/hooks/api/api.test.ts new file mode 100644 index 0000000000000..95825b7d4abda --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/api/api.test.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import fetchMock from 'fetch-mock'; +import { throwIfNotOk } from './api'; + +describe('api', () => { + afterEach(() => { + fetchMock.reset(); + }); + + describe('#throwIfNotOk', () => { + test('does a throw if it is given response that is not ok and the body is not parsable', async () => { + fetchMock.mock('http://example.com', 500); + const response = await fetch('http://example.com'); + await expect(throwIfNotOk(response)).rejects.toThrow('Network Error: Internal Server Error'); + }); + + test('does a throw and returns a body if it is parsable', async () => { + fetchMock.mock('http://example.com', { + status: 500, + body: { + statusCode: 500, + message: 'I am a custom message', + }, + }); + const response = await fetch('http://example.com'); + await expect(throwIfNotOk(response)).rejects.toThrow('I am a custom message'); + }); + + test('does NOT do a throw if it is given response is not ok', async () => { + fetchMock.mock('http://example.com', 200); + const response = await fetch('http://example.com'); + await expect(throwIfNotOk(response)).resolves.toEqual(undefined); + }); + }); +}); diff --git a/x-pack/legacy/plugins/siem/public/hooks/api/api.tsx b/x-pack/legacy/plugins/siem/public/hooks/api/api.tsx new file mode 100644 index 0000000000000..b0493733a735b --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/api/api.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import chrome from 'ui/chrome'; + +import { useKibanaUiSetting } from '../../lib/settings/use_kibana_ui_setting'; +import { DEFAULT_KBN_VERSION } from '../../../common/constants'; +import * as i18n from '../translations'; +import { parseJsonFromBody, ToasterErrors } from '../../components/ml/api/throw_if_not_ok'; +import { IndexPatternResponse, IndexPatternSavedObject } from '../types'; + +const emptyIndexPattern: IndexPatternSavedObject[] = []; + +/** + * Fetches Configured Index Patterns from the Kibana saved objects API + * + * TODO: Refactor to context provider: https://github.com/elastic/siem-team/issues/448 + * + * @param headers + * @param signal + */ +export const getIndexPatterns = async ( + signal: AbortSignal, + headers?: Record +): Promise => { + const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); + const response = await fetch( + `${chrome.getBasePath()}/api/saved_objects/_find?type=index-pattern&fields=title&fields=type&per_page=10000`, + { + method: 'GET', + credentials: 'same-origin', + headers: { + 'content-type': 'application/json', + 'kbn-xsrf': kbnVersion, + 'kbn-version': kbnVersion, + 'kbn-system-api': 'true', + ...headers, + }, + signal, + } + ); + await throwIfNotOk(response); + const results: IndexPatternResponse = await response.json(); + + if (results.saved_objects && Array.isArray(results.saved_objects)) { + return results.saved_objects; + } else { + return emptyIndexPattern; + } +}; + +export const throwIfNotOk = async (response: Response): Promise => { + if (!response.ok) { + const body = await parseJsonFromBody(response); + if (body != null && body.message) { + if (body.statusCode != null) { + throw new ToasterErrors([body.message, `${i18n.STATUS_CODE} ${body.statusCode}`]); + } else { + throw new ToasterErrors([body.message]); + } + } else { + throw new ToasterErrors([`${i18n.NETWORK_ERROR} ${response.statusText}`]); + } + } +}; diff --git a/x-pack/legacy/plugins/siem/public/hooks/api/helpers.test.tsx b/x-pack/legacy/plugins/siem/public/hooks/api/helpers.test.tsx new file mode 100644 index 0000000000000..b02db810f72e1 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/api/helpers.test.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { getIndexPatternTitleIdMapping, getIndexPatternTitles } from './helpers'; +import { mockIndexPatternSavedObjects } from './__mock__/api'; + +describe('helpers', () => { + describe('getIndexPatternTitles', () => { + test('returns empty array when no index patterns are provided', () => { + const indexPatternTitles = getIndexPatternTitles([]); + expect(indexPatternTitles.length).toEqual(0); + }); + + test('returns titles when index patterns are provided', () => { + const indexPatternTitles = getIndexPatternTitles(mockIndexPatternSavedObjects); + expect(indexPatternTitles).toEqual(['filebeat-*', 'auditbeat-*']); + }); + }); + + describe('getIndexPatternTitleIdMapping', () => { + test('returns empty array when no index patterns are provided', () => { + const indexPatternTitleIdMapping = getIndexPatternTitleIdMapping([]); + expect(indexPatternTitleIdMapping.length).toEqual(0); + }); + + test('returns correct mapping when index patterns are provided', () => { + const indexPatternTitleIdMapping = getIndexPatternTitleIdMapping( + mockIndexPatternSavedObjects + ); + expect(indexPatternTitleIdMapping).toEqual([ + { id: '2d1fe420-eeee-11e9-ad95-4b5e687c2aee', title: 'filebeat-*' }, + { id: '5463ec70-c7ba-ffff-ad95-4b5e687c2aee', title: 'auditbeat-*' }, + ]); + }); + }); +}); diff --git a/x-pack/legacy/plugins/siem/public/hooks/api/helpers.tsx b/x-pack/legacy/plugins/siem/public/hooks/api/helpers.tsx new file mode 100644 index 0000000000000..bcf3f1f3d3c08 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/api/helpers.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { IndexPatternSavedObject } from '../types'; + +/** + * Returns a string array of Index Pattern Titles + * + * @param indexPatterns IndexPatternSavedObject[] as provided from the useIndexPatterns() hook + */ +export const getIndexPatternTitles = (indexPatterns: IndexPatternSavedObject[]): string[] => + indexPatterns.reduce((acc, v) => [...acc, v.attributes.title], []); + +/** + * Returns a mapping of indexPatternTitle to indexPatternId + * + * @param indexPatterns IndexPatternSavedObject[] as provided from the useIndexPatterns() hook + */ +export const getIndexPatternTitleIdMapping = ( + indexPatterns: IndexPatternSavedObject[] +): Array<{ title: string; id: string }> => + indexPatterns.reduce>((acc, v) => { + if (v.attributes && v.attributes.title) { + return [...acc, { title: v.attributes.title, id: v.id }]; + } else { + return acc; + } + }, []); diff --git a/x-pack/legacy/plugins/siem/public/hooks/translations.ts b/x-pack/legacy/plugins/siem/public/hooks/translations.ts new file mode 100644 index 0000000000000..ba3ec40df466a --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/translations.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; + +export const STATUS_CODE = i18n.translate( + 'xpack.siem.components.ml.api.errors.statusCodeFailureTitle', + { + defaultMessage: 'Status Code:', + } +); + +export const NETWORK_ERROR = i18n.translate( + 'xpack.siem.components.ml.api.errors.networkErrorFailureTitle', + { + defaultMessage: 'Network Error:', + } +); + +export const INDEX_PATTERN_FETCH_FAILURE = i18n.translate( + 'xpack.siem.components.mlPopup.hooks.errors.indexPatternFetchFailureTitle', + { + defaultMessage: 'Index pattern fetch failure', + } +); diff --git a/x-pack/legacy/plugins/siem/public/hooks/types.ts b/x-pack/legacy/plugins/siem/public/hooks/types.ts new file mode 100644 index 0000000000000..4d66d8e191235 --- /dev/null +++ b/x-pack/legacy/plugins/siem/public/hooks/types.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export interface IndexPatternSavedObject { + attributes: { + title: string; + }; + id: string; + type: string; + updated_at: string; + version: string; +} + +export interface IndexPatternResponse { + page: number; + per_page: number; + saved_objects: IndexPatternSavedObject[]; + total: number; +} diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_index_patterns.tsx b/x-pack/legacy/plugins/siem/public/hooks/use_index_patterns.tsx similarity index 65% rename from x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_index_patterns.tsx rename to x-pack/legacy/plugins/siem/public/hooks/use_index_patterns.tsx index 3f5f6f9c4e958..b7e899cc50f75 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/hooks/use_index_patterns.tsx +++ b/x-pack/legacy/plugins/siem/public/hooks/use_index_patterns.tsx @@ -6,24 +6,19 @@ import { useEffect, useState } from 'react'; -import { getIndexPatterns } from '../api'; -import { useStateToaster } from '../../toasters'; -import { errorToToaster } from '../../ml/api/error_to_toaster'; -import { useKibanaUiSetting } from '../../../lib/settings/use_kibana_ui_setting'; -import { DEFAULT_KBN_VERSION } from '../../../../common/constants'; +import { useStateToaster } from '../components/toasters'; +import { errorToToaster } from '../components/ml/api/error_to_toaster'; import * as i18n from './translations'; -import { IndexPatternSavedObject } from '../types'; +import { IndexPatternSavedObject } from '../components/ml_popover/types'; +import { getIndexPatterns } from './api/api'; type Return = [boolean, IndexPatternSavedObject[]]; -// TODO: Used by more than just ML now -- refactor to shared component https://github.com/elastic/siem-team/issues/448 - export const useIndexPatterns = (refreshToggle = false): Return => { const [indexPatterns, setIndexPatterns] = useState([]); const [isLoading, setIsLoading] = useState(true); const [, dispatchToaster] = useStateToaster(); - const [kbnVersion] = useKibanaUiSetting(DEFAULT_KBN_VERSION); useEffect(() => { let isSubscribed = true; @@ -32,12 +27,7 @@ export const useIndexPatterns = (refreshToggle = false): Return => { async function fetchIndexPatterns() { try { - const data = await getIndexPatterns( - { - 'kbn-version': kbnVersion, - }, - abortCtrl.signal - ); + const data = await getIndexPatterns(abortCtrl.signal); if (isSubscribed) { setIndexPatterns(data); diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 2237b99c0dc31..362e58ae9cc0f 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -9827,16 +9827,13 @@ "xpack.siem.components.mlPopup.anomalyDetectionTitle": "異常検知設定", "xpack.siem.components.mlPopup.errors.createJobFailureTitle": "ジョブ作成エラー", "xpack.siem.components.mlPopup.errors.startJobFailureTitle": "ジョブ開始エラー", - "xpack.siem.components.mlPopup.filterPlaceholder": "例: rare_process_linux", "xpack.siem.components.mlPopup.hooks.errors.indexPatternFetchFailureTitle": "インデックスパターン取得エラー", - "xpack.siem.components.mlPopup.hooks.errors.jobSummaryFetchFailureTitle": "ジョブサマリー取得エラー", "xpack.siem.components.mlPopup.hooks.errors.siemJobFetchFailureTitle": "SIEM ジョブ取得エラー", "xpack.siem.components.mlPopup.jobsTable.createCustomJobButtonLabel": "カスタムジョブを作成", "xpack.siem.components.mlPopup.jobsTable.jobNameColumn": "ジョブ名", "xpack.siem.components.mlPopup.jobsTable.noItemsDescription": "SIEM 機械学習ジョブが見つかりませんでした", "xpack.siem.components.mlPopup.jobsTable.runJobColumn": "ジョブを実行", "xpack.siem.components.mlPopup.machineLearningLink": "Machine Learning", - "xpack.siem.components.mlPopup.showAllJobsLabel": "Elastic ジョブ", "xpack.siem.components.mlPopup.showingLabel": "{filterResultsLength} 件の{filterResultsLength, plural, one {ジョブ} other {ジョブ}}を表示中", "xpack.siem.components.mlPopup.upgradeButtonLabel": "サブスクリプションオプション", "xpack.siem.components.mlPopup.upgradeTitle": "E lastic Platinum へのアップグレード", @@ -9903,7 +9900,6 @@ "xpack.siem.uiSettings.defaultRefreshIntervalLabel": "タイムピッカーの更新間隔", "xpack.siem.uiSettings.defaultTimeRangeDescription": "SIEM 時間フィルダーが選択されずに Kibana が起動した際に使用される SIEM 時間フィルターです", "xpack.siem.uiSettings.defaultTimeRangeLabel": "デフォルトのタイムピッカー", - "xpack.siem.components.mlPopup.showSiemJobsLabel": "カスタムジョブ", "xpack.siem.host.details.overview.maxAnomalyScoreByJobTitle": "ジョブ別の最高異常スコア", "xpack.siem.ml.score.anomalyJobTitle": "ジョブ", "xpack.siem.ml.table.detectorTitle": "ジョブ名", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 9f51feaedc8bb..031e358f0f6d9 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -9992,16 +9992,13 @@ "xpack.siem.components.mlPopup.anomalyDetectionTitle": "异常检测设置", "xpack.siem.components.mlPopup.errors.createJobFailureTitle": "创建作业失败", "xpack.siem.components.mlPopup.errors.startJobFailureTitle": "启动作业失败", - "xpack.siem.components.mlPopup.filterPlaceholder": "例如 rare_process_linux", "xpack.siem.components.mlPopup.hooks.errors.indexPatternFetchFailureTitle": "索引模式提取失败", - "xpack.siem.components.mlPopup.hooks.errors.jobSummaryFetchFailureTitle": "作业摘要提取失败", "xpack.siem.components.mlPopup.hooks.errors.siemJobFetchFailureTitle": "SIEM 作业提取失败", "xpack.siem.components.mlPopup.jobsTable.createCustomJobButtonLabel": "创建定制作业", "xpack.siem.components.mlPopup.jobsTable.jobNameColumn": "作业名称", "xpack.siem.components.mlPopup.jobsTable.noItemsDescription": "未找到任何 SIEM Machine Learning 作业", "xpack.siem.components.mlPopup.jobsTable.runJobColumn": "运行作业", "xpack.siem.components.mlPopup.machineLearningLink": "Machine Learning", - "xpack.siem.components.mlPopup.showAllJobsLabel": "Elastic 作业", "xpack.siem.components.mlPopup.showingLabel": "显示:{filterResultsLength} 个 {filterResultsLength, plural, one {作业} other {作业}}", "xpack.siem.components.mlPopup.upgradeButtonLabel": "订阅选项", "xpack.siem.components.mlPopup.upgradeTitle": "升级 Elastic 白金级", @@ -10068,7 +10065,6 @@ "xpack.siem.uiSettings.defaultRefreshIntervalLabel": "时间选取器刷新时间间隔", "xpack.siem.uiSettings.defaultTimeRangeDescription": "未使用时间筛选启动 Kibana 时要使用的 SIEM 时间筛选选择", "xpack.siem.uiSettings.defaultTimeRangeLabel": "时间选取器默认值", - "xpack.siem.components.mlPopup.showSiemJobsLabel": "定制作业", "xpack.siem.host.details.overview.maxAnomalyScoreByJobTitle": "最大异常分数(按作业)", "xpack.siem.ml.score.anomalyJobTitle": "作业", "xpack.siem.ml.table.detectorTitle": "作业名称", From 44302b8af0a5aa40537b95bc62d1117a3b5caac9 Mon Sep 17 00:00:00 2001 From: Catherine Liu Date: Tue, 15 Oct 2019 13:55:49 +0200 Subject: [PATCH 26/46] [Canvas][i18n] Function Form component (#48073) * Extracted i18n strings from FunctionForm component * Fixed duplicate i18n ids --- .../legacy/plugins/canvas/i18n/components.ts | 18 +++++++++++++ .../function_form_context_error.js | 16 ----------- .../function_form_context_error.tsx | 27 +++++++++++++++++++ ...nction_unknown.js => function_unknown.tsx} | 13 ++++++--- 4 files changed, 55 insertions(+), 19 deletions(-) delete mode 100644 x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.js create mode 100644 x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.tsx rename x-pack/legacy/plugins/canvas/public/components/function_form/{function_unknown.js => function_unknown.tsx} (53%) diff --git a/x-pack/legacy/plugins/canvas/i18n/components.ts b/x-pack/legacy/plugins/canvas/i18n/components.ts index 3c73dd4090757..c7434a3814b38 100644 --- a/x-pack/legacy/plugins/canvas/i18n/components.ts +++ b/x-pack/legacy/plugins/canvas/i18n/components.ts @@ -465,6 +465,24 @@ export const ComponentStrings = { }, }), }, + FunctionFormContextError: { + getContextErrorMessage: (errorMessage: string) => + i18n.translate('xpack.canvas.functionForm.contextError', { + defaultMessage: 'ERROR: {errorMessage}', + values: { + errorMessage, + }, + }), + }, + FunctionFormFunctionUnknown: { + getUnknownArgumentTypeErrorMessage: (expressionType: string) => + i18n.translate('xpack.canvas.functionForm.functionUnknown.unknownArgumentTypeError', { + defaultMessage: 'Unknown expression type "{expressionType}"', + values: { + expressionType, + }, + }), + }, GroupSettings: { getSaveGroupDescription: () => i18n.translate('xpack.canvas.groupSettings.saveGroupDescription', { diff --git a/x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.js b/x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.js deleted file mode 100644 index 513d5a4138ad8..0000000000000 --- a/x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.js +++ /dev/null @@ -1,16 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import PropTypes from 'prop-types'; - -export const FunctionFormContextError = ({ context }) => ( -
ERROR: {context.error}
-); - -FunctionFormContextError.propTypes = { - context: PropTypes.object, -}; diff --git a/x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.tsx b/x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.tsx new file mode 100644 index 0000000000000..2be047d0fb3b0 --- /dev/null +++ b/x-pack/legacy/plugins/canvas/public/components/function_form/function_form_context_error.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; +import PropTypes from 'prop-types'; +import { ComponentStrings } from '../../../i18n/components'; + +interface Props { + context: { + error: string; + }; +} + +const { FunctionFormContextError: strings } = ComponentStrings; + +export const FunctionFormContextError: FunctionComponent = ({ context }) => ( +
+ {strings.getContextErrorMessage(context.error)} +
+); + +FunctionFormContextError.propTypes = { + context: PropTypes.shape({ error: PropTypes.string }).isRequired, +}; diff --git a/x-pack/legacy/plugins/canvas/public/components/function_form/function_unknown.js b/x-pack/legacy/plugins/canvas/public/components/function_form/function_unknown.tsx similarity index 53% rename from x-pack/legacy/plugins/canvas/public/components/function_form/function_unknown.js rename to x-pack/legacy/plugins/canvas/public/components/function_form/function_unknown.tsx index 462fce9f1c90a..c6b676ca0a166 100644 --- a/x-pack/legacy/plugins/canvas/public/components/function_form/function_unknown.js +++ b/x-pack/legacy/plugins/canvas/public/components/function_form/function_unknown.tsx @@ -4,12 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { FunctionComponent } from 'react'; import PropTypes from 'prop-types'; +import { ComponentStrings } from '../../../i18n'; -export const FunctionUnknown = ({ argType }) => ( +interface Props { + /** the type of the argument */ + argType: string; +} +const { FunctionFormFunctionUnknown: strings } = ComponentStrings; + +export const FunctionUnknown: FunctionComponent = ({ argType }) => (
- Unknown expression type "{argType}" + {strings.getUnknownArgumentTypeErrorMessage(argType)}
); From 27dbcb27964353619f686066c6ba8f25954a0881 Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Tue, 15 Oct 2019 14:19:11 +0200 Subject: [PATCH 27/46] Expose package info to NP plugins (#48101) * provide packageInfo to server plugins * provide env to kbn server * provide env to client plugins * update server mocks and tests * update client mocks and tests * add integration test * regen docs * remove weird file * export types for the client from special folder * env should not affect test ourcome --- .eslintrc.js | 1 + ...ibana-plugin-public.environmentmode.dev.md | 11 +++++ .../kibana-plugin-public.environmentmode.md | 21 +++++++++ ...bana-plugin-public.environmentmode.name.md | 11 +++++ ...bana-plugin-public.environmentmode.prod.md | 11 +++++ .../core/public/kibana-plugin-public.md | 2 + ...kibana-plugin-public.packageinfo.branch.md | 11 +++++ ...bana-plugin-public.packageinfo.buildnum.md | 11 +++++ ...bana-plugin-public.packageinfo.buildsha.md | 11 +++++ .../kibana-plugin-public.packageinfo.dist.md | 11 +++++ .../kibana-plugin-public.packageinfo.md | 23 ++++++++++ ...ibana-plugin-public.packageinfo.version.md | 11 +++++ ...gin-public.plugininitializercontext.env.md | 14 ++++++ ...-plugin-public.plugininitializercontext.md | 1 + ...ibana-plugin-server.environmentmode.dev.md | 11 +++++ .../kibana-plugin-server.environmentmode.md | 21 +++++++++ ...bana-plugin-server.environmentmode.name.md | 11 +++++ ...bana-plugin-server.environmentmode.prod.md | 11 +++++ .../core/server/kibana-plugin-server.md | 2 + ...kibana-plugin-server.packageinfo.branch.md | 11 +++++ ...bana-plugin-server.packageinfo.buildnum.md | 11 +++++ ...bana-plugin-server.packageinfo.buildsha.md | 11 +++++ .../kibana-plugin-server.packageinfo.dist.md | 11 +++++ .../kibana-plugin-server.packageinfo.md | 23 ++++++++++ ...ibana-plugin-server.packageinfo.version.md | 11 +++++ ...gin-server.plugininitializercontext.env.md | 1 + ...-plugin-server.plugininitializercontext.md | 2 +- .../public/context/context_service.test.ts | 7 +-- src/core/public/core_system.ts | 8 +++- src/core/public/index.ts | 1 + .../injected_metadata_service.ts | 5 ++ src/core/public/mocks.ts | 46 ++++++++++++++++++- src/core/public/plugins/plugin.test.ts | 3 +- src/core/public/plugins/plugin_context.ts | 8 +++- .../public/plugins/plugins_service.test.ts | 4 +- src/core/public/public.api.md | 34 ++++++++++++++ src/core/server/config/env.ts | 15 +----- src/core/server/config/index.ts | 4 +- .../{types.ts~master => config/types.ts} | 20 +++++++- src/core/server/index.ts | 2 +- src/core/server/legacy/legacy_service.ts | 4 ++ src/core/server/mocks.ts | 9 +++- src/core/server/plugins/plugin_context.ts | 5 +- src/core/server/plugins/types.ts | 7 ++- src/core/server/server.api.md | 26 ++++++++++- src/core/server/types.ts | 1 + src/legacy/server/kbn_server.d.ts | 6 +++ src/legacy/server/kbn_server.js | 6 ++- src/legacy/ui/ui_render/ui_render_mixin.js | 1 + .../es_search/es_search_service.test.ts | 3 +- .../public/search/es_search/index.test.ts | 4 +- .../data/public/search/search_service.test.ts | 4 +- .../es_search/es_search_service.test.ts | 20 +------- .../plugins/core_plugin_b/public/index.ts | 4 +- .../plugins/core_plugin_b/public/plugin.tsx | 6 ++- .../test_suites/core_plugins/ui_plugins.js | 11 +++++ .../plugins/uptime/public/apps/index.ts | 2 +- 57 files changed, 498 insertions(+), 65 deletions(-) create mode 100644 docs/development/core/public/kibana-plugin-public.environmentmode.dev.md create mode 100644 docs/development/core/public/kibana-plugin-public.environmentmode.md create mode 100644 docs/development/core/public/kibana-plugin-public.environmentmode.name.md create mode 100644 docs/development/core/public/kibana-plugin-public.environmentmode.prod.md create mode 100644 docs/development/core/public/kibana-plugin-public.packageinfo.branch.md create mode 100644 docs/development/core/public/kibana-plugin-public.packageinfo.buildnum.md create mode 100644 docs/development/core/public/kibana-plugin-public.packageinfo.buildsha.md create mode 100644 docs/development/core/public/kibana-plugin-public.packageinfo.dist.md create mode 100644 docs/development/core/public/kibana-plugin-public.packageinfo.md create mode 100644 docs/development/core/public/kibana-plugin-public.packageinfo.version.md create mode 100644 docs/development/core/public/kibana-plugin-public.plugininitializercontext.env.md create mode 100644 docs/development/core/server/kibana-plugin-server.environmentmode.dev.md create mode 100644 docs/development/core/server/kibana-plugin-server.environmentmode.md create mode 100644 docs/development/core/server/kibana-plugin-server.environmentmode.name.md create mode 100644 docs/development/core/server/kibana-plugin-server.environmentmode.prod.md create mode 100644 docs/development/core/server/kibana-plugin-server.packageinfo.branch.md create mode 100644 docs/development/core/server/kibana-plugin-server.packageinfo.buildnum.md create mode 100644 docs/development/core/server/kibana-plugin-server.packageinfo.buildsha.md create mode 100644 docs/development/core/server/kibana-plugin-server.packageinfo.dist.md create mode 100644 docs/development/core/server/kibana-plugin-server.packageinfo.md create mode 100644 docs/development/core/server/kibana-plugin-server.packageinfo.version.md rename src/core/server/{types.ts~master => config/types.ts} (74%) diff --git a/.eslintrc.js b/.eslintrc.js index ce4aea3c02309..56950a70970d4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -149,6 +149,7 @@ module.exports = { 'src/core/server/**/*', '!src/core/server/index.ts', '!src/core/server/mocks.ts', + '!src/core/server/types.ts', '!src/core/server/*.test.mocks.ts', 'src/plugins/**/public/**/*', diff --git a/docs/development/core/public/kibana-plugin-public.environmentmode.dev.md b/docs/development/core/public/kibana-plugin-public.environmentmode.dev.md new file mode 100644 index 0000000000000..b82e851da2b66 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.environmentmode.dev.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [EnvironmentMode](./kibana-plugin-public.environmentmode.md) > [dev](./kibana-plugin-public.environmentmode.dev.md) + +## EnvironmentMode.dev property + +Signature: + +```typescript +dev: boolean; +``` diff --git a/docs/development/core/public/kibana-plugin-public.environmentmode.md b/docs/development/core/public/kibana-plugin-public.environmentmode.md new file mode 100644 index 0000000000000..14ab1316f5269 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.environmentmode.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [EnvironmentMode](./kibana-plugin-public.environmentmode.md) + +## EnvironmentMode interface + + +Signature: + +```typescript +export interface EnvironmentMode +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [dev](./kibana-plugin-public.environmentmode.dev.md) | boolean | | +| [name](./kibana-plugin-public.environmentmode.name.md) | 'development' | 'production' | | +| [prod](./kibana-plugin-public.environmentmode.prod.md) | boolean | | + diff --git a/docs/development/core/public/kibana-plugin-public.environmentmode.name.md b/docs/development/core/public/kibana-plugin-public.environmentmode.name.md new file mode 100644 index 0000000000000..5983fea856750 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.environmentmode.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [EnvironmentMode](./kibana-plugin-public.environmentmode.md) > [name](./kibana-plugin-public.environmentmode.name.md) + +## EnvironmentMode.name property + +Signature: + +```typescript +name: 'development' | 'production'; +``` diff --git a/docs/development/core/public/kibana-plugin-public.environmentmode.prod.md b/docs/development/core/public/kibana-plugin-public.environmentmode.prod.md new file mode 100644 index 0000000000000..4b46e8b9cc9f9 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.environmentmode.prod.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [EnvironmentMode](./kibana-plugin-public.environmentmode.md) > [prod](./kibana-plugin-public.environmentmode.prod.md) + +## EnvironmentMode.prod property + +Signature: + +```typescript +prod: boolean; +``` diff --git a/docs/development/core/public/kibana-plugin-public.md b/docs/development/core/public/kibana-plugin-public.md index f55705fb2faef..1e1a4f38a7c6f 100644 --- a/docs/development/core/public/kibana-plugin-public.md +++ b/docs/development/core/public/kibana-plugin-public.md @@ -46,6 +46,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [CoreSetup](./kibana-plugin-public.coresetup.md) | Core services exposed to the Plugin setup lifecycle | | [CoreStart](./kibana-plugin-public.corestart.md) | Core services exposed to the Plugin start lifecycle | | [DocLinksStart](./kibana-plugin-public.doclinksstart.md) | | +| [EnvironmentMode](./kibana-plugin-public.environmentmode.md) | | | [ErrorToastOptions](./kibana-plugin-public.errortoastoptions.md) | | | [FatalErrorInfo](./kibana-plugin-public.fatalerrorinfo.md) | Represents the message and stack of a fatal Error | | [FatalErrorsSetup](./kibana-plugin-public.fatalerrorssetup.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. | @@ -68,6 +69,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [OverlayBannersStart](./kibana-plugin-public.overlaybannersstart.md) | | | [OverlayRef](./kibana-plugin-public.overlayref.md) | | | [OverlayStart](./kibana-plugin-public.overlaystart.md) | | +| [PackageInfo](./kibana-plugin-public.packageinfo.md) | | | [Plugin](./kibana-plugin-public.plugin.md) | The interface that should be returned by a PluginInitializer. | | [PluginInitializerContext](./kibana-plugin-public.plugininitializercontext.md) | The available core services passed to a PluginInitializer | | [SavedObject](./kibana-plugin-public.savedobject.md) | | diff --git a/docs/development/core/public/kibana-plugin-public.packageinfo.branch.md b/docs/development/core/public/kibana-plugin-public.packageinfo.branch.md new file mode 100644 index 0000000000000..774a290969938 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.packageinfo.branch.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PackageInfo](./kibana-plugin-public.packageinfo.md) > [branch](./kibana-plugin-public.packageinfo.branch.md) + +## PackageInfo.branch property + +Signature: + +```typescript +branch: string; +``` diff --git a/docs/development/core/public/kibana-plugin-public.packageinfo.buildnum.md b/docs/development/core/public/kibana-plugin-public.packageinfo.buildnum.md new file mode 100644 index 0000000000000..0c1003f8d8aff --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.packageinfo.buildnum.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PackageInfo](./kibana-plugin-public.packageinfo.md) > [buildNum](./kibana-plugin-public.packageinfo.buildnum.md) + +## PackageInfo.buildNum property + +Signature: + +```typescript +buildNum: number; +``` diff --git a/docs/development/core/public/kibana-plugin-public.packageinfo.buildsha.md b/docs/development/core/public/kibana-plugin-public.packageinfo.buildsha.md new file mode 100644 index 0000000000000..98a7916c142e9 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.packageinfo.buildsha.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PackageInfo](./kibana-plugin-public.packageinfo.md) > [buildSha](./kibana-plugin-public.packageinfo.buildsha.md) + +## PackageInfo.buildSha property + +Signature: + +```typescript +buildSha: string; +``` diff --git a/docs/development/core/public/kibana-plugin-public.packageinfo.dist.md b/docs/development/core/public/kibana-plugin-public.packageinfo.dist.md new file mode 100644 index 0000000000000..c70299bbe6fcc --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.packageinfo.dist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PackageInfo](./kibana-plugin-public.packageinfo.md) > [dist](./kibana-plugin-public.packageinfo.dist.md) + +## PackageInfo.dist property + +Signature: + +```typescript +dist: boolean; +``` diff --git a/docs/development/core/public/kibana-plugin-public.packageinfo.md b/docs/development/core/public/kibana-plugin-public.packageinfo.md new file mode 100644 index 0000000000000..1dbd8cb85c56b --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.packageinfo.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PackageInfo](./kibana-plugin-public.packageinfo.md) + +## PackageInfo interface + + +Signature: + +```typescript +export interface PackageInfo +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [branch](./kibana-plugin-public.packageinfo.branch.md) | string | | +| [buildNum](./kibana-plugin-public.packageinfo.buildnum.md) | number | | +| [buildSha](./kibana-plugin-public.packageinfo.buildsha.md) | string | | +| [dist](./kibana-plugin-public.packageinfo.dist.md) | boolean | | +| [version](./kibana-plugin-public.packageinfo.version.md) | string | | + diff --git a/docs/development/core/public/kibana-plugin-public.packageinfo.version.md b/docs/development/core/public/kibana-plugin-public.packageinfo.version.md new file mode 100644 index 0000000000000..26def753e424a --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.packageinfo.version.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PackageInfo](./kibana-plugin-public.packageinfo.md) > [version](./kibana-plugin-public.packageinfo.version.md) + +## PackageInfo.version property + +Signature: + +```typescript +version: string; +``` diff --git a/docs/development/core/public/kibana-plugin-public.plugininitializercontext.env.md b/docs/development/core/public/kibana-plugin-public.plugininitializercontext.env.md new file mode 100644 index 0000000000000..92f36ab64a1d6 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.plugininitializercontext.env.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [PluginInitializerContext](./kibana-plugin-public.plugininitializercontext.md) > [env](./kibana-plugin-public.plugininitializercontext.env.md) + +## PluginInitializerContext.env property + +Signature: + +```typescript +readonly env: { + mode: Readonly; + packageInfo: Readonly; + }; +``` diff --git a/docs/development/core/public/kibana-plugin-public.plugininitializercontext.md b/docs/development/core/public/kibana-plugin-public.plugininitializercontext.md index 3ad220349c45c..87c39a502040d 100644 --- a/docs/development/core/public/kibana-plugin-public.plugininitializercontext.md +++ b/docs/development/core/public/kibana-plugin-public.plugininitializercontext.md @@ -16,5 +16,6 @@ export interface PluginInitializerContext | Property | Type | Description | | --- | --- | --- | +| [env](./kibana-plugin-public.plugininitializercontext.env.md) | {
mode: Readonly<EnvironmentMode>;
packageInfo: Readonly<PackageInfo>;
} | | | [opaqueId](./kibana-plugin-public.plugininitializercontext.opaqueid.md) | PluginOpaqueId | A symbol used to identify this plugin in the system. Needed when registering handlers or context providers. | diff --git a/docs/development/core/server/kibana-plugin-server.environmentmode.dev.md b/docs/development/core/server/kibana-plugin-server.environmentmode.dev.md new file mode 100644 index 0000000000000..d60fcc58d1b60 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.environmentmode.dev.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [EnvironmentMode](./kibana-plugin-server.environmentmode.md) > [dev](./kibana-plugin-server.environmentmode.dev.md) + +## EnvironmentMode.dev property + +Signature: + +```typescript +dev: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-server.environmentmode.md b/docs/development/core/server/kibana-plugin-server.environmentmode.md new file mode 100644 index 0000000000000..b325f74a0a44f --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.environmentmode.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [EnvironmentMode](./kibana-plugin-server.environmentmode.md) + +## EnvironmentMode interface + + +Signature: + +```typescript +export interface EnvironmentMode +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [dev](./kibana-plugin-server.environmentmode.dev.md) | boolean | | +| [name](./kibana-plugin-server.environmentmode.name.md) | 'development' | 'production' | | +| [prod](./kibana-plugin-server.environmentmode.prod.md) | boolean | | + diff --git a/docs/development/core/server/kibana-plugin-server.environmentmode.name.md b/docs/development/core/server/kibana-plugin-server.environmentmode.name.md new file mode 100644 index 0000000000000..c3243075866f2 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.environmentmode.name.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [EnvironmentMode](./kibana-plugin-server.environmentmode.md) > [name](./kibana-plugin-server.environmentmode.name.md) + +## EnvironmentMode.name property + +Signature: + +```typescript +name: 'development' | 'production'; +``` diff --git a/docs/development/core/server/kibana-plugin-server.environmentmode.prod.md b/docs/development/core/server/kibana-plugin-server.environmentmode.prod.md new file mode 100644 index 0000000000000..86a94775358e9 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.environmentmode.prod.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [EnvironmentMode](./kibana-plugin-server.environmentmode.md) > [prod](./kibana-plugin-server.environmentmode.prod.md) + +## EnvironmentMode.prod property + +Signature: + +```typescript +prod: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-server.md b/docs/development/core/server/kibana-plugin-server.md index 02bbd028ac419..3e3e2bd57db96 100644 --- a/docs/development/core/server/kibana-plugin-server.md +++ b/docs/development/core/server/kibana-plugin-server.md @@ -49,6 +49,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [DiscoveredPlugin](./kibana-plugin-server.discoveredplugin.md) | Small container object used to expose information about discovered plugins that may or may not have been started. | | [ElasticsearchError](./kibana-plugin-server.elasticsearcherror.md) | | | [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) | | +| [EnvironmentMode](./kibana-plugin-server.environmentmode.md) | | | [ErrorHttpResponseOptions](./kibana-plugin-server.errorhttpresponseoptions.md) | HTTP response parameters | | [FakeRequest](./kibana-plugin-server.fakerequest.md) | Fake request object created manually by Kibana plugins. | | [HttpResponseOptions](./kibana-plugin-server.httpresponseoptions.md) | HTTP response parameters | @@ -67,6 +68,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [LogMeta](./kibana-plugin-server.logmeta.md) | Contextual metadata | | [OnPostAuthToolkit](./kibana-plugin-server.onpostauthtoolkit.md) | A tool set defining an outcome of OnPostAuth interceptor for incoming request. | | [OnPreAuthToolkit](./kibana-plugin-server.onpreauthtoolkit.md) | A tool set defining an outcome of OnPreAuth interceptor for incoming request. | +| [PackageInfo](./kibana-plugin-server.packageinfo.md) | | | [Plugin](./kibana-plugin-server.plugin.md) | The interface that should be returned by a PluginInitializer. | | [PluginInitializerContext](./kibana-plugin-server.plugininitializercontext.md) | Context that's available to plugins during initialization stage. | | [PluginManifest](./kibana-plugin-server.pluginmanifest.md) | Describes the set of required and optional properties plugin can define in its mandatory JSON manifest file. | diff --git a/docs/development/core/server/kibana-plugin-server.packageinfo.branch.md b/docs/development/core/server/kibana-plugin-server.packageinfo.branch.md new file mode 100644 index 0000000000000..36f187180d31b --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.packageinfo.branch.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [PackageInfo](./kibana-plugin-server.packageinfo.md) > [branch](./kibana-plugin-server.packageinfo.branch.md) + +## PackageInfo.branch property + +Signature: + +```typescript +branch: string; +``` diff --git a/docs/development/core/server/kibana-plugin-server.packageinfo.buildnum.md b/docs/development/core/server/kibana-plugin-server.packageinfo.buildnum.md new file mode 100644 index 0000000000000..c0a231ee27ab0 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.packageinfo.buildnum.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [PackageInfo](./kibana-plugin-server.packageinfo.md) > [buildNum](./kibana-plugin-server.packageinfo.buildnum.md) + +## PackageInfo.buildNum property + +Signature: + +```typescript +buildNum: number; +``` diff --git a/docs/development/core/server/kibana-plugin-server.packageinfo.buildsha.md b/docs/development/core/server/kibana-plugin-server.packageinfo.buildsha.md new file mode 100644 index 0000000000000..5e8de48067dd0 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.packageinfo.buildsha.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [PackageInfo](./kibana-plugin-server.packageinfo.md) > [buildSha](./kibana-plugin-server.packageinfo.buildsha.md) + +## PackageInfo.buildSha property + +Signature: + +```typescript +buildSha: string; +``` diff --git a/docs/development/core/server/kibana-plugin-server.packageinfo.dist.md b/docs/development/core/server/kibana-plugin-server.packageinfo.dist.md new file mode 100644 index 0000000000000..e45970780d522 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.packageinfo.dist.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [PackageInfo](./kibana-plugin-server.packageinfo.md) > [dist](./kibana-plugin-server.packageinfo.dist.md) + +## PackageInfo.dist property + +Signature: + +```typescript +dist: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-server.packageinfo.md b/docs/development/core/server/kibana-plugin-server.packageinfo.md new file mode 100644 index 0000000000000..3ff02c9cda85d --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.packageinfo.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [PackageInfo](./kibana-plugin-server.packageinfo.md) + +## PackageInfo interface + + +Signature: + +```typescript +export interface PackageInfo +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [branch](./kibana-plugin-server.packageinfo.branch.md) | string | | +| [buildNum](./kibana-plugin-server.packageinfo.buildnum.md) | number | | +| [buildSha](./kibana-plugin-server.packageinfo.buildsha.md) | string | | +| [dist](./kibana-plugin-server.packageinfo.dist.md) | boolean | | +| [version](./kibana-plugin-server.packageinfo.version.md) | string | | + diff --git a/docs/development/core/server/kibana-plugin-server.packageinfo.version.md b/docs/development/core/server/kibana-plugin-server.packageinfo.version.md new file mode 100644 index 0000000000000..e99e3c48d7041 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.packageinfo.version.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [PackageInfo](./kibana-plugin-server.packageinfo.md) > [version](./kibana-plugin-server.packageinfo.version.md) + +## PackageInfo.version property + +Signature: + +```typescript +version: string; +``` diff --git a/docs/development/core/server/kibana-plugin-server.plugininitializercontext.env.md b/docs/development/core/server/kibana-plugin-server.plugininitializercontext.env.md index fde398faf132e..fd4caa605c0e5 100644 --- a/docs/development/core/server/kibana-plugin-server.plugininitializercontext.env.md +++ b/docs/development/core/server/kibana-plugin-server.plugininitializercontext.env.md @@ -9,5 +9,6 @@ ```typescript env: { mode: EnvironmentMode; + packageInfo: Readonly; }; ``` diff --git a/docs/development/core/server/kibana-plugin-server.plugininitializercontext.md b/docs/development/core/server/kibana-plugin-server.plugininitializercontext.md index 2bba3d408f68e..e7aa32edaa293 100644 --- a/docs/development/core/server/kibana-plugin-server.plugininitializercontext.md +++ b/docs/development/core/server/kibana-plugin-server.plugininitializercontext.md @@ -17,7 +17,7 @@ export interface PluginInitializerContext | Property | Type | Description | | --- | --- | --- | | [config](./kibana-plugin-server.plugininitializercontext.config.md) | {
create: <T = ConfigSchema>() => Observable<T>;
createIfExists: <T = ConfigSchema>() => Observable<T | undefined>;
} | | -| [env](./kibana-plugin-server.plugininitializercontext.env.md) | {
mode: EnvironmentMode;
} | | +| [env](./kibana-plugin-server.plugininitializercontext.env.md) | {
mode: EnvironmentMode;
packageInfo: Readonly<PackageInfo>;
} | | | [logger](./kibana-plugin-server.plugininitializercontext.logger.md) | LoggerFactory | | | [opaqueId](./kibana-plugin-server.plugininitializercontext.opaqueid.md) | PluginOpaqueId | | diff --git a/src/core/public/context/context_service.test.ts b/src/core/public/context/context_service.test.ts index d575d57a6b275..934ea77df6fdc 100644 --- a/src/core/public/context/context_service.test.ts +++ b/src/core/public/context/context_service.test.ts @@ -20,17 +20,18 @@ import { PluginOpaqueId } from '../../server'; import { MockContextConstructor } from './context_service.test.mocks'; import { ContextService } from './context_service'; +import { coreMock } from '../mocks'; const pluginDependencies = new Map(); describe('ContextService', () => { describe('#setup()', () => { test('createContextContainer returns a new container configured with pluginDependencies', () => { - const coreId = Symbol(); - const service = new ContextService({ coreId }); + const context = coreMock.createCoreContext(); + const service = new ContextService(context); const setup = service.setup({ pluginDependencies }); expect(setup.createContextContainer()).toBeDefined(); - expect(MockContextConstructor).toHaveBeenCalledWith(pluginDependencies, coreId); + expect(MockContextConstructor).toHaveBeenCalledWith(pluginDependencies, context.coreId); }); }); }); diff --git a/src/core/public/core_system.ts b/src/core/public/core_system.ts index 193e4dd23f23c..7104b9e10c741 100644 --- a/src/core/public/core_system.ts +++ b/src/core/public/core_system.ts @@ -20,6 +20,7 @@ import './core.css'; import { CoreId } from '../server'; +import { PackageInfo, EnvironmentMode } from '../server/types'; import { CoreSetup, CoreStart } from '.'; import { ChromeService } from './chrome'; import { FatalErrorsService, FatalErrorsSetup } from './fatal_errors'; @@ -55,6 +56,10 @@ interface Params { /** @internal */ export interface CoreContext { coreId: CoreId; + env: { + mode: Readonly; + packageInfo: Readonly; + }; } /** @internal */ @@ -130,7 +135,8 @@ export class CoreSystem { this.rendering = new RenderingService(); this.application = new ApplicationService(); - this.coreContext = { coreId: Symbol('core') }; + this.coreContext = { coreId: Symbol('core'), env: injectedMetadata.env }; + this.context = new ContextService(this.coreContext); this.plugins = new PluginsService(this.coreContext, injectedMetadata.uiPlugins); diff --git a/src/core/public/index.ts b/src/core/public/index.ts index e339372330adb..2522e22f644f5 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -67,6 +67,7 @@ import { UiSettingsClient, UiSettingsState, UiSettingsClientContract } from './u import { ApplicationSetup, Capabilities, ApplicationStart } from './application'; import { DocLinksStart } from './doc_links'; import { SavedObjectsStart } from './saved_objects'; +export { PackageInfo, EnvironmentMode } from '../server/types'; import { IContextContainer, IContextProvider, diff --git a/src/core/public/injected_metadata/injected_metadata_service.ts b/src/core/public/injected_metadata/injected_metadata_service.ts index aa9d2a1458735..478285a70771e 100644 --- a/src/core/public/injected_metadata/injected_metadata_service.ts +++ b/src/core/public/injected_metadata/injected_metadata_service.ts @@ -19,6 +19,7 @@ import { get } from 'lodash'; import { DiscoveredPlugin, PluginName } from '../../server'; +import { EnvironmentMode, PackageInfo } from '../../server/types'; import { UiSettingsState } from '../ui_settings'; import { deepFreeze } from '../../utils/'; import { Capabilities } from '..'; @@ -46,6 +47,10 @@ export interface InjectedMetadataParams { vars: { [key: string]: unknown; }; + env: { + mode: Readonly; + packageInfo: Readonly; + }; uiPlugins: Array<{ id: PluginName; plugin: DiscoveredPlugin; diff --git a/src/core/public/mocks.ts b/src/core/public/mocks.ts index 8ce163fd59e14..8345980b6869d 100644 --- a/src/core/public/mocks.ts +++ b/src/core/public/mocks.ts @@ -18,7 +18,7 @@ */ import { applicationServiceMock } from './application/application_service.mock'; import { chromeServiceMock } from './chrome/chrome_service.mock'; -import { CoreSetup, CoreStart, PluginInitializerContext } from '.'; +import { CoreContext, CoreSetup, CoreStart, PluginInitializerContext } from '.'; import { docLinksServiceMock } from './doc_links/doc_links_service.mock'; import { fatalErrorsServiceMock } from './fatal_errors/fatal_errors_service.mock'; import { httpServiceMock } from './http/http_service.mock'; @@ -75,9 +75,51 @@ function createCoreStartMock() { return mock; } +function pluginInitializerContextMock() { + const mock: PluginInitializerContext = { + opaqueId: Symbol(), + env: { + mode: { + dev: true, + name: 'development', + prod: false, + }, + packageInfo: { + version: 'version', + branch: 'branch', + buildNum: 100, + buildSha: 'buildSha', + dist: false, + }, + }, + }; + + return mock; +} + +function createCoreContext(): CoreContext { + return { + coreId: Symbol('core context mock'), + env: { + mode: { + dev: true, + name: 'development', + prod: false, + }, + packageInfo: { + version: 'version', + branch: 'branch', + buildNum: 100, + buildSha: 'buildSha', + dist: false, + }, + }, + }; +} export const coreMock = { + createCoreContext, createSetup: createCoreSetupMock, createStart: createCoreStartMock, - createPluginInitializerContext: jest.fn() as jest.Mock, + createPluginInitializerContext: pluginInitializerContextMock, }; diff --git a/src/core/public/plugins/plugin.test.ts b/src/core/public/plugins/plugin.test.ts index 6cbe0c7e0ed82..85de5c6620cc1 100644 --- a/src/core/public/plugins/plugin.test.ts +++ b/src/core/public/plugins/plugin.test.ts @@ -19,6 +19,7 @@ import { mockInitializer, mockPlugin, mockPluginLoader } from './plugin.test.mocks'; import { DiscoveredPlugin } from '../../server'; +import { coreMock } from '../mocks'; import { PluginWrapper } from './plugin'; function createManifest( @@ -36,7 +37,7 @@ function createManifest( let plugin: PluginWrapper>; const opaqueId = Symbol(); -const initializerContext = { opaqueId }; +const initializerContext = coreMock.createPluginInitializerContext(); const addBasePath = (path: string) => path; beforeEach(() => { diff --git a/src/core/public/plugins/plugin_context.ts b/src/core/public/plugins/plugin_context.ts index 51bd118d280e3..eae45654fce18 100644 --- a/src/core/public/plugins/plugin_context.ts +++ b/src/core/public/plugins/plugin_context.ts @@ -19,7 +19,8 @@ import { omit } from 'lodash'; -import { DiscoveredPlugin, PluginOpaqueId } from '../../server'; +import { DiscoveredPlugin } from '../../server'; +import { PluginOpaqueId, PackageInfo, EnvironmentMode } from '../../server/types'; import { CoreContext } from '../core_system'; import { PluginWrapper } from './plugin'; import { PluginsServiceSetupDeps, PluginsServiceStartDeps } from './plugins_service'; @@ -35,6 +36,10 @@ export interface PluginInitializerContext { * A symbol used to identify this plugin in the system. Needed when registering handlers or context providers. */ readonly opaqueId: PluginOpaqueId; + readonly env: { + mode: Readonly; + packageInfo: Readonly; + }; } /** @@ -52,6 +57,7 @@ export function createPluginInitializerContext( ): PluginInitializerContext { return { opaqueId, + env: coreContext.env, }; } diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index 358bf71ac9188..cfac4c3648053 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -26,7 +26,7 @@ import { } from './plugins_service.test.mocks'; import { PluginName, DiscoveredPlugin } from 'src/core/server'; -import { CoreContext } from '../core_system'; +import { coreMock } from '../mocks'; import { PluginsService, PluginsServiceStartDeps, @@ -56,7 +56,7 @@ let plugins: Array<{ id: string; plugin: DiscoveredPlugin }>; type DeeplyMocked = { [P in keyof T]: jest.Mocked }; -const mockCoreContext: CoreContext = { coreId: Symbol() }; +const mockCoreContext = coreMock.createCoreContext(); let mockSetupDeps: DeeplyMocked; let mockSetupContext: DeeplyMocked; let mockStartDeps: DeeplyMocked; diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index e45c7710dc383..e7f1db8b16762 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -226,6 +226,11 @@ export interface CoreContext { // // (undocumented) coreId: CoreId; + // (undocumented) + env: { + mode: Readonly; + packageInfo: Readonly; + }; } // @public @@ -379,6 +384,16 @@ export interface DocLinksStart { }; } +// @public (undocumented) +export interface EnvironmentMode { + // (undocumented) + dev: boolean; + // (undocumented) + name: 'development' | 'production'; + // (undocumented) + prod: boolean; +} + // Warning: (ae-missing-release-tag) "ErrorToastOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -681,6 +696,20 @@ export interface OverlayStart { }) => OverlayRef; } +// @public (undocumented) +export interface PackageInfo { + // (undocumented) + branch: string; + // (undocumented) + buildNum: number; + // (undocumented) + buildSha: string; + // (undocumented) + dist: boolean; + // (undocumented) + version: string; +} + // @public export interface Plugin { // (undocumented) @@ -696,6 +725,11 @@ export type PluginInitializer; + packageInfo: Readonly; + }; readonly opaqueId: PluginOpaqueId; } diff --git a/src/core/server/config/env.ts b/src/core/server/config/env.ts index 89d0e68ed276b..bb6064c71742d 100644 --- a/src/core/server/config/env.ts +++ b/src/core/server/config/env.ts @@ -18,25 +18,12 @@ */ import { resolve, dirname } from 'path'; +import { PackageInfo, EnvironmentMode } from './types'; // `require` is necessary for this to work inside x-pack code as well // eslint-disable-next-line @typescript-eslint/no-var-requires const pkg = require('../../../../package.json'); -export interface PackageInfo { - version: string; - branch: string; - buildNum: number; - buildSha: string; - dist: boolean; -} - -export interface EnvironmentMode { - name: 'development' | 'production'; - dev: boolean; - prod: boolean; -} - /** @internal */ export interface EnvOptions { configs: string[]; diff --git a/src/core/server/config/index.ts b/src/core/server/config/index.ts index d27462a86a9c8..491a24b2ab3d6 100644 --- a/src/core/server/config/index.ts +++ b/src/core/server/config/index.ts @@ -21,6 +21,6 @@ export { ConfigService, IConfigService } from './config_service'; export { RawConfigService } from './raw_config_service'; export { Config, ConfigPath, isConfigPath, hasConfigPathIntersection } from './config'; export { ObjectToConfigAdapter } from './object_to_config_adapter'; -export { CliArgs } from './env'; +export { CliArgs, Env } from './env'; -export { Env, EnvironmentMode, PackageInfo } from './env'; +export { EnvironmentMode, PackageInfo } from './types'; diff --git a/src/core/server/types.ts~master b/src/core/server/config/types.ts similarity index 74% rename from src/core/server/types.ts~master rename to src/core/server/config/types.ts index 9b55da17a40a8..117c8bf7c3b44 100644 --- a/src/core/server/types.ts~master +++ b/src/core/server/config/types.ts @@ -17,6 +17,22 @@ * under the License. */ -/** This module is intended for consumption by public to avoid import issues with server-side code */ +/** + * @public + */ +export interface PackageInfo { + version: string; + branch: string; + buildNum: number; + buildSha: string; + dist: boolean; +} -export { PluginOpaqueId } from './plugins/types'; +/** + * @public + */ +export interface EnvironmentMode { + name: 'development' | 'production'; + dev: boolean; + prod: boolean; +} diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 027c82e419b5c..6add81af863d1 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -58,7 +58,7 @@ import { ContextSetup } from './context'; import { SavedObjectsServiceStart } from './saved_objects'; export { bootstrap } from './bootstrap'; -export { ConfigPath, ConfigService } from './config'; +export { ConfigPath, ConfigService, EnvironmentMode, PackageInfo } from './config'; export { IContextContainer, IContextProvider, diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts index 500f50fcd8315..52e999f5e03a7 100644 --- a/src/core/server/legacy/legacy_service.ts +++ b/src/core/server/legacy/legacy_service.ts @@ -257,6 +257,10 @@ export class LegacyService implements CoreService { settings, config, { + env: { + mode: this.coreContext.env.mode, + packageInfo: this.coreContext.env.packageInfo, + }, handledConfigPaths: await this.coreContext.configService.getUsedPaths(), setupDeps: { core: coreSetup, diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index f072ae5fd4dbd..c3d524c77402c 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -40,7 +40,7 @@ export function pluginInitializerContextConfigMock(config: T) { return mock; } -function pluginInitializerContextMock(config: T) { +function pluginInitializerContextMock(config: T = {} as T) { const mock: PluginInitializerContext = { opaqueId: Symbol(), logger: loggingServiceMock.create(), @@ -50,6 +50,13 @@ function pluginInitializerContextMock(config: T) { name: 'development', prod: false, }, + packageInfo: { + version: 'version', + branch: 'branch', + buildNum: 100, + buildSha: 'buildSha', + dist: false, + }, }, config: pluginInitializerContextConfigMock(config), }; diff --git a/src/core/server/plugins/plugin_context.ts b/src/core/server/plugins/plugin_context.ts index 46432cbb0da75..edcafbb9a3dc3 100644 --- a/src/core/server/plugins/plugin_context.ts +++ b/src/core/server/plugins/plugin_context.ts @@ -47,7 +47,10 @@ export function createPluginInitializerContext( /** * Environment information that is safe to expose to plugins and may be beneficial for them. */ - env: { mode: coreContext.env.mode }, + env: { + mode: coreContext.env.mode, + packageInfo: coreContext.env.packageInfo, + }, /** * Plugin-scoped logger diff --git a/src/core/server/plugins/types.ts b/src/core/server/plugins/types.ts index 4b66c9fb65c18..9a3e922b3cb89 100644 --- a/src/core/server/plugins/types.ts +++ b/src/core/server/plugins/types.ts @@ -20,7 +20,7 @@ import { Observable } from 'rxjs'; import { Type } from '@kbn/config-schema'; -import { ConfigPath, EnvironmentMode } from '../config'; +import { ConfigPath, EnvironmentMode, PackageInfo } from '../config'; import { LoggerFactory } from '../logging'; import { CoreSetup, CoreStart } from '..'; @@ -159,7 +159,10 @@ export interface Plugin< */ export interface PluginInitializerContext { opaqueId: PluginOpaqueId; - env: { mode: EnvironmentMode }; + env: { + mode: EnvironmentMode; + packageInfo: Readonly; + }; logger: LoggerFactory; config: { create: () => Observable; diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 01e6b63ee433a..d1d6f35b4da1e 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -618,6 +618,16 @@ export interface ElasticsearchServiceSetup { }; } +// @public (undocumented) +export interface EnvironmentMode { + // (undocumented) + dev: boolean; + // (undocumented) + name: 'development' | 'production'; + // (undocumented) + prod: boolean; +} + // @public export interface ErrorHttpResponseOptions { body?: ResponseError; @@ -957,6 +967,20 @@ export interface OnPreAuthToolkit { rewriteUrl: (url: string) => OnPreAuthResult; } +// @public (undocumented) +export interface PackageInfo { + // (undocumented) + branch: string; + // (undocumented) + buildNum: number; + // (undocumented) + buildSha: string; + // (undocumented) + dist: boolean; + // (undocumented) + version: string; +} + // @public export interface Plugin { // (undocumented) @@ -980,6 +1004,7 @@ export interface PluginInitializerContext { // (undocumented) env: { mode: EnvironmentMode; + packageInfo: Readonly; }; // (undocumented) logger: LoggerFactory; @@ -1553,6 +1578,5 @@ export interface SessionStorageFactory { // Warnings were encountered during analysis: // // src/core/server/plugins/plugins_service.ts:39:5 - (ae-forgotten-export) The symbol "DiscoveredPluginInternal" needs to be exported by the entry point index.d.ts -// src/core/server/plugins/types.ts:162:10 - (ae-forgotten-export) The symbol "EnvironmentMode" needs to be exported by the entry point index.d.ts ``` diff --git a/src/core/server/types.ts b/src/core/server/types.ts index d712c804d45d1..46c70a91721b5 100644 --- a/src/core/server/types.ts +++ b/src/core/server/types.ts @@ -20,3 +20,4 @@ /** This module is intended for consumption by public to avoid import issues with server-side code */ export { PluginOpaqueId } from './plugins/types'; export * from './saved_objects/types'; +export { EnvironmentMode, PackageInfo } from './config/types'; diff --git a/src/legacy/server/kbn_server.d.ts b/src/legacy/server/kbn_server.d.ts index d12ac08e273c0..f5771c6b86d9a 100644 --- a/src/legacy/server/kbn_server.d.ts +++ b/src/legacy/server/kbn_server.d.ts @@ -24,9 +24,11 @@ import { SavedObjectsClientProviderOptions, CoreSetup } from 'src/core/server'; import { ConfigService, ElasticsearchServiceSetup, + EnvironmentMode, LoggerFactory, SavedObjectsClientContract, SavedObjectsLegacyService, + PackageInfo, } from '../../core/server'; import { LegacyServiceSetupDeps, LegacyServiceStartDeps } from '../../core/server/'; @@ -102,6 +104,10 @@ type KbnMixinFunc = (kbnServer: KbnServer, server: Server, config: any) => Promi // eslint-disable-next-line import/no-default-export export default class KbnServer { public readonly newPlatform: { + env: { + mode: Readonly; + packageInfo: Readonly; + }; coreContext: { logger: LoggerFactory; }; diff --git a/src/legacy/server/kbn_server.js b/src/legacy/server/kbn_server.js index 56539f409a34c..f7ed56b10c267 100644 --- a/src/legacy/server/kbn_server.js +++ b/src/legacy/server/kbn_server.js @@ -57,10 +57,14 @@ export default class KbnServer { this.settings = settings || {}; this.config = config; - const { setupDeps, startDeps, handledConfigPaths, logger, __internals } = core; + const { setupDeps, startDeps, handledConfigPaths, logger, __internals, env } = core; this.server = __internals.hapiServer; this.newPlatform = { + env: { + mode: env.mode, + packageInfo: env.packageInfo, + }, __internals, coreContext: { logger, diff --git a/src/legacy/ui/ui_render/ui_render_mixin.js b/src/legacy/ui/ui_render/ui_render_mixin.js index 68cfd756acf6b..883358e0d3c9a 100644 --- a/src/legacy/ui/ui_render/ui_render_mixin.js +++ b/src/legacy/ui/ui_render/ui_render_mixin.js @@ -237,6 +237,7 @@ export function uiRenderMixin(kbnServer, server, config) { buildNumber: config.get('pkg.buildNum'), branch: config.get('pkg.branch'), basePath, + env: kbnServer.newPlatform.env, legacyMode: app.getId() !== 'core', i18n: { translationsUrl: `${basePath}/translations/${i18n.getLocale()}.json`, diff --git a/src/plugins/data/public/search/es_search/es_search_service.test.ts b/src/plugins/data/public/search/es_search/es_search_service.test.ts index d1069cd6815fe..d756b54a5cce6 100644 --- a/src/plugins/data/public/search/es_search/es_search_service.test.ts +++ b/src/plugins/data/public/search/es_search/es_search_service.test.ts @@ -25,10 +25,9 @@ import { searchSetupMock } from '../mocks'; describe('ES search strategy service', () => { let service: EsSearchService; let mockCoreSetup: MockedKeys; - const opaqueId = Symbol(); beforeEach(() => { - service = new EsSearchService({ opaqueId }); + service = new EsSearchService(coreMock.createPluginInitializerContext()); mockCoreSetup = coreMock.createSetup(); }); diff --git a/src/plugins/data/public/search/es_search/index.test.ts b/src/plugins/data/public/search/es_search/index.test.ts index 7f7a2ed397d43..ecceffc752e9a 100644 --- a/src/plugins/data/public/search/es_search/index.test.ts +++ b/src/plugins/data/public/search/es_search/index.test.ts @@ -16,10 +16,10 @@ * specific language governing permissions and limitations * under the License. */ - +import { coreMock } from '../../../../../../src/core/public/mocks'; import { esSearchService } from '.'; it('es search service is instantiated', () => { - const esSearch = esSearchService({ opaqueId: Symbol() }); + const esSearch = esSearchService(coreMock.createPluginInitializerContext()); expect(esSearch).toBeDefined(); }); diff --git a/src/plugins/data/public/search/search_service.test.ts b/src/plugins/data/public/search/search_service.test.ts index 8102b0e915fb7..69e05e8df48e2 100644 --- a/src/plugins/data/public/search/search_service.test.ts +++ b/src/plugins/data/public/search/search_service.test.ts @@ -25,9 +25,9 @@ import { CoreSetup } from '../../../../core/public'; describe('Search service', () => { let searchService: SearchService; let mockCoreSetup: MockedKeys; - const opaqueId = Symbol(); + beforeEach(() => { - searchService = new SearchService({ opaqueId }); + searchService = new SearchService(coreMock.createPluginInitializerContext()); mockCoreSetup = coreMock.createSetup(); }); diff --git a/src/plugins/data/server/search/es_search/es_search_service.test.ts b/src/plugins/data/server/search/es_search/es_search_service.test.ts index faf9487159c15..0b274c62958a9 100644 --- a/src/plugins/data/server/search/es_search/es_search_service.test.ts +++ b/src/plugins/data/server/search/es_search/es_search_service.test.ts @@ -19,31 +19,13 @@ import { coreMock } from '../../../../../core/server/mocks'; import { EsSearchService } from './es_search_service'; -import { PluginInitializerContext } from '../../../../../core/server'; import { searchSetupMock } from '../mocks'; describe('ES search strategy service', () => { let service: EsSearchService; const mockCoreSetup = coreMock.createSetup(); - const opaqueId = Symbol(); - const context: PluginInitializerContext = { - opaqueId, - config: { - createIfExists: jest.fn(), - create: jest.fn(), - }, - env: { - mode: { - dev: false, - name: 'development', - prod: false, - }, - }, - logger: { - get: jest.fn(), - }, - }; + const context = coreMock.createPluginInitializerContext(); beforeEach(() => { service = new EsSearchService(context); diff --git a/test/plugin_functional/plugins/core_plugin_b/public/index.ts b/test/plugin_functional/plugins/core_plugin_b/public/index.ts index db3b5c42a964f..31aa7f81c2ac1 100644 --- a/test/plugin_functional/plugins/core_plugin_b/public/index.ts +++ b/test/plugin_functional/plugins/core_plugin_b/public/index.ts @@ -17,7 +17,7 @@ * under the License. */ -import { PluginInitializer } from 'kibana/public'; +import { PluginInitializer, PluginInitializerContext } from 'kibana/public'; import { CorePluginBDeps, CorePluginBPlugin, @@ -29,4 +29,4 @@ export const plugin: PluginInitializer< CorePluginBPluginSetup, CorePluginBPluginStart, CorePluginBDeps -> = () => new CorePluginBPlugin(); +> = (context: PluginInitializerContext) => new CorePluginBPlugin(context); diff --git a/test/plugin_functional/plugins/core_plugin_b/public/plugin.tsx b/test/plugin_functional/plugins/core_plugin_b/public/plugin.tsx index 627fd05404b24..56cc1cb4ab425 100644 --- a/test/plugin_functional/plugins/core_plugin_b/public/plugin.tsx +++ b/test/plugin_functional/plugins/core_plugin_b/public/plugin.tsx @@ -17,13 +17,14 @@ * under the License. */ -import { Plugin, CoreSetup } from 'kibana/public'; +import { CoreSetup, Plugin, PluginInitializerContext } from 'kibana/public'; import { CorePluginAPluginSetup } from '../../core_plugin_a/public/plugin'; declare global { interface Window { corePluginB?: string; hasAccessToInjectedMetadata?: boolean; + env?: PluginInitializerContext['env']; } } @@ -33,6 +34,9 @@ export interface CorePluginBDeps { export class CorePluginBPlugin implements Plugin { + constructor(pluginContext: PluginInitializerContext) { + window.env = pluginContext.env; + } public setup(core: CoreSetup, deps: CorePluginBDeps) { window.corePluginB = `Plugin A said: ${deps.core_plugin_a.getGreeting()}`; window.hasAccessToInjectedMetadata = 'getInjectedVar' in core.injectedMetadata; diff --git a/test/plugin_functional/test_suites/core_plugins/ui_plugins.js b/test/plugin_functional/test_suites/core_plugins/ui_plugins.js index df855f243d403..15a4dcabddbd1 100644 --- a/test/plugin_functional/test_suites/core_plugins/ui_plugins.js +++ b/test/plugin_functional/test_suites/core_plugins/ui_plugins.js @@ -44,5 +44,16 @@ export default function ({ getService, getPageObjects }) { expect(hasAccessToInjectedMetadata).to.equal(true); }); }); + describe('have env data provided', function describeIndexTests() { + before(async () => { + await PageObjects.common.navigateToApp('bar'); + }); + + it('should attach pluginContext to window.corePluginB', async () => { + const envData = await browser.execute('return window.env'); + expect(envData.mode.dev).to.be(true); + expect(envData.packageInfo.version).to.be.a('string'); + }); + }); }); } diff --git a/x-pack/legacy/plugins/uptime/public/apps/index.ts b/x-pack/legacy/plugins/uptime/public/apps/index.ts index 2fa548c3c2717..3b328b3ff2326 100644 --- a/x-pack/legacy/plugins/uptime/public/apps/index.ts +++ b/x-pack/legacy/plugins/uptime/public/apps/index.ts @@ -8,4 +8,4 @@ import chrome from 'ui/chrome'; import { npStart } from 'ui/new_platform'; import { Plugin } from './plugin'; -new Plugin({ opaqueId: Symbol('uptime') }, chrome).start(npStart); +new Plugin({ opaqueId: Symbol('uptime'), env: {} as any }, chrome).start(npStart); From 338851f5d34421606fe2da178a9d1a2ebe94880e Mon Sep 17 00:00:00 2001 From: Liza Katz Date: Tue, 15 Oct 2019 15:23:24 +0300 Subject: [PATCH 28/46] Remove indexPatterns dependency from filter service (#47471) * Get rid of addFiltersAndChangeTimeFilter * ts fix * remove timefilter dependency from filter manager * code review change * Fixed bug in tests * changeTimeFilter * Refactored mappers and filter service to have no dependency on indexPatterns by generating the filter disaplyName in the relevant components. * Fix map and flatten test * Fixed filter state manager test * Remove async from addFIlters and setFilters * Fixed saved objects test - removed (display)value from url * Make removeAll sync * defer setFilters and removeAll in dashboard controller - temp hack * fixed translation in filter view * update strings * Fixed range rendering * map range converter --- .../src/filters/lib/meta_filter.ts | 8 +- .../apply_filters/apply_filters_popover.tsx | 12 +- .../filter_editor/lib/filter_editor_utils.ts | 23 ++- .../lib/get_filter_display_text.ts | 53 +++++++ .../public/filter/filter_bar/filter_item.tsx | 5 +- .../filter/filter_bar/filter_view/index.tsx | 54 ++------ .../filter_manager/filter_manager.test.ts | 131 +++++++++--------- .../filter/filter_manager/filter_manager.ts | 17 +-- .../filter_state_manager.test.ts | 29 ++-- .../lib/generate_mapping_chain.test.ts | 40 +++--- .../lib/generate_mapping_chain.ts | 8 +- .../lib/map_and_flatten_filters.test.ts | 21 ++- .../lib/map_and_flatten_filters.ts | 7 +- .../filter_manager/lib/map_default.test.ts | 4 +- .../filter/filter_manager/lib/map_default.ts | 2 +- .../filter_manager/lib/map_exists.test.ts | 4 +- .../filter/filter_manager/lib/map_exists.ts | 2 +- .../filter_manager/lib/map_filter.test.ts | 34 +++-- .../filter/filter_manager/lib/map_filter.ts | 15 +- .../lib/map_geo_bounding_box.test.ts | 47 +++---- .../lib/map_geo_bounding_box.ts | 70 ++++------ .../lib/map_geo_polygon.test.ts | 45 +++--- .../filter_manager/lib/map_geo_polygon.ts | 54 +++----- .../filter_manager/lib/map_match_all.test.ts | 6 +- .../filter_manager/lib/map_match_all.ts | 2 +- .../filter_manager/lib/map_missing.test.ts | 4 +- .../filter/filter_manager/lib/map_missing.ts | 2 +- .../filter_manager/lib/map_phrase.test.ts | 25 ++-- .../filter/filter_manager/lib/map_phrase.ts | 41 ++---- .../filter/filter_manager/lib/map_phrases.ts | 2 +- .../lib/map_query_string.test.ts | 4 +- .../filter_manager/lib/map_query_string.ts | 2 +- .../filter_manager/lib/map_range.test.ts | 41 +++--- .../filter/filter_manager/lib/map_range.ts | 60 ++++---- .../data/public/filter/filter_service.mock.ts | 14 +- .../data/public/filter/filter_service.ts | 17 ++- .../core_plugins/data/public/filter/index.tsx | 2 +- src/legacy/core_plugins/data/public/plugin.ts | 15 +- .../search_bar/components/search_bar.tsx | 8 +- .../public/shim/apply_filter_directive.html | 1 + .../data/public/shim/legacy_module.ts | 9 +- .../public/dashboard/dashboard_app.html | 1 + .../dashboard/dashboard_app_controller.tsx | 14 +- .../public/dashboard/lib/filter_utils.ts | 10 +- .../public/visualize/editor/editor.html | 1 + .../public/vega_view/vega_base_view.js | 2 +- .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - .../apps/maps/saved_object_management.js | 2 +- 49 files changed, 501 insertions(+), 471 deletions(-) create mode 100644 src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/get_filter_display_text.ts diff --git a/packages/kbn-es-query/src/filters/lib/meta_filter.ts b/packages/kbn-es-query/src/filters/lib/meta_filter.ts index 7740dfa644353..8f6aef782cea2 100644 --- a/packages/kbn-es-query/src/filters/lib/meta_filter.ts +++ b/packages/kbn-es-query/src/filters/lib/meta_filter.ts @@ -26,6 +26,12 @@ export interface FilterState { store: FilterStateStore; } +type FilterFormatterFunction = (value: any) => string; +export interface FilterValueFormatter { + convert: FilterFormatterFunction; + getConverterFor: (type: string) => FilterFormatterFunction; +} + export interface FilterMeta { // index and type are optional only because when you create a new filter, there are no defaults index?: string; @@ -34,7 +40,7 @@ export interface FilterMeta { negate: boolean; alias: string | null; key?: string; - value?: string; + value?: string | ((formatter?: FilterValueFormatter) => string); params?: any; } diff --git a/src/legacy/core_plugins/data/public/filter/apply_filters/apply_filters_popover.tsx b/src/legacy/core_plugins/data/public/filter/apply_filters/apply_filters_popover.tsx index 4212daff0371e..6270dee72ab05 100644 --- a/src/legacy/core_plugins/data/public/filter/apply_filters/apply_filters_popover.tsx +++ b/src/legacy/core_plugins/data/public/filter/apply_filters/apply_filters_popover.tsx @@ -33,10 +33,13 @@ import { import { Filter } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n/react'; import React, { Component } from 'react'; -import { getFilterDisplayText } from '../filter_bar/filter_view'; +import { IndexPattern } from '../../index_patterns'; +import { getDisplayValueFromFilter } from '../filter_bar/filter_editor/lib/filter_editor_utils'; +import { getFilterDisplayText } from '../filter_bar/filter_editor/lib/get_filter_display_text'; interface Props { filters: Filter[]; + indexPatterns: IndexPattern[]; onCancel: () => void; onSubmit: (filters: Filter[]) => void; } @@ -57,6 +60,11 @@ export class ApplyFiltersPopover extends Component { }; } + private getLabel(filter: Filter) { + const filterDisplayValue = getDisplayValueFromFilter(filter, this.props.indexPatterns); + return getFilterDisplayText(filter, filterDisplayValue); + } + public render() { if (this.props.filters.length === 0) { return ''; @@ -67,7 +75,7 @@ export class ApplyFiltersPopover extends Component { {this.props.filters.map((filter, i) => ( this.toggleFilterSelected(i)} /> diff --git a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/filter_editor_utils.ts b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/filter_editor_utils.ts index f0628f03c173e..c6bd435708782 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/filter_editor_utils.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/filter_editor_utils.ts @@ -31,7 +31,7 @@ import { PhrasesFilter, RangeFilter, } from '@kbn/es-query'; -import { omit } from 'lodash'; +import { omit, get } from 'lodash'; import { Ipv4Address } from '../../../../../../../../plugins/kibana_utils/public'; import { Field, IndexPattern, isFilterable } from '../../../../index_patterns'; import { FILTER_OPERATORS, Operator } from './filter_operators'; @@ -43,6 +43,27 @@ export function getIndexPatternFromFilter( return indexPatterns.find(indexPattern => indexPattern.id === filter.meta.index); } +function getValueFormatter(indexPattern?: IndexPattern, key?: string) { + if (!indexPattern || !key) return; + let format = get(indexPattern, ['fields', 'byName', key, 'format']); + if (!format && indexPattern.fields.getByName) { + // TODO: Why is indexPatterns sometimes a map and sometimes an array? + format = (indexPattern.fields.getByName(key) as Field).format; + } + return format; +} + +export function getDisplayValueFromFilter(filter: Filter, indexPatterns: IndexPattern[]): string { + const indexPattern = getIndexPatternFromFilter(filter, indexPatterns); + + if (typeof filter.meta.value === 'function') { + const valueFormatter: any = getValueFormatter(indexPattern, filter.meta.key); + return filter.meta.value(valueFormatter); + } else { + return filter.meta.value || ''; + } +} + export function getFieldFromFilter(filter: FieldFilter, indexPattern: IndexPattern) { return indexPattern.fields.find(field => field.name === filter.meta.key); } diff --git a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/get_filter_display_text.ts b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/get_filter_display_text.ts new file mode 100644 index 0000000000000..73ee1a69a2ce3 --- /dev/null +++ b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_editor/lib/get_filter_display_text.ts @@ -0,0 +1,53 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Filter } from '@kbn/es-query'; +import { i18n } from '@kbn/i18n'; +import { existsOperator, isOneOfOperator } from './filter_operators'; + +export function getFilterDisplayText(filter: Filter, filterDisplayName: string) { + const prefix = filter.meta.negate + ? ` ${i18n.translate('data.filter.filterBar.negatedFilterPrefix', { + defaultMessage: 'NOT ', + })}` + : ''; + + if (filter.meta.alias !== null) { + return `${prefix}${filter.meta.alias}`; + } + + switch (filter.meta.type) { + case 'exists': + return `${prefix}${filter.meta.key} ${existsOperator.message}`; + case 'geo_bounding_box': + return `${prefix}${filter.meta.key}: ${filterDisplayName}`; + case 'geo_polygon': + return `${prefix}${filter.meta.key}: ${filterDisplayName}`; + case 'phrase': + return `${prefix}${filter.meta.key}: ${filterDisplayName}`; + case 'phrases': + return `${prefix}${filter.meta.key} ${isOneOfOperator.message} ${filterDisplayName}`; + case 'query_string': + return `${prefix}${filterDisplayName}`; + case 'range': + return `${prefix}${filter.meta.key}: ${filterDisplayName}`; + default: + return `${prefix}${JSON.stringify(filter.query)}`; + } +} diff --git a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_item.tsx b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_item.tsx index 21259cec51d3a..0521b4e45aeb0 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_item.tsx +++ b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_item.tsx @@ -32,6 +32,7 @@ import { UiSettingsClientContract } from 'src/core/public'; import { IndexPattern } from '../../index_patterns'; import { FilterEditor } from './filter_editor'; import { FilterView } from './filter_view'; +import { getDisplayValueFromFilter } from './filter_editor/lib/filter_editor_utils'; interface Props { id: string; @@ -67,8 +68,9 @@ class FilterItemUI extends Component { this.props.className ); + const displayName = getDisplayValueFromFilter(filter, this.props.indexPatterns); const dataTestSubjKey = filter.meta.key ? `filter-key-${filter.meta.key}` : ''; - const dataTestSubjValue = filter.meta.value ? `filter-value-${filter.meta.value}` : ''; + const dataTestSubjValue = filter.meta.value ? `filter-value-${displayName}` : ''; const dataTestSubjDisabled = `filter-${ this.props.filter.meta.disabled ? 'disabled' : 'enabled' }`; @@ -76,6 +78,7 @@ class FilterItemUI extends Component { const badge = ( this.props.onRemove()} onClick={this.togglePopover} diff --git a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_view/index.tsx b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_view/index.tsx index dca2101d435cf..a7ea23efce49e 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_bar/filter_view/index.tsx +++ b/src/legacy/core_plugins/data/public/filter/filter_bar/filter_view/index.tsx @@ -21,20 +21,25 @@ import { EuiBadge } from '@elastic/eui'; import { Filter, isFilterPinned } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import React, { SFC } from 'react'; -import { existsOperator, isOneOfOperator } from '../filter_editor/lib/filter_operators'; +import { getFilterDisplayText } from '../filter_editor/lib/get_filter_display_text'; interface Props { filter: Filter; + displayName: string; [propName: string]: any; } -export const FilterView: SFC = ({ filter, iconOnClick, onClick, ...rest }: Props) => { - let title = `Filter: ${getFilterDisplayText(filter)}. ${i18n.translate( - 'data.filter.filterBar.moreFilterActionsMessage', - { - defaultMessage: 'Select for more filter actions.', - } - )}`; +export const FilterView: SFC = ({ + filter, + iconOnClick, + onClick, + displayName, + ...rest +}: Props) => { + let title = i18n.translate('data.filter.filterBar.moreFilterActionsMessage', { + defaultMessage: 'Filter: {displayText}. Select for more filter actions.', + values: { displayText: getFilterDisplayText(filter, displayName) }, + }); if (isFilterPinned(filter)) { title = `${i18n.translate('data.filter.filterBar.pinnedFilterPrefix', { @@ -67,38 +72,7 @@ export const FilterView: SFC = ({ filter, iconOnClick, onClick, ...rest } })} {...rest} > - {getFilterDisplayText(filter)} + {getFilterDisplayText(filter, displayName)} ); }; - -export function getFilterDisplayText(filter: Filter) { - const prefix = filter.meta.negate - ? ` ${i18n.translate('data.filter.filterBar.negatedFilterPrefix', { - defaultMessage: 'NOT ', - })}` - : ''; - - if (filter.meta.alias !== null) { - return `${prefix}${filter.meta.alias}`; - } - - switch (filter.meta.type) { - case 'exists': - return `${prefix}${filter.meta.key} ${existsOperator.message}`; - case 'geo_bounding_box': - return `${prefix}${filter.meta.key}: ${filter.meta.value}`; - case 'geo_polygon': - return `${prefix}${filter.meta.key}: ${filter.meta.value}`; - case 'phrase': - return `${prefix}${filter.meta.key}: ${filter.meta.value}`; - case 'phrases': - return `${prefix}${filter.meta.key} ${isOneOfOperator.message} ${filter.meta.value}`; - case 'query_string': - return `${prefix}${filter.meta.value}`; - case 'range': - return `${prefix}${filter.meta.key}: ${filter.meta.value}`; - default: - return `${prefix}${JSON.stringify(filter.query)}`; - } -} diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts index 3980251ce0043..21c51c9f68f41 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts @@ -26,9 +26,7 @@ import { Filter, FilterStateStore } from '@kbn/es-query'; import { FilterStateManager } from './filter_state_manager'; import { FilterManager } from './filter_manager'; -import { IndexPatterns } from '../../index_patterns'; import { getFilter } from './test_helpers/get_stub_filter'; -import { StubIndexPatterns } from './test_helpers/stub_index_pattern'; import { StubState } from './test_helpers/stub_state'; import { getFiltersArray } from './test_helpers/get_filters_array'; @@ -48,18 +46,13 @@ describe('filter_manager', () => { let updateListener: sinon.SinonSpy; let filterManager: FilterManager; - let indexPatterns: StubIndexPatterns; let readyFilters: Filter[]; beforeEach(() => { updateListener = sinon.stub(); appStateStub = new StubState(); globalStateStub = new StubState(); - indexPatterns = new StubIndexPatterns(); - filterManager = new FilterManager( - (indexPatterns as unknown) as IndexPatterns, - setupMock.uiSettings - ); + filterManager = new FilterManager(setupMock.uiSettings); readyFilters = getFiltersArray(); // FilterStateManager is tested indirectly. @@ -81,7 +74,7 @@ describe('filter_manager', () => { fetchSubscription.unsubscribe(); } - await filterManager.removeAll(); + filterManager.removeAll(); }); describe('observing', () => { @@ -135,7 +128,7 @@ describe('filter_manager', () => { test('app state should be set', async () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); - await filterManager.setFilters([f1]); + filterManager.setFilters([f1]); expect(filterManager.getAppFilters()).toHaveLength(1); expect(filterManager.getGlobalFilters()).toHaveLength(0); expect(filterManager.getFilters()).toHaveLength(1); @@ -149,7 +142,7 @@ describe('filter_manager', () => { test('global state should be set', async () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); - await filterManager.setFilters([f1]); + filterManager.setFilters([f1]); expect(filterManager.getAppFilters()).toHaveLength(0); expect(filterManager.getGlobalFilters()).toHaveLength(1); expect(filterManager.getFilters()).toHaveLength(1); @@ -164,7 +157,7 @@ describe('filter_manager', () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'FEMALE'); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); expect(filterManager.getAppFilters()).toHaveLength(1); expect(filterManager.getGlobalFilters()).toHaveLength(1); expect(filterManager.getFilters()).toHaveLength(2); @@ -183,8 +176,8 @@ describe('filter_manager', () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'FEMALE'); - await filterManager.setFilters([f1]); - await filterManager.setFilters([f2]); + filterManager.setFilters([f1]); + filterManager.setFilters([f2]); expect(filterManager.getAppFilters()).toHaveLength(1); expect(filterManager.getGlobalFilters()).toHaveLength(0); @@ -204,7 +197,7 @@ describe('filter_manager', () => { const fetchStub = jest.fn(); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, true, false, 'age', 34); - await filterManager.setFilters([f1]); + filterManager.setFilters([f1]); filterManager.getUpdates$().subscribe({ next: updateStub, @@ -216,7 +209,7 @@ describe('filter_manager', () => { const f2 = _.cloneDeep(f1); f2.meta.negate = true; - await filterManager.setFilters([f2]); + filterManager.setFilters([f2]); // this time, events should be emitted expect(fetchStub).toBeCalledTimes(0); @@ -228,7 +221,7 @@ describe('filter_manager', () => { test('app state should accept a single filter', async function() { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); - await filterManager.addFilters(f1); + filterManager.addFilters(f1); expect(filterManager.getAppFilters()).toHaveLength(1); expect(filterManager.getGlobalFilters()).toHaveLength(0); expect(updateListener.callCount).toBe(1); @@ -238,8 +231,8 @@ describe('filter_manager', () => { test('app state should accept array', async () => { const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'female'); - await filterManager.addFilters([f1]); - await filterManager.addFilters([f2]); + filterManager.addFilters([f1]); + filterManager.addFilters([f2]); expect(filterManager.getAppFilters()).toHaveLength(2); expect(filterManager.getGlobalFilters()).toHaveLength(0); expect(appStateStub.filters.length).toBe(2); @@ -248,7 +241,7 @@ describe('filter_manager', () => { test('global state should accept a single filer', async () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); - await filterManager.addFilters(f1); + filterManager.addFilters(f1); expect(filterManager.getAppFilters()).toHaveLength(0); expect(filterManager.getGlobalFilters()).toHaveLength(1); expect(updateListener.callCount).toBe(1); @@ -258,7 +251,7 @@ describe('filter_manager', () => { test('global state should be accept array', async () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'gender', 'female'); - await filterManager.addFilters([f1, f2]); + filterManager.addFilters([f1, f2]); expect(filterManager.getAppFilters()).toHaveLength(0); expect(filterManager.getGlobalFilters()).toHaveLength(2); expect(globalStateStub.filters.length).toBe(2); @@ -268,7 +261,7 @@ describe('filter_manager', () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'gender', 'female'); - await filterManager.addFilters([f1, f2]); + filterManager.addFilters([f1, f2]); expect(filterManager.getAppFilters()).toHaveLength(0); expect(filterManager.getGlobalFilters()).toHaveLength(2); expect(updateListener.callCount).toBe(1); @@ -278,7 +271,7 @@ describe('filter_manager', () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); - await filterManager.addFilters([f1, f2]); + filterManager.addFilters([f1, f2]); // FILTER SHOULD BE ADDED ONLY ONCE, TO GLOBAL expect(filterManager.getAppFilters()).toHaveLength(0); @@ -290,7 +283,7 @@ describe('filter_manager', () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 38); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); - await filterManager.addFilters([f1, f2]); + filterManager.addFilters([f1, f2]); // FILTER SHOULD BE ADDED TWICE expect(filterManager.getAppFilters()).toHaveLength(1); @@ -302,7 +295,7 @@ describe('filter_manager', () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 38); f1.$state = undefined; - await filterManager.addFilters([f1], true); + filterManager.addFilters([f1], true); // FILTER SHOULD BE GLOBAL const f1Output = filterManager.getFilters()[0]; @@ -316,7 +309,7 @@ describe('filter_manager', () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 38); f1.$state = undefined; - await filterManager.addFilters([f1], false); + filterManager.addFilters([f1], false); // FILTER SHOULD BE APP const f1Output = filterManager.getFilters()[0]; @@ -328,8 +321,8 @@ describe('filter_manager', () => { test('should return app and global filters', async function() { const filters = getFiltersArray(); - await filterManager.addFilters(filters[0], false); - await filterManager.addFilters(filters[1], true); + filterManager.addFilters(filters[0], false); + filterManager.addFilters(filters[1], true); // global filters should be listed first let res = filterManager.getFilters(); @@ -343,16 +336,16 @@ describe('filter_manager', () => { expect(res[1].query).toEqual(filters[0].query); // should return updated version of filters - await filterManager.addFilters(filters[2], false); + filterManager.addFilters(filters[2], false); res = filterManager.getFilters(); expect(res).toHaveLength(3); }); test('should skip appStateStub filters that match globalStateStub filters', async function() { - await filterManager.addFilters(readyFilters, true); + filterManager.addFilters(readyFilters, true); const appFilter = _.cloneDeep(readyFilters[1]); - await filterManager.addFilters(appFilter, false); + filterManager.addFilters(appFilter, false); // global filters should be listed first const res = filterManager.getFilters(); @@ -367,7 +360,7 @@ describe('filter_manager', () => { const filter = _.cloneDeep(readyFilters[0]); filter.meta.negate = false; - await filterManager.addFilters(filter); + filterManager.addFilters(filter); expect(filterManager.getFilters()).toHaveLength(1); expect(filterManager.getFilters()[0]).toEqual(filter); @@ -375,7 +368,7 @@ describe('filter_manager', () => { const negatedFilter = _.cloneDeep(readyFilters[0]); negatedFilter.meta.negate = true; - await filterManager.addFilters(negatedFilter); + filterManager.addFilters(negatedFilter); // The negated filter should overwrite the positive one expect(globalStateStub.filters.length).toBe(1); expect(filterManager.getFilters()).toHaveLength(1); @@ -387,7 +380,7 @@ describe('filter_manager', () => { const negatedFilter = _.cloneDeep(readyFilters[0]); negatedFilter.meta.negate = true; - await filterManager.addFilters(negatedFilter); + filterManager.addFilters(negatedFilter); // The negated filter should overwrite the positive one expect(globalStateStub.filters.length).toBe(1); @@ -397,7 +390,7 @@ describe('filter_manager', () => { const filter = _.cloneDeep(readyFilters[0]); filter.meta.negate = false; - await filterManager.addFilters(filter); + filterManager.addFilters(filter); expect(globalStateStub.filters.length).toBe(1); expect(globalStateStub.filters[0]).toEqual(filter); }); @@ -414,7 +407,7 @@ describe('filter_manager', () => { next: fetchStub, }); - await filterManager.addFilters(readyFilters); + filterManager.addFilters(readyFilters); // updates should trigger state saves expect(appStateStub.save.callCount).toBe(1); @@ -429,26 +422,26 @@ describe('filter_manager', () => { describe('filter reconciliation', function() { test('should de-dupe appStateStub filters being added', async function() { const newFilter = _.cloneDeep(readyFilters[1]); - await filterManager.addFilters(readyFilters, false); + filterManager.addFilters(readyFilters, false); expect(appStateStub.filters.length).toBe(3); - await filterManager.addFilters(newFilter, false); + filterManager.addFilters(newFilter, false); expect(appStateStub.filters.length).toBe(3); }); test('should de-dupe globalStateStub filters being added', async function() { const newFilter = _.cloneDeep(readyFilters[1]); - await filterManager.addFilters(readyFilters, true); + filterManager.addFilters(readyFilters, true); expect(globalStateStub.filters.length).toBe(3); - await filterManager.addFilters(newFilter, true); + filterManager.addFilters(newFilter, true); expect(globalStateStub.filters.length).toBe(3); }); test('should de-dupe globalStateStub filters being set', async () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = _.cloneDeep(f1); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); expect(filterManager.getAppFilters()).toHaveLength(0); expect(filterManager.getGlobalFilters()).toHaveLength(1); expect(filterManager.getFilters()).toHaveLength(1); @@ -457,7 +450,7 @@ describe('filter_manager', () => { test('should de-dupe appStateStub filters being set', async () => { const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); const f2 = _.cloneDeep(f1); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); expect(filterManager.getAppFilters()).toHaveLength(1); expect(filterManager.getGlobalFilters()).toHaveLength(0); expect(filterManager.getFilters()).toHaveLength(1); @@ -465,14 +458,14 @@ describe('filter_manager', () => { test('should mutate global filters on appStateStub filter changes', async function() { const idx = 1; - await filterManager.addFilters(readyFilters, true); + filterManager.addFilters(readyFilters, true); const appFilter = _.cloneDeep(readyFilters[idx]); appFilter.meta.negate = true; appFilter.$state = { store: FilterStateStore.APP_STATE, }; - await filterManager.addFilters(appFilter); + filterManager.addFilters(appFilter); const res = filterManager.getFilters(); expect(res).toHaveLength(3); _.each(res, function(filter, i) { @@ -483,13 +476,13 @@ describe('filter_manager', () => { }); test('should merge conflicting appStateStub filters', async function() { - await filterManager.addFilters(readyFilters, true); + filterManager.addFilters(readyFilters, true); const appFilter = _.cloneDeep(readyFilters[1]); appFilter.meta.negate = true; appFilter.$state = { store: FilterStateStore.APP_STATE, }; - await filterManager.addFilters(appFilter, false); + filterManager.addFilters(appFilter, false); // global filters should be listed first const res = filterManager.getFilters(); @@ -508,8 +501,8 @@ describe('filter_manager', () => { f.meta.disabled = true; return f; }); - await filterManager.addFilters(disabledFilters, true); - await filterManager.addFilters(readyFilters, true); + filterManager.addFilters(disabledFilters, true); + filterManager.addFilters(readyFilters, true); const res = filterManager.getFilters(); expect(res).toHaveLength(3); @@ -527,8 +520,8 @@ describe('filter_manager', () => { f.meta.disabled = true; return f; }); - await filterManager.addFilters(disabledFilters, true); - await filterManager.addFilters(readyFilters, false); + filterManager.addFilters(disabledFilters, true); + filterManager.addFilters(readyFilters, false); const res = filterManager.getFilters(); expect(res).toHaveLength(3); @@ -543,7 +536,7 @@ describe('filter_manager', () => { describe('remove filters', () => { test('remove on empty should do nothing and not fire events', async () => { updateSubscription = filterManager.getUpdates$().subscribe(updateListener); - await filterManager.removeAll(); + filterManager.removeAll(); expect(updateListener.called).toBeFalsy(); expect(filterManager.getFilters()).toHaveLength(0); }); @@ -551,10 +544,10 @@ describe('filter_manager', () => { test('remove on full should clean and fire events', async () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'FEMALE'); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); updateSubscription = filterManager.getUpdates$().subscribe(updateListener); - await filterManager.removeAll(); + filterManager.removeAll(); expect(updateListener.called).toBeTruthy(); expect(filterManager.getFilters()).toHaveLength(0); }); @@ -563,7 +556,7 @@ describe('filter_manager', () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'FEMALE'); const f3 = getFilter(FilterStateStore.APP_STATE, false, false, 'country', 'US'); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); expect(filterManager.getFilters()).toHaveLength(2); updateSubscription = filterManager.getUpdates$().subscribe(updateListener); @@ -576,7 +569,7 @@ describe('filter_manager', () => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.APP_STATE, false, false, 'gender', 'FEMALE'); const f3 = getFilter(FilterStateStore.APP_STATE, false, false, 'country', 'US'); - await filterManager.setFilters([f1, f2, f3]); + filterManager.setFilters([f1, f2, f3]); expect(filterManager.getFilters()).toHaveLength(3); updateSubscription = filterManager.getUpdates$().subscribe(updateListener); @@ -586,14 +579,14 @@ describe('filter_manager', () => { }); test('should remove the filter from appStateStub', async function() { - await filterManager.addFilters(readyFilters, false); + filterManager.addFilters(readyFilters, false); expect(appStateStub.filters).toHaveLength(3); filterManager.removeFilter(readyFilters[0]); expect(appStateStub.filters).toHaveLength(2); }); test('should remove the filter from globalStateStub', async function() { - await filterManager.addFilters(readyFilters, true); + filterManager.addFilters(readyFilters, true); expect(globalStateStub.filters).toHaveLength(3); filterManager.removeFilter(readyFilters[0]); expect(globalStateStub.filters).toHaveLength(2); @@ -603,7 +596,7 @@ describe('filter_manager', () => { const updateStub = jest.fn(); const fetchStub = jest.fn(); - await filterManager.addFilters(readyFilters, false); + filterManager.addFilters(readyFilters, false); filterManager.getUpdates$().subscribe({ next: updateStub, @@ -621,8 +614,8 @@ describe('filter_manager', () => { }); test('should remove matching filters', async function() { - await filterManager.addFilters([readyFilters[0], readyFilters[1]], true); - await filterManager.addFilters([readyFilters[2]], false); + filterManager.addFilters([readyFilters[0], readyFilters[1]], true); + filterManager.addFilters([readyFilters[2]], false); filterManager.removeFilter(readyFilters[0]); @@ -631,8 +624,8 @@ describe('filter_manager', () => { }); test('should remove matching filters by comparison', async function() { - await filterManager.addFilters([readyFilters[0], readyFilters[1]], true); - await filterManager.addFilters([readyFilters[2]], false); + filterManager.addFilters([readyFilters[0], readyFilters[1]], true); + filterManager.addFilters([readyFilters[2]], false); filterManager.removeFilter(_.cloneDeep(readyFilters[0])); @@ -645,8 +638,8 @@ describe('filter_manager', () => { }); test('should do nothing with a non-matching filter', async function() { - await filterManager.addFilters([readyFilters[0], readyFilters[1]], true); - await filterManager.addFilters([readyFilters[2]], false); + filterManager.addFilters([readyFilters[0], readyFilters[1]], true); + filterManager.addFilters([readyFilters[2]], false); const missedFilter = _.cloneDeep(readyFilters[0]); missedFilter.meta.negate = !readyFilters[0].meta.negate; @@ -657,12 +650,12 @@ describe('filter_manager', () => { }); test('should remove all the filters from both states', async function() { - await filterManager.addFilters([readyFilters[0], readyFilters[1]], true); - await filterManager.addFilters([readyFilters[2]], false); + filterManager.addFilters([readyFilters[0], readyFilters[1]], true); + filterManager.addFilters([readyFilters[2]], false); expect(globalStateStub.filters).toHaveLength(2); expect(appStateStub.filters).toHaveLength(1); - await filterManager.removeAll(); + filterManager.removeAll(); expect(globalStateStub.filters).toHaveLength(0); expect(appStateStub.filters).toHaveLength(0); }); @@ -670,7 +663,7 @@ describe('filter_manager', () => { describe('invert', () => { test('should fire the update and fetch events', async function() { - await filterManager.addFilters(readyFilters); + filterManager.addFilters(readyFilters); expect(filterManager.getFilters()).toHaveLength(3); const updateStub = jest.fn(); @@ -684,7 +677,7 @@ describe('filter_manager', () => { }); readyFilters[1].meta.negate = !readyFilters[1].meta.negate; - await filterManager.addFilters(readyFilters[1]); + filterManager.addFilters(readyFilters[1]); expect(filterManager.getFilters()).toHaveLength(3); expect(fetchStub).toBeCalledTimes(1); expect(updateStub).toBeCalledTimes(1); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts index 6e5fa37113451..b3d6bd6873f50 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts @@ -29,17 +29,14 @@ import { mapAndFlattenFilters } from './lib/map_and_flatten_filters'; import { uniqFilters } from './lib/uniq_filters'; import { onlyDisabledFiltersChanged } from './lib/only_disabled'; import { PartitionedFilters } from './partitioned_filters'; -import { IndexPatterns } from '../../index_patterns'; export class FilterManager { - private indexPatterns: IndexPatterns; private filters: Filter[] = []; private updated$: Subject = new Subject(); private fetch$: Subject = new Subject(); private uiSettings: UiSettingsClientContract; - constructor(indexPatterns: IndexPatterns, uiSettings: UiSettingsClientContract) { - this.indexPatterns = indexPatterns; + constructor(uiSettings: UiSettingsClientContract) { this.uiSettings = uiSettings; } @@ -127,7 +124,7 @@ export class FilterManager { /* Setters */ - public async addFilters(filters: Filter[] | Filter, pinFilterStatus?: boolean) { + public addFilters(filters: Filter[] | Filter, pinFilterStatus?: boolean) { if (!Array.isArray(filters)) { filters = [filters]; } @@ -145,7 +142,7 @@ export class FilterManager { const store = pinFilterStatus ? FilterStateStore.GLOBAL_STATE : FilterStateStore.APP_STATE; FilterManager.setFiltersStore(filters, store); - const mappedFilters = await mapAndFlattenFilters(this.indexPatterns, filters); + const mappedFilters = mapAndFlattenFilters(filters); // This is where we add new filters to the correct place (app \ global) const newPartitionedFilters = FilterManager.partitionFilters(mappedFilters); @@ -157,8 +154,8 @@ export class FilterManager { this.handleStateUpdate(newFilters); } - public async setFilters(newFilters: Filter[]) { - const mappedFilters = await mapAndFlattenFilters(this.indexPatterns, newFilters); + public setFilters(newFilters: Filter[]) { + const mappedFilters = mapAndFlattenFilters(newFilters); const newPartitionedFilters = FilterManager.partitionFilters(mappedFilters); const mergedFilters = this.mergeIncomingFilters(newPartitionedFilters); this.handleStateUpdate(mergedFilters); @@ -176,8 +173,8 @@ export class FilterManager { } } - public async removeAll() { - await this.setFilters([]); + public removeAll() { + this.setFilters([]); } public static setFiltersStore(filters: Filter[], store: FilterStateStore) { diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts index 84f336506b375..d1cad9a812399 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts @@ -22,11 +22,9 @@ import sinon from 'sinon'; import { FilterStateStore } from '@kbn/es-query'; import { FilterStateManager } from './filter_state_manager'; -import { IndexPatterns } from '../../index_patterns'; import { StubState } from './test_helpers/stub_state'; import { getFilter } from './test_helpers/get_stub_filter'; import { FilterManager } from './filter_manager'; -import { StubIndexPatterns } from './test_helpers/stub_index_pattern'; import { coreMock } from '../../../../../../core/public/mocks'; const setupMock = coreMock.createSetup(); @@ -44,11 +42,7 @@ describe('filter_state_manager', () => { beforeEach(() => { appStateStub = new StubState(); globalStateStub = new StubState(); - const indexPatterns = new StubIndexPatterns(); - filterManager = new FilterManager( - (indexPatterns as unknown) as IndexPatterns, - setupMock.uiSettings - ); + filterManager = new FilterManager(setupMock.uiSettings); }); describe('app_state_undefined', () => { @@ -81,7 +75,7 @@ describe('filter_state_manager', () => { const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); sinon.assert.notCalled(appStateStub.save); sinon.assert.calledOnce(globalStateStub.save); @@ -89,10 +83,11 @@ describe('filter_state_manager', () => { }); describe('app_state_defined', () => { + let filterStateManager: FilterStateManager; beforeEach(() => { // FilterStateManager is tested indirectly. // Therefore, we don't need it's instance. - new FilterStateManager( + filterStateManager = new FilterStateManager( globalStateStub, () => { return appStateStub; @@ -101,6 +96,10 @@ describe('filter_state_manager', () => { ); }); + afterEach(() => { + filterStateManager.destroy(); + }); + test('should update filter manager global filters', done => { const f1 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); globalStateStub.filters.push(f1); @@ -123,27 +122,27 @@ describe('filter_state_manager', () => { }, 100); }); - test('should update URL when filter manager filters are set', async () => { + test('should update URL when filter manager filters are set', () => { appStateStub.save = sinon.stub(); globalStateStub.save = sinon.stub(); const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); - await filterManager.setFilters([f1, f2]); + filterManager.setFilters([f1, f2]); sinon.assert.calledOnce(appStateStub.save); sinon.assert.calledOnce(globalStateStub.save); }); - test('should update URL when filter manager filters are added', async () => { + test('should update URL when filter manager filters are added', () => { appStateStub.save = sinon.stub(); globalStateStub.save = sinon.stub(); const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); const f2 = getFilter(FilterStateStore.GLOBAL_STATE, false, false, 'age', 34); - await filterManager.addFilters([f1, f2]); + filterManager.addFilters([f1, f2]); sinon.assert.calledOnce(appStateStub.save); sinon.assert.calledOnce(globalStateStub.save); @@ -156,13 +155,13 @@ describe('filter_state_manager', () => { ** would cause filter state manager detects those changes ** And triggers *another* filter manager update. */ - test('should NOT re-trigger filter manager', async done => { + test('should NOT re-trigger filter manager', done => { const f1 = getFilter(FilterStateStore.APP_STATE, false, false, 'age', 34); filterManager.setFilters([f1]); const setFiltersSpy = sinon.spy(filterManager, 'setFilters'); f1.meta.negate = true; - await filterManager.setFilters([f1]); + filterManager.setFilters([f1]); setTimeout(() => { expect(setFiltersSpy.callCount).toEqual(1); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.test.ts index 7f9dbb1ea2609..c0c509634aba2 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.test.ts @@ -31,27 +31,27 @@ describe('filter manager utilities', () => { }); describe('generateMappingChain()', () => { - test('should create a chaining function which calls the next function if the promise is rejected', async () => { + test('should create a chaining function which calls the next function if the error is thrown', async () => { const filter: Filter = buildEmptyFilter(true); - mapping.rejects(filter); - next.resolves('good'); + mapping.throws(filter); + next.returns('good'); const chain = generateMappingChain(mapping, next); - const result = await chain(filter); + const result = chain(filter); expect(result).toBe('good'); sinon.assert.calledOnce(next); }); - test('should create a chaining function which DOES NOT call the next function if the result is resolved', async () => { + test('should create a chaining function which DOES NOT call the next function if the result is returned', async () => { const filter: Filter = buildEmptyFilter(true); - mapping.resolves('good'); - next.resolves('bad'); + mapping.returns('good'); + next.returns('bad'); const chain = generateMappingChain(mapping, next); - const result = await chain(filter); + const result = chain(filter); expect(result).toBe('good'); }); @@ -59,10 +59,10 @@ describe('filter manager utilities', () => { test('should resolve result for the mapping function', async () => { const filter: Filter = buildEmptyFilter(true); - mapping.resolves({ key: 'test', value: 'example' }); + mapping.returns({ key: 'test', value: 'example' }); const chain = generateMappingChain(mapping, next); - const result = await chain(filter); + const result = chain(filter); sinon.assert.notCalled(next); expect(result).toEqual({ key: 'test', value: 'example' }); @@ -72,10 +72,10 @@ describe('filter manager utilities', () => { // @ts-ignore const filter: Filter = { test: 'example' }; - mapping.resolves({ key: 'test', value: 'example' }); + mapping.returns({ key: 'test', value: 'example' }); const chain = generateMappingChain(mapping, next); - const result = await chain(filter); + const result = chain(filter); sinon.assert.calledOnce(mapping); expect(mapping.args[0][0]).toEqual({ test: 'example' }); @@ -86,29 +86,31 @@ describe('filter manager utilities', () => { test('should resolve result for the next function', async () => { const filter: Filter = buildEmptyFilter(true); - mapping.rejects(filter); - next.resolves({ key: 'test', value: 'example' }); + mapping.throws(filter); + next.returns({ key: 'test', value: 'example' }); const chain = generateMappingChain(mapping, next); - const result = await chain(filter); + const result = chain(filter); sinon.assert.calledOnce(mapping); sinon.assert.calledOnce(next); expect(result).toEqual({ key: 'test', value: 'example' }); }); - test('should reject with an error if no functions match', async done => { + test('should throw an error if no functions match', async done => { const filter: Filter = buildEmptyFilter(true); - mapping.rejects(filter); + mapping.throws(filter); const chain = generateMappingChain(mapping); - chain(filter).catch(err => { + try { + chain(filter); + } catch (err) { expect(err).toBeInstanceOf(Error); expect(err.message).toBe('No mappings have been found for filter.'); done(); - }); + } }); }); }); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.ts index 38c83f3f4a821..760270edd7170 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/generate_mapping_chain.ts @@ -23,12 +23,14 @@ const noop = () => { }; export const generateMappingChain = (fn: Function, next: Function = noop) => { - return async (filter: Filter) => { - return await fn(filter).catch((result: any) => { + return (filter: Filter) => { + try { + return fn(filter); + } catch (result) { if (result === filter) { return next(filter); } throw result; - }); + } }; }; diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.test.ts index c9fcc745d48e3..fce2aa0373ebe 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.test.ts @@ -19,16 +19,16 @@ import { Filter } from '@kbn/es-query'; import { mapAndFlattenFilters } from './map_and_flatten_filters'; -import { StubIndexPatterns } from '../test_helpers/stub_index_pattern'; -import { IndexPatterns } from '../../../index_patterns'; describe('filter manager utilities', () => { describe('mapAndFlattenFilters()', () => { - let mockIndexPatterns: unknown; let filters: unknown; + function getDisplayName(filter: Filter) { + return typeof filter.meta.value === 'function' ? filter.meta.value() : filter.meta.value; + } + beforeEach(() => { - mockIndexPatterns = new StubIndexPatterns(); filters = [ null, [ @@ -44,11 +44,8 @@ describe('filter manager utilities', () => { ]; }); - test('should map and flatten the filters', async () => { - const results = await mapAndFlattenFilters( - mockIndexPatterns as IndexPatterns, - filters as Filter[] - ); + test('should map and flatten the filters', () => { + const results = mapAndFlattenFilters(filters as Filter[]); expect(results).toHaveLength(5); expect(results[0]).toHaveProperty('meta'); @@ -63,9 +60,11 @@ describe('filter manager utilities', () => { expect(results[2].meta).toHaveProperty('key', 'query'); expect(results[2].meta).toHaveProperty('value', 'foo:bar'); expect(results[3].meta).toHaveProperty('key', 'bytes'); - expect(results[3].meta).toHaveProperty('value', '1024 to 2048'); + expect(results[3].meta).toHaveProperty('value'); + expect(getDisplayName(results[3])).toBe('1024 to 2048'); expect(results[4].meta).toHaveProperty('key', '_type'); - expect(results[4].meta).toHaveProperty('value', 'apache'); + expect(results[4].meta).toHaveProperty('value'); + expect(getDisplayName(results[4])).toBe('apache'); }); }); }); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.ts index 1481295896187..b350c3957b142 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_and_flatten_filters.ts @@ -20,10 +20,7 @@ import { compact, flatten } from 'lodash'; import { Filter } from '@kbn/es-query'; import { mapFilter } from './map_filter'; -import { IndexPatterns } from '../../../index_patterns'; -export const mapAndFlattenFilters = (indexPatterns: IndexPatterns, filters: Filter[]) => { - const promises = compact(flatten(filters)).map((item: Filter) => mapFilter(indexPatterns, item)); - - return Promise.all(promises); +export const mapAndFlattenFilters = (filters: Filter[]) => { + return compact(flatten(filters)).map((item: Filter) => mapFilter(item)); }; diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.test.ts index 78f3b40bbbe2c..acb6e89711033 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.test.ts @@ -23,7 +23,7 @@ describe('filter manager utilities', () => { describe('mapDefault()', () => { test('should return the key and value for matching filters', async () => { const filter: CustomFilter = buildQueryFilter({ match_all: {} }, 'index'); - const result = await mapDefault(filter); + const result = mapDefault(filter); expect(result).toHaveProperty('key', 'query'); expect(result).toHaveProperty('value', '{"match_all":{}}'); @@ -33,7 +33,7 @@ describe('filter manager utilities', () => { const filter = buildEmptyFilter(true) as CustomFilter; try { - await mapDefault(filter); + mapDefault(filter); } catch (e) { expect(e).toBe(filter); } diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.ts index bdfce4e753f65..70c191879c22e 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_default.ts @@ -20,7 +20,7 @@ import { Filter, FILTERS } from '@kbn/es-query'; import { find, keys, get } from 'lodash'; -export const mapDefault = async (filter: Filter) => { +export const mapDefault = (filter: Filter) => { const metaProperty = /(^\$|meta)/; const key = find(keys(filter), item => !item.match(metaProperty)); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.test.ts index 670056b68234f..c352d3e2b9a73 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.test.ts @@ -24,7 +24,7 @@ describe('filter manager utilities', () => { describe('mapExists()', () => { test('should return the key and value for matching filters', async () => { const filter: ExistsFilter = buildExistsFilter({ name: '_type' }, 'index'); - const result = await mapExists(filter); + const result = mapExists(filter); expect(result).toHaveProperty('key', '_type'); expect(result).toHaveProperty('value', 'exists'); @@ -34,7 +34,7 @@ describe('filter manager utilities', () => { const filter = buildEmptyFilter(true) as ExistsFilter; try { - await mapQueryString(filter); + mapQueryString(filter); } catch (e) { expect(e).toBe(filter); done(); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.ts index bf793378342c7..d539219a1ca24 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_exists.ts @@ -20,7 +20,7 @@ import { Filter, isExistsFilter, FILTERS } from '@kbn/es-query'; import { get } from 'lodash'; -export const mapExists = async (filter: Filter) => { +export const mapExists = (filter: Filter) => { if (isExistsFilter(filter)) { return { type: FILTERS.EXISTS, diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.test.ts index ca701454481ee..ad1c4457f673e 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.test.ts @@ -19,17 +19,11 @@ import { Filter } from '@kbn/es-query'; import { mapFilter } from './map_filter'; -import { StubIndexPatterns } from '../test_helpers/stub_index_pattern'; -import { IndexPatterns } from '../../../index_patterns'; describe('filter manager utilities', () => { - let indexPatterns: IndexPatterns; - - beforeEach(() => { - const stubIndexPatterns: unknown = new StubIndexPatterns(); - - indexPatterns = stubIndexPatterns as IndexPatterns; - }); + function getDisplayName(filter: Filter) { + return typeof filter.meta.value === 'function' ? filter.meta.value() : filter.meta.value; + } describe('mapFilter()', () => { test('should map query filters', async () => { @@ -37,44 +31,48 @@ describe('filter manager utilities', () => { meta: { index: 'logstash-*' }, query: { match: { _type: { query: 'apache' } } }, }; - const after = await mapFilter(indexPatterns, before as Filter); + const after = mapFilter(before as Filter); expect(after).toHaveProperty('meta'); expect(after.meta).toHaveProperty('key', '_type'); - expect(after.meta).toHaveProperty('value', 'apache'); + expect(after.meta).toHaveProperty('value'); + expect(getDisplayName(after)).toBe('apache'); expect(after.meta).toHaveProperty('disabled', false); expect(after.meta).toHaveProperty('negate', false); }); test('should map exists filters', async () => { const before: any = { meta: { index: 'logstash-*' }, exists: { field: '@timestamp' } }; - const after = await mapFilter(indexPatterns, before as Filter); + const after = mapFilter(before as Filter); expect(after).toHaveProperty('meta'); expect(after.meta).toHaveProperty('key', '@timestamp'); - expect(after.meta).toHaveProperty('value', 'exists'); + expect(after.meta).toHaveProperty('value'); + expect(getDisplayName(after)).toBe('exists'); expect(after.meta).toHaveProperty('disabled', false); expect(after.meta).toHaveProperty('negate', false); }); test('should map missing filters', async () => { const before: any = { meta: { index: 'logstash-*' }, missing: { field: '@timestamp' } }; - const after = await mapFilter(indexPatterns, before as Filter); + const after = mapFilter(before as Filter); expect(after).toHaveProperty('meta'); expect(after.meta).toHaveProperty('key', '@timestamp'); - expect(after.meta).toHaveProperty('value', 'missing'); + expect(after.meta).toHaveProperty('value'); + expect(getDisplayName(after)).toBe('missing'); expect(after.meta).toHaveProperty('disabled', false); expect(after.meta).toHaveProperty('negate', false); }); test('should map json filter', async () => { const before: any = { meta: { index: 'logstash-*' }, query: { match_all: {} } }; - const after = await mapFilter(indexPatterns, before as Filter); + const after = mapFilter(before as Filter); expect(after).toHaveProperty('meta'); expect(after.meta).toHaveProperty('key', 'query'); - expect(after.meta).toHaveProperty('value', '{"match_all":{}}'); + expect(after.meta).toHaveProperty('value'); + expect(getDisplayName(after)).toBe('{"match_all":{}}'); expect(after.meta).toHaveProperty('disabled', false); expect(after.meta).toHaveProperty('negate', false); }); @@ -83,7 +81,7 @@ describe('filter manager utilities', () => { const before: any = { meta: { index: 'logstash-*' } }; try { - await mapFilter(indexPatterns, before as Filter); + mapFilter(before as Filter); } catch (e) { expect(e).toBeInstanceOf(Error); expect(e.message).toBe('No mappings have been found for filter.'); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.ts index f607595915a52..c0d251e647fd1 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_filter.ts @@ -19,7 +19,6 @@ import { Filter } from '@kbn/es-query'; import { reduceRight } from 'lodash'; -import { IndexPatterns } from '../../../index_patterns'; import { mapMatchAll } from './map_match_all'; import { mapPhrase } from './map_phrase'; @@ -33,7 +32,7 @@ import { mapGeoPolygon } from './map_geo_polygon'; import { mapDefault } from './map_default'; import { generateMappingChain } from './generate_mapping_chain'; -export async function mapFilter(indexPatterns: IndexPatterns, filter: Filter) { +export function mapFilter(filter: Filter) { /** Mappers **/ // Each mapper is a simple promise function that test if the mapper can @@ -52,14 +51,14 @@ export async function mapFilter(indexPatterns: IndexPatterns, filter: Filter) { // and add it here. ProTip: These are executed in order listed const mappers = [ mapMatchAll, - mapRange(indexPatterns), - mapPhrase(indexPatterns), + mapRange, + mapPhrase, mapPhrases, mapExists, mapMissing, mapQueryString, - mapGeoBoundingBox(indexPatterns), - mapGeoPolygon(indexPatterns), + mapGeoBoundingBox, + mapGeoPolygon, mapDefault, ]; @@ -74,13 +73,15 @@ export async function mapFilter(indexPatterns: IndexPatterns, filter: Filter) { (memo, map) => generateMappingChain(map, memo), noop ); - const mapped = await mapFn(filter); + + const mapped = mapFn(filter); // Map the filter into an object with the key and value exposed so it's // easier to work with in the template filter.meta = filter.meta || {}; filter.meta.type = mapped.type; filter.meta.key = mapped.key; + // Display value or formatter function. filter.meta.value = mapped.value; filter.meta.params = mapped.params; filter.meta.disabled = Boolean(filter.meta.disabled); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.test.ts index 51b38c343d2a9..c3c99e6f6c4a3 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.test.ts @@ -18,19 +18,10 @@ */ import { mapGeoBoundingBox } from './map_geo_bounding_box'; -import { StubIndexPatterns } from '../test_helpers/stub_index_pattern'; -import { IndexPatterns } from '../../../index_patterns'; +import { Filter, GeoBoundingBoxFilter } from '@kbn/es-query'; describe('filter manager utilities', () => { describe('mapGeoBoundingBox()', () => { - let mapGeoBoundingBoxFn: Function; - - beforeEach(() => { - const indexPatterns: unknown = new StubIndexPatterns(); - - mapGeoBoundingBoxFn = mapGeoBoundingBox(indexPatterns as IndexPatterns); - }); - test('should return the key and value for matching filters with bounds', async () => { const filter = { meta: { @@ -43,16 +34,20 @@ describe('filter manager utilities', () => { bottom_right: { lat: 15, lon: 20 }, }, }, - }; + } as GeoBoundingBoxFilter; - const result = await mapGeoBoundingBoxFn(filter); + const result = mapGeoBoundingBox(filter); expect(result).toHaveProperty('key', 'point'); expect(result).toHaveProperty('value'); - // remove html entities and non-alphanumerics to get the gist of the value - expect(result.value.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10tolat15lon20' - ); + + if (result.value) { + const displayName = result.value(); + // remove html entities and non-alphanumerics to get the gist of the value + expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( + 'lat5lon10tolat15lon20' + ); + } }); test('should return the key and value even when using ignore_unmapped', async () => { @@ -68,25 +63,29 @@ describe('filter manager utilities', () => { bottom_right: { lat: 15, lon: 20 }, }, }, - }; - const result = await mapGeoBoundingBoxFn(filter); + } as GeoBoundingBoxFilter; + const result = mapGeoBoundingBox(filter); expect(result).toHaveProperty('key', 'point'); expect(result).toHaveProperty('value'); - // remove html entities and non-alphanumerics to get the gist of the value - expect(result.value.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10tolat15lon20' - ); + + if (result.value) { + const displayName = result.value(); + // remove html entities and non-alphanumerics to get the gist of the value + expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( + 'lat5lon10tolat15lon20' + ); + } }); test('should return undefined for none matching', async done => { const filter = { meta: { index: 'logstash-*' }, query: { query_string: { query: 'foo:bar' } }, - }; + } as Filter; try { - await mapGeoBoundingBoxFn(filter); + mapGeoBoundingBox(filter); } catch (e) { expect(e).toBe(filter); done(); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.ts index de6b63c287cc4..1f9b8cd842509 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_bounding_box.ts @@ -16,58 +16,46 @@ * specific language governing permissions and limitations * under the License. */ -import { get } from 'lodash'; -import { GeoBoundingBoxFilter, Filter, FILTERS, isGeoBoundingBoxFilter } from '@kbn/es-query'; -import { IndexPatterns, IndexPattern } from '../../../index_patterns'; -import { SavedObjectNotFound } from '../../../../../../../plugins/kibana_utils/public'; - -const getFormattedValue = (params: any, key: string, indexPattern?: IndexPattern) => { - const formatter: any = - indexPattern && key && get(indexPattern, ['fields', 'byName', key, 'format']); - - return formatter - ? { - topLeft: formatter.convert(params.top_left), - bottomRight: formatter.convert(params.bottom_right), - } - : { - topLeft: JSON.stringify(params.top_left), - bottomRight: JSON.stringify(params.bottom_right), - }; +import { + GeoBoundingBoxFilter, + Filter, + FILTERS, + isGeoBoundingBoxFilter, + FilterValueFormatter, +} from '@kbn/es-query'; + +const getFormattedValueFn = (params: any) => { + return (formatter?: FilterValueFormatter) => { + const corners = formatter + ? { + topLeft: formatter.convert(params.top_left), + bottomRight: formatter.convert(params.bottom_right), + } + : { + topLeft: JSON.stringify(params.top_left), + bottomRight: JSON.stringify(params.bottom_right), + }; + + return corners.topLeft + ' to ' + corners.bottomRight; + }; }; -const getParams = (filter: GeoBoundingBoxFilter, indexPattern?: IndexPattern) => { +const getParams = (filter: GeoBoundingBoxFilter) => { const key = Object.keys(filter.geo_bounding_box).filter(k => k !== 'ignore_unmapped')[0]; const params = filter.geo_bounding_box[key]; - const { topLeft, bottomRight } = getFormattedValue(params, key, indexPattern); return { key, params, type: FILTERS.GEO_BOUNDING_BOX, - value: topLeft + ' to ' + bottomRight, + value: getFormattedValueFn(params), }; }; -export const mapGeoBoundingBox = (indexPatterns: IndexPatterns) => { - return async (filter: Filter) => { - if (!isGeoBoundingBoxFilter(filter)) { - throw filter; - } +export const mapGeoBoundingBox = (filter: Filter) => { + if (!isGeoBoundingBoxFilter(filter)) { + throw filter; + } - try { - let indexPattern; - - if (filter.meta.index) { - indexPattern = await indexPatterns.get(filter.meta.index); - } - - return getParams(filter, indexPattern); - } catch (error) { - if (error instanceof SavedObjectNotFound) { - return getParams(filter); - } - throw error; - } - }; + return getParams(filter); }; diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.test.ts index b9427d541e703..ee4f9b295d682 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.test.ts @@ -17,19 +17,10 @@ * under the License. */ import { mapGeoPolygon } from './map_geo_polygon'; -import { StubIndexPatterns } from '../test_helpers/stub_index_pattern'; -import { IndexPatterns } from '../../../index_patterns'; +import { GeoPolygonFilter, Filter } from '@kbn/es-query'; describe('filter manager utilities', () => { describe('mapGeoPolygon()', () => { - let mapGeoPolygonFn: Function; - - beforeEach(() => { - const indexPatterns: unknown = new StubIndexPatterns(); - - mapGeoPolygonFn = mapGeoPolygon(indexPatterns as IndexPatterns); - }); - test('should return the key and value for matching filters with bounds', async () => { const filter = { meta: { @@ -40,17 +31,20 @@ describe('filter manager utilities', () => { points: [{ lat: 5, lon: 10 }, { lat: 15, lon: 20 }], }, }, - }; + } as GeoPolygonFilter; - const result = await mapGeoPolygonFn(filter); + const result = mapGeoPolygon(filter); expect(result).toHaveProperty('key', 'point'); expect(result).toHaveProperty('value'); - // remove html entities and non-alphanumerics to get the gist of the value - expect(result.value.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10lat15lon20' - ); + if (result.value) { + const displayName = result.value(); + // remove html entities and non-alphanumerics to get the gist of the value + expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( + 'lat5lon10lat15lon20' + ); + } }); test('should return the key and value even when using ignore_unmapped', async () => { @@ -64,26 +58,29 @@ describe('filter manager utilities', () => { points: [{ lat: 5, lon: 10 }, { lat: 15, lon: 20 }], }, }, - }; - const result = await mapGeoPolygonFn(filter); + } as GeoPolygonFilter; + const result = mapGeoPolygon(filter); expect(result).toHaveProperty('key', 'point'); expect(result).toHaveProperty('value'); - // remove html entities and non-alphanumerics to get the gist of the value - expect(result.value.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( - 'lat5lon10lat15lon20' - ); + if (result.value) { + const displayName = result.value(); + // remove html entities and non-alphanumerics to get the gist of the value + expect(displayName.replace(/&[a-z]+?;/g, '').replace(/[^a-z0-9]/g, '')).toBe( + 'lat5lon10lat15lon20' + ); + } }); test('should return undefined for none matching', async done => { const filter = { meta: { index: 'logstash-*' }, query: { query_string: { query: 'foo:bar' } }, - }; + } as Filter; try { - await mapGeoPolygonFn(filter); + mapGeoPolygon(filter); } catch (e) { expect(e).toBe(filter); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.ts index b49e0c7314228..03ce4130d0c97 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_geo_polygon.ts @@ -16,21 +16,25 @@ * specific language governing permissions and limitations * under the License. */ -import { get } from 'lodash'; -import { GeoPolygonFilter, Filter, FILTERS, isGeoPolygonFilter } from '@kbn/es-query'; -import { SavedObjectNotFound } from '../../../../../../../plugins/kibana_utils/public'; -import { IndexPatterns, IndexPattern } from '../../../index_patterns'; +import { + GeoPolygonFilter, + Filter, + FILTERS, + isGeoPolygonFilter, + FilterValueFormatter, +} from '@kbn/es-query'; const POINTS_SEPARATOR = ', '; -const getFormattedValue = (value: any, key: string, indexPattern?: IndexPattern) => { - const formatter: any = - indexPattern && key && get(indexPattern, ['fields', 'byName', key, 'format']); - - return formatter ? formatter.convert(value) : JSON.stringify(value); +const getFormattedValueFn = (points: string[]) => { + return (formatter?: FilterValueFormatter) => { + return points + .map((point: string) => (formatter ? formatter.convert(point) : JSON.stringify(point))) + .join(POINTS_SEPARATOR); + }; }; -function getParams(filter: GeoPolygonFilter, indexPattern?: IndexPattern) { +function getParams(filter: GeoPolygonFilter) { const key = Object.keys(filter.geo_polygon).filter(k => k !== 'ignore_unmapped')[0]; const params = filter.geo_polygon[key]; @@ -38,31 +42,13 @@ function getParams(filter: GeoPolygonFilter, indexPattern?: IndexPattern) { key, params, type: FILTERS.GEO_POLYGON, - value: (params.points || []) - .map((point: string) => getFormattedValue(point, key, indexPattern)) - .join(POINTS_SEPARATOR), + value: getFormattedValueFn(params.points || []), }; } -export function mapGeoPolygon(indexPatterns: IndexPatterns) { - return async function(filter: Filter) { - if (!isGeoPolygonFilter(filter)) { - throw filter; - } - - try { - let indexPattern; - - if (filter.meta.index) { - indexPattern = await indexPatterns.get(filter.meta.index); - } - - return getParams(filter, indexPattern); - } catch (error) { - if (error instanceof SavedObjectNotFound) { - return getParams(filter); - } - throw error; - } - }; +export function mapGeoPolygon(filter: Filter) { + if (!isGeoPolygonFilter(filter)) { + throw filter; + } + return getParams(filter); } diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.test.ts index 1139f98f51335..2f0641598a2ce 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.test.ts @@ -41,7 +41,7 @@ describe('filter_manager/lib', () => { delete filter.match_all; try { - await mapMatchAll(filter); + mapMatchAll(filter); } catch (e) { expect(e).toBe(filter); done(); @@ -51,13 +51,13 @@ describe('filter_manager/lib', () => { describe('when given a match_all filter', () => { test('key is set to meta field', async () => { - const result = await mapMatchAll(filter); + const result = mapMatchAll(filter); expect(result).toHaveProperty('key', filter.meta.field); }); test('value is set to meta formattedValue', async () => { - const result = await mapMatchAll(filter); + const result = mapMatchAll(filter); expect(result).toHaveProperty('value', filter.meta.formattedValue); }); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.ts index a08b60127ac05..a1387e6dbe457 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_match_all.ts @@ -18,7 +18,7 @@ */ import { Filter, FILTERS, isMatchAllFilter } from '@kbn/es-query'; -export const mapMatchAll = async (filter: Filter) => { +export const mapMatchAll = (filter: Filter) => { if (isMatchAllFilter(filter)) { return { type: FILTERS.MATCH_ALL, diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.test.ts index d8f7faa8cd9d9..ca23f25826906 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.test.ts @@ -26,7 +26,7 @@ describe('filter manager utilities', () => { missing: { field: '_type' }, ...buildEmptyFilter(true), }; - const result = await mapMissing(filter); + const result = mapMissing(filter); expect(result).toHaveProperty('key', '_type'); expect(result).toHaveProperty('value', 'missing'); @@ -36,7 +36,7 @@ describe('filter manager utilities', () => { const filter = buildEmptyFilter(true) as ExistsFilter; try { - await mapMissing(filter); + mapMissing(filter); } catch (e) { expect(e).toBe(filter); done(); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.ts index e398917b7f9be..861a84ed61646 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_missing.ts @@ -18,7 +18,7 @@ */ import { Filter, FILTERS, isMissingFilter } from '@kbn/es-query'; -export const mapMissing = async (filter: Filter) => { +export const mapMissing = (filter: Filter) => { if (isMissingFilter(filter)) { return { type: FILTERS.MISSING, diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.test.ts index e3eae169e3607..c95a2529add14 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.test.ts @@ -17,38 +17,33 @@ * under the License. */ import { mapPhrase } from './map_phrase'; -import { StubIndexPatterns } from '../test_helpers/stub_index_pattern'; -import { IndexPatterns } from '../../../index_patterns'; +import { PhraseFilter, Filter } from '@kbn/es-query'; describe('filter manager utilities', () => { describe('mapPhrase()', () => { - let mapPhraseFn: Function; - - beforeEach(() => { - const indexPatterns: unknown = new StubIndexPatterns(); - - mapPhraseFn = mapPhrase(indexPatterns as IndexPatterns); - }); - test('should return the key and value for matching filters', async () => { const filter = { meta: { index: 'logstash-*' }, query: { match: { _type: { query: 'apache', type: 'phrase' } } }, - }; - const result = await mapPhraseFn(filter); + } as PhraseFilter; + const result = mapPhrase(filter); + expect(result).toHaveProperty('value'); expect(result).toHaveProperty('key', '_type'); - expect(result).toHaveProperty('value', 'apache'); + if (result.value) { + const displayName = result.value(); + expect(displayName).toBe('apache'); + } }); test('should return undefined for none matching', async done => { const filter = { meta: { index: 'logstash-*' }, query: { query_string: { query: 'foo:bar' } }, - }; + } as Filter; try { - await mapPhraseFn(filter); + mapPhrase(filter); } catch (e) { expect(e).toBe(filter); done(); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.ts index 3ebe363f46df5..4f6ff9e0d9199 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrase.ts @@ -24,21 +24,19 @@ import { FILTERS, isPhraseFilter, isScriptedPhraseFilter, + FilterValueFormatter, } from '@kbn/es-query'; -import { SavedObjectNotFound } from '../../../../../../../plugins/kibana_utils/public'; -import { IndexPatterns, IndexPattern } from '../../../index_patterns'; const getScriptedPhraseValue = (filter: PhraseFilter) => get(filter, ['script', 'script', 'params', 'value']); -const getFormattedValue = (value: any, key: string, indexPattern?: IndexPattern) => { - const formatter: any = - indexPattern && key && get(indexPattern, ['fields', 'byName', key, 'format']); - - return formatter ? formatter.convert(value) : value; +const getFormattedValueFn = (value: any) => { + return (formatter?: FilterValueFormatter) => { + return formatter ? formatter.convert(value) : value; + }; }; -const getParams = (filter: PhraseFilter, indexPattern?: IndexPattern) => { +const getParams = (filter: PhraseFilter) => { const scriptedPhraseValue = getScriptedPhraseValue(filter); const isScriptedFilter = Boolean(scriptedPhraseValue); const key = isScriptedFilter ? filter.meta.field || '' : Object.keys(filter.query.match)[0]; @@ -49,32 +47,17 @@ const getParams = (filter: PhraseFilter, indexPattern?: IndexPattern) => { key, params, type: FILTERS.PHRASE, - value: getFormattedValue(query, key, indexPattern), + value: getFormattedValueFn(query), }; }; export const isMapPhraseFilter = (filter: any): filter is PhraseFilter => isPhraseFilter(filter) || isScriptedPhraseFilter(filter); -export const mapPhrase = (indexPatterns: IndexPatterns) => { - return async (filter: Filter) => { - if (!isMapPhraseFilter(filter)) { - throw filter; - } - - try { - let indexPattern; +export const mapPhrase = (filter: Filter) => { + if (!isMapPhraseFilter(filter)) { + throw filter; + } - if (filter.meta.index) { - indexPattern = await indexPatterns.get(filter.meta.index); - } - - return getParams(filter, indexPattern); - } catch (error) { - if (error instanceof SavedObjectNotFound) { - return getParams(filter); - } - throw error; - } - }; + return getParams(filter); }; diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrases.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrases.ts index 92226b68ef326..c17ff11d49fd4 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrases.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_phrases.ts @@ -19,7 +19,7 @@ import { Filter, isPhrasesFilter } from '@kbn/es-query'; -export const mapPhrases = async (filter: Filter) => { +export const mapPhrases = (filter: Filter) => { if (!isPhrasesFilter(filter)) { throw filter; } diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.test.ts index ebf9f05ba387b..4b1a5d39c405d 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.test.ts @@ -27,7 +27,7 @@ describe('filter manager utilities', () => { { query_string: { query: 'foo:bar' } }, 'index' ); - const result = await mapQueryString(filter); + const result = mapQueryString(filter); expect(result).toHaveProperty('key', 'query'); expect(result).toHaveProperty('value', 'foo:bar'); @@ -37,7 +37,7 @@ describe('filter manager utilities', () => { const filter = buildEmptyFilter(true) as QueryStringFilter; try { - await mapQueryString(filter); + mapQueryString(filter); } catch (e) { expect(e).toBe(filter); done(); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.ts index 14ad52beaf0b3..94da8074edd04 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_query_string.ts @@ -18,7 +18,7 @@ */ import { Filter, FILTERS, isQueryStringFilter } from '@kbn/es-query'; -export const mapQueryString = async (filter: Filter) => { +export const mapQueryString = (filter: Filter) => { if (isQueryStringFilter(filter)) { return { type: FILTERS.QUERY_STRING, diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.test.ts index 4f81572183005..12d2919e2d47b 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.test.ts @@ -18,43 +18,48 @@ */ import { mapRange } from './map_range'; -import { StubIndexPatterns } from '../test_helpers/stub_index_pattern'; -import { IndexPatterns } from '../../../index_patterns'; +import { RangeFilter, Filter, FilterMeta } from '@kbn/es-query'; describe('filter manager utilities', () => { describe('mapRange()', () => { - let mapRangeFn: Function; - - beforeEach(() => { - const indexPatterns: unknown = new StubIndexPatterns(); - - mapRangeFn = mapRange(indexPatterns as IndexPatterns); - }); - test('should return the key and value for matching filters with gt/lt', async () => { - const filter = { meta: { index: 'logstash-*' }, range: { bytes: { lt: 2048, gt: 1024 } } }; - const result = await mapRangeFn(filter); + const filter = { + meta: { index: 'logstash-*' } as FilterMeta, + range: { bytes: { lt: 2048, gt: 1024 } }, + } as RangeFilter; + const result = mapRange(filter); expect(result).toHaveProperty('key', 'bytes'); - expect(result).toHaveProperty('value', '1024 to 2048'); + expect(result).toHaveProperty('value'); + if (result.value) { + const displayName = result.value(); + expect(displayName).toBe('1024 to 2048'); + } }); test('should return the key and value for matching filters with gte/lte', async () => { - const filter = { meta: { index: 'logstash-*' }, range: { bytes: { lte: 2048, gte: 1024 } } }; - const result = await mapRangeFn(filter); + const filter = { + meta: { index: 'logstash-*' } as FilterMeta, + range: { bytes: { lte: 2048, gte: 1024 } }, + } as RangeFilter; + const result = mapRange(filter); expect(result).toHaveProperty('key', 'bytes'); - expect(result).toHaveProperty('value', '1024 to 2048'); + expect(result).toHaveProperty('value'); + if (result.value) { + const displayName = result.value(); + expect(displayName).toBe('1024 to 2048'); + } }); test('should return undefined for none matching', async done => { const filter = { meta: { index: 'logstash-*' }, query: { query_string: { query: 'foo:bar' } }, - }; + } as Filter; try { - await mapRangeFn(filter); + mapRange(filter); } catch (e) { expect(e).toBe(filter); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.ts index 7b85adacce1d0..76f9d3621e171 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/map_range.ts @@ -17,15 +17,31 @@ * under the License. */ -import { Filter, RangeFilter, FILTERS, isRangeFilter, isScriptedRangeFilter } from '@kbn/es-query'; +import { + Filter, + RangeFilter, + FILTERS, + isRangeFilter, + isScriptedRangeFilter, + FilterValueFormatter, +} from '@kbn/es-query'; import { get, has } from 'lodash'; -import { SavedObjectNotFound } from '../../../../../../../plugins/kibana_utils/public'; -import { IndexPatterns, IndexPattern, Field } from '../../../index_patterns'; + +const getFormattedValueFn = (left: any, right: any) => { + return (formatter?: FilterValueFormatter) => { + let displayValue = `${left} to ${right}`; + if (formatter) { + const convert = formatter.getConverterFor('text'); + displayValue = `${convert(left)} to ${convert(right)}`; + } + return displayValue; + }; +}; const getFirstRangeKey = (filter: RangeFilter) => filter.range && Object.keys(filter.range)[0]; const getRangeByKey = (filter: RangeFilter, key: string) => get(filter, ['range', key]); -function getParams(filter: RangeFilter, indexPattern?: IndexPattern) { +function getParams(filter: RangeFilter) { const isScriptedRange = isScriptedRangeFilter(filter); const key: string = (isScriptedRange ? filter.meta.field : getFirstRangeKey(filter)) || ''; const params: any = isScriptedRange @@ -38,16 +54,7 @@ function getParams(filter: RangeFilter, indexPattern?: IndexPattern) { let right = has(params, 'lte') ? params.lte : params.lt; if (right == null) right = Infinity; - let value = `${left} to ${right}`; - - // Sometimes a filter will end up with an invalid index param. This could happen for a lot of reasons, - // for example a user might manually edit the url or the index pattern's ID might change due to - // external factors e.g. a reindex. We only need the index in order to grab the field formatter, so we fallback - // on displaying the raw value if the index is invalid. - if (key && indexPattern && indexPattern.fields.getByName(key)) { - const convert = (indexPattern.fields.getByName(key) as Field).format.getConverterFor('text'); - value = `${convert(left)} to ${convert(right)}`; - } + const value = getFormattedValueFn(left, right); return { type: FILTERS.RANGE, key, value, params }; } @@ -55,25 +62,10 @@ function getParams(filter: RangeFilter, indexPattern?: IndexPattern) { export const isMapRangeFilter = (filter: any): filter is RangeFilter => isRangeFilter(filter) || isScriptedRangeFilter(filter); -export const mapRange = (indexPatterns: IndexPatterns) => { - return async (filter: Filter) => { - if (!isMapRangeFilter(filter)) { - throw filter; - } - - try { - let indexPattern; - - if (filter.meta.index) { - indexPattern = await indexPatterns.get(filter.meta.index); - } +export const mapRange = (filter: Filter) => { + if (!isMapRangeFilter(filter)) { + throw filter; + } - return getParams(filter, indexPattern); - } catch (error) { - if (error instanceof SavedObjectNotFound) { - return getParams(filter); - } - throw error; - } - }; + return getParams(filter); }; diff --git a/src/legacy/core_plugins/data/public/filter/filter_service.mock.ts b/src/legacy/core_plugins/data/public/filter/filter_service.mock.ts index 5cacc890cd5cc..94268ef69c49a 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_service.mock.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_service.mock.ts @@ -17,11 +17,17 @@ * under the License. */ -import { FilterService, FilterStart } from '.'; +import { FilterService, FilterStart, FilterSetup } from '.'; type FilterServiceClientContract = PublicMethodsOf; -const createSetupContract = () => {}; +const createSetupContractMock = () => { + const setupContract: jest.Mocked = { + filterManager: jest.fn() as any, + }; + + return setupContract; +}; const createStartContractMock = () => { const startContract: jest.Mocked = { @@ -38,13 +44,13 @@ const createMock = () => { stop: jest.fn(), }; - mocked.setup.mockReturnValue(createSetupContract()); + mocked.setup.mockReturnValue(createSetupContractMock()); mocked.start.mockReturnValue(createStartContractMock()); return mocked; }; export const filterServiceMock = { create: createMock, - createSetupContract, + createSetupContract: createSetupContractMock, createStartContract: createStartContractMock, }; diff --git a/src/legacy/core_plugins/data/public/filter/filter_service.ts b/src/legacy/core_plugins/data/public/filter/filter_service.ts index fbeab1233533e..0c46259ef0e00 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_service.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_service.ts @@ -18,7 +18,6 @@ */ import { UiSettingsClientContract } from 'src/core/public'; -import { IndexPatterns } from '../index_patterns'; import { FilterManager } from './filter_manager'; /** @@ -27,18 +26,23 @@ import { FilterManager } from './filter_manager'; */ export interface FilterServiceDependencies { - indexPatterns: IndexPatterns; uiSettings: UiSettingsClientContract; } export class FilterService { - public setup() { - // Filter service requires index patterns, which are only available in `start` + filterManager!: FilterManager; + + public setup({ uiSettings }: FilterServiceDependencies) { + this.filterManager = new FilterManager(uiSettings); + + return { + filterManager: this.filterManager, + }; } - public start({ indexPatterns, uiSettings }: FilterServiceDependencies) { + public start() { return { - filterManager: new FilterManager(indexPatterns, uiSettings), + filterManager: this.filterManager, }; } @@ -48,4 +52,5 @@ export class FilterService { } /** @public */ +export type FilterSetup = ReturnType; export type FilterStart = ReturnType; diff --git a/src/legacy/core_plugins/data/public/filter/index.tsx b/src/legacy/core_plugins/data/public/filter/index.tsx index 3ada13ba2ceea..cda7350ecadef 100644 --- a/src/legacy/core_plugins/data/public/filter/index.tsx +++ b/src/legacy/core_plugins/data/public/filter/index.tsx @@ -17,7 +17,7 @@ * under the License. */ -export { FilterService, FilterStart } from './filter_service'; +export * from './filter_service'; export { FilterBar } from './filter_bar'; diff --git a/src/legacy/core_plugins/data/public/plugin.ts b/src/legacy/core_plugins/data/public/plugin.ts index 6f9660d986e79..c25d6742db8da 100644 --- a/src/legacy/core_plugins/data/public/plugin.ts +++ b/src/legacy/core_plugins/data/public/plugin.ts @@ -20,7 +20,7 @@ import { CoreSetup, CoreStart, Plugin } from 'kibana/public'; import { SearchService, SearchStart, createSearchBar, StatetfulSearchBarProps } from './search'; import { QueryService, QuerySetup } from './query'; -import { FilterService, FilterStart } from './filter'; +import { FilterService, FilterSetup, FilterStart } from './filter'; import { TimefilterService, TimefilterSetup } from './timefilter'; import { IndexPatternsService, IndexPatternsSetup, IndexPatternsStart } from './index_patterns'; import { @@ -52,6 +52,7 @@ export interface DataSetup { query: QuerySetup; timefilter: TimefilterSetup; indexPatterns: IndexPatternsSetup; + filter: FilterSetup; } /** @@ -100,10 +101,14 @@ export class DataPlugin uiSettings, store: __LEGACY.storage, }); + const filterService = this.filter.setup({ + uiSettings, + }); this.setupApi = { indexPatterns: this.indexPatterns.setup(), query: this.query.setup(), timefilter: timefilterService, + filter: filterService, }; return this.setupApi; @@ -119,23 +124,17 @@ export class DataPlugin notifications, }); - const filterService = this.filter.start({ - uiSettings, - indexPatterns: indexPatternsService.indexPatterns, - }); - const SearchBar = createSearchBar({ core, data, store: __LEGACY.storage, timefilter: this.setupApi.timefilter, - filterManager: filterService.filterManager, + filterManager: this.setupApi.filter.filterManager, }); return { ...this.setupApi!, indexPatterns: indexPatternsService, - filter: filterService, search: this.search.start(savedObjects.client), ui: { SearchBar, diff --git a/src/legacy/core_plugins/data/public/search/search_bar/components/search_bar.tsx b/src/legacy/core_plugins/data/public/search/search_bar/components/search_bar.tsx index 3683fb7c2c16e..8c7441088bab0 100644 --- a/src/legacy/core_plugins/data/public/search/search_bar/components/search_bar.tsx +++ b/src/legacy/core_plugins/data/public/search/search_bar/components/search_bar.tsx @@ -17,6 +17,7 @@ * under the License. */ +import { compact } from 'lodash'; import { Filter } from '@kbn/es-query'; import { InjectedIntl, injectI18n } from '@kbn/i18n/react'; import classNames from 'classnames'; @@ -195,7 +196,12 @@ class SearchBarUI extends Component { } private shouldRenderFilterBar() { - return this.props.showFilterBar && this.props.filters && this.props.indexPatterns; + return ( + this.props.showFilterBar && + this.props.filters && + this.props.indexPatterns && + compact(this.props.indexPatterns).length > 0 + ); } public setFilterBarHeight = () => { diff --git a/src/legacy/core_plugins/data/public/shim/apply_filter_directive.html b/src/legacy/core_plugins/data/public/shim/apply_filter_directive.html index ed7a5d70a2b80..0b02fcefcdbd5 100644 --- a/src/legacy/core_plugins/data/public/shim/apply_filter_directive.html +++ b/src/legacy/core_plugins/data/public/shim/apply_filter_directive.html @@ -4,4 +4,5 @@ filters="state.filters" on-cancel="onCancel" on-submit="onSubmit" + index-patterns="indexPatterns" > diff --git a/src/legacy/core_plugins/data/public/shim/legacy_module.ts b/src/legacy/core_plugins/data/public/shim/legacy_module.ts index 32b88720a4579..9ce35e6d2fa9e 100644 --- a/src/legacy/core_plugins/data/public/shim/legacy_module.ts +++ b/src/legacy/core_plugins/data/public/shim/legacy_module.ts @@ -79,7 +79,7 @@ export const initLegacyModule = once((): void => { .directive('applyFiltersPopoverComponent', (reactDirective: any) => reactDirective(wrapInI18nContext(ApplyFiltersPopover)) ) - .directive('applyFiltersPopover', (indexPatterns: IndexPatterns) => { + .directive('applyFiltersPopover', () => { return { template, restrict: 'E', @@ -87,6 +87,7 @@ export const initLegacyModule = once((): void => { filters: '=', onCancel: '=', onSubmit: '=', + indexPatterns: '=', }, link($scope: any) { $scope.state = {}; @@ -94,8 +95,8 @@ export const initLegacyModule = once((): void => { // Each time the new filters change we want to rebuild (not just re-render) the "apply filters" // popover, because it has to reset its state whenever the new filters change. Setting a `key` // property on the component accomplishes this due to how React handles the `key` property. - $scope.$watch('filters', async (filters: any) => { - const mappedFilters: Filter[] = await mapAndFlattenFilters(indexPatterns, filters); + $scope.$watch('filters', (filters: any) => { + const mappedFilters: Filter[] = mapAndFlattenFilters(filters); $scope.state = { filters: mappedFilters, key: Date.now(), @@ -107,7 +108,7 @@ export const initLegacyModule = once((): void => { const module = uiModules.get('kibana/index_patterns'); let _service: any; - module.service('indexPatterns', function(chrome: any) { + module.service('indexPatterns', function() { if (!_service) _service = new IndexPatterns( npStart.core.uiSettings, diff --git a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app.html b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app.html index 39db357a69321..68c8131fa1a7b 100644 --- a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app.html +++ b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app.html @@ -46,6 +46,7 @@ filters="appState.$newFilters" on-cancel="onCancelApplyFilters" on-submit="onApplyFilters" + index-patterns="indexPatterns" >
diff --git a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx index de32d060b6cdb..60004374eb33e 100644 --- a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx +++ b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx @@ -258,7 +258,7 @@ export class DashboardAppController { updateIndexPatterns(dashboardContainer); }); - inputSubscription = dashboardContainer.getInput$().subscribe(async () => { + inputSubscription = dashboardContainer.getInput$().subscribe(() => { let dirty = false; // This has to be first because handleDashboardContainerChanges causes @@ -266,7 +266,7 @@ export class DashboardAppController { // Add filters modifies the object passed to it, hence the clone deep. if (!_.isEqual(container.getInput().filters, queryFilter.getFilters())) { - await queryFilter.addFilters(_.cloneDeep(container.getInput().filters)); + queryFilter.addFilters(_.cloneDeep(container.getInput().filters)); dashboardStateManager.applyFilters($scope.model.query, container.getInput().filters); dirty = true; @@ -453,7 +453,6 @@ export class DashboardAppController { $scope.onClearSavedQuery = () => { delete $scope.savedQuery; dashboardStateManager.setSavedQueryId(undefined); - queryFilter.removeAll(); dashboardStateManager.applyFilters( { query: '', @@ -462,10 +461,12 @@ export class DashboardAppController { }, [] ); + // Making this method sync broke the updates. + // Temporary fix, until we fix the complex state in this file. + setTimeout(queryFilter.removeAll, 0); }; const updateStateFromSavedQuery = (savedQuery: SavedQuery) => { - queryFilter.setFilters(savedQuery.attributes.filters || []); dashboardStateManager.applyFilters( savedQuery.attributes.query, savedQuery.attributes.filters || [] @@ -479,6 +480,11 @@ export class DashboardAppController { timefilter.setRefreshInterval(savedQuery.attributes.timefilter.refreshInterval); } } + // Making this method sync broke the updates. + // Temporary fix, until we fix the complex state in this file. + setTimeout(() => { + queryFilter.setFilters(savedQuery.attributes.filters || []); + }, 0); }; $scope.$watch('savedQuery', (newSavedQuery: SavedQuery) => { diff --git a/src/legacy/core_plugins/kibana/public/dashboard/lib/filter_utils.ts b/src/legacy/core_plugins/kibana/public/dashboard/lib/filter_utils.ts index 3b6b99dcb6d25..1fd50081c58bd 100644 --- a/src/legacy/core_plugins/kibana/public/dashboard/lib/filter_utils.ts +++ b/src/legacy/core_plugins/kibana/public/dashboard/lib/filter_utils.ts @@ -66,6 +66,14 @@ export class FilterUtils { * @returns {Array.} */ public static cleanFiltersForComparison(filters: Filter[]) { - return _.map(filters, filter => _.omit(filter, ['$$hashKey', '$state'])); + return _.map(filters, filter => { + const f: Partial = _.omit(filter, ['$$hashKey', '$state']); + if (f.meta) { + // f.meta.value is the value displayed in the filter bar. + // It may also be loaded differently and shouldn't be used in this comparison. + return _.omit(f.meta, ['value']); + } + return f; + }); } } diff --git a/src/legacy/core_plugins/kibana/public/visualize/editor/editor.html b/src/legacy/core_plugins/kibana/public/visualize/editor/editor.html index aa59b2d0a81c4..50e921e14973b 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/editor/editor.html +++ b/src/legacy/core_plugins/kibana/public/visualize/editor/editor.html @@ -77,6 +77,7 @@ filters="state.$newFilters" on-cancel="onCancelApplyFilters" on-submit="onApplyFilters" + index-patterns="indexPatterns" >
{ const currentUrl = await browser.getCurrentUrl(); const appState = currentUrl.substring(currentUrl.indexOf('_a=')); - expect(appState).to.equal('_a=(filters:!((%27$state%27:(store:appState),meta:(alias:!n,disabled:!f,index:c698b940-e149-11e8-a35a-370a8516603a,key:machine.os.raw,negate:!f,params:(query:ios),type:phrase,value:ios),query:(match:(machine.os.raw:(query:ios,type:phrase))))),query:(language:kuery,query:%27%27))'); // eslint-disable-line max-len + expect(appState).to.equal('_a=(filters:!((%27$state%27:(store:appState),meta:(alias:!n,disabled:!f,index:c698b940-e149-11e8-a35a-370a8516603a,key:machine.os.raw,negate:!f,params:(query:ios),type:phrase),query:(match:(machine.os.raw:(query:ios,type:phrase))))),query:(language:kuery,query:%27%27))'); // eslint-disable-line max-len }); it('should apply query stored with map', async () => { From 65a3741e6220cd049029f5a9f8cab32111dacaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Tue, 15 Oct 2019 14:39:16 +0200 Subject: [PATCH 29/46] [APM]removing rest_total_hits_as_int and changing hits.total type (#47814) * removing rest_total_hits_as_int and changing hits.total type * changing hits.total type and replace it * Changing elasticsearch response type to match the new structure(hits.total.value) * Changing elasticsearch response type to match the new structure(hits.total.value) * Changing elasticsearch response type to match the new structure(hits.total.value) * Replacing totalHits to noHits * Fixing unit test and updating snapshot * Changing elasticsearch type names * Changing elasticsearch type names --- .../ErrorGroupDetails/Distribution/index.tsx | 6 ++-- .../TransactionDetails/Distribution/index.tsx | 2 +- .../CustomPlot/test/responseWithData.json | 2 +- .../hooks/useTransactionDistribution.ts | 2 +- .../lib/errors/distribution/get_buckets.ts | 2 +- .../errors/distribution/get_distribution.ts | 4 +-- .../apm/server/lib/errors/get_error_group.ts | 2 +- .../apm/server/lib/helpers/es_client.ts | 15 ++++++---- .../server/lib/helpers/setup_request.test.ts | 3 +- .../java/gc/fetchAndTransformGcMetrics.ts | 4 +-- .../metrics/transform_metrics_chart.test.ts | 4 +-- .../lib/metrics/transform_metrics_chart.ts | 9 ++++-- .../services/get_services/get_agent_status.ts | 2 +- .../get_services/get_legacy_data_status.ts | 2 +- .../traces/__snapshots__/queries.test.ts.snap | 1 + .../apm/server/lib/traces/get_trace_items.ts | 5 ++-- .../distribution/get_buckets/transform.ts | 2 +- .../lib/transactions/distribution/index.ts | 6 ++-- .../plugins/apm/typings/elasticsearch.ts | 30 +++++++++++++++++-- .../plugins/lens/server/routes/field_stats.ts | 21 ++++++++----- 20 files changed, 80 insertions(+), 44 deletions(-) diff --git a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx index 9a687c1e84287..2667d03ef8dde 100644 --- a/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx +++ b/x-pack/legacy/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx @@ -18,7 +18,7 @@ interface IBucket { // TODO: cleanup duplication of this in distribution/get_distribution.ts (ErrorDistributionAPIResponse) and transactions/distribution/index.ts (TransactionDistributionAPIResponse) interface IDistribution { - totalHits: number; + noHits: boolean; buckets: IBucket[]; bucketSize: number; } @@ -57,9 +57,7 @@ export function ErrorDistribution({ distribution, title }: Props) { distribution.bucketSize ); - const isEmpty = distribution.totalHits === 0; - - if (isEmpty) { + if (distribution.noHits) { return ( = ( ]); // no data in response - if (!distribution || !distribution.totalHits) { + if (!distribution || distribution.noHits) { // only show loading state if there is no data - else show stale data until new data has loaded if (isLoading) { return ; diff --git a/x-pack/legacy/plugins/apm/public/components/shared/charts/CustomPlot/test/responseWithData.json b/x-pack/legacy/plugins/apm/public/components/shared/charts/CustomPlot/test/responseWithData.json index bdfeb2afb8c21..e8b96b501af0f 100644 --- a/x-pack/legacy/plugins/apm/public/components/shared/charts/CustomPlot/test/responseWithData.json +++ b/x-pack/legacy/plugins/apm/public/components/shared/charts/CustomPlot/test/responseWithData.json @@ -247,5 +247,5 @@ } ], "overallAvgDuration": 467582.45401459857, - "totalHits": 999 + "noHits": false } diff --git a/x-pack/legacy/plugins/apm/public/hooks/useTransactionDistribution.ts b/x-pack/legacy/plugins/apm/public/hooks/useTransactionDistribution.ts index afd838e88b90d..4c7e337212e55 100644 --- a/x-pack/legacy/plugins/apm/public/hooks/useTransactionDistribution.ts +++ b/x-pack/legacy/plugins/apm/public/hooks/useTransactionDistribution.ts @@ -11,7 +11,7 @@ import { TransactionDistributionAPIResponse } from '../../server/lib/transaction const INITIAL_DATA = { buckets: [] as TransactionDistributionAPIResponse['buckets'], - totalHits: 0, + noHits: true, bucketSize: 0 }; diff --git a/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_buckets.ts b/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_buckets.ts index 826d1061d5935..9c49a7f613aaa 100644 --- a/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_buckets.ts +++ b/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_buckets.ts @@ -72,7 +72,7 @@ export async function getBuckets({ })); return { - totalHits: resp.hits.total, + noHits: resp.hits.total.value === 0, buckets }; } diff --git a/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_distribution.ts b/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_distribution.ts index 21a4173fbeac2..81019b5261044 100644 --- a/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_distribution.ts +++ b/x-pack/legacy/plugins/apm/server/lib/errors/distribution/get_distribution.ts @@ -27,7 +27,7 @@ export async function getErrorDistribution({ setup: Setup; }) { const bucketSize = getBucketSize(setup); - const { buckets, totalHits } = await getBuckets({ + const { buckets, noHits } = await getBuckets({ serviceName, groupId, bucketSize, @@ -35,7 +35,7 @@ export async function getErrorDistribution({ }); return { - totalHits, + noHits, buckets, bucketSize }; diff --git a/x-pack/legacy/plugins/apm/server/lib/errors/get_error_group.ts b/x-pack/legacy/plugins/apm/server/lib/errors/get_error_group.ts index 6850615f4928b..dee5deb4064e4 100644 --- a/x-pack/legacy/plugins/apm/server/lib/errors/get_error_group.ts +++ b/x-pack/legacy/plugins/apm/server/lib/errors/get_error_group.ts @@ -67,6 +67,6 @@ export async function getErrorGroup({ return { transaction, error, - occurrencesCount: resp.hits.total + occurrencesCount: resp.hits.total.value }; } diff --git a/x-pack/legacy/plugins/apm/server/lib/helpers/es_client.ts b/x-pack/legacy/plugins/apm/server/lib/helpers/es_client.ts index 896c558121992..03cfa7e0c8a83 100644 --- a/x-pack/legacy/plugins/apm/server/lib/helpers/es_client.ts +++ b/x-pack/legacy/plugins/apm/server/lib/helpers/es_client.ts @@ -10,7 +10,7 @@ import { IndexDocumentParams, IndicesDeleteParams, IndicesCreateParams, - AggregationSearchResponse + AggregationSearchResponseWithTotalHitsAsObject } from 'elasticsearch'; import { Legacy } from 'kibana'; import { cloneDeep, has, isString, set } from 'lodash'; @@ -76,8 +76,7 @@ async function getParamsForSearchRequest( const includeFrozen = await uiSettings.get('search:includeFrozen'); return { ...addFilterForLegacyData(apmIndices, params, apmOptions), // filter out pre-7.0 data - ignore_throttled: !includeFrozen, // whether to query frozen indices or not - rest_total_hits_as_int: true // ensure that ES returns accurate hits.total with pre-6.6 format + ignore_throttled: !includeFrozen // whether to query frozen indices or not }; } @@ -93,7 +92,7 @@ export function getESClient(req: Legacy.Request) { search: async ( params: U, apmOptions?: APMOptions - ): Promise> => { + ): Promise> => { const nextParams = await getParamsForSearchRequest( req, params, @@ -111,8 +110,12 @@ export function getESClient(req: Legacy.Request) { console.log(JSON.stringify(nextParams.body, null, 4)); } - return cluster.callWithRequest(req, 'search', nextParams) as Promise< - AggregationSearchResponse + return (cluster.callWithRequest( + req, + 'search', + nextParams + ) as unknown) as Promise< + AggregationSearchResponseWithTotalHitsAsObject >; }, index: (params: IndexDocumentParams) => { diff --git a/x-pack/legacy/plugins/apm/server/lib/helpers/setup_request.test.ts b/x-pack/legacy/plugins/apm/server/lib/helpers/setup_request.test.ts index 91809fbaede03..6edac00b8a1ab 100644 --- a/x-pack/legacy/plugins/apm/server/lib/helpers/setup_request.test.ts +++ b/x-pack/legacy/plugins/apm/server/lib/helpers/setup_request.test.ts @@ -42,8 +42,7 @@ describe('setupRequest', () => { } } }, - ignore_throttled: true, - rest_total_hits_as_int: true + ignore_throttled: true }); }); diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts index 9600da458e64e..7b8fc4ac44f64 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/by_agent/java/gc/fetchAndTransformGcMetrics.ts @@ -118,7 +118,7 @@ export async function fetchAndTransformGcMetrics({ if (!aggregations) { return { ...chartBase, - totalHits: 0, + noHits: true, series: [] }; } @@ -156,7 +156,7 @@ export async function fetchAndTransformGcMetrics({ return { ...chartBase, - totalHits: response.hits.total, + noHits: response.hits.total.value === 0, series }; } diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.test.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.test.ts index e077105e9b2e5..fe8f269fdab7c 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.test.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.test.ts @@ -8,7 +8,7 @@ import { ChartType, YUnit } from '../../../typings/timeseries'; test('transformDataToMetricsChart should transform an ES result into a chart object', () => { const response = { - hits: { total: 5000 }, + hits: { total: { value: 5000 } }, aggregations: { a: { value: 1000 }, b: { value: 1000 }, @@ -58,6 +58,7 @@ test('transformDataToMetricsChart should transform an ES result into a chart obj expect(chart).toMatchInlineSnapshot(` Object { "key": "test_chart_key", + "noHits": false, "series": Array [ Object { "color": "red", @@ -124,7 +125,6 @@ Object { }, ], "title": "Test Chart Title", - "totalHits": 5000, "yUnit": "number", } `); diff --git a/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.ts b/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.ts index af0605eb9d454..89bc3b4107a5f 100644 --- a/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.ts +++ b/x-pack/legacy/plugins/apm/server/lib/metrics/transform_metrics_chart.ts @@ -4,7 +4,10 @@ * you may not use this file except in compliance with the Elastic License. */ import theme from '@elastic/eui/dist/eui_theme_light.json'; -import { AggregationSearchResponse, AggregatedValue } from 'elasticsearch'; +import { + AggregationSearchResponseWithTotalHitsAsObject, + AggregatedValue +} from 'elasticsearch'; import { idx } from '@kbn/elastic-idx'; import { ChartBase } from './types'; @@ -46,7 +49,7 @@ interface AggregatedParams { } export function transformDataToMetricsChart( - result: AggregationSearchResponse, + result: AggregationSearchResponseWithTotalHitsAsObject, chartBase: ChartBase ) { const { aggregations, hits } = result; @@ -56,7 +59,7 @@ export function transformDataToMetricsChart( title: chartBase.title, key: chartBase.key, yUnit: chartBase.yUnit, - totalHits: hits.total, + noHits: hits.total.value === 0, series: Object.keys(chartBase.series).map((seriesKey, i) => { const overallValue = idx(aggregations, _ => _[seriesKey].value); diff --git a/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_agent_status.ts b/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_agent_status.ts index 68e5afd995203..d1654632dbb26 100644 --- a/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_agent_status.ts +++ b/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_agent_status.ts @@ -42,6 +42,6 @@ export async function getAgentStatus(setup: Setup) { }; const resp = await client.search(params); - const hasHistorialAgentData = resp.hits.total > 0; + const hasHistorialAgentData = resp.hits.total.value > 0; return hasHistorialAgentData; } diff --git a/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_legacy_data_status.ts b/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_legacy_data_status.ts index 2d59a4f028326..1379d79326add 100644 --- a/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_legacy_data_status.ts +++ b/x-pack/legacy/plugins/apm/server/lib/services/get_services/get_legacy_data_status.ts @@ -31,6 +31,6 @@ export async function getLegacyDataStatus(setup: Setup) { }; const resp = await client.search(params, { includeLegacyData: true }); - const hasLegacyData = resp.hits.total > 0; + const hasLegacyData = resp.hits.total.value > 0; return hasLegacyData; } diff --git a/x-pack/legacy/plugins/apm/server/lib/traces/__snapshots__/queries.test.ts.snap b/x-pack/legacy/plugins/apm/server/lib/traces/__snapshots__/queries.test.ts.snap index 396e8540afdd6..4484f41d06ac8 100644 --- a/x-pack/legacy/plugins/apm/server/lib/traces/__snapshots__/queries.test.ts.snap +++ b/x-pack/legacy/plugins/apm/server/lib/traces/__snapshots__/queries.test.ts.snap @@ -54,6 +54,7 @@ Object { }, }, ], + "track_total_hits": true, }, "index": Array [ "myIndex", diff --git a/x-pack/legacy/plugins/apm/server/lib/traces/get_trace_items.ts b/x-pack/legacy/plugins/apm/server/lib/traces/get_trace_items.ts index 00eeefb4b4fcc..74e16424b1098 100644 --- a/x-pack/legacy/plugins/apm/server/lib/traces/get_trace_items.ts +++ b/x-pack/legacy/plugins/apm/server/lib/traces/get_trace_items.ts @@ -44,7 +44,8 @@ export async function getTraceItems(traceId: string, setup: Setup) { { _score: { order: 'asc' } }, { [TRANSACTION_DURATION]: { order: 'desc' } }, { [SPAN_DURATION]: { order: 'desc' } } - ] + ], + track_total_hits: true } }; @@ -52,6 +53,6 @@ export async function getTraceItems(traceId: string, setup: Setup) { return { items: resp.hits.hits.map(hit => hit._source), - exceedsMax: resp.hits.total > maxTraceItems + exceedsMax: resp.hits.total.value > maxTraceItems }; } diff --git a/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts b/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts index 74980caf8c350..827194edd6aa3 100644 --- a/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts +++ b/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/get_buckets/transform.ts @@ -39,7 +39,7 @@ export function bucketTransformer(response: DistributionBucketResponse) { ).map(getBucket); return { - totalHits: response.hits.total, + noHits: response.hits.total.value === 0, buckets }; } diff --git a/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/index.ts b/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/index.ts index 454e247a19cae..3efa996d609d8 100644 --- a/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/index.ts +++ b/x-pack/legacy/plugins/apm/server/lib/transactions/distribution/index.ts @@ -47,11 +47,11 @@ export async function getTransactionDistribution({ ); if (distributionMax == null) { - return { totalHits: 0, buckets: [], bucketSize: 0 }; + return { noHits: true, buckets: [], bucketSize: 0 }; } const bucketSize = getBucketSize(distributionMax, setup); - const { buckets, totalHits } = await getBuckets( + const { buckets, noHits } = await getBuckets( serviceName, transactionName, transactionType, @@ -63,7 +63,7 @@ export async function getTransactionDistribution({ ); return { - totalHits, + noHits, buckets, bucketSize }; diff --git a/x-pack/legacy/plugins/apm/typings/elasticsearch.ts b/x-pack/legacy/plugins/apm/typings/elasticsearch.ts index c1a8a7f9b3985..10cd7bcbf4f38 100644 --- a/x-pack/legacy/plugins/apm/typings/elasticsearch.ts +++ b/x-pack/legacy/plugins/apm/typings/elasticsearch.ts @@ -81,6 +81,11 @@ declare module 'elasticsearch' { value: number | null; } + interface HitsTotal { + value: number; + relation: 'eq' | 'gte'; + } + type AggregationResultMap = IndexAsString< { [AggregationName in keyof AggregationOption]: { @@ -101,7 +106,7 @@ declare module 'elasticsearch' { >; top_hits: { hits: { - total: number; + total: HitsTotal; max_score: number | null; hits: Array<{ _source: AggregationOption[AggregationName] extends { @@ -148,7 +153,10 @@ declare module 'elasticsearch' { } >; - export type AggregationSearchResponse = Pick< + export type AggregationSearchResponseWithTotalHitsAsInt< + HitType, + SearchParams + > = Pick< SearchResponse, Exclude, 'aggregations'> > & @@ -158,6 +166,24 @@ declare module 'elasticsearch' { } : {}); + type Hits = Pick< + SearchResponse['hits'], + Exclude['hits'], 'total'> + > & { + total: HitsTotal; + }; + + export type AggregationSearchResponseWithTotalHitsAsObject< + HitType, + SearchParams + > = Pick< + AggregationSearchResponseWithTotalHitsAsInt, + Exclude< + keyof AggregationSearchResponseWithTotalHitsAsInt, + 'hits' + > + > & { hits: Hits }; + export interface ESFilter { [key: string]: { [key: string]: string | string[] | number | StringMap | ESFilter[]; diff --git a/x-pack/legacy/plugins/lens/server/routes/field_stats.ts b/x-pack/legacy/plugins/lens/server/routes/field_stats.ts index dee623329c1f1..e7e378e6b20e4 100644 --- a/x-pack/legacy/plugins/lens/server/routes/field_stats.ts +++ b/x-pack/legacy/plugins/lens/server/routes/field_stats.ts @@ -7,7 +7,7 @@ import Boom from 'boom'; import DateMath from '@elastic/datemath'; import { schema } from '@kbn/config-schema'; -import { AggregationSearchResponse } from 'elasticsearch'; +import { AggregationSearchResponseWithTotalHitsAsInt } from 'elasticsearch'; import { CoreSetup } from 'src/core/server'; import { FieldStatsResponse, BASE_API_URL } from '../../common'; @@ -135,10 +135,9 @@ export async function getNumberHistogram( }, }; - const minMaxResult = (await aggSearchWithBody(searchBody)) as AggregationSearchResponse< - unknown, - { body: { aggs: typeof searchBody } } - >; + const minMaxResult = (await aggSearchWithBody( + searchBody + )) as AggregationSearchResponseWithTotalHitsAsInt; const minValue = minMaxResult.aggregations!.sample.min_value.value; const maxValue = minMaxResult.aggregations!.sample.max_value.value; @@ -179,7 +178,9 @@ export async function getNumberHistogram( }, }, }; - const histogramResult = (await aggSearchWithBody(histogramBody)) as AggregationSearchResponse< + const histogramResult = (await aggSearchWithBody( + histogramBody + )) as AggregationSearchResponseWithTotalHitsAsInt< unknown, { body: { aggs: typeof histogramBody } } >; @@ -213,7 +214,9 @@ export async function getStringSamples( }, }, }; - const topValuesResult = (await aggSearchWithBody(topValuesBody)) as AggregationSearchResponse< + const topValuesResult = (await aggSearchWithBody( + topValuesBody + )) as AggregationSearchResponseWithTotalHitsAsInt< unknown, { body: { aggs: typeof topValuesBody } } >; @@ -260,7 +263,9 @@ export async function getDateHistogram( const histogramBody = { histo: { date_histogram: { field: field.name, fixed_interval: fixedInterval } }, }; - const results = (await aggSearchWithBody(histogramBody)) as AggregationSearchResponse< + const results = (await aggSearchWithBody( + histogramBody + )) as AggregationSearchResponseWithTotalHitsAsInt< unknown, { body: { aggs: typeof histogramBody } } >; From 24ab2e1959b67bc38ee888c432760fe554338235 Mon Sep 17 00:00:00 2001 From: Marjorie Jones Date: Tue, 15 Oct 2019 14:05:42 +0100 Subject: [PATCH 30/46] Change Configuration button to Settings tab (#47960) --- docs/infrastructure/infra-ui.asciidoc | 19 ++++++------ docs/logs/configuring.asciidoc | 44 ++++++++++++--------------- docs/logs/using.asciidoc | 9 ++++-- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/docs/infrastructure/infra-ui.asciidoc b/docs/infrastructure/infra-ui.asciidoc index e92f6b3f64205..5c8c50a978d63 100644 --- a/docs/infrastructure/infra-ui.asciidoc +++ b/docs/infrastructure/infra-ui.asciidoc @@ -62,29 +62,30 @@ Select *Auto-refresh* to keep up-to-date metrics information coming in, or *Stop [[infra-configure-source]] === Configure the data to use for your metrics +If your metrics have custom index patterns, or use non-default field settings, you can override the default configuration settings. + The default source configuration for metrics is specified in the {kibana-ref}/infrastructure-ui-settings-kb.html[Metrics app settings] in the {kibana-ref}/settings.html[Kibana configuration file]. The default configuration uses the `metricbeat-*` index pattern to query the data. The default configuration also defines field settings for things like timestamps and container names. -If your metrics have custom index patterns, or use non-default field settings, you can override the default settings. -Click *Configuration* to change the settings. -This opens the *Configure source* fly-out dialog. +To change the configuration settings, click the *Settings* tab. NOTE: These settings are shared with logs. Changes you make here may also affect the settings used by the *Logs* app. -In the *Configure source* dialog, you can change the following values: +In the *Settings* tab, you can change the values in these sections: * *Name*: the name of the source configuration -* *Indices*: the index pattern or patterns in the Elasticsearch indices to read metrics data and log data - from +* *Indices*: the index pattern or patterns in the Elasticsearch indices to read metrics data and log data from * *Fields*: the names of specific fields in the indices that are used to query and interpret the data correctly -TIP: If <> are enabled in your Kibana instance, any configuration changes you make here are specific to the current space. -You can make different subsets of data available by creating multiple spaces with different data source configurations. +When you have completed your changes, click *Apply*. -TIP: If you don't see the *Configuration* option, you may not have sufficient privileges to change the source configuration. +If the fields are greyed out and cannot be edited, you may not have sufficient privileges to change the source configuration. For more information see <>. +TIP: If <> are enabled in your Kibana instance, any configuration changes you make here are specific to the current space. +You can make different subsets of data available by creating multiple spaces with different data source configurations. + [float] [[infra-metrics-explorer]] === Visualize multiple metrics in Metrics Explorer diff --git a/docs/logs/configuring.asciidoc b/docs/logs/configuring.asciidoc index f2aa1e5e17b8f..6b54721f92e89 100644 --- a/docs/logs/configuring.asciidoc +++ b/docs/logs/configuring.asciidoc @@ -1,50 +1,46 @@ [role="xpack"] [[xpack-logs-configuring]] -:ecs-link: {ecs-ref}[Elastic Common Schema (ECS)] +:ecs-base-link: {ecs-ref}/ecs-base.html[base] == Configuring the Logs data The default source configuration for logs is specified in the {kibana-ref}/logs-ui-settings-kb.html[Logs app settings] in the {kibana-ref}/settings.html[Kibana configuration file]. The default configuration uses the `filebeat-*` index pattern to query the data. -The default configuration also defines field settings for things like timestamps and container names, and the default columns to show in the logs pane. +The default configuration also defines field settings for things like timestamps and container names, and the default columns to show in the logs stream. -If your logs have custom index patterns, or use non-default field settings, or contain parsed fields which you want to expose as individual columns, you can override the default settings. -Click *Configuration* to change the settings. -This opens the *Configure source* fly-out dialog. +If your logs have custom index patterns, use non-default field settings, or contain parsed fields which you want to expose as individual columns, you can override the default configuration settings. -NOTE: These settings are shared with metrics. Changes you make here may also affect the settings used by the *Metrics* app. - -TIP: If <> are enabled in your Kibana instance, any configuration changes you make here are specific to the current space. -You can make different subsets of data available by creating multiple spaces with different data source configurations. +To change the configuration settings, click the *Settings* tab. -TIP: If you don't see the *Configuration* option, you may not have sufficient privileges to change the source configuration. -For more information see <>. - -[float] -=== Indices and fields tab +NOTE: These settings are shared with metrics. Changes you make here may also affect the settings used by the *Metrics* app. -In the *Indices and fields* tab, you can change the following values: +In the *Settings* tab, you can change the values in these sections: * *Name*: the name of the source configuration * *Indices*: the index pattern or patterns in the Elasticsearch indices to read metrics data and log data from * *Fields*: the names of specific fields in the indices that are used to query and interpret the data correctly +* *Log columns*: the columns that are shown in the logs stream -[float] -==== Log columns configuration - -In the *Log columns* tab you can change the columns that are displayed in the Logs app. -By default the following columns are shown: +By default the logs stream shows following columns: * *Timestamp*: The timestamp of the log entry from the `timestamp` field. * *Message*: The message extracted from the document. The content of this field depends on the type of log message. -If no special log message type is detected, the {ecs-link} field `message` is used. -// ++ add a better link. The actual page location is ecs-base +If no special log message type is detected, the Elastic Common Schema (ECS) {ecs-base-link} field, `message`, is used. -To add a new column, click *Add column*. +To add a new column to the logs stream, in the *Settings* tab, click *Add column*. In the list of available fields, select the field you want to add. You can start typing a field name in the search box to filter the field list by that name. To remove an existing column, click the *Remove this column* icon -image:logs/images/logs-configure-source-dialog-remove-column-button.png[Remove column]. \ No newline at end of file +image:logs/images/logs-configure-source-dialog-remove-column-button.png[Remove column]. + +When you have completed your changes, click *Apply*. + +If the fields are greyed out and cannot be edited, you may not have sufficient privileges to change the source configuration. +For more information see <>. + +TIP: If <> are enabled in your Kibana instance, any configuration changes you make here are specific to the current space. +You can make different subsets of data available by creating multiple spaces with different data source configurations. + diff --git a/docs/logs/using.asciidoc b/docs/logs/using.asciidoc index bebc225feb0e6..65693f4399e53 100644 --- a/docs/logs/using.asciidoc +++ b/docs/logs/using.asciidoc @@ -43,6 +43,11 @@ To quickly jump to a nearby point in time, click the minimap timeline to the rig Click *Customize* to customize the view. Here, you can set the scale to use for the minimap timeline, choose whether to wrap long lines, and choose your preferred text size. +[float] +=== Configuring the data to use for your logs + +If your logs have custom index patterns, use non-default field settings, or contain parsed fields which you want to expose as individual columns, you can <>. + [float] [[logs-stream]] === Stream or pause logs @@ -70,10 +75,10 @@ To highlight a word or phrase in the logs stream, click *Highlights* and enter y To inspect a log event, hover over it, then click the *View details* icon image:logs/images/logs-view-event.png[View event icon] beside the event. This opens the *Log event document details* fly-out that shows the fields associated with the log event. -To quickly filter the logs stream by one of the field values, click the *View event with filter* icon image:logs/images/logs-view-event-with-filter.png[View event icon] beside the field. +To quickly filter the logs stream by one of the field values, in the log event details, click the *View event with filter* icon image:logs/images/logs-view-event-with-filter.png[View event icon] beside the field. This automatically adds a search filter to the logs stream to filter the entries by this field and value. -In the log event details, click *Actions* to see the other actions related to the event. +To see other actions related to the event, in the log event details, click *Actions*. Depending on the event and the features you have installed and configured, you may also be able to: * Select *View status in Uptime* to <> in the *Uptime* app. From 7fd639b70017136bf83e70a65b3b440b285de6c8 Mon Sep 17 00:00:00 2001 From: Larry Gregory Date: Tue, 15 Oct 2019 09:17:40 -0400 Subject: [PATCH 31/46] Spaces - server-side to NP plugin (#46181) --- x-pack/.i18nrc.json | 2 +- .../actions/server/lib/action_executor.ts | 2 +- x-pack/legacy/plugins/actions/server/shim.ts | 2 +- x-pack/legacy/plugins/alerting/server/shim.ts | 2 +- .../plugins/ml/server/lib/spaces_utils.ts | 4 +- .../check_privileges_dynamically.test.ts | 6 +- .../check_privileges_dynamically.ts | 4 +- .../check_saved_objects_privileges.test.ts | 6 +- .../check_saved_objects_privileges.ts | 4 +- .../server/lib/authorization/service.ts | 4 +- x-pack/legacy/plugins/spaces/common/index.ts | 2 - x-pack/legacy/plugins/spaces/index.ts | 113 ++--- .../spaces/public/lib/spaces_manager.ts | 2 +- .../spaces/server/lib/check_license.ts | 41 -- .../spaces/server/lib/get_active_space.ts | 24 - .../server/lib/route_pre_check_license.ts | 24 - .../spaces/server/lib/space_schema.test.ts | 167 ------- .../plugins/spaces/server/lib/space_schema.ts | 25 - .../api/__fixtures__/create_test_handler.ts | 309 ------------ .../routes/api/external/copy_to_space.test.ts | 443 ----------------- .../routes/api/external/copy_to_space.ts | 145 ------ .../server/routes/api/external/delete.test.ts | 85 ---- .../server/routes/api/external/delete.ts | 41 -- .../server/routes/api/external/get.test.ts | 109 ----- .../spaces/server/routes/api/external/get.ts | 76 --- .../server/routes/api/external/index.ts | 47 -- .../server/routes/api/external/post.test.ts | 128 ----- .../spaces/server/routes/api/external/post.ts | 45 -- .../server/routes/api/external/put.test.ts | 156 ------ .../spaces/server/routes/api/external/put.ts | 46 -- .../server/routes/lib/get_space_by_id.ts | 24 - x-pack/plugins/spaces/common/constants.ts | 28 ++ x-pack/plugins/spaces/common/index.ts | 9 + .../spaces/common/is_reserved_space.test.ts | 34 ++ .../spaces/common/is_reserved_space.ts | 18 + .../spaces_url_parser.test.ts.snap | 0 .../common/lib/spaces_url_parser.test.ts | 0 .../spaces/common/lib/spaces_url_parser.ts | 0 .../spaces/common/model/space.ts} | 14 +- x-pack/plugins/spaces/common/model/types.ts | 7 + x-pack/plugins/spaces/kibana.json | 9 + x-pack/plugins/spaces/server/config.ts | 22 + x-pack/plugins/spaces/server/index.ts | 22 + .../spaces/server/lib/__fixtures__/index.ts | 7 + .../server/lib/__fixtures__/spaces_config.ts} | 10 +- .../create_default_space.test.ts.snap | 0 .../spaces/server/lib/audit_logger.test.ts | 0 .../plugins/spaces/server/lib/audit_logger.ts | 0 .../lib/copy_to_spaces/copy_to_spaces.test.ts | 0 .../lib/copy_to_spaces/copy_to_spaces.ts | 0 .../spaces/server/lib/copy_to_spaces/index.ts | 0 .../lib/create_empty_failure_response.ts | 0 .../copy_to_spaces/lib/get_eligible_types.ts | 0 .../lib/read_stream_to_completion.ts | 0 .../lib/readable_stream_from_array.ts | 0 .../resolve_copy_conflicts.test.ts | 0 .../copy_to_spaces/resolve_copy_conflicts.ts | 0 .../spaces/server/lib/copy_to_spaces/types.ts | 0 .../server/lib/create_default_space.test.ts | 26 +- .../spaces/server/lib/create_default_space.ts | 12 +- x-pack/plugins/spaces/server/lib/errors.ts | 17 + .../server/lib/get_space_selector_url.test.ts | 0 .../server/lib/get_space_selector_url.ts | 2 +- .../lib/get_spaces_usage_collector.test.ts | 89 ++-- .../server/lib/get_spaces_usage_collector.ts | 23 +- .../spaces/server/lib/migrations/index.ts | 7 + .../server/lib/migrations/migrate_6x.test.ts | 40 ++ .../server/lib/migrations/migrate_6x.ts | 12 + .../server/lib/request_interceptors/index.ts | 0 .../on_post_auth_interceptor.test.ts | 33 +- .../on_post_auth_interceptor.ts | 30 +- .../on_request_interceptor.test.ts | 10 +- .../on_request_interceptor.ts | 4 +- .../spaces_saved_objects_client.test.ts.snap | 0 .../saved_objects_client_wrapper_factory.ts | 2 +- .../spaces_saved_objects_client.test.ts | 2 +- .../spaces_saved_objects_client.ts | 2 +- .../spaces/server/lib/space_schema.test.ts | 231 +++++++++ .../plugins/spaces/server/lib/space_schema.ts | 43 ++ .../__snapshots__/spaces_client.test.ts.snap | 0 .../spaces/server/lib/spaces_client/index.ts | 0 .../lib/spaces_client/spaces_client.mock.ts | 2 +- .../lib/spaces_client/spaces_client.test.ts | 20 +- .../server/lib/spaces_client/spaces_client.ts | 6 +- .../spaces_tutorial_context_factory.test.ts | 20 +- .../lib/spaces_tutorial_context_factory.ts | 2 +- .../server/lib/toggle_ui_capabilities.test.ts | 2 +- .../server/lib/toggle_ui_capabilities.ts | 2 +- .../spaces/server/lib/utils/namespace.test.ts | 0 .../spaces/server/lib/utils/namespace.ts | 0 .../spaces/server/lib/utils/url.test.ts | 0 .../plugins/spaces/server/lib/utils/url.ts | 0 .../spaces/server}/plugin.ts | 154 +++--- .../api/__fixtures__/create_legacy_api.ts | 116 +++++ .../__fixtures__/create_mock_so_repository.ts | 43 ++ .../routes/api/__fixtures__/create_spaces.ts | 3 + .../server/routes/api/__fixtures__/index.ts | 11 +- .../routes/api/__fixtures__/route_contexts.ts | 29 ++ .../routes/api/external/copy_to_space.test.ts | 450 ++++++++++++++++++ .../routes/api/external/copy_to_space.ts | 152 ++++++ .../server/routes/api/external/delete.test.ts | 164 +++++++ .../server/routes/api/external/delete.ts | 43 ++ .../server/routes/api/external/get.test.ts | 127 +++++ .../spaces/server/routes/api/external/get.ts | 41 ++ .../routes/api/external/get_all.test.ts | 141 ++++++ .../server/routes/api/external/get_all.ts | 51 ++ .../server/routes/api/external/index.ts | 30 ++ .../server/routes/api/external/post.test.ts | 179 +++++++ .../spaces/server/routes/api/external/post.ts | 45 ++ .../server/routes/api/external/put.test.ts | 219 +++++++++ .../spaces/server/routes/api/external/put.ts | 47 ++ .../lib/convert_saved_object_to_space.test.ts | 0 .../lib/convert_saved_object_to_space.ts | 0 .../plugins/spaces/server/routes/lib/index.ts | 2 +- .../routes/lib/licensed_route_handler.ts | 32 ++ .../spaces/server}/spaces_service/index.ts | 0 .../spaces_service/spaces_service.mock.ts | 8 +- .../spaces_service/spaces_service.test.ts | 21 +- .../server}/spaces_service/spaces_service.ts | 32 +- .../apis/spaces/space_attributes.ts | 7 +- .../common/suites/copy_to_space.ts | 4 +- .../suites/resolve_copy_to_space_conflicts.ts | 2 +- 122 files changed, 2736 insertions(+), 2324 deletions(-) delete mode 100644 x-pack/legacy/plugins/spaces/server/lib/check_license.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/lib/get_active_space.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/lib/route_pre_check_license.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/lib/space_schema.test.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/lib/space_schema.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_test_handler.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.test.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/delete.test.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/delete.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/get.test.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/get.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/index.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/post.test.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/post.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/put.test.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/api/external/put.ts delete mode 100644 x-pack/legacy/plugins/spaces/server/routes/lib/get_space_by_id.ts create mode 100644 x-pack/plugins/spaces/common/constants.ts create mode 100644 x-pack/plugins/spaces/common/index.ts create mode 100644 x-pack/plugins/spaces/common/is_reserved_space.test.ts create mode 100644 x-pack/plugins/spaces/common/is_reserved_space.ts rename x-pack/{legacy => }/plugins/spaces/common/lib/__snapshots__/spaces_url_parser.test.ts.snap (100%) rename x-pack/{legacy => }/plugins/spaces/common/lib/spaces_url_parser.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/common/lib/spaces_url_parser.ts (100%) rename x-pack/{legacy/plugins/spaces/server/new_platform/index.ts => plugins/spaces/common/model/space.ts} (54%) create mode 100644 x-pack/plugins/spaces/common/model/types.ts create mode 100644 x-pack/plugins/spaces/kibana.json create mode 100644 x-pack/plugins/spaces/server/config.ts create mode 100644 x-pack/plugins/spaces/server/index.ts create mode 100644 x-pack/plugins/spaces/server/lib/__fixtures__/index.ts rename x-pack/{legacy/plugins/spaces/server/new_platform/config.ts => plugins/spaces/server/lib/__fixtures__/spaces_config.ts} (51%) rename x-pack/{legacy => }/plugins/spaces/server/lib/__snapshots__/create_default_space.test.ts.snap (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/audit_logger.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/audit_logger.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/index.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/lib/create_empty_failure_response.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/lib/get_eligible_types.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/lib/read_stream_to_completion.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/lib/readable_stream_from_array.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/copy_to_spaces/types.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/create_default_space.test.ts (86%) rename x-pack/{legacy => }/plugins/spaces/server/lib/create_default_space.ts (80%) create mode 100644 x-pack/plugins/spaces/server/lib/errors.ts rename x-pack/{legacy => }/plugins/spaces/server/lib/get_space_selector_url.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/get_space_selector_url.ts (81%) rename x-pack/{legacy => }/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts (62%) rename x-pack/{legacy => }/plugins/spaces/server/lib/get_spaces_usage_collector.ts (83%) create mode 100644 x-pack/plugins/spaces/server/lib/migrations/index.ts create mode 100644 x-pack/plugins/spaces/server/lib/migrations/migrate_6x.test.ts create mode 100644 x-pack/plugins/spaces/server/lib/migrations/migrate_6x.ts rename x-pack/{legacy => }/plugins/spaces/server/lib/request_interceptors/index.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts (94%) rename x-pack/{legacy => }/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts (85%) rename x-pack/{legacy => }/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts (96%) rename x-pack/{legacy => }/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts (93%) rename x-pack/{legacy => }/plugins/spaces/server/lib/saved_objects_client/__snapshots__/spaces_saved_objects_client.test.ts.snap (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts (88%) rename x-pack/{legacy => }/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts (99%) rename x-pack/{legacy => }/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts (98%) create mode 100644 x-pack/plugins/spaces/server/lib/space_schema.test.ts create mode 100644 x-pack/plugins/spaces/server/lib/space_schema.ts rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_client/__snapshots__/spaces_client.test.ts.snap (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_client/index.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts (96%) rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts (98%) rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_client/spaces_client.ts (97%) rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts (81%) rename x-pack/{legacy => }/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts (86%) rename x-pack/{legacy => }/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts (98%) rename x-pack/{legacy => }/plugins/spaces/server/lib/toggle_ui_capabilities.ts (97%) rename x-pack/{legacy => }/plugins/spaces/server/lib/utils/namespace.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/utils/namespace.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/utils/url.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/lib/utils/url.ts (100%) rename x-pack/{legacy/plugins/spaces/server/new_platform => plugins/spaces/server}/plugin.ts (57%) create mode 100644 x-pack/plugins/spaces/server/routes/api/__fixtures__/create_legacy_api.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/__fixtures__/create_mock_so_repository.ts rename x-pack/{legacy => }/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts (86%) rename x-pack/{legacy => }/plugins/spaces/server/routes/api/__fixtures__/index.ts (56%) create mode 100644 x-pack/plugins/spaces/server/routes/api/__fixtures__/route_contexts.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/copy_to_space.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/delete.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/delete.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/get.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/get.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/get_all.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/get_all.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/index.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/post.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/post.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/put.test.ts create mode 100644 x-pack/plugins/spaces/server/routes/api/external/put.ts rename x-pack/{legacy => }/plugins/spaces/server/routes/lib/convert_saved_object_to_space.test.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts (100%) rename x-pack/{legacy => }/plugins/spaces/server/routes/lib/index.ts (81%) create mode 100644 x-pack/plugins/spaces/server/routes/lib/licensed_route_handler.ts rename x-pack/{legacy/plugins/spaces/server/new_platform => plugins/spaces/server}/spaces_service/index.ts (100%) rename x-pack/{legacy/plugins/spaces/server/new_platform => plugins/spaces/server}/spaces_service/spaces_service.mock.ts (76%) rename x-pack/{legacy/plugins/spaces/server/new_platform => plugins/spaces/server}/spaces_service/spaces_service.test.ts (92%) rename x-pack/{legacy/plugins/spaces/server/new_platform => plugins/spaces/server}/spaces_service/spaces_service.ts (81%) diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 1eb5bd752baee..872d4ed9c29d1 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -35,7 +35,7 @@ "xpack.security": "legacy/plugins/security", "xpack.server": "legacy/server", "xpack.snapshotRestore": "legacy/plugins/snapshot_restore", - "xpack.spaces": "legacy/plugins/spaces", + "xpack.spaces": ["legacy/plugins/spaces", "plugins/spaces"], "xpack.transform": "legacy/plugins/transform", "xpack.upgradeAssistant": "legacy/plugins/upgrade_assistant", "xpack.uptime": "legacy/plugins/uptime", diff --git a/x-pack/legacy/plugins/actions/server/lib/action_executor.ts b/x-pack/legacy/plugins/actions/server/lib/action_executor.ts index 5df2fe082eb13..aef389262f884 100644 --- a/x-pack/legacy/plugins/actions/server/lib/action_executor.ts +++ b/x-pack/legacy/plugins/actions/server/lib/action_executor.ts @@ -6,7 +6,7 @@ import Hapi from 'hapi'; import { EncryptedSavedObjectsStartContract } from '../shim'; -import { SpacesPlugin as SpacesPluginStartContract } from '../../../spaces'; +import { LegacySpacesPlugin as SpacesPluginStartContract } from '../../../spaces'; import { Logger } from '../../../../../../src/core/server'; import { validateParams, validateConfig, validateSecrets } from './validate_with_schema'; import { diff --git a/x-pack/legacy/plugins/actions/server/shim.ts b/x-pack/legacy/plugins/actions/server/shim.ts index 60873ffed0e8e..c457a40a78b67 100644 --- a/x-pack/legacy/plugins/actions/server/shim.ts +++ b/x-pack/legacy/plugins/actions/server/shim.ts @@ -11,7 +11,7 @@ import { ActionsConfigType } from './types'; import { TaskManager } from '../../task_manager'; import { XPackMainPlugin } from '../../xpack_main/xpack_main'; import KbnServer from '../../../../../src/legacy/server/kbn_server'; -import { SpacesPlugin as SpacesPluginStartContract } from '../../spaces'; +import { LegacySpacesPlugin as SpacesPluginStartContract } from '../../spaces'; import { EncryptedSavedObjectsPlugin } from '../../encrypted_saved_objects'; import { PluginSetupContract as SecurityPlugin } from '../../../../plugins/security/server'; import { diff --git a/x-pack/legacy/plugins/alerting/server/shim.ts b/x-pack/legacy/plugins/alerting/server/shim.ts index 78fb0837d1031..c977fda451df1 100644 --- a/x-pack/legacy/plugins/alerting/server/shim.ts +++ b/x-pack/legacy/plugins/alerting/server/shim.ts @@ -6,7 +6,7 @@ import Hapi from 'hapi'; import { Legacy } from 'kibana'; -import { SpacesPlugin as SpacesPluginStartContract } from '../../spaces'; +import { LegacySpacesPlugin as SpacesPluginStartContract } from '../../spaces'; import { TaskManager } from '../../task_manager'; import { XPackMainPlugin } from '../../xpack_main/xpack_main'; import KbnServer from '../../../../../src/legacy/server/kbn_server'; diff --git a/x-pack/legacy/plugins/ml/server/lib/spaces_utils.ts b/x-pack/legacy/plugins/ml/server/lib/spaces_utils.ts index 0ebce3d1451bf..115e7fe6ba434 100644 --- a/x-pack/legacy/plugins/ml/server/lib/spaces_utils.ts +++ b/x-pack/legacy/plugins/ml/server/lib/spaces_utils.ts @@ -5,7 +5,7 @@ */ import { Request } from 'hapi'; -import { SpacesPlugin } from '../../../spaces'; +import { LegacySpacesPlugin } from '../../../spaces'; import { Space } from '../../../spaces/common/model/space'; interface GetActiveSpaceResponse { @@ -13,7 +13,7 @@ interface GetActiveSpaceResponse { space?: Space; } -export function spacesUtilsProvider(spacesPlugin: SpacesPlugin, request: Request) { +export function spacesUtilsProvider(spacesPlugin: LegacySpacesPlugin, request: Request) { async function activeSpace(): Promise { try { return { diff --git a/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.test.ts b/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.test.ts index 234667b1a4d3c..6df9d6801e2dc 100644 --- a/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.test.ts +++ b/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { SpacesPlugin } from '../../../../spaces'; +import { LegacySpacesPlugin } from '../../../../spaces'; import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; import { checkPrivilegesDynamicallyWithRequestFactory } from './check_privileges_dynamically'; @@ -23,7 +23,7 @@ test(`checkPrivileges.atSpace when spaces is enabled`, async () => { getBasePath: jest.fn(), getScopedSpacesClient: jest.fn(), getActiveSpace: jest.fn(), - } as OptionalPlugin; + } as OptionalPlugin; const request = Symbol(); const privilegeOrPrivileges = ['foo', 'bar']; const checkPrivilegesDynamically = checkPrivilegesDynamicallyWithRequestFactory( @@ -45,7 +45,7 @@ test(`checkPrivileges.globally when spaces is disabled`, async () => { const mockCheckPrivilegesWithRequest = jest.fn().mockReturnValue(mockCheckPrivileges); const mockSpaces = { isEnabled: false, - } as OptionalPlugin; + } as OptionalPlugin; const request = Symbol(); const privilegeOrPrivileges = ['foo', 'bar']; const checkPrivilegesDynamically = checkPrivilegesDynamicallyWithRequestFactory( diff --git a/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.ts b/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.ts index 537bc07f8e80c..243ad100c5715 100644 --- a/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.ts +++ b/x-pack/legacy/plugins/security/server/lib/authorization/check_privileges_dynamically.ts @@ -13,7 +13,7 @@ import { CheckPrivilegesAtResourceResponse, CheckPrivilegesWithRequest } from '. * you may not use this file except in compliance with the Elastic License. */ -import { SpacesPlugin } from '../../../../spaces'; +import { LegacySpacesPlugin } from '../../../../spaces'; import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; export type CheckPrivilegesDynamically = ( @@ -26,7 +26,7 @@ export type CheckPrivilegesDynamicallyWithRequest = ( export function checkPrivilegesDynamicallyWithRequestFactory( checkPrivilegesWithRequest: CheckPrivilegesWithRequest, - spaces: OptionalPlugin + spaces: OptionalPlugin ): CheckPrivilegesDynamicallyWithRequest { return function checkPrivilegesDynamicallyWithRequest(request: Legacy.Request) { const checkPrivileges = checkPrivilegesWithRequest(request); diff --git a/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.test.ts b/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.test.ts index 82bd784a917cd..7fa02330fac97 100644 --- a/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.test.ts +++ b/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { SpacesPlugin } from '../../../../spaces'; +import { LegacySpacesPlugin } from '../../../../spaces'; import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; import { checkSavedObjectsPrivilegesWithRequestFactory } from './check_saved_objects_privileges'; @@ -19,7 +19,7 @@ test(`checkPrivileges.atSpace when spaces is enabled`, async () => { const mockSpaces = ({ isEnabled: true, namespaceToSpaceId: jest.fn().mockReturnValue(spaceId), - } as unknown) as OptionalPlugin; + } as unknown) as OptionalPlugin; const request = Symbol(); const privilegeOrPrivileges = ['foo', 'bar']; @@ -50,7 +50,7 @@ test(`checkPrivileges.globally when spaces is disabled`, async () => { namespaceToSpaceId: jest.fn().mockImplementation(() => { throw new Error('should not be called'); }), - } as unknown) as OptionalPlugin; + } as unknown) as OptionalPlugin; const request = Symbol(); diff --git a/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.ts b/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.ts index e20a843537541..fb1d258b5a05f 100644 --- a/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.ts +++ b/x-pack/legacy/plugins/security/server/lib/authorization/check_saved_objects_privileges.ts @@ -5,7 +5,7 @@ */ import { Legacy } from 'kibana'; -import { SpacesPlugin } from '../../../../spaces'; +import { LegacySpacesPlugin } from '../../../../spaces'; import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; import { CheckPrivilegesAtResourceResponse, CheckPrivilegesWithRequest } from './check_privileges'; @@ -19,7 +19,7 @@ export type CheckSavedObjectsPrivileges = ( export const checkSavedObjectsPrivilegesWithRequestFactory = ( checkPrivilegesWithRequest: CheckPrivilegesWithRequest, - spaces: OptionalPlugin + spaces: OptionalPlugin ): CheckSavedObjectsPrivilegesWithRequest => { return function checkSavedObjectsPrivilegesWithRequest(request: Legacy.Request) { return async function checkSavedObjectsPrivileges( diff --git a/x-pack/legacy/plugins/security/server/lib/authorization/service.ts b/x-pack/legacy/plugins/security/server/lib/authorization/service.ts index e939deb64bc09..3d248adb9f8b8 100644 --- a/x-pack/legacy/plugins/security/server/lib/authorization/service.ts +++ b/x-pack/legacy/plugins/security/server/lib/authorization/service.ts @@ -7,7 +7,7 @@ import { Server } from 'hapi'; import { getClient } from '../../../../../server/lib/get_client_shield'; -import { SpacesPlugin } from '../../../../spaces'; +import { LegacySpacesPlugin } from '../../../../spaces'; import { XPackFeature, XPackMainPlugin } from '../../../../xpack_main/xpack_main'; import { APPLICATION_PREFIX } from '../../../common/constants'; import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; @@ -38,7 +38,7 @@ export function createAuthorizationService( server: Server, securityXPackFeature: XPackFeature, xpackMainPlugin: XPackMainPlugin, - spaces: OptionalPlugin + spaces: OptionalPlugin ): AuthorizationService { const shieldClient = getClient(server); const config = server.config(); diff --git a/x-pack/legacy/plugins/spaces/common/index.ts b/x-pack/legacy/plugins/spaces/common/index.ts index a0842201e0f08..8961c9c5ccf79 100644 --- a/x-pack/legacy/plugins/spaces/common/index.ts +++ b/x-pack/legacy/plugins/spaces/common/index.ts @@ -6,5 +6,3 @@ export { isReservedSpace } from './is_reserved_space'; export { MAX_SPACE_INITIALS } from './constants'; - -export { getSpaceIdFromPath, addSpaceIdToPath } from './lib/spaces_url_parser'; diff --git a/x-pack/legacy/plugins/spaces/index.ts b/x-pack/legacy/plugins/spaces/index.ts index a287aa2fcbb3f..a92fdcb9304cd 100644 --- a/x-pack/legacy/plugins/spaces/index.ts +++ b/x-pack/legacy/plugins/spaces/index.ts @@ -4,29 +4,29 @@ * you may not use this file except in compliance with the Elastic License. */ -import * as Rx from 'rxjs'; import { resolve } from 'path'; import KbnServer, { Server } from 'src/legacy/server/kbn_server'; -import { CoreSetup, PluginInitializerContext } from 'src/core/server'; +import { Legacy } from 'kibana'; +import { KibanaRequest } from '../../../../src/core/server'; +import { SpacesServiceSetup } from '../../../plugins/spaces/server/spaces_service/spaces_service'; +import { SpacesPluginSetup } from '../../../plugins/spaces/server'; import { createOptionalPlugin } from '../../server/lib/optional_plugin'; // @ts-ignore import { AuditLogger } from '../../server/lib/audit_logger'; import mappings from './mappings.json'; import { wrapError } from './server/lib/errors'; -import { getActiveSpace } from './server/lib/get_active_space'; import { migrateToKibana660 } from './server/lib/migrations'; -import { plugin } from './server/new_platform'; import { SecurityPlugin } from '../security'; -import { SpacesServiceSetup } from './server/new_platform/spaces_service/spaces_service'; +// @ts-ignore +import { watchStatusAndLicenseToInitialize } from '../../server/lib/watch_status_and_license_to_initialize'; import { initSpaceSelectorView, initEnterSpaceView } from './server/routes/views'; -export interface SpacesPlugin { - getSpaceId: SpacesServiceSetup['getSpaceId']; - getActiveSpace: SpacesServiceSetup['getActiveSpace']; +export interface LegacySpacesPlugin { + getSpaceId: (request: Legacy.Request) => ReturnType; + getActiveSpace: (request: Legacy.Request) => ReturnType; spaceIdToNamespace: SpacesServiceSetup['spaceIdToNamespace']; namespaceToSpaceId: SpacesServiceSetup['namespaceToSpaceId']; getBasePath: SpacesServiceSetup['getBasePath']; - getScopedSpacesClient: SpacesServiceSetup['scopedClient']; } export const spaces = (kibana: Record) => @@ -36,13 +36,6 @@ export const spaces = (kibana: Record) => publicDir: resolve(__dirname, 'public'), require: ['kibana', 'elasticsearch', 'xpack_main'], - config(Joi: any) { - return Joi.object({ - enabled: Joi.boolean().default(true), - maxSpaces: Joi.number().default(1000), - }).default(); - }, - uiCapabilities() { return { spaces: { @@ -92,18 +85,20 @@ export const spaces = (kibana: Record) => }, async replaceInjectedVars( vars: Record, - request: Record, + request: Legacy.Request, server: Record ) { - const spacesClient = await server.plugins.spaces.getScopedSpacesClient(request); + const spacesPlugin = server.newPlatform.setup.plugins.spaces as SpacesPluginSetup; + if (!spacesPlugin) { + throw new Error('New Platform XPack Spaces plugin is not available.'); + } + const kibanaRequest = KibanaRequest.from(request); + const spaceId = spacesPlugin.spacesService.getSpaceId(kibanaRequest); + const spacesClient = await spacesPlugin.spacesService.scopedClient(kibanaRequest); try { vars.activeSpace = { valid: true, - space: await getActiveSpace( - spacesClient, - request.getBasePath(), - server.config().get('server.basePath') - ), + space: await spacesClient.get(spaceId), }; } catch (e) { vars.activeSpace = { @@ -118,52 +113,18 @@ export const spaces = (kibana: Record) => async init(server: Server) { const kbnServer = (server as unknown) as KbnServer; - const initializerContext = { - config: { - create: () => { - return Rx.of({ - maxSpaces: server.config().get('xpack.spaces.maxSpaces'), - }); - }, - }, - logger: { - get(...contextParts: string[]) { - return kbnServer.newPlatform.coreContext.logger.get( - 'plugins', - 'spaces', - ...contextParts - ); - }, - }, - } as PluginInitializerContext; - const core = (kbnServer.newPlatform.setup.core as unknown) as CoreSetup; - - const plugins = { - xpackMain: server.plugins.xpack_main, - // TODO: Spaces has a circular dependency with Security right now. - // Security is not yet available when init runs, so this is wrapped in an optional function for the time being. - security: createOptionalPlugin( - server.config(), - 'xpack.security', - server.plugins, - 'security' - ), - spaces: this, - }; - - const { spacesService, registerLegacyAPI } = await plugin(initializerContext).setup( - core, - plugins - ); + const spacesPlugin = kbnServer.newPlatform.setup.plugins.spaces as SpacesPluginSetup; + if (!spacesPlugin) { + throw new Error('New Platform XPack Spaces plugin is not available.'); + } const config = server.config(); + const { registerLegacyAPI, createDefaultSpace } = spacesPlugin.__legacyCompat; + registerLegacyAPI({ - router: server.route.bind(server), legacyConfig: { - serverBasePath: config.get('server.basePath'), - serverDefaultRoute: config.get('server.defaultRoute'), kibanaIndex: config.get('kibana.index'), }, savedObjects: server.savedObjects, @@ -178,16 +139,30 @@ export const spaces = (kibana: Record) => create: (pluginId: string) => new AuditLogger(server, pluginId, server.config(), server.plugins.xpack_main.info), }, + security: createOptionalPlugin( + server.config(), + 'xpack.security', + server.plugins, + 'security' + ), + xpackMain: server.plugins.xpack_main, }); initEnterSpaceView(server); initSpaceSelectorView(server); - server.expose('getSpaceId', (request: any) => spacesService.getSpaceId(request)); - server.expose('getActiveSpace', spacesService.getActiveSpace); - server.expose('spaceIdToNamespace', spacesService.spaceIdToNamespace); - server.expose('namespaceToSpaceId', spacesService.namespaceToSpaceId); - server.expose('getBasePath', spacesService.getBasePath); - server.expose('getScopedSpacesClient', spacesService.scopedClient); + watchStatusAndLicenseToInitialize(server.plugins.xpack_main, this, async () => { + await createDefaultSpace(); + }); + + server.expose('getSpaceId', (request: Legacy.Request) => + spacesPlugin.spacesService.getSpaceId(request) + ); + server.expose('getActiveSpace', (request: Legacy.Request) => + spacesPlugin.spacesService.getActiveSpace(request) + ); + server.expose('spaceIdToNamespace', spacesPlugin.spacesService.spaceIdToNamespace); + server.expose('namespaceToSpaceId', spacesPlugin.spacesService.namespaceToSpaceId); + server.expose('getBasePath', spacesPlugin.spacesService.getBasePath); }, }); diff --git a/x-pack/legacy/plugins/spaces/public/lib/spaces_manager.ts b/x-pack/legacy/plugins/spaces/public/lib/spaces_manager.ts index e40e247e405fb..c1672e65326aa 100644 --- a/x-pack/legacy/plugins/spaces/public/lib/spaces_manager.ts +++ b/x-pack/legacy/plugins/spaces/public/lib/spaces_manager.ts @@ -10,7 +10,7 @@ import { Space } from '../../common/model/space'; import { GetSpacePurpose } from '../../common/model/types'; import { CopySavedObjectsToSpaceResponse } from './copy_saved_objects_to_space/types'; import { ENTER_SPACE_PATH } from '../../common/constants'; -import { addSpaceIdToPath } from '../../common'; +import { addSpaceIdToPath } from '../../../../../plugins/spaces/common'; export class SpacesManager extends EventEmitter { constructor(private readonly serverBasePath: string) { diff --git a/x-pack/legacy/plugins/spaces/server/lib/check_license.ts b/x-pack/legacy/plugins/spaces/server/lib/check_license.ts deleted file mode 100644 index 15dea834d2f15..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/lib/check_license.ts +++ /dev/null @@ -1,41 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -export interface LicenseCheckResult { - showSpaces: boolean; -} - -/** - * Returns object that defines behavior of the spaces related features based - * on the license information extracted from the xPackInfo. - * @param {XPackInfo} xPackInfo XPackInfo instance to extract license information from. - * @returns {LicenseCheckResult} - */ -export function checkLicense(xPackInfo: any): LicenseCheckResult { - if (!xPackInfo.isAvailable()) { - return { - showSpaces: false, - }; - } - - const isAnyXpackLicense = xPackInfo.license.isOneOf([ - 'basic', - 'standard', - 'gold', - 'platinum', - 'trial', - ]); - - if (!isAnyXpackLicense) { - return { - showSpaces: false, - }; - } - - return { - showSpaces: true, - }; -} diff --git a/x-pack/legacy/plugins/spaces/server/lib/get_active_space.ts b/x-pack/legacy/plugins/spaces/server/lib/get_active_space.ts deleted file mode 100644 index a77a945239100..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/lib/get_active_space.ts +++ /dev/null @@ -1,24 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { Space } from '../../common/model/space'; -import { wrapError } from './errors'; -import { SpacesClient } from './spaces_client'; -import { getSpaceIdFromPath } from '../../common'; - -export async function getActiveSpace( - spacesClient: SpacesClient, - requestBasePath: string, - serverBasePath: string -): Promise { - const spaceId = getSpaceIdFromPath(requestBasePath, serverBasePath); - - try { - return spacesClient.get(spaceId); - } catch (e) { - throw wrapError(e); - } -} diff --git a/x-pack/legacy/plugins/spaces/server/lib/route_pre_check_license.ts b/x-pack/legacy/plugins/spaces/server/lib/route_pre_check_license.ts deleted file mode 100644 index b29f55d6669aa..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/lib/route_pre_check_license.ts +++ /dev/null @@ -1,24 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Boom from 'boom'; -import { XPackMainPlugin } from '../../../xpack_main/xpack_main'; - -interface LicenseCheckDeps { - xpackMain: XPackMainPlugin; -} - -export function routePreCheckLicense({ xpackMain }: LicenseCheckDeps) { - const pluginId = 'spaces'; - return function forbidApiAccess(request: any) { - const licenseCheckResults = xpackMain.info.feature(pluginId).getLicenseCheckResults(); - if (!licenseCheckResults.showSpaces) { - return Boom.forbidden(licenseCheckResults.linksMessage); - } else { - return ''; - } - }; -} diff --git a/x-pack/legacy/plugins/spaces/server/lib/space_schema.test.ts b/x-pack/legacy/plugins/spaces/server/lib/space_schema.test.ts deleted file mode 100644 index f3356c7f090f5..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/lib/space_schema.test.ts +++ /dev/null @@ -1,167 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { spaceSchema } from './space_schema'; - -const defaultProperties = { - id: 'foo', - name: 'foo', -}; - -describe('#id', () => { - test('is optional', () => { - const result = spaceSchema.validate({ - ...defaultProperties, - id: undefined, - }); - expect(result.error).toBeNull(); - }); - - test('allows lowercase a-z, 0-9, "_" and "-"', () => { - const result = spaceSchema.validate({ - ...defaultProperties, - id: 'abcdefghijklmnopqrstuvwxyz0123456789_-', - }); - expect(result.error).toBeNull(); - }); - - test(`doesn't allow uppercase`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - id: 'Foo', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "id" fails because ["id" with value "Foo" fails to match the lower case, a-z, 0-9, "_", and "-" are allowed pattern]]` - ); - }); - - test(`doesn't allow an empty string`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - id: '', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "id" fails because ["id" is not allowed to be empty]]` - ); - }); - - ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', ',', '.', '/', '?'].forEach( - invalidCharacter => { - test(`doesn't allow ${invalidCharacter}`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - id: `foo-${invalidCharacter}`, - }); - expect(result.error).toMatchObject({ - message: `child "id" fails because ["id" with value "foo-${invalidCharacter}" fails to match the lower case, a-z, 0-9, "_", and "-" are allowed pattern]`, - }); - }); - } - ); -}); - -describe('#color', () => { - test('is optional', () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: undefined, - }); - expect(result.error).toBeNull(); - }); - - test(`doesn't allow an empty string`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "color" fails because ["color" is not allowed to be empty]]` - ); - }); - - test(`allows lower case hex color code`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '#aabbcc', - }); - expect(result.error).toBeNull(); - }); - - test(`allows upper case hex color code`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '#AABBCC', - }); - expect(result.error).toBeNull(); - }); - - test(`allows numeric hex color code`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '#123456', - }); - expect(result.error).toBeNull(); - }); - - test(`must start with a hash`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '123456', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "color" fails because ["color" with value "123456" fails to match the 6 digit hex color, starting with a # pattern]]` - ); - }); - - test(`cannot exceed 6 digits following the hash`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '1234567', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "color" fails because ["color" with value "1234567" fails to match the 6 digit hex color, starting with a # pattern]]` - ); - }); - - test(`cannot be fewer than 6 digits following the hash`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - color: '12345', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "color" fails because ["color" with value "12345" fails to match the 6 digit hex color, starting with a # pattern]]` - ); - }); -}); - -describe('#imageUrl', () => { - test('is optional', () => { - const result = spaceSchema.validate({ - ...defaultProperties, - imageUrl: undefined, - }); - expect(result.error).toBeNull(); - }); - - test(`must start with data:image`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - imageUrl: 'notValid', - }); - expect(result.error).toMatchInlineSnapshot( - `[ValidationError: child "imageUrl" fails because ["imageUrl" with value "notValid" fails to match the Image URL should start with 'data:image' pattern]]` - ); - }); - - test(`checking that a valid image is accepted as imageUrl`, () => { - const result = spaceSchema.validate({ - ...defaultProperties, - imageUrl: - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTnU1rJkAAAB3klEQVRYR+2WzUrDQBCARzwqehE8ir1WPfgqRRA1bePBXgpe/MGCB9/Aiw+j+ASCB6kotklaEwW1F0WwNSaps9lV69awGzBpDzt8pJP9mXxsmk3ABH2oUEIilJAIJSRCCYlQQiKUkIh4QgY5agZodVjBowFrBktWQzDBU2ykiYaDuQpCYgnl3QunGzM6Z6YF+b5SkcgK1UH/aLbYReQiYL9d9/o+XFop5IU0Vl4uapAzoXC3eEBPw9vH1/wT6Vs2otPSkoH/IZzlzO/TU2vgQm8nl69Hp0H7nZ4OXogLJSSKBIUC3w88n+Ueyfv56fVZnqCQNVnCHbLrkV0Gd2d+GNkglsk438dhaTxloZDutV4wb06Vf40JcWZ2sMttPpE8NaHGeBnzIAhwPXqHseVB11EyLD0hxLUeaYud2a3B0g3k7GyFtrhX7F2RqhC+yV3jgTb2Rqdqf7/kUxYiWBOlTtXxfPJEtc8b5thGb+8AhL4ohnCNqQjZ2T2+K5rnw2M6KwEhKNDSGM3pTdxjhDgLbHkw/v/zw4AiPuSsfMzAiTidKxiF/ArpFqyzK8SMOlkwvloUMYRCtNvZLWeuIomd2Za/WZS4QomjhEQoIRFKSIQSEqGERAyfEH4YDBFQ/ARU6BiBxCAIQQAAAABJRU5ErkJggg==', - }); - expect(result.error).toBeNull(); - }); -}); diff --git a/x-pack/legacy/plugins/spaces/server/lib/space_schema.ts b/x-pack/legacy/plugins/spaces/server/lib/space_schema.ts deleted file mode 100644 index 2b8175b09794e..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/lib/space_schema.ts +++ /dev/null @@ -1,25 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Joi from 'joi'; -import { MAX_SPACE_INITIALS } from '../../common/constants'; - -export const SPACE_ID_REGEX = /^[a-z0-9_\-]+$/; - -export const spaceSchema = Joi.object({ - id: Joi.string().regex(SPACE_ID_REGEX, `lower case, a-z, 0-9, "_", and "-" are allowed`), - name: Joi.string().required(), - description: Joi.string().allow(''), - initials: Joi.string().max(MAX_SPACE_INITIALS), - color: Joi.string().regex(/^#[a-zA-Z0-9]{6}$/, `6 digit hex color, starting with a #`), - disabledFeatures: Joi.array() - .items(Joi.string()) - .default([]), - _reserved: Joi.boolean(), - imageUrl: Joi.string() - .allow('') - .regex(/^data:image.*$/, `Image URL should start with 'data:image'`), -}).default(); diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_test_handler.ts b/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_test_handler.ts deleted file mode 100644 index 405a3dd34e7fc..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_test_handler.ts +++ /dev/null @@ -1,309 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import * as Rx from 'rxjs'; -import { Server } from 'hapi'; -import { Legacy } from 'kibana'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { elasticsearchServiceMock, coreMock } from 'src/core/server/mocks'; -import { SavedObjectsSchema, SavedObjectsLegacyService } from 'src/core/server'; -import { Readable } from 'stream'; -import { createPromiseFromStreams, createConcatStream } from 'src/legacy/utils/streams'; -import { createOptionalPlugin } from '../../../../../../server/lib/optional_plugin'; -import { SpacesClient } from '../../../lib/spaces_client'; -import { createSpaces } from './create_spaces'; -import { ExternalRouteDeps } from '../external'; -import { SpacesService } from '../../../new_platform/spaces_service'; -import { SpacesAuditLogger } from '../../../lib/audit_logger'; -import { LegacyAPI } from '../../../new_platform/plugin'; - -interface KibanaServer extends Legacy.Server { - savedObjects: any; -} - -export interface TestConfig { - [configKey: string]: any; -} - -export interface TestOptions { - setupFn?: (server: any) => void; - testConfig?: TestConfig; - payload?: any; - preCheckLicenseImpl?: (req: any, h: any) => any; - expectSpacesClientCall?: boolean; - expectPreCheckLicenseCall?: boolean; -} - -export type TeardownFn = () => void; - -export interface RequestRunnerResult { - server: any; - mockSavedObjectsRepository: any; - mockSavedObjectsService: { - getScopedSavedObjectsClient: jest.Mock< - SavedObjectsLegacyService['getScopedSavedObjectsClient'] - >; - importExport: { - getSortedObjectsForExport: jest.Mock< - SavedObjectsLegacyService['importExport']['getSortedObjectsForExport'] - >; - importSavedObjects: jest.Mock< - SavedObjectsLegacyService['importExport']['importSavedObjects'] - >; - resolveImportErrors: jest.Mock< - SavedObjectsLegacyService['importExport']['resolveImportErrors'] - >; - }; - }; - headers: Record; - response: any; -} - -export type RequestRunner = ( - method: string, - path: string, - options?: TestOptions -) => Promise; - -export const defaultPreCheckLicenseImpl = (request: any) => ''; - -const baseConfig: TestConfig = { - 'server.basePath': '', -}; - -async function readStreamToCompletion(stream: Readable) { - return (createPromiseFromStreams([stream, createConcatStream([])]) as unknown) as any[]; -} - -export function createTestHandler(initApiFn: (deps: ExternalRouteDeps) => void) { - const teardowns: TeardownFn[] = []; - - const spaces = createSpaces(); - - const request: RequestRunner = async ( - method: string, - path: string, - options: TestOptions = {} - ) => { - const { - setupFn = () => { - return; - }, - testConfig = {}, - payload, - preCheckLicenseImpl = defaultPreCheckLicenseImpl, - expectPreCheckLicenseCall = true, - expectSpacesClientCall = true, - } = options; - - let pre = jest.fn(); - if (preCheckLicenseImpl) { - pre = pre.mockImplementation(preCheckLicenseImpl); - } - - const server = new Server() as KibanaServer; - - const config = { - ...baseConfig, - ...testConfig, - }; - - await setupFn(server); - - const mockConfig = { - get: (key: string) => config[key], - }; - - server.decorate('server', 'config', jest.fn(() => mockConfig)); - - const mockSavedObjectsClientContract = { - get: jest.fn((type, id) => { - const result = spaces.filter(s => s.id === id); - if (!result.length) { - throw new Error(`not found: [${type}:${id}]`); - } - return result[0]; - }), - find: jest.fn(() => { - return { - total: spaces.length, - saved_objects: spaces, - }; - }), - create: jest.fn((type, attributes, { id }) => { - if (spaces.find(s => s.id === id)) { - throw new Error('conflict'); - } - return {}; - }), - update: jest.fn((type, id) => { - if (!spaces.find(s => s.id === id)) { - throw new Error('not found: during update'); - } - return {}; - }), - delete: jest.fn((type: string, id: string) => { - return {}; - }), - deleteByNamespace: jest.fn(), - }; - - server.savedObjects = { - types: ['visualization', 'dashboard', 'index-pattern', 'globalType'], - schema: new SavedObjectsSchema({ - space: { - isNamespaceAgnostic: true, - hidden: true, - }, - globalType: { - isNamespaceAgnostic: true, - }, - }), - getScopedSavedObjectsClient: jest.fn().mockResolvedValue(mockSavedObjectsClientContract), - importExport: { - getSortedObjectsForExport: jest.fn().mockResolvedValue( - new Readable({ - objectMode: true, - read() { - if (Array.isArray(payload.objects)) { - payload.objects.forEach((o: any) => this.push(o)); - } - this.push(null); - }, - }) - ), - importSavedObjects: jest.fn().mockImplementation(async (opts: Record) => { - const objectsToImport: any[] = await readStreamToCompletion(opts.readStream); - return { - success: true, - successCount: objectsToImport.length, - }; - }), - resolveImportErrors: jest.fn().mockImplementation(async (opts: Record) => { - const objectsToImport: any[] = await readStreamToCompletion(opts.readStream); - return { - success: true, - successCount: objectsToImport.length, - }; - }), - }, - SavedObjectsClient: { - errors: { - isNotFoundError: jest.fn((e: any) => e.message.startsWith('not found:')), - isConflictError: jest.fn((e: any) => e.message.startsWith('conflict')), - }, - }, - }; - - server.plugins.elasticsearch = { - createCluster: jest.fn(), - waitUntilReady: jest.fn(), - getCluster: jest.fn().mockReturnValue({ - callWithRequest: jest.fn(), - callWithInternalUser: jest.fn(), - }), - }; - - const log = { - log: jest.fn(), - trace: jest.fn(), - debug: jest.fn(), - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), - fatal: jest.fn(), - }; - - const coreSetupMock = coreMock.createSetup(); - - const legacyAPI = { - legacyConfig: { - serverBasePath: mockConfig.get('server.basePath'), - serverDefaultRoute: mockConfig.get('server.defaultRoute'), - }, - savedObjects: server.savedObjects, - } as LegacyAPI; - - const service = new SpacesService(log, () => legacyAPI); - const spacesService = await service.setup({ - http: coreSetupMock.http, - elasticsearch: elasticsearchServiceMock.createSetupContract(), - security: createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), - getSpacesAuditLogger: () => ({} as SpacesAuditLogger), - config$: Rx.of({ maxSpaces: 1000 }), - }); - - spacesService.scopedClient = jest.fn((req: any) => { - return Promise.resolve( - new SpacesClient( - null as any, - () => null, - null, - mockSavedObjectsClientContract, - { maxSpaces: 1000 }, - mockSavedObjectsClientContract, - req - ) - ); - }); - - initApiFn({ - routePreCheckLicenseFn: pre, - savedObjects: server.savedObjects, - spacesService, - log, - legacyRouter: server.route.bind(server), - }); - - teardowns.push(() => server.stop()); - - const headers = { - authorization: 'foo', - }; - - const testRun = async () => { - const response = await server.inject({ - method, - url: path, - headers, - payload, - }); - - if (preCheckLicenseImpl && expectPreCheckLicenseCall) { - expect(pre).toHaveBeenCalled(); - } else { - expect(pre).not.toHaveBeenCalled(); - } - - if (expectSpacesClientCall) { - expect(spacesService.scopedClient).toHaveBeenCalledWith( - expect.objectContaining({ - headers: expect.objectContaining({ - authorization: headers.authorization, - }), - }) - ); - } else { - expect(spacesService.scopedClient).not.toHaveBeenCalled(); - } - - return response; - }; - - return { - server, - headers, - mockSavedObjectsRepository: mockSavedObjectsClientContract, - mockSavedObjectsService: server.savedObjects, - response: await testRun(), - }; - }; - - return { - request, - teardowns, - }; -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.test.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.test.ts deleted file mode 100644 index 292fc21a2dd79..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.test.ts +++ /dev/null @@ -1,443 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -jest.mock('../../../lib/route_pre_check_license', () => { - return { - routePreCheckLicense: () => (request: any, h: any) => h.continue, - }; -}); - -jest.mock('../../../../../../server/lib/get_client_shield', () => { - return { - getClient: () => { - return { - callWithInternalUser: jest.fn(() => { - return; - }), - }; - }, - }; -}); - -import Boom from 'boom'; -import { createTestHandler, RequestRunner, TeardownFn } from '../__fixtures__'; -import { initCopyToSpacesApi } from './copy_to_space'; - -describe('POST /api/spaces/_copy_saved_objects', () => { - let request: RequestRunner; - let teardowns: TeardownFn[]; - - beforeEach(() => { - const setup = createTestHandler(initCopyToSpacesApi); - - request = setup.request; - teardowns = setup.teardowns; - }); - - afterEach(async () => { - await Promise.all(teardowns.splice(0).map(fn => fn())); - }); - - test(`returns result of routePreCheckLicense`, async () => { - const payload = { - spaces: ['a-space'], - objects: [], - }; - - const { response } = await request('POST', '/api/spaces/_copy_saved_objects', { - preCheckLicenseImpl: () => Boom.forbidden('test forbidden message'), - expectSpacesClientCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(403); - expect(JSON.parse(responsePayload)).toMatchObject({ - message: 'test forbidden message', - }); - }); - - test(`uses a Saved Objects Client instance without the spaces wrapper`, async () => { - const payload = { - spaces: ['a-space'], - objects: [], - }; - - const { mockSavedObjectsService } = await request('POST', '/api/spaces/_copy_saved_objects', { - expectSpacesClientCall: false, - payload, - }); - - expect(mockSavedObjectsService.getScopedSavedObjectsClient).toHaveBeenCalledWith( - expect.any(Object), - { - excludedWrappers: ['spaces'], - } - ); - }); - - test(`requires space IDs to be unique`, async () => { - const payload = { - spaces: ['a-space', 'a-space'], - objects: [], - }; - - const { response } = await request('POST', '/api/spaces/_copy_saved_objects', { - expectSpacesClientCall: false, - expectPreCheckLicenseCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(400); - expect(JSON.parse(responsePayload)).toMatchInlineSnapshot(` - Object { - "error": "Bad Request", - "message": "Invalid request payload input", - "statusCode": 400, - } - `); - }); - - test(`requires well-formed space IDS`, async () => { - const payload = { - spaces: ['a-space', 'a-space-invalid-!@#$%^&*()'], - objects: [], - }; - - const { response } = await request('POST', '/api/spaces/_copy_saved_objects', { - expectSpacesClientCall: false, - expectPreCheckLicenseCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(400); - expect(JSON.parse(responsePayload)).toMatchInlineSnapshot(` - Object { - "error": "Bad Request", - "message": "Invalid request payload input", - "statusCode": 400, - } - `); - }); - - test(`requires objects to be unique`, async () => { - const payload = { - spaces: ['a-space'], - objects: [{ type: 'foo', id: 'bar' }, { type: 'foo', id: 'bar' }], - }; - - const { response } = await request('POST', '/api/spaces/_copy_saved_objects', { - expectSpacesClientCall: false, - expectPreCheckLicenseCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(400); - expect(JSON.parse(responsePayload)).toMatchInlineSnapshot(` - Object { - "error": "Bad Request", - "message": "Invalid request payload input", - "statusCode": 400, - } - `); - }); - - test('does not allow namespace agnostic types to be copied (via "supportedTypes" property)', async () => { - const payload = { - spaces: ['a-space'], - objects: [{ type: 'globalType', id: 'bar' }, { type: 'visualization', id: 'bar' }], - }; - - const { response, mockSavedObjectsService } = await request( - 'POST', - '/api/spaces/_copy_saved_objects', - { - expectSpacesClientCall: false, - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsService.importExport.importSavedObjects).toHaveBeenCalledTimes(1); - const [ - importCallOptions, - ] = mockSavedObjectsService.importExport.importSavedObjects.mock.calls[0]; - - expect(importCallOptions).toMatchObject({ - namespace: 'a-space', - supportedTypes: ['visualization', 'dashboard', 'index-pattern'], - }); - }); - - test('copies to multiple spaces', async () => { - const payload = { - spaces: ['a-space', 'b-space'], - objects: [{ type: 'visualization', id: 'bar' }], - }; - - const { response, mockSavedObjectsService } = await request( - 'POST', - '/api/spaces/_copy_saved_objects', - { - expectSpacesClientCall: false, - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsService.importExport.importSavedObjects).toHaveBeenCalledTimes(2); - const [ - firstImportCallOptions, - ] = mockSavedObjectsService.importExport.importSavedObjects.mock.calls[0]; - - expect(firstImportCallOptions).toMatchObject({ - namespace: 'a-space', - }); - - const [ - secondImportCallOptions, - ] = mockSavedObjectsService.importExport.importSavedObjects.mock.calls[1]; - - expect(secondImportCallOptions).toMatchObject({ - namespace: 'b-space', - }); - }); -}); - -describe('POST /api/spaces/_resolve_copy_saved_objects_errors', () => { - let request: RequestRunner; - let teardowns: TeardownFn[]; - - beforeEach(() => { - const setup = createTestHandler(initCopyToSpacesApi); - - request = setup.request; - teardowns = setup.teardowns; - }); - - afterEach(async () => { - await Promise.all(teardowns.splice(0).map(fn => fn())); - }); - - test(`returns result of routePreCheckLicense`, async () => { - const payload = { - retries: {}, - objects: [], - }; - - const { response } = await request('POST', '/api/spaces/_resolve_copy_saved_objects_errors', { - preCheckLicenseImpl: () => Boom.forbidden('test forbidden message'), - expectSpacesClientCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(403); - expect(JSON.parse(responsePayload)).toMatchObject({ - message: 'test forbidden message', - }); - }); - - test(`uses a Saved Objects Client instance without the spaces wrapper`, async () => { - const payload = { - retries: { - ['a-space']: [ - { - type: 'visualization', - id: 'bar', - overwrite: true, - }, - ], - }, - objects: [{ type: 'visualization', id: 'bar' }], - }; - - const { mockSavedObjectsService } = await request( - 'POST', - '/api/spaces/_resolve_copy_saved_objects_errors', - { - expectSpacesClientCall: false, - payload, - } - ); - - expect(mockSavedObjectsService.getScopedSavedObjectsClient).toHaveBeenCalledWith( - expect.any(Object), - { - excludedWrappers: ['spaces'], - } - ); - }); - - test(`requires objects to be unique`, async () => { - const payload = { - retries: {}, - objects: [{ type: 'foo', id: 'bar' }, { type: 'foo', id: 'bar' }], - }; - - const { response } = await request('POST', '/api/spaces/_resolve_copy_saved_objects_errors', { - expectSpacesClientCall: false, - expectPreCheckLicenseCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(400); - expect(JSON.parse(responsePayload)).toMatchInlineSnapshot(` - Object { - "error": "Bad Request", - "message": "Invalid request payload input", - "statusCode": 400, - } - `); - }); - - test(`requires well-formed space ids`, async () => { - const payload = { - retries: { - ['invalid-space-id!@#$%^&*()']: [ - { - type: 'foo', - id: 'bar', - overwrite: true, - }, - ], - }, - objects: [{ type: 'foo', id: 'bar' }], - }; - - const { response } = await request('POST', '/api/spaces/_resolve_copy_saved_objects_errors', { - expectSpacesClientCall: false, - expectPreCheckLicenseCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(400); - expect(JSON.parse(responsePayload)).toMatchInlineSnapshot(` - Object { - "error": "Bad Request", - "message": "Invalid request payload input", - "statusCode": 400, - } - `); - }); - - test('does not allow namespace agnostic types to be copied (via "supportedTypes" property)', async () => { - const payload = { - retries: { - ['a-space']: [ - { - type: 'visualization', - id: 'bar', - overwrite: true, - }, - { - type: 'globalType', - id: 'bar', - overwrite: true, - }, - ], - }, - objects: [ - { - type: 'globalType', - id: 'bar', - }, - { type: 'visualization', id: 'bar' }, - ], - }; - - const { response, mockSavedObjectsService } = await request( - 'POST', - '/api/spaces/_resolve_copy_saved_objects_errors', - { - expectSpacesClientCall: false, - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsService.importExport.resolveImportErrors).toHaveBeenCalledTimes(1); - const [ - resolveImportErrorsCallOptions, - ] = mockSavedObjectsService.importExport.resolveImportErrors.mock.calls[0]; - - expect(resolveImportErrorsCallOptions).toMatchObject({ - namespace: 'a-space', - supportedTypes: ['visualization', 'dashboard', 'index-pattern'], - }); - }); - - test('resolves conflicts for multiple spaces', async () => { - const payload = { - objects: [{ type: 'visualization', id: 'bar' }], - retries: { - ['a-space']: [ - { - type: 'visualization', - id: 'bar', - overwrite: true, - }, - ], - ['b-space']: [ - { - type: 'globalType', - id: 'bar', - overwrite: true, - }, - ], - }, - }; - - const { response, mockSavedObjectsService } = await request( - 'POST', - '/api/spaces/_resolve_copy_saved_objects_errors', - { - expectSpacesClientCall: false, - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsService.importExport.resolveImportErrors).toHaveBeenCalledTimes(2); - const [ - resolveImportErrorsFirstCallOptions, - ] = mockSavedObjectsService.importExport.resolveImportErrors.mock.calls[0]; - - expect(resolveImportErrorsFirstCallOptions).toMatchObject({ - namespace: 'a-space', - supportedTypes: ['visualization', 'dashboard', 'index-pattern'], - }); - - const [ - resolveImportErrorsSecondCallOptions, - ] = mockSavedObjectsService.importExport.resolveImportErrors.mock.calls[1]; - - expect(resolveImportErrorsSecondCallOptions).toMatchObject({ - namespace: 'b-space', - supportedTypes: ['visualization', 'dashboard', 'index-pattern'], - }); - }); -}); diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.ts deleted file mode 100644 index be5a921f91340..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/copy_to_space.ts +++ /dev/null @@ -1,145 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Joi from 'joi'; -import { Legacy } from 'kibana'; -import { - copySavedObjectsToSpacesFactory, - resolveCopySavedObjectsToSpacesConflictsFactory, -} from '../../../lib/copy_to_spaces'; -import { ExternalRouteDeps } from '.'; -import { COPY_TO_SPACES_SAVED_OBJECTS_CLIENT_OPTS } from '../../../lib/copy_to_spaces/copy_to_spaces'; -import { SPACE_ID_REGEX } from '../../../lib/space_schema'; - -interface CopyPayload { - spaces: string[]; - objects: Array<{ type: string; id: string }>; - includeReferences: boolean; - overwrite: boolean; -} - -interface ResolveConflictsPayload { - objects: Array<{ type: string; id: string }>; - includeReferences: boolean; - retries: { - [spaceId: string]: Array<{ - type: string; - id: string; - overwrite: boolean; - }>; - }; -} - -export function initCopyToSpacesApi(deps: ExternalRouteDeps) { - const { legacyRouter, spacesService, savedObjects, routePreCheckLicenseFn } = deps; - - legacyRouter({ - method: 'POST', - path: '/api/spaces/_copy_saved_objects', - async handler(request: Legacy.Request, h: Legacy.ResponseToolkit) { - const savedObjectsClient = savedObjects.getScopedSavedObjectsClient( - request, - COPY_TO_SPACES_SAVED_OBJECTS_CLIENT_OPTS - ); - - const copySavedObjectsToSpaces = copySavedObjectsToSpacesFactory( - savedObjectsClient, - savedObjects - ); - - const { - spaces: destinationSpaceIds, - objects, - includeReferences, - overwrite, - } = request.payload as CopyPayload; - - const sourceSpaceId = spacesService.getSpaceId(request); - - const copyResponse = await copySavedObjectsToSpaces(sourceSpaceId, destinationSpaceIds, { - objects, - includeReferences, - overwrite, - }); - - return h.response(copyResponse); - }, - options: { - tags: ['access:copySavedObjectsToSpaces'], - validate: { - payload: { - spaces: Joi.array() - .items( - Joi.string().regex(SPACE_ID_REGEX, `lower case, a-z, 0-9, "_", and "-" are allowed`) - ) - .unique(), - objects: Joi.array() - .items(Joi.object({ type: Joi.string(), id: Joi.string() })) - .unique(), - includeReferences: Joi.bool().default(false), - overwrite: Joi.bool().default(false), - }, - }, - pre: [routePreCheckLicenseFn], - }, - }); - - legacyRouter({ - method: 'POST', - path: '/api/spaces/_resolve_copy_saved_objects_errors', - async handler(request: Legacy.Request, h: Legacy.ResponseToolkit) { - const savedObjectsClient = savedObjects.getScopedSavedObjectsClient( - request, - COPY_TO_SPACES_SAVED_OBJECTS_CLIENT_OPTS - ); - - const resolveCopySavedObjectsToSpacesConflicts = resolveCopySavedObjectsToSpacesConflictsFactory( - savedObjectsClient, - savedObjects - ); - - const { objects, includeReferences, retries } = request.payload as ResolveConflictsPayload; - - const sourceSpaceId = spacesService.getSpaceId(request); - - const resolveConflictsResponse = await resolveCopySavedObjectsToSpacesConflicts( - sourceSpaceId, - { - objects, - includeReferences, - retries, - } - ); - - return h.response(resolveConflictsResponse); - }, - options: { - tags: ['access:copySavedObjectsToSpaces'], - validate: { - payload: Joi.object({ - objects: Joi.array() - .items(Joi.object({ type: Joi.string(), id: Joi.string() })) - .required() - .unique(), - includeReferences: Joi.bool().default(false), - retries: Joi.object() - .pattern( - SPACE_ID_REGEX, - Joi.array().items( - Joi.object({ - type: Joi.string().required(), - id: Joi.string().required(), - overwrite: Joi.boolean().default(false), - }) - ) - ) - .required(), - }).default(), - }, - pre: [routePreCheckLicenseFn], - }, - }); -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/delete.test.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/delete.test.ts deleted file mode 100644 index a1a23604f159a..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/delete.test.ts +++ /dev/null @@ -1,85 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -jest.mock('../../../lib/route_pre_check_license', () => { - return { - routePreCheckLicense: () => (request: any, h: any) => h.continue, - }; -}); - -jest.mock('../../../../../../server/lib/get_client_shield', () => { - return { - getClient: () => { - return { - callWithInternalUser: jest.fn(() => { - return; - }), - }; - }, - }; -}); -import Boom from 'boom'; -import { createTestHandler, RequestRunner, TeardownFn } from '../__fixtures__'; -import { initDeleteSpacesApi } from './delete'; - -describe('Spaces Public API', () => { - let request: RequestRunner; - let teardowns: TeardownFn[]; - - beforeEach(() => { - const setup = createTestHandler(initDeleteSpacesApi); - - request = setup.request; - teardowns = setup.teardowns; - }); - - afterEach(async () => { - await Promise.all(teardowns.splice(0).map(fn => fn())); - }); - - test(`'DELETE spaces/{id}' deletes the space`, async () => { - const { response } = await request('DELETE', '/api/spaces/space/a-space'); - - const { statusCode } = response; - - expect(statusCode).toEqual(204); - }); - - test(`returns result of routePreCheckLicense`, async () => { - const { response } = await request('DELETE', '/api/spaces/space/a-space', { - preCheckLicenseImpl: () => Boom.forbidden('test forbidden message'), - expectSpacesClientCall: false, - }); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(403); - expect(JSON.parse(payload)).toMatchObject({ - message: 'test forbidden message', - }); - }); - - test('DELETE spaces/{id} throws when deleting a non-existent space', async () => { - const { response } = await request('DELETE', '/api/spaces/space/not-a-space'); - - const { statusCode } = response; - - expect(statusCode).toEqual(404); - }); - - test(`'DELETE spaces/{id}' cannot delete reserved spaces`, async () => { - const { response } = await request('DELETE', '/api/spaces/space/default'); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(400); - expect(JSON.parse(payload)).toEqual({ - statusCode: 400, - error: 'Bad Request', - message: 'This Space cannot be deleted because it is reserved.', - }); - }); -}); diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/delete.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/delete.ts deleted file mode 100644 index 720e932743e9a..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/delete.ts +++ /dev/null @@ -1,41 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Boom from 'boom'; -import { wrapError } from '../../../lib/errors'; -import { SpacesClient } from '../../../lib/spaces_client'; -import { ExternalRouteDeps, ExternalRouteRequestFacade } from '.'; - -export function initDeleteSpacesApi(deps: ExternalRouteDeps) { - const { legacyRouter, savedObjects, spacesService, routePreCheckLicenseFn } = deps; - - legacyRouter({ - method: 'DELETE', - path: '/api/spaces/space/{id}', - async handler(request: ExternalRouteRequestFacade, h: any) { - const { SavedObjectsClient } = savedObjects; - const spacesClient: SpacesClient = await spacesService.scopedClient(request); - - const id = request.params.id; - - let result; - - try { - result = await spacesClient.delete(id); - } catch (error) { - if (SavedObjectsClient.errors.isNotFoundError(error)) { - return Boom.notFound(); - } - return wrapError(error); - } - - return h.response(result).code(204); - }, - options: { - pre: [routePreCheckLicenseFn], - }, - }); -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/get.test.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/get.test.ts deleted file mode 100644 index 5357c38e0e9ae..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/get.test.ts +++ /dev/null @@ -1,109 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -jest.mock('../../../lib/route_pre_check_license', () => { - return { - routePreCheckLicense: () => (request: any, h: any) => h.continue, - }; -}); - -jest.mock('../../../../../../server/lib/get_client_shield', () => { - return { - getClient: () => { - return { - callWithInternalUser: jest.fn(() => { - return; - }), - }; - }, - }; -}); -import Boom from 'boom'; -import { Space } from '../../../../common/model/space'; -import { createSpaces, createTestHandler, RequestRunner, TeardownFn } from '../__fixtures__'; -import { initGetSpacesApi } from './get'; - -describe('GET spaces', () => { - let request: RequestRunner; - let teardowns: TeardownFn[]; - const spaces = createSpaces(); - - beforeEach(() => { - const setup = createTestHandler(initGetSpacesApi); - - request = setup.request; - teardowns = setup.teardowns; - }); - - afterEach(async () => { - await Promise.all(teardowns.splice(0).map(fn => fn())); - }); - - test(`'GET spaces' returns all available spaces`, async () => { - const { response } = await request('GET', '/api/spaces/space'); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(200); - const resultSpaces: Space[] = JSON.parse(payload); - expect(resultSpaces.map(s => s.id)).toEqual(spaces.map(s => s.id)); - }); - - test(`'GET spaces' returns all available spaces with the 'any' purpose`, async () => { - const { response } = await request('GET', '/api/spaces/space?purpose=any'); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(200); - const resultSpaces: Space[] = JSON.parse(payload); - expect(resultSpaces.map(s => s.id)).toEqual(spaces.map(s => s.id)); - }); - - test(`'GET spaces' returns all available spaces with the 'copySavedObjectsIntoSpace' purpose`, async () => { - const { response } = await request( - 'GET', - '/api/spaces/space?purpose=copySavedObjectsIntoSpace' - ); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(200); - const resultSpaces: Space[] = JSON.parse(payload); - expect(resultSpaces.map(s => s.id)).toEqual(spaces.map(s => s.id)); - }); - - test(`returns result of routePreCheckLicense`, async () => { - const { response } = await request('GET', '/api/spaces/space', { - preCheckLicenseImpl: () => Boom.forbidden('test forbidden message'), - expectSpacesClientCall: false, - }); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(403); - expect(JSON.parse(payload)).toMatchObject({ - message: 'test forbidden message', - }); - }); - - test(`'GET spaces/{id}' returns the space with that id`, async () => { - const { response } = await request('GET', '/api/spaces/space/default'); - - const { statusCode, payload } = response; - - expect(statusCode).toEqual(200); - const resultSpace = JSON.parse(payload); - expect(resultSpace.id).toEqual('default'); - }); - - test(`'GET spaces/{id}' returns 404 when retrieving a non-existent space`, async () => { - const { response } = await request('GET', '/api/spaces/space/not-a-space'); - - const { statusCode } = response; - - expect(statusCode).toEqual(404); - }); -}); diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/get.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/get.ts deleted file mode 100644 index 310cef5c1069e..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/get.ts +++ /dev/null @@ -1,76 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Boom from 'boom'; -import Joi from 'joi'; -import { RequestQuery } from 'hapi'; -import { GetSpacePurpose } from '../../../../common/model/types'; -import { Space } from '../../../../common/model/space'; -import { wrapError } from '../../../lib/errors'; -import { SpacesClient } from '../../../lib/spaces_client'; -import { ExternalRouteDeps, ExternalRouteRequestFacade } from '.'; - -export function initGetSpacesApi(deps: ExternalRouteDeps) { - const { legacyRouter, log, spacesService, savedObjects, routePreCheckLicenseFn } = deps; - - legacyRouter({ - method: 'GET', - path: '/api/spaces/space', - async handler(request: ExternalRouteRequestFacade) { - log.debug(`Inside GET /api/spaces/space`); - - const purpose: GetSpacePurpose = (request.query as RequestQuery).purpose as GetSpacePurpose; - - const spacesClient: SpacesClient = await spacesService.scopedClient(request); - - let spaces: Space[]; - - try { - log.debug(`Attempting to retrieve all spaces for ${purpose} purpose`); - spaces = await spacesClient.getAll(purpose); - log.debug(`Retrieved ${spaces.length} spaces for ${purpose} purpose`); - } catch (error) { - log.debug(`Error retrieving spaces for ${purpose} purpose: ${error}`); - return wrapError(error); - } - - return spaces; - }, - options: { - pre: [routePreCheckLicenseFn], - validate: { - query: Joi.object().keys({ - purpose: Joi.string() - .valid('any', 'copySavedObjectsIntoSpace') - .default('any'), - }), - }, - }, - }); - - legacyRouter({ - method: 'GET', - path: '/api/spaces/space/{id}', - async handler(request: ExternalRouteRequestFacade) { - const spaceId = request.params.id; - - const { SavedObjectsClient } = savedObjects; - const spacesClient: SpacesClient = await spacesService.scopedClient(request); - - try { - return await spacesClient.get(spaceId); - } catch (error) { - if (SavedObjectsClient.errors.isNotFoundError(error)) { - return Boom.notFound(); - } - return wrapError(error); - } - }, - options: { - pre: [routePreCheckLicenseFn], - }, - }); -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/index.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/index.ts deleted file mode 100644 index 7828a6b59d566..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/index.ts +++ /dev/null @@ -1,47 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import { Legacy } from 'kibana'; -import { Logger, SavedObjectsLegacyService } from 'src/core/server'; -import { XPackMainPlugin } from '../../../../../xpack_main/xpack_main'; -import { routePreCheckLicense } from '../../../lib/route_pre_check_license'; -import { initDeleteSpacesApi } from './delete'; -import { initGetSpacesApi } from './get'; -import { initPostSpacesApi } from './post'; -import { initPutSpacesApi } from './put'; -import { SpacesServiceSetup } from '../../../new_platform/spaces_service/spaces_service'; -import { initCopyToSpacesApi } from './copy_to_space'; - -type Omit = Pick>; - -interface RouteDeps { - xpackMain: XPackMainPlugin; - legacyRouter: Legacy.Server['route']; - savedObjects: SavedObjectsLegacyService; - spacesService: SpacesServiceSetup; - log: Logger; -} - -export interface ExternalRouteDeps extends Omit { - routePreCheckLicenseFn: any; -} - -export type ExternalRouteRequestFacade = Legacy.Request; - -export function initExternalSpacesApi({ xpackMain, ...rest }: RouteDeps) { - const routePreCheckLicenseFn = routePreCheckLicense({ xpackMain }); - - const deps: ExternalRouteDeps = { - ...rest, - routePreCheckLicenseFn, - }; - - initDeleteSpacesApi(deps); - initGetSpacesApi(deps); - initPostSpacesApi(deps); - initPutSpacesApi(deps); - initCopyToSpacesApi(deps); -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/post.test.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/post.test.ts deleted file mode 100644 index c53aaf29636a4..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/post.test.ts +++ /dev/null @@ -1,128 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -jest.mock('../../../lib/route_pre_check_license', () => { - return { - routePreCheckLicense: () => (request: any, h: any) => h.continue, - }; -}); - -jest.mock('../../../../../../server/lib/get_client_shield', () => { - return { - getClient: () => { - return { - callWithInternalUser: jest.fn(() => { - return; - }), - }; - }, - }; -}); - -import Boom from 'boom'; -import { createTestHandler, RequestRunner, TeardownFn } from '../__fixtures__'; -import { initPostSpacesApi } from './post'; - -describe('Spaces Public API', () => { - let request: RequestRunner; - let teardowns: TeardownFn[]; - - beforeEach(() => { - const setup = createTestHandler(initPostSpacesApi); - - request = setup.request; - teardowns = setup.teardowns; - }); - - afterEach(async () => { - await Promise.all(teardowns.splice(0).map(fn => fn())); - }); - - test('POST /space should create a new space with the provided ID', async () => { - const payload = { - id: 'my-space-id', - name: 'my new space', - description: 'with a description', - disabledFeatures: ['foo'], - }; - - const { mockSavedObjectsRepository, response } = await request('POST', '/api/spaces/space', { - payload, - }); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsRepository.create).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsRepository.create).toHaveBeenCalledWith( - 'space', - { name: 'my new space', description: 'with a description', disabledFeatures: ['foo'] }, - { id: 'my-space-id' } - ); - }); - - test(`returns result of routePreCheckLicense`, async () => { - const payload = { - id: 'my-space-id', - name: 'my new space', - description: 'with a description', - }; - - const { response } = await request('POST', '/api/spaces/space', { - preCheckLicenseImpl: () => Boom.forbidden('test forbidden message'), - expectSpacesClientCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(403); - expect(JSON.parse(responsePayload)).toMatchObject({ - message: 'test forbidden message', - }); - }); - - test('POST /space should not allow a space to be updated', async () => { - const payload = { - id: 'a-space', - name: 'my updated space', - description: 'with a description', - }; - - const { response } = await request('POST', '/api/spaces/space', { payload }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(409); - expect(JSON.parse(responsePayload)).toEqual({ - error: 'Conflict', - message: 'A space with the identifier a-space already exists.', - statusCode: 409, - }); - }); - - test('POST /space should not require disabledFeatures to be specified', async () => { - const payload = { - id: 'my-space-id', - name: 'my new space', - description: 'with a description', - }; - - const { mockSavedObjectsRepository, response } = await request('POST', '/api/spaces/space', { - payload, - }); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsRepository.create).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsRepository.create).toHaveBeenCalledWith( - 'space', - { name: 'my new space', description: 'with a description', disabledFeatures: [] }, - { id: 'my-space-id' } - ); - }); -}); diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/post.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/post.ts deleted file mode 100644 index 6a17b5c5eace6..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/post.ts +++ /dev/null @@ -1,45 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Boom from 'boom'; -import { Space } from '../../../../common/model/space'; -import { wrapError } from '../../../lib/errors'; -import { spaceSchema } from '../../../lib/space_schema'; -import { SpacesClient } from '../../../lib/spaces_client'; -import { ExternalRouteDeps, ExternalRouteRequestFacade } from '.'; - -export function initPostSpacesApi(deps: ExternalRouteDeps) { - const { legacyRouter, log, spacesService, savedObjects, routePreCheckLicenseFn } = deps; - - legacyRouter({ - method: 'POST', - path: '/api/spaces/space', - async handler(request: ExternalRouteRequestFacade) { - log.debug(`Inside POST /api/spaces/space`); - const { SavedObjectsClient } = savedObjects; - const spacesClient: SpacesClient = await spacesService.scopedClient(request); - - const space = request.payload as Space; - - try { - log.debug(`Attempting to create space`); - return await spacesClient.create(space); - } catch (error) { - if (SavedObjectsClient.errors.isConflictError(error)) { - return Boom.conflict(`A space with the identifier ${space.id} already exists.`); - } - log.debug(`Error creating space: ${error}`); - return wrapError(error); - } - }, - options: { - validate: { - payload: spaceSchema, - }, - pre: [routePreCheckLicenseFn], - }, - }); -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/put.test.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/put.test.ts deleted file mode 100644 index d2ac1f89e1df9..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/put.test.ts +++ /dev/null @@ -1,156 +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; - * you may not use this file except in compliance with the Elastic License. - */ -jest.mock('../../../lib/route_pre_check_license', () => { - return { - routePreCheckLicense: () => (request: any, h: any) => h.continue, - }; -}); - -jest.mock('../../../../../../server/lib/get_client_shield', () => { - return { - getClient: () => { - return { - callWithInternalUser: jest.fn(() => { - return; - }), - }; - }, - }; -}); -import Boom from 'boom'; -import { createTestHandler, RequestRunner, TeardownFn } from '../__fixtures__'; -import { initPutSpacesApi } from './put'; - -describe('Spaces Public API', () => { - let request: RequestRunner; - let teardowns: TeardownFn[]; - - beforeEach(() => { - const setup = createTestHandler(initPutSpacesApi); - - request = setup.request; - teardowns = setup.teardowns; - }); - - afterEach(async () => { - await Promise.all(teardowns.splice(0).map(fn => fn())); - }); - - test('PUT /space should update an existing space with the provided ID', async () => { - const payload = { - id: 'a-space', - name: 'my updated space', - description: 'with a description', - disabledFeatures: [], - }; - - const { mockSavedObjectsRepository, response } = await request( - 'PUT', - '/api/spaces/space/a-space', - { - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsRepository.update).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsRepository.update).toHaveBeenCalledWith('space', 'a-space', { - name: 'my updated space', - description: 'with a description', - disabledFeatures: [], - }); - }); - - test('PUT /space should allow an empty description', async () => { - const payload = { - id: 'a-space', - name: 'my updated space', - description: '', - disabledFeatures: ['foo'], - }; - - const { mockSavedObjectsRepository, response } = await request( - 'PUT', - '/api/spaces/space/a-space', - { - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsRepository.update).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsRepository.update).toHaveBeenCalledWith('space', 'a-space', { - name: 'my updated space', - description: '', - disabledFeatures: ['foo'], - }); - }); - - test('PUT /space should not require disabledFeatures', async () => { - const payload = { - id: 'a-space', - name: 'my updated space', - description: '', - }; - - const { mockSavedObjectsRepository, response } = await request( - 'PUT', - '/api/spaces/space/a-space', - { - payload, - } - ); - - const { statusCode } = response; - - expect(statusCode).toEqual(200); - expect(mockSavedObjectsRepository.update).toHaveBeenCalledTimes(1); - expect(mockSavedObjectsRepository.update).toHaveBeenCalledWith('space', 'a-space', { - name: 'my updated space', - description: '', - disabledFeatures: [], - }); - }); - - test(`returns result of routePreCheckLicense`, async () => { - const payload = { - id: 'a-space', - name: 'my updated space', - description: 'with a description', - }; - - const { response } = await request('PUT', '/api/spaces/space/a-space', { - preCheckLicenseImpl: () => Boom.forbidden('test forbidden message'), - expectSpacesClientCall: false, - payload, - }); - - const { statusCode, payload: responsePayload } = response; - - expect(statusCode).toEqual(403); - expect(JSON.parse(responsePayload)).toMatchObject({ - message: 'test forbidden message', - }); - }); - - test('PUT /space should not allow a new space to be created', async () => { - const payload = { - id: 'a-new-space', - name: 'my new space', - description: 'with a description', - }; - - const { response } = await request('PUT', '/api/spaces/space/a-new-space', { payload }); - - const { statusCode } = response; - - expect(statusCode).toEqual(404); - }); -}); diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/external/put.ts b/x-pack/legacy/plugins/spaces/server/routes/api/external/put.ts deleted file mode 100644 index 8e0f7673358d0..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/api/external/put.ts +++ /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; - * you may not use this file except in compliance with the Elastic License. - */ - -import Boom from 'boom'; -import { Space } from '../../../../common/model/space'; -import { wrapError } from '../../../lib/errors'; -import { spaceSchema } from '../../../lib/space_schema'; -import { SpacesClient } from '../../../lib/spaces_client'; -import { ExternalRouteDeps, ExternalRouteRequestFacade } from '.'; - -export function initPutSpacesApi(deps: ExternalRouteDeps) { - const { legacyRouter, spacesService, savedObjects, routePreCheckLicenseFn } = deps; - - legacyRouter({ - method: 'PUT', - path: '/api/spaces/space/{id}', - async handler(request: ExternalRouteRequestFacade) { - const { SavedObjectsClient } = savedObjects; - const spacesClient: SpacesClient = await spacesService.scopedClient(request); - - const space: Space = request.payload as Space; - const id = request.params.id; - - let result: Space; - try { - result = await spacesClient.update(id, { ...space }); - } catch (error) { - if (SavedObjectsClient.errors.isNotFoundError(error)) { - return Boom.notFound(); - } - return wrapError(error); - } - - return result; - }, - options: { - validate: { - payload: spaceSchema, - }, - pre: [routePreCheckLicenseFn], - }, - }); -} diff --git a/x-pack/legacy/plugins/spaces/server/routes/lib/get_space_by_id.ts b/x-pack/legacy/plugins/spaces/server/routes/lib/get_space_by_id.ts deleted file mode 100644 index eaa789b32c39b..0000000000000 --- a/x-pack/legacy/plugins/spaces/server/routes/lib/get_space_by_id.ts +++ /dev/null @@ -1,24 +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; - * you may not use this file except in compliance with the Elastic License. - */ -import { Space } from '../../../common/model/space'; -import { SpacesClient } from '../../lib/spaces_client'; -import { convertSavedObjectToSpace } from './convert_saved_object_to_space'; - -export async function getSpaceById( - client: SpacesClient, - spaceId: string, - errors: any -): Promise { - try { - const existingSpace = await client.get(spaceId); - return convertSavedObjectToSpace(existingSpace); - } catch (error) { - if (errors.isNotFoundError(error)) { - return null; - } - throw error; - } -} diff --git a/x-pack/plugins/spaces/common/constants.ts b/x-pack/plugins/spaces/common/constants.ts new file mode 100644 index 0000000000000..11882ca2f1b3a --- /dev/null +++ b/x-pack/plugins/spaces/common/constants.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const DEFAULT_SPACE_ID = `default`; + +/** + * The minimum number of spaces required to show a search control. + */ +export const SPACE_SEARCH_COUNT_THRESHOLD = 8; + +/** + * The maximum number of characters allowed in the Space Avatar's initials + */ +export const MAX_SPACE_INITIALS = 2; + +/** + * The type name used within the Monitoring index to publish spaces stats. + * @type {string} + */ +export const KIBANA_SPACES_STATS_TYPE = 'spaces'; + +/** + * The path to enter a space. + */ +export const ENTER_SPACE_PATH = '/spaces/enter'; diff --git a/x-pack/plugins/spaces/common/index.ts b/x-pack/plugins/spaces/common/index.ts new file mode 100644 index 0000000000000..65baa1bd99102 --- /dev/null +++ b/x-pack/plugins/spaces/common/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; + * you may not use this file except in compliance with the Elastic License. + */ + +export { isReservedSpace } from './is_reserved_space'; +export { MAX_SPACE_INITIALS } from './constants'; +export { addSpaceIdToPath, getSpaceIdFromPath } from './lib/spaces_url_parser'; diff --git a/x-pack/plugins/spaces/common/is_reserved_space.test.ts b/x-pack/plugins/spaces/common/is_reserved_space.test.ts new file mode 100644 index 0000000000000..dd1372183ed8a --- /dev/null +++ b/x-pack/plugins/spaces/common/is_reserved_space.test.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { isReservedSpace } from './is_reserved_space'; +import { Space } from './model/space'; + +test('it returns true for reserved spaces', () => { + const space: Space = { + id: '', + name: '', + disabledFeatures: [], + _reserved: true, + }; + + expect(isReservedSpace(space)).toEqual(true); +}); + +test('it returns false for non-reserved spaces', () => { + const space: Space = { + id: '', + name: '', + disabledFeatures: [], + }; + + expect(isReservedSpace(space)).toEqual(false); +}); + +test('it handles empty input', () => { + // @ts-ignore + expect(isReservedSpace()).toEqual(false); +}); diff --git a/x-pack/plugins/spaces/common/is_reserved_space.ts b/x-pack/plugins/spaces/common/is_reserved_space.ts new file mode 100644 index 0000000000000..788ef80c194ce --- /dev/null +++ b/x-pack/plugins/spaces/common/is_reserved_space.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { get } from 'lodash'; +import { Space } from './model/space'; + +/** + * Returns whether the given Space is reserved or not. + * + * @param space the space + * @returns boolean + */ +export function isReservedSpace(space?: Partial | null): boolean { + return get(space, '_reserved', false); +} diff --git a/x-pack/legacy/plugins/spaces/common/lib/__snapshots__/spaces_url_parser.test.ts.snap b/x-pack/plugins/spaces/common/lib/__snapshots__/spaces_url_parser.test.ts.snap similarity index 100% rename from x-pack/legacy/plugins/spaces/common/lib/__snapshots__/spaces_url_parser.test.ts.snap rename to x-pack/plugins/spaces/common/lib/__snapshots__/spaces_url_parser.test.ts.snap diff --git a/x-pack/legacy/plugins/spaces/common/lib/spaces_url_parser.test.ts b/x-pack/plugins/spaces/common/lib/spaces_url_parser.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/common/lib/spaces_url_parser.test.ts rename to x-pack/plugins/spaces/common/lib/spaces_url_parser.test.ts diff --git a/x-pack/legacy/plugins/spaces/common/lib/spaces_url_parser.ts b/x-pack/plugins/spaces/common/lib/spaces_url_parser.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/common/lib/spaces_url_parser.ts rename to x-pack/plugins/spaces/common/lib/spaces_url_parser.ts diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/index.ts b/x-pack/plugins/spaces/common/model/space.ts similarity index 54% rename from x-pack/legacy/plugins/spaces/server/new_platform/index.ts rename to x-pack/plugins/spaces/common/model/space.ts index edf27e2dd819b..c44ce41ec51c0 100644 --- a/x-pack/legacy/plugins/spaces/server/new_platform/index.ts +++ b/x-pack/plugins/spaces/common/model/space.ts @@ -4,9 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import { PluginInitializerContext } from 'src/core/server'; -import { Plugin } from './plugin'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new Plugin(initializerContext); +export interface Space { + id: string; + name: string; + description?: string; + color?: string; + initials?: string; + disabledFeatures: string[]; + _reserved?: boolean; + imageUrl?: string; } diff --git a/x-pack/plugins/spaces/common/model/types.ts b/x-pack/plugins/spaces/common/model/types.ts new file mode 100644 index 0000000000000..58c36da33dbd7 --- /dev/null +++ b/x-pack/plugins/spaces/common/model/types.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export type GetSpacePurpose = 'any' | 'copySavedObjectsIntoSpace'; diff --git a/x-pack/plugins/spaces/kibana.json b/x-pack/plugins/spaces/kibana.json new file mode 100644 index 0000000000000..15d900bf99e14 --- /dev/null +++ b/x-pack/plugins/spaces/kibana.json @@ -0,0 +1,9 @@ +{ + "id": "spaces", + "version": "8.0.0", + "kibanaVersion": "kibana", + "configPath": ["xpack", "spaces"], + "requiredPlugins": ["features", "licensing"], + "server": true, + "ui": false +} diff --git a/x-pack/plugins/spaces/server/config.ts b/x-pack/plugins/spaces/server/config.ts new file mode 100644 index 0000000000000..a28624fb82c15 --- /dev/null +++ b/x-pack/plugins/spaces/server/config.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema, TypeOf } from '@kbn/config-schema'; +import { PluginInitializerContext } from 'src/core/server'; +import { Observable } from 'rxjs'; + +export const ConfigSchema = schema.object({ + enabled: schema.boolean({ defaultValue: true }), + maxSpaces: schema.number({ defaultValue: 1000 }), +}); + +export function createConfig$(context: PluginInitializerContext) { + return context.config.create>(); +} + +export type ConfigType = ReturnType extends Observable + ? P + : ReturnType; diff --git a/x-pack/plugins/spaces/server/index.ts b/x-pack/plugins/spaces/server/index.ts new file mode 100644 index 0000000000000..21d6c840fb017 --- /dev/null +++ b/x-pack/plugins/spaces/server/index.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { PluginInitializerContext } from '../../../../src/core/server'; +import { ConfigSchema } from './config'; +import { Plugin } from './plugin'; + +// These exports are part of public Spaces plugin contract, any change in signature of exported +// functions or removal of exports should be considered as a breaking change. Ideally we should +// reduce number of such exports to zero and provide everything we want to expose via Setup/Start +// run-time contracts. + +// end public contract exports + +export { SpacesPluginSetup } from './plugin'; + +export const config = { schema: ConfigSchema }; +export const plugin = (initializerContext: PluginInitializerContext) => + new Plugin(initializerContext); diff --git a/x-pack/plugins/spaces/server/lib/__fixtures__/index.ts b/x-pack/plugins/spaces/server/lib/__fixtures__/index.ts new file mode 100644 index 0000000000000..3ac2b4594049f --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/__fixtures__/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { spacesConfig } from './spaces_config'; diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/config.ts b/x-pack/plugins/spaces/server/lib/__fixtures__/spaces_config.ts similarity index 51% rename from x-pack/legacy/plugins/spaces/server/new_platform/config.ts rename to x-pack/plugins/spaces/server/lib/__fixtures__/spaces_config.ts index fbe8edb14f19b..1697b9d59af8a 100644 --- a/x-pack/legacy/plugins/spaces/server/new_platform/config.ts +++ b/x-pack/plugins/spaces/server/lib/__fixtures__/spaces_config.ts @@ -4,12 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import { schema, TypeOf } from '@kbn/config-schema'; +import { ConfigSchema } from '../../config'; -export const config = { - schema: schema.object({ - maxSpaces: schema.number({ defaultValue: 1000 }), - }), -}; - -export type SpacesConfigType = TypeOf; +export const spacesConfig = ConfigSchema.validate({}); diff --git a/x-pack/legacy/plugins/spaces/server/lib/__snapshots__/create_default_space.test.ts.snap b/x-pack/plugins/spaces/server/lib/__snapshots__/create_default_space.test.ts.snap similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/__snapshots__/create_default_space.test.ts.snap rename to x-pack/plugins/spaces/server/lib/__snapshots__/create_default_space.test.ts.snap diff --git a/x-pack/legacy/plugins/spaces/server/lib/audit_logger.test.ts b/x-pack/plugins/spaces/server/lib/audit_logger.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/audit_logger.test.ts rename to x-pack/plugins/spaces/server/lib/audit_logger.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/audit_logger.ts b/x-pack/plugins/spaces/server/lib/audit_logger.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/audit_logger.ts rename to x-pack/plugins/spaces/server/lib/audit_logger.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/copy_to_spaces.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/index.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/index.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/index.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/index.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/create_empty_failure_response.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/create_empty_failure_response.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/create_empty_failure_response.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/create_empty_failure_response.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/get_eligible_types.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/get_eligible_types.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/get_eligible_types.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/get_eligible_types.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/read_stream_to_completion.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/read_stream_to_completion.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/read_stream_to_completion.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/read_stream_to_completion.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/readable_stream_from_array.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/readable_stream_from_array.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/lib/readable_stream_from_array.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/lib/readable_stream_from_array.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.test.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.test.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/resolve_copy_conflicts.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/types.ts b/x-pack/plugins/spaces/server/lib/copy_to_spaces/types.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/copy_to_spaces/types.ts rename to x-pack/plugins/spaces/server/lib/copy_to_spaces/types.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/create_default_space.test.ts b/x-pack/plugins/spaces/server/lib/create_default_space.test.ts similarity index 86% rename from x-pack/legacy/plugins/spaces/server/lib/create_default_space.test.ts rename to x-pack/plugins/spaces/server/lib/create_default_space.test.ts index cd0ecdea97fb2..8486508c45364 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/create_default_space.test.ts +++ b/x-pack/plugins/spaces/server/lib/create_default_space.test.ts @@ -3,23 +3,11 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -jest.mock('../../../../server/lib/get_client_shield', () => ({ - getClient: jest.fn(), -})); -import * as Rx from 'rxjs'; + import Boom from 'boom'; -import { getClient } from '../../../../server/lib/get_client_shield'; import { createDefaultSpace } from './create_default_space'; -import { SavedObjectsLegacyService } from 'src/core/server'; -import { ElasticsearchServiceSetup } from 'src/core/server'; - -let mockCallWithRequest; -beforeEach(() => { - mockCallWithRequest = jest.fn(); - (getClient as jest.Mock).mockReturnValue({ - callWithRequest: mockCallWithRequest, - }); -}); +import { SavedObjectsLegacyService, IClusterClient } from 'src/core/server'; + interface MockServerSettings { defaultExists?: boolean; simulateGetErrorCondition?: boolean; @@ -84,11 +72,9 @@ const createMockDeps = (settings: MockServerSettings = {}) => { return { config: mockServer.config(), savedObjects: (mockServer.savedObjects as unknown) as SavedObjectsLegacyService, - elasticsearch: ({ - dataClient$: Rx.of({ - callAsInternalUser: jest.fn(), - }), - } as unknown) as ElasticsearchServiceSetup, + esClient: ({ + callAsInternalUser: jest.fn(), + } as unknown) as jest.Mocked, }; }; diff --git a/x-pack/legacy/plugins/spaces/server/lib/create_default_space.ts b/x-pack/plugins/spaces/server/lib/create_default_space.ts similarity index 80% rename from x-pack/legacy/plugins/spaces/server/lib/create_default_space.ts rename to x-pack/plugins/spaces/server/lib/create_default_space.ts index 9e574c19c987f..2301fa26dab28 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/create_default_space.ts +++ b/x-pack/plugins/spaces/server/lib/create_default_space.ts @@ -5,22 +5,18 @@ */ import { i18n } from '@kbn/i18n'; - -import { first } from 'rxjs/operators'; -import { SavedObjectsLegacyService, CoreSetup } from 'src/core/server'; +import { SavedObjectsLegacyService, IClusterClient } from 'src/core/server'; import { DEFAULT_SPACE_ID } from '../../common/constants'; interface Deps { - elasticsearch: CoreSetup['elasticsearch']; + esClient: Pick; savedObjects: SavedObjectsLegacyService; } -export async function createDefaultSpace({ elasticsearch, savedObjects }: Deps) { +export async function createDefaultSpace({ esClient, savedObjects }: Deps) { const { getSavedObjectsRepository, SavedObjectsClient } = savedObjects; - const client = await elasticsearch.dataClient$.pipe(first()).toPromise(); - - const savedObjectsRepository = getSavedObjectsRepository(client.callAsInternalUser, ['space']); + const savedObjectsRepository = getSavedObjectsRepository(esClient.callAsInternalUser, ['space']); const defaultSpaceExists = await doesDefaultSpaceExist( SavedObjectsClient, diff --git a/x-pack/plugins/spaces/server/lib/errors.ts b/x-pack/plugins/spaces/server/lib/errors.ts new file mode 100644 index 0000000000000..d800020038a38 --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/errors.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { boomify, isBoom } from 'boom'; +import { ResponseError, CustomHttpResponseOptions } from 'src/core/server'; + +export function wrapError(error: any): CustomHttpResponseOptions { + const boom = isBoom(error) ? error : boomify(error); + return { + body: boom, + headers: boom.output.headers, + statusCode: boom.output.statusCode, + }; +} diff --git a/x-pack/legacy/plugins/spaces/server/lib/get_space_selector_url.test.ts b/x-pack/plugins/spaces/server/lib/get_space_selector_url.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/get_space_selector_url.test.ts rename to x-pack/plugins/spaces/server/lib/get_space_selector_url.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/get_space_selector_url.ts b/x-pack/plugins/spaces/server/lib/get_space_selector_url.ts similarity index 81% rename from x-pack/legacy/plugins/spaces/server/lib/get_space_selector_url.ts rename to x-pack/plugins/spaces/server/lib/get_space_selector_url.ts index 6d088fda757de..8cc641bc2e7cf 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/get_space_selector_url.ts +++ b/x-pack/plugins/spaces/server/lib/get_space_selector_url.ts @@ -4,6 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -export function getSpaceSelectorUrl(serverBasePath: string = '') { +export function getSpaceSelectorUrl(serverBasePath: string) { return `${serverBasePath}/spaces/space_selector`; } diff --git a/x-pack/legacy/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts b/x-pack/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts similarity index 62% rename from x-pack/legacy/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts rename to x-pack/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts index 6609ca42a7f67..912cccbc01782 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts +++ b/x-pack/plugins/spaces/server/lib/get_spaces_usage_collector.test.ts @@ -5,12 +5,24 @@ */ import { getSpacesUsageCollector, UsageStats } from './get_spaces_usage_collector'; +import * as Rx from 'rxjs'; +import { PluginsSetup } from '../plugin'; +import { Feature } from '../../../features/server'; +import { ILicense, LicensingPluginSetup } from '../../../licensing/server'; + +interface SetupOpts { + license?: Partial; + features?: Feature[]; +} -function getServerMock(customization?: any) { +function setup({ + license = { isAvailable: true }, + features = [{ id: 'feature1' } as Feature, { id: 'feature2' } as Feature], +}: SetupOpts = {}) { class MockUsageCollector { private fetch: any; - constructor(server: any, { fetch }: any) { + constructor({ fetch }: any) { this.fetch = fetch; } // to make typescript happy @@ -19,39 +31,23 @@ function getServerMock(customization?: any) { } } - const getLicenseCheckResults = jest.fn().mockReturnValue({}); - const defaultServerMock = { - plugins: { - xpack_main: { - info: { - isAvailable: jest.fn().mockReturnValue(true), - feature: () => ({ - getLicenseCheckResults, - }), - license: { - isOneOf: jest.fn().mockReturnValue(false), - getType: jest.fn().mockReturnValue('platinum'), - }, - toJSON: () => ({ b: 1 }), - }, - getFeatures: jest.fn().mockReturnValue([{ id: 'feature1' }, { id: 'feature2' }]), - }, - }, - expose: () => { - return; - }, - log: () => { - return; - }, + const licensing = { + license$: Rx.of(license), + } as LicensingPluginSetup; + + const featuresSetup = ({ + getFeatures: jest.fn().mockReturnValue(features), + } as unknown) as PluginsSetup['features']; + + return { + licensing, + features: featuresSetup, usage: { collectorSet: { - makeUsageCollector: (options: any) => { - return new MockUsageCollector(defaultServerMock, options); - }, + makeUsageCollector: (options: any) => new MockUsageCollector(options), }, }, }; - return Object.assign(defaultServerMock, customization); } const defaultCallClusterMock = jest.fn().mockResolvedValue({ @@ -73,17 +69,14 @@ const defaultCallClusterMock = jest.fn().mockResolvedValue({ }); describe('with a basic license', () => { - let serverWithBasicLicenseMock: any; let usageStats: UsageStats; beforeAll(async () => { - serverWithBasicLicenseMock = getServerMock(); - serverWithBasicLicenseMock.plugins.xpack_main.info.license.getType = jest - .fn() - .mockReturnValue('basic'); + const { features, licensing, usage } = setup({ license: { isAvailable: true, type: 'basic' } }); const { fetch: getSpacesUsage } = getSpacesUsageCollector({ kibanaIndex: '.kibana', - usage: serverWithBasicLicenseMock.usage, - xpackMain: serverWithBasicLicenseMock.plugins.xpack_main, + usage, + features, + licensing, }); usageStats = await getSpacesUsage(defaultCallClusterMock); }); @@ -113,13 +106,12 @@ describe('with a basic license', () => { describe('with no license', () => { let usageStats: UsageStats; beforeAll(async () => { - const serverWithNoLicenseMock = getServerMock(); - serverWithNoLicenseMock.plugins.xpack_main.info.isAvailable = jest.fn().mockReturnValue(false); - + const { features, licensing, usage } = setup({ license: { isAvailable: false } }); const { fetch: getSpacesUsage } = getSpacesUsageCollector({ kibanaIndex: '.kibana', - usage: serverWithNoLicenseMock.usage, - xpackMain: serverWithNoLicenseMock.plugins.xpack_main, + usage, + features, + licensing, }); usageStats = await getSpacesUsage(defaultCallClusterMock); }); @@ -142,17 +134,16 @@ describe('with no license', () => { }); describe('with platinum license', () => { - let serverWithPlatinumLicenseMock: any; let usageStats: UsageStats; beforeAll(async () => { - serverWithPlatinumLicenseMock = getServerMock(); - serverWithPlatinumLicenseMock.plugins.xpack_main.info.license.getType = jest - .fn() - .mockReturnValue('platinum'); + const { features, licensing, usage } = setup({ + license: { isAvailable: true, type: 'platinum' }, + }); const { fetch: getSpacesUsage } = getSpacesUsageCollector({ kibanaIndex: '.kibana', - usage: serverWithPlatinumLicenseMock.usage, - xpackMain: serverWithPlatinumLicenseMock.plugins.xpack_main, + usage, + features, + licensing, }); usageStats = await getSpacesUsage(defaultCallClusterMock); }); diff --git a/x-pack/legacy/plugins/spaces/server/lib/get_spaces_usage_collector.ts b/x-pack/plugins/spaces/server/lib/get_spaces_usage_collector.ts similarity index 83% rename from x-pack/legacy/plugins/spaces/server/lib/get_spaces_usage_collector.ts rename to x-pack/plugins/spaces/server/lib/get_spaces_usage_collector.ts index 623f613faaa0c..bfbc5e6ab775d 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/get_spaces_usage_collector.ts +++ b/x-pack/plugins/spaces/server/lib/get_spaces_usage_collector.ts @@ -6,10 +6,11 @@ import { get } from 'lodash'; import { CallAPIOptions } from 'src/core/server'; -import { XPackMainPlugin } from '../../../xpack_main/xpack_main'; +import { take } from 'rxjs/operators'; // @ts-ignore -import { KIBANA_STATS_TYPE_MONITORING } from '../../../monitoring/common/constants'; +import { KIBANA_STATS_TYPE_MONITORING } from '../../../../legacy/plugins/monitoring/common/constants'; import { KIBANA_SPACES_STATS_TYPE } from '../../common/constants'; +import { PluginsSetup } from '../plugin'; type CallCluster = ( endpoint: string, @@ -30,22 +31,23 @@ interface SpacesAggregationResponse { /** * - * @param callCluster - * @param server + * @param {CallCluster} callCluster + * @param {string} kibanaIndex + * @param {PluginsSetup['features']} features * @param {boolean} spacesAvailable * @return {UsageStats} */ async function getSpacesUsage( callCluster: CallCluster, kibanaIndex: string, - xpackMainPlugin: XPackMainPlugin, + features: PluginsSetup['features'], spacesAvailable: boolean ) { if (!spacesAvailable) { return {} as UsageStats; } - const knownFeatureIds = xpackMainPlugin.getFeatures().map(feature => feature.id); + const knownFeatureIds = features.getFeatures().map(feature => feature.id); const resp = await callCluster('search', { index: kibanaIndex, @@ -115,7 +117,8 @@ export interface UsageStats { interface CollectorDeps { kibanaIndex: string; usage: { collectorSet: any }; - xpackMain: XPackMainPlugin; + features: PluginsSetup['features']; + licensing: PluginsSetup['licensing']; } /* @@ -128,13 +131,13 @@ export function getSpacesUsageCollector(deps: CollectorDeps) { type: KIBANA_SPACES_STATS_TYPE, isReady: () => true, fetch: async (callCluster: CallCluster) => { - const xpackInfo = deps.xpackMain.info; - const available = xpackInfo && xpackInfo.isAvailable(); // some form of spaces is available for all valid licenses + const license = await deps.licensing.license$.pipe(take(1)).toPromise(); + const available = license.isAvailable; // some form of spaces is available for all valid licenses const usageStats = await getSpacesUsage( callCluster, deps.kibanaIndex, - deps.xpackMain, + deps.features, available ); diff --git a/x-pack/plugins/spaces/server/lib/migrations/index.ts b/x-pack/plugins/spaces/server/lib/migrations/index.ts new file mode 100644 index 0000000000000..b303a8489ffb0 --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/migrations/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { migrateToKibana660 } from './migrate_6x'; diff --git a/x-pack/plugins/spaces/server/lib/migrations/migrate_6x.test.ts b/x-pack/plugins/spaces/server/lib/migrations/migrate_6x.test.ts new file mode 100644 index 0000000000000..964eb8137685f --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/migrations/migrate_6x.test.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { migrateToKibana660 } from './migrate_6x'; + +describe('migrateTo660', () => { + it('adds a "disabledFeatures" attribute initialized as an empty array', () => { + expect( + migrateToKibana660({ + id: 'space:foo', + attributes: {}, + }) + ).toEqual({ + id: 'space:foo', + attributes: { + disabledFeatures: [], + }, + }); + }); + + it('does not initialize "disabledFeatures" if the property already exists', () => { + // This scenario shouldn't happen organically. Protecting against defects in the migration. + expect( + migrateToKibana660({ + id: 'space:foo', + attributes: { + disabledFeatures: ['foo', 'bar', 'baz'], + }, + }) + ).toEqual({ + id: 'space:foo', + attributes: { + disabledFeatures: ['foo', 'bar', 'baz'], + }, + }); + }); +}); diff --git a/x-pack/plugins/spaces/server/lib/migrations/migrate_6x.ts b/x-pack/plugins/spaces/server/lib/migrations/migrate_6x.ts new file mode 100644 index 0000000000000..0c080a8dabb0a --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/migrations/migrate_6x.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; + * you may not use this file except in compliance with the Elastic License. + */ + +export function migrateToKibana660(doc: Record) { + if (!doc.attributes.hasOwnProperty('disabledFeatures')) { + doc.attributes.disabledFeatures = []; + } + return doc; +} diff --git a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/index.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/index.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/request_interceptors/index.ts rename to x-pack/plugins/spaces/server/lib/request_interceptors/index.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts similarity index 94% rename from x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts rename to x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts index 511af53c13ab4..1c4a2e04dfb2c 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts @@ -14,26 +14,25 @@ import { CoreSetup, SavedObjectsLegacyService, SavedObjectsErrorHelpers, -} from '../../../../../../../src/core/server'; +} from '../../../../../../src/core/server'; import { elasticsearchServiceMock, loggingServiceMock, -} from '../../../../../../../src/core/server/mocks'; -import * as kbnTestServer from '../../../../../../../src/test_utils/kbn_server'; -import { LegacyAPI } from '../../new_platform/plugin'; -import { SpacesService } from '../../new_platform/spaces_service'; -import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; +} from '../../../../../../src/core/server/mocks'; +import * as kbnTestServer from '../../../../../../src/test_utils/kbn_server'; +import { LegacyAPI, PluginsSetup } from '../../plugin'; +import { SpacesService } from '../../spaces_service'; import { SpacesAuditLogger } from '../audit_logger'; -import { SecurityPlugin } from '../../../../security'; import { convertSavedObjectToSpace } from '../../routes/lib'; -import { XPackMainPlugin } from '../../../../xpack_main/xpack_main'; -import { Feature } from '../../../../../../plugins/features/server'; import { initSpacesOnPostAuthRequestInterceptor } from './on_post_auth_interceptor'; +import { Feature } from '../../../../features/server'; +import { OptionalPlugin } from '../../../../../legacy/server/lib/optional_plugin'; +import { SecurityPlugin } from '../../../../../legacy/plugins/security'; +import { spacesConfig } from '../__fixtures__'; describe('onPostAuthInterceptor', () => { let root: ReturnType; - const defaultRoute = '/app/kibana'; const headers = { authorization: `Basic ${Buffer.from( `${kibanaTestUser.username}:${kibanaTestUser.password}` @@ -117,7 +116,7 @@ describe('onPostAuthInterceptor', () => { .asLoggerFactory() .get('xpack', 'spaces'); - const xpackMainPlugin = { + const featuresPlugin = { getFeatures: () => [ { @@ -141,7 +140,7 @@ describe('onPostAuthInterceptor', () => { app: ['kibana'], }, ] as Feature[], - } as XPackMainPlugin; + } as PluginsSetup['features']; const savedObjectsService = { SavedObjectsClient: { @@ -164,10 +163,6 @@ describe('onPostAuthInterceptor', () => { }; const legacyAPI = { - legacyConfig: { - serverDefaultRoute: defaultRoute, - serverBasePath: '', - }, savedObjects: (savedObjectsService as unknown) as SavedObjectsLegacyService, } as LegacyAPI; @@ -176,9 +171,9 @@ describe('onPostAuthInterceptor', () => { const spacesService = await service.setup({ http: (http as unknown) as CoreSetup['http'], elasticsearch: elasticsearchServiceMock.createSetupContract(), - security: {} as OptionalPlugin, + getSecurity: () => ({} as OptionalPlugin), getSpacesAuditLogger: () => ({} as SpacesAuditLogger), - config$: Rx.of({ maxSpaces: 1000 }), + config$: Rx.of(spacesConfig), }); spacesService.scopedClient = jest.fn().mockResolvedValue({ @@ -212,7 +207,7 @@ describe('onPostAuthInterceptor', () => { getLegacyAPI: () => legacyAPI, http: (http as unknown) as CoreSetup['http'], log: loggingMock, - xpackMain: xpackMainPlugin, + features: featuresPlugin, spacesService, }); diff --git a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts similarity index 85% rename from x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts rename to x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts index e02677d94a8da..4674f3641084a 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts @@ -6,9 +6,8 @@ import { Logger, CoreSetup } from 'src/core/server'; import { Space } from '../../../common/model/space'; import { wrapError } from '../errors'; -import { XPackMainPlugin } from '../../../../xpack_main/xpack_main'; -import { SpacesServiceSetup } from '../../new_platform/spaces_service/spaces_service'; -import { LegacyAPI } from '../../new_platform/plugin'; +import { SpacesServiceSetup } from '../../spaces_service/spaces_service'; +import { LegacyAPI, PluginsSetup } from '../../plugin'; import { getSpaceSelectorUrl } from '../get_space_selector_url'; import { DEFAULT_SPACE_ID, ENTER_SPACE_PATH } from '../../../common/constants'; import { addSpaceIdToPath } from '../../../common'; @@ -16,21 +15,21 @@ import { addSpaceIdToPath } from '../../../common'; export interface OnPostAuthInterceptorDeps { getLegacyAPI(): LegacyAPI; http: CoreSetup['http']; - xpackMain: XPackMainPlugin; + features: PluginsSetup['features']; spacesService: SpacesServiceSetup; log: Logger; } export function initSpacesOnPostAuthRequestInterceptor({ - xpackMain, + features, getLegacyAPI, spacesService, log, http, }: OnPostAuthInterceptorDeps) { - const { serverBasePath } = getLegacyAPI().legacyConfig; - http.registerOnPostAuth(async (request, response, toolkit) => { + const serverBasePath = http.basePath.serverBasePath; + const path = request.url.pathname!; const spaceId = spacesService.getSpaceId(request); @@ -66,12 +65,7 @@ export function initSpacesOnPostAuthRequestInterceptor({ }); } } catch (error) { - const wrappedError = wrapError(error); - return response.customError({ - body: wrappedError, - headers: wrappedError.output.headers, - statusCode: wrappedError.output.statusCode, - }); + return response.customError(wrapError(error)); } } else if (isRequestingSpaceRoot) { const destination = addSpaceIdToPath(serverBasePath, spaceId, ENTER_SPACE_PATH); @@ -89,7 +83,7 @@ export function initSpacesOnPostAuthRequestInterceptor({ } catch (error) { const wrappedError = wrapError(error); - const statusCode = wrappedError.output.statusCode; + const statusCode = wrappedError.statusCode; // If user is not authorized, or the space cannot be found, allow them to select another space // by redirecting to the space selector. @@ -106,11 +100,7 @@ export function initSpacesOnPostAuthRequestInterceptor({ }); } else { log.error(`Unable to navigate to space "${spaceId}". ${error}`); - return response.customError({ - body: wrappedError, - headers: wrappedError.output.headers, - statusCode: wrappedError.output.statusCode, - }); + return response.customError(wrappedError); } } @@ -120,7 +110,7 @@ export function initSpacesOnPostAuthRequestInterceptor({ if (appId !== 'kibana' && space && space.disabledFeatures.length > 0) { log.debug(`Verifying application is available: "${appId}"`); - const allFeatures = xpackMain.getFeatures(); + const allFeatures = features.getFeatures(); const isRegisteredApp = allFeatures.some(feature => feature.app.includes(appId)); if (isRegisteredApp) { diff --git a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts similarity index 96% rename from x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts rename to x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts index e8bfab9fb1df0..0bbcd20c85292 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts @@ -12,10 +12,10 @@ import { KibanaRequest, KibanaResponseFactory, CoreSetup, -} from '../../../../../../../src/core/server'; +} from '../../../../../../src/core/server'; -import * as kbnTestServer from '../../../../../../../src/test_utils/kbn_server'; -import { LegacyAPI } from '../../new_platform/plugin'; +import * as kbnTestServer from '../../../../../../src/test_utils/kbn_server'; +import { LegacyAPI } from '../../plugin'; describe('onRequestInterceptor', () => { let root: ReturnType; @@ -110,9 +110,7 @@ describe('onRequestInterceptor', () => { initSpacesOnRequestInterceptor({ getLegacyAPI: () => ({ - legacyConfig: { - serverBasePath: opts.basePath, - }, + legacyConfig: {}, } as LegacyAPI), http: (http as unknown) as CoreSetup['http'], }); diff --git a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts similarity index 93% rename from x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts rename to x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts index 114cc9bf86d46..22d704c1b7e13 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.ts @@ -12,7 +12,7 @@ import { import { format } from 'url'; import { DEFAULT_SPACE_ID } from '../../../common/constants'; import { modifyUrl } from '../utils/url'; -import { LegacyAPI } from '../../new_platform/plugin'; +import { LegacyAPI } from '../../plugin'; import { getSpaceIdFromPath } from '../../../common'; export interface OnRequestInterceptorDeps { @@ -25,7 +25,7 @@ export function initSpacesOnRequestInterceptor({ getLegacyAPI, http }: OnRequest response: LifecycleResponseFactory, toolkit: OnPreAuthToolkit ) { - const { serverBasePath } = getLegacyAPI().legacyConfig; + const serverBasePath = http.basePath.serverBasePath; const path = request.url.pathname; // If navigating within the context of a space, then we store the Space's URL Context on the request, diff --git a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/__snapshots__/spaces_saved_objects_client.test.ts.snap b/x-pack/plugins/spaces/server/lib/saved_objects_client/__snapshots__/spaces_saved_objects_client.test.ts.snap similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/__snapshots__/spaces_saved_objects_client.test.ts.snap rename to x-pack/plugins/spaces/server/lib/saved_objects_client/__snapshots__/spaces_saved_objects_client.test.ts.snap diff --git a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts b/x-pack/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts similarity index 88% rename from x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts rename to x-pack/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts index 466c3237fd7db..aa61af07c268e 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts +++ b/x-pack/plugins/spaces/server/lib/saved_objects_client/saved_objects_client_wrapper_factory.ts @@ -6,7 +6,7 @@ import { SavedObjectsClientWrapperFactory } from 'src/core/server'; import { SpacesSavedObjectsClient } from './spaces_saved_objects_client'; -import { SpacesServiceSetup } from '../../new_platform/spaces_service/spaces_service'; +import { SpacesServiceSetup } from '../../spaces_service/spaces_service'; export function spacesSavedObjectsClientWrapperFactory( spacesService: SpacesServiceSetup, diff --git a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts b/x-pack/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts similarity index 99% rename from x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts rename to x-pack/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts index 4a5796b2e4ea2..7e1c4ff211a6f 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts +++ b/x-pack/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.test.ts @@ -6,7 +6,7 @@ import { DEFAULT_SPACE_ID } from '../../../common/constants'; import { SpacesSavedObjectsClient } from './spaces_saved_objects_client'; -import { spacesServiceMock } from '../../new_platform/spaces_service/spaces_service.mock'; +import { spacesServiceMock } from '../../spaces_service/spaces_service.mock'; const types = ['foo', 'bar', 'space']; diff --git a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts b/x-pack/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts similarity index 98% rename from x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts rename to x-pack/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts index d47a22e8d4545..2c5e4d0998b51 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts +++ b/x-pack/plugins/spaces/server/lib/saved_objects_client/spaces_saved_objects_client.ts @@ -14,7 +14,7 @@ import { SavedObjectsFindOptions, SavedObjectsUpdateOptions, } from 'src/core/server'; -import { SpacesServiceSetup } from '../../new_platform/spaces_service/spaces_service'; +import { SpacesServiceSetup } from '../../spaces_service/spaces_service'; import { spaceIdToNamespace } from '../utils/namespace'; interface SpacesSavedObjectsClientOptions { diff --git a/x-pack/plugins/spaces/server/lib/space_schema.test.ts b/x-pack/plugins/spaces/server/lib/space_schema.test.ts new file mode 100644 index 0000000000000..92ccb5401893a --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/space_schema.test.ts @@ -0,0 +1,231 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { spaceSchema } from './space_schema'; + +const defaultProperties = { + id: 'foo', + name: 'foo', +}; + +describe('#id', () => { + test('is required', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + id: undefined, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[id]: expected value of type [string] but got [undefined]"` + ); + }); + + test('allows lowercase a-z, 0-9, "_" and "-"', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + id: 'abcdefghijklmnopqrstuvwxyz0123456789_-', + }) + ).not.toThrowError(); + }); + + test(`doesn't allow uppercase`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + id: 'Foo', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[id]: must be lower case, a-z, 0-9, '_', and '-' are allowed"` + ); + }); + + test(`doesn't allow an empty string`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + id: '', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[id]: must be lower case, a-z, 0-9, '_', and '-' are allowed"` + ); + }); + + ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', ',', '.', '/', '?'].forEach( + invalidCharacter => { + test(`doesn't allow ${invalidCharacter}`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + id: `foo-${invalidCharacter}`, + }) + ).toThrowError(); + }); + } + ); +}); + +describe('#disabledFeatures', () => { + test('is optional', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + disabledFeatures: undefined, + }) + ).not.toThrowError(); + }); + + test('defaults to an empty array', () => { + const result = spaceSchema.validate({ + ...defaultProperties, + disabledFeatures: undefined, + }); + expect(result.disabledFeatures).toEqual([]); + }); + + test('must be an array if provided', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + disabledFeatures: 'foo', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[disabledFeatures]: expected value of type [array] but got [string]"` + ); + }); + + test('allows an array of strings', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + disabledFeatures: ['foo', 'bar'], + }) + ).not.toThrowError(); + }); + + test('does not allow an array containing non-string elements', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + disabledFeatures: ['foo', true], + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[disabledFeatures.1]: expected value of type [string] but got [boolean]"` + ); + }); +}); + +describe('#color', () => { + test('is optional', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: undefined, + }) + ).not.toThrowError(); + }); + + test(`doesn't allow an empty string`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[color]: must be a 6 digit hex color, starting with a #"` + ); + }); + + test(`allows lower case hex color code`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '#aabbcc', + }) + ).not.toThrowError(); + }); + + test(`allows upper case hex color code`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '#AABBCC', + }) + ).not.toThrowError(); + }); + + test(`allows numeric hex color code`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '#123456', + }) + ).not.toThrowError(); + }); + + test(`must start with a hash`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '123456', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[color]: must be a 6 digit hex color, starting with a #"` + ); + }); + + test(`cannot exceed 6 digits following the hash`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '1234567', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[color]: must be a 6 digit hex color, starting with a #"` + ); + }); + + test(`cannot be fewer than 6 digits following the hash`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + color: '12345', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[color]: must be a 6 digit hex color, starting with a #"` + ); + }); +}); + +describe('#imageUrl', () => { + test('is optional', () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + imageUrl: undefined, + }) + ).not.toThrowError(); + }); + + test(`must start with data:image`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + imageUrl: 'notValid', + }) + ).toThrowErrorMatchingInlineSnapshot(`"[imageUrl]: must start with 'data:image'"`); + }); + + test(`checking that a valid image is accepted as imageUrl`, () => { + expect(() => + spaceSchema.validate({ + ...defaultProperties, + imageUrl: + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTnU1rJkAAAB3klEQVRYR+2WzUrDQBCARzwqehE8ir1WPfgqRRA1bePBXgpe/MGCB9/Aiw+j+ASCB6kotklaEwW1F0WwNSaps9lV69awGzBpDzt8pJP9mXxsmk3ABH2oUEIilJAIJSRCCYlQQiKUkIh4QgY5agZodVjBowFrBktWQzDBU2ykiYaDuQpCYgnl3QunGzM6Z6YF+b5SkcgK1UH/aLbYReQiYL9d9/o+XFop5IU0Vl4uapAzoXC3eEBPw9vH1/wT6Vs2otPSkoH/IZzlzO/TU2vgQm8nl69Hp0H7nZ4OXogLJSSKBIUC3w88n+Ueyfv56fVZnqCQNVnCHbLrkV0Gd2d+GNkglsk438dhaTxloZDutV4wb06Vf40JcWZ2sMttPpE8NaHGeBnzIAhwPXqHseVB11EyLD0hxLUeaYud2a3B0g3k7GyFtrhX7F2RqhC+yV3jgTb2Rqdqf7/kUxYiWBOlTtXxfPJEtc8b5thGb+8AhL4ohnCNqQjZ2T2+K5rnw2M6KwEhKNDSGM3pTdxjhDgLbHkw/v/zw4AiPuSsfMzAiTidKxiF/ArpFqyzK8SMOlkwvloUMYRCtNvZLWeuIomd2Za/WZS4QomjhEQoIRFKSIQSEqGERAyfEH4YDBFQ/ARU6BiBxCAIQQAAAABJRU5ErkJggg==', + }) + ).not.toThrowError(); + }); +}); diff --git a/x-pack/plugins/spaces/server/lib/space_schema.ts b/x-pack/plugins/spaces/server/lib/space_schema.ts new file mode 100644 index 0000000000000..18d9478576e52 --- /dev/null +++ b/x-pack/plugins/spaces/server/lib/space_schema.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema } from '@kbn/config-schema'; +import { MAX_SPACE_INITIALS } from '../../common'; + +export const SPACE_ID_REGEX = /^[a-z0-9_\-]+$/; + +export const spaceSchema = schema.object({ + id: schema.string({ + validate: value => { + if (!SPACE_ID_REGEX.test(value)) { + return `must be lower case, a-z, 0-9, '_', and '-' are allowed`; + } + }, + }), + name: schema.string({ minLength: 1 }), + description: schema.maybe(schema.string()), + initials: schema.maybe(schema.string({ maxLength: MAX_SPACE_INITIALS })), + color: schema.maybe( + schema.string({ + validate: value => { + if (!/^#[a-zA-Z0-9]{6}$/.test(value)) { + return `must be a 6 digit hex color, starting with a #`; + } + }, + }) + ), + disabledFeatures: schema.arrayOf(schema.string(), { defaultValue: [] }), + _reserved: schema.maybe(schema.boolean()), + imageUrl: schema.maybe( + schema.string({ + validate: value => { + if (value !== '' && !/^data:image.*$/.test(value)) { + return `must start with 'data:image'`; + } + }, + }) + ), +}); diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/__snapshots__/spaces_client.test.ts.snap b/x-pack/plugins/spaces/server/lib/spaces_client/__snapshots__/spaces_client.test.ts.snap similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_client/__snapshots__/spaces_client.test.ts.snap rename to x-pack/plugins/spaces/server/lib/spaces_client/__snapshots__/spaces_client.test.ts.snap diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/index.ts b/x-pack/plugins/spaces/server/lib/spaces_client/index.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_client/index.ts rename to x-pack/plugins/spaces/server/lib/spaces_client/index.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts b/x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts similarity index 96% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts rename to x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts index d773cd86ef688..10f6292abf319 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts +++ b/x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.mock.ts @@ -29,7 +29,7 @@ const createSpacesClientMock = () => create: jest.fn().mockImplementation((space: Space) => Promise.resolve(space)), update: jest.fn().mockImplementation((space: Space) => Promise.resolve(space)), delete: jest.fn(), - } as unknown) as SpacesClient); + } as unknown) as jest.Mocked); export const spacesClientMock = { create: createSpacesClientMock, diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts b/x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts similarity index 98% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts rename to x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts index 78ad10bbd9164..e62a3a0efa601 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts +++ b/x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.test.ts @@ -5,9 +5,9 @@ */ import { SpacesClient } from './spaces_client'; -import { AuthorizationService } from '../../../../security/server/lib/authorization/service'; -import { actionsFactory } from '../../../../security/server/lib/authorization/actions'; -import { SpacesConfigType, config } from '../../new_platform/config'; +import { AuthorizationService } from '../../../../../legacy/plugins/security/server/lib/authorization/service'; +import { actionsFactory } from '../../../../../legacy/plugins/security/server/lib/authorization/actions'; +import { ConfigType, ConfigSchema } from '../../config'; import { GetSpacePurpose } from '../../../common/model/types'; const createMockAuditLogger = () => { @@ -69,8 +69,8 @@ const createMockAuthorization = () => { }; }; -const createMockConfig = (mockConfig: SpacesConfigType = { maxSpaces: 1000 }) => { - return config.schema.validate(mockConfig); +const createMockConfig = (mockConfig: ConfigType = { maxSpaces: 1000, enabled: true }) => { + return ConfigSchema.validate(mockConfig); }; describe('#getAll', () => { @@ -123,6 +123,7 @@ describe('#getAll', () => { const maxSpaces = 1234; const mockConfig = createMockConfig({ maxSpaces: 1234, + enabled: true, }); const client = new SpacesClient( @@ -162,6 +163,7 @@ describe('#getAll', () => { const maxSpaces = 1234; const mockConfig = createMockConfig({ maxSpaces: 1234, + enabled: true, }); const request = Symbol() as any; @@ -287,6 +289,7 @@ describe('#getAll', () => { const maxSpaces = 1234; const mockConfig = createMockConfig({ maxSpaces: 1234, + enabled: true, }); const mockInternalRepository = { find: jest.fn().mockReturnValue({ @@ -355,6 +358,7 @@ describe('#getAll', () => { const maxSpaces = 1234; const mockConfig = createMockConfig({ maxSpaces: 1234, + enabled: true, }); const request = Symbol() as any; @@ -725,6 +729,7 @@ describe('#create', () => { }; const mockConfig = createMockConfig({ maxSpaces, + enabled: true, }); const request = Symbol() as any; @@ -766,6 +771,7 @@ describe('#create', () => { }; const mockConfig = createMockConfig({ maxSpaces, + enabled: true, }); const request = Symbol() as any; @@ -807,6 +813,7 @@ describe('#create', () => { }; const mockConfig = createMockConfig({ maxSpaces, + enabled: true, }); const request = Symbol() as any; @@ -850,6 +857,7 @@ describe('#create', () => { }; const mockConfig = createMockConfig({ maxSpaces, + enabled: true, }); const request = Symbol() as any; @@ -931,6 +939,7 @@ describe('#create', () => { }; const mockConfig = createMockConfig({ maxSpaces, + enabled: true, }); const request = Symbol() as any; @@ -983,6 +992,7 @@ describe('#create', () => { }; const mockConfig = createMockConfig({ maxSpaces, + enabled: true, }); const request = Symbol() as any; diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.ts b/x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.ts similarity index 97% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.ts rename to x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.ts index 6d30084d0dc86..052534879e678 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/spaces_client/spaces_client.ts +++ b/x-pack/plugins/spaces/server/lib/spaces_client/spaces_client.ts @@ -7,11 +7,11 @@ import Boom from 'boom'; import { omit } from 'lodash'; import { Legacy } from 'kibana'; import { KibanaRequest } from 'src/core/server'; -import { AuthorizationService } from '../../../../security/server/lib/authorization/service'; +import { AuthorizationService } from '../../../../../legacy/plugins/security/server/lib/authorization/service'; import { isReservedSpace } from '../../../common/is_reserved_space'; import { Space } from '../../../common/model/space'; import { SpacesAuditLogger } from '../audit_logger'; -import { SpacesConfigType } from '../../new_platform/config'; +import { ConfigType } from '../../config'; import { GetSpacePurpose } from '../../../common/model/types'; type SpacesClientRequestFacade = Legacy.Request | KibanaRequest; @@ -33,7 +33,7 @@ export class SpacesClient { private readonly debugLogger: (message: string) => void, private readonly authorization: AuthorizationService | null, private readonly callWithRequestSavedObjectRepository: any, - private readonly config: SpacesConfigType, + private readonly config: ConfigType, private readonly internalSavedObjectRepository: any, private readonly request: SpacesClientRequestFacade ) {} diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts b/x-pack/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts similarity index 81% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts rename to x-pack/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts index 725b4cdc6bbad..4fbc4df03d00e 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts +++ b/x-pack/plugins/spaces/server/lib/spaces_tutorial_context_factory.test.ts @@ -7,13 +7,14 @@ import * as Rx from 'rxjs'; import { DEFAULT_SPACE_ID } from '../../common/constants'; import { createSpacesTutorialContextFactory } from './spaces_tutorial_context_factory'; -import { SpacesService } from '../new_platform/spaces_service'; +import { SpacesService } from '../spaces_service'; import { SavedObjectsLegacyService } from 'src/core/server'; import { SpacesAuditLogger } from './audit_logger'; -import { elasticsearchServiceMock, coreMock } from '../../../../../../src/core/server/mocks'; -import { spacesServiceMock } from '../new_platform/spaces_service/spaces_service.mock'; -import { createOptionalPlugin } from '../../../../server/lib/optional_plugin'; -import { LegacyAPI } from '../new_platform/plugin'; +import { elasticsearchServiceMock, coreMock } from '../../../../../src/core/server/mocks'; +import { spacesServiceMock } from '../spaces_service/spaces_service.mock'; +import { createOptionalPlugin } from '../../../../legacy/server/lib/optional_plugin'; +import { LegacyAPI } from '../plugin'; +import { spacesConfig } from './__fixtures__'; const log = { log: jest.fn(), @@ -26,9 +27,7 @@ const log = { }; const legacyAPI: LegacyAPI = { - legacyConfig: { - serverBasePath: '/foo', - }, + legacyConfig: {}, savedObjects: {} as SavedObjectsLegacyService, } as LegacyAPI; @@ -56,9 +55,10 @@ describe('createSpacesTutorialContextFactory', () => { const spacesService = await service.setup({ http: coreMock.createSetup().http, elasticsearch: elasticsearchServiceMock.createSetupContract(), - security: createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), getSpacesAuditLogger: () => ({} as SpacesAuditLogger), - config$: Rx.of({ maxSpaces: 1000 }), + config$: Rx.of(spacesConfig), }); const contextFactory = createSpacesTutorialContextFactory(spacesService); diff --git a/x-pack/legacy/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts b/x-pack/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts similarity index 86% rename from x-pack/legacy/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts rename to x-pack/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts index 770294840f1c6..f89681b709949 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts +++ b/x-pack/plugins/spaces/server/lib/spaces_tutorial_context_factory.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { SpacesServiceSetup } from '../new_platform/spaces_service/spaces_service'; +import { SpacesServiceSetup } from '../spaces_service/spaces_service'; export function createSpacesTutorialContextFactory(spacesService: SpacesServiceSetup) { return function spacesTutorialContextFactory(request: any) { diff --git a/x-pack/legacy/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts b/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts similarity index 98% rename from x-pack/legacy/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts rename to x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts index 18de89e33cb9a..f6133f5c03c6b 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts +++ b/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.test.ts @@ -5,7 +5,7 @@ */ import { UICapabilities } from 'ui/capabilities'; -import { Feature } from '../../../../../plugins/features/server'; +import { Feature } from '../../../../plugins/features/server'; import { Space } from '../../common/model/space'; import { toggleUICapabilities } from './toggle_ui_capabilities'; diff --git a/x-pack/legacy/plugins/spaces/server/lib/toggle_ui_capabilities.ts b/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts similarity index 97% rename from x-pack/legacy/plugins/spaces/server/lib/toggle_ui_capabilities.ts rename to x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts index c80ebdf88ef46..63f52ac379300 100644 --- a/x-pack/legacy/plugins/spaces/server/lib/toggle_ui_capabilities.ts +++ b/x-pack/plugins/spaces/server/lib/toggle_ui_capabilities.ts @@ -5,7 +5,7 @@ */ import _ from 'lodash'; import { UICapabilities } from 'ui/capabilities'; -import { Feature } from '../../../../../plugins/features/server'; +import { Feature } from '../../../../plugins/features/server'; import { Space } from '../../common/model/space'; export function toggleUICapabilities( diff --git a/x-pack/legacy/plugins/spaces/server/lib/utils/namespace.test.ts b/x-pack/plugins/spaces/server/lib/utils/namespace.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/utils/namespace.test.ts rename to x-pack/plugins/spaces/server/lib/utils/namespace.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/utils/namespace.ts b/x-pack/plugins/spaces/server/lib/utils/namespace.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/utils/namespace.ts rename to x-pack/plugins/spaces/server/lib/utils/namespace.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/utils/url.test.ts b/x-pack/plugins/spaces/server/lib/utils/url.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/utils/url.test.ts rename to x-pack/plugins/spaces/server/lib/utils/url.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/lib/utils/url.ts b/x-pack/plugins/spaces/server/lib/utils/url.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/lib/utils/url.ts rename to x-pack/plugins/spaces/server/lib/utils/url.ts diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/plugin.ts b/x-pack/plugins/spaces/server/plugin.ts similarity index 57% rename from x-pack/legacy/plugins/spaces/server/new_platform/plugin.ts rename to x-pack/plugins/spaces/server/plugin.ts index ed11e6da317fa..4b071baaa7e2c 100644 --- a/x-pack/legacy/plugins/spaces/server/new_platform/plugin.ts +++ b/x-pack/plugins/spaces/server/plugin.ts @@ -5,30 +5,33 @@ */ import { Observable } from 'rxjs'; -import { SavedObjectsLegacyService, CoreSetup } from 'src/core/server'; -import { Logger, PluginInitializerContext } from 'src/core/server'; +import { take } from 'rxjs/operators'; import { CapabilitiesModifier } from 'src/legacy/server/capabilities'; -import { Legacy } from 'kibana'; -import { OptionalPlugin } from '../../../../server/lib/optional_plugin'; -import { XPackMainPlugin } from '../../../xpack_main/xpack_main'; -import { createDefaultSpace } from '../lib/create_default_space'; +import { + SavedObjectsLegacyService, + CoreSetup, + KibanaRequest, + Logger, + PluginInitializerContext, +} from '../../../../src/core/server'; +import { SecurityPlugin } from '../../../legacy/plugins/security'; +import { PluginSetupContract as FeaturesPluginSetup } from '../../features/server'; +import { LicensingPluginSetup } from '../../licensing/server'; +import { OptionalPlugin } from '../../../legacy/server/lib/optional_plugin'; +import { XPackMainPlugin } from '../../../legacy/plugins/xpack_main/xpack_main'; +import { createDefaultSpace } from './lib/create_default_space'; // @ts-ignore import { AuditLogger } from '../../../../server/lib/audit_logger'; -// @ts-ignore -import { watchStatusAndLicenseToInitialize } from '../../../../server/lib/watch_status_and_license_to_initialize'; -import { checkLicense } from '../lib/check_license'; -import { spacesSavedObjectsClientWrapperFactory } from '../lib/saved_objects_client/saved_objects_client_wrapper_factory'; -import { SpacesAuditLogger } from '../lib/audit_logger'; -import { createSpacesTutorialContextFactory } from '../lib/spaces_tutorial_context_factory'; -import { initExternalSpacesApi } from '../routes/api/external'; -import { getSpacesUsageCollector } from '../lib/get_spaces_usage_collector'; +import { spacesSavedObjectsClientWrapperFactory } from './lib/saved_objects_client/saved_objects_client_wrapper_factory'; +import { SpacesAuditLogger } from './lib/audit_logger'; +import { createSpacesTutorialContextFactory } from './lib/spaces_tutorial_context_factory'; +import { getSpacesUsageCollector } from './lib/get_spaces_usage_collector'; import { SpacesService } from './spaces_service'; -import { SecurityPlugin } from '../../../security'; import { SpacesServiceSetup } from './spaces_service/spaces_service'; -import { SpacesConfigType } from './config'; -import { getActiveSpace } from '../lib/get_active_space'; -import { toggleUICapabilities } from '../lib/toggle_ui_capabilities'; -import { initSpacesRequestInterceptors } from '../lib/request_interceptors'; +import { ConfigType } from './config'; +import { toggleUICapabilities } from './lib/toggle_ui_capabilities'; +import { initSpacesRequestInterceptors } from './lib/request_interceptors'; +import { initExternalSpacesApi } from './routes/api/external'; /** * Describes a set of APIs that is available in the legacy platform only and required by this plugin @@ -52,30 +55,33 @@ export interface LegacyAPI { }; legacyConfig: { kibanaIndex: string; - serverBasePath: string; - serverDefaultRoute: string; }; - router: Legacy.Server['route']; -} - -export interface PluginsSetup { + xpackMain: XPackMainPlugin; // TODO: Spaces has a circular dependency with Security right now. // Security is not yet available when init runs, so this is wrapped in an optional plugin for the time being. security: OptionalPlugin; - xpackMain: XPackMainPlugin; - // TODO: this is temporary for `watchLicenseAndStatusToInitialize` - spaces: any; +} + +export interface PluginsSetup { + features: FeaturesPluginSetup; + licensing: LicensingPluginSetup; } export interface SpacesPluginSetup { spacesService: SpacesServiceSetup; - registerLegacyAPI: (legacyAPI: LegacyAPI) => void; + __legacyCompat: { + registerLegacyAPI: (legacyAPI: LegacyAPI) => void; + // TODO: We currently need the legacy plugin to inform this plugin when it is safe to create the default space. + // The NP does not have the equivilent ES connection/health/comapt checks that the legacy world does. + // See: https://github.com/elastic/kibana/issues/43456 + createDefaultSpace: () => Promise; + }; } export class Plugin { private readonly pluginId = 'spaces'; - private readonly config$: Observable; + private readonly config$: Observable; private readonly log: Logger; @@ -98,99 +104,91 @@ export class Plugin { }; constructor(initializerContext: PluginInitializerContext) { - this.config$ = initializerContext.config.create(); + this.config$ = initializerContext.config.create(); this.log = initializerContext.logger.get(); } - public async setup(core: CoreSetup, plugins: PluginsSetup): Promise { - const xpackMainPlugin: XPackMainPlugin = plugins.xpackMain; - watchStatusAndLicenseToInitialize(xpackMainPlugin, plugins.spaces, async () => { - await createDefaultSpace({ - elasticsearch: core.elasticsearch, - savedObjects: this.getLegacyAPI().savedObjects, - }); - }); - - // Register a function that is called whenever the xpack info changes, - // to re-compute the license check results for this plugin. - xpackMainPlugin.info.feature(this.pluginId).registerLicenseCheckResultsGenerator(checkLicense); + public async start() {} + public async setup(core: CoreSetup, plugins: PluginsSetup): Promise { const service = new SpacesService(this.log, this.getLegacyAPI); const spacesService = await service.setup({ http: core.http, elasticsearch: core.elasticsearch, - security: plugins.security, + getSecurity: () => this.getLegacyAPI().security, getSpacesAuditLogger: this.getSpacesAuditLogger, config$: this.config$, }); + const externalRouter = core.http.createRouter(); + initExternalSpacesApi({ + externalRouter, + log: this.log, + getSavedObjects: () => this.getLegacyAPI().savedObjects, + spacesService, + }); + + initSpacesRequestInterceptors({ + http: core.http, + log: this.log, + getLegacyAPI: this.getLegacyAPI, + spacesService, + features: plugins.features, + }); + return { spacesService, - registerLegacyAPI: (legacyAPI: LegacyAPI) => { - this.legacyAPI = legacyAPI; - this.setupLegacyComponents(core, spacesService, plugins.xpackMain); + __legacyCompat: { + registerLegacyAPI: (legacyAPI: LegacyAPI) => { + this.legacyAPI = legacyAPI; + this.setupLegacyComponents(spacesService, plugins.features, plugins.licensing); + }, + createDefaultSpace: async () => { + const esClient = await core.elasticsearch.adminClient$.pipe(take(1)).toPromise(); + return createDefaultSpace({ + esClient, + savedObjects: this.getLegacyAPI().savedObjects, + }); + }, }, }; } + public stop() {} + private setupLegacyComponents( - core: CoreSetup, spacesService: SpacesServiceSetup, - xpackMainPlugin: XPackMainPlugin + featuresSetup: FeaturesPluginSetup, + licensingSetup: LicensingPluginSetup ) { const legacyAPI = this.getLegacyAPI(); - const { addScopedSavedObjectsClientWrapperFactory, types } = legacyAPI.savedObjects; addScopedSavedObjectsClientWrapperFactory( Number.MIN_SAFE_INTEGER, 'spaces', spacesSavedObjectsClientWrapperFactory(spacesService, types) ); - legacyAPI.tutorial.addScopedTutorialContextFactory( createSpacesTutorialContextFactory(spacesService) ); - legacyAPI.capabilities.registerCapabilitiesModifier(async (request, uiCapabilities) => { - const spacesClient = await spacesService.scopedClient(request); try { - const activeSpace = await getActiveSpace( - spacesClient, - core.http.basePath.get(request), - legacyAPI.legacyConfig.serverBasePath - ); - - const features = xpackMainPlugin.getFeatures(); + const activeSpace = await spacesService.getActiveSpace(KibanaRequest.from(request)); + const features = featuresSetup.getFeatures(); return toggleUICapabilities(features, uiCapabilities, activeSpace); } catch (e) { return uiCapabilities; } }); - // Register a function with server to manage the collection of usage stats legacyAPI.usage.collectorSet.register( getSpacesUsageCollector({ kibanaIndex: legacyAPI.legacyConfig.kibanaIndex, usage: legacyAPI.usage, - xpackMain: xpackMainPlugin, + features: featuresSetup, + licensing: licensingSetup, }) ); - - initExternalSpacesApi({ - legacyRouter: legacyAPI.router, - log: this.log, - savedObjects: legacyAPI.savedObjects, - spacesService, - xpackMain: xpackMainPlugin, - }); - - initSpacesRequestInterceptors({ - http: core.http, - log: this.log, - getLegacyAPI: this.getLegacyAPI, - spacesService, - xpackMain: xpackMainPlugin, - }); } } diff --git a/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_legacy_api.ts b/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_legacy_api.ts new file mode 100644 index 0000000000000..5f366871ba81e --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_legacy_api.ts @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Readable } from 'stream'; +import { createPromiseFromStreams, createConcatStream } from 'src/legacy/utils/streams'; +import { SavedObjectsSchema, SavedObjectsLegacyService } from 'src/core/server'; +import { LegacyAPI } from '../../../plugin'; +import { Space } from '../../../../common/model/space'; +import { createSpaces } from '.'; + +async function readStreamToCompletion(stream: Readable) { + return (await (createPromiseFromStreams([stream, createConcatStream([])]) as unknown)) as any[]; +} + +interface LegacyAPIOpts { + spaces?: Space[]; +} + +export const createLegacyAPI = ({ + spaces = createSpaces().map(s => ({ id: s.id, ...s.attributes })), +}: LegacyAPIOpts = {}) => { + const mockSavedObjectsClientContract = { + get: jest.fn((type, id) => { + const result = spaces.filter(s => s.id === id); + if (!result.length) { + throw new Error(`not found: [${type}:${id}]`); + } + return result[0]; + }), + find: jest.fn(() => { + return { + total: spaces.length, + saved_objects: spaces, + }; + }), + create: jest.fn((type, attributes, { id }) => { + if (spaces.find(s => s.id === id)) { + throw new Error('conflict'); + } + return {}; + }), + update: jest.fn((type, id) => { + if (!spaces.find(s => s.id === id)) { + throw new Error('not found: during update'); + } + return {}; + }), + delete: jest.fn((type: string, id: string) => { + return {}; + }), + deleteByNamespace: jest.fn(), + }; + + const savedObjectsService = ({ + types: ['visualization', 'dashboard', 'index-pattern', 'globalType'], + schema: new SavedObjectsSchema({ + space: { + isNamespaceAgnostic: true, + hidden: true, + }, + globalType: { + isNamespaceAgnostic: true, + }, + }), + getScopedSavedObjectsClient: jest.fn().mockResolvedValue(mockSavedObjectsClientContract), + importExport: { + objectLimit: 10000, + getSortedObjectsForExport: jest.fn().mockResolvedValue( + new Readable({ + objectMode: true, + read() { + this.push(null); + }, + }) + ), + importSavedObjects: jest.fn().mockImplementation(async (opts: Record) => { + const objectsToImport: any[] = await readStreamToCompletion(opts.readStream); + return { + success: true, + successCount: objectsToImport.length, + }; + }), + resolveImportErrors: jest.fn().mockImplementation(async (opts: Record) => { + const objectsToImport: any[] = await readStreamToCompletion(opts.readStream); + return { + success: true, + successCount: objectsToImport.length, + }; + }), + }, + SavedObjectsClient: { + errors: { + isNotFoundError: jest.fn((e: any) => e.message.startsWith('not found:')), + isConflictError: jest.fn((e: any) => e.message.startsWith('conflict')), + }, + }, + } as unknown) as jest.Mocked; + + const legacyAPI: jest.Mocked = { + legacyConfig: { + kibanaIndex: '', + }, + auditLogger: {} as any, + capabilities: {} as any, + security: {} as any, + tutorial: {} as any, + usage: {} as any, + xpackMain: {} as any, + savedObjects: savedObjectsService, + }; + + return legacyAPI; +}; diff --git a/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_mock_so_repository.ts b/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_mock_so_repository.ts new file mode 100644 index 0000000000000..1548a88e554e3 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_mock_so_repository.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsClientContract, SavedObjectsErrorHelpers } from 'src/core/server'; + +export const createMockSavedObjectsRepository = (spaces: any[] = []) => { + const mockSavedObjectsClientContract = ({ + get: jest.fn((type, id) => { + const result = spaces.filter(s => s.id === id); + if (!result.length) { + throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); + } + return result[0]; + }), + find: jest.fn(() => { + return { + total: spaces.length, + saved_objects: spaces, + }; + }), + create: jest.fn((type, attributes, { id }) => { + if (spaces.find(s => s.id === id)) { + throw SavedObjectsErrorHelpers.decorateConflictError(new Error(), 'space conflict'); + } + return {}; + }), + update: jest.fn((type, id) => { + if (!spaces.find(s => s.id === id)) { + throw SavedObjectsErrorHelpers.createGenericNotFoundError(type, id); + } + return {}; + }), + delete: jest.fn((type: string, id: string) => { + return {}; + }), + deleteByNamespace: jest.fn(), + } as unknown) as jest.Mocked; + + return mockSavedObjectsClientContract; +}; diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts b/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts similarity index 86% rename from x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts rename to x-pack/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts index 85284e3fc3a1c..0e23054819ea5 100644 --- a/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts +++ b/x-pack/plugins/spaces/server/routes/api/__fixtures__/create_spaces.ts @@ -10,18 +10,21 @@ export function createSpaces() { id: 'a-space', attributes: { name: 'a space', + disabledFeatures: [], }, }, { id: 'b-space', attributes: { name: 'b space', + disabledFeatures: [], }, }, { id: 'default', attributes: { name: 'Default Space', + disabledFeatures: [], _reserved: true, }, }, diff --git a/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/index.ts b/x-pack/plugins/spaces/server/routes/api/__fixtures__/index.ts similarity index 56% rename from x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/index.ts rename to x-pack/plugins/spaces/server/routes/api/__fixtures__/index.ts index 37fe32c80032e..1f5a5fe2cc91e 100644 --- a/x-pack/legacy/plugins/spaces/server/routes/api/__fixtures__/index.ts +++ b/x-pack/plugins/spaces/server/routes/api/__fixtures__/index.ts @@ -5,11 +5,6 @@ */ export { createSpaces } from './create_spaces'; -export { - createTestHandler, - TestConfig, - TestOptions, - TeardownFn, - RequestRunner, - RequestRunnerResult, -} from './create_test_handler'; +export { createLegacyAPI } from './create_legacy_api'; +export { createMockSavedObjectsRepository } from './create_mock_so_repository'; +export { mockRouteContext, mockRouteContextWithInvalidLicense } from './route_contexts'; diff --git a/x-pack/plugins/spaces/server/routes/api/__fixtures__/route_contexts.ts b/x-pack/plugins/spaces/server/routes/api/__fixtures__/route_contexts.ts new file mode 100644 index 0000000000000..5bb811ef6be4c --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/__fixtures__/route_contexts.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { RequestHandlerContext } from 'src/core/server'; +import { LICENSE_STATUS } from '../../../../../licensing/server/constants'; + +export const mockRouteContext = ({ + licensing: { + license: { + check: jest.fn().mockReturnValue({ + check: LICENSE_STATUS.Valid, + }), + }, + }, +} as unknown) as RequestHandlerContext; + +export const mockRouteContextWithInvalidLicense = ({ + licensing: { + license: { + check: jest.fn().mockReturnValue({ + check: LICENSE_STATUS.Invalid, + message: 'License is invalid for spaces', + }), + }, + }, +} as unknown) as RequestHandlerContext; diff --git a/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.test.ts b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.test.ts new file mode 100644 index 0000000000000..92744aa9f0fc5 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.test.ts @@ -0,0 +1,450 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import * as Rx from 'rxjs'; +import { + createSpaces, + createLegacyAPI, + createMockSavedObjectsRepository, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { CoreSetup, IRouter, kibanaResponseFactory } from 'src/core/server'; +import { + loggingServiceMock, + elasticsearchServiceMock, + httpServiceMock, + httpServerMock, +} from 'src/core/server/mocks'; +import { SpacesService } from '../../../spaces_service'; +import { createOptionalPlugin } from '../../../../../../legacy/server/lib/optional_plugin'; +import { SpacesAuditLogger } from '../../../lib/audit_logger'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { initCopyToSpacesApi } from './copy_to_space'; +import { ObjectType } from '@kbn/config-schema'; +import { RouteSchemas } from 'src/core/server/http/router/route'; +import { spacesConfig } from '../../../lib/__fixtures__'; + +describe('copy to space', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map(s => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter('') as jest.Mocked; + + const legacyAPI = createLegacyAPI({ spaces }); + + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + + const log = loggingServiceMock.create().get('spaces'); + + const service = new SpacesService(log, () => legacyAPI); + const spacesService = await service.setup({ + http: (httpService as unknown) as CoreSetup['http'], + elasticsearch: elasticsearchServiceMock.createSetupContract(), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSpacesAuditLogger: () => ({} as SpacesAuditLogger), + config$: Rx.of(spacesConfig), + }); + + spacesService.scopedClient = jest.fn((req: any) => { + return Promise.resolve( + new SpacesClient( + null as any, + () => null, + null, + savedObjectsRepositoryMock, + spacesConfig, + savedObjectsRepositoryMock, + req + ) + ); + }); + + initCopyToSpacesApi({ + externalRouter: router, + getSavedObjects: () => legacyAPI.savedObjects, + log, + spacesService, + }); + + const [ + [ctsRouteDefinition, ctsRouteHandler], + [resolveRouteDefinition, resolveRouteHandler], + ] = router.post.mock.calls; + + return { + copyToSpace: { + routeValidation: ctsRouteDefinition.validate as RouteSchemas< + ObjectType, + ObjectType, + ObjectType + >, + routeHandler: ctsRouteHandler, + }, + resolveConflicts: { + routeValidation: resolveRouteDefinition.validate as RouteSchemas< + ObjectType, + ObjectType, + ObjectType + >, + routeHandler: resolveRouteHandler, + }, + savedObjectsRepositoryMock, + legacyAPI, + }; + }; + + describe('POST /api/spaces/_copy_saved_objects', () => { + it(`returns http/403 when the license is invalid`, async () => { + const { copyToSpace } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'post', + }); + + const response = await copyToSpace.routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it(`uses a Saved Objects Client instance without the spaces wrapper`, async () => { + const payload = { + spaces: ['a-space'], + objects: [], + }; + + const { copyToSpace, legacyAPI } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + await copyToSpace.routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(legacyAPI.savedObjects.getScopedSavedObjectsClient).toHaveBeenCalledWith( + expect.any(Object), + { + excludedWrappers: ['spaces'], + } + ); + }); + + it(`requires space IDs to be unique`, async () => { + const payload = { + spaces: ['a-space', 'a-space'], + objects: [], + }; + + const { copyToSpace } = await setup(); + + expect(() => + copyToSpace.routeValidation.body!.validate(payload) + ).toThrowErrorMatchingInlineSnapshot(`"[spaces]: duplicate space ids are not allowed"`); + }); + + it(`requires well-formed space IDS`, async () => { + const payload = { + spaces: ['a-space', 'a-space-invalid-!@#$%^&*()'], + objects: [], + }; + + const { copyToSpace } = await setup(); + + expect(() => + copyToSpace.routeValidation.body!.validate(payload) + ).toThrowErrorMatchingInlineSnapshot( + `"[spaces.1]: lower case, a-z, 0-9, \\"_\\", and \\"-\\" are allowed"` + ); + }); + + it(`requires objects to be unique`, async () => { + const payload = { + spaces: ['a-space'], + objects: [{ type: 'foo', id: 'bar' }, { type: 'foo', id: 'bar' }], + }; + + const { copyToSpace } = await setup(); + + expect(() => + copyToSpace.routeValidation.body!.validate(payload) + ).toThrowErrorMatchingInlineSnapshot(`"[objects]: duplicate objects are not allowed"`); + }); + + it('does not allow namespace agnostic types to be copied (via "supportedTypes" property)', async () => { + const payload = { + spaces: ['a-space'], + objects: [{ type: 'globalType', id: 'bar' }, { type: 'visualization', id: 'bar' }], + }; + + const { copyToSpace, legacyAPI } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + const response = await copyToSpace.routeHandler( + mockRouteContext, + request, + kibanaResponseFactory + ); + + const { status } = response; + + expect(status).toEqual(200); + expect(legacyAPI.savedObjects.importExport.importSavedObjects).toHaveBeenCalledTimes(1); + const [importCallOptions] = (legacyAPI.savedObjects.importExport + .importSavedObjects as any).mock.calls[0]; + + expect(importCallOptions).toMatchObject({ + namespace: 'a-space', + supportedTypes: ['visualization', 'dashboard', 'index-pattern'], + }); + }); + + it('copies to multiple spaces', async () => { + const payload = { + spaces: ['a-space', 'b-space'], + objects: [{ type: 'visualization', id: 'bar' }], + }; + + const { copyToSpace, legacyAPI } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + const response = await copyToSpace.routeHandler( + mockRouteContext, + request, + kibanaResponseFactory + ); + + const { status } = response; + + expect(status).toEqual(200); + expect(legacyAPI.savedObjects.importExport.importSavedObjects).toHaveBeenCalledTimes(2); + const [firstImportCallOptions] = (legacyAPI.savedObjects.importExport + .importSavedObjects as any).mock.calls[0]; + + expect(firstImportCallOptions).toMatchObject({ + namespace: 'a-space', + }); + + const [secondImportCallOptions] = (legacyAPI.savedObjects.importExport + .importSavedObjects as any).mock.calls[1]; + + expect(secondImportCallOptions).toMatchObject({ + namespace: 'b-space', + }); + }); + }); + + describe('POST /api/spaces/_resolve_copy_saved_objects_errors', () => { + it(`returns http/403 when the license is invalid`, async () => { + const { resolveConflicts } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'post', + }); + + const response = await resolveConflicts.routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it(`uses a Saved Objects Client instance without the spaces wrapper`, async () => { + const payload = { + retries: { + ['a-space']: [ + { + type: 'visualization', + id: 'bar', + overwrite: true, + }, + ], + }, + objects: [{ type: 'visualization', id: 'bar' }], + }; + + const { resolveConflicts, legacyAPI } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + await resolveConflicts.routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(legacyAPI.savedObjects.getScopedSavedObjectsClient).toHaveBeenCalledWith( + expect.any(Object), + { + excludedWrappers: ['spaces'], + } + ); + }); + + it(`requires objects to be unique`, async () => { + const payload = { + retries: {}, + objects: [{ type: 'foo', id: 'bar' }, { type: 'foo', id: 'bar' }], + }; + + const { resolveConflicts } = await setup(); + + expect(() => + resolveConflicts.routeValidation.body!.validate(payload) + ).toThrowErrorMatchingInlineSnapshot(`"[objects]: duplicate objects are not allowed"`); + }); + + it(`requires well-formed space ids`, async () => { + const payload = { + retries: { + ['invalid-space-id!@#$%^&*()']: [ + { + type: 'foo', + id: 'bar', + overwrite: true, + }, + ], + }, + objects: [{ type: 'foo', id: 'bar' }], + }; + + const { resolveConflicts } = await setup(); + + expect(() => + resolveConflicts.routeValidation.body!.validate(payload) + ).toThrowErrorMatchingInlineSnapshot( + `"[key(\\"invalid-space-id!@#$%^&*()\\")]: Invalid space id: invalid-space-id!@#$%^&*()"` + ); + }); + + it('does not allow namespace agnostic types to be copied (via "supportedTypes" property)', async () => { + const payload = { + retries: { + ['a-space']: [ + { + type: 'visualization', + id: 'bar', + overwrite: true, + }, + { + type: 'globalType', + id: 'bar', + overwrite: true, + }, + ], + }, + objects: [ + { + type: 'globalType', + id: 'bar', + }, + { type: 'visualization', id: 'bar' }, + ], + }; + + const { resolveConflicts, legacyAPI } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + const response = await resolveConflicts.routeHandler( + mockRouteContext, + request, + kibanaResponseFactory + ); + + const { status } = response; + + expect(status).toEqual(200); + expect(legacyAPI.savedObjects.importExport.resolveImportErrors).toHaveBeenCalledTimes(1); + const [resolveImportErrorsCallOptions] = (legacyAPI.savedObjects.importExport + .resolveImportErrors as any).mock.calls[0]; + + expect(resolveImportErrorsCallOptions).toMatchObject({ + namespace: 'a-space', + supportedTypes: ['visualization', 'dashboard', 'index-pattern'], + }); + }); + + it('resolves conflicts for multiple spaces', async () => { + const payload = { + objects: [{ type: 'visualization', id: 'bar' }], + retries: { + ['a-space']: [ + { + type: 'visualization', + id: 'bar', + overwrite: true, + }, + ], + ['b-space']: [ + { + type: 'globalType', + id: 'bar', + overwrite: true, + }, + ], + }, + }; + + const { resolveConflicts, legacyAPI } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + const response = await resolveConflicts.routeHandler( + mockRouteContext, + request, + kibanaResponseFactory + ); + + const { status } = response; + + expect(status).toEqual(200); + expect(legacyAPI.savedObjects.importExport.resolveImportErrors).toHaveBeenCalledTimes(2); + const [resolveImportErrorsFirstCallOptions] = (legacyAPI.savedObjects.importExport + .resolveImportErrors as any).mock.calls[0]; + + expect(resolveImportErrorsFirstCallOptions).toMatchObject({ + namespace: 'a-space', + supportedTypes: ['visualization', 'dashboard', 'index-pattern'], + }); + + const [resolveImportErrorsSecondCallOptions] = (legacyAPI.savedObjects.importExport + .resolveImportErrors as any).mock.calls[1]; + + expect(resolveImportErrorsSecondCallOptions).toMatchObject({ + namespace: 'b-space', + supportedTypes: ['visualization', 'dashboard', 'index-pattern'], + }); + }); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts new file mode 100644 index 0000000000000..040a0552c38be --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/copy_to_space.ts @@ -0,0 +1,152 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema } from '@kbn/config-schema'; +import _ from 'lodash'; +import { SavedObject } from 'src/core/server'; +import { + copySavedObjectsToSpacesFactory, + resolveCopySavedObjectsToSpacesConflictsFactory, +} from '../../../lib/copy_to_spaces'; +import { ExternalRouteDeps } from '.'; +import { COPY_TO_SPACES_SAVED_OBJECTS_CLIENT_OPTS } from '../../../lib/copy_to_spaces/copy_to_spaces'; +import { SPACE_ID_REGEX } from '../../../lib/space_schema'; +import { createLicensedRouteHandler } from '../../lib'; + +type SavedObjectIdentifier = Pick; + +const areObjectsUnique = (objects: SavedObjectIdentifier[]) => + _.uniq(objects, (o: SavedObjectIdentifier) => `${o.type}:${o.id}`).length === objects.length; + +export function initCopyToSpacesApi(deps: ExternalRouteDeps) { + const { externalRouter, spacesService, getSavedObjects } = deps; + + externalRouter.post( + { + path: '/api/spaces/_copy_saved_objects', + options: { + tags: ['access:copySavedObjectsToSpaces'], + }, + validate: { + body: schema.object({ + spaces: schema.arrayOf( + schema.string({ + validate: value => { + if (!SPACE_ID_REGEX.test(value)) { + return `lower case, a-z, 0-9, "_", and "-" are allowed`; + } + }, + }), + { + validate: spaceIds => { + if (_.uniq(spaceIds).length !== spaceIds.length) { + return 'duplicate space ids are not allowed'; + } + }, + } + ), + objects: schema.arrayOf( + schema.object({ + type: schema.string(), + id: schema.string(), + }), + { + validate: objects => { + if (!areObjectsUnique(objects)) { + return 'duplicate objects are not allowed'; + } + }, + } + ), + includeReferences: schema.boolean({ defaultValue: false }), + overwrite: schema.boolean({ defaultValue: false }), + }), + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + const savedObjectsClient = getSavedObjects().getScopedSavedObjectsClient( + request, + COPY_TO_SPACES_SAVED_OBJECTS_CLIENT_OPTS + ); + const copySavedObjectsToSpaces = copySavedObjectsToSpacesFactory( + savedObjectsClient, + getSavedObjects() + ); + const { spaces: destinationSpaceIds, objects, includeReferences, overwrite } = request.body; + const sourceSpaceId = spacesService.getSpaceId(request); + const copyResponse = await copySavedObjectsToSpaces(sourceSpaceId, destinationSpaceIds, { + objects, + includeReferences, + overwrite, + }); + return response.ok({ body: copyResponse }); + }) + ); + + externalRouter.post( + { + path: '/api/spaces/_resolve_copy_saved_objects_errors', + options: { + tags: ['access:copySavedObjectsToSpaces'], + }, + validate: { + body: schema.object({ + retries: schema.recordOf( + schema.string({ + validate: spaceId => { + if (!SPACE_ID_REGEX.test(spaceId)) { + return `Invalid space id: ${spaceId}`; + } + }, + }), + schema.arrayOf( + schema.object({ + type: schema.string(), + id: schema.string(), + overwrite: schema.boolean({ defaultValue: false }), + }) + ) + ), + objects: schema.arrayOf( + schema.object({ + type: schema.string(), + id: schema.string(), + }), + { + validate: objects => { + if (!areObjectsUnique(objects)) { + return 'duplicate objects are not allowed'; + } + }, + } + ), + includeReferences: schema.boolean({ defaultValue: false }), + }), + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + const savedObjectsClient = getSavedObjects().getScopedSavedObjectsClient( + request, + COPY_TO_SPACES_SAVED_OBJECTS_CLIENT_OPTS + ); + const resolveCopySavedObjectsToSpacesConflicts = resolveCopySavedObjectsToSpacesConflictsFactory( + savedObjectsClient, + getSavedObjects() + ); + const { objects, includeReferences, retries } = request.body; + const sourceSpaceId = spacesService.getSpaceId(request); + const resolveConflictsResponse = await resolveCopySavedObjectsToSpacesConflicts( + sourceSpaceId, + { + objects, + includeReferences, + retries, + } + ); + return response.ok({ body: resolveConflictsResponse }); + }) + ); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/delete.test.ts b/x-pack/plugins/spaces/server/routes/api/external/delete.test.ts new file mode 100644 index 0000000000000..e341bd3e4bcbb --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/delete.test.ts @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as Rx from 'rxjs'; +import { + createSpaces, + createLegacyAPI, + createMockSavedObjectsRepository, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { CoreSetup, IRouter, kibanaResponseFactory } from 'src/core/server'; +import { + loggingServiceMock, + elasticsearchServiceMock, + httpServiceMock, + httpServerMock, +} from 'src/core/server/mocks'; +import { SpacesService } from '../../../spaces_service'; +import { createOptionalPlugin } from '../../../../../../legacy/server/lib/optional_plugin'; +import { SpacesAuditLogger } from '../../../lib/audit_logger'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { initDeleteSpacesApi } from './delete'; +import { RouteSchemas } from 'src/core/server/http/router/route'; +import { ObjectType } from '@kbn/config-schema'; +import { spacesConfig } from '../../../lib/__fixtures__'; + +describe('Spaces Public API', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map(s => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter('') as jest.Mocked; + + const legacyAPI = createLegacyAPI({ spaces }); + + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + + const log = loggingServiceMock.create().get('spaces'); + + const service = new SpacesService(log, () => legacyAPI); + const spacesService = await service.setup({ + http: (httpService as unknown) as CoreSetup['http'], + elasticsearch: elasticsearchServiceMock.createSetupContract(), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSpacesAuditLogger: () => ({} as SpacesAuditLogger), + config$: Rx.of(spacesConfig), + }); + + spacesService.scopedClient = jest.fn((req: any) => { + return Promise.resolve( + new SpacesClient( + null as any, + () => null, + null, + savedObjectsRepositoryMock, + spacesConfig, + savedObjectsRepositoryMock, + req + ) + ); + }); + + initDeleteSpacesApi({ + externalRouter: router, + getSavedObjects: () => legacyAPI.savedObjects, + log, + spacesService, + }); + + const [routeDefinition, routeHandler] = router.delete.mock.calls[0]; + + return { + routeValidation: routeDefinition.validate as RouteSchemas, + routeHandler, + }; + }; + + it('requires a space id as part of the path', async () => { + const { routeValidation } = await setup(); + expect(() => routeValidation.params!.validate({})).toThrowErrorMatchingInlineSnapshot( + `"[id]: expected value of type [string] but got [undefined]"` + ); + }); + + it(`deletes the space`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: 'a-space', + }, + method: 'delete', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(204); + }); + + it(`returns http/403 when the license is invalid`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: 'a-space', + }, + method: 'delete', + }); + + const response = await routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it('throws when deleting a non-existent space', async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: 'not-a-space', + }, + method: 'delete', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(404); + }); + + it(`DELETE spaces/{id}' cannot delete reserved spaces`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: 'default', + }, + method: 'delete', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status, payload } = response; + + expect(status).toEqual(400); + expect(payload.message).toEqual('This Space cannot be deleted because it is reserved.'); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/delete.ts b/x-pack/plugins/spaces/server/routes/api/external/delete.ts new file mode 100644 index 0000000000000..536efdc1de649 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/delete.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema } from '@kbn/config-schema'; +import { wrapError } from '../../../lib/errors'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { ExternalRouteDeps } from '.'; +import { createLicensedRouteHandler } from '../../lib'; + +export function initDeleteSpacesApi(deps: ExternalRouteDeps) { + const { externalRouter, getSavedObjects, spacesService } = deps; + + externalRouter.delete( + { + path: '/api/spaces/space/{id}', + validate: { + params: schema.object({ + id: schema.string(), + }), + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + const { SavedObjectsClient } = getSavedObjects(); + const spacesClient: SpacesClient = await spacesService.scopedClient(request); + + const id = request.params.id; + + try { + await spacesClient.delete(id); + } catch (error) { + if (SavedObjectsClient.errors.isNotFoundError(error)) { + return response.notFound(); + } + return response.customError(wrapError(error)); + } + + return response.noContent(); + }) + ); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/get.test.ts b/x-pack/plugins/spaces/server/routes/api/external/get.test.ts new file mode 100644 index 0000000000000..69c4f16d4ca80 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/get.test.ts @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import * as Rx from 'rxjs'; +import { + createSpaces, + createLegacyAPI, + createMockSavedObjectsRepository, + mockRouteContextWithInvalidLicense, + mockRouteContext, +} from '../__fixtures__'; +import { initGetSpaceApi } from './get'; +import { CoreSetup, IRouter, kibanaResponseFactory } from 'src/core/server'; +import { + loggingServiceMock, + elasticsearchServiceMock, + httpServiceMock, + httpServerMock, +} from 'src/core/server/mocks'; +import { SpacesService } from '../../../spaces_service'; +import { createOptionalPlugin } from '../../../../../../legacy/server/lib/optional_plugin'; +import { SpacesAuditLogger } from '../../../lib/audit_logger'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { spacesConfig } from '../../../lib/__fixtures__'; + +describe('GET space', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map(s => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter('') as jest.Mocked; + + const legacyAPI = createLegacyAPI({ spaces }); + + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + + const log = loggingServiceMock.create().get('spaces'); + + const service = new SpacesService(log, () => legacyAPI); + const spacesService = await service.setup({ + http: (httpService as unknown) as CoreSetup['http'], + elasticsearch: elasticsearchServiceMock.createSetupContract(), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSpacesAuditLogger: () => ({} as SpacesAuditLogger), + config$: Rx.of(spacesConfig), + }); + + spacesService.scopedClient = jest.fn((req: any) => { + return Promise.resolve( + new SpacesClient( + null as any, + () => null, + null, + savedObjectsRepositoryMock, + spacesConfig, + savedObjectsRepositoryMock, + req + ) + ); + }); + + initGetSpaceApi({ + externalRouter: router, + getSavedObjects: () => legacyAPI.savedObjects, + log, + spacesService, + }); + + return { + routeHandler: router.get.mock.calls[0][1], + }; + }; + + it(`returns http/403 when the license is invalid`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'get', + }); + + const response = await routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it(`returns the space with that id`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: 'default', + }, + method: 'get', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(response.status).toEqual(200); + expect(response.payload).toEqual(spaces.find(s => s.id === 'default')); + }); + + it(`'GET spaces/{id}' returns 404 when retrieving a non-existent space`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: 'not-a-space', + }, + method: 'get', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(response.status).toEqual(404); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/get.ts b/x-pack/plugins/spaces/server/routes/api/external/get.ts new file mode 100644 index 0000000000000..7643ec811db71 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/get.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema } from '@kbn/config-schema'; +import { wrapError } from '../../../lib/errors'; +import { ExternalRouteDeps } from '.'; +import { createLicensedRouteHandler } from '../../lib'; + +export function initGetSpaceApi(deps: ExternalRouteDeps) { + const { externalRouter, spacesService, getSavedObjects } = deps; + + externalRouter.get( + { + path: '/api/spaces/space/{id}', + validate: { + params: schema.object({ + id: schema.string(), + }), + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + const spaceId = request.params.id; + + const { SavedObjectsClient } = getSavedObjects(); + const spacesClient = await spacesService.scopedClient(request); + + try { + const space = await spacesClient.get(spaceId); + return response.ok({ body: space }); + } catch (error) { + if (SavedObjectsClient.errors.isNotFoundError(error)) { + return response.notFound(); + } + return response.customError(wrapError(error)); + } + }) + ); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/get_all.test.ts b/x-pack/plugins/spaces/server/routes/api/external/get_all.test.ts new file mode 100644 index 0000000000000..fd31b7d084c0e --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/get_all.test.ts @@ -0,0 +1,141 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import * as Rx from 'rxjs'; +import { + createSpaces, + createLegacyAPI, + createMockSavedObjectsRepository, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { CoreSetup, kibanaResponseFactory, IRouter } from 'src/core/server'; +import { + loggingServiceMock, + elasticsearchServiceMock, + httpServiceMock, + httpServerMock, +} from 'src/core/server/mocks'; +import { SpacesService } from '../../../spaces_service'; +import { createOptionalPlugin } from '../../../../../../legacy/server/lib/optional_plugin'; +import { SpacesAuditLogger } from '../../../lib/audit_logger'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { initGetAllSpacesApi } from './get_all'; +import { spacesConfig } from '../../../lib/__fixtures__'; + +describe('GET /spaces/space', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map(s => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter('') as jest.Mocked; + + const legacyAPI = createLegacyAPI({ spaces }); + + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + + const log = loggingServiceMock.create().get('spaces'); + + const service = new SpacesService(log, () => legacyAPI); + const spacesService = await service.setup({ + http: (httpService as unknown) as CoreSetup['http'], + elasticsearch: elasticsearchServiceMock.createSetupContract(), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSpacesAuditLogger: () => ({} as SpacesAuditLogger), + config$: Rx.of(spacesConfig), + }); + + spacesService.scopedClient = jest.fn((req: any) => { + return Promise.resolve( + new SpacesClient( + null as any, + () => null, + null, + savedObjectsRepositoryMock, + spacesConfig, + savedObjectsRepositoryMock, + req + ) + ); + }); + + initGetAllSpacesApi({ + externalRouter: router, + getSavedObjects: () => legacyAPI.savedObjects, + log, + spacesService, + }); + + return { + routeHandler: router.get.mock.calls[0][1], + }; + }; + + it(`returns all available spaces`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'get', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(response.status).toEqual(200); + expect(response.payload).toEqual(spaces); + }); + + it(`returns all available spaces with the 'any' purpose`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + query: { + purpose: 'any', + }, + method: 'get', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(response.status).toEqual(200); + expect(response.payload).toEqual(spaces); + }); + + it(`returns all available spaces with the 'copySavedObjectsIntoSpace' purpose`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + query: { + purpose: 'copySavedObjectsIntoSpace', + }, + method: 'get', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + expect(response.status).toEqual(200); + expect(response.payload).toEqual(spaces); + }); + + it(`returns http/403 when the license is invalid`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'get', + }); + + const response = await routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/get_all.ts b/x-pack/plugins/spaces/server/routes/api/external/get_all.ts new file mode 100644 index 0000000000000..cd1e03eb10b0a --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/get_all.ts @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema } from '@kbn/config-schema'; +import { Space } from '../../../../common/model/space'; +import { wrapError } from '../../../lib/errors'; +import { ExternalRouteDeps } from '.'; +import { createLicensedRouteHandler } from '../../lib'; + +export function initGetAllSpacesApi(deps: ExternalRouteDeps) { + const { externalRouter, log, spacesService } = deps; + + externalRouter.get( + { + path: '/api/spaces/space', + validate: { + query: schema.object({ + purpose: schema.oneOf( + [schema.literal('any'), schema.literal('copySavedObjectsIntoSpace')], + { + defaultValue: 'any', + } + ), + }), + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + log.debug(`Inside GET /api/spaces/space`); + + const purpose = request.query.purpose; + + const spacesClient = await spacesService.scopedClient(request); + + let spaces: Space[]; + + try { + log.debug(`Attempting to retrieve all spaces for ${purpose} purpose`); + spaces = await spacesClient.getAll(purpose); + log.debug(`Retrieved ${spaces.length} spaces for ${purpose} purpose`); + } catch (error) { + log.debug(`Error retrieving spaces for ${purpose} purpose: ${error}`); + return response.customError(wrapError(error)); + } + + return response.ok({ body: spaces }); + }) + ); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/index.ts b/x-pack/plugins/spaces/server/routes/api/external/index.ts new file mode 100644 index 0000000000000..60b0170ee04a7 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/index.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Logger, SavedObjectsLegacyService, IRouter } from 'src/core/server'; +import { initDeleteSpacesApi } from './delete'; +import { initGetSpaceApi } from './get'; +import { initGetAllSpacesApi } from './get_all'; +import { initPostSpacesApi } from './post'; +import { initPutSpacesApi } from './put'; +import { SpacesServiceSetup } from '../../../spaces_service/spaces_service'; +import { initCopyToSpacesApi } from './copy_to_space'; + +export interface ExternalRouteDeps { + externalRouter: IRouter; + getSavedObjects: () => SavedObjectsLegacyService; + spacesService: SpacesServiceSetup; + log: Logger; +} + +export function initExternalSpacesApi(deps: ExternalRouteDeps) { + initDeleteSpacesApi(deps); + initGetSpaceApi(deps); + initGetAllSpacesApi(deps); + initPostSpacesApi(deps); + initPutSpacesApi(deps); + initCopyToSpacesApi(deps); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/post.test.ts b/x-pack/plugins/spaces/server/routes/api/external/post.test.ts new file mode 100644 index 0000000000000..f874f96833350 --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/post.test.ts @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import * as Rx from 'rxjs'; +import { + createSpaces, + createLegacyAPI, + createMockSavedObjectsRepository, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { CoreSetup, kibanaResponseFactory, IRouter } from 'src/core/server'; +import { + loggingServiceMock, + elasticsearchServiceMock, + httpServerMock, + httpServiceMock, +} from 'src/core/server/mocks'; +import { SpacesService } from '../../../spaces_service'; +import { createOptionalPlugin } from '../../../../../../legacy/server/lib/optional_plugin'; +import { SpacesAuditLogger } from '../../../lib/audit_logger'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { initPostSpacesApi } from './post'; +import { RouteSchemas } from 'src/core/server/http/router/route'; +import { ObjectType } from '@kbn/config-schema'; +import { spacesConfig } from '../../../lib/__fixtures__'; + +describe('Spaces Public API', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map(s => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter('') as jest.Mocked; + + const legacyAPI = createLegacyAPI({ spaces }); + + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + + const log = loggingServiceMock.create().get('spaces'); + + const service = new SpacesService(log, () => legacyAPI); + const spacesService = await service.setup({ + http: (httpService as unknown) as CoreSetup['http'], + elasticsearch: elasticsearchServiceMock.createSetupContract(), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSpacesAuditLogger: () => ({} as SpacesAuditLogger), + config$: Rx.of(spacesConfig), + }); + + spacesService.scopedClient = jest.fn((req: any) => { + return Promise.resolve( + new SpacesClient( + null as any, + () => null, + null, + savedObjectsRepositoryMock, + spacesConfig, + savedObjectsRepositoryMock, + req + ) + ); + }); + + initPostSpacesApi({ + externalRouter: router, + getSavedObjects: () => legacyAPI.savedObjects, + log, + spacesService, + }); + + const [routeDefinition, routeHandler] = router.post.mock.calls[0]; + + return { + routeValidation: routeDefinition.validate as RouteSchemas, + routeHandler, + savedObjectsRepositoryMock, + }; + }; + + it('should create a new space with the provided ID', async () => { + const payload = { + id: 'my-space-id', + name: 'my new space', + description: 'with a description', + disabledFeatures: ['foo'], + }; + + const { routeHandler, savedObjectsRepositoryMock } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(200); + expect(savedObjectsRepositoryMock.create).toHaveBeenCalledTimes(1); + expect(savedObjectsRepositoryMock.create).toHaveBeenCalledWith( + 'space', + { name: 'my new space', description: 'with a description', disabledFeatures: ['foo'] }, + { id: 'my-space-id' } + ); + }); + + it(`returns http/403 when the license is invalid`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'post', + }); + + const response = await routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); + + it('should not allow a space to be updated', async () => { + const payload = { + id: 'a-space', + name: 'my updated space', + description: 'with a description', + }; + + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: payload, + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status, payload: responsePayload } = response; + + expect(status).toEqual(409); + expect(responsePayload.message).toEqual('space conflict'); + }); + + it('should not require disabledFeatures to be specified', async () => { + const payload = { + id: 'my-space-id', + name: 'my new space', + description: 'with a description', + }; + + const { routeValidation, routeHandler, savedObjectsRepositoryMock } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + body: routeValidation.body!.validate(payload), + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(200); + expect(savedObjectsRepositoryMock.create).toHaveBeenCalledTimes(1); + expect(savedObjectsRepositoryMock.create).toHaveBeenCalledWith( + 'space', + { name: 'my new space', description: 'with a description', disabledFeatures: [] }, + { id: 'my-space-id' } + ); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/post.ts b/x-pack/plugins/spaces/server/routes/api/external/post.ts new file mode 100644 index 0000000000000..3a24df8b7270e --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/post.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; + * you may not use this file except in compliance with the Elastic License. + */ +import Boom from 'boom'; +import { wrapError } from '../../../lib/errors'; +import { spaceSchema } from '../../../lib/space_schema'; +import { ExternalRouteDeps } from '.'; +import { createLicensedRouteHandler } from '../../lib'; + +export function initPostSpacesApi(deps: ExternalRouteDeps) { + const { externalRouter, log, spacesService, getSavedObjects } = deps; + + externalRouter.post( + { + path: '/api/spaces/space', + validate: { + body: spaceSchema, + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + log.debug(`Inside POST /api/spaces/space`); + const { SavedObjectsClient } = getSavedObjects(); + const spacesClient = await spacesService.scopedClient(request); + + const space = request.body; + + try { + log.debug(`Attempting to create space`); + const createdSpace = await spacesClient.create(space); + return response.ok({ body: createdSpace }); + } catch (error) { + if (SavedObjectsClient.errors.isConflictError(error)) { + const { body } = wrapError( + Boom.conflict(`A space with the identifier ${space.id} already exists.`) + ); + return response.conflict({ body }); + } + log.debug(`Error creating space: ${error}`); + return response.customError(wrapError(error)); + } + }) + ); +} diff --git a/x-pack/plugins/spaces/server/routes/api/external/put.test.ts b/x-pack/plugins/spaces/server/routes/api/external/put.test.ts new file mode 100644 index 0000000000000..b06bb41fe8b6b --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/put.test.ts @@ -0,0 +1,219 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as Rx from 'rxjs'; +import { + createSpaces, + createLegacyAPI, + createMockSavedObjectsRepository, + mockRouteContext, + mockRouteContextWithInvalidLicense, +} from '../__fixtures__'; +import { CoreSetup, IRouter, kibanaResponseFactory } from 'src/core/server'; +import { + loggingServiceMock, + elasticsearchServiceMock, + httpServiceMock, + httpServerMock, +} from 'src/core/server/mocks'; +import { SpacesService } from '../../../spaces_service'; +import { createOptionalPlugin } from '../../../../../../legacy/server/lib/optional_plugin'; +import { SpacesAuditLogger } from '../../../lib/audit_logger'; +import { SpacesClient } from '../../../lib/spaces_client'; +import { initPutSpacesApi } from './put'; +import { RouteSchemas } from 'src/core/server/http/router/route'; +import { ObjectType } from '@kbn/config-schema'; +import { spacesConfig } from '../../../lib/__fixtures__'; + +describe('PUT /api/spaces/space', () => { + const spacesSavedObjects = createSpaces(); + const spaces = spacesSavedObjects.map(s => ({ id: s.id, ...s.attributes })); + + const setup = async () => { + const httpService = httpServiceMock.createSetupContract(); + const router = httpService.createRouter('') as jest.Mocked; + + const legacyAPI = createLegacyAPI({ spaces }); + + const savedObjectsRepositoryMock = createMockSavedObjectsRepository(spacesSavedObjects); + + const log = loggingServiceMock.create().get('spaces'); + + const service = new SpacesService(log, () => legacyAPI); + const spacesService = await service.setup({ + http: (httpService as unknown) as CoreSetup['http'], + elasticsearch: elasticsearchServiceMock.createSetupContract(), + getSecurity: () => + createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + getSpacesAuditLogger: () => ({} as SpacesAuditLogger), + config$: Rx.of(spacesConfig), + }); + + spacesService.scopedClient = jest.fn((req: any) => { + return Promise.resolve( + new SpacesClient( + null as any, + () => null, + null, + savedObjectsRepositoryMock, + spacesConfig, + savedObjectsRepositoryMock, + req + ) + ); + }); + + initPutSpacesApi({ + externalRouter: router, + getSavedObjects: () => legacyAPI.savedObjects, + log, + spacesService, + }); + + const [routeDefinition, routeHandler] = router.put.mock.calls[0]; + + return { + routeValidation: routeDefinition.validate as RouteSchemas, + routeHandler, + savedObjectsRepositoryMock, + }; + }; + + it('should update an existing space with the provided ID', async () => { + const payload = { + id: 'a-space', + name: 'my updated space', + description: 'with a description', + disabledFeatures: [], + }; + + const { routeHandler, savedObjectsRepositoryMock } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: payload.id, + }, + body: payload, + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(200); + expect(savedObjectsRepositoryMock.update).toHaveBeenCalledTimes(1); + expect(savedObjectsRepositoryMock.update).toHaveBeenCalledWith('space', 'a-space', { + name: 'my updated space', + description: 'with a description', + disabledFeatures: [], + }); + }); + + it('should allow an empty description', async () => { + const payload = { + id: 'a-space', + name: 'my updated space', + description: '', + disabledFeatures: ['foo'], + }; + + const { routeHandler, savedObjectsRepositoryMock } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: payload.id, + }, + body: payload, + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(200); + expect(savedObjectsRepositoryMock.update).toHaveBeenCalledTimes(1); + expect(savedObjectsRepositoryMock.update).toHaveBeenCalledWith('space', 'a-space', { + name: 'my updated space', + description: '', + disabledFeatures: ['foo'], + }); + }); + + it('should not require disabledFeatures', async () => { + const payload = { + id: 'a-space', + name: 'my updated space', + description: '', + }; + + const { routeHandler, routeValidation, savedObjectsRepositoryMock } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: payload.id, + }, + body: routeValidation.body!.validate(payload), + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(200); + expect(savedObjectsRepositoryMock.update).toHaveBeenCalledTimes(1); + expect(savedObjectsRepositoryMock.update).toHaveBeenCalledWith('space', 'a-space', { + name: 'my updated space', + description: '', + disabledFeatures: [], + }); + }); + + it('should not allow a new space to be created', async () => { + const payload = { + id: 'a-new-space', + name: 'my new space', + description: 'with a description', + }; + + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + params: { + id: payload.id, + }, + body: payload, + method: 'post', + }); + + const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory); + + const { status } = response; + + expect(status).toEqual(404); + }); + + it(`returns http/403 when the license is invalid`, async () => { + const { routeHandler } = await setup(); + + const request = httpServerMock.createKibanaRequest({ + method: 'post', + }); + + const response = await routeHandler( + mockRouteContextWithInvalidLicense, + request, + kibanaResponseFactory + ); + + expect(response.status).toEqual(403); + expect(response.payload).toEqual({ + message: 'License is invalid for spaces', + }); + }); +}); diff --git a/x-pack/plugins/spaces/server/routes/api/external/put.ts b/x-pack/plugins/spaces/server/routes/api/external/put.ts new file mode 100644 index 0000000000000..4c19b0bd2edda --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/api/external/put.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { schema } from '@kbn/config-schema'; +import { Space } from '../../../../common/model/space'; +import { wrapError } from '../../../lib/errors'; +import { spaceSchema } from '../../../lib/space_schema'; +import { ExternalRouteDeps } from '.'; +import { createLicensedRouteHandler } from '../../lib'; + +export function initPutSpacesApi(deps: ExternalRouteDeps) { + const { externalRouter, spacesService, getSavedObjects } = deps; + + externalRouter.put( + { + path: '/api/spaces/space/{id}', + validate: { + params: schema.object({ + id: schema.string(), + }), + body: spaceSchema, + }, + }, + createLicensedRouteHandler(async (context, request, response) => { + const { SavedObjectsClient } = getSavedObjects(); + const spacesClient = await spacesService.scopedClient(request); + + const space = request.body; + const id = request.params.id; + + let result: Space; + try { + result = await spacesClient.update(id, { ...space }); + } catch (error) { + if (SavedObjectsClient.errors.isNotFoundError(error)) { + return response.notFound(); + } + return response.customError(wrapError(error)); + } + + return response.ok({ body: result }); + }) + ); +} diff --git a/x-pack/legacy/plugins/spaces/server/routes/lib/convert_saved_object_to_space.test.ts b/x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.test.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/routes/lib/convert_saved_object_to_space.test.ts rename to x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.test.ts diff --git a/x-pack/legacy/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts b/x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts rename to x-pack/plugins/spaces/server/routes/lib/convert_saved_object_to_space.ts diff --git a/x-pack/legacy/plugins/spaces/server/routes/lib/index.ts b/x-pack/plugins/spaces/server/routes/lib/index.ts similarity index 81% rename from x-pack/legacy/plugins/spaces/server/routes/lib/index.ts rename to x-pack/plugins/spaces/server/routes/lib/index.ts index af67388792565..068ff67d3d136 100644 --- a/x-pack/legacy/plugins/spaces/server/routes/lib/index.ts +++ b/x-pack/plugins/spaces/server/routes/lib/index.ts @@ -5,4 +5,4 @@ */ export { convertSavedObjectToSpace } from './convert_saved_object_to_space'; -export { getSpaceById } from './get_space_by_id'; +export { createLicensedRouteHandler } from './licensed_route_handler'; diff --git a/x-pack/plugins/spaces/server/routes/lib/licensed_route_handler.ts b/x-pack/plugins/spaces/server/routes/lib/licensed_route_handler.ts new file mode 100644 index 0000000000000..a3bc2fa71fefe --- /dev/null +++ b/x-pack/plugins/spaces/server/routes/lib/licensed_route_handler.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { RequestHandler } from 'src/core/server'; +import { ObjectType } from '@kbn/config-schema'; +import { LICENSE_STATUS } from '../../../../licensing/server/constants'; + +export const createLicensedRouteHandler = < + P extends ObjectType, + Q extends ObjectType, + B extends ObjectType +>( + handler: RequestHandler +) => { + const licensedRouteHandler: RequestHandler = (context, request, responseToolkit) => { + const { license } = context.licensing; + const licenseCheck = license.check('spaces', 'basic'); + if ( + licenseCheck.check === LICENSE_STATUS.Unavailable || + licenseCheck.check === LICENSE_STATUS.Invalid + ) { + return responseToolkit.forbidden({ body: { message: licenseCheck.message! } }); + } + + return handler(context, request, responseToolkit); + }; + + return licensedRouteHandler; +}; diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/index.ts b/x-pack/plugins/spaces/server/spaces_service/index.ts similarity index 100% rename from x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/index.ts rename to x-pack/plugins/spaces/server/spaces_service/index.ts diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.mock.ts b/x-pack/plugins/spaces/server/spaces_service/spaces_service.mock.ts similarity index 76% rename from x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.mock.ts rename to x-pack/plugins/spaces/server/spaces_service/spaces_service.mock.ts index bcbd377d60ee1..6f21330368f8d 100644 --- a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.mock.ts +++ b/x-pack/plugins/spaces/server/spaces_service/spaces_service.mock.ts @@ -5,12 +5,12 @@ */ import { SpacesServiceSetup } from './spaces_service'; -import { spacesClientMock } from '../../lib/spaces_client/spaces_client.mock'; -import { DEFAULT_SPACE_ID } from '../../../common/constants'; -import { namespaceToSpaceId, spaceIdToNamespace } from '../../lib/utils/namespace'; +import { spacesClientMock } from '../lib/spaces_client/spaces_client.mock'; +import { DEFAULT_SPACE_ID } from '../../common/constants'; +import { namespaceToSpaceId, spaceIdToNamespace } from '../lib/utils/namespace'; const createSetupContractMock = (spaceId = DEFAULT_SPACE_ID) => { - const setupContract: SpacesServiceSetup = { + const setupContract: jest.Mocked = { getSpaceId: jest.fn().mockReturnValue(spaceId), isInDefaultSpace: jest.fn().mockReturnValue(spaceId === DEFAULT_SPACE_ID), getBasePath: jest.fn().mockReturnValue(''), diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.test.ts b/x-pack/plugins/spaces/server/spaces_service/spaces_service.test.ts similarity index 92% rename from x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.test.ts rename to x-pack/plugins/spaces/server/spaces_service/spaces_service.test.ts index 817474dc0fb3a..d0910e00586ed 100644 --- a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.test.ts +++ b/x-pack/plugins/spaces/server/spaces_service/spaces_service.test.ts @@ -6,16 +6,18 @@ import * as Rx from 'rxjs'; import { SpacesService } from './spaces_service'; import { coreMock, elasticsearchServiceMock } from 'src/core/server/mocks'; -import { SpacesAuditLogger } from '../../lib/audit_logger'; +import { SpacesAuditLogger } from '../lib/audit_logger'; import { KibanaRequest, SavedObjectsLegacyService, SavedObjectsErrorHelpers, + HttpServiceSetup, } from 'src/core/server'; -import { DEFAULT_SPACE_ID } from '../../../common/constants'; -import { createOptionalPlugin } from '../../../../../server/lib/optional_plugin'; +import { DEFAULT_SPACE_ID } from '../../common/constants'; +import { getSpaceIdFromPath } from '../../common/lib/spaces_url_parser'; import { LegacyAPI } from '../plugin'; -import { getSpaceIdFromPath } from '../../../common'; +import { createOptionalPlugin } from '../../../../legacy/server/lib/optional_plugin'; +import { spacesConfig } from '../lib/__fixtures__'; const mockLogger = { trace: jest.fn(), @@ -29,9 +31,7 @@ const mockLogger = { const createService = async (serverBasePath: string = '') => { const legacyAPI = { - legacyConfig: { - serverBasePath, - }, + legacyConfig: {}, savedObjects: ({ getSavedObjectsRepository: jest.fn().mockReturnValue({ get: jest.fn().mockImplementation((type, id) => { @@ -63,6 +63,9 @@ const createService = async (serverBasePath: string = '') => { const spacesService = new SpacesService(mockLogger, () => legacyAPI); const httpSetup = coreMock.createSetup().http; + httpSetup.basePath = { + serverBasePath, + } as HttpServiceSetup['basePath']; httpSetup.basePath.get = jest.fn().mockImplementation((request: KibanaRequest) => { const spaceId = getSpaceIdFromPath(request.url.path); @@ -75,8 +78,8 @@ const createService = async (serverBasePath: string = '') => { const spacesServiceSetup = await spacesService.setup({ http: httpSetup, elasticsearch: elasticsearchServiceMock.createSetupContract(), - config$: Rx.of({ maxSpaces: 10 }), - security: createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), + config$: Rx.of(spacesConfig), + getSecurity: () => createOptionalPlugin({ get: () => null }, 'xpack.security', {}, 'security'), getSpacesAuditLogger: () => new SpacesAuditLogger({}), }); diff --git a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.ts b/x-pack/plugins/spaces/server/spaces_service/spaces_service.ts similarity index 81% rename from x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.ts rename to x-pack/plugins/spaces/server/spaces_service/spaces_service.ts index 08ebc2cb31748..83a62f91ade01 100644 --- a/x-pack/legacy/plugins/spaces/server/new_platform/spaces_service/spaces_service.ts +++ b/x-pack/plugins/spaces/server/spaces_service/spaces_service.ts @@ -8,15 +8,15 @@ import { map, take } from 'rxjs/operators'; import { Observable, Subscription, combineLatest } from 'rxjs'; import { Legacy } from 'kibana'; import { Logger, KibanaRequest, CoreSetup } from 'src/core/server'; -import { OptionalPlugin } from '../../../../../server/lib/optional_plugin'; -import { DEFAULT_SPACE_ID } from '../../../common/constants'; -import { SecurityPlugin } from '../../../../security'; -import { SpacesClient } from '../../lib/spaces_client'; -import { SpacesConfigType } from '../config'; -import { namespaceToSpaceId, spaceIdToNamespace } from '../../lib/utils/namespace'; +import { SecurityPlugin } from '../../../../legacy/plugins/security'; +import { OptionalPlugin } from '../../../../legacy/server/lib/optional_plugin'; import { LegacyAPI } from '../plugin'; -import { Space } from '../../../common/model/space'; -import { getSpaceIdFromPath, addSpaceIdToPath } from '../../../common'; +import { SpacesClient } from '../lib/spaces_client'; +import { ConfigType } from '../config'; +import { getSpaceIdFromPath, addSpaceIdToPath } from '../../common/lib/spaces_url_parser'; +import { DEFAULT_SPACE_ID } from '../../common/constants'; +import { spaceIdToNamespace, namespaceToSpaceId } from '../lib/utils/namespace'; +import { Space } from '../../common/model/space'; type RequestFacade = KibanaRequest | Legacy.Request; @@ -39,8 +39,8 @@ export interface SpacesServiceSetup { interface SpacesServiceDeps { http: CoreSetup['http']; elasticsearch: CoreSetup['elasticsearch']; - security: OptionalPlugin; - config$: Observable; + getSecurity: () => OptionalPlugin; + config$: Observable; getSpacesAuditLogger(): any; } @@ -52,7 +52,7 @@ export class SpacesService { public async setup({ http, elasticsearch, - security, + getSecurity, config$, getSpacesAuditLogger, }: SpacesServiceDeps): Promise { @@ -64,7 +64,7 @@ export class SpacesService { ? (request as Record).getBasePath() : http.basePath.get(request); - const spaceId = getSpaceIdFromPath(basePath, this.getServerBasePath()); + const spaceId = getSpaceIdFromPath(basePath, http.basePath.serverBasePath); return spaceId; }; @@ -85,6 +85,8 @@ export class SpacesService { ['space'] ); + const security = getSecurity(); + const authorization = security.isEnabled ? security.authorization : null; return new SpacesClient( @@ -110,7 +112,7 @@ export class SpacesService { if (!spaceId) { throw new TypeError(`spaceId is required to retrieve base path`); } - return addSpaceIdToPath(this.getServerBasePath(), spaceId); + return addSpaceIdToPath(http.basePath.serverBasePath, spaceId); }, isInDefaultSpace: (request: RequestFacade) => { const spaceId = getSpaceId(request); @@ -134,8 +136,4 @@ export class SpacesService { this.configSubscription$ = undefined; } } - - private getServerBasePath() { - return this.getLegacyAPI().legacyConfig.serverBasePath; - } } diff --git a/x-pack/test/api_integration/apis/spaces/space_attributes.ts b/x-pack/test/api_integration/apis/spaces/space_attributes.ts index b3863cd82835c..8b68ad8c9ccca 100644 --- a/x-pack/test/api_integration/apis/spaces/space_attributes.ts +++ b/x-pack/test/api_integration/apis/spaces/space_attributes.ts @@ -63,13 +63,8 @@ export default function({ getService }: FtrProviderContext) { }) .expect(400, { error: 'Bad Request', - message: - 'child "imageUrl" fails because ["imageUrl" with value "invalidImage" fails to match the Image URL should start with \'data:image\' pattern]', + message: "[request body.imageUrl]: must start with 'data:image'", statusCode: 400, - validation: { - keys: ['imageUrl'], - source: 'payload', - }, }); }); }); diff --git a/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts b/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts index 61f1ab2190a09..85e877912ab6c 100644 --- a/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts +++ b/x-pack/test/spaces_api_integration/common/suites/copy_to_space.ts @@ -7,8 +7,8 @@ import expect from '@kbn/expect'; import { SuperTest } from 'supertest'; import { EsArchiver } from 'src/es_archiver'; -import { DEFAULT_SPACE_ID } from '../../../../legacy/plugins/spaces/common/constants'; -import { CopyResponse } from '../../../../legacy/plugins/spaces/server/lib/copy_to_spaces'; +import { DEFAULT_SPACE_ID } from '../../../../plugins/spaces/common/constants'; +import { CopyResponse } from '../../../../plugins/spaces/server/lib/copy_to_spaces'; import { getUrlPrefix } from '../lib/space_test_utils'; import { DescribeFn, TestDefinitionAuthentication } from '../lib/types'; diff --git a/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts b/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts index 5d32d9f8adcf2..20b4d024803d7 100644 --- a/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts +++ b/x-pack/test/spaces_api_integration/common/suites/resolve_copy_to_space_conflicts.ts @@ -9,7 +9,7 @@ import { SuperTest } from 'supertest'; import { EsArchiver } from 'src/es_archiver'; import { SavedObject } from 'src/core/server'; import { DEFAULT_SPACE_ID } from '../../../../legacy/plugins/spaces/common/constants'; -import { CopyResponse } from '../../../../legacy/plugins/spaces/server/lib/copy_to_spaces'; +import { CopyResponse } from '../../../../plugins/spaces/server/lib/copy_to_spaces'; import { getUrlPrefix } from '../lib/space_test_utils'; import { DescribeFn, TestDefinitionAuthentication } from '../lib/types'; From 12a4439298810e28a40de41a531e69a86577c17c Mon Sep 17 00:00:00 2001 From: Corey Robertson Date: Tue, 15 Oct 2019 09:18:22 -0400 Subject: [PATCH 32/46] [Canvas] Disable embeddables in canvas (#48102) * Disable embeddables in canvas --- .../canvas_plugin_src/functions/common/index.ts | 14 ++++++++------ .../functions/common/saved_map.ts | 1 + .../functions/common/saved_search.ts | 1 + .../functions/common/saved_visualization.ts | 1 + .../strings/functions/function_help.ts | 4 ++++ .../components/workpad_header/workpad_header.tsx | 4 +++- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/index.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/index.ts index 097aef69d4b4c..894df9dc1c6b9 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/index.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/index.ts @@ -47,9 +47,10 @@ import { rounddate } from './rounddate'; import { rowCount } from './rowCount'; import { repeatImage } from './repeatImage'; import { revealImage } from './revealImage'; -import { savedMap } from './saved_map'; -import { savedSearch } from './saved_search'; -import { savedVisualization } from './saved_visualization'; +// TODO: elastic/kibana#44822 Disabling pending filters work +// import { savedMap } from './saved_map'; +// import { savedSearch } from './saved_search'; +// import { savedVisualization } from './saved_visualization'; import { seriesStyle } from './seriesStyle'; import { shape } from './shape'; import { sort } from './sort'; @@ -106,9 +107,10 @@ export const functions = [ revealImage, rounddate, rowCount, - savedMap, - savedSearch, - savedVisualization, + // TODO: elastic/kibana#44822 Disabling pending filters work + // savedMap, + // savedSearch, + // savedVisualization, seriesStyle, shape, sort, diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts index c36a05e405704..8c8f53ad0d74e 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_map.ts @@ -35,6 +35,7 @@ interface SavedMapInput extends EmbeddableInput { type Return = EmbeddableExpression; export function savedMap(): ExpressionFunction<'savedMap', Filter | null, Arguments, Return> { + // @ts-ignore elastic/kibana#44822 Disabling pending filters work const { help, args: argHelp } = getFunctionHelp().savedMap; return { name: 'savedMap', diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts index 40bf235761b92..72ab334e68ca4 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_search.ts @@ -23,6 +23,7 @@ interface Arguments { type Return = EmbeddableExpression & { id: SearchInput['id'] }>; export function savedSearch(): ExpressionFunction<'savedSearch', Filter | null, Arguments, Return> { + // @ts-ignore elastic/kibana#44822 Disabling pending filters work const { help, args: argHelp } = getFunctionHelp().savedSearch; return { name: 'savedSearch', diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts index 930bdb74ee363..b3bc9b8ca69b7 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/functions/common/saved_visualization.ts @@ -26,6 +26,7 @@ export function savedVisualization(): ExpressionFunction< Arguments, Return > { + // @ts-ignore elastic/kibana#44822 Disabling pending filters work const { help, args: argHelp } = getFunctionHelp().savedVisualization; return { name: 'savedVisualization', diff --git a/x-pack/legacy/plugins/canvas/canvas_plugin_src/strings/functions/function_help.ts b/x-pack/legacy/plugins/canvas/canvas_plugin_src/strings/functions/function_help.ts index 302f97d06ebed..327865ad1c61b 100644 --- a/x-pack/legacy/plugins/canvas/canvas_plugin_src/strings/functions/function_help.ts +++ b/x-pack/legacy/plugins/canvas/canvas_plugin_src/strings/functions/function_help.ts @@ -207,8 +207,12 @@ export const getFunctionHelp = (): FunctionHelpDict => ({ revealImage, rounddate, rowCount, + // TODO: elastic/kibana#44822 Disabling pending filters work + // @ts-ignore savedMap, + // @ts-ignore savedSearch, + // @ts-ignore savedVisualization, seriesStyle, shape, diff --git a/x-pack/legacy/plugins/canvas/public/components/workpad_header/workpad_header.tsx b/x-pack/legacy/plugins/canvas/public/components/workpad_header/workpad_header.tsx index 31ad0593f58bb..b05e1f5b757c2 100644 --- a/x-pack/legacy/plugins/canvas/public/components/workpad_header/workpad_header.tsx +++ b/x-pack/legacy/plugins/canvas/public/components/workpad_header/workpad_header.tsx @@ -13,7 +13,6 @@ import { EuiFlexGroup, EuiButtonIcon, EuiButton, - EuiButtonEmpty, EuiOverlayMask, EuiModal, EuiModalFooter, @@ -194,11 +193,14 @@ export class WorkpadHeader extends React.PureComponent { + {/* + TODO: elastic/kibana#44822 Disabling pending filters work {strings.getEmbedObjectButtonLabel()} + */} Date: Tue, 15 Oct 2019 06:19:22 -0700 Subject: [PATCH 33/46] Removing `
` tag that was breaking the EuiComboBox's enter key (#48184) --- .../edit_user/components/edit_user_page.tsx | 286 +++++++++--------- 1 file changed, 140 insertions(+), 146 deletions(-) diff --git a/x-pack/legacy/plugins/security/public/views/management/edit_user/components/edit_user_page.tsx b/x-pack/legacy/plugins/security/public/views/management/edit_user/components/edit_user_page.tsx index 427fb621d5ddd..282ce4eea160c 100644 --- a/x-pack/legacy/plugins/security/public/views/management/edit_user/components/edit_user_page.tsx +++ b/x-pack/legacy/plugins/security/public/views/management/edit_user/components/edit_user_page.tsx @@ -418,165 +418,159 @@ class EditUserPageUI extends Component { /> ) : null} - { - event.preventDefault(); - }} - > - - - - - {isNewUser ? this.passwordFields() : null} - {reserved ? null : ( - - - - - - - - - )} - - + + + + {isNewUser ? this.passwordFields() : null} + {reserved ? null : ( + + { - return { 'data-test-subj': `roleOption-${role.name}`, label: role.name }; + > + + + - - - {isNewUser || showChangePasswordForm ? null : ( - - - - + > + - )} - {this.changePasswordForm()} - - + + )} + + { + return { 'data-test-subj': `roleOption-${role.name}`, label: role.name }; + })} + selectedOptions={selectedRoles} + /> + - {reserved && ( - changeUrl(USERS_PATH)}> + {isNewUser || showChangePasswordForm ? null : ( + + - - )} - {reserved ? null : ( - - - this.saveUser()} - > - {isNewUser ? ( - - ) : ( - - )} - - + + + )} + {this.changePasswordForm()} + + + + {reserved && ( + changeUrl(USERS_PATH)}> + + + )} + {reserved ? null : ( + + + this.saveUser()} + > + {isNewUser ? ( + + ) : ( + + )} + + + + changeUrl(USERS_PATH)} + > + + + + + {isNewUser || reserved ? null : ( changeUrl(USERS_PATH)} + onClick={() => { + this.setState({ showDeleteConfirmation: true }); + }} + data-test-subj="userFormDeleteButton" + color="danger" > - - {isNewUser || reserved ? null : ( - - { - this.setState({ showDeleteConfirmation: true }); - }} - data-test-subj="userFormDeleteButton" - color="danger" - > - - - - )} - - )} - - + )} + + )} +
From d7b9400ed6b97738cfd88be824c174d4049a7feb Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Tue, 15 Oct 2019 06:43:49 -0700 Subject: [PATCH 34/46] [Reporting/CsvPanelAction] Fix searchSource access for CSV Download (#47891) * [Reporting/CsvPanelAction] Fix searchSource access for CSV Download * use the public getter to access private savedSearch --- .../reporting/public/panel_actions/get_csv_panel_action.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/legacy/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx b/x-pack/legacy/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx index fd33bc79eeaf8..3a872b4c1e327 100644 --- a/x-pack/legacy/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx +++ b/x-pack/legacy/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx @@ -68,7 +68,7 @@ class GetCsvReportPanelAction implements IAction { return {}; } - return searchEmbeddable.searchScope.searchSource.getSearchRequestBody(); + return searchEmbeddable.getSavedSearch().searchSource.getSearchRequestBody(); } public isCompatible = async (context: ActionContext) => { From a635f1870fc9f954e03f0db0016f6cd0974f9dce Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Tue, 15 Oct 2019 15:13:17 +0100 Subject: [PATCH 35/46] [ML] Load index full time range for advanced jobs (#48166) * [ML] Load index full time range for advanced jobs * small refactor * adding a comment --- .../job_creator/advanced_job_creator.ts | 16 ++++++++++++++++ .../jobs/new_job_new/pages/new_job/page.tsx | 19 ++++++++++++++++++- .../jobs/new_job_new/pages/new_job/wizard.tsx | 10 ++++++++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_creator/advanced_job_creator.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_creator/advanced_job_creator.ts index 510e4e5186e8e..ff42f391cb61a 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_creator/advanced_job_creator.ts +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_creator/advanced_job_creator.ts @@ -14,6 +14,7 @@ import { createBasicDetector } from './util/default_configs'; import { JOB_TYPE } from './util/constants'; import { getRichDetectors } from './util/general'; import { isValidJson } from '../../../../../common/util/validation_utils'; +import { ml } from '../../../../services/ml_api_service'; export interface RichDetector { agg: Aggregation | null; @@ -138,6 +139,21 @@ export class AdvancedJobCreator extends JobCreator { return isValidJson(this._queryString); } + // load the start and end times for the selected index + // and apply them to the job creator + public async autoSetTimeRange() { + try { + const { start, end } = await ml.getTimeFieldRange({ + index: this._indexPatternTitle, + timeFieldName: this.timeFieldName, + query: this.query, + }); + this.setTimeRange(start.epoch, end.epoch); + } catch (error) { + throw Error(error); + } + } + public cloneFromExistingJob(job: Job, datafeed: Datafeed) { this._overrideConfigs(job, datafeed); const detectors = getRichDetectors(job, datafeed, true); diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/page.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/page.tsx index 0d25c2b99a66a..017fdf901ef93 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/page.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/page.tsx @@ -7,9 +7,11 @@ import React, { FC, useEffect, Fragment } from 'react'; import { EuiPage, EuiPageBody, EuiPageContentBody } from '@elastic/eui'; +import { toastNotifications } from 'ui/notify'; +import { i18n } from '@kbn/i18n'; import { Wizard } from './wizard'; import { WIZARD_STEPS } from '../components/step_types'; -import { jobCreatorFactory } from '../../common/job_creator'; +import { jobCreatorFactory, isAdvancedJobCreator } from '../../common/job_creator'; import { JOB_TYPE, DEFAULT_MODEL_MEMORY_LIMIT, @@ -96,6 +98,21 @@ export const Page: FC = ({ existingJobsAndGroups, jobType }) => { // ML job config holds no reference to the saved search ID. jobCreator.createdBy = null; } + + if (isAdvancedJobCreator(jobCreator)) { + // for advanced jobs, load the full time range start and end times + // so they can be used for job validation and bucket span estimation + try { + jobCreator.autoSetTimeRange(); + } catch (error) { + toastNotifications.addDanger({ + title: i18n.translate('xpack.ml.newJob.wizard.autoSetJobCreatorTimeRange.error', { + defaultMessage: `Error retrieving beginning and end times of index`, + }), + text: error, + }); + } + } } const chartInterval = new TimeBuckets(); diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/wizard.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/wizard.tsx index 5755a381aaadd..890db5e29387a 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/wizard.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/wizard.tsx @@ -20,6 +20,7 @@ import { JobValidator } from '../../common/job_validator'; import { newJobCapsService } from '../../../../services/new_job_capabilities_service'; import { WizardSteps } from './wizard_steps'; import { WizardHorizontalSteps } from './wizard_horizontal_steps'; +import { JOB_TYPE } from '../../common/job_creator/util/constants'; interface Props { jobCreator: JobCreatorType; @@ -62,8 +63,13 @@ export const Wizard: FC = ({ existingJobsAndGroups, }; - const [currentStep, setCurrentStep] = useState(WIZARD_STEPS.TIME_RANGE); - const [highestStep, setHighestStep] = useState(WIZARD_STEPS.TIME_RANGE); + const firstStep = + jobCreator.type === JOB_TYPE.ADVANCED + ? WIZARD_STEPS.ADVANCED_CONFIGURE_DATAFEED + : WIZARD_STEPS.TIME_RANGE; + + const [currentStep, setCurrentStep] = useState(firstStep); + const [highestStep, setHighestStep] = useState(firstStep); const [disableSteps, setDisableSteps] = useState(false); const [progress, setProgress] = useState(resultsLoader.progress); const [stringifiedConfigs, setStringifiedConfigs] = useState( From 3454c00102c1daae350bb4d2c3b0c3d179382400 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Tue, 15 Oct 2019 15:33:12 +0100 Subject: [PATCH 36/46] [ML] Removing include paths to old job wizards (#48061) * [ML] Removing includes to old job wizards * adding missed include path * testing deleting file * removing old versions of moved files --- .../pages/analytics_exploration/directive.tsx | 2 +- .../pages/analytics_management/directive.tsx | 2 +- .../file_datavisualizer_directive.js | 2 +- .../datavisualizer/index_based/directive.tsx | 2 +- .../create_watch_flyout.js | 4 +- .../create_watch_service.js | 10 +- .../create_watch_flyout}/create_watch_view.js | 6 +- .../create_watch_flyout}/email.html | 0 .../email_influencers.html} | 0 .../components/create_watch_flyout}/watch.js | 2 +- .../components/edit_job_flyout/edit_utils.js | 2 +- .../edit_job_flyout/tabs/datafeed.js | 2 +- .../jobs/jobs_list/components/validate_job.js | 4 +- .../ml/public/jobs/jobs_list/directive.js | 2 +- .../post_save_options_directive.js | 6 +- .../post_save_options/post_save_service.js | 14 +-- .../watcher/create_watch_directive.js | 73 ------------- .../simple/components/watcher/index.js | 2 - .../common/job_validator/job_validator.ts | 2 +- .../new_job_new/common/job_validator/util.ts | 5 +- .../model_memory_limit_input.tsx | 2 +- .../scroll_size/scroll_size_input.tsx | 4 +- .../new_job_new/pages/job_type/directive.tsx | 2 +- .../new_job_new/pages/new_job/directive.tsx | 2 +- .../jobs/new_job_new/pages/new_job/route.ts | 2 +- .../jobs/new_job_new/recognize/directive.tsx | 2 +- .../new_job_new/utils/new_job_defaults.ts | 45 ++++++++ .../jobs/new_job_new/utils/new_job_utils.ts | 101 ++++++++++++++++++ .../public/services/ml_api_service/index.d.ts | 12 +++ 29 files changed, 199 insertions(+), 115 deletions(-) rename x-pack/legacy/plugins/ml/public/jobs/{new_job/simple/components/watcher => jobs_list/components/create_watch_flyout}/create_watch_service.js (95%) rename x-pack/legacy/plugins/ml/public/jobs/{new_job/simple/components/watcher => jobs_list/components/create_watch_flyout}/create_watch_view.js (96%) rename x-pack/legacy/plugins/ml/public/jobs/{new_job/simple/components/watcher => jobs_list/components/create_watch_flyout}/email.html (100%) rename x-pack/legacy/plugins/ml/public/jobs/{new_job/simple/components/watcher/email-influencers.html => jobs_list/components/create_watch_flyout/email_influencers.html} (100%) rename x-pack/legacy/plugins/ml/public/jobs/{new_job/simple/components/watcher => jobs_list/components/create_watch_flyout}/watch.js (98%) delete mode 100644 x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_directive.js create mode 100644 x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_defaults.ts create mode 100644 x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_utils.ts diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx index cf5a4cf957548..700be992a1080 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx @@ -16,7 +16,7 @@ import { I18nContext } from 'ui/i18n'; import { IPrivate } from 'ui/private'; import { InjectorService } from '../../../../common/types/angular'; -import { SearchItemsProvider } from '../../../jobs/new_job/utils/new_job_utils'; +import { SearchItemsProvider } from '../../../jobs/new_job_new/utils/new_job_utils'; import { KibanaConfigTypeFix, KibanaContext } from '../../../contexts/kibana'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/directive.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/directive.tsx index 38b7b6df18991..5eb1981e9a5aa 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/directive.tsx @@ -16,7 +16,7 @@ import { I18nContext } from 'ui/i18n'; import { IPrivate } from 'ui/private'; import { InjectorService } from '../../../../common/types/angular'; -import { SearchItemsProvider } from '../../../jobs/new_job/utils/new_job_utils'; +import { SearchItemsProvider } from '../../../jobs/new_job_new/utils/new_job_utils'; import { KibanaConfigTypeFix, KibanaContext } from '../../../contexts/kibana'; diff --git a/x-pack/legacy/plugins/ml/public/datavisualizer/file_based/file_datavisualizer_directive.js b/x-pack/legacy/plugins/ml/public/datavisualizer/file_based/file_datavisualizer_directive.js index 413e41efebbc3..fa4e0c2654e97 100644 --- a/x-pack/legacy/plugins/ml/public/datavisualizer/file_based/file_datavisualizer_directive.js +++ b/x-pack/legacy/plugins/ml/public/datavisualizer/file_based/file_datavisualizer_directive.js @@ -16,7 +16,7 @@ import { getFileDataVisualizerBreadcrumbs } from './breadcrumbs'; import { checkBasicLicense } from '../../license/check_license'; import { checkFindFileStructurePrivilege } from '../../privilege/check_privilege'; import { getMlNodeCount } from '../../ml_nodes_check/check_ml_nodes'; -import { loadNewJobDefaults } from '../../jobs/new_job/utils/new_job_defaults'; +import { loadNewJobDefaults } from '../../jobs/new_job_new/utils/new_job_defaults'; import { loadIndexPatterns } from '../../util/index_utils'; import { FileDataVisualizerPage } from './file_datavisualizer'; diff --git a/x-pack/legacy/plugins/ml/public/datavisualizer/index_based/directive.tsx b/x-pack/legacy/plugins/ml/public/datavisualizer/index_based/directive.tsx index 720ae09369116..e621bdd1d8b92 100644 --- a/x-pack/legacy/plugins/ml/public/datavisualizer/index_based/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/datavisualizer/index_based/directive.tsx @@ -17,7 +17,7 @@ import { IPrivate } from 'ui/private'; import { InjectorService } from '../../../common/types/angular'; import { KibanaConfigTypeFix, KibanaContext } from '../../contexts/kibana/kibana_context'; -import { SearchItemsProvider } from '../../jobs/new_job/utils/new_job_utils'; +import { SearchItemsProvider } from '../../jobs/new_job_new/utils/new_job_utils'; import { Page } from './page'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_flyout.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_flyout.js index a5519314c7c68..9e26ea820f600 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_flyout.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_flyout.js @@ -24,8 +24,8 @@ import { import { toastNotifications } from 'ui/notify'; import { loadFullJob } from '../utils'; -import { mlCreateWatchService } from '../../../../jobs/new_job/simple/components/watcher/create_watch_service'; -import { CreateWatch } from '../../../../jobs/new_job/simple/components/watcher/create_watch_view'; +import { mlCreateWatchService } from './create_watch_service'; +import { CreateWatch } from './create_watch_view'; import { FormattedMessage, injectI18n } from '@kbn/i18n/react'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_service.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_service.js similarity index 95% rename from x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_service.js rename to x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_service.js index f114283eff102..d2a3ae009884f 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_service.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_service.js @@ -7,17 +7,17 @@ import chrome from 'ui/chrome'; -import _ from 'lodash'; -import { http } from '../../../../../services/http_service'; +import { template } from 'lodash'; +import { http } from '../../../../services/http_service'; import emailBody from './email.html'; -import emailInfluencersBody from './email-influencers.html'; +import emailInfluencersBody from './email_influencers.html'; import { watch } from './watch.js'; import { i18n } from '@kbn/i18n'; -const compiledEmailBody = _.template(emailBody); -const compiledEmailInfluencersBody = _.template(emailInfluencersBody); +const compiledEmailBody = template(emailBody); +const compiledEmailInfluencersBody = template(emailInfluencersBody); const emailSection = { send_email: { diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_view.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_view.js similarity index 96% rename from x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_view.js rename to x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_view.js index bcd6bd733e118..716ece4b0e2dc 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_view.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/create_watch_view.js @@ -27,9 +27,9 @@ import { has } from 'lodash'; import { FormattedMessage, injectI18n } from '@kbn/i18n/react'; -import { parseInterval } from '../../../../../../common/util/parse_interval'; -import { ml } from '../../../../../services/ml_api_service'; -import { SelectSeverity } from '../../../../../components/controls/select_severity/select_severity'; +import { parseInterval } from '../../../../../common/util/parse_interval'; +import { ml } from '../../../../services/ml_api_service'; +import { SelectSeverity } from '../../../../components/controls/select_severity/select_severity'; import { mlCreateWatchService } from './create_watch_service'; const STATUS = mlCreateWatchService.STATUS; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/email.html b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/email.html similarity index 100% rename from x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/email.html rename to x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/email.html diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/email-influencers.html b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/email_influencers.html similarity index 100% rename from x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/email-influencers.html rename to x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/email_influencers.html diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/watch.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/watch.js similarity index 98% rename from x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/watch.js rename to x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/watch.js index 447869ff8fdb4..c45894c36b702 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/watch.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/create_watch_flyout/watch.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ML_RESULTS_INDEX_PATTERN } from '../../../../../../common/constants/index_patterns'; +import { ML_RESULTS_INDEX_PATTERN } from '../../../../../common/constants/index_patterns'; export const watch = { trigger: { diff --git a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/edit_utils.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/edit_utils.js index b021b567777b8..8bd3d9228b857 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/edit_utils.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/edit_utils.js @@ -7,7 +7,7 @@ import { difference } from 'lodash'; import chrome from 'ui/chrome'; -import { newJobLimits } from 'plugins/ml/jobs/new_job/utils/new_job_defaults'; +import { newJobLimits } from 'plugins/ml/jobs/new_job_new/utils/new_job_defaults'; import { mlJobService } from 'plugins/ml/services/job_service'; import { processCreatedBy } from '../../../../../common/util/job_utils'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/tabs/datafeed.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/tabs/datafeed.js index c9e431dee846e..e7e99830372d8 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/tabs/datafeed.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/edit_job_flyout/tabs/datafeed.js @@ -19,7 +19,7 @@ import { } from '@elastic/eui'; import { calculateDatafeedFrequencyDefaultSeconds } from 'plugins/ml/../common/util/job_utils'; -import { newJobDefaults } from 'plugins/ml/jobs/new_job/utils/new_job_defaults'; +import { newJobDefaults } from 'plugins/ml/jobs/new_job_new/utils/new_job_defaults'; import { parseInterval } from 'plugins/ml/../common/util/parse_interval'; import { MLJobEditor } from '../../ml_job_editor'; import { FormattedMessage } from '@kbn/i18n/react'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/validate_job.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/validate_job.js index 98de6416cc577..05f9ec9d943f9 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/validate_job.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/components/validate_job.js @@ -5,8 +5,8 @@ */ -import { newJobLimits } from '../../new_job/utils/new_job_defaults'; -import { populateValidationMessages } from '../../new_job/simple/components/utils/validate_job'; +import { newJobLimits } from '../../new_job_new/utils/new_job_defaults'; +import { populateValidationMessages } from '../../new_job_new/common/job_validator/util'; import { validateModelMemoryLimit as validateModelMemoryLimitUtils, diff --git a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/directive.js b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/directive.js index 0b347a35ce73a..3267c78deecc1 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/jobs_list/directive.js +++ b/x-pack/legacy/plugins/ml/public/jobs/jobs_list/directive.js @@ -16,7 +16,7 @@ import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkGetJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { getMlNodeCount } from 'plugins/ml/ml_nodes_check/check_ml_nodes'; import { getJobManagementBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; -import { loadNewJobDefaults } from 'plugins/ml/jobs/new_job/utils/new_job_defaults'; +import { loadNewJobDefaults } from 'plugins/ml/jobs/new_job_new/utils/new_job_defaults'; import uiRoutes from 'ui/routes'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_options_directive.js b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_options_directive.js index f7aedd140c6af..73d66708bacca 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_options_directive.js +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_options_directive.js @@ -8,7 +8,7 @@ import { postSaveService } from './post_save_service'; import { i18n } from '@kbn/i18n'; -import { mlCreateWatchService } from 'plugins/ml/jobs/new_job/simple/components/watcher/create_watch_service'; +// import { mlCreateWatchService } from 'plugins/ml/jobs/new_job/simple/components/watcher/create_watch_service'; import { xpackFeatureAvailable } from 'plugins/ml/license/check_license'; import template from './post_save_options.html'; @@ -30,9 +30,9 @@ module.directive('mlPostSaveOptions', function () { $scope.status = postSaveService.status; $scope.STATUS = postSaveService.STATUS; - mlCreateWatchService.reset(); + // mlCreateWatchService.reset(); - mlCreateWatchService.config.includeInfluencers = $scope.includeInfluencers; + // mlCreateWatchService.config.includeInfluencers = $scope.includeInfluencers; $scope.runInRealtime = false; $scope.createWatch = false; $scope.embedded = true; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_service.js b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_service.js index a38a3cd689309..c910f9b3935e3 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_service.js +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/post_save_options/post_save_service.js @@ -9,7 +9,7 @@ import { mlJobService } from 'plugins/ml/services/job_service'; import { i18n } from '@kbn/i18n'; -import { mlCreateWatchService } from 'plugins/ml/jobs/new_job/simple/components/watcher/create_watch_service'; +// import { mlCreateWatchService } from 'plugins/ml/jobs/new_job/simple/components/watcher/create_watch_service'; import { mlMessageBarService } from 'plugins/ml/components/messagebar/messagebar_service'; const msgs = mlMessageBarService; @@ -26,7 +26,7 @@ class PostSaveService { realtimeJob: null, watch: null }; - mlCreateWatchService.status = this.status; + // mlCreateWatchService.status = this.status; this.externalCreateWatch; } @@ -63,11 +63,11 @@ class PostSaveService { this.startRealtimeJob(jobId, i18n) .then(() => { if (createWatch) { - mlCreateWatchService.createNewWatch(jobId) - .catch(() => {}) - .then(() => { - resolve(); - }); + // mlCreateWatchService.createNewWatch(jobId) + // .catch(() => {}) + // .then(() => { + // resolve(); + // }); } else { resolve(); } diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_directive.js b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_directive.js deleted file mode 100644 index f463f50cbccb0..0000000000000 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/create_watch_directive.js +++ /dev/null @@ -1,73 +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; - * you may not use this file except in compliance with the Elastic License. - */ - - - -import _ from 'lodash'; -import { parseInterval } from '../../../../../../common/util/parse_interval'; -import { mlCreateWatchService } from 'plugins/ml/jobs/new_job/simple/components/watcher/create_watch_service'; - -import template from './create_watch.html'; -import { ml } from 'plugins/ml/services/ml_api_service'; - -import { uiModules } from 'ui/modules'; -const module = uiModules.get('apps/ml'); - -module.directive('mlCreateWatch', function () { - return { - restrict: 'AE', - replace: false, - scope: { - jobId: '=', - bucketSpan: '=', - embedded: '=' - }, - template, - link: function ($scope) { - $scope.config = mlCreateWatchService.config; - $scope.status = mlCreateWatchService.status; - $scope.STATUS = mlCreateWatchService.STATUS; - - $scope.ui = { - emailEnabled: false, - embedded: $scope.embedded, - watchAlreadyExists: false - }; - - // make the interval 2 times the bucket span - if ($scope.bucketSpan) { - const interval = parseInterval($scope.bucketSpan); - let bs = interval.asMinutes() * 2; - if (bs < 1) { - bs = 1; - } - $scope.config.interval = `${bs}m`; - } - - // load elasticsearch settings to see if email has been configured - ml.getNotificationSettings() - .then((resp) => { - if (_.has(resp, 'defaults.xpack.notification.email')) { - $scope.ui.emailEnabled = true; - $scope.$applyAsync(); - } - }); - - // check to see whether a watch for this job has already been created. - // display a warning if it has. - mlCreateWatchService.loadWatch($scope.jobId) - .then(() => { - $scope.ui.watchAlreadyExists = true; - }) - .catch(() => { - $scope.ui.watchAlreadyExists = false; - }) - .then(() => { - $scope.$applyAsync(); - }); - } - }; -}); diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/index.js b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/index.js index 7fc4d77b0d229..21be947a3a54b 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/index.js +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job/simple/components/watcher/index.js @@ -6,6 +6,4 @@ -import './create_watch_directive.js'; -import './create_watch_service.js'; import '../severity_control'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts index edc41789ca9ad..358bbf67bee48 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/job_validator.ts @@ -6,7 +6,7 @@ import { ReactElement } from 'react'; import { basicJobValidation, basicDatafeedValidation } from '../../../../../common/util/job_utils'; -import { newJobLimits } from '../../../new_job/utils/new_job_defaults'; +import { newJobLimits } from '../../../new_job_new/utils/new_job_defaults'; import { JobCreatorType } from '../job_creator'; import { populateValidationMessages, checkForExistingJobAndGroupIds } from './util'; import { ExistingJobsAndGroups } from '../../../../services/job_service'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts index 0e913ad5da18d..224d9ebf55823 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/common/job_validator/util.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import { BasicValidations } from './job_validator'; import { Job, Datafeed } from '../job_creator/configs'; import { ALLOWED_DATA_UNITS, JOB_ID_MAX_LENGTH } from '../../../../../common/constants/validation'; -import { newJobLimits } from '../../../new_job/utils/new_job_defaults'; +import { newJobLimits } from '../../../new_job_new/utils/new_job_defaults'; import { ValidationResults, ValidationMessage } from '../../../../../common/util/job_utils'; import { ExistingJobsAndGroups } from '../../../../services/job_service'; @@ -103,12 +103,13 @@ export function populateValidationMessages( if (validationResults.contains('model_memory_limit_invalid')) { basicValidations.modelMemoryLimit.valid = false; + const maxModelMemoryLimit = (limits.max_model_memory_limit || '').toUpperCase(); const msg = i18n.translate( 'xpack.ml.newJob.wizard.validateJob.modelMemoryLimitRangeInvalidErrorMessage', { defaultMessage: 'Model memory limit cannot be higher than the maximum value of {maxModelMemoryLimit}', - values: { maxModelMemoryLimit: limits.max_model_memory_limit.toUpperCase() }, + values: { maxModelMemoryLimit }, } ); basicValidations.modelMemoryLimit.message = msg; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/common/model_memory_limit/model_memory_limit_input.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/common/model_memory_limit/model_memory_limit_input.tsx index b11395ea89759..3a3bd0c5a13a4 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/common/model_memory_limit/model_memory_limit_input.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/common/model_memory_limit/model_memory_limit_input.tsx @@ -6,7 +6,7 @@ import React, { FC, useState, useContext, useEffect } from 'react'; import { EuiFieldText } from '@elastic/eui'; -import { newJobDefaults } from '../../../../../new_job/utils/new_job_defaults'; +import { newJobDefaults } from '../../../../../new_job_new/utils/new_job_defaults'; import { JobCreatorContext } from '../../job_creator_context'; import { Description } from './description'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/datafeed_step/components/scroll_size/scroll_size_input.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/datafeed_step/components/scroll_size/scroll_size_input.tsx index ed01e2bc464a7..bc3b90688a78a 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/datafeed_step/components/scroll_size/scroll_size_input.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/components/datafeed_step/components/scroll_size/scroll_size_input.tsx @@ -6,7 +6,7 @@ import React, { FC, useState, useContext, useEffect } from 'react'; import { EuiFieldNumber } from '@elastic/eui'; -import { newJobDefaults } from '../../../../../../new_job/utils/new_job_defaults'; +import { newJobDefaults } from '../../../../../../new_job_new/utils/new_job_defaults'; import { JobCreatorContext } from '../../../job_creator_context'; import { Description } from './description'; @@ -20,7 +20,7 @@ export const ScrollSizeInput: FC = () => { ); const { datafeeds } = newJobDefaults(); - const { scroll_size: scrollSizeDefault } = datafeeds; + const scrollSizeDefault = datafeeds.scroll_size !== undefined ? `${datafeeds.scroll_size}` : ''; useEffect(() => { jobCreator.scrollSize = scrollSizeString === '' ? null : +scrollSizeString; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/job_type/directive.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/job_type/directive.tsx index 4ad689a943160..592dce3ce5b17 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/job_type/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/job_type/directive.tsx @@ -17,7 +17,7 @@ import { I18nContext } from 'ui/i18n'; import { IPrivate } from 'ui/private'; import { InjectorService } from '../../../../../common/types/angular'; -import { SearchItemsProvider } from '../../../new_job/utils/new_job_utils'; +import { SearchItemsProvider } from '../../../new_job_new/utils/new_job_utils'; import { Page } from './page'; import { KibanaContext, KibanaConfigTypeFix } from '../../../../contexts/kibana'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/directive.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/directive.tsx index 6513d9c69da1b..815e0228882ce 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/directive.tsx @@ -17,7 +17,7 @@ import { I18nContext } from 'ui/i18n'; import { IPrivate } from 'ui/private'; import { InjectorService } from '../../../../../common/types/angular'; -import { SearchItemsProvider } from '../../../new_job/utils/new_job_utils'; +import { SearchItemsProvider } from '../../utils/new_job_utils'; import { Page, PageProps } from './page'; import { JOB_TYPE } from '../../common/job_creator/util/constants'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/route.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/route.ts index 6301d38aee490..964dc1eee5140 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/route.ts +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/pages/new_job/route.ts @@ -22,7 +22,7 @@ import { Route } from '../../../../../common/types/kibana'; import { loadNewJobCapabilities } from '../../../../services/new_job_capabilities_service'; -import { loadNewJobDefaults } from '../../../new_job/utils/new_job_defaults'; +import { loadNewJobDefaults } from '../../utils/new_job_defaults'; import { mlJobService } from '../../../../services/job_service'; import { JOB_TYPE } from '../../common/job_creator/util/constants'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/recognize/directive.tsx b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/recognize/directive.tsx index 593db836b5ddb..cf80cad30b7ca 100644 --- a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/recognize/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/recognize/directive.tsx @@ -17,7 +17,7 @@ import { I18nContext } from 'ui/i18n'; import { IPrivate } from 'ui/private'; import { InjectorService } from '../../../../common/types/angular'; -import { SearchItemsProvider } from '../../new_job/utils/new_job_utils'; +import { SearchItemsProvider } from '../../new_job_new/utils/new_job_utils'; import { Page } from './page'; import { KibanaContext, KibanaConfigTypeFix } from '../../../contexts/kibana'; diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_defaults.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_defaults.ts new file mode 100644 index 0000000000000..c86a5a7861b64 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_defaults.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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ml } from '../../../services/ml_api_service'; + +export interface MlServerDefaults { + anomaly_detectors: { + categorization_examples_limit?: number; + model_memory_limit?: string; + model_snapshot_retention_days?: number; + }; + datafeeds: { scroll_size?: number }; +} + +export interface MlServerLimits { + max_model_memory_limit?: string; +} + +let defaults: MlServerDefaults = { + anomaly_detectors: {}, + datafeeds: {}, +}; +let limits: MlServerLimits = {}; + +export async function loadNewJobDefaults() { + try { + const resp = await ml.mlInfo(); + defaults = resp.defaults; + limits = resp.limits; + return { defaults, limits }; + } catch (error) { + return { defaults, limits }; + } +} + +export function newJobDefaults(): MlServerDefaults { + return defaults; +} + +export function newJobLimits(): MlServerLimits { + return limits; +} diff --git a/x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_utils.ts b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_utils.ts new file mode 100644 index 0000000000000..0a37cff050eb0 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/jobs/new_job_new/utils/new_job_utils.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedSearch } from 'src/legacy/core_plugins/kibana/public/discover/types'; +import { IndexPattern } from 'ui/index_patterns'; +import { buildEsQuery, getEsQueryConfig } from '@kbn/es-query'; +import { KibanaConfigTypeFix } from '../../../contexts/kibana'; +import { InjectorService } from '../../../../common/types/angular'; + +export interface SearchItems { + indexPattern: IndexPattern; + savedSearch: SavedSearch; + query: any; + combinedQuery: any; +} + +// Provider for creating the items used for searching and job creation. +// Uses the $route object to retrieve the indexPattern and savedSearch from the url +export function SearchItemsProvider($injector: InjectorService) { + const kibanaConfig = $injector.get('config'); + const $route = $injector.get('$route'); + + function createSearchItems() { + let indexPattern = $route.current.locals.indexPattern; + + // query is only used by the data visualizer as it needs + // a lucene query_string. + // Using a blank query will cause match_all:{} to be used + // when passed through luceneStringToDsl + let query = { + query: '', + language: 'lucene', + }; + + let combinedQuery: any = { + bool: { + must: [ + { + match_all: {}, + }, + ], + }, + }; + + const savedSearch = $route.current.locals.savedSearch; + if (indexPattern.id === undefined && savedSearch.id !== undefined) { + const searchSource = savedSearch.searchSource; + indexPattern = searchSource.getField('index'); + + query = searchSource.getField('query'); + const fs = searchSource.getField('filter'); + + const filters = fs.length ? fs : []; + + const esQueryConfigs = getEsQueryConfig(kibanaConfig); + combinedQuery = buildEsQuery(indexPattern, [query], filters, esQueryConfigs); + } + + return { + indexPattern, + savedSearch, + query, + combinedQuery, + }; + } + + return createSearchItems; +} + +// Only model plot cardinality relevant +// format:[{id:"cardinality_model_plot_high",modelPlotCardinality:11405}, {id:"cardinality_partition_field",fieldName:"clientip"}] +interface CheckCardinalitySuccessResponse { + success: boolean; + highCardinality?: any; +} +export function checkCardinalitySuccess(data: any) { + const response: CheckCardinalitySuccessResponse = { + success: true, + }; + // There were no fields to run cardinality on. + if (Array.isArray(data) && data.length === 0) { + return response; + } + + for (let i = 0; i < data.length; i++) { + if (data[i].id === 'success_cardinality') { + break; + } + + if (data[i].id === 'cardinality_model_plot_high') { + response.success = false; + response.highCardinality = data[i].modelPlotCardinality; + break; + } + } + + return response; +} diff --git a/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts b/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts index b63919041e139..7962fedd20fee 100644 --- a/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts +++ b/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts @@ -9,6 +9,7 @@ import { AggFieldNamePair } from '../../../common/types/fields'; import { ExistingJobsAndGroups } from '../job_service'; import { PrivilegesResponse } from '../../../common/types/privileges'; import { MlSummaryJobs } from '../../../common/types/jobs'; +import { MlServerDefaults, MlServerLimits } from '../../jobs/new_job_new/utils/new_job_defaults'; // TODO This is not a complete representation of all methods of `ml.*`. // It just satisfies needs for other parts of the code area which use @@ -24,6 +25,16 @@ export interface GetTimeFieldRangeResponse { end: { epoch: number; string: string }; } +export interface MlInfoResponse { + defaults: MlServerDefaults; + limits: MlServerLimits; + native_code: { + build_hash: string; + version: string; + }; + upgrade_mode: boolean; +} + declare interface Ml { annotations: { deleteAnnotation(id: string | undefined): Promise; @@ -119,6 +130,7 @@ declare interface Ml { ): Promise<{ name: string; ms: number; error?: boolean; message?: { msg: string } | string }>; mlNodeCount(): Promise<{ count: number }>; + mlInfo(): Promise; } declare const ml: Ml; From 71b1bbd4cb2d7943aa37543b50339196f8c3ea7f Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Tue, 15 Oct 2019 09:59:38 -0500 Subject: [PATCH 37/46] Upgrade EUI to 14.5.0 (#48119) * eui 14.5.0 * snapshot updates * update ChromeBreadcrumb interface * change bad id selector to data-test-subj selector --- ...ublic.chromebreadcrumb._data-test-subj_.md | 11 - ...ana-plugin-public.chromebreadcrumb.href.md | 11 - .../kibana-plugin-public.chromebreadcrumb.md | 14 +- ...-plugin-public.chromebreadcrumb.onclick.md | 11 - ...ana-plugin-public.chromebreadcrumb.text.md | 11 - .../core/public/kibana-plugin-public.md | 2 +- package.json | 2 +- src/core/public/chrome/chrome_service.tsx | 11 +- .../header_breadcrumbs.test.tsx.snap | 3 - .../chrome/ui/header/header_breadcrumbs.tsx | 5 +- .../fatal_errors_screen.test.tsx.snap | 1 + src/core/public/public.api.md | 13 +- .../__snapshots__/controls_tab.test.js.snap | 2 + .../list_control_editor.test.js.snap | 12 + .../__snapshots__/options_tab.test.js.snap | 3 + .../range_control_editor.test.js.snap | 2 + .../vis/__snapshots__/form_row.test.js.snap | 3 + .../__snapshots__/y_extents.test.tsx.snap | 1 + .../dashboard_listing.test.js.snap | 30 +-- .../__snapshots__/save_modal.test.js.snap | 2 + .../__snapshots__/add_data.test.js.snap | 18 -- .../__snapshots__/home.test.js.snap | 10 + .../recently_accessed.test.js.snap | 4 - .../__snapshots__/tutorial.test.js.snap | 3 + .../__snapshots__/empty_state.test.js.snap | 12 +- .../__snapshots__/header.test.js.snap | 2 + .../__snapshots__/time_field.test.js.snap | 15 +- .../__snapshots__/call_outs.test.js.snap | 6 +- .../__snapshots__/objects_table.test.js.snap | 1 + .../__snapshots__/flyout.test.js.snap | 20 +- .../__jest__/__snapshots__/table.test.js.snap | 4 + .../field/__snapshots__/field.test.js.snap | 111 +++++---- .../form/__snapshots__/form.test.js.snap | 18 +- .../public/components/data_format_picker.js | 1 + .../splits/__snapshots__/terms.test.js.snap | 7 + .../bytes/__snapshots__/bytes.test.js.snap | 7 +- .../date/__snapshots__/date.test.js.snap | 7 +- .../__snapshots__/date_nanos.test.js.snap | 7 +- .../__snapshots__/duration.test.js.snap | 5 + .../number/__snapshots__/number.test.js.snap | 7 +- .../__snapshots__/percent.test.js.snap | 7 +- .../__snapshots__/static_lookup.test.js.snap | 2 + .../string/__snapshots__/string.test.js.snap | 1 + .../__snapshots__/truncate.test.js.snap | 1 + .../url/__snapshots__/url.test.js.snap | 62 +++-- .../__snapshots__/samples.test.js.snap | 1 + .../warning_call_out.test.js.snap | 12 +- .../url_panel_content.test.js.snap | 5 + .../__snapshots__/agg_params.test.tsx.snap | 1 + .../controls/__snapshots__/size.test.tsx.snap | 1 + .../__snapshots__/top_aggregate.test.tsx.snap | 1 + .../saved_object_save_modal.test.tsx.snap | 2 + .../page_objects/visual_builder_page.ts | 2 +- .../plugins/kbn_tp_run_pipeline/package.json | 2 +- .../kbn_tp_custom_visualizations/package.json | 2 +- .../kbn_tp_embeddable_explorer/package.json | 2 +- .../kbn_tp_sample_panel_action/package.json | 2 +- .../kbn_tp_visualize_embedding/package.json | 2 +- .../__test__/__snapshots__/List.test.tsx.snap | 128 +++++++---- .../extended_template.examples.storyshot | 2 - .../custom_element_modal.examples.storyshot | 12 - .../expression_input.examples.storyshot | 1 - .../extended_template.examples.storyshot | 21 -- .../extended_template.examples.storyshot | 4 - .../autoplay_settings.examples.storyshot | 6 - .../toolbar_settings.examples.storyshot | 3 - .../__snapshots__/settings.test.tsx.snap | 6 +- .../__snapshots__/breadcrumb.test.tsx.snap | 3 - .../public/components/main/breadcrumb.tsx | 11 +- .../extend_index_management.test.js.snap | 12 +- .../__snapshots__/policy_table.test.js.snap | 4 +- .../components/navigation/routed_tabs.tsx | 2 +- .../setup/steps/initial_configuration.tsx | 2 +- x-pack/legacy/plugins/infra/types/eui.d.ts | 25 -- .../change_indexpattern.tsx | 4 +- .../__snapshots__/xy_expression.test.tsx.snap | 217 ++++++++++++++++-- .../flex_item_setting.test.js.snap | 2 + .../pipeline_editor.test.js.snap | 22 ++ .../geometry_filter_form.test.js.snap | 8 + .../__snapshots__/tooltip_header.test.js.snap | 1 + .../__snapshots__/view.test.js.snap | 1 - .../update_source_editor.test.js.snap | 14 ++ .../heatmap_style_editor.test.js.snap | 1 + .../vector_style_symbol_editor.test.js.snap | 2 + .../rule_editor_flyout.test.js.snap | 18 +- .../add_to_filter_list_link.test.js.snap | 2 - .../delete_rule_modal.test.js.snap | 3 - .../edit_condition_link.test.js.snap | 6 - .../rule_action_panel.test.js.snap | 18 +- .../validate_job_view.test.js.snap | 12 +- .../__snapshots__/overrides.test.js.snap | 10 +- .../__snapshots__/editor.test.js.snap | 28 +++ .../__snapshots__/list.test.tsx.snap | 15 ++ .../__snapshots__/calendar_form.test.js.snap | 5 + .../list/__snapshots__/header.test.js.snap | 6 +- .../add_item_popover.test.js.snap | 3 + .../edit_description_popover.test.js.snap | 3 + .../edit/__snapshots__/header.test.js.snap | 2 + .../list/__snapshots__/header.test.js.snap | 6 +- .../__snapshots__/overview.test.js.snap | 2 + .../ccr/__snapshots__/ccr.test.js.snap | 1 + .../__snapshots__/ccr_shard.test.js.snap | 1 + .../logs/__snapshots__/logs.test.js.snap | 24 +- .../logs/__snapshots__/reason.test.js.snap | 36 +-- .../pipeline_viewer.test.js.snap | 2 + .../flyout/__snapshots__/flyout.test.js.snap | 161 +++++-------- .../__snapshots__/no_data.test.js.snap | 8 +- .../__snapshots__/page_loading.test.js.snap | 4 +- .../remote_cluster_form.test.js.snap | 6 - .../basic_login_form.test.tsx.snap | 2 + .../collapsible_panel.test.tsx.snap | 2 - .../elasticsearch_privileges.test.tsx.snap | 16 +- .../index_privilege_form.test.tsx.snap | 3 + .../simple_privilege_section.test.tsx.snap | 1 + .../privilege_space_form.test.tsx.snap | 2 + ...ndex_patterns_missing_prompt.test.tsx.snap | 24 +- .../__snapshots__/anomaly_score.test.tsx.snap | 12 +- .../create_descriptions_list.test.tsx.snap | 4 - .../popover_description.test.tsx.snap | 6 +- .../upgrade_contents.test.tsx.snap | 6 +- .../confirm_delete_modal.test.tsx.snap | 1 + .../secure_space_message.test.tsx.snap | 6 +- .../customize_space_avatar.test.tsx.snap | 3 + .../space_identifier.test.tsx.snap | 7 +- .../enabled_features.test.tsx.snap | 6 +- .../__snapshots__/section_panel.test.tsx.snap | 2 - .../space_selector.test.tsx.snap | 1 + .../__snapshots__/telemetry_form.test.js.snap | 12 +- .../__snapshots__/popover_form.test.tsx.snap | 2 + .../__snapshots__/popover_form.test.tsx.snap | 3 + .../__snapshots__/checkup_tab.test.tsx.snap | 24 +- .../integration_link.test.tsx.snap | 2 - .../__snapshots__/ping_list.test.tsx.snap | 2 + .../__snapshots__/data_missing.test.tsx.snap | 6 +- .../__snapshots__/empty_state.test.tsx.snap | 28 +-- .../__snapshots__/location_link.test.tsx.snap | 2 - .../kibana_global_help.test.tsx.snap | 6 +- x-pack/package.json | 2 +- yarn.lock | 8 +- 139 files changed, 845 insertions(+), 775 deletions(-) delete mode 100644 docs/development/core/public/kibana-plugin-public.chromebreadcrumb._data-test-subj_.md delete mode 100644 docs/development/core/public/kibana-plugin-public.chromebreadcrumb.href.md delete mode 100644 docs/development/core/public/kibana-plugin-public.chromebreadcrumb.onclick.md delete mode 100644 docs/development/core/public/kibana-plugin-public.chromebreadcrumb.text.md diff --git a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb._data-test-subj_.md b/docs/development/core/public/kibana-plugin-public.chromebreadcrumb._data-test-subj_.md deleted file mode 100644 index 8cdfafb7c8d91..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb._data-test-subj_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) > ["data-test-subj"](./kibana-plugin-public.chromebreadcrumb._data-test-subj_.md) - -## ChromeBreadcrumb."data-test-subj" property - -Signature: - -```typescript -'data-test-subj'?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.href.md b/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.href.md deleted file mode 100644 index b40f19c99f668..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.href.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) > [href](./kibana-plugin-public.chromebreadcrumb.href.md) - -## ChromeBreadcrumb.href property - -Signature: - -```typescript -href?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.md b/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.md index 883300f96753a..9350b56ce5f60 100644 --- a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.md +++ b/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.md @@ -2,21 +2,11 @@ [Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) -## ChromeBreadcrumb interface +## ChromeBreadcrumb type Signature: ```typescript -export interface ChromeBreadcrumb +export declare type ChromeBreadcrumb = EuiBreadcrumb; ``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| ["data-test-subj"](./kibana-plugin-public.chromebreadcrumb._data-test-subj_.md) | string | | -| [href](./kibana-plugin-public.chromebreadcrumb.href.md) | string | | -| [onClick](./kibana-plugin-public.chromebreadcrumb.onclick.md) | MouseEventHandler<HTMLButtonElement> | | -| [text](./kibana-plugin-public.chromebreadcrumb.text.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.onclick.md b/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.onclick.md deleted file mode 100644 index 1e0ae36e893a1..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.onclick.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) > [onClick](./kibana-plugin-public.chromebreadcrumb.onclick.md) - -## ChromeBreadcrumb.onClick property - -Signature: - -```typescript -onClick?: MouseEventHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.text.md b/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.text.md deleted file mode 100644 index fa7e3804576e3..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.chromebreadcrumb.text.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) > [text](./kibana-plugin-public.chromebreadcrumb.text.md) - -## ChromeBreadcrumb.text property - -Signature: - -```typescript -text: string; -``` diff --git a/docs/development/core/public/kibana-plugin-public.md b/docs/development/core/public/kibana-plugin-public.md index 1e1a4f38a7c6f..af181ad131174 100644 --- a/docs/development/core/public/kibana-plugin-public.md +++ b/docs/development/core/public/kibana-plugin-public.md @@ -34,7 +34,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [Capabilities](./kibana-plugin-public.capabilities.md) | The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. | | [ChromeBadge](./kibana-plugin-public.chromebadge.md) | | | [ChromeBrand](./kibana-plugin-public.chromebrand.md) | | -| [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) | | | [ChromeNavControl](./kibana-plugin-public.chromenavcontrol.md) | | | [ChromeNavControls](./kibana-plugin-public.chromenavcontrols.md) | [APIs](./kibana-plugin-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. | | [ChromeNavLink](./kibana-plugin-public.chromenavlink.md) | | @@ -92,6 +91,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | Type Alias | Description | | --- | --- | | [AppUnmount](./kibana-plugin-public.appunmount.md) | A function called when an application should be unmounted from the page. This function should be synchronous. | +| [ChromeBreadcrumb](./kibana-plugin-public.chromebreadcrumb.md) | | | [ChromeHelpExtension](./kibana-plugin-public.chromehelpextension.md) | | | [ChromeNavLinkUpdateableFields](./kibana-plugin-public.chromenavlinkupdateablefields.md) | | | [HandlerContextType](./kibana-plugin-public.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md) to represent the type of the context. | diff --git a/package.json b/package.json index 29410042a865d..b1ba573ffaf5a 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "@elastic/charts": "^13.5.1", "@elastic/datemath": "5.0.2", "@elastic/ems-client": "^1.0.2", - "@elastic/eui": "14.4.0", + "@elastic/eui": "14.5.0", "@elastic/filesaver": "1.1.2", "@elastic/good": "8.1.1-kibana2", "@elastic/numeral": "2.3.3", diff --git a/src/core/public/chrome/chrome_service.tsx b/src/core/public/chrome/chrome_service.tsx index 02195c794d280..71279ad6fed03 100644 --- a/src/core/public/chrome/chrome_service.tsx +++ b/src/core/public/chrome/chrome_service.tsx @@ -17,13 +17,13 @@ * under the License. */ -import React, { MouseEventHandler } from 'react'; +import React from 'react'; import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import * as Url from 'url'; import { i18n } from '@kbn/i18n'; -import { IconType } from '@elastic/eui'; +import { IconType, Breadcrumb as EuiBreadcrumb } from '@elastic/eui'; import { InjectedMetadataStart } from '../injected_metadata'; import { NotificationsStart } from '../notifications'; @@ -59,12 +59,7 @@ export interface ChromeBrand { } /** @public */ -export interface ChromeBreadcrumb { - text: string; - href?: string; - 'data-test-subj'?: string; - onClick?: MouseEventHandler; -} +export type ChromeBreadcrumb = EuiBreadcrumb; /** @public */ export type ChromeHelpExtension = (element: HTMLDivElement) => () => void; diff --git a/src/core/public/chrome/ui/header/__snapshots__/header_breadcrumbs.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/header_breadcrumbs.test.tsx.snap index 2df1c616b04b3..d089019915686 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/header_breadcrumbs.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/header_breadcrumbs.test.tsx.snap @@ -5,7 +5,6 @@ exports[`HeaderBreadcrumbs renders updates to the breadcrumbs$ observable 1`] = aria-current="page" className="euiBreadcrumb euiBreadcrumb--last" data-test-subj="breadcrumb first last" - title="First" > First @@ -18,7 +17,6 @@ Array [ color="subdued" data-test-subj="breadcrumb first" title="First" - type="button" >
Hide the toolbar when the mouse is not within the Canvas?
"`; +exports[` can navigate Toolbar Settings, closes when activated 2`] = `"
Settings
Hide the toolbar when the mouse is not within the Canvas?
"`; -exports[` can navigate Toolbar Settings, closes when activated 3`] = `"
Settings
Hide the toolbar when the mouse is not within the Canvas?
"`; +exports[` can navigate Toolbar Settings, closes when activated 3`] = `"
Settings
Hide the toolbar when the mouse is not within the Canvas?
"`; diff --git a/x-pack/legacy/plugins/code/public/components/main/__snapshots__/breadcrumb.test.tsx.snap b/x-pack/legacy/plugins/code/public/components/main/__snapshots__/breadcrumb.test.tsx.snap index 0530d5ec0cbd6..05e7cc4639dec 100644 --- a/x-pack/legacy/plugins/code/public/components/main/__snapshots__/breadcrumb.test.tsx.snap +++ b/x-pack/legacy/plugins/code/public/components/main/__snapshots__/breadcrumb.test.tsx.snap @@ -11,7 +11,6 @@ exports[`render correctly 1`] = ` href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src" onClick={[Function]} rel="noreferrer" - title="src" > src @@ -56,7 +55,6 @@ exports[`render correctly 1`] = ` href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src/public/css/lib/bootstrap/mixins" onClick={[Function]} rel="noreferrer" - title="mixins" > mixins @@ -67,7 +65,6 @@ exports[`render correctly 1`] = ` aria-current="page" className="euiBreadcrumb euiBreadcrumb--last" data-test-subj="codeFileBreadcrumb-_alerts.scss" - title="_alerts.scss" > _alerts.scss diff --git a/x-pack/legacy/plugins/code/public/components/main/breadcrumb.tsx b/x-pack/legacy/plugins/code/public/components/main/breadcrumb.tsx index 1f6aa48e569ea..52c5bfa59d536 100644 --- a/x-pack/legacy/plugins/code/public/components/main/breadcrumb.tsx +++ b/x-pack/legacy/plugins/code/public/components/main/breadcrumb.tsx @@ -4,8 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -// @ts-ignore -import { EuiBreadcrumbs } from '@elastic/eui'; +import { EuiBreadcrumbs, Breadcrumb as EuiBreadcrumb } from '@elastic/eui'; import React from 'react'; import { MainRouteParams } from '../../common/types'; import { encodeRevisionString } from '../../../common/uri_util'; @@ -20,13 +19,7 @@ export class Breadcrumb extends React.PureComponent { const { resource, org, repo, revision, path } = this.props.routeParams; const repoUri = `${resource}/${org}/${repo}`; - const breadcrumbs: Array<{ - text: string; - href: string; - className?: string; - ['data-test-subj']: string; - onClick?: Function; - }> = []; + const breadcrumbs: EuiBreadcrumb[] = []; const pathSegments = path ? path.split('/') : []; pathSegments.forEach((p, index, array) => { diff --git a/x-pack/legacy/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.js.snap b/x-pack/legacy/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.js.snap index b400e82bb3f80..a7cc8843140c8 100644 --- a/x-pack/legacy/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.js.snap +++ b/x-pack/legacy/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.js.snap @@ -351,9 +351,7 @@ exports[`ilm summary extension should return extension when index has lifecycle className="euiDescriptionList__description" > - + } closePopover={[Function]} display="inlineBlock" @@ -522,9 +518,7 @@ exports[`ilm summary extension should return extension when index has lifecycle className="euiPopover__anchor" > - + `; @@ -94,7 +94,7 @@ exports[`NoData should show text next to the spinner while checking a setting 1`
-
@@ -176,6 +176,6 @@ exports[`NoData should show text next to the spinner while checking a setting 1`
-
+ `; diff --git a/x-pack/legacy/plugins/monitoring/public/components/page_loading/__tests__/__snapshots__/page_loading.test.js.snap b/x-pack/legacy/plugins/monitoring/public/components/page_loading/__tests__/__snapshots__/page_loading.test.js.snap index 7579cad3b8beb..7b468d08e29a6 100644 --- a/x-pack/legacy/plugins/monitoring/public/components/page_loading/__tests__/__snapshots__/page_loading.test.js.snap +++ b/x-pack/legacy/plugins/monitoring/public/components/page_loading/__tests__/__snapshots__/page_loading.test.js.snap @@ -5,7 +5,7 @@ exports[`PageLoading should show a simple page loading component 1`] = ` class="euiPage" style="height:calc(100vh - 50px)" > -
- + `; diff --git a/x-pack/legacy/plugins/remote_clusters/public/app/sections/components/remote_cluster_form/__snapshots__/remote_cluster_form.test.js.snap b/x-pack/legacy/plugins/remote_clusters/public/app/sections/components/remote_cluster_form/__snapshots__/remote_cluster_form.test.js.snap index cdc183cec39b9..517a99583a54d 100644 --- a/x-pack/legacy/plugins/remote_clusters/public/app/sections/components/remote_cluster_form/__snapshots__/remote_cluster_form.test.js.snap +++ b/x-pack/legacy/plugins/remote_clusters/public/app/sections/components/remote_cluster_form/__snapshots__/remote_cluster_form.test.js.snap @@ -40,7 +40,6 @@ Array [
- - +

} fullWidth={false} @@ -45,6 +43,7 @@ exports[`it renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={true} + hasChildLabel={true} hasEmptyLabelSpace={true} labelType="label" > @@ -80,19 +79,17 @@ exports[`it renders without crashing 1`] = ` id="xpack.security.management.editRole.elasticSearchPrivileges.howToBeSubmittedOnBehalfOfOtherUsersDescription" values={Object {}} /> - - +

} fullWidth={false} @@ -112,6 +109,7 @@ exports[`it renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={true} labelType="label" > @@ -156,10 +154,8 @@ exports[`it renders without crashing 1`] = ` /> diff --git a/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/simple_privilege_section/__snapshots__/simple_privilege_section.test.tsx.snap b/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/simple_privilege_section/__snapshots__/simple_privilege_section.test.tsx.snap index c5572aa626291..37db2e118861e 100644 --- a/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/simple_privilege_section/__snapshots__/simple_privilege_section.test.tsx.snap +++ b/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/simple_privilege_section/__snapshots__/simple_privilege_section.test.tsx.snap @@ -29,6 +29,7 @@ exports[` renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={true} labelType="label" > diff --git a/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/space_aware_privilege_section/__snapshots__/privilege_space_form.test.tsx.snap b/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/space_aware_privilege_section/__snapshots__/privilege_space_form.test.tsx.snap index a2768361a270c..c20a391cdb20c 100644 --- a/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/space_aware_privilege_section/__snapshots__/privilege_space_form.test.tsx.snap +++ b/x-pack/legacy/plugins/security/public/views/management/edit_role/components/privileges/kibana/space_aware_privilege_section/__snapshots__/privilege_space_form.test.tsx.snap @@ -31,6 +31,7 @@ exports[` renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={true} + hasChildLabel={true} hasEmptyLabelSpace={false} label="Spaces" labelType="label" @@ -163,6 +164,7 @@ exports[` renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={true} + hasChildLabel={true} hasEmptyLabelSpace={false} label="Privilege" labelType="label" diff --git a/x-pack/legacy/plugins/siem/public/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap index f482a864bed6d..1aa3b087ac0d0 100644 --- a/x-pack/legacy/plugins/siem/public/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/embeddables/__snapshots__/index_patterns_missing_prompt.test.tsx.snap @@ -18,41 +18,33 @@ exports[`IndexPatternsMissingPrompt renders correctly against snapshot 1`] = ` An ECS compliant Kibana index pattern must be configured to view event data on the map. When using beats, you can run the following setup commands to create the required Kibana index patterns, otherwise you can configure them manually within Kibana settings.

- auditbeat-* - + , - filebeat-* - + , - packetbeat-* - + , - winlogbeat-* - +

} diff --git a/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap index 0698653696059..8760dce2b76df 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/anomaly_score.test.tsx.snap @@ -125,14 +125,12 @@ exports[`anomaly_scores renders correctly against snapshot 1`] = ` - View in Machine Learning - + , "title": @@ -158,15 +156,13 @@ exports[`anomaly_scores renders correctly against snapshot 1`] = ` - Narrow to this date range - + , "title": "Detected", diff --git a/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap index 30afaa7bc71f7..0a136eb31fd6d 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml/score/__snapshots__/create_descriptions_list.test.tsx.snap @@ -44,10 +44,8 @@ exports[`create_description_list renders correctly against snapshot 1`] = ` grow={false} > View in Machine Learning @@ -78,11 +76,9 @@ exports[`create_description_list renders correctly against snapshot 1`] = ` grow={false} > Narrow to this date range diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap index 5eeaee17ee72a..09e95c5ff59ea 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/popover_description.test.tsx.snap @@ -9,18 +9,16 @@ exports[`JobsTableFilters renders correctly against snapshot 1`] = ` id="xpack.siem.components.mlPopup.anomalyDetectionDescription" values={ Object { - "machineLearning": - , + , } } /> diff --git a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap index cf924f3a06edc..113612200d367 100644 --- a/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap +++ b/x-pack/legacy/plugins/siem/public/components/ml_popover/__snapshots__/upgrade_contents.test.tsx.snap @@ -15,18 +15,16 @@ exports[`JobsTableFilters renders correctly against snapshot 1`] = ` id="xpack.siem.components.mlPopup.upgradeDescription" values={ Object { - "cloudLink": - , + , } } /> diff --git a/x-pack/legacy/plugins/spaces/public/views/management/components/__snapshots__/confirm_delete_modal.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/management/components/__snapshots__/confirm_delete_modal.test.tsx.snap index 3aa6cd3497783..82f94f2346ae7 100644 --- a/x-pack/legacy/plugins/spaces/public/views/management/components/__snapshots__/confirm_delete_modal.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/management/components/__snapshots__/confirm_delete_modal.test.tsx.snap @@ -49,6 +49,7 @@ exports[`ConfirmDeleteModal renders as expected 1`] = ` display="row" error="Space names do not match." fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} isInvalid={false} label="Confirm space name to delete" diff --git a/x-pack/legacy/plugins/spaces/public/views/management/components/secure_space_message/__snapshots__/secure_space_message.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/management/components/secure_space_message/__snapshots__/secure_space_message.test.tsx.snap index 9316ef46b8b61..bce57527cd55a 100644 --- a/x-pack/legacy/plugins/spaces/public/views/management/components/secure_space_message/__snapshots__/secure_space_message.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/management/components/secure_space_message/__snapshots__/secure_space_message.test.tsx.snap @@ -14,18 +14,16 @@ exports[`SecureSpaceMessage renders if security is enabled 1`] = ` id="xpack.spaces.management.secureSpaceMessage.howToAssignRoleToSpaceDescription" values={ Object { - "rolesLink": - , + , } } /> diff --git a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap index 97e4bae437cfc..24e6bd7516819 100644 --- a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap @@ -8,6 +8,7 @@ exports[`renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} label="Initials (2 max)" labelType="label" @@ -30,6 +31,7 @@ exports[`renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} isInvalid={false} label="Color" @@ -48,6 +50,7 @@ exports[`renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} label="Custom image" labelType="label" diff --git a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/space_identifier.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/space_identifier.test.tsx.snap index bcff2efcebeaf..15fd1ae81a347 100644 --- a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/space_identifier.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/customize_space/__snapshots__/space_identifier.test.tsx.snap @@ -6,6 +6,7 @@ exports[`renders without crashing 1`] = ` describedByIds={Array []} display="row" fullWidth={true} + hasChildLabel={true} hasEmptyLabelSpace={false} helpText={

- - +

} labelType="label" diff --git a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap index 6118c68aa9f99..5e91c1bd0e36c 100644 --- a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap @@ -169,17 +169,15 @@ exports[`EnabledFeatures renders as expected 1`] = ` id="xpack.spaces.management.enabledSpaceFeatures.goToRolesLink" values={ Object { - "rolesLink": - , + , } } /> diff --git a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/section_panel/__snapshots__/section_panel.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/section_panel/__snapshots__/section_panel.test.tsx.snap index 6c13259cdde88..43149d7b3911f 100644 --- a/x-pack/legacy/plugins/spaces/public/views/management/edit_space/section_panel/__snapshots__/section_panel.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/management/edit_space/section_panel/__snapshots__/section_panel.test.tsx.snap @@ -29,10 +29,8 @@ exports[`it renders without blowing up 1`] = ` > hide diff --git a/x-pack/legacy/plugins/spaces/public/views/space_selector/__snapshots__/space_selector.test.tsx.snap b/x-pack/legacy/plugins/spaces/public/views/space_selector/__snapshots__/space_selector.test.tsx.snap index 84ed864c36231..722d8908d480b 100644 --- a/x-pack/legacy/plugins/spaces/public/views/space_selector/__snapshots__/space_selector.test.tsx.snap +++ b/x-pack/legacy/plugins/spaces/public/views/space_selector/__snapshots__/space_selector.test.tsx.snap @@ -7,6 +7,7 @@ exports[`it renders without crashing 1`] = ` restrictWidth={false} >

- - +

- - +

, "type": "boolean", diff --git a/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/popover_form.test.tsx.snap b/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/popover_form.test.tsx.snap index 79fc12a17c929..86d33dfccb0b9 100644 --- a/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/popover_form.test.tsx.snap +++ b/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/popover_form.test.tsx.snap @@ -13,6 +13,7 @@ exports[`Transform: Aggregation Minimal initialization 1`] = ` display="row" error={false} fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} helpText="" isInvalid={false} @@ -32,6 +33,7 @@ exports[`Transform: Aggregation Minimal initialization 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={true} labelType="label" > diff --git a/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/group_by_list/__snapshots__/popover_form.test.tsx.snap b/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/group_by_list/__snapshots__/popover_form.test.tsx.snap index 927317524803f..01114e3b9cfa3 100644 --- a/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/group_by_list/__snapshots__/popover_form.test.tsx.snap +++ b/x-pack/legacy/plugins/transform/public/app/sections/create_transform/components/group_by_list/__snapshots__/popover_form.test.tsx.snap @@ -13,6 +13,7 @@ exports[`Transform: Group By Minimal initialization 1`] = ` display="row" error={false} fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} helpText="" isInvalid={false} @@ -33,6 +34,7 @@ exports[`Transform: Group By Minimal initialization 1`] = ` display="row" error={false} fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={false} isInvalid={false} label="Interval" @@ -83,6 +85,7 @@ exports[`Transform: Group By Minimal initialization 1`] = ` describedByIds={Array []} display="row" fullWidth={false} + hasChildLabel={true} hasEmptyLabelSpace={true} labelType="label" > diff --git a/x-pack/legacy/plugins/upgrade_assistant/public/components/tabs/checkup/__snapshots__/checkup_tab.test.tsx.snap b/x-pack/legacy/plugins/upgrade_assistant/public/components/tabs/checkup/__snapshots__/checkup_tab.test.tsx.snap index 6f92d475ae6c5..4c500b02a0936 100644 --- a/x-pack/legacy/plugins/upgrade_assistant/public/components/tabs/checkup/__snapshots__/checkup_tab.test.tsx.snap +++ b/x-pack/legacy/plugins/upgrade_assistant/public/components/tabs/checkup/__snapshots__/checkup_tab.test.tsx.snap @@ -39,18 +39,16 @@ exports[`CheckupTab render with deprecations 1`] = ` id="xpack.upgradeAssistant.checkupTab.backUpCallout.calloutBody.calloutDetail" values={ Object { - "snapshotRestoreDocsButton": - , + , } } /> @@ -325,18 +323,16 @@ exports[`CheckupTab render with error 1`] = ` id="xpack.upgradeAssistant.checkupTab.backUpCallout.calloutBody.calloutDetail" values={ Object { - "snapshotRestoreDocsButton": - , + , } } /> @@ -394,18 +390,16 @@ exports[`CheckupTab render without deprecations 1`] = ` id="xpack.upgradeAssistant.checkupTab.backUpCallout.calloutBody.calloutDetail" values={ Object { - "snapshotRestoreDocsButton": - , + , } } /> @@ -440,17 +434,15 @@ exports[`CheckupTab render without deprecations 1`] = ` id="xpack.upgradeAssistant.checkupTab.noIssues.nextStepsDetail" values={ Object { - "overviewTabButton": - , + , } } /> diff --git a/x-pack/legacy/plugins/uptime/public/components/functional/__tests__/__snapshots__/integration_link.test.tsx.snap b/x-pack/legacy/plugins/uptime/public/components/functional/__tests__/__snapshots__/integration_link.test.tsx.snap index 2927e867dec1f..502af2eb91051 100644 --- a/x-pack/legacy/plugins/uptime/public/components/functional/__tests__/__snapshots__/integration_link.test.tsx.snap +++ b/x-pack/legacy/plugins/uptime/public/components/functional/__tests__/__snapshots__/integration_link.test.tsx.snap @@ -30,9 +30,7 @@ exports[`IntegrationLink component renders a disabled link when href is undefine exports[`IntegrationLink component renders without errors 1`] = ` - , + , } } /> diff --git a/x-pack/legacy/plugins/uptime/public/components/functional/empty_state/__tests__/__snapshots__/empty_state.test.tsx.snap b/x-pack/legacy/plugins/uptime/public/components/functional/empty_state/__tests__/__snapshots__/empty_state.test.tsx.snap index 4783806340f07..393ab7f1b45e2 100644 --- a/x-pack/legacy/plugins/uptime/public/components/functional/empty_state/__tests__/__snapshots__/empty_state.test.tsx.snap +++ b/x-pack/legacy/plugins/uptime/public/components/functional/empty_state/__tests__/__snapshots__/empty_state.test.tsx.snap @@ -152,18 +152,16 @@ exports[`EmptyState component does not render empty state with appropriate base id="xpack.uptime.emptyState.configureHeartbeatToGetStartedMessage" values={ Object { - "configureHeartbeatLink": - , + , } } /> @@ -246,26 +244,22 @@ exports[`EmptyState component does not render empty state with appropriate base id="xpack.uptime.emptyState.configureHeartbeatToGetStartedMessage" values={ Object { - "configureHeartbeatLink": - , + , } } >
- , + , } } /> @@ -716,26 +708,22 @@ exports[`EmptyState component notifies when index does not exist 1`] = ` id="xpack.uptime.emptyState.configureHeartbeatToGetStartedMessage" values={ Object { - "configureHeartbeatLink": - , + , } } > Add location   diff --git a/x-pack/legacy/plugins/uptime/public/lib/adapters/framework/__tests__/__snapshots__/kibana_global_help.test.tsx.snap b/x-pack/legacy/plugins/uptime/public/lib/adapters/framework/__tests__/__snapshots__/kibana_global_help.test.tsx.snap index 9ae847cfc7fb9..b3f749b12d9d1 100644 --- a/x-pack/legacy/plugins/uptime/public/lib/adapters/framework/__tests__/__snapshots__/kibana_global_help.test.tsx.snap +++ b/x-pack/legacy/plugins/uptime/public/lib/adapters/framework/__tests__/__snapshots__/kibana_global_help.test.tsx.snap @@ -27,12 +27,10 @@ exports[`renderUptimeKibanaGlobalHelp renders links with expected urls 1`] = ` /> - - + `; diff --git a/x-pack/package.json b/x-pack/package.json index b0fabd89d20c7..de996ae30bb9a 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -195,7 +195,7 @@ "@elastic/datemath": "5.0.2", "@elastic/ems-client": "1.0.2", "@elastic/filesaver": "1.1.2", - "@elastic/eui": "14.4.0", + "@elastic/eui": "14.5.0", "@elastic/javascript-typescript-langserver": "^0.3.3", "@elastic/lsp-extension": "^0.1.2", "@elastic/maki": "6.1.0", diff --git a/yarn.lock b/yarn.lock index 0a7a6f6d17cc9..8567d135248f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1153,10 +1153,10 @@ tabbable "^1.1.0" uuid "^3.1.0" -"@elastic/eui@14.4.0": - version "14.4.0" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-14.4.0.tgz#ac09a476798dcdb1005616cccc149eda23ea2a90" - integrity sha512-dR7lYwUaIRXZjlUrJBq8GcGLPh6QfM3waQxUFI8lOnMVayJe3OOMNADCn8Oty6wNYIOrBWzZbW6w4bzInWF6oA== +"@elastic/eui@14.5.0": + version "14.5.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-14.5.0.tgz#1b27559cd644403e2692cab1549082cbd3421dab" + integrity sha512-QpmfO6Unt4evb4P18CyWzassLFrw/4CUPFYZXQK12IChDOs6GrwQ6xZM8f0wjN/NXwjRjlWzMhtCWHYmrI6NGg== dependencies: "@types/lodash" "^4.14.116" "@types/numeral" "^0.0.25" From 4b54b8991d2a10a626da500398029e4887696f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 15 Oct 2019 17:30:03 +0200 Subject: [PATCH 38/46] [APM] Fix timestamp formatting in TimestampTooltip component (#47898) --- .../shared/TimestampTooltip/index.test.tsx | 62 +++++++++++++++++++ .../index.tsx} | 2 +- .../plugins/apm/public/utils/testHelpers.tsx | 2 +- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.test.tsx rename x-pack/legacy/plugins/apm/public/components/shared/{TimestampTooltip.tsx => TimestampTooltip/index.tsx} (97%) diff --git a/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.test.tsx b/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.test.tsx new file mode 100644 index 0000000000000..73bba04043750 --- /dev/null +++ b/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.test.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import { shallow } from 'enzyme'; +import React from 'react'; +import moment from 'moment-timezone'; +import { TimestampTooltip } from './index'; +import { mockNow } from '../../../utils/testHelpers'; + +describe('TimestampTooltip', () => { + const timestamp = 1570720000123; + + beforeAll(() => { + // mock Date.now + mockNow(1570737000000); + + // hardcode timezone to avoid timezone issues on CI + jest + .spyOn(moment.tz, 'guess') + .mockImplementation(() => 'Europe/Copenhagen'); + }); + + it('should render component with relative time in body and absolute time in tooltip', () => { + expect(shallow()) + .toMatchInlineSnapshot(` + + 5 hours ago + + `); + }); + + it('should format with precision in milliseconds by default', () => { + expect( + shallow() + .find('EuiToolTip') + .prop('content') + ).toBe('Oct 10th 2019, 17:06:40.123 (+0200 CEST)'); + }); + + it('should format with precision in minutes', () => { + expect( + shallow() + .find('EuiToolTip') + .prop('content') + ).toBe('Oct 10th 2019, 17:06 (+0200 CEST)'); + }); + + it('should format with precision in days', () => { + expect( + shallow() + .find('EuiToolTip') + .prop('content') + ).toBe('Oct 10th 2019 (+0200 CEST)'); + }); +}); diff --git a/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip.tsx b/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.tsx similarity index 97% rename from x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip.tsx rename to x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.tsx index 45da8a6b71fc1..0a81c965f8add 100644 --- a/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip.tsx +++ b/x-pack/legacy/plugins/apm/public/components/shared/TimestampTooltip/index.tsx @@ -22,7 +22,7 @@ function getPreciseTime(precision: Props['precision']) { case 'minutes': return ', HH:mm'; default: - return ', HH:mm.SSS'; + return ', HH:mm:ss.SSS'; } } diff --git a/x-pack/legacy/plugins/apm/public/utils/testHelpers.tsx b/x-pack/legacy/plugins/apm/public/utils/testHelpers.tsx index 2a772f4300df4..73b81bfed4794 100644 --- a/x-pack/legacy/plugins/apm/public/utils/testHelpers.tsx +++ b/x-pack/legacy/plugins/apm/public/utils/testHelpers.tsx @@ -59,7 +59,7 @@ export async function getRenderedHref(Component: React.FC, location: Location) { return a ? a.getAttribute('href') : ''; } -export function mockNow(date: string) { +export function mockNow(date: string | number | Date) { const fakeNow = new Date(date).getTime(); return jest.spyOn(Date, 'now').mockReturnValue(fakeNow); } From 97d0142f7f9ea442f3173ebeef502037e6f6b691 Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Tue, 15 Oct 2019 10:35:41 -0500 Subject: [PATCH 39/46] [Sample Data] Add event.dataset to sample web logs (#48150) * [Sample Data] Add event.dataset to sample web logs * Update saved_objects.js --- .../data_sets/logs/field_mappings.js | 99 ++++++++++-------- .../sample_data/data_sets/logs/logs.json.gz | Bin 1450061 -> 1455430 bytes .../data_sets/logs/saved_objects.js | 2 +- 3 files changed, 54 insertions(+), 47 deletions(-) diff --git a/src/legacy/server/sample_data/data_sets/logs/field_mappings.js b/src/legacy/server/sample_data/data_sets/logs/field_mappings.js index 60f7f15c257f8..c6259d17cc9c9 100644 --- a/src/legacy/server/sample_data/data_sets/logs/field_mappings.js +++ b/src/legacy/server/sample_data/data_sets/logs/field_mappings.js @@ -26,131 +26,138 @@ export const fieldMappings = { fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, geo: { properties: { srcdest: { - type: 'keyword' + type: 'keyword', }, src: { - type: 'keyword' + type: 'keyword', }, dest: { - type: 'keyword' + type: 'keyword', }, coordinates: { - type: 'geo_point' - } - } + type: 'geo_point', + }, + }, }, utc_time: { - type: 'date' + type: 'date', }, url: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, message: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, host: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, clientip: { - type: 'ip' + type: 'ip', }, response: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, machine: { properties: { ram: { - type: 'long' + type: 'long', }, os: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } - } - } + ignore_above: 256, + }, + }, + }, + }, }, agent: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, bytes: { - type: 'long' + type: 'long', }, tags: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } + ignore_above: 256, + }, + }, }, referer: { - type: 'keyword' + type: 'keyword', }, ip: { - type: 'ip' + type: 'ip', }, timestamp: { - type: 'date' + type: 'date', }, '@timestamp': { type: 'alias', - path: 'timestamp' + path: 'timestamp', }, phpmemory: { - type: 'long' + type: 'long', }, memory: { - type: 'double' + type: 'double', }, extension: { type: 'text', fields: { keyword: { type: 'keyword', - ignore_above: 256 - } - } - } + ignore_above: 256, + }, + }, + }, + event: { + properties: { + dataset: { + type: 'keyword', + }, + }, + }, }; diff --git a/src/legacy/server/sample_data/data_sets/logs/logs.json.gz b/src/legacy/server/sample_data/data_sets/logs/logs.json.gz index 7b88d366e1651a6d8408a9e15af047d985cb2eaa..0b0ecf3a2a40992e7e3cc2367f83dad9c46955c5 100644 GIT binary patch literal 1455430 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 z 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

Sa6+l~g&*wJV65JoY43Gfl0}u2#&c4dt4Q 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

4|%2*_^Xc~ual+m3{qV%}bNG4ElI@{aI-tN*_ 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%0A>6~>)r3oo0R+z<03t!%zInDRwf6fs z7Udx@1Eh79xbX{*6Xrz@Ck!_=Q4$P{C})J$C;~@TM!Y82!@*5eZ^6EO%ZZR3=8bQc zQpLj_WjY+=X1gEkSs@>IujW<4*Se>cUuoVtp&l%GY#)kn`CvL7k#lfWq-HGiqKV-5 z^Peudup{>!R1b&WDnpobNFJ<_qVRxvu$9AOUvI@I%{QOGzZX&-82#eC9DnrY0kUx3 zUd|S?iXSQDb&vH2hrGd~k8Q5_?|olLk@^e%ft*K#=9-$Uc{%y;uZ=%+a@FqR1XSNL zjsfQe3``*qHbiPKS1ndL?rkh90^ZIJ>@67u9^H}Rxm>3ARm-bYdwqRd&70fh&2^OE zkQ~cka|=)>RWnE73}khQ7K(d&EKxFc4|U&?aqPv?I3)LR$F^5xMSl>E7;qx+H4LHq zf5V@M&#%9Y&#$Kk;gG*j8tF~ea0m{Ck_B_ra5H%#R9kJ-TQa7ZD!S1PqsjKV@%OuG z&_huYj(Yk44kf$mO& z326x3!AtiTR6e1;7dujV+08_Pj=)s1@^%XN?UM_X?2?2%WKv{pO-RUtnr zHdP^~3xSI9PVS%2CS8Z;9;)c5n0Fs12-y^q);fl*MXfYpf)}L!?`@_4V$oYN#@@tv zr~4`FE;(;%h)(r+*~U8gQt(&_~EBt z2I3zK{yeL##_DNa&*--|Znf*TH#yZV)IzsdJ$8sGXsxJ%@K~2~>%nG*8ODdZM(&ca zwh^}|#Z6pA=Kb47-TjQx{`0jd7mN0KT1}hF<9C@hcXOOBllS~%NA#NTfQMC6tOFtA za$oo-AqV|(@_gg?-I1W@DaVhJAP`NvrVpN!U~Fwmntr&MVF=f-?R#s+l5uJf#UhL@ zIY$robo}uCq4Is_<7a1ow~LF|JVTi|`TM73rRbY8-_NLv%*h9@actW*Ca`VRg(OJL zjag}yZ9}%+Me_Y@z56)PB{o7>K{s+g7J_9hNYEudFsKhVGc4+rA@=Sq8f|6aNDTN) zad=pd_cJ0m$bCCYHOGtE-Q)f7QG4+8kw@)J(Gcf_KnGG&s{7W2V|RDO=wLseFj-5t8Xu9D?~^nyKYT%%%%hR*jH}JYWbIm=35`NXah+X~a zZm*ioRNWUC!|bq9K|0#e&@hNtX|3|$B>(&{dGYqq&^vOuhpN@vRBZ~$Sh1z-2+eay z_n0wKmNWElF9%Cjdke-8*i=s7*TAR&l-OCbf-lYX$`szr@dk)vSh4HoqFGjF%V2ak zcY`H7vwOlN3QdXkOro>Br;ovYxe_|?)U=zVV_55DVecqrzkhf`#D8QB5z|^qBOw%~ zuKhyn$hkL9vA6U=Zx@3|ut8dNZ^dXkSWTFzi81M-5+3)srur|zk5|oEPqi<{+H#m6 z-D4?GA_|rpg$Y5H6=0=NRUIoKs3DN46uoPE2IugJAjU1q(k_RyobVDR)Z4}Ie8Z3p z`Af!1L`b6xw@Z1B6egbh_?d6uwpZsf9Bw$Bh9HWkkZ9i=VSetJr;q8aeC)E0;z4m1 zN5HK?)sC8yOaardPOq7AYHgF~h{#+_srWMlP#h^66kkR=oM(6(ESCvE7M$?W9 zPJ7&CowMfK?5w)1zBluWcD1`NgG-n#1}6C)k7>xTu2##lo6{|PtKn+LHYRW*Bmf4( z&ot!joM9V1!I zwSFlDB16q2R0p z+c#2JV~u7fU_Qt^E_!*@OM+e|L{DdAHRS9Qt6$0MnevCBSW=$iG(Eu z%Z|c{vQWPU!sU)smsvZADmg$WbYmeeTG03>MK85jW~1mBob4-ofQ~e z3l@z*+%csWe!=pda^$j^Ekc?Xl!L=d8Gps)w*3ZQ%-iZ>y1H3}e22jfJ;U_$;j*Vv zyp!x1WhTjs^FB$`y7!c$dpk~pAQz`3@gE4rSx*8kTK0VAN=&_Qj58@Q1-?URCZ!|I zXyE&eNE<=RN4dQ%4RfgVGf1wP3L;&9-KcHK2^Y0=A?n*gr@J=!v|6;^FPlXw)Wth{ zVz>FQ*(}G2k~#3@uTGZpvo>&?yYDvbV>hOp<73^!FBaP-UpZ~!uRq*Nk8h0#LWvbh<~9u71*3pE ziE5wBYjx~7V1_p{ez*K>-ki-YXR8Wnh^L`n{(<9X-r@Hw{He#!!l#cM%g1;q^vaOu zNZ!Lm!^}3#H0~6%+z#iqf)*ILWZZbH5yEnz3JL`Dw{xfhd$3}xkR{lJK<-XMk-NQ+ z@OVQ%51_9-`;Iz!^FXcV$3o=Y8`$*+paeudc>b|tdB|)7{mQOH(WVlkKD0KMgovNn4V(rmFBg~QHcKVFW2BZ^5j8-hu6}|3MZJ? z6wZrqTSg%|+(T&VN{yw#D-HoeA%ons?!QgZMzdK;VRu@%s04ff%b6yk-I`A zeVTG42QpwL@VCwpZ-4fyYnab|%`r?wtQcZli5-S>--`LfXnT_?1bfJ9DQ(9-d22@L z5H&JsXt$=7XyC$;kJ2H=SkNBI)NOULYR+z}zgE@WP2OR{+?-*-25+$J7`&k&%uhPu z`>%A3jC(AE?q)*Ih6wWoIGM zsHv5^%Xr|O`~;5jUhn;~S+8f8vqb=^e?mPE?{xQV_2%n&gpWIRoyc(GL!7w83dkKz zW)I|)Fxp=~PP*dIozedK(Q%faQ${Omi*h%FZIHs?gbW0i*26XyGuqz92F-S$X5=pz z>-Y+a>9HbxvyGuKI%|dN7!L~Sbh?_Yua{TTc2&(GRcxYG8O2>30ElwWZC``T!CrVz z8F@Ghxt;G>O$Pz0A$+r;NLDn@{51LS>X+DHO!sl3OKSw_reGesv|ylyi9#G>d*G95l(%SA#FA@%DoKF5*C=ZTS@(kHDT{hI6nmqUt?R3b+h=$ z4VDU{0>@elQG?^RId!2IzkAKq-*XDF5c68bv@?5SWG$8A0jgqOd-XOjScM%l*3ELU z0X9yt(8XL;tVj{IJLR9+LT{_Zc{Q)TR{@1WA>JbQAj?!?!zGU$z%pfmMyDVhS8NxX zsT?*iaE{MEMxEpH;DMkv-7(2$qb^xp9MJjZAH~Iz006 z1gZCQLe)h(pWp6aMEPJ~_go6KGJ++KZA6BKgw)p5njuLn{*z}zZ~q;&q3+|T!xFXN z1Tw&l!?GG27Ny1%ktFYJV&{pr{^Yg0Vl2cYdcrg!^wWdac-Z4?{y(+`o10ZTuTHAd zd9%9kZK_P1xH+b5gW47uddnT#n7ELEE=z5?yreJ4lpxCc?V~5irC0^1K}#&eIpXQDrX z883K&k*9k`1u|@?M#2QErLCC^Cufq14m$&CDJFPe`Yu!Cqk_uvYp zu)&hYj=GsLp|k_3J54a0-LPTgo#v=g zV>MYK;0Fx8_`KK7gfC01n~8TaoLjDkLEKiGNyJ)$$ zW?-H2a~A|nBt%bAXM+v!Mn>r*vw1k16#{RnRXbZ>hBPgEpcA%Qb#Tc0TJ-=jq5qUI z0Q0U)<nc}8>Cp#3T(~^FKv&i`V7!)baZi7nT{rXDZT0tbIbWV6h+6zjl`u^A2={ll z!CNKFGkDgq<6f$n_4OJk0TZbyVhm*nbx+T7zudrs+|tv_6g)`a2o>0&bioFa5vdD` zngu%EmuE`UaJnI#Azse7LgMpPdk+5_>}kNinyq*BypLP;Y}Mm6 z+@Wm~9C>;7>%ML>g7#iuU=+nO@j4PCJ;VB(A4Js~CsNuLgXEu;n%2VWk; zUkee4p-Mdg?|yGbSy`^%%%Ri3%uvU)bZFMVm|%cp-U+*caIZ-vr< z;tf_@k(nNT^>ew!|K+xSUH+rAeiS$pVFU!lkG~bXR$4vD;CZm4!-sI(1!LtfP9_9y zLy2BxdJW&51#aYK7AsBTWsD;Zzhg9e7%>03Y~}$OOMF9R3SFD?+qW#;f30Ly%X`?! zqiU;UpfW6Y$H`?W>gnd0>*sfqPcJv6t#=!9?LLmC(YjVfE8?<^GaSRP+7GSE*=)G6 zLkZ0M1^ZU3I!$RvuejZ@pM;k(%D6kGJ=|O^=ksMn*$?V5xySm{J*MDU$L=x7j-|mX zLGzj#iyfevs!S=Ioq<)l*4hv&H&mkdNXZBb)8P<# z!b5&~HhKU0(d<4s{DR%b31$|dk@taWC!!ThQ~5NIi*Q@R7~&xZ>8%)ZkkTT(g_0x} z$%vP693zY}Zr@3xp08%-=j(*~D+6T=PHTU^w++hJf5;fpNuhb5hC@xQ;Ab5SgsMzD z@jf!(a0=Es)Sg!0JnR!eiNie|E|TG`*fTyH)|5zieaKa&}p_Vsc;t7hN8 zE3T*E7~fNcr{1|fad;X&YvidWRel3U8u)f11wssW95doSJkaqUnV@4zFm`mhwS=Kp zvL*UAy)6tQj0eotUomF3!c3T|8P(~@b~x!#rjNVQC4F7BXYFcsdQp7^6W&LAJfjcm z9qCXoJ0L&aUu_H?lu8rm%#d!}8*?L>!&vn1U(aD|-!l94XOWqY@SJSqs*6rEZ_BqxP(W`rc`59yHJrZGS zu==r6M)=|f-BJYIzzvexgaK1g zB0QV@T?`Y)4^>$FC8OhL6ao^QBpt9LJoIswHy>JuS5*TCzKWACl<-yVp%t^SV9_ze zg_;J4b_I!txnl&OGHlf+Ahg&}*ud(%hC&Kfr${Zel&*3LRkCK9Q>M#tB=vT4XprbH z80#rWj<_wWc^*wt6g}I)-f0B(KAPas!M5LmvpWeBv#c$bX+vxdyl1EfkRxSaXM;zN zy!0Xk)4hO{;E$25d1&a-4DglfPhFsV(w}1e)R3-X`dCC&wNa)+^c9Lo-97Aq*NX+E zk4yH8FS_F@N9tpzqu(N&{Ax8@_h5H;>OXZI<{naezFeI&*B5~n#Ae?m%BJqo?$A+m z-yua8W*STCKZ(mMcJ8(9~&R%bk2h{LAK~gYBPla2mh@elRc+}h2u*AwxbKhIBAE?TS z&=c@Ko?PGn3lZMOIFRCxL}Byh=4{r21#~_ww?`^;uQ*?a%^A6RR}7r z?*z3>rVT>K`P-%frj^^SD~Hb-}vI0PPQJ zYzNlhO^nF>!9}mmXVv+tJ)MTh-;<%c-P7CG1ar~d!LyESh}f$O#2++P^&tkV84LUL ziE`|hPm}kXz|$r7dY=kBaWqjV29Y0g@ZHid_=bChngdCM!rhdR&Gi?J8KZ>XT2ouQ zMbkQy)}X_m>QUiO=hgCRIX|n~+bLX5AxeY2Eq8O&yB1@M&=~|TF!Dl=rNQ78XPqjL zhHr8f8t(n??j*;1XP`PgBMDv$J1<6UDm}K=R-3@m_m(CL_K;`dTUqQ6;f!PnLv@cVJJU>?U9j93QcDuJQFhlLr(JbFFs--- z#Is*r#G5NSpN5(u6`|(Lnb$yKAkDSr1vMc0yBWru4%JirC1WT8sgR6}NQXA$?mh4S zBh(83{}<7Jkc9uwh()j;Xb4uzv*rBjvVxp*R(*p%;oD&5#ywMoo$pH%Q3)xf@`9H%u42+Jg7Au!bEl3a;Ce zKs?lU4+tR|X{_Z!+Fdf>EmDZxM4w<2g6XkL3_AP&-`&?JRBb~_KfIjrI`7B1uZ!7q zcCoDB!ltvcAbif+w`bo8e!t;i&CRLrYTvmpnH=Ht9)0Yp7Lz0x-?TWEuTXHTmf`qx zqN?@klRG~B%B^Z8OW2Im(=vp+)3V@m|I=^71gOxvnlx;Yy}A0U9`Ok0mVEJ>n9Xa`Y{e01NNg$2MKX zc>u21gEZmotI6BXn?TwH{eDh)U9?n2aA(GF-003|Hx{FvGCH5r)Gl zuli}yNsjiLyxqqszCHMhxC+GvQh%l(HZ7=29`5E)g<^lfSnY}t)SOq6m60Y_KSPrH z*RokuV7TYA#mVw|+Fa(x%B3~RgF7f0G3RNN_g`QPb}qT`RTh=31^iEuttHR`6wS^}$S7MmfMjFBRlkgV#yE;7kb=FI8p9r`Q+IPGuR3qNQ@$5O;-+c&} zubLUWdDQWi1U0&+wy(z>1~mpx89Dd@!cwb)`1np4kP1=vIiS$oQK#VTj1sRAi=yYVo9ea~ zLGNB^-aF~t9QzNhGzX79cFs$}i5)8LX0>e&$I;6_C;#0@FLv@z_y6Xpz_)15eH8Nn6Fc4>4(5yS7K|#O3d|JXS7BqqcTl|bFpgtXWD!GEsrz01k_2hw zQ?j_H*0aFmSls3X()ylm4t|@3D931d_v55PKHZmhodmP{IO_3CjYwhc za3on>YeR)LMP^jPJ(Q6Bc9)D!2q^fjp)`0d5j-6HxSii>dD5<~t95gI+GEWu&IRut z;0^|t#|0lOK5{3hBn`SQ5}D6y@Jlp@Wd*$8uW^aOUz3w`qE=F14VP_D$E+3<_#pXmx`0UZ@|8o^ALvyXNHs&OgPci88-TG5Dz$8@sX)UJ|a0 z*j0ZQ1t18)qR}FaMR6)^*-)5yWUzi;I;@$u7wcwmw!$t!d$P)mBNNd3jJnF>NtKNw zgOx|_(o;Uz5>T{EGCR|_{W*t!^+ zq45@sQHNnH1KZ*u8%n=pA^XtzF}Su^YPV{>&DPWEvYAhp*Q;PqrW7HkcX;`>xSfzQ zTy*4SXh~p(hSW%dh5WBM)1se0PCjo!%g;`-_c^J44ZrGENJSl*PHJlKN`x1oln%Bq zJjXU1TDnWdu<%Sn-dt;vP2-N|{?l0F$?a;nsOGcNDSR0q1w4<~V^Pu~_ds_v%nZ_^ zVD*t(s9`E_l%4jRu63PDX0$t%t{|wXV1z@YLK)KQazeZ?wH)Nm+f`_@kOmq}EWAU0 zHn>?ZMyX3Uj^1gmvRnRm5u-HOeCeWVFyr;~qJg*Tg}LP+0^TY2%(xUpAbiTm%~?Y7 z6__)r;eSCg$M8-@Y1z@L4`iw5Ee^D_>*?tE%dqkJ@PB@A=fnT`;g<}-BUTGZAX;<_MvxOKB!DP4w&L&PV4YlNxftG#nF$lM z7IqgzPkbUA?_~VI+V!+qEWr7GZ{`1qq)C!=ped}6M?t39*dIJOqaBDe-}MV*Hl}hEH$|b zXPf2vmaZmTbO36icA-hb3$5Wy`vYpcFJCbRKOIY&&)dt{VpiE$@hWTgCG6e3fL-l< zr#DSleDM5{TfCyu1Qw6#eH43&S^oX~YnLLzr7TTTM1c7aV^IbE(dtPp2opvW6s_@h zk_D*W-VxfY7v*(=-+8QBn^MFtcr~Lm{b+~|-hN%JPp9+tyxq$1{R22*yxZ9CH{f7S znD8Brjd4=oomd(d78IVC4js&Y8} z-gXKQNcd~UP`->!q^+3|yM*--1_`{L5iv-hMDX|J@~m24t!BFe@(b}txW`*Qbl=J! z5j=Vfskl~t6-~g~A^u0wx~DJ~v)x}mx_rjJI(@4opE1sDTd-88Z)L!o6=ErD36|4v z4+Vs$yd|Sr8mcRux>_0=tU*H92F`xG8TW(HHuHO|;^}EpU}{jqCf~`rCppxy+JNJWIk39GK?msTRwqa z{9tz+Jo?zdv?kIYNvEh~3STo^1^MWy%*T_#rgbxHCHN-7|*z zw2FJfxPl#&fRK1=#^wct!An(x%H(+7$BB*?x1BY_hj6ZE*I_TJm~ygvI78lb2X%69 z(PNtt<2o1}H#lCR;U~4GL>W|Y&=V%Tn3Y6d5FbQ~{d+_O1n&0^NhtCO46`aYs9KQlf!GTC%m4S!-pOKhYy=4(TK>BgY!-p$KQ1yJigi z%t)s*>pIN`AVUQ&JHNdSX3RSe%7zI_$I?dnYq@T(rqyNDoHi#xFR8!N94pQMdUyw$ zpUy_#Ckd1Go-l@*l490RTJ2qng9>Ee3^~*i(5zRlT@JNZP75f>p@z()(l99vcN)J8 zPD}X;AH~pFy^Zy3)pDk}WQJ$XDflbKAks)>$sj$KJA$+DR>oUy+Kk4+SN^POs;lO4 zQs{6@)}X_6kF{r~g#lT?vqoXDM2g;EEcPdmPl$$frg+cx)u+kxXTQWaz`Kv528$sx z=Ps2ncqk@KSt{Y)W(qWMyd|To{%V5qBb4pjxs7Y{bS4bfG%~WZvu56+xcS*4gk$Zz z+d@9qJNqZ<)8EZy%y{=I-N!)-yO~Z5_}C zP!kT6s<+T#V zDC%+=f|XgRj4TI?3O6$x3J-&$yftHOSIQ6#qqr!d9*Z|Lj*0q5^1}J@_N4Eue5S!|cI>3bXEtv6xoK3DGq~42Mq|;pL1hi(M>Nm(8NOo;H}u?%MS!o4&ed zUB34-l(hy=AGwF+(gtcBgn+Yy*EbQZ*_f5Tem?oIAvS&e+-dZth)v-gu=%4Ll0{=7 zkCjA}QEBgOVpwB#$iBT56C=OKAMPs5_M|u9ut(`xb8E}DvueGpZrf10u3UJ$ImH4g zY_Qz1aTP|WfIN|@ni^!RrU>ZG%U@r-pLBXSeXM`?abn`0!*f_b^`;o)w7OgZ+uzQh zHcm$0)nBw9-I9s46HaUEO1JMN7m4>X9_^~H)vWrfTFk4kSX4|Wa;T!@9qq1;^e~~w z@X=!ki7gSq6fUHNSXg1OClOYkl4E(#Hv~BDSl;s_|0%BxXOcUfQd`5AA?2oYdOJz? zck*d({6(XBks7mYM%dvYF<#F2d$S`MzW0v)$4AJ)(?=d5>rh7r{xw15EPTB~EMznb z-UA2;8L!Y1{!$JJIhY{jWk|@wJ!JXm?d@E5#b|geuw$>J*a;prQk9%2{J5F7t66n% zbJDDPR5*LVqjGqWA5V2CT;2;C6+U6)rpk#5Y?a$CYlFWj3*+m!hyL=(HCI=8GOZav zYC^!pIqe~X!74QcD^}r74pz$XSBwELxS1fH**K8pn22x&>;f-ll!m<9w9j-lzid}Q zkva27O1N$JN_KVI`LCHoV|WiA`A-2;+Q&6B0p3Y=Jrc@8za9T6`1RxD%Lb3-PUe0| z;jx6MEu~63a12UJErgWB7Ua+fH#0mIG(?``t=Pvm3#3nh-BFn&mfZu6g}3xm|1M11 z#p<@2!fmd<&f0mj!CVBu)e*!G|3rBAv|od{1avEWjbm5dv?Qw6N0z)sCRs}JsV*Hc zOpm-aDTXO(K`hErKMv|EEObLE{S;v8-mdb*g$8@en>Azd)SO|$LW%CfsjseLIBL9& zm)U!y@!n4VQUd! zyEui6(x6kKCP#$f&F4wie7ZBwH%_;?`#42$M=5i0T?T&av=G+P68!Js9)>yY2JO*X zGS+A2YJxH@RC?9$o(+l!Q0r&%ysLJ$m@emMRr|dO{ccl)vd%lp>~7Tk!;{TnZ^@C{ zq#^!H0}9Pq_#?pfxQ)~i%7M2JW#3x0zth|BY6B*B3Hh#T-9NeGvzjiFY$;0_KSLDb1g zjwFSf8LVLs>KnNW#z^ImK$O+suMclm;oXeVvSXEP2$9d0^Q&of0yessT^z4(<=(-M z?^^{=AG!G($pQo?5jBS&FZgjCLa+d+645!YUtJw7?;4n-| z_~>I7wcuySFL5I+D!d+(GM6R#w~uao{+mc~eB#q_H$dj=U$)U<%5hY-M2g5_f1D#@LxkNWephB?S zT7Jf39@zv_bG4k$mlf4})sl0ltlYyXQ%??;9C=ErInen?{_9Gc zboxbu(k2l4S#U0VLz9C8M_^x+K8@;Ne`i@^zFTwDV9i*S83LM)z1jA9u~)11`uet- zH@C~1>u6UNE@zaPY1CTV)na{J;n}oEGkG}+T0p5?mqP5!qirzPB?rowsLQI7ghAWZZCHB{hGOu%NfOAV-L%&L>pV$oc z_0bsf;%wD^hs^bBd$Ya{rN}mWEMd6rG3Gady?00xwYw`Hy8>)94al3N#bmOkibQ;E zBA$Nne)8hoFR_8*?&FyCNyyoy6`pt)crnGPVZ=N|Jl)^fFt%~f?|MtdN=VF12=gn# zk5r}WSP+djG6KD@$Ik8S^rD*Htl?b z3Ql8XlGTjmNPvL_e*QCRfuB>dBM=-&p(NpoZfdru)~PMEWoowJF0w?xwkNRun$hwR zHrZ?Ns%aJtJn(UG%xx{pmT7u!&Lz8Yw6$vFE;sVI&al%CN6jvmVYkVd3xoGx=wnJNchU z?qu+nRuFg09&B70ZPZg$g?l^8Bih*RRsBU1$VG6yM)b?V1C|a~GfGR3!4$8j%gbh6 zUA1el=IbA1*6!IpwOI$x8o60pX#zzA_~Vp{8l|#S7#62h#2m6_Z{}{x00Gs8DX?K@ zfWRPFsHh}DxSL^$xuJa2TQSO^!BFtQXtf=n^!+a2eZas(M8xoJMrqf%9{gmvSj<|8 zxX*4DCruD>=bcHJoOg32yOxNv-!e_j;XZrhzXp=ZfM?Ry8VBR+EL0O@$Z!80&5*l~ zqrU?hygTn;#~Xorh9cA+<=x&CI^O#a&kzk7|KoB|aWRWsekoFV_Prb#j(d~_-k-ot z0E*LSro+U<9uG1*kIqChg^Q1&HYHTZ;!H3p#NG+5b1gZ5o8k{`N)t>8$nJu)?j+4(5S3? zI{AjRbyPN3^7y@$fKbL_Ewje9hYSrV-Dq(@4KK1l4Ys!0SnW&V8YMfK+$Ry_^S3o@ zS_6*FT`!7QlK7hm(RzN1C4)2Ohq1JtPTNKGe{Y(A5IMKK@<8j7iMp zol<^n2uDegw+wzOdw|?k_j3}f{l49BuDZ3~w@J=b_`&7^g)lb+jM#9YmME_>bXX1< zZYB*e$fj%Ymh5{mGr=&0)r9p_^|lGiV5C^D`pyooXFLM%m(A*;I$42x@r^Nme}&>q z@0fSZ3wL_kgzpTVKZa0L%8)%-cHdF_y7oXqsd?1jUH0TpPB5BePZp$>%+StxKQg=! zX>2(}V7QSI(Wtj(G$GUz%4*Bifrvo7mg9x1F)Kc8R`cb$npKPCYSx|y!)ZTk&eT2P zT}}AFIn&_LW3XPvgIQB#HSDx*M4f|hc>B^#BVCpFbQ(!&BV;&estE1WZi}Rm-WG-l zRfkGA&U$^5mB{=9sj-nM0iYf^B99D_j%Fn7u@c*?R=3sn*&J32#HM#H;SAZNdxpi! zH^JgZk9^_F*M}7eS>qTp&#ak#-grw7Rh0CWw3ftZ+UYpor<<%c%nEIaplW-Y$P$ts z@|EtIv6z=hR8gQJMcmRSX)s43D9p9GJ3-my)f6>l+tvBaI+Wzu+4u(8#@%x)ZGGY5 z$F@EtDE&X#@^=Z3_xx?t<8>b=rqs9=jJb2z5X2kJh4ng@We~MP8h9B{1SXXbWEUMg z6d%Q^maq=$=&D`9EB@p9_Ntx0PFBlBa|1chqPc|s|9%RD{o`u2L`vEoMggwsiH-GP zn^_g1TgVQplja)!BQVLGwppesyE*Kh#crz>?fRz460Z0BF$A&@PWo<@Qe?e`KS@cQ zDdO|tHIcK`wm}Y3}&u`=?O<`Q&S^y-S_Tf-<+W$yp_aL?IGMF zaVW*}?QLd{x-t9z)O}fd8#lJ?U+FK;x6qgezIlq{PVDyekkg$vTB0RJ6sb!}_ECQQ z-MeI|02IIiNl2{ZOP};%JG(H{u05}%T>HNUK;NCvl;Ku-!ZeXol^O1@>)Gk79YEQD zEd*oxJ#WEnfAYM(vfppHY+h|KyV&5+S_7A`y12Q%o!-vAmD}_D?rY_k{R^pP+_x?} zYvqH59NTr5T(Dlx16Ckq0{Ae~cKG6@ul+Ax7HB^>@6<5oJQx>4(Q*nj{1t%@!_CwH zFAiiTr&8hbj`iD}c={4;hj=yPjH~YfmhO0dE>l&cq8-;#ZvV`8wd|z}&Cj^{k3P0K zTgIa4A1Mga4k2%l6t=*Ye+odEJ{5s7f%##ADX)nb45M;ZNm<{X_qVhwri9>kVY&|% z6Ua=pUQmi?meiUugMK-`IG@fJ%{4~2%bYRC`+8&@zu)ZM*|V$J^}4xO%r9>)$}M_& z`!zCa!Btc<<=ORSJ3oR&99!>|<59(lW1Hy@q!jv7QR~N>my`Ehr0yr--sd89;Rx7k zfwOi#SGF|@g64`aGVyMDhMZd~9o&z#h4|%x#FW1Cwx7=NUZB2D>j&P?h$h`LU@>)D zKZb#!x+C5%9zUq#i?%eJL?2M&KwuK3SYuO*^(W*@A>QypMx?V@hWkeZZwn5vr=!)u+v3NK zAvXqZV~o%y5YiKA-by>M-n^Uq+|`!-^w`hYo=Qa^I#yIW>0vNRs$;~aL-ErS$I9;g15L2ic_rhJ8ZN<#ydFd`WCjJH!E7e*r)Eei=1e1 zWgP`45nCn-c`rYIoP7G%PpSUt_U9x%6ym#J2epR}WiYXcri1M{YYv=&2fo%FTIc%o(Jo&To#W@1R_)3HkWw$ z&Tra0xVVj%G)mo18UM{}eKwmn>)YvH)8*!3{%B?IT@&Qp%^b1x9W7(zUk52=SQXde zj_(fLTM_5fGOqupKYU1z7NBkjk^`q0xslFx6T#>WI4(@cvwPV0p|_i12(1Fl)<9?y zB+|5Kw9@QS9ZNX=csrx~EF^>XI}EMUo9pYXou|3Y*YE`Vqpx2i+X~PeJ$mGNucV8d zf_ofBB<3urpn*^DA`Qcns>+-3C=rM%SQ>-gIx{6st-+Fb<&b} zvTULtI$?cyfy?Q9nTpKu7DlhG_x&nuv-#$Hx<1Q<;P<=CtLr@k!C;lzKg@jtZ*Mty zY+C;*$F5;%!6Vy=Bs}2IGKd`EzZa&aMRPgbZ048q=#Fm9z(fHav9@L!Zz>~HQ1i{NZv14Rn4ggM!5trN*Ezc75KSm6T`9YQ2$6Ev9Glf z;mw2~TK95cT_L64@hSU2lcSqq-dy90ikY9&%`5_hj(1q0iWMB?kl&lHU*)whl0R~{ z*Yt_%O$%tu;6uVi46d~W<)>590Oco(6srjbHzPK&nhVEi#i6X;b`JJ=Ly0NGXJ#=1 zr$W@|^)i2V()z_}4f?$~U(dhoUcjym4&+}>{TlW#I8gNbk$)X*ZxS0~18^?2C9VW{ zxmzOGHA#yk;)T&g{s@K3>GEY60 z`1fo*JA;3xIcfe}oiFjyZhs!OeXnEX;Uc6?(~hiT!+)p5QPoLzdqinHum;Mya)> zCi>fSGhfV`>kWhi^WLcCWAQfxC%$h|tB}7Te%8pfoM{)fiAqTn_??cDSjRJ2ujeoQ zxcRx4^~%Q0+!3K<2X<>Yk%n8#oUG=Lhx;h25pPv$PhhG`OiH|T*u#NPeRv^%YZcG4 z5mrO>EAhYm8`;(WK9JWpdh{65W1Q=#V~i@$IpP>Gg?j!jaIxQ&xY$^V@9XUWOt5hAYIL#8kaWDJ)(nE9>-v!{v;t7yJTVlLo#T;Cvss72H4T`eAfI zD|obkV^^v|Eym&t>8ztnZQ|iU0x()dW3=HZwdc zITSGa0y9iYN)n@USe+$^2a1Y+4EK2+6-Myudb+%5PG?9wwA_Z?S%i0>kZff4Y`A~g z^~+Vm97^4zkFCOziLlsgz*8W|fzc~8=UEUvQ|z-K=1no!6KOR!o!5Z_~dm?W}+AHAx4$By)){ra!z;&yeN>GAlnje7oZcVc^o z#1Bi#k5%{&8F?&RZd)^Y`Ey`fe=f4E5LIezxrfDzdTA`Y=8wZpI%H;h>8``9EXQ;R zvMl?!LO z(D~xg$V?ie_ql`h>@Jn4++!ffqsgswq$qe2_ zqD`*>?0(#}S6+hS9)GLm$@z2*zG-s?zG*W5e80U)CidYJdm1^=r|GRDZ$*9SBlnuQ ziEua>j`-t99~cuxOQr~4{^2{#e$PkVX*R@xv#O2P@gXVxP^E`D-a!Sp{7_~JhEKY7 zzQuZ)*{l1Q0uaqHmwMsYuUCuPX0uwXzV*5}Dp}0nEQ|FsU(kuf9owx{R`DqBgr9s$ zn8s3RS)dAzZCjA-JGSl584@V!uoUa@cWa^jB0cjvJH9&~>YzUP-pv*(Sv}giMYZP#q zStjzza9P9ChTXaEs@D~vvZ7^-LB}0_ zWKwFQs=(reTPR~A->TSw$dpYM8l5fe1K>{kQ-pZhl+U8Dtu0V-?u>`o z*p>~MQSc$J=7>gnses|;OH8F-;eM4QR=5Mn%4a zbAH-jGJf>P>ncpsILnKKT{uq$JMCqM(t+ly0Q}-r5%`6|S|`W9e4Zn&T;eSM?E`2n2BVaUgM6ojb*i ztq6t_?q#?=aR|1`7np1^W(am-?M?~f^k)EXX1pyD_g(-*xuELb=IiUtt`0yw-S*GD zzWpE4>geescL5wMa|ah7kNvs_Mzhw^NyQ&f>cDe`|JS*&g|Xs@!H_%9i>(J8{y~QT zN3JIn;u)XC;Q_m0lNtfSEBRX+{L}gRqWQX>U#@Ph!>>TN@w~3@0%zBqZ%@~YF*G*Y zXAGi;96Rx4oQg5kZQFgIHKK?ARMedD`QxMj zw4I)IYlb`xM(8Y)5|>QUh;h7=nS!LGX2K0psg==~{7oM>&p{ z^~idDzuPiylr7y?`|Y@fNA6!hPsO)c=)ISm#h(loa%@$1){{9z# zaH!=Z9vU2yoKQyFu>ub?LrAV7BGkPn4g3upTD$6mCCP{>4sjc$Gr@J=uQo@5#7K2& zT%WHlr<>+-y55|Bxmj=HF{+_~{&AI;gX3l7iH3dQ$JQ#XnEO95^JvSgLyKD;pM97- z@0bXmc`c96vrL2tdM&gM-HJo=mbV^r#i6`#Gs6h3Ls=|eURNRwyrq%Ur0>=F?0mMqoGzQ| z`SmIq1A6+3lYivLsyIb!IJTj-QpqTh#qK!pv?I0<4g)!Z)4At-AEX6W#abT@!zv=R zQoN?6?(OE#@^dJ#Z>lBuAaKKk`vs@H@Lus|j$^8mio7|WE|;ri^L@Iwh@l@3#BVJJ zee_RvR|P%{yET6F$ZJZ1v9PU#bJ22!U=t!2acG5DS59Fu*{G zaISKKy0@J&pql}c9ZF3Cv}?@4Gka+J7+%ody2A7)Xl!#nonOu317rK|5@V|nRz@n< z8C&ZJl|tycy&utThO^tlv9omSzk9;nVKz< zp0dYlf3U0UAJ@LFvbUZr;A8NVG1yg2<7r|vc!n@U@+mZ{Z{AH_b(0T%Ci+!&^1%`# z;TU{iW=#KJ!KbEKjW$z8JT?%x`Z80)4_HTZ#PNg6#xyZ@JUXMgx!FvY4e03Q&XW)I zMjwMyf7+~6{OFPAsI}CgzFUFhm>eks;ueugRVO4n0TuHJi!`{<&hZ-98`1iUm`%1T zxGyoK-%?DtfMcemD6e?tf9tgK7No5D0I>c6_f+{{0N61Zom%O8eH4GO~hJhm32-)R9)Dr6$(sEF-SU5 z4z|@BKkgdid+x3(0DOJ)zR3Ft!f*5I>0;h&X5ZkvZ>P(2<3_ie8mi_W+pek>tRy>N z5Xc|7X>>NCD1m>6Bb|E>^!$d7MlnrDpPMwnj5~)tpS%k(umozK;HO z=RBmp9Uf0|Em;i?o-l@pRdN>s$T6&bDr_Rqq{rEp(bJFrP3q~#T*?Su7s>=vUdqVA zsW{sX0oI-r>g{Ncd=coTmcgu0C^a=L#Po!7qNFXG7W&~9PMa%Gsm&}mDufsI1aa*B zhWA$Ai}~gJcG}$DM2um396=4`_OGL--22WB<=2}X912!3aucqtjIvpbSa{(@zg>FW zBK{@&rMvhx=$FpMx9|)nDD|-Muta3Qf>*?R_V+Pd92#n)`!+KB8uK%R z6Uh23znjt3|%;o9L$@NxR&OqA8?WNLTvlRSc z2Ny?0Su*%V0DtqM2>u3L3CfvY_z}cNMR}EUaI}LmY|HJ@t}ikjWxbon2D^PPJ^4Q5;rF4WbK{ycyWSd*Oxkd_EXg>uYv6S)+=NfO+|N9hpm@2my~ZYVSZUc)dCB}zf2@J^1O z^bK&EFQ<#y^5nda++2zpwM)XNJFuS4)k2Mm9x`$h7-xO8!*`7^fuq224^m1$U%d!$ zU|$qOj6#EJqz&yFhMj{@j5=3^j-a=N3c47|Ojcmp@oAyGj^WMxde-DXDgK_h-urUR zJtyYL^m4jBja*Z2-<8TV4`;hWnm1TPzCz=R9z&eRv<+dPa6&}k5((3VQ#H?D`ZlwL ze;S;62QQC;!KB>`9aEY>tVdO#mDOx!ystwez(8KgQB@3F67aQo&sc6|mk20y(%j5b zMiZ}O{GCXb^Yv=8n0{~C>G#cFv+tXWdD5ar+pQHz`X{`vb?q-L>+1#&8-wPyC~83g z)wGCSoAV#W^Z%o|Go=|@irNf&}T zA$2lqXS5KCtR(CDHpsgAI=p3MTu4w@+qD@vODrac>d<%fHW8~Y#GBTDfBishIm9>; z2u!xw^9kj|P@iL92|93vh3#J22Tpz5Q>Z_15!W*a+hR7_hi%o+M*rl7Y^B#E@2?@> z3GYiDgUJ-ug=3?b!?5rXVMv-<2pRt3+2r-}PT`()3fKOeR5+XwRp1zQc%v2zbSeNF zJ9X0JPq7#|(3*Q7aCm_^eYk^N z&1n_f@MrMGOqqPd(+Pa_Qf3WhT{qGHcCt46W7k=HpjXA#zd zrUZgOmteHb`N4a%`#_W_t=2woG{SAet7I#>!qHx;%(!?WlYTIra7!rD2O^H*z5FdJ zp(WhY2V#`Y*6S6U^GM;fD^S8$uP3j%MuisT=z$eJ zZylvasKLPt)@>7Bl^%s~`DIKR+k0<)ktr4`$#FhL`iY_dI;U5GfioYaDlTtZJxP^L z?`kqpF~;BIuYwfH!ytoIB5$o zcbfOXGk@*RnOY3QSPt2&Drp)A`pU~L1TDQpIT$W=t~?G7&<`S|Op zvv2U$-8S$_&lVT+s1{SPEzm!;I*x8E^4KQzuKXClVuQ8A0zL*$aW_%gq`rAKdE2FW zd`Q2yxm1rpN*+qN2U}z*F;>UJ(TAd9N1G`MEQbiueVKhtW7zk}u|S%|_uJK^;w6pS zr2aXD1A?$~^XR6uL~Z>mIFdPy*D&&cR&s0NHYeC5qozlDk*V$c@ysVr|HJEX%95wU z8o;bl&U_ecPN+~!RqTKWw{mcb*AtggeqnKR(I~bHcyFStgEunDa5t5C`nsN-&erpj zi{^ZK6C>jnZNGvS9UT6yYG1m@thNV_KDJf2%7$Hw0^E9t0>P0ji;|yxp0r4yKTwQ5 zciP6>Z5j3KPYhywp%Cg^xH3n}qjm@W)FT zw-w()`}&ma{{E@&s>g@7`$tbdwkqEZrunL@?qF=GAhxKv>78$weeXPPn2`-mDDE{~ z7>fjP?O!$OJ<%S98;=LN5(9xLG7F}`*C)c+tL7_lv>pX+UXiVQ`^+z>zV$rcJbnYVHGr=mJP;#rE1Bh5>v|(` z@m_`#%0r{4zQ80%Serr=mhT+;=Ith4(I`FPq|R>Rh}!umYN)t>DUTEkmzdRP8OJuO z%;>P2(OS583P#RidwW?a>9gN9{K0dQ^KHZMdQqyG-}KKc5z5M%P5-^k4D;3uXnrU$ zRnJvs0-psc2e{x06dvzp+>Y|>v^kr@8(c6G`$$^tpLY!(c_&?t9zJpt?_`wX);JX^ ziGnw-kR$F*(761jsBu{l$sO3&u9?wc(%Tpeh##YwG1^v7|ml6e~#2KbID5QtTuZ4+&+Su>5F{|G1-j z%g(WAM3&!~28+eeIH#P9lHdB!Og?Z-7Mcm^hmEA%1CBvzHBGfvRX`_tn;7oI7{bL5 zB&K-LIRZQ<=3{$KFdq51yvX_^r|Ql{!#CjS2_?yB3i()wOFtiy%1a9 ztszeK2V~O;B~apb?~_XWE?0F$uuia$D(ImA|K3R}D<+iUy$olP2jQ7KfvI*ys&MSc zy2H~+croKa>|V?_(`LE)K8~>rosHcAKY9Krdib$5muV4msJ0ye%phDsJnx!q znE2H7K>7_6pRzrWIGSdaQyuasxVM690h%jon&5CVH4;Oi(4PKsI-wT3Tm{v;^g(6v z!Eit0_Jp@IPLyuCf=LceeOIO4VV!BMj-Nh;+!9iEhpN4WpeAdR_rR=>N;~cGl{1R7 z?E=F2dYw=MOf~y}w{0b=Q4?%)(^#giSlw-}=y++S)bQRKcL0;dmzgQzVvSzJEa-jgaMquTAI+H1Jr>k-dAgq8f?ZzDFIJ1`?JR}6 zSYmhw@nigxtCpsUgdW>XmMmhUQj#DeFqMT2iXZ;RPXT}UpMn&y)4VL3m705dn}~G^zVwW9)s}UN zaz%l_RClj*tub~CrY zg;3=a!0`y=UZ zg);1wT!vbH2Ve}TLf9Tn)efo$r#`aAg7xaQ`Ldp$p3P#kmVGp>jO(d8xku5q=mEzz zb<(*=)zGs=v^-=oih=YqZ9Z7#Oq;tmIdi8`-=tz5kUloCN(-+H=Z^v^7;kJi;W}gh z1BporVYqEctd+Ymv*ERj(+ozu7SoH_I?~Pk$=C|0g&z*Ir=0bP*n)?R!7N%H5k(nr zy-bU!SFEeA-%Xx(Oi{1>xw9No6hwAXOUArnrUBO!ETau^2CM06yst9SsI5uVKxE2U zz3V-3eipS%SMgTHn{??+Y3sONP1hIk(AwiEtbeMHuCUR=#-Omu%BY7H^ajFQgu&z` z%!$uG_(N>ZeF*$5Lu^(GY5hPFYr2N&N*MU@CJtpz3NNsE|fufDVl3SfbPq>FN%*$rIje7e}o7K>CRvfFzN-SrQ7$67|XlKc#cFMkZ?(^(bTPwY;kf*4(v2ZFfN z%LDmwX+94GF(^|;yRb#TQc=TnM(aN`1M7=Rf`}qeEUZ2T5$)w%;he{BDlexOoB3t4 zxmh1jGAw}nd^ogP6~kEQv2#8cxP@v3Uq{7o1e%mMr7vCvYW1=}t&}5%Yj6qOLs`Bp zA1DVedyRr&w1rr+BzMwj!(DN_=nL%YmYpDCB*j_Ma*K!OKBkV>o96p89-@2%%M~2f zBUr9j{>Xh!$GGSPh1jqO|L8TprPS}uC*S96Gps{Cr_`W+(pZlcO%h?NG{nTqk5$hq z>zt6v@g1-{J&`H+FQE~`(fVYieS#J~PKt=#+{@FO>+878Si_t2&#+i0^Uh-=?${R2 zS`%3~1foK`cx<$a1G@})=;x0=n zG8*DSlz0Yf)Zj<*xJ@==XMdZ#?|kg{zjfO9KIdZ#MZkziZai%?L`o%U+Szz3J*_m% zIIA7Ave?cBGL!jQJ5ih%DGndb#LF3fO847hdOE+HubYe2<#c_-8O`AEceSzy&uGR^ zAG?E14T~nT1t%PVyGZO_{{{bhLht|e-nYUnczpresi4vr9~i7HrM5p+9S0y%;=f$oBcxVnKuif7L4wYeq#_9^PNOq7Br* z^bKSt3&V6m(HqPqtoz^&33P|iWu-wymW$bKbJi?Y-=e~Au)Rv<-G@Wm!Kg*c$d_+@ z;Uf#r!o3)+^EQbM6BJg1aV|vc}c} z-R|vX7_GMeIxG;{_bnYxF>^j-aNI1uHkY&Ym(}95P7-;){;l8= zj*>)<7BB`AtfUIT^}(BCNX3L8P-Uu)4Vqn(R?wiCZPH>y8!5T#xGS6>lrzH}tH|&e z?j=_AyIDVOv@K2`c>+_eu2A?DqkbJJ)%)YUFxdT*C?Vmsj4QajoX(m*XP5IH+EUpD z>-fjr`R=N}#jDJE&%v|Dpt@Wi2#@ypnIE2h_NiHO;i+5OC%4B^Hm0)3C?|7s+omn>h_RVzjCq}|Cokcg(5XZ?`7*OmN&a{oG;J znfTGi)?~|>EFH1Uj2}TD>mgtJfovZ6S`(?1cHa1rl|)%pu`_aD(6-+fIgrKOK4%Np ziije_DShbJ(H&G18##9GpR4m_bGDc*cV>}F4jk>T$PdT9U#;_?fus2OBhOn&c;Q3R za(Lsw=QE7h!ltJ^n2a?8&E{75oaIu2D`RNLSzfK_DcV*UCim8+CtqTUl~KWqzzMZ| zn$$u3L_5wjl}~K(15x+~t;PBLhY^0F?k4|qdpcgbyD56uvCT6#Hln4VnsDCIthge8 z@0XL0zy6ehz-WKY;IdKhaIHTZ%pAV|4xGyx5p1-F;Q)3B-_#eF>RMuIqOhnH(^6y$ zta$F@w!gQ{@~l}j-<#yXZ_T2se|+_eu95U(E1Y$qzDZ3Ow!^ek!X+7_kCTu8O{RL= zpEE?_+FHuIHX%kFRZiA{L5#OB9L^4S!hyiPy15DE69~(#-vZp5t9K*UuN*f;g)&QU zLPHvLwO*axoNS|ciKLAo@hW5p|En#zqYf&iding!cQgIOYu3$_j2H~t}^*dUz}=1XQ@ zdJ}a0E!FcLyAv$W$tKs6bs2*vj6wh4V;<&bb?d*uJEn*!<1PF-0QCL22++5M#%-~- zy_%&kx<%x!m)ME+QUP;25Se5JXA`6=W1?V|#2 zxGyo;w&bv8rG?qvwsbmO!=tt%OX01I@>`Jd+iyV|8@R07n+rJNp9b5SQU_2Y2j$^Px_hCe7QQE`NwspWv3|NULk&i|fs@v*x}fuZ*hrm(w7 zIPHXZlv+-_ufZADAwD`^UcZiOT54(uVF2xwa<101>+9QQF}+>gT*t*6Olsk!jNi4# zDh_O?nKfV5)6?5Naz$>tC8@6h10J05z6G7s;xaYb=yAu+Fhh_T64_Y@n>lS83pgzt zN&hhUt*h$zY&*Ygsp>EXYU?!=V^zlpDQfmk^)@q%I5FU(hZ0l6Jy?ae1kSwHOgdiC zc<|5fu&0`Jvz}efwvO06#dNuU+`C%hTGQpx8bT% zmB*owZ>}`hZ)JQIOymYKg4>Ec((zWxkfjEiqywQT=UfP6I(5n(o`=WV8Ku@IN9^J7 zHrK0VvpHE^UmrCaAKb!|XXE3iAKRNZ@qj)fig2X1jO}`64C2-6Njv*+r{L}A!^40? z&aO)$1Ww6&0Fw}xGlk8B6;<5dNe!^)PGAaCR#D6@2p=mNchgf_C%6%c!-IDiT?(Wo0c;os8&1UheS1gXcu^xz;`{mh)nazmY%bRGtJTT* z#q`)QxPRcsiov5bj3OrvI@Z^2aEBS?L=-WW1)TG5N;v1Sg3PtH%4<7AeW6m&DkyKg zO$@SF7pnAw%+xd!B7JM*h$?4Yz~di(_WJ@f?;2+Tmd)4M>f(A1Zgq;Ivxs`3cr-XT z(Vogypcahek32GFlEtAhyp2c!LP?JtC6f>XUH$w=QdirbGcBS_DZ{%?Yp@dp99b)B zhQ{Gm25ANd3s#-DBtHs;h=@3Uwqega7+%UKBjRjj`fPdz!j1;F;UE4}r^2FVkHY@O zd}bW$Hp~(T6p4$Q&oVmwd)l?mR-_@GG?rTJ*jm15&Gg&+dUG+ojpEXxE!NOP|A6Z!gtz9GqDLQF zYas}Wl$OC41@=J;F~&drGWpo)>?aSc^US|4IO)gH#|AY>=d$G8Y2aeG+Jbdt# zMLbc$MWKJ`VNUt}WfpS^Vn#^~_bGcEY*uPVwWu31{C$DM6h)6T z6M+R`zs2!K9U(tcSTGPjme}ym8+b*UtLg0w{-;m_`}?dB2>M4lq?6r{VR9{5)}7!9 zV+i-aDU7hmAsoe~9r(7(7&|KCqrQ0OPZ|0H2KgyNOSCpfqM;uWt`^=NiWFM)K#=3j z411|VEC9a1B>u6QFhS%tqT4=1QML?of5bxGwe<2##!&Mljh z)nd`3nG7~p!vOk6xP#_J%g93J1j0w|>T=5>y>u-a2sm_zgckQJx zd;gHq`?pfRk~8G?Mo&Ms+sm|#(pvhHv-NH9m2>Ac2|I}%rPa>x z8a}VTfeKxOoxGlYBgQ>kCnYoo0@>D6^>CbeR3GL~YsjIoQ3 zTZ5xB6nQ{m>h(oI0j_uuVD-!tI}}|2wq#zF_}mWW&PrRbu^g1U;M8e4JMXkrMAMO z*s_R00}dzrRIdUQZl#AZ1sW=?(6YEo$rqT)4q=5)5NC5S>kb|<-pldA+2kPH#dN)B z&S%T{U)z{!AJ@SR4*AI)-1zAu4||1-j5Y$W=oV#PlrT?!`0S^BKYT7p`&yzH1t-{p zmtvGSM{S*Ei{2&y*Zh#ui9K}WWo0WdmiqK>JECy zh29V7IeNme-D<8_h_b#FNGgK?w~vxC0=AcVd<71yFLx{&c&kU}GlVH6xsy&C2%YOd zN^ywA5n~_)0yn+7NSMUG5|4RU7rO)O>0%+mTeqC7 zItC9pwmMoF11~FtJ3w?{_-C&nDl^sgulIfh$8XxtR&cmNx@^jQI0$5q=8D%0bNkzg z)leZO1qC;pmez41naS}sJ83(HcXEnT5X`b*xb5j+A*NTW#bVX8>4L`qQZ5)>dpOwo zj_}arn*Zoy>#d5^Rzm=UZ|PgUrUOvk_hIM5mbArUeIAdLzUf| zt0dk;&(G!7N(Z-M%ehJdnf;V6ozS+EoEi_p<*pH~=iaJgDPyU%T(7>&*4NGEdiEW( zAym>Id#aWD_0O%`aqSk7NdiY=$B-@3lt#4CRuiOFWQe~V12kkj))((4t()3U7_~nq z)eWD5ly056VQSTC%GBeyti6p5!WIvgR0EMomOG8@qsFP8(|S3bFH`K3cp>BMdWgvf zzRs5?7jZv-xWPK6u{+3pomX!?dEPt!DPvGiX?bW0Tknh$B!6^e+1%gXP2P0_Hotqy z`EJ{Qjgi*)gaJ~4Ar$p^L*k7L29N_upFmy;k{D;I6tPYp+{}xYGJX|3IbS1?%GLR7 z-7Hq?c{GapgpIrY+3)Ju9^AMaJ$wvGZH;zO9@h|XHt&E43bRC@)~{bB)w=yT$rPZ$ z!PkE8lE7X83a7;$#p1@>8YX-nZZiyICUd(IZXEuM?dOS3n=gwM*sFEQ@ZznEgQ4$! zV)g2LzL;M%7Y*3jtIO#!X=cMsRdRrXW86Di6t66w!}Xsv@)C?wHbNI=oS^Z+|6356 z{`%g}?*8gSKxDg+AT-t57_VuJ&He~jX2F3D1+05unZ@#to*-(S(+JdoD|lDnJJN&s&6v;6ACuQ216t=LY4R=nthYs9)cu;TTfK89ddQ5z{R(q7@Dm^FzJy7kp% zN{9EGqH~sc9M4BZ8r0^MT*XWX;Ta7*I| ze(xd<|Ezb_>77=Z(dy{=BM*>`vC(uob`w~In-y_{ zoWr1b8K6+SEK&DXS)`AX2ueq|Hlk|FMYNe=H2*;i8c$$P*CPB{c#>QE96xR+6e z&nfNyx}KfRKu<2xZ1)Fpb#!s{U@k1Wf?d`B5U!5?qeo%Sg^8Mwxo#m;uyaoqGUxsL z!PoDfKa`ns!KL;ov@GT$B(>pC{Gogu(QbyV`9No5D6wzJ6`~%1xrZ-TnTC6i)Typ2 zyrA({r@r2IYTuPZ%9`X}JJ2XssB2xxjnYKfn=Ae#y z3JeE7eg*!~jdguKUvDA?+?|0h%B*mAj^!Ed67Y+@@M9;v7}F-sZ@2YM!jt2VqgS2N)Td+wBv@YF_S@w`BL>c^kA4OnGQ zo7H0eZ5rWEw95|^YoDQj=x}x{8|7_TB=p$I1fTP8)ZG}OFiBcu#NND{e0=s(3Mj4p zIip4n!awShy>bpVLNd^-3ThN=V7M$a*v8n&OXisnmWwE#1TqbfcGnsujx@5KC1y^m zPzDoi{|wQ?DeYjKhA`3kl8>!SLRj4|yfWFgpzC6Y(bvzDmZ|+YSC4U&-&I2HbGZ=x zQ3K1Z2pbV^rl(w*fp5x<(B-g8fy};w>9+et66-TH?pu<<>lu#)TdYoJ-{*f`G~cEO z*0OBCV>~-vX~sY4r!UP!Pd~OIbHl^v&SK*%HV6{Oi_{oPGB495nU^^=W<+Skgy_nu z7I`PAqLS4^iHNo`oT43?P4(oZYO2&CGOS{(7S$?V&hgdw4*2Ekdb+#-?ZsTiG6@I% zWHhVMVeeOpIS})uzlM>QW586gs2rmSHvS@iFqg5eX9_ZJUiy$QZ@hv`77_;5VHj^2 z06Z2}r;Lkua1JfV#M>#$=?vkh1ycKI9fO&9@an1M2i9fqf<{@FNqN+FUxP(+a!Hk)-ph8JgeyKgQ7ix6nE&5l#q;T9x&*t!#O<&icV{{j zJ(o_~_Qj5&rs86bW!{2iv`9rgc$lo)y|X5Qbd8kCUS5|GWsH?o!P%m{4Ex=~wH04v z-}P?cMqqcGidwF>OA#)QuK4n8x|p?m>A1JkS&}ThrdtlzJYR0}%l(@;mR}yN;ph>z zi)uJnD1^6*U_z*rjO+OaKgjlbm$N~(U_>*awU>Sd{ejg8p)1bs_IA@#cj1)PQa}(; zjK&zqOc`G#+G!|1S9Sm)7hciv0*h&$;)Iez6 z3G7>Rfra=M2SgnRE`@h8O7A-!W&2BGx3_i6ms0unQf;-q%`47RN z>OXqqYLC1CA@?o2b5(UBv6dO*e-q3hzA2eQRE|)oqzCqh5v!s?h@iY&ZH_L|r}NfZJ#W4) zrl(Q4t40CKKb)al*AP{FU);zIrle6zu|=jk0@ecoT^=nWMoKziDf3u-v?3O}M=Da( z#(OCuC)k?(3M8fm2jCORIWbIDiH7lZ{??|`N4x?NXE&Qwlbo)#2NXyh2mQ*fgfSLe+a(6;6L;t|Z_E)AL8@gK!JMhh6Z_bg^Uizrd#|5o>q&+vu%03stOr+?hvN(fDu1+@B6Q~MHZ%~K9BtrO zEi=?r(SE$2QTop*LwvegP8X-m_4(>DIbBrmD==6)_V3{+pMhurM>q0TM0qHMqvM)z zxb&FlHiMV*+q225PY-(j+p|v3+n+Ot?2K7|V#zuyYN~j=k0LjDJKU8oF_noD6#gc% z4oD7O%(%^aTSuDB8zdHrd2#Dv=9CqZy5p~}*u%Iv(euZUV+OSnQK=ZqU4+34%v7NV z|N4XP!N2xWV0jN7171r-H$4RkBZXk19uii(li}Ikg8na0WKzE^Vg_hk$AY)FGp?-k zY_XWHuA9v)IePJAuDXBHN3qe-0>+@rGH&p~GA#C=LAWg9zK@h1zyHCD{ZHfiquX^)Sc`Rs|>fAaiSo`3_(M7f{*co<@H2(w z)GHyu6Di|L*UW(Rb~6mcK3J^vC8ml<%wYjh*n=Cc;A+O-IlZ3Em**>pd}pArr#~I9 z%gR6aT`lT?T~^Vf$Dr53x`?zM)3&@FT!5FiyqRj(;t+)Wk~&Z)&AgFh3O@*C#bb0+ z^>bRK#Aq3E?bbte!cJHdBV| zynVpX7nzJ`8BR`eWvhTe;{A-L`g=c6xSmZB9($a257+K(zww0i=`nwpcD-Gc_hZ2({DssZ$ zZLqcw@Da~`+5Z9H@Ao`MtbFO}5J%OT;&yM};3R8l&B4};X6!~U%=v9EG+!Z|jRbGxPE z7>{~9&~*0%x+kl9D95U8#{P*E>rh^6B5}vo8sl8pM+|lp+hm<2rE@oLf1AAMjMdxU zyihS~tQ^rCN9Mg85Qd5dg2hJ~ya~58ST7yO1^MDqt|xcx__UP05HUwqjTbQ<_wsCZ zIbY5jkqrH+(NRZ7wQtNfKu6tw%CVJBh^Tp=8P;MXSyBWc^Zu8~yWhHM$1k16wLfPd zWEePS+yky~7D8Vfa#b~o9pMfJ^DskL#GbfhXvfj>pe`O>@1r;tG~z#sRwbD%5o}_8 z+kCkN*RRK|)rTTJtYP5ch;}S!Yz?%0p~qGu?s&u>D=cZdyk#kX>aRil|JRcGKVlL) zDY5?U5!xBeoe6v34<*A2_tGn0Fw0mA@LxJ><_k=A!NXUQ5@UNKFneP!!u^a$`7WoR zHGj=l&B^&}F;CSMpBR4e;kIDQ&A*>Ul20K1Z#5)8E56P+wvS)rnc~Hi+dta_D`P8ZT%Z?E?3D z{nz=;+39S33NGvE{C3%#-K^KsGl&TvN5u=P8Nt~fOTnWxj6uO2i`ov5asqo#5!kzj z<&?GBpFSk5_NOgf2O5;+q3_-bqNPwyS2WqZoz#GM31p_Kk%;txLq)rr?L7E7UefWD z+)wh{AtztYPMfdm+3a$foI>4Ur!}gS-HAVvUKfC%$ICdnFD`fl(MBD-lE0y4)$eEguEsR@ytvR$fB6gC~AGvzH87 zVX3p_$*eh_Es?|ZF{yWg)7qh0I8410OFp)-GLDP5)kX`#9DJBvtXY}Kkv&>%gd@~g z0oJN>Ly^sfa&Sy}%~qRWGc}lZe38jIy_zsesH+2?g7-7-Dn7iJ%jxNDv$;0}^_NVi-Lu~U=m)>(xg~K-xzy&t zwpvc429sAaZ5(f9=9ASlymB=hMr} z)iP>}f8x$O|7v#qE>!8vixw~juNq-iA`%}*IC4}lB%3U8t9Qp4<(3#@wDbmEIH;iw z(S`T+s^c9D;}QzqN*sbyGU_Wu{s-XV|co(V7fC9n(WPM zF?N)o2M?H;aYFm1QcIib+12@UIY-{SMGuGYNhi(x8`#yL9yn5uq>Ay9}t&^Z)uL_4$8GOe$7PDH2XfFMB1qu1iAM+f7js zb$j+I5Sb*P)DtYS+AXjN<=94eK_hB=`nK9!oUcwBwrh%N7Yw5Ue#wU;uAiYA#4n1U zKL+a=)^@;(F@jC6Dn`f8IK|IDOg{bbQwqGh{W)no4RHc=*ux%Wlp~}kga1_1;BYHt z)OB0+*AtjRUEmyfJd_a!IK_&Je;l#&ldPy>ukgINS}kq|CdG=pUWJHNyQh%+<9%X} zH+uBQBVDN?JZ|i_#TIsK&vWdj!p_BA9b)W}m$bFPo>jKspH{ZY(Pqm0;(>TK5SkhP zc7?Y_|-DgfsP zBKxT)J&~fFC{$ZucYAG$c=+R2z;BD`>HKoOZl)KT+hGvx5k; zJSMd!Qc`V+ftbr64Voz|zJBs!(l?(9Vp0vx9q0+=+-u8ML`nr-qOBH_#+x}9;4=`I zBDs(b^AVio(1=RQuXrz`j73v^07SszV<8e)|iWp zmof5h23A9ZZ-&qW{sqnv6|pSUN zr;nmXk0Cz>u4x2KCDF`*$)f^Z;DY?v+uwXNQXf?@i$;o>UaE}o(MXjfhP94+jqG&1 ziG$~NLy0M$TscH2Vy+Yc7*Bp&jT~^b>$7=tww|4wU#zyMXT1V#cWC8FuwvBTK=`pE zVy={n>#sPofpr3x3{MO~7KY3pFZ@FAFc-;_tQl&b$Z40k53%gwq!?=!r;IwrC^++9s% z=_0qmTXc^eg^6@AVhqB$fEmYDhCUKhCO!S`nIAB}^VnJQEmKd^$lTw~!4Qs-$fWuj z5KFW!RNsMFT)d-k;6U9Q)064-`D_iR*qp2ueLScq9y$31W=A>W<>!l==HOIC-u7hIS1MZ_JVtbWSpV{uRCh^s8ezZ_p?XyhXPlehG=h{ z$W%cYLn%Y3KX-IBTfyr7d3}2|o4_X4tL5|t-lgUAayAK=F8+D7USXoNm$-s^dSpfa zvCsWmvwrO3&t`KuzdjFDedhzHQ)2F}qNnWJN?H4?Hd|{B)-dwSwO}qZ^^CXZd2M}_ zxw3NC%U8bl?l)lOn@a?t0=#Cg2@G2t6?fpP)@v^5@8)p+*idAWHiV)xCv3JAbB~G_ zUeqWP+5I^E&((C+@*}L9$L+YbSz|hf6tPSu0w`v7LcX^`$~&KV(-y zKDPp2V4ulh@hwnQRrJDC9t$A-Ung{Np)J9m3 zvI}wJs22EFm2rn?6E%iWX6*pr|LbJycw*$`99yQzJ860yEW07 zgM-_lsymF%97{g7vI!m`G~(;TsUa<2a1Wn3H&**>^4w#k^a?}IvuR{boKp~{$pEO) zP#jwjkJ07a-&vX8IWSirO6_}|5_#N|BHF6bPG`K75e(SgE8YBTwQjzx78jw$Rqt~S zj;g11mHM3Hhm4^*Yk34`!9~k5r5MpAqqYBf?^khrHjjK2#}Z|%Vi3`F4CWjbrnoY^ z3btFYg;>=%lSW#hWik7fFE9z$ND--1yW+`OJoS;GrT)3v%&yLxi`n{n43zp9PGxsw zkKt4X(#N1?PU+CGWC(bJNi^`HY#{;jeq-#6DNX$z2tzEkGliJM^-Nv7u?oOYq0AKh z2Uj4MDCZJ(uKBW9om^l7vTyG2UdGi$cn7a|FBL}K57sCYe`L57u)s!l29z|>8jpdEz4seXV%;cP{ zMyxt+c~5IM*z$wBxtS;D@!(=cS?eebCfBPkv-LI3_FP@fmPtjAj-W)-OPYrLQ{PwH z`%BA@)%p)RcEssSgi;PSi=?UyYjs71%%4B_%KY<(0%hj#GFgpvOy)(KR*RY~#Nj>$ zXJ`j1n7+7FufD`KQwW&l;c#tuCF9Qf3^U%<1ZEqa$L$V(*D_@dP`2Rd$JS?UOoYYA z;9CP>8V;MhH#Rt8H#CqF2uuRjSRDTd zKrnuM{;zNp^|o0|Z&x?hDf5i?GNL5X`D}g)7Hd79HJj_%*Xiw~1b;D;$`9DGVzPbwin{X?Z3PpN|EDuMf%pCNnH|q}oavXJ)-Q zpEmPv^JSLhvMC>w8y;8h4s0mZ)bR$SmXaMr4<2xAMUye<9YacS;fO$Ps-H?*^Sw!P zzlAqDX^yjc z4wZ-ZWWl$!imR~c=fLnZ+Dk9FL?s2&EVU~1UIT%-@i7)-B{%z6+J78wMbu$0?JK@JbMHOS^Ol!EfaWhQFCmro*x_Zu6^ z8fuS`FHWlX$$1O;bag&kH;dJJKFt(@`ppk}l7INexqk&{0OT!t$QY`!!s%$X#So6O zT(%7z3&PTO?|o4JcV7EL7Stbn4(*f_R(FFf3}J&6V^wd<;6s1&@GT;Ey=; z>ySFREM9&8%jDIIpHgUw?aw*S7Xnn}BcmCJ0m1K;rXHGNyqU7H>HxNjFEce=2G@-G zs&`_!OAeGvD*u5OG=4?h%+_bK+qPA32!OnFrW`iEuM+!ru&Z}mW2QV_z!(%=wW*!g(2?m!5r!DC3B?UMRHA*k=ShfqgDe(%t+--#W~X6W{Pl(2U_d{nJF(= z@D>xp?nH@~4s-E(#svX$ww|5AztfyF81wD{OI|P9^-ucgtFF=0kDaQDTxP^7q8O@4 zA`4rhp1+>Fe*U1w&tG?H-2R+YV@2Q%wSLdOvqWng8GD?7wzsjeT=PK7ejv23(q=;K zgi&Hxzhi$(Pt@OFVzf2T^JYE!7Pl7{^gCtZ+7eUjpXk1^ZE?R-^sr-Vs#Q_HlhVkq ziX=5A?m5n6l)dQI&nV|9>lCrZS*!$gMOQSzPBK+vm@V2utdvGE%^Ww{mX2@x0#gbp z>4XU)Z9Kf)>*-gc?_@%z+1qA)dvlp=@vmVi{qrghU+*8ERjWYg7`$0y@ePacNHuRK zl6%kyX=nCR&`bEKq?Zs$rl>_YQtbgHDal$?!>Wj+{$2)^Y^Yr0%j@?VL8PK55Yjs7 zwwG%PP*Ct*#v85P!JmA;`SNAeV7L6Dpn|g}jDHFAnSby#ia5I(e3={phhDlG84W=GscO+#-RYAzaHaGw6Eb}Y(b>z%S=tkNrkC@ zCHh|N<#fJG^$_BHjHhYo&)L_n>)CDd9hNblUZ!bx?zd7a73?3|zOJjcrtGv_@RVcg zp*A`iNCkC3Xclm*d!2$Au;BN<`hKg=e3kcG9ifbC(*X}*`;xF63`#|;;Ak&{Rnh^& z8puoaK}d$vR?_Eu9nME20D|#W#_8PNBcrs=?Yy~KEpDg16mZd=Yq-DuiPujQ4L}43 zk3O~@bIan|Dr?8VEa~yaX39D*{|Hb6|0po0ToLK4;Y@T`Dxe$K@vC@6)WC2rz08oJ zf@3X7=+Y?Emzbox!SXpGG*tl!#>*L}I^TK7XXmr^<#gFx&#!A$bM~jZc{ur_RC1yP zjJ(x}Qyp=&BkzlA(Q%nBB(8k@Y0~n~-s$~opNjTVKJBCpx7I7?f)OQ}8}O_jCp{c* z>`+@C3hYP8rX@)PT@(Fr+3iE_cqyaoeoA@Tpdc5``OO9n|1{}k*B^lQPj+8FyL13P zde+F**-{oJkPVW-5(MIfFtIFy+_qyR*x!H2=eQh%zs7@yF&t;rtfEzb2;)7JS?}!u za3C`^GRrhpq65U=>D6T~hYaUEN=+?IF@rNcU7W5O(6Z_6s<~|7O8yGf7`9!*F#AVZ zo@l;%cy_uq5P575n&F^YAAZ6zq8Sc|6{z1H*b@lYpd=F>8leNHnsN~(r1ox4j5l#G zT}~)5WjU2ad{ZO0YhQcdBWm@(oL+3^m(Av8J-wZMdkifKj;4+l#UhWbMb5a$BUNov zjY2o8EDnA3!Z%`VOW~jqGsH5EK)>T={R;Km&| z4TtwKB3=77zqnqlo3qvW%k+9Hd*fry!}-TsKYg?{&Ws*?Y_(N7f_C845rmqBjqpOc z#}_XHWCyPtlOKpfOlhU5?(#?2zCf`aqU#YR$D1h|93QB`_%c%%X-pv=fD!aS#z(xG zaVC%MmHB#h+I(HlcB74}PAui0_^!%)7!73n=rJ@*XdXdpBTWjT*D~x5aB=5gzOwTw zUDNwm$F|PGh0RYmjEzi;E#6FA-N^-}9c*wAnC4)Er67)4%RSTV zIFaB-T2lqirMHR01Jgias(~NLek4)G`1*U5L2-doA5TXFoaFUtF>k)WAN_0fZFL(f z=+z*IORMAs+UFnBP>|X|xCAT6cGd@y$6zO|i}==f%P;f;@E{(D%jnk2S4rJ^nS)9K z0|Q~HGadmWqm~#~hkhd3Kv|f&wOks?OttND@PRauzGcj_PvD`C438W9%j@~3`LYH> z5=Em`=_dS>D$f9w&`m^=k8QK06}G%InNqChFDI?X*>CS_f6h6dMuLHguD+_iLyi~lg*~$+$f&+c;Jq1AzW)Nr;FRo`A{k~nETwVq1Hc}O6k-{ zg70^iFC>wABc2~5pY#21TqGl;V} z+}RU|Oa^fh`WAI}BmfZjkY=zVHZ3FLk46|Ey95p@y{%!2~5hz||wsS9d_Bet| zBl=Cb63YgvEV%sq(QmEyp+WP2NASuD4Q9GSU_j@RGG{HV5n%QZ10S3TPqZ{}d!&QM}1wiIGQ5oc_t z_JZ^%C|=HZM?vq^@pOe9bIti`ae1eQ#{xMC4!^#`JTwj(J$>XpGc&#M7Ul?I^%#iu z;$mhNulL>Sq|@B~oZ*sT#^|6q4fZzK?%zwmyRih) z`T!y1KKQKoYZV^VU<+k~;sZpgoy1foOtdf`5LuU$L*c|nspcuC`^#!Q-yk~S?J^!{ zE2)(3lJ)A&ux_n1l00&CwAO^Z^O&x27R&L4N$Texe82p;2hWoA%cUer2>viaj&KM@ zDP9$5Fxba%i^6azwG)`6fda40AWOiZ$!WNdzm2+H&QH##vqiIR;0^lv6>j=CN$lYK zpEijdKYHZ)E-ek){JBB`Xp%^4<#X6OgPmC-nWe&bZ4-$828L18RQX^lWoX_5y~3Tu zt_0Ge!aPv-cEP@5Y$Oz2bWU+L$EE69Y1>H z9|9q4l;Wn?fd|%&x3s2ZAA`65nY{n+!^faC`1h?I|IK|2G%?P#)vJes7Vjpk`V1m(!`TF=>zHZwe$H-ypV z3ru?37KiQ)H@iSP;oXvTe})||=WlIbug_PP(@k^Q{JC1rHVG{*I+hYuFKOuXZ)aC? zyVGj(zPJDUk$)MSqB3ePu>>pA49riDk3D0Ocjd5@h?dHP79F3KfuA@x5tGmU?IqDB zh6no!__TbPeUoev%ui{s*QSt93(tO(il6Gn-khwiubYe6ViAoE1zW77#KB>f+w6EL z8QUERAGwBVEkmcdoulFKXJi7mJQEy${^NI>OjFzmFXf_a-Dp^T20Sj-%PWkcF>@D2PDD^j(PVzcCPga`-bn`kk(ocr9>Yx47 zhQjfqj~xoLwtd;xYDyFYd6EIGB^6ZRw~nFA~iQSx4+wHHmrlZSZlqco+ZI=jBvY``~e7R`EfHd_xw!GYdp zNGpdsy}EPWRd0ipzt7Ag(y}|Ut(qq0$gKhd$8m=gNdg;u6c-dGWcwM`qyk35+ z7~~H`9y?~Vj7Q$7mc*(SuSmuaPC34-4*?*C*CLq*#DK38#E7rS#IyOAo*k^#@Zg`=jvi~?QH_L-+)-67PULVf0Pw0%MQog2%``mh zLk%g36UuV0yVzi_ky40dS`qRl+{_@4O#$MKCoz>~Bq;!Cl)x_>dRUa4=wY z!SGhp^Jq6kioV?u4n!skDr$lhl|B~EUYO%}HzNaRgoU5Y=FNKcEhba1hB97IZFxA~ zU6uGSgz@;%W6!NRdLsYT$I07nBL9`w*zh(tk*_Tg(i-D~+vs)@ zKu}w8BEPqrvT5Ayb~+TA>O!Kjr4-d7m*0K(FJ%<%3LbMrq}Ads;w<>;&btrv9JarY zp8NN(pRwL;!P!=)U>U~_iJg<7%C}6fgd2RR%dGW_caz`KeGk89t+gYZSz$cFb|imu zTJoA>KG9x=A(IChnS6Pvu$a;b18+qoyPiDCN^L}E(9Xudu+g0sGmQ5f)`n`5f`pqXz5Px@;gEUrskYR=ho9=zVk2!D$~OijJOtY-JYKMWkIVBNeh=lwsk$ zdp&9C^?uZIUw4|^{+!8CGpi6?;vq|BEisDLr0WW{F+6WuFo54lOpzC`_7klH+YW~{ z;B2@37H}oU$As>tXBX4uX>;0K&KA9}xp0Ry?5}^qyXtNEGPAr0!NbR%{I)u3lcMmi zSi+Df(iSqhKl{V?v!8i=8d*OZEVSkjN?WhLSQ7Mlt$LI?alEa=i4+2fN#J)kfg4av z^ykf3^3URlbJhr?4kYk%% z4Syg|PoW81BS)l2UP!9<@!yl*x;BoF-Z1WO*+yeU3}uq~ye8Dap-^F2JvxSXGc^cq z1DXBq4T|)|)DlW_lXt}vJ=mx<>QMLu2Lt}!P0W&c-~>-cnKIO6<)8JgX81rbi|El~ z$X_eX!?}9v2zs{$yu?_OYn7ffF-8hXx%HvhL5-!*HJTx#EgTFW?aNC6StyNTSxy)A zBi{wMd}R3S-=>S%`nLIUd$Ibqxrj1UTRM{W?ELr7tfzwqcO*yBk8LfPVKH_E7sMLu zaOWjWR7iC4DXC-a&zXd=qp}5odMNLL^)wD%6jiC;*xNxF!^vQ?@x8<({};#J9VJ=$ zNKSk3<2Hs{7{baYZg!>%dpOEnb+2IRCYC?)NYk+hxvg#Fli;UmOnJs5bD3oD$B&a& zT@Cl6SHpdktKkY*n_^rG+KmL5mWl|Y&x)k)@pkedX0fV3_SAyXVbe+>Svq0t0_yXz)m2vt^=FGiO)ZI0jM%rQ3@ zx@+kpxG`ca)xxogykpT`26+UBm{WXtDbH89wxQO!N}U>aT~~==gwZu?{OE%|SwoY4#1r8FJwP`uhOy+E#uh!H}**Mh~w2A@+hMvn2j&qOJi#?c(`Q^^}^(;g017|+UNV9BC7KhWDlj-Iv=GgRhT%+dcpX!j3c6>kK zBC^dzf#@-WjEc#SClpA=6&;;j`ZW+}hN^24G4oWf}?e9_%afx>Li$p}TqwM$x{? zP+_)P+(2eBE7VdrX{LG|Mwiq1GSy;)_c5|byKjr>>HKoOZZ_v|sEe3DFWOLvj>5gn zmjmgWhm-3mX<;jox1fA>#(&Bf)X_>EF46ey}|@w4<`oh=?T>Iey@d!de^#ev0DFi6D4AI+-|dF z+l#uBs-8rOgdbhMD2)Ilz(1FcV7-CqI6O`1*Xv(=NA~qE1&%CiUmC^~@8(||x`WnO zQAfYxO$>wn4mHLH5|h)Ya>B85ehWZMPr=~u$Jt#t~tVl@62s`oV|7|JB1Z+(yK%ouW$l!=#p2$z(_hci=E-yqiHp{2{Qk zKwt{UP|Aryz_(sI?LNIjcs<9_&=dvDeJSO-Ia{qxx9j5Lwg&mfylXVmA7VU15I9ouJ+S_E~jf`t1b=ANM^Q-gf7*udEyC`g+^LrBAV}5eu94tQao<+@R z&{#o5J41rX7j`WsHT(I?sAfM;2GWSGz<rJ(gp7jMI{>QsG`oprN`Vqs#$fA~7Yf zRT!PnaJZXMHaA9#MOV$uy!tksU4P#;#x95003`(XbXu4AZzO zk|v9(_704%g4fn4P8~!h@X4jrmTOjmXuZFS!Kt|nq%~h?v^zs#yR}xm3E3ox9i0D& zin;5X#q7GN@Nd;Oc$Qgn8FjPE61{e(wry!Chv?OlJ_a{g=^zY7@NDFL$Gf-u~g5w6}lc#Gw|c zHz;#V8o~f8Dij2#1=CEyZt~pK&1D}?X5Xwaq^OsyCdBSh_PJxik_T#C%7*k_uBQ;3 zUN?)y#)hV>I?x`eWB1ITwiXmFJ@VL;5gj7@xj0Pk95TBk4pW;_ zmYlndh@=)2exYTEUxPgq7-n@P#^^cV+L0Jmg!CMt3gdZ?GTw9z?ER?tKhxFfw&gw# z$Ha?~+PNpUrT3av!9eK9RnQm_svtZ%;)|#{r&aOy_mdA@pa1XgI}QAh?DKDlUWIKT z|L>bDAgCl#P>(uecMbHmP#`JfN{r2t!$-G0SCtz&;<1lX6O&Mcv+8O&zilqUv77QS zrF)#^W6D7K$kh|xRbM@=tq~4HA-8EJQsJL*G|(jEHj}jyx@DbnEhJ~9=w8D;3^p(h zfg-u`Vr>*cPq4|@b%Fb)@h4J9(8r5)vp8KLP^DFQJ9*sby%C{m|N_$T$tIN__kr@c8{A3HoXTp zboNMDO?%}KYCt?@{xfXl=Z}+5zdb1PX9qL1{W+%0n0?_mLEfcim8=aRnifG73%AhA z%u+)sRfH&!XDdB{vCOR06UJ)d@ z<-4iPW^_(Z9dFUIwlfBCmrb=OHRXym{dHhsoc+JSf$3XOO1-IWg3aVXF$~bMxiVwz1Dv%`;FN9d4?1mDu-N7Xq4s{p(~SRv3Hf3* zy8s6@qkA{D#}clqd&t`w#x0&R*(BhtJ`PV;1a%e6Pr=qOZ0aFur^jhtb%053B>5@@ zn1u9-oO9|TIuKqfiW4>kecf<3!=tIgIag0+v|Yfoh!tuB{QVYfym&?9ZR5Sq$sR9P zvvmccZW4K*r)uH#&VO4SFVVsqKETNHNSq2Ex)5w^JA7>{GLr>gfCRqM3y)dGZ5G-z zm%|7`JaoAvA}ss`e@J8lEa8p(Gzq7x=IeA` zT`jMcUuQqs8ur0m%872>GwmsOG3cdWm62;P_{4sMD^a}=t_=QIsKiOA{5S8TR=oW= zLGlLbY7raXp*mMqN^T3zwTFAzA3xiZ7}Hv=5tfJQ0be|?SAU$0jL}ZPd#L=I71+E0 zKlq8q?A%Kz;j3@e$sa5}23H-TT;EV5Jus4eD|z=R$g|V$-bd~9yQGernp!U1p?6If ze=H2dU{84nr<((BS7dB1r@ic2GS#!t>**zqot{)TvzVdA8yT->{y=ime4U+E=d=0c zbhVBe=wO?r6xco4UF~%L(UPM#-eO}=SVO|tn$sG>e~o}=dHVYD$c1})>2xur;htoz z4MpZvw~L7r4!?RSvSK1IHZ&yb$cv&?Fr2YcF8BF8H}BO|Oi%G5#x*XtXqFet z>bALTzBd=Ms8aseOM$GHcVxRNV)r;{tO<9Kk^9Ta1UTW?)!U|L1u}YMIm|CShxtX0 z!z^fRC1>0rl54@0j8>!|D{^l$!&K!N({HZKX#QGFh^nm{>FzrIhSxJnr#Ys~Et3EF zbhVl-&aRhRQzaM8Za-YXwjOhd5jb!4k$(WV+o!>3Bd#ok&YS8`*SpB2+M5`!)C9D>>$ zJmcpd+{Ct9qfS$%Yfy13tkcCMYEG#nKGtIq1@CQWnB6(>zPSWr>w%T~GW#Al$Jt8; zF@?xPEB}#HI;~EcHZ2oDEN|U(xUIu}0`AWuuhkN+eL26az_6~T$IYro#lFLll<@Z5 z>*;+Cc11N$KW`!&2%h554J*AW7h??PFuUszXTwjN=~Hd=HVqe(ZUCx zD-(r>8`|2|QzqMZz%6yVGW+Hp{5_4R*^|T4^Ab5sDD?PmLB531=*ZD4tWm!{% zfB!Oh*Kx(SZD|jXb?Lgc)kY{s>5T+KD%+9aA~Q_ECi3VE20$=8p;5p|f)K#e_7K-M z3^ENv*gPEu#>ou?!0YOG1tIUVNPo)koKn6nx~J9C#l7d00_lg=GA)=-YJgC~5GHC; zvmO9s)W?1~X&vhyKDG-Y^&w?hDMCG3>m<1;v9&QAteh%=dlBqm-$5i#UNm_|CIox~ z=_bz>;BsEAX6v4X#3LVfk9C_9JA;TgOou(}sZhe};n?!^%zK7(GRu`b@;FymsRKi2 z;qzc>+mdKJ%NkgE`GN5$!ACAmGE{(nc9ll$z~2t?OAoTY%k|}d$^2(b4>0Xluu}HoL~x;KD3b)J?M0b z{LkR5DNwsG6dQm!l*Ei0Jh9_^l~1u;a65`Y-JO@xZAB{Fa_t+Knb zeUY(YL<~_(O^6wQ#1Ny$MPJURXH|0@Z@4aDU){sn(vMARRv>f?of?+2ptXu(XP|-C z2HKi8nQ_+28wV!fADVzFaMO1>mi>T*!EO7qG4I+~uLuKyvP59NLfu z{9gv^nY3o`fI7?qC-}d1AP*9(hG>zxT+*7?hA^v*Du{U;?q+`?K2Ks_$&o7@K`52( z;oEFW0CqtBpj>;~f@@4?)qJ{KY(L}_Wd!p$g>vVM-BaI9v-jfz3)UZba2#knSl3$A zl!asesUD9vUXRC{XTv=niqw`HB?Wz${HO4tRDxpG=ux_+-AxTnM-1uwgRs87iysMo z&h-}k9eJuf#^#QPbk=NfR-HGqt7)76-Kwj@Q}Hf`Jj5{Xopn#k%eHldYaQB13mHr^ zDJ)IE%R~@s?OEPX@=I57U21}K>omOg1`Krz!1$wdV{0YBaF#|lX zn1X<)5$V&7u9*yH6BEhlUDyafB_J}j4{ccJ$4aU=F}z%Ay0@9(2CN)P0#9lzi-pbh ztd`d7o1BL08Bvw?hw?7rjlaBowA}M>-m5#_C(b(uOOM>QmXrh-vBcCAC+)DGAO|J( z^G8>)-K<#}CQsLf6R90!Ekq9B5?;kJG$Y|A@<@0GblMXdn?sZ>SF5%u`k)>#2ps-T z?N$GP1-b@(JwG`QBWiE&CA8W-;Vr7g!DA%n4?W>y$ZB&z{F)IC!Vle*q$aA z@8xhg?6}#T&K50Q_LrO0>R@KqJ>n-eyTQ_jcAB~50Voe`fsE03&@fM(njQY#%~QYp zJtI#IA9=z+b(zb$scK6&<&QJ(AMUHC#pbU5Oh{(N+7sAMU@1g(fhbu?zWspGV|OL* zX-@ATxV|pux4rE2W6d6U=lR%4s$i{=yT(*=_1_`8riFM8=V(KK%!KKE9rujW0|&4- z2sM?{k7dB)#M%Ec`0U{x_ND{#1V-Vrc#9S20<>>#JH~VWslDR+{8e=^yF6YkZ_WZ# zt@5-A?kVRx#<}gvf%K89tzRwDw6?s)HU|-ynAj84Jc8CC$fyJdr z;8%jdFWADcfgNo9a3#i4Q<6;DAlEGk->hNL^}2#5o!_Eo_H)#SHZ^?2;G_HdOqYVT zNk?@@I;5ZL<^1Lv-q3aYS&~^NZ-qm&U+} zuZfjb_)u5-MXkYJh7(HzSUIk|SWbz+&8k|S@nE`LW>TFt_R^OY;i)P#K zHLUsUsHW~|mk(bz)_j7c$B=!pO!>oi2$QOGt&n9P4`AoDSM+(EQ}n^E6vYIU-Cz*7 zm&9@l;b1v64)-!R9yAEA<4Nqtt@nf)Ov(Mw;RO-@g;z7O1k?{oKRCn1S(ty?2_PQ! zxl26jp7XXkyf;96xcZ^ZFldqRO)(QSLZ>oaQ=3V;`|@bgc1`sm?Ao6bJV=I%I})Y` zj2xq+GDUfig1zjITjvUlrJjhGP+be#i)DAhg>P?XJRA>K)3dYN>f8D3dL3_p-V*?R zyXI&2u(#FY5+Ly50~}hF84o4|HHL5SGPQHWS=RXN+sVt0<>BqyPLW?GSsqxe88O~0 zJeIbl7OEg!OSqR%la&xmNYZv+=P0r#FXmNqid8OY$o@<%crk}j;uy2;$$7JyPuJD? z^0?_Gp7tkd$)BKi&-lshaJc#y+-XC#-$q3tJY}RsHO`}3+NIM%))tMRJ7!M>5?c_f z%30!ID+O42U5U}GvP5hmBkBH7m3T4Z2Z6rl1#MQ<6?hb_^aXGpOnN>gjX zg*U%1H4a`gNehl0hP%nih7BmTCo_i5AuZC8OUd>fJiLRR)O||fF%+P(dq0{L{M8@< z+gY=9_#GWh-0`d6-c0$(dvG{0T>sD(-HM=-%V1#1?&juu^{klU?}9Q7N@F#3`?$13 zABPbsOTc6GHZk0NIaJ8FjnoM_p~T5B$B$r7@+lR+Sl0k!LdrML^>Psn|TjPN$bt&M}|?N5q(<(__$jn$&4oxnfSuKTAMZdD*P1)pQ1?AO+lvm-WbMe!tbMlGFxH;;r{u z!uq*v=N7g%ewWbdro|cxcnCn|HmO> zNj9%YFnQp`yX;F8d}D(R8=O803}0_&gIIjSoh-i0XpP%Us6c3=ZTZXbYDTI0*#IKf z`0`il%h`3%tM<6e=I)vIl)p5yd9c_hn$d!&TP|_6{LlmI~!Hg_(l5p$U^|XrP{lxf`M%QSzm{sT1Y<*t!fHJ#{ z<*4BhJf?SgLymPf6zM-j5)8x>J#qspKx{z%f&`wJ0ET-Hr!*2&<{!NrnWK=KD44)= zRN&M;G?&=6?990;IBC_}OsJQFSz(oCR%K3UcmiXcB}lLZeu5b2?#@7~$E*3N4ear1 zh7^Z4U%mu`&Y1^NAZzYj$hMw#{$nP)Nxa1mUJj$w?*d2Lf^{C`G72qkB8GndX7Wcj zkmVv;|FK~pi($*R(@)ZJtWd#9Hi(9s*%!&$lb7N&gqMPDRo{-p(0DE5u5Ty#*q*9c z)IIDcj+cX_$KXIS<#(qr0=CG)R>E*NroeCi*KG)U`@he!F!>0Fm&`#Kp|GZ)LY8R= z^ENPy3X}tvc`q>53nt}+t6FHM7wkT6i$jdGqgJZlgfcq+`K%=rKCR}+P$iXH zR<=m6Eg9y9%el!w z<6I0-K93HuJLGL`=$@eR!O~;UVu(Hi(l*&PJ|KrRyxSRubT?3Wt(CH(V{$?QQDMEt zu$|%c!X4}lhv`dxsF;-jY5>mLF(zt*#J@S+m#^PVK74)_gYap8P84hjgD8)8AePwHM0$y( zowY37#Qx|#zR0M@N+uM}SNi6$XZ&OY4dAfG?+&B=JNS9a>)E1b{R%mu52ur_PR*u1 zraachxgqpu$>! z2@}~B6h~lRsmz2>oN-hphUL7DS3K!~IDKPClAsDWvp22&nXVSI-rSzQm9(Pe(gwQc zwQJR~dzggc1&fTqiorJ^uwoF*P%K~6REIQx2_v>G4xIu;W5!V9BwPfmEqZUZ2z7R_ zhv5OdVI$^>j5Qj_7Gscdr{yR@4|YHUwl%a|31`qfmu%~mb^`-(BQHKurh;Aob`QU= z;B7Kt`7tqV2O9SB@2G~gKPQkL4bjAF??IXoqjbUQV{bEgdNz>T^rgls6XFg$OzOOB z%C|c;!m3tm{;s{HpSlpaF|OOy4xw4hUq_QvY_ETz@eR6?4%9sEB3457z!rw zb7tH>f1JGU8u8tRp!capd@xgzfj8-vG?YRFYpty=VqwEw6tS_M(3n%pSj*n%qC|Qn zuO1B;9RJ~wY3>#E6x(yxC(GmMbVH@FP)5`{t^CL_e3Yas>j@vdB{nh~hCxOv?8$*w zEq7S%-Q<@pU*m?Ezohatu!^A^HpQ*OnroD>V06lXJoa{zN6NRks^Q6ub_hru1{7v1 z$kx=nTzf^MG{aHH`DEVQoKCC7>|{BIw<>U*pB7cdy@_pYZV6PGVEvJQ3zVe6r+^Cd zG;4+>NEuq>cu(N(?@=hLr7?qWTs$GV7Qz8Gq{1w zScQ{tEdMB`_D6li3mWBzV8|c81E9NJH7B>#Ni#qFHl5F_)7u{8^Zr<|+m=SV+u8Q} zus>dGu=>cq4qDg%N){bbqTpXc^zyuX^xL;CyP%5(on{xrLMZ~rc3p(1rs>1}mZ&6i)N+bX2TceKqAtb2BktdikcBe$`P*`UL>ZAM2{ zTKK!jY4d&k(yKbX%u!kRVu5nl2N-7!-mahDj8>+c~{Pz|38YMEBqWP*Xrn0`_+ zL96TW2?iluuhkchf0V{FH{bnjx;VY9=FPX&ba4_Wbh!C4@pX5~`H8g1lO(m*lRt*C zuqHC>A7r(ywS~LQ3XpeEP*M}Hr>0{z(hzp)cBZ8upMtlM0^Prkz`o1N+rBkWF4F^* zx(6_M_#fd2Rw6vcs~K;v;XPT(m+Evi{Z^edU%o7+Ara_S`!C@hyVtN=hHQ(cO}Nd$ zGaTA&wmRTU*)*q~q7r>M`7^HMf2NeYg)EmsbZiO~sTq|bgqAB!56!FhOz}WuyLnh0 z@qH;$(+Q^c9G1gd8TYW)Agx{+la5EbUS^JF4ccpQFZ>9oZ5lM(2NqJ9tPcwu8kE)ZB~MzySIs+#kQPjE}7w5 zFr#=vV~HxRCN1fx8p2a=DMLxbp&pGz_NH9FG{>{Bl`?^%z9UJfdv;q?oik9>1IdRr zpu(u!w&jHRJo@A!EFL-J1xbWO3}U%7%t;f2lWc^PqU5moK(BHS?Pb7xZt7H~YC;UA z6B*Y+|EN8(fU}b0~^+&$)b+IAcsMcz{FeuQbFb9>Osd zEO5dX#^m&6y?r}*-{HczRi5`7abd8o(v9y}96%$I`s}?$QpVwi@@5XaV3&a*A|86W zCp4Ckl5P7Prz8(N{dl=p%%;^p)#=URxJkmN<83`QeEN^QZq)1h`1Ta`Fh8xn!E?-- z%YbEUhy9kxQ*~$G)9_8%=G~q*na%Q^VhpY^V=TyK*_uiCY$0%(%uw~`AKZfOb7!7C zS@Ud|wRt(vM? zAf7oWZk8XsyD~nUS5ZGWlzeDAYKQ6R^eMX%V;Bx_%@A}5BDO^U#w$6zo;{Fo&70HNdft4kzAooI z%AUuC^mPxhr+}p)eS^hD;y@yd3k5~FHE zxG`k`k%FxZGwlqqYIqW3&BCJfUp$1e%qm;DYZ&k7XGp@Xr&s6I#S}YecdCk(#t-f8 z;*koYc|F43V~o6i$w(1|le!I^+W9pR_D2+KI%M!r9CXnNXM#X6u$Ic}kSNz99B!=V z1rtFiu@L5}Y#J_4W`bE0e0jrTJ%>@`3cQe?vZLufHXY*H%0;`_W-z}yj{kZM6^`nf|DX+`gl8|)bW_JzG#*g%j&kdY`!-aL7J(^Kz=T)je85*+V>LU_~8Q_ zI?N`4fy`>O&uV}EIC&i>=XkxLt};-mjw~e1K7CG!ecNt!Zs}J7h+}N^3k(_VyRo#J>F{$HelQTY_y-#sMBSg2@0- zZqKe_e=Ga**SP`{xTsv$oanvDcJNw8qQ?(0FH+4;=hfxO3H)2(jKJO;I{6-Qcgou; z@xBZ?;o^t(j)kJS*FuaqFot zcz{tDW9yUOQ6dqUp%xMF$wbZSQ`h0>)~r4yI~+}|IkVnC0GMK;q|!yGD8oI38Z5ao znpny*dy_qRQD9e%`3vgSkGn3N1REtB{Nb#vi>7?%G$W_`9MyC=Kbe$rhsooBT%=d@~ z(Q!~B+l6IJkTMhR;U+>=gm;!QCfgu86KKj48FPsRnGjW5!SmLeJBVF{UmXLW)F8W!}Z)D##m2c6!S@;SHw+EV|N{Z$1578J}1DS z7SrqV>b$v(sq#|}!Mj(nTe@ohA^6}K#^5A_yBZ?CVTS_zNyclFW1K&Hb_3p)yJs-q zRke{uIK5rCs-TDlS%d*0+`|sDKYe&NS7uMuSqo!AS~lF2s`s!g_#vCNVzeWd&FZ2$ zspj$2^8G#vsH1mW+uB{{IpT^INcQ`=*G)-3;pUu;KJ&#)cFKn;;XVEuqwKLE}{F`^wK% zb2G0H*6haV%Z?d5~`KMRyVD&M0!#E7&sW-w8TAa4S(X}k)e(}+jQV>#*5z?=tRo>g*o)Qx|i?#Sd+$6|*v!QUEiAo%dAL;*qHR5a7bJSTt@P zOL0bNA!@&H6T=nUp+06$Vrm{i)Pj+X^t5>1kpY%$Ub2Ef(vf>E&>D>L11{8o!2un|In&XUo&XQ0|jqw7JK>TZv{*jJDtb z4(`L!pqtoWz$M@nCdd+*6^>#%;=i9o+Y$er&NW$#J)Oj{#R9D?tKhxO4A0~ZW1IRy zWBrI6*&=E!QXHCF ze)BJrHx4t0xYCN#Lda~v9!d<&yCP#%AtJEc#b}Ra+AX*qwD+B|S5irz5-~Y#d zx%g8b9Zx!mKgCI{jgZ70+%XU#5++GOIOE=K_D>pl5)&|}T*E(9+gRC1zdv5hNb-R9%;oLr0MER)^r1avp%m>IQt)H3n}CtL!p*xQ zHxzz%lvB8YP(c~OyDlbC3&A<%1+_QaNr8&2Coqg82!yN$b(ed-ELxcH%U*7`iuUnH%%BuF%6YyNL*?xjI;&RGuVH!i zDW?G33wZL{O}P3Pd}z*jP`i;DyL*JHd!53G2-YFhaU<9?sSd;BFeOguMjNDcr`QEm zqIBbLA#0+2fNRo`7^NqW6Z}94r}ID5Ry^o&aOpg>G_|;h)zxx-+w_X6C6vuQmu%-a ztv!LbL%YS&NZ&Xr(SG}}Xm2t!=k4Ea?&s~_8Mz;(5TZyD)oG5!@i@V4nbv-yFiD>0@yci4BF$=s4B9{Y%(ldjI2%j)_jq+=~UY3dzS`Eq6;eFVDY(;zd5 z29b3fXH0r6L#wvYxL?Zr#Z|D6zho#Fm?lbyWu{}K(yS&NB2H7V7}DF#{*a=c#6Z#X zCu%3$w)d-hingiQ486yC)o+u>`#F59nUihJ-s0Xm8l3WOL1yNY#cAhfT*WFjc?W)sCX z4zS>vkGnRqAvL>kTqO$&G&rezLzx~{>5Cji+-7NzltuU+QA?y&&m*&X^~u$(SD$k1 zBXYD+OQ`B{vXs=^5Nk}qoNTa{y}8Rhfqmr?_}#>8t&7JHD^#C0Ncprm4~sYR6BI~V z$j__lxH+4J&TH<@ixg3U&a@@3rdH()ptUD{ zcyIO|SmA8CYP)5x&u7zl0AN&b&MY{md`mevXV#ZI@-l}}){izdLO~-z1DFjFj-Vw- zWp?pYO-&@_!Ugvvyp~|xEHRHkD%0CoPZKQ%vnrY4+0$sg%)T~KBo9Jfa@{9yy;@DL zuWze)bGy8`j*`N`)%-j)j(@;Mh22!Eqpd@`Y-KGlJ?qbx?cN9!?jl{uAX{_- zc~YbLY7onxGPM~h!5+}fjiLU1Z5Aif>Uh;GPPYgvw{un9!x=J}U7y{?;4%<7a$Bi| z@*7?;q=Fa9E-WWu;ww~nmW>YxrDkDZ|XvDM51=Ja}1UCd{fHy6HYZoktK&a8XrJ=NXh$nNyG36mT=#K=uD zsGJ|ZV!gwF9m4?3$OsTT2rGTfP55A)No^aBj5WHqp2i5 zk+hcXHy}57#furG>5dgq?-Ih7)x~r^4`|%>310K^zuh4}K>!;pH--R~+py7A*fy&| zB~luNI-Ed3`t7qj`uUp!VV_1pBDJ+bNZv6$S;XjNR+l7Q>~E)+crpwhf)Zk~=RbX+ zF#|5)FI!v1ir^sOEsbP~`vF?JK@L?o$m(P{pI*k>kcuH6!IjPyo2_?u;@eho_J=;| zKfu^6H>JMX^E(hrrRpAUa>8!E`@;j_{v)S|tH4NeiALJ(kdRUuUG2XdgoaJwwy;(T>CVGwESY-2_P+Bl z!B&dU&A2jSZB2~hLIC1jKA>$$uMT?>Uaf)@7ZA6#bZpv1;@Uvo!$??p}+XZ zZ8Qs`YuHNLs)u;-ENt{ofa$-Ry#FJb^=^MoCD@Sq+?|1IAwRXUvS252xS1lu=AO`g z7M#In6nQ_j*t6YA5bTs%Tzw2? z-7po58&C`>>lPd=BZL0-Ki(|Qe=@vqj{3oj;6%ASSBw%aWQnp?xQF4UtKlwXS7a>S zCg8G3@YiIl?S*+c;{W(QfB`Bz=bdqC|Xv_Ts_s%NX+eFsH-DdV> zUuH~8agx&3(j{|+r#gd>vY+u9XE+=kXKf)3t5vm{UQUBr){pHK%5in)m#>)J6C~Bq z6FYKsq>AYv5Y{b?@_lyd@vQ*G{3|B?Db#mZHQ3dokFZ z$l9NZ>2$c65^=64GnU(u$Z~|>$b0HEUd`bL6uKbxc)Gd8V|Jtuf@8I1MHhD12<-OG590wu~tD%?DRa-+ahWQ*fCL5|6qT z7Q$FfIVps<6mFtKbB8B0)=4eQgalFS=1yun{E@Y9IK(!yi|gg8pA>!sZj9jchGN)V z8l*kxhqjMOTE9cOrSMkp)o;020;NmvVm$Zs?s<;hfqAr?5oMgg1;)YMR~S5&i&n$k z^t4Y?ZH=V?8jpM1 z;!~Vf%lYhU)5oXC-D3%3>7MhpF79@Zn(UPH9^lZ5%uLvPp+zkbI0ds1;rLO)&wcUQ z%Q?Ny$T=Y&vSv~`es0?@%or0?KZ>IpZmh)QpD#3~)`Cw6-1aWL&UiQD(cvE<>h<|- zwGL9jk2#6!p5U(D?N*J<-g1XlPc4WKT)~8_8T{2oSYa78VP}tCO@8a(g55#f-;!{_ zrY0OhxDN2i;^>Aph{9B^QzG2Va6NUv%=!|e?aSasp_fUEm|47^5g{kGcJ_R_TFn+` z*UQC0EvX*NT`lI53{|c$*;ZCV5XUXVz3?Wgw`{`vf)kFzs`bwvb7Oh7%7!gelb=P z#S3EXhkFUN&ML)~R)S`esd^Hl`5}tsbfNYBkZyQ2qb#ZB=6NrXcXc|i{;AfW#pk}} zmV|p7(s1`$wl%c-cOC|-kNkt6jSeRJF)2eZ@}$}GK`*?y-WOSOy|%ViTjR_Jfekhm zJX@w8Wv;ikv7T?utu#t-O|$DdzRdmyLQJGY3?KOHM9MnrSd5Do@>72XHg+-kdoQ8v z?h)@^>{)LNg2P1)9R!1=2#T>S9Sq{tK$I7@Q6!9b3&GJh;_c7L9ttK**QaPWm~|_q zA!P_Pf<5HH#%->lMWf_oWaoE{2rYCxGS#L&HSvnt}buZ&2iInqQm`_ ziEX=s+_u)^JxMZj_2eH~0T~H9g^_*&0f2>oKrQSPPBbz-|1kN~(b~A>o=-^{bcDYF z$Jr%jg)chXnpUdZlwN;3`*$Y>GW*JCCRAg3La`oW-AIna6 zvqJ7UK%aw#;hy!jE^?6>`rrY^k&B`t7|=n^@0watn@pA7g=<;VN=ZeDGbs;2rvQC6 z1uMAWW_s3D63#e;=sXkE#uFH=-|7kYoFH`1#zefAvFEM6teV9|bvngl>>|WdeyVOo z_sF+Z>OH#^gQX8`pM{_S;oKc(O-oG-K5U+cye-tSYIzwIcgbYi3=*ifW<`3S!d(=Y zw+nIaNNQxx%S+QPKwvc9R7Mxj9|r ziR`C~a8$CzBGI&n2aGo~cFTFZT+P-M4(P-+vYcN$lu2?={}4WL_y8l%99tO>8rT}5 zQwguO3a0^5@$bvY``^0w*Wqh#e@^K>#+^>-)?#OdfsaAKJ`8^=djmi^;-cs@7W?0f z*mr^lZ{(*=9p6ISS{*mn@VBk$n~P2Sbhq)uK6J43$kiXo?|fJ}(*h-0?CH&IlYHl5 zNxIQ;8cPyZAetJ-_-l zDhy7#SzMnt)d`sX>*bdvb|VIpxy1`b-l;xTp(tEr>^jVJkns}OV`T3VJ3UgOgc;wV zAq2J98g!o@Xic;LEw)mYZKn*kQ=;bU3ypD`5D9{7t9f2aWzv7g`x&KH=Nj~G^yq2{ z`g4AA9sVxc8uA;bB7NWRoEmf;O{w2mteTx zy^0#{cPS<#h- z`wl;N@?xk~#K1dQGudk!xqodQ{zr%;oNC2}>-nkuZfwP#&a3O?8F;ACQ#6xDUFh8Ft{9DQ`Z14kcoz5}wBnh525 z2eht3$jo-;n3&!>xOd2+sNQocCe z))UzD`_1N!IIgC%Ma$*= zPFv9eIm%34wLg#CJo=xGqn^&Aqjai-2mNkquC>yZJqp}FxUsxk+yH=&D>Dj1D-fDU zXxq=EUtPsB>1Ld^-wnp^$ywTh*<~}oU7v?t-u^C2IPmUa?wmk>c$_pst-Hv`wb!(m z$^JMcn6X+SL2t;4ngAns`7d{P>gB(l4G&KVRvQJk=)k&b91K>{_?Xdq&r^Dv8AjY1 z@Z>##QIpNFcp}^e@Yq0}Gx3fSc@Y=_yqHmHanyw0p-RtI)%qOnU>^3t$D2)C6p>G){jDtcl4p<%Q@w z^N@Qx*ju9=anXSegAk^YYOfI1>sx_i9(mj75&~*Wd7s_D-+L9TGFj~Iu=3MmcZ;WI zEL@R?)+S@|rFOBO@8*H5u1#nwQ~0reySDPv-#NCDgUzAvmlaO1YbjUkk%$O`Z4IWs z26zZvaZ&tdhKW7R`yTFPGh4)5T)c>J>)X}s5(&eX^W|yS2^Q?Fl+|<3aaZTod8Ra| zv%AX3y<2VjghkwfpIP%96xsK0TxE5UdD5r=qPCU_?e>KjFn@)ZikycZ#=09Ef9mAL zdO!p?GH|$-xu)+bK~JPd>aA|kxOrRMtl>;U-?iIwj;3ZbadhW8WF)xH91*1B4(B~*Hr)tvSD7q`dy^DoabdaMPKp<3;vhbh82QZ1EW#iGk_GoeO; zBWg6Ulx4S7dJ>~LsS&A3lT4_)^kgwy%;9Rgi`!N^oEeI5@Bp(0p1!&~flE2RS%pft zSCdt~6YC!Fwz1>hJyzb*hjw_Z8w2v z1X4&)!5)PyA=p(BVoyh8tQAA33B^f8vORt*UdlKf-}{8_e7aiRR&a<-0MY)Kh_ddP z?&|w)fhZd+HwsH@R6v=41tg-{;zF+sn@Hq-`pw1E`Sjbf3``wT8zlO3fbqatvl?_p z*@9eS;coI~7zU7@J)tq|D`xPT4H+Qd9nR+B^^A;E0ajhjPG(JYhXTD0v1QBUY=;4` zx^sTwd~LY)$m3ZngI)`C7zOtHfzwDrs~oM>9C@{xqa2fr_{-J{X(_gXb5n{KrMHVg zzM>(tSzlsoPMHdXL!-*%M7MD6ql|7{N7@@fOmJs!7t0Qh8+V6TG?Wb`kHNs=D;QAg zwy12Df_Iu{USGeQeCi_E*Uq%?rw!A>f+;MfbU@DrA_RCg_`ibu_TFAfa9}$U`#!Km zEC@n;*x5ZW+wpS7+p2sQ;%?*vd}1JX_xwvnx!FMO!2^uk>`E3w%tC}mIj^aXVDZGe zoj-q^9CfAC&rX-)QL>Z@3rGRpsRNaVd|#w2R6uVtJ@v=(6IFz$bbDhg2JVDL4X~Lo zRV&H%2cE|J8Kr&B`!ckUK47z_U&B(-Q({iLH&Vh2-wty+SbYo@pBwIvA0cZeIF;-U zH!j23e)osl+1zsbW=uF}&bX4Dt8HsTEp|_oaJ9oNtR}c$XjWSGF^ii zK#M9I9tX=f!cRO3XuH3wBI@=aFsf^0LO^9=?ZO*bc=0+$M0*66y*is!XRGPSc^Jh$ z8ttxodb_5Pb7^;jwMOm%a}yxTQk)`}H4c*#o#g=k`EK&|uV=AwzxL;two>ei7aZQq zu8ym0tu!HEA`2#${k;t5mWR?$uE3b@%jHDCk*nk|ZgNB{?F8c${gh7dgUZ7Tuv}E| zB3y;x@z#fv^EJp}0CulxTc>!JhfaFO-eVlvbQ@~}a9Tu?F$OjU)+{p__HOd`+h;M% zo%ZKMt%({&+*(u1(5+0->ECcOgKZr{UjtWOY-WHP4E34XyUK+3GS2Go1BN_Aytnx7 zPZwvQl0R9&$vg5VE;xm2A6k_qVJaBkg-}X^<)YwXip(CZ*B*V6tIV4wfS4dexiEO3 zBbq8B%c*j2GkN_Tn;mdpXkVk@Q*E)4he)w!n-<>AxE1=Mx}2Uhi^p!;%4vXhkG*74 zJEL_gSb7xMD{X^@5JqaL?(m;_dYx+EdN=v)b5yU}pA!vSpif?eO$n(DRru4RMA+fR z_MKPo1;&DGLJ+BiyL};>XL9j2#-G``Xs*v!w~Oi=J{a+kJAW28M`PWC+&SJJp2zhT z8GE3ugApT26vC`xIfZ1B8SY?>C9*Pc=4mZwwGq@R^C+OS;l2uh(t09eMQ5QW)WSzP z21>grH-?uo%FsFnZ+F#vozAPP<<;`*?BqPI#>F#d?%6(e<}6t2;2yN#s#hkmwgp*) zU^Sym^y1~D9c%b8W$W~Xv_D6!tf@gSz0xpvq+A;OzY-{Qy-kGrsU=m^G6=r6sS|Y~ zql17NlN^NWT#PzA`*Hin1I41E_;l_8ZdoxbFwIwy<*sU85dR#iEQ&I7K+TZ3vg}itAM$ z$fCWYQM$UhN`5o{Qe940$IJO?%--f4N|{n}cQ3mYjxwJ#8TESWkNwl2!I|_2g=vlR z=}0mHA!vpZ4MFeQ&WUz|-nU67+SW=iOY}ptl?G*_ic>*#0Ux@zhy8tMUu3_uY>&?s`W>*&?w)u#vTI(pSZ*I%uduKv7+43lmSX3C}Hc?SkTSg_}!yAbTC?V zU810IjPnV0?X?4+@P8YW!5z%7~*t=)EYdE{bfPJvs z$Q7GW>&La5hy-I={pY*MQAbAPwniSM$cW&pr#KUaNoO?32rH!_C1!GW;|$y!%WftO zBoaE$r;jgPy6=xpu_j6P4Nt+1;8b>$La?CZl9Q78r*JbR(odeuC{duo zktL$op3J{^H9w6W-@DQC<<<0i)y$`7t64xJmURd@mN}=7!o7xVlTEn~nkEKxmmWjs zleHoMo#S^v5J--d$ql#zsjpH5996HI(OODn8H|i@4{3Xxol0^gM%$A01e8aza7dvC zjsfTW6ZAICo11lYI%|#EdG!TMaf~pmgtP1(-Ihi-t!RPJLuZs24}4y#b&ZX4jGDSP z5+8MXk0#H%(yL4P@jO|2<)Bhhc?0pJ=8DQ9C^W$a28*o29S@$!ShkikY#UX=sj|X> zPFGi}*}6}p$uoT2!=fI~rmNMox<0>IUI+H@VOIq-%saSz4fCEMnYi^NA6m`8rub?G zA8bn6|MbYM<70QoZQZGv$8DWbGiGYdw4@HRj%_i#tLU+DEf+q6HE(-Y8B=I6 z@-+L?z+gWnXbGjeXS{<*N)7$EwRkdwsI`mn{&OdoqQ$8}ypv!buA46~| zwbZ!=J&}Qe@bpuhl;=~D)SAKyf@`B5!c!!*HbQ|SmP2VBFzJF>0WL(#IF^}z8nWr! zPKd3Ui*~V7`U$V)a4~Ew#{??Y%ukmUC{=U2tS&3Kg71%%W6B65fUrA`%b^(y^KqT7qgS|C0s&vhqWBkYoBi3-96+Ij`=q8?!nrJ4yeK9 z3JCFVh#UUulNuz<@AH?FmbU9ocb~f`u79TjYA|Dp8RoEE8iLhYZG5`w{dCvg${>dF zU^kQ_FUmz?vG-h?-n7o9&eim&J6z0RLh6|2F6Yy;>SDQAMnIIe*kri^Pj}ecD)4rX zo8~5QAK=hhtT^{usia1KYX6N?phi@e0FSbvZaxME6O06Kq%;kt_uhl z4VQ+OW33G~GmKd=#9HeLjHRI^#mtEma!)rJ?`1qndPsjP5Nj?Wa z%01hsb)Cbd$KX0khP}8RAs?@`#lL6|MLnjpfBZ6e(RKO%;gEs7NOk!uQcK-27f7&X zLQAI0Q1bbYKinlX06pOej86N&mBP(4J5ZFxlOBIj_8<7yE^n*z29#`9EY(5AJ@?Rx zm16^;hc<}Jil7{8Y;8=7QDj1c81-sDxIGWg9W2#!&jYPFha>66XN;X zY_NqvSeM~?tSd35T|yy3tg$+)91CYY?sDvG-YhCOtB~4fyJBn}l1q1VMGLZ_q=S7*XKTKY{?uxXIU2T6(@NH2kiR$dC)wR%sTkb)-?Aa|GZf1WzX-{Gd z--T)195@JjhnX3;ae}4C5Q%C{O)!jypxvNo zh%ubuFu!=`Dz;m~Nh>x3^F|d>{2_g0;f2FK2wP|(*5AXveHWg*C}5MoYn5&a*n2r5 z7%~0kil3^?n%2bprU>`kws4k%$4J98xxx<}m?~`p7U?u?UQEr7KDy5Ekwcr6bcUI! zt>#R2=2O-NOoo)KNX}<7S6;7gamZ?JBFg(gi$vfx4=2uhHW3bbMEo81T}W4}>B;hD z6?6k1`%&vTb83$d?&wEn@O++`??`OUPj6z}p$6yP8K&w`dk8x79z*qQXYw05T%; zNJ^MZ_e!>PVDld{*@xsUKJxDYmBxot;x!mSia=e_h7PJ?6ffr#EsmT z8lwZ;CS+eE97z}{3DMIM9lxLc*QJ8}^uNzCs9-fH6em`?z)hwGYpO`WL~w66c~CC{ zgRid4SXe9UMDki1na7Yb#QzRgG)k+Q=VAYVHLOlRh2c$@`wIND-0JT2hsnOvaNRrP9Z$K>sxGOLcs6az3B!lwQ6siPO*R6SoOaViAFl9Wi^joZPBjB!SlEjO#v-%eIEJb-}e z$&3x#GBY7K)5G?rtAzU*r2@yC?E8fF`SQ5AISY7oo^F)KJ^m6&ux&)_G}h%*KiEqN_AFOq)Mcl*J3>m5 zR^ug&@)M9vT7Ab;f4V$gEx#`3>x;m;KMHeoh7132SG(oO3b9suk1_J^Mewm;;Ho0* zAm|@fwMC0(c(sSgA=2}q0MCOQsBQEB}bAfH~ zMu>g914;OQjq|(UrOAKPuKwq8wpy;|&9~}&y1H!E->2Vt-+>)G1UQ7<+p)WAcxo>p zSbOAJj~=o!(zym>E18SLV`;635Q3`5VG#>Awtq

!cOF2!!L{05pKx%OtN46Q9v&VrdN*UsW^Wq6Ki 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 z zu@&iHRzOfPZqy2H?4DqeWQ?zo5PjU9W4xh6Mz^9ly=q z+%YHi%qXNjp2?6I4YEmvtDV|xnB)P$1z|Oo?4^YqCUj7#5!nOA=}0Z4wM1*<6mbMI zlK2?jBk=~|ZUz-|hAqfjGB(RYQ6R~O92_w#i#K!{bBj`)F6UQUu(eHfz1ZGvu0mDE z!sD@db2{CDmk&8JMr4B*IJHSrZe$?cft7yNRv%fYhm|ntH_v9T|NUsvZyZ=b`*Fe@ zQf-8EVEGoTTvLM+I^|3{*vv4Y)DX15T`)0uNjS+|4)6{~WU9_F|^v zIXCN7vplb^&sNPMn6Am%UJ2jo9`0D%&3(yzvozhKPi?hI$xy`(zK*8$%kQPl*MT-zDhMOp&JLfGL3vvaW5nEe#)+MwpJn!k!Dn8oWW_|(dRF}=>V{?0P zIX;2R3sSoS%eJ+BA*Z+86s$`a5k#FRmHnk1MzhT8?W@_FIBxw-61R?edd4W-$rn=s zzdEhZc#%=E-Y)VOOb3dc{;JXWPk}0*TSD9lZr9hj z2K5!5n&Z0M<2l}(!sRB8x?wVuzJRC*rxPJEvNFRJHNTCn(A}2yn-y`X0yh!dB1=&JdFLMP@FF(aj=J6fPZZDsC-L4;AnEX z8hOK@-BtC>e;=;(uy;-lj(Tr#>I_nI>oYQ;eQKo1raY$u^85SQ^Iw06(J{3jC#twy zA|n`aLF$?iq75n00SUH{RlVJtK)MUYPy$l41gQE3NqCzQSNO2#c)#Fns&wq0hlJa>lgZ{o>}(t&G-S4h;t;HQ}8s54;gY zOimH3Zm@w~fUPJ|l%axG_C$-bVzgRKkw}rbDtEn{_(bE`(Hhn6a(&%wtId3|3)y@N zq_f_E3{|IwVY~t?T~?pLhW-x9Mxz)vhmEN_ru=PMln}Kv1ZnO%L=c1Tl+@swOVDox zTgYQB*z1bi6=Pi!6#cTbaV5%|eiaALdP4rF?U`)AC#~kItAP5lDOa9xPbc4$n*BqL z-jY*rP6#9I1#~zMkIZr*CLx}=z5daq0&yoD_fdgpYo*rG;gP0H8e5VHB-}~?31e@` zn3p0984#?r$8mu?6i*`%*VFs3?HT+F_tg!`qmJ!>lv8zZPr7^)WGE*Ko<0dfW`W`{ zYs(`zQe4x#>gfRuP8Xs|V2hK?ZELlJydvQWmzt; z5VIISCX_H;_ngO?ZVpv+u>RDISJT68@wg|r^pZ(Z>07HNOm)7gN8SGgD> zt&m6u(faHusG`Gtr3Dc)i?;51F>gyHB20*3J*w#IX0eKCpy6Fi(wL)jpL=J}f}MJH zd!Q(qd!jwN%_N6*-Y4mLy{DYI)@v2w%M(>my7Dt?dJBX`5ed)m&|U5 z5JKKDfAjP$JQ5azkfPVe`y&|0Rv$rkj90`tNm&>?>Z1t_GQ1!M9Ig3Z9n zq#^@`ghxHCe(UyZz1vk+^X2mXKsy@pSMKQ)GoxV9DVP!WNoFCpWkS>fM;tS(==b-t zw;dn5J7N7c$;XZo@u-yDiJcf*EBMG1Frnc6hjYe(vaGvaVv+?8hk0T*+Mbdd3!M3(R1L&!6~@gJ8yQ#3-CS zwk<7>%#_r9;dNqOWOZUtBOV@2m~jg{)^P6qHWYK~;kNSNhI?~VZ^^z}*RV^cW{&lyJEnM1 z6Y7|*m-CD2YQ2lHkB!-93Bz?y{4jSs?uC;S^WJNm+O&;SeoT(S2l#``YMN=;hky&Q zv&4-%?xv9=&=5ij%0h&DDFN;G){K>eDZz|`nd6yJ@NOn#&2Y-iYIoUGXOKqk)}Pj! z`EIxPVGsrJME2~S^jLd7mL(;8_{3vt&7=xir}n`+!M9n494cuL;@C-X1-UD+R1@hq za8-ld6ZtgJb#G&XpyHvLnYUm}9PNScRcRB!KWw8lGq{aO2G^d|e~qrMkvV0)tTvEP zFFt|MpT{HYhrOl^dmNdsd#ndX*^jT3lwI>4a%xvhRS5Iv1P51ZB_FIggGcoBzda-U zcZQL2L{fv>byU~1sD)I-6lEI>Hd8{k&|NY`+>7;Yek6@3-pqs?@m~#`L3Mt++b;<- zo+orH?eD|cj&;7r@q~ttp1A9^Myaqp4BoHCX*UygtCGZn|LmGoF7e<$Q_U)_QN#)I zRmbr%QcGp1ul9Rnd>!ni7he<2wV;NH{KVN?Ggi#P;VnoX6hAt?#=DuMBaThq&Cfq0 zf!W34V^7fZ8wTC(@qhE6J9zjMupdf?-Dq&9*cfgxcrt4??{_bK{yoQK%bHX8UUnL7 zs4+||#I{8k_WPU2LsAXt+jy(S`p- zO$_&%1`1UEihXNtr=m@AOJ>Yzo z8@@)uW`o5iZnIiaf7H%Cz~`~um1D8Lzjs4n7nYe0g>ep5NaIY|8N_=r2n@X`yMreR z{4ERz!UJ$b`{J2bZhDsCW05{va;w}SSX~pM ziH0{Q*dYpblQ#;RQFMA-G*(ZhV#W;ob3Fz_olJT0j;1Yz@o_W%yaj(&Z7-YH2yNcJ zk2h`i9lf4%>wRPKobR35qF}D*nRhff?ue)(vH+X)X8pma}7D5)BdOXg54B2XRw^*$qaXk+a zlV5gFC=B*aX($Zth6%fuNTQ;=WlwEU5Q+z|Cj#Fbioje{gUIW?9xziN;5S8SX;_D- zzz~=Sjk?GM^&7+83`!vnF(~>g#-??pm{C?sIzaD~(S60+nYO3gtUt~-yJ~sjrmJ`A z-@54qs};46EZ zNF${3=Lg*-V+bi>W{~nqlg(I+XFuKK^=k!qGheJ)y|+)dn@uPsP`>Nxo@4p0Yq0vn zYrsK@x=$$}W|^Vec?Yw@1UpC+-><#EO1C3SUCn0$xRA z$h{~72BdYq+6H0<3{gcB(%yE4>pepmslQ~@Q^J2Bx#qn&+Cw-n@QS``cluT6cwL>X z@8(ayevuy)yH``bz&pr)5k7z7KMqoBKdCj~892e*P3Hv8zdxJ(_Ip?Ub^1E(#|aE0 zBTPx#{VW)YjQd7;(|HGLPWn3te+&e(!Ya+I$_|^|6{CJzL;g`4ZuV+U;!#i1$fG=s zJN)8e&E|X?+HJhyxoy-$rYTyo;JXRYyZOVWb3;kAW-G0!Rg{(kn$%V_hZ z{WxlUkkRYbCwCeEx)y>{N(rc+QV}yl^GbWSGv0E-iYQZ=TXb{;0@E_ug z@meNnr@78}*DNn!m)E!3=3{d|kFsEVD{t)H%_+Qb@cfDYB1l04s09{mgh7pt+J-+0 z38=-tJgCLLa-bGCRzS6q#&oqTVo~s93yyvQ#X&1 zp2o*Avs!_FW|0O~}dGkb{AF5;6p^Q!A?@73GNFb;aa zko^^7rYtOukZD)#=TICpUd=S71AStRo96R;dG`1H6UtZTIAr&%$6E98(C6UkQ!r(! zM0SNNsnqvNH_qTTmw!o)Gtk;{NRJ(+I%ANjj@goPz5}H)Mg*b63MExuJifP3h7>Af zMsR4b2YNn&d=l^HboLzO%vdhxt7?6AxejPyPeMTHp88=Cb`b)~;5DXT*<6WG)1hTq z0^=C|&WjT(&478bU35-6=TpY2%_H-EEfV)$VeA-Nf|d%UD}?Uim$#K@C1{(UV)3CBEA; zwl=iZn1JQY=N_PF2^k&{;Nsk2K3OXw3)Yu{eGGcJfvnVBE*8vkhQAr4Us^sQn8mx9 zrWHP7oFAqWw$1MBazDhmP<%V6o9W)fNdsK(HBN2iS}Ge%A&H0iHPqtD4R3$)SmJ)l zVTluvr-GG97xE>!mQ0%`iEVq^8XQL&W_b12jCGvhKSI<-kO=+qKKW_9mg!9YeQuUG zl6!W$LfgJ0Mqh{3zMW#~nf(4~;GbN-CyftI=jVNwGYtG4$e9L$>6YB7!NaK!V zTOPye*q!WH$9g2&a`5Ph!#21IG{kgmYicRxW*N!q^Z(9XzIZg}=l|`@x&1imWJS$| zG1fR5MFgb+ELd}iY&F=zu_M0ja?w~?LHb*3;!1@rcJqiFFTyb3yuWJ{#%6s1UiYdx z+pKTDj5~Bbx7+p)NsPr9#`NxJhZ5Ru`pAEYbinH_J%x&{HOxwSFXslDfz zYzF4gJN@#7rhV}L@X=GSYseXcU|8@6aVi4gsmiG+9l&TVu-Im(aHeu0G1N@3GE=$z zP4v8~sajNjRjXz7g_7n7LaA(y#xG}< z??Q7)rGnL`U~W`f83eHKwW6#YEMq(;f_?t0%Z>5;*B^$tF$AuU^RL~+U8{>jMIjE< z{w~t282Lf0w`MGg6-ZuPTWQksc0B+uT)^}_=KbAzwVGFF%|*x;74EM@gVa69u~z84 zNiv-E)<1RqN3xy`B7Zgtwjnuw4!7d-A6=K%PP%1?cu;G&s~G^HESMx%W+594chU2C zl5oZiHeoYIW&9;$Y!pNz3`J5NtYFTQ}HDV{Ng1qeTY=gaBMns!L9rW*FZA#QsC}2N4bt zNI0N{9gPc2fCBNBCRyxp!_~Iy@qmw?FRF`MNGjvZ6S=2QrgGa|#@NJi^xGywUhf?y z{)>QB6<-g)f~nS2#EMGExz+!6q%>|l_rEDp8pQVqfdmwtoEEF4q>Sl;ldIug^2Ffx z{~&m4#)#qwhaVaYnG3>%@s=j}ix2}D=Fri6mkZzK zMo^Uxj?uU$H)Lz$c*@;nPiTV}|8?iz-aCNZ^!yvIQGk(K z-RVSfcE>LfMILN>QJCAk?D=5G$QZ~U|cvOD~Mc0&Vv$m=D+{Z z+=A|UQDA{WZ6rz@BkOlqB7EN`g%Tif$-LQC*K7D{ZRbH#B`1o^L=Ze4PPPs0tDkzy zO~HCJw*fy%&06BCJ~>GOclYx<*HN{q<{7v|lky9 zvQDs{JQ6X_q``0%3SoInM~`d95Jk+)1pGQ#hePaUzJ}NP$L{`SK7(Cs)~n_gzE7*> zdOq8pt#`YsS?;cz)jw`FYiyDAVe+CcvQge)f8A?V{bzm$U(EYz*KFp?9<$%r4HvL) z@8o;-y{|rWz{@7_Ox`P;+Fw%>v?y6S#N5(~LY$d{jsMM~$Nw#p9$!P4tsORA-Rd%P zEz5{7_jZv*(YYV2>#y0jYcYe{l>|p%(@88I_=G(0SJ~FTs_pe+7f>gZFgf>7j!$00 z_jpT2i>+cNP<=nePO8@2TJdc^PAH@c@Q?5u?NI6(VJ&uBo}%aJ z?`pURJP7r17K~cILXs*73`Vj5;&psKt(RrKL z_ek?-0)uBw+@3X6eybD}R4x1&9EFrQiSD1zWo`j{kx2e3?bYK?ETeM%` zLFgBb7f9KUPq*{yW`*0iUBm)Zyp?IEqIb*Yd~vzRhFAD%|ym41AmN%iDrU;^EZ!j{;c`yLk){;7MYpRg(JGAE` z2{?nz3=^2-6+$mNN$wY^x*QVB-QRQ=| z9IJC0Zs%wOy}x3j)k<(IfE~+a56hlDSbikDz6HNmZO<-0&lhJ`a4lo2#$~M6JKypp z<9)^(KKkUwYndN*D^fqSX&}_dNLoMqXtG(&H4&x=#aOU~ ztoF}d@9ZuZMK5w3?B^zhUhK1WvJ*wseWr%b&2rhAM>rGM-~$3+_?B8i6m$3!ENn<~%2~kx*xyRpzOvgZ&VsSv zSLzuRC~7eVOW0hWLm(Bw2;18P5z(hAQNP72QNN{(m)C-GK}iP&HoP{9Ve_;Ex+vVkpqR@*80)PU z^^3Y?wNNQRrU-g}0+rpzc4xH)(>$-{_m_xsczWOXcv?^48{NexUOkeE2K)!oBFr4a zMkL+(Aq$TG=9vprc;hrSlRyO|~|pCOMy7rTQUYz zA}t4pa#g?&g(>3QO!60CR3Z6dasGF|j{I%mi`}J^uSE^R7rm!XVRVOS8z{+O@dc%L z5rrq8NJ<9QHq>fC9AQ+7*|b%hl$cEK?_yBPVvzUVTQQnBxA+*@Cml>Pkm2!9cZ4WC zr9>-2WC;_FsxI6+jZ;3&d+A%~BzOSfc&%;WyX3TsnuekOaihM6~FGj?MvI zjYtAstRNu4-^`#V8=et$SB#Nq(w3jt&|_86@M5M@;l0=_F4m9)uI9`8+mAg-!sBRI z#;{O#$6G!F+}m~u9zAi7DY#Vu!d})4`6!90X^*utX4P+BxpC=RryP`yOAQ>4A=V*W zvaDv*DprV^y0?oSqL3LR;zgaPOm0)q2_7 zSDV|b=5DdQ#Q%RU3w@csPIu5_GsheqHE;Ea+b>rvz(gPrPQb5}KrY$5zRm$*FVnT9 zQo03Q!)hTcQzf-Zd%GD{c^dT0{+hA24x~Js*3zgFL`!%>-=&Rzb?Il#W?5a&PfN(; z-O6dYJl^w99gc&U1$K{l9TM0oEHQ z4EXeSmL^-vbmjhv{ht7hQe%`Mnz%RK)03O;ReRN`nAM`p+YOGxTsGLL-R{<(*7*7X z*L`YdCG6Hc%AVb3j`YM{EMca>Ou+06e}eQuVQ^Tl<{ z0e@qCC-)u>^TS2-or2dmxjUAD%Br>aMMk=N+MCWxRL79`+rc-w#NR1=BOCyjm=Z3m zg6diustqX@g@>CNtd0$ppxyPNQpX&LY>lh4dIUNdFX!~L0ge>L&Ed8&H0cD_ry==n}gRl zwNdkM@BleSQ5h1YhQq;wbfWCYQn`t8T9!)H$}kSr)G?dFM{rJo7IR68Hg8|UqRaz+ z+FLLx2xl<_F-(omlKG?t6aJbvs|t)6?YH{W+%4c=D3&7Uu+g|@`SfXW__!&g$xLcL zgrTQXM2CbXp^ zGW^IMGv3W~)8wzssAf6;Ujw(XsqWUxULWdP^`5q@`@p^lj#s zC42ni>{)!~?^!Y@mXQByshphHg5Q-!F{5aS-g3B!VLv-;%HEpMSlYHb6IpDEc<|H2 zK!$AN*UfgjxL&NnX@R12iSFs;H;i-W5`&c|-Yh1;41k3{{~$PH!Z2Wk@+Lxu=_lw8d25yl)9t8*buw;u(L*SW+vn)ej+*O5&e!%m5Gk zbRls<$8}y^R`b=xascFf;Anw+H2H3HFUUDq^3(w<66pKXP3XN8s;ky4Q^EYj+u4UM zWOYkLANI9z2;+pfV>-0voCr@Txmcwr+*Z$7wgdZ$5S1OldP~N@krd~oeQ)`tZgJf# zR#7T{5mBD}_N+2r)5~3Rb$j1b>(yd=83#~&-AIX;)jhC73qsEOB*Bi}Q%-GvkT>}Q zJjm7pKhzq2GIa=+NYsB^w&I*ARZeQbw6fZ(|7b!CD?z*;Y#=XJ-0Q)-CHqw$i8TOj zYNfMb$aw6hZ;*bqvq$>j?IoP%^2zbU-ihV=wM;y5xcbCXM8(2+0ECxHAd97{0ltrz8iF}Np>7b0Dt#S@>TImc=~ckAud z<@&s$$JA(ZnxO6>maWqUE1x>fm5c-ihnkJ8;)KoAwRzs{46QR_sPcrA-4zowOqhPU;^_ONdauEBs^+}8-lk-f z@s6H2DE_+3gS#lp^=7_;IC-d9NtS{Wk)z1U*4reIsWp8~@WB83|7d8k8oy;xU9aQqG^ z+s7mg2=m~DOwuRkjS0ZFV{@^n&etC|>$~-Gdlj!y9U$8?+>7bX{LoTWu4+&Cuv2?- zrVRPNp+X&sA~FU3Hnii!{Oti6Tga_u1ZqijCiR>-P{4zk+arxV+|03jZvKL? zrjU?0tSQYX5}d>+AKcA%>At`IHmsNPi>lcj09+iJAZP=G%pBaklk!EgA!J4H^l2a~ zLf$LdmV9}pY{84Sv*-VeR>Rwm6PhE8S}q*ff|m4(aserG3FgLN55xW6A?8MR!Pq># zu!t5>G+G_2;@Sl<vTT5Ee1-y-(OD+)M%I>>b-sJ*;Dui@i#6THbrW6wFQV0Huf| zEu{T&F`Cl?{^h0Hefs5PM)ygu8f;A|NA=E_nrjHJ%g|BvHZk0I8YYW;ARf<-OJ)Kf?xT~Yt!o3BfpeKpR z4YPJkF{))THW~b?-!5%k?Jn1=`)awIf1ZO645rpIN=pYq4&4)c^3qc9u!-lQQb`jG z*VHKb#<+%zD@6RpbI~{daeZaW`84P&c@0q^M0s5%YHA^^5gy|ASUsO$D?QvV5rm@P zrOc;&^VW>APEZs()UKLO3@U!!Y~W%0r_}LszUyT43e0wgX0xiU)_>3M=Rs1MdoX1h zOWn<_6J9#X)PfG%j9DI{k=OW>$Z@Sld>2lOK^^kmKS^x zA!wGImNfogGlO1w*!0~M`;oGl5e7e}5b&ELQCfI0)18wI&{;Rl=IT_~Ebq+Amznks z$p(*}xSKbI`}HRjq$2czy|hPPkv8_Rvpt+6s|$9RtdkQ)o!p!T|m>R_`7Bx3&84(Nl2a@OnY-m|OV5 z!aIt{c>Le+M~Y267)wwAmpjl)!jVRfm*j2^b~D&J9)e(c3&zY^C=`sKY*af54z|}c zhMSqbAOCBPKNVGTvm0y958tIhbB5botoGY;cjD#k`Qa^-_Ut`+;$EC;u6)F&F)fx@ z(As8l+Z=P_)A8M>3T+Ft+*V|HivgJZ9<&$+v~+{b6eePZddR# zaT~3$KNWoNH#%m(25avm++P#e(ubSko7{hBzI+MC4O82a~xw(niGG50dopr9Mf7&#wtLl7S zK^U}}M-BbU)=T8v?g<}i+TH6UQQ6)@CT`H0$RP2C{1=H~7*$C4lxNYuyqvx5WEotb z$=j4H14Ggo1L1eq@`mt5P)NtwleE118_TMu4>0I>Yxcu)KI3%8B-ng^1|!Awfmbp~ zqmH%1&)2JFd0yS1lFBY>zXh29R1;6xQp{t6@Gp_t?kUa|y;t_u;3uXh}n2XT@qNkS$e20_a5R>dhOsp#8>4iPHsbQ%eg0 zsKa7F$^Yl>-L~7fu`SSF>EY*7)wo~y=35*mZMWN(-krRarLx3`A~i_KKFZghwMv!> zKmja}gv|2ENOxy*JE#J{#dVu&PE->L)dvr3T@AKVVD8ahGdB3h*-VOBAKbpe>zTGy zcW(Mi^LgIv?4q~!u6CJpa?kq*H?M+6PoWvDED4CeD5ULw7-MJcv4lT%Pk2}J&3(xvB-DHK(Ya)hgYluZSi&Tqy>Pwcvlkg&QqY=!W8!`} zSy1@ok&qdKjTMj?^OlT-x{`HBGedJ*xOgAaPEa9zysl8Bs9ijEgVsI2M{Cdq51Dv_ zR;WNu8U6F2@{pc#om)T{Tik8d7Kzccsy==n{`RfBVrR7n?X1*Welq9{ua zH;w@^hBDmawm%BV(8!udZ4JLF2P39`F2SHQvf3Z9h6GaoT*HpH`RE=QUVTG>+d3Q9VB9*q`ve5&aHm z>fmw5PPRE=0XqTsR*0;%MBdjtyTz%-k58ggjUUswwlz{H-VZEWT?;NL_1Ou^nQpMJ zf#nj-wV;NH{9M~zGMZ|46EDoKusLYd^=udKA6CIaV z3!XA@k1GiE*=-rYTvB!%bCiX|A_=?w^eSq%pHk$u_!5dM1a-J%mte|5mk@#(ZXz$@ z-rD^Q7LAQ4QjMX6B_Ak=tFkB?y&gGq8lB~0|Q{TRt{oea-7rpg+(s$chTgeUU`&-}*!FL1XLl2w>)V!S0M)EQ5bZ+qa1U{ zdok#SPnd%B=`Qp1=zI_m)s3@fa#!y`@qx;zocm)A5@oolQmO=Z^>7ziSm^C8*IzSc zi&V`dI5Z*i!)LsJ>6_yE2GU0)k^k1tPr#Q31BCm;$m8bNpXMXP$Km?NEjH0WVr}9+)b7}jx>W{g6i)d7hDSZAE zysCi=a!9^`U95;Lr@BBdX0Lwj-KvA!>OM|Xr6d!QJCQA9R@PX}t#};dR_%?g+AdIYuwcQK7oga>Dern^3^meu!v+C;0zqiC&OlO?Bk>>k~|#p6-L zR`8HxJ5{bi$zrKGyn(4H%bX8-^Dnm>`{rL6-B_gevRWgNl?%%t0;y>W4*Uh1IhfAM zTQEjuMKo5-luLWF*GN9z%W+(3wBz~>oLAbn)5yXD{4Zu#0<6*McE2C&mcXTP;MFL^DNvmEi+t@BOVDjGS=S zi?wv5oiR~sH8OXfBM^btGVQMHy(PER_4#VO9FS?0RDj59^7O~Qt4SZM0uera3X!qp zI*5!7q5u*7i%^ifZmnb4ud}*58jgTd=J;c4YpbMS-1EnKmz%;(gjTJDfWVw|?c&T) zU2n;#VH-@|joG2tgr`6KVv{4|@}*r}T+cVxV|v2{?e*bQAEznntv~UmtdWui#bNjv zA|1;y>?$*leLH*8!g@5S>PYh?K341J+wZX z2hW;ROB<%dO@kLxvefjkh!H6#46-Ih|k5*VX164u26w)&PVdwJtdApC`y}u2zf1s-i05wo3%m?z!!l7jH|3y+tQ(eu@M=UF?)t z>{dcFCc>s}0;2rs!>ki59x~)~A15HnR7;{Pb(3KQAC*IA47O5Yw%=bgp?pSlZ4aOA z$Ge%NvF1AE`y~0VSn&PB=KZ}ZDdCNGnD-B#J@H=yOG${EB=|MI)9=ixW51X^dmr`2 z&yq|ZXi!pf7q+a8Rn#kr?T?uZb}%}nFh-2!Ef`I!4UTqOmu_;jgbfEjNmGx|c&t}v z?YjD0fo*^J(vA%B7s{9)PV^DV*Wvn8sC8+<0z*VT$C}}2@c?QSv%{Ak-9p#Pk2!@d zh=9AHA%`Ige()^UiWpwP6oWmCH;FUQlJ1&AW5nOynIN5Fd>q^{KrX|{PrsSe4H2xW zlXW{kJKrv@P{IP;W6Za}@HG&u}zwGq>mn85;+uQEx>K?5HXofavj8^ zo8+eXYfyy^?8)u;LTqadQzfg*gWZhdmB;(M-kO17+m66Uc2gEE)8ql8xOhbq!cKm^ zU9Xna0`gb*UVLu5rhDn}+Du~(4trN)K77D-_ySXikfk<$!-%68y%hDpM<j}iwW|m!SUt%;=GwJs_WaEbvTXi zBl#bLli$^$9?t(be1T)zwz51J(?!-ol*oneZ?@(TI@Pyvrj87G1)SmoRhXyWYgm=sc^())*JjbK=hf9}aob!B1`c+h zoXKK?3Qlb-Cf ziE=D&!`)=*>TVB>{WW8z$LNfh+6Z#^fFEAa1T6C2Z(g-$XSdb2^ZE5avG4FfzJ7Xs z+)n!=-qm9sIK(%6`owV&GH|9;AXic?ApSEs<)(MPx){ZGE`v={UKd>xp~PXZ(V`~U zidD1-Mlsw(2`*M|&7oN%1MjS>O1aZP-vPC0k1EF<>QpoiuA0?iRW;QT&2te*oD6qb zBJ_0+HQ(Vz-z8zJ!4oEKtlIKGVNCNbPh$-JN9E_T|B2_a|4CUaG8$T83{eh#0xXCz zzd(FoE*tJjS-hf2nsjb0>&v=5g|PbMqWZ4E zd(`CDy#O3R-u%Oig5}pOjK&AN(}H<^1G74bAdoRb67< z{khrFf!d-~fA|nma3{O|D&)RsqF)?5dg8waRs^$$jN!k8fh?8b=wa-);J0_~{KIeW zo{Y~w2uOS>c9fiMa>r_~b)jNeu!p=Kfsxq0~UGlZD^LmZ*?A<1b6k3hsP z?Gaj?;t92?5Nmq4iLBz;h~SC4(LooVq+54~>`eQycJlg?OzBLRm;R1GeWM z29^$PrF^73RtgWEJ_T^4Fx>aW8fV_%k73jr7=2nca92V*0be+FrxDmYW7rnN$i$uxD_V1Dh=@ z>^Xeg6pWN<;bSrpiG(w$5^)$A@iLg`yI-Rw`Yy%A4uK1^2LI}N&K&zaI^eL|H(n0+ zaIi=A795(Sgji!na0e!xv*JllANzc|S}v#1 zs#f5^A%&(kjCErM_5AJZ#mgr#0;=xgM4Ojz>-juwYXaX{>C-dsYf!-!@`Q1>mx0_R zV<9f~3uP^s${a1|&V6F8?R#6NI&apWo13$MyQ1uXZE$G$iDu>?L9qD5Q%)rV4hm#k zp*UwMAq5QmTB3dX$4fW*{NrUt^a-z_lvLE2??Hes4(}On{QYoJ8gDnFoUCIYMsL9w z=0ciT=l*sY!HvO><-O6~*DGuDC9K*#`to_@){boO=!x6B1P>Izm3b{{ zEg*Oc8!(A{^S_?O|2NCxWsP$N+yN{bUK`Do^a<39<(t8_3IHjc1!KW2!9kN+X_2cd zgf}rs8;^mlE}ORctG%2LaFn@PL%T%3{Za0lZf@5Z8b0LMz-A$ApjU#46zP=Kha#E@ zoW!&Do@B}U47-F-g%V=5qoZjFWZqnq14#_F6566*7PhaM&F{;2OGc|d@VBlx+o|>& z!ARi6OncUE)2`3jdDVP9ZExGJySm>pWAomDmv_J001)A$k8R011Vr9dM3`Wi0Or>( zX7B&+NsQL5`#9lUjWw1#N66FS)$`ZvLnJaKs zi~)}*ok9A`UBtuoI2UhX`X$}_5!J> zP6wSUdFypTpXYQ!QSw$9sz@IJV<(hLBt?B3n+-R1a9PS*FlMvd;1@xqRVE! zj2SIn$0U=}{1(m48GKxQJ8xT5;fb2`{qA#YIs*sno%FtT?YvXcu)U{D!P^=U%g#H8y9}r0_ps0LzE6LSk7t{~Qzq_oC4`3o84W`MrH*x*XU^~K zLp24#rLvyT7lqeFUKn1Kize93Xys`PbLcG?YXA|2Biu!IK0J> zvo>F*0n{J;t`(@BtL#%iLr+ox*qu&1Sed9j+q(Ny1>3pm4pBP?S={n=!j z(DpHzV96<%kzyf>I1WU^k8#&4U|DUHx3gz2qE4#&IHekGIWeY>O0BLHfn>6f%KKm! zgY=OKEeuz}AJ8UTfY!xOU!Noww`LEv?TI zO%(SS^DQqAHyAEH1sgQ*i|%9IAwg3$C14U6_6J$v)1LO*%?h6;6=IPntrKCTdGO=U0+|*PvbsKBt(OBC z)Iuicoz~$Uf^fNscjgrQ6(|uSFa+JgKoC4hZU3sL8E~oXU!`aUAP3aiGVW06YFcZ_ zmGwJw2e#thJ7#`K8$C5KMaphyVEotW*k_6xky?X32AF+WWc?>@p^x6SEkK$e@i z{~T)`6>M`aU{`ON|DFkd8a({i{!|DRfLkf65w(f6`$1xwrulJHQQeM4QWX`A+gjsN zUs8reA7horAyN>K9&BtB+&Tie@fVEoWpjpsKe0o2+@`&3mbjIhd6eb{Ze=L`y{?x4!J%5@}C4yiO+!U9x z2a;Nda+#rJx-Ek}46N2LiNa8Xn0%}CSB=$p5zA<5sYqJ(WdIUa8QLz7?kw+EfbLnm zPR^Ul`St3{7vDs~t(57i^kXLr%7lb=p$5>RO=2m6WSj*I-?;`&&~+l^tx@c|DUxRQn<5j7VUjuK! z)Q^F#d2;?Frz9l_|HqISeo_#L)8^~^v^rbQ&(1c77N}smdkPdkob?YbP6dyiLTy=b zK2#sQ6V8SonoRZ4r+>~q_QmC=4v^_%s<_NK3c(rUO*=DqqAEvjJ=n@P6UpdQrn_Q{ z;+7g5HkH(FM^rdLBL4D6;&!~4=})@+)qa5#`?mU?ZwEG=xAPLgynFDw8g=$tCV6tb zXCK=wYw0^?YE2F92fpX{pNt~d>$jekumhq)F z*jqEotx4`C$30B(RgzS5;=cEef&`YjxfoKAT#a&R-jC5_Fljy&OACpYC7Cft#oS2?Ch){%0OHIp_#Rj_>r#u)b zjQJ}LohwBV0Z0I>p$B68@oIj`B>Aq4cCu)0PTOiZKUsm-4U5`8j84eCkCFwnj9Gx- z(NhSdjSj|nXxGQo-3S@wIga=3zh>`y^x|8m2L3*UUSzPgr51Ha-N`zxIjWTwnXC(U zQ9`;qST*K*Iq3i>Tm;pzLEA}3=5;0)CvQvmPZ9=$W$vDdrJ=X#4y-RCMA@OD|a zQDbWy<>Vo`P$HZC^>-I=@$2tTGRAT=zL+2`LoN}uHr!~T%O$koZbDnsk}7JMRwgr_ z^%hLjr3k5o$Rz6B>?+r4(_WodS5>oEvh||7lJv54>@+x%4ixuNH~VEwUxCD z5hMv?eH}N}bSnu`O|Vqu5Myfv-+Nt3JUH0GsGRp0Zp2wG3fe+ZXmH~+9~_CNKJA)S zCpj^1tIy2_zLf!BBp)!DS-bL1amNrk3oaR~e{8FhkhJ*}6!7D3O*g0=0y@?m$4v~k z<#WJ!D_Pn>jve>mHNwAU|CFwK`u8^bPa3St8AKPkPr_c&9f_WW>SqrydG(6VQZe zQfpc(T8l6rj$^i7zn%U0G};d8K2F5J%2?`FrKsYype&FPKQJBkw^E`dDj}-HbZz9Ag|Mv~Z8^G2-W7{VDW)AcqSk{3K4_sTx8> zmhEAGc^~z#zodA8Ijea_hf|Ldaq+AOQnc3HtsMKI4_kfthU0>ZtX z5@GgEa}UA8j~!(*O9F(YMw*(MBGEk!U4FW|!^w{T+9Sw@Ovw6u2zf1s-imD zFdFQpL^kXm-@dJ**o!5}HoV78+)-0OtskmGrpl2|7$S{4SN-3&vv>b`u-gARR@;3X zwOWXDtxy#Ha@tIAilOw>VZJ)pN)~JDR^bkJ!Khxco*~VSVuzQ)x{LX#9rm|ovAC@^ zaOUfEGw!G#s~G0q%8xIG1y7&&uYr}qua#L_WB-@%dH~K&B<;`pp8_{&f1dg&K>cwo zIdvpm4aCIMSmslO6mj0ce$uIX+;ek7yR6=k@^Kc7=IsniGnzPv&8v0=@Al8@+pBg4 zTUf7_%?)IU%jUA3t>@U>J*_Um^qOT0erJVA;{Y-S_jKIfhWnGq1dXjPs*`Hb1}M)x zPNGD!%)OPtFT%E9V88cGC-m-HOrdP2bqEpT78M2z$!DAW^wjNre{z_)(!Fn8OVNos z_dfx;wvu)qJqkiB*w<)eFbYF)){FJQrI`^~TSJEMu&b+B*p62*eFXQHb+i1t`Z{mV zKUXI~!Oq`bnI?CCjQa-i{p%z<+1^8romVSLY%T^Y9-cq{b@uLMpHw^aBHhOc6qsO= zXg54Z<#k3RC*@kzBUrFqMb@`s!HAj(+YO}ZK?7^FKAY-R#?s?Vz+we_}GC~18-$Q{fwc#U)}>MnllpjUKb`i|wnEg{O7D`d5Lk~OgS z?$=p2r8rbp=sr%61c0FtrnPZkTii+(3_lze_J*4|xPRm=7>j%<#pXCsW)~i<$fP3P z%d|%${%YV@s&DP}dAt4`mYcHnT*6k}6W=xX&3(ya%OPi|Q14UJ6mm^%;Ll|P z#XiP?Vjq)0F~|voq}r&5{MJ~=9VIp3dCNgXg1zMF?`~~Cc}pg=;~@=JN*xRs>F#Fo ze)v8@zBBx*=3Bcs`TI5~MHR$_WXaEezkw3nrX4Y2-ovL*QYM)wutYWaw|8z*``f#W zq!zXPjAF#$#x<(8ObFu(6Ber`k3hnrvJcy3eYbK}g;{=#T z6=b<;zP5|%>wLL7TQ{d6?^duE&now%w{*{J-^#J`K1oQH_mqkIUdDAma*0#!NF1vO z1d^d}Xi8l0Kc2YYf1Zqs3!=(`Vv0MXj*xdk0*Q8F9|f{C*x4vY$oN#0zh*4#=6uEk zWbZ0h#0;-w@*dX@wLjmSoQFIh8+3CxEwJj4_YGO@md*A(}GgKkw!e)iCj$TsIcJ)2r+A z+v;T9f^CMfE?d0n-duP6Nj{!e4W2RuvowYVW(ofug|D5^sOg?(m+wA$(w`qQLR${8 z1-K~TfSn<<6~t(1JfinEB@#c-YVhqqM85R?*Hit5|cNa6w+VOn}Y2Cmk7FXxhXRy8H zJfnv6IJE8Vsh21r?LylgJp0(@EDiC;2(iZjUsl?&q-K?eKmIy<)|ZD}b){#i@-Sp} zTu^DO!ygOjlaay}6!{IeGN>ED?}<@@Yszw~!`_n7$XCxKh3uOgTph-nIgUBUs=r^G zMZ2C?SF6QsGvIOm!Bc_mDgWpSaQN_J+b^@!*B&*f{YAj%m|BPKIBvf$Kf3n&@?(bm z{;27qU@ryQJKmB*12$M-YK(DQk4e`Tk%pSu=wp z04Zn17)K>H$o|I}IY8y?jz>BJH+58WMw%TfYr`diYxlT!HRs%yO!8cMkDhpY$OsY4 z1w&v7|AxR`>XUKwg8l4~OmnUc@umUY zHDmENF~}FLiOib@yb}gIpD!-k^(Hk7h!=I_S-|h-kkvNo$ZN52v|5~oV+uQ;MVTsg ze=CDugng$0Q*WCL+r4)3@1qeoW8J23Xtpza|!z=M7Vun z0;!A@1dOp<5iQtDUf4cTMswGUDn@i%Ekcu0aXVhogl3P{cOvGS_ADrDmk-)AWFa07 z`&a>c@D3Aq^~%^ll#PFvI}o+b8T)_tyIV1T=ZeE@oB0Jx>m?x=sloJ(;I_1*4|lUi zp^a&jR`>Wa-9=-ro|73)M6gU(|JMyNx?eT7EhNP$SC1EUTvva85PPQpTPt-tA5giP zU4LE0Vt~{eCu0Eb9j4Id7RCo>Yf^KpP$6Gc#?Qi=KWAON?mG>>qk!Cf98CdKZH%SL zRX|2bG)W}&bQh$fw>FDz?$F-h=p{(nL55Bbse;^;k2g((_F7^tIzBC z=~){{7=PbDDeH3&X<&Uxan$}Ll5k9K*(n$l6`>HZMnFF@t3&*l*Ped;V%FiHho!Ub z<7h(*Cxe*KtS81bwANY*QF7iP*vrAf;_iA;S#be348IquhzwhIH`9fY^s*E4vlV#I zWxKe&`8?Dt{-F|V?j7tJYZsAV3tr&piL(i~=B=q2c4Z+_9N2dP7xwHA4}S7TMldZT z9)M4L4acZaXZ&#pbi#cd%H83u7gafyI5|#?$;DFRRZP1Y{#X0u%euXVFZ*IKZ!QBL zTO35~9pb=POG&5&51E3~wMO`1EC!Sc+cAjV56fAJTK3Ll)U4)&$%j^zMov3vrQ#)` z*uf44IW03rShyFH$*tk97{g^^MFTvsauf~+9Vj^I>3Yxy+2NbZ`Stpyx?0~XA=AC_ z?XFNz>mArwQ2XE%lXev@H}Q&+W-1U^qIcgf%F$Kj^@x!Tx=$ZHHt1CPC{U(|aF0n& zps)#!@Ryt5AMB=x1cbL}w4?;z0A1VN#MB;y;|C0La7U9IHp;c*i}~gJwyAD!g7Kpr z&ZLZ6?eAs3dUNiprVB^z3rxc0DxyP#NSX~kk?6kpbM~%h@NmmV?~)82qJ|jQx`b8+ zelw+z#%Gc|7$Y)50Z$F3R1u=YE-;a;EbvGc+7T1F8Zdj&c;M|!qtf({)V7!N<-DTw z$&RRyLV2uvw!7N!VT2vwqmQ1!auO&v;rG$dZlq3Us)WD)_v~fg{C)p#r|_F<{t9pz zl5!(ikM1%x(N-HD`%!KvINaE{6CX)p{S_1J9E{i8>PQw_eO|0iF3>O{$t>K;&(Q6S zZl-{NdPlc^?i#$+HWrQkSrf2GzotYbhO|idL~9=MXhbWKcOR#u)QIJl z^yUZ-t!C6nVpQo4?O;da92!A73zkZKVs?Mc8151SCpc?r@;bE3`N{bTc2|Ligc$82 z)uhGydSqL@-))|?HjDOR(=1Qd)#qjb|2y9Sb(Pw538(AcK(VIlmKRRKGQHQBLio%K z_W>D5EG{6z*El$vVe!xZJ^R$l6F+wx@TZhKF*P;k%2H)cBT!c`y$FM?a0&xLvPT>whli7w~nyt=2ae&DZ(n9RKg2=aVm5 znor;Co?UkJDqpiST>scU)>s-$4NHcsE;Y`_im+al8tDJkLqR!{hTBk3@DziX=ZC0Q z)WRC39;tCN*x2Ym|EL-IOU4pcp=UxNV_p78KU~N(yEhN&Mt5DC>ZH0nfva6a1L2Zv z8}2dg8v^HWSb0yGc%4~V=GU1ex~v**zh)$Kl!-F)f8V-h>mrrY{Z<^1Ch#5Q*1=N{ zYYjEV7ArG_n;9j>8SC-5>ka*-nNd5FvNqBlIEjSUGRe|%9Ocv{vuEq(^Ui#+WlG52 z$(JubZ7Uv!kDfyGD|k>mX8exv6#gvFiT@OUIym-V?_r0W8T$*ONb15 zPd|1vO_dE~#Hhd#SOYsFVKBYEx{O)yrw_Adaq)y_De(jW-$c!Y;>J2CC@Gm0T$Lo@ z@i#N5RcWfNfg>=PZrNLK=$7GT`3xMNWIOeJ(Y@AixC59YyxD|G$@k-cU)$!pPQng- z-1|MIEx1dfGd!?+$mN^3&U+@@aPa(zhusVu=-7T-Z`}&2aSLEQB)BJa~ z)l)z*%SX6;4Bzspi0A6+@KoC(9y>u^*8@>MUvk9?@5+O5)SFOzXGP~ z9&1%HQXgz4Enk*BEaa~lBlzJRfxl(;V1_QdouB%*0KO~hvw8Iy{_V5X*VTOd2jOuv z9lTp9@r$q%qgU|oDJ1CFi}mduTQCy76r^T@$-spBhXCKz3I34d{z(n?#-zi2E14`v z{S$6u5ZX(^88@=qe-)= zN&Vj~SvMg@64mqaXsnDIrg_0`*Kj-I0r!~u^_Ps=rA6#dshJAAqe&WX_Dtex(_Wod z7cG{bcP+=29;JV}>d)WK{`|jaXRP}; z%E^Ir*hXtXwM)yV!AJU7&;$9f{k@D!6OXB)I_pK}87V5>Y9dNh)$wMg)fu~QYd7m= zXG0#ZtM7u`?hpDHmG$8HQ!ryHO_)DJX3J~IYmvjN^UHg8FzOd)963E0B_R*B9s>vk z>#*DqU)5>vpxWQUxTf)F=G?CrgOuGBMI`0<&`vz|i6zIkkg!&l&Ej@*-tLX++yz3` zAKO?Qy$7l@T>sd8XfBNi?2Ogeg@G?t9*+9$zuY3#+ka&gsidrhfv=i_qo$nIN+@Cl zD`IKECdP*)Ms3YqF%~5YJEII7DGjV`P;-V8KR%oM132Vlb$t!7>|${nv8^0~%Hxjf zPiIG?+7^6ziyqsOs1+fi0}CFtp*7D$M?>KG;dM0d>^@FS^DE1_>S30e)XWerrFk55 zw7;!U^7m0>N59cpKEYq&9!>a8T zD;224wI3Oddzz1BrQt)SVWk03s%sQ5(~XGBaCSG2ka+*ewb71nDr2lj2nZb68xV`(wo;G-G=FFNA4`$FomBys*G}g5eOx= zTp3bOHX+>1==|lhb4J)5K^w|^upHjVx36b!|Ln_0uX|(eK8}Xhs4IY6=MKaf?Avf7 z{n5gG%SXdqj1Mr3)Q^HCqZ7d7j-iZtFsDKLlpT`-J=a)ozpj?cwmNCf7J;QUc`cJX zPW1lB@~cYCmQF~x

a-`W9y3k4Rl>S{s>RUeDjUG*fO#DM>R0k+BjA+w|5kFK`e< zmg$28TNtm+j;5;aim@V+&btescQ*VA@T zHyUgvZDQH{7T&RqnOBb}ioHs*WaK?y3dUw^Ku%7D=?GL9$Nz*SqiA%x$IK3x7eo7c zn8~AHg4o74MZkQ6J&d;=M;R@GMPpXS^-MDO;jr5snvIZ<|1e97$?tu+U7fDh)$I*@ zd*>JDA;>4wgN>V4e?Eo0SFq$13`%!WNUlK4)SK-Ny-z zQ!A*okla0(6sffqR)J$FSKRUUQUD|CEEto>BfP6E+nvZKV%Z+t%Cu}Q9Weedf>ZZ+ ze{5IPTOpW_%|SRi`Ob@5y zF&d|Xjb)9pZzn1D*NhFc!H+%mR^6iQ_Xgh8y1l->trpGg>gGCzZosRVcAd7v>wRvn z;eX0ysOVWm=G#_`V=gfbz;w+BoL{w#)8cQ8AjGI`+fCx_G_=g^~!O& zza~|@#@{3O+fZSlwNmvx8fmDY=omcpmwXW$vWh-V<&tA+v^&OOF zPCfTiQmBK~kd{*Am=vT=LNm#!SAN=mJUiUQ;Q)7k$r!?&7^I^XY1vD z)#l`U(Vn#d2XUcVu6s6xYPrFZQ!plQ2sXge@)`#>;BU%8@J=c%d@+0aOSC=GeVp)6 zj0xqYg@)H$b_Vt+Y2jdFqZ;UA*5xf2i#OrdlgS!l*xhqNyqAd$ZGj0QNT)h)m#8oi z*KOS^5gZRH`;&b9JTQFR6wH(g8_Z5Zl#7@d8JmHQ+354PuFG>l18JA1!Q~k$9Yzw& z1claI7LmpX_fP=f?kyRMA(8f3)XZ*?bL|d$V#aqhZ`bR#x<0>IUHgWYV_-SR8~13k z{oS^}(OYif?GH^g4?u5lZT3z|iSeB2B_hh< z9uAgz3zm%Has=iJd>g;OpmhnSKgkwHEb=^UzRpjpZ>zlyZ2IhbZ5pSAo?BZI~lVV<1{5h8LAl4mUF{Vm{8b>n<4s zqB1r^aL>USs@>I0%r`cR_Wy0*=-1WP)nXtM^~10R?je_NH;#y@dXJt!uhHg@e#nq|EK0uAIdzhVwKV3$x56yUv5t!I=vHV z%jg3>4wt-pz$LnXyKu<|&z^YVDRrRa))CUMTG0rlbfWg^)OB8GwKCwf2pEV%ie+f6 zrKE*g8Q~uCpy^v}+FLT}CpFHH5v5ZD(gU$J{S%0_g{q5R)-A-j^OK9}%Y1X*u45_a z{f5(qoT(1uo$9Wsr}GwRPwTEeaYMCM_$jGn-K+$bYz6??gb#lIDe8mYC)@at)xlrJ zWuR3!Im{_3GPM=%VRW{6q&(!U7qe1oIuS`h6KUv>UsC+sVh+vKYOz>VRBlO1(}vnN z|3|TM?%C$sYWN;WQ}q^~xT#_fG3aSxFiTO6K!w?78tK|0*oW1l?&E00jEvg0V{q@0 zuCzArUp`-S!Iq}Kue?Ii_Jq`3GFIM|23bXkE6R3HRCBtCa(Ai7)a4XRIF`4boUiAb z>(v#w)(Zak+0B67-QR49VA(y>eY>0e>m;kZ-b0R^)>0ENIt$SiFEPf;>b89P;Lbq1 z3|{FOXj^MdJry;JeC}2k;(`tLkTpBD9n*~kg@OWn7X5+5M8e>FEn)!;%;b~M2I8Cnpx(Gj#9#E%{hG0iVQdp zb}>4}F^1RiSBzN`YSh3ctVn|c@VKW_XZ>zRr>oCvFr&rhBCw<~M${imwh?VJA8)y1 zn~$Q(XRoqw*T_B5eN!@B(XM2Y+|-5>6xn8uD>9aF;%ogB2@?l98V73!99B%+aoIVU zp0{R<#Y!-w4&_Sqwsh65;06DAeS6i;U>``;e{;S0=d!tMXYDB@JEzs+=AT#V6&4Q$ zl~%Z@M>f3sZSK!!)m*fj^J;V6tS=ki5_j5r0kidPU|_b}Ldsp=G)ZmcJ%0+g0!YPt zSE=}&e3i9`k$#dhP4)Xbx8C}@tL(Lfd`Bxz8STqB@Ib4iU?qiw2Ac`ZTrexF0=J!w zrt_DKL0m-#^0GQvcHM)Q60d3cbXZ^K7uTzGby-2`xokEA{+>r+sLUgs?Js55=1V!2 z%J4Og?dSDCyPJ3XQVb*c98$Y|+&ubpslep=MhmMMHINAwk@O4qFlzB5A+on#OgxC( zU8%4!(yalkFGrR8sB_Ji*j8z)^P98tJ8I}JaEU>s_F;QDW!iC7p#B7RsM5OckktF} zR-S^p<$?s6slj<9j-(mG;pM2!J)M2(tFRpt?EU{IRfQD{W$&10bGF82Cx=Y2L}D6l z;!vaW7mQ)n1;ye!)heBq;#p6F{pY@A`B$@Sud79M(R^)|r`dVwF7uB4xfIAtgXNCy zuO#;?q#aC*f*Yo`R-y4Ea6iAlcYW6H?{j=sE>q-zxSw!0d5n=;dl&wiQPpWZW7_B1 zIzV+Aujn}bEk?cL8(0yI>HHdzd$ha8oTc=o-4~dG`?Ey(lmEiPS5tP~ahWMp^7`%U z-N$GfvimqXRDx6VigL$*@ri^p?0h^%8#3J2Xy0RmA>CUq+VtQviMWyM9wc7HwC0za zMSHOUzqqb87hhNF>rDt-&+RkrLWk9#+avZFy@wpzi^4U9;?W4WMwki$X);344}Z*l zd-q_0AO7equ=_Y694j<@<#^9jiNhJf62fSa5H#FG9;My(R-?b@F!@vX3o8-a!^e_8 zR0YD5pLX(h)!Zzq#p>kZ92`_u(szIokb8P%6Te{PV_TfoL>vTY{qyPUU7z#)>EwLx zlE@nbv?{N&Z$xdh4#@-_4bZwf+sz1|6@EnJ3>_d#QAiH?U&+L)Eq|@fm(|rd)?BUv zXnH0dZr6$C{tS1pxjaZ*u=vrajs0e>lx0loen`Yf2-?8) zl}r}Hy`%@Pa#KZb#h91(y%6QDGV!dxc$J`EawS+E@qfFYq5jG51jn;u>%h11OuHTk1=#(o3JlY_Y@onPY0CkG4GKX#Q%fLR1me!Rv} zl#Z+bJRqC^-T2F3=@R|V3b*^ly>UN427mkmbt>s4D3`06rY+uFg02CDU?&?xUxW z3rj{q{mo7lsWv#+7-qxkjzBwBoc_@3!@I@l4@rG^15Y4?J8f8_Y9S<7Ton`y40m%l zfsw!DFy`jSQ6)5LvZVd1^N-&nH*}u$ddTjM7c>p*;JquIpRMl5{I+}1^cD+Pv3JV* zh0vLAnuwi)=TAI#R!Rm)3u$Y}5V(vqpb|yueL7H>LBn6pBppVlS~JV}?3G``nD0kn6# z`xdB&ua+E%^B#8eXj+Sarn7_ppm;ZY7ej<%yb$*4nOg{Z^(?cmM2*%?Ux{{y!a3yy zqv>!nhu5pU6=Pjv!BFv06M4A67+%ga;T-n>|GTo+ys6f!&n+St1E!S2Wyf~uCih2Q zqMN*%>{#&hiF<0TgdB|J;2bx#HIt#1MBMD3y_h}!ci*3KSO>e06O0jDa&V6QU=AvN zK~Bw!>UW2m3C-Rr2>;;>sLD>Fy(MERN?c&hIZ z&F1`b&`HkSe~EnCy@2xh_L$Ib@boF9+>kQ(vqQRO+;-f2A{=v%nKyFh_k=JWcYabb zRM(mbM20-Hx2&$EEhae_?jdhrXhbs9T{Fg4C9`0~5X{R60$}jdU(CCuoZWt zPhZa7{_DZgp1$lYt@}7?X^<=`!nxB(Hnuk0Ady+Q_}Smd!NIe$Ty(^h%pe#ra(5ny zh#!@N|Kmv2=xhYYSNJ;KR`Bla;vy8)-ficesYH1A zjNjt@Ow-8kGvqs|s7*6pURQrLCurZkq5t41UH1ldHS!`;y1@%fAyk%xhL{fsuX=nTGd^wD&Y$_q2}`Xov4`{6Jg!+QvwmZ!HRh z*NkKWvR}Ct{q|LkMZ-flSO@JrFqn!ahC$q0upk|7W<1g!vuJO{m_c)i?FjgxIJ_Q> zmov>M``)yd^Xj~sZ_calRjXr^puIEy;U(zs=@V~2VT9|?GivzL;GmFgG<4tz6zA&~ zE@inZdzGXt$GRD{QagAs3r9v6Cq>m=gUyUa*<+lH?s`#9Mn0q9;`L5gu;%hqi5QR* zFK3edry9d`-4~d+^&7(jZx8!3vbOlg z!tQe-c;8t_iy`Jlxtv&**G3tm$`FKvdl+RX7=xO)>%~A}RCN=t-e}}Db`U)E$(!{< zRy|*yRp-t8s@>|+OZaW~B*%JGyK;nti%%haHYyl>l&Zd`P0S-e2lIRTDr$ajlbo!w z7DN;4&QE~(VGpU~{6w&oLwQ-<G9y|ZS#n`vdu$P#i}AwSmU%e;*b zH65Nj=Q>*V$d8pe2k&s~)LFAY9-3-!9HiDLDIWHy62o!zj#58u;xVvP_QPuJKZ)oibm}PtKcmQC(MO zt5smt`{S+0+E4D0?pwLe#af3Cn|M&n84qTpXjiR;?q>G=?SZcji{@um>J`pOg?1p!Pqy8YI6er z!fkc6`WA8!_&Y7rOYRSJ?>5xK>!hJx?n5SS#F|MR3_997N>$|H88C|^jQH&6 z)n&7(uG$Tl@AVII&fe)hwsQ_2HgUU_+NuE%j1gVKznjBo3mLOx(Qd}PO)^XgO%0LC z0f8yWwe)M%d!woSEewVji6E3%p=7pJn7d+(XphSog*gfFc>udxn_P9i^11Mk-Ag*$*N*Kd+Gr*9hT`d zFcYW$_(0#CYGz6fFa=u~RlUuaa&T6RxmC$AQ8G##%yo z+~f8KziT<`UBS=(1E~nr(Cud>_Qr~BN5z9?|pCyY}q}EIm=8#ug zi$wBT7xJ;;CdSG5MoQBDiZNRz2GuvTb|#ST$Kc@`-z;viZ4n{wIX-t!5dJn7V4Xqm zJJ?7WGwjc7%yITpO3`;o+M4%-W7`@h0g0BXJDpclMGwQ-1o{H3?ddO3YwJEvcuy=U zG2YYMQ7UVuv@oRL)RMoKfyGgTdnqvT?5PHK#i7N?nPhiJGJYU~7GBG7tPoDS{k&RT zL>=W>yI!6*>(fvnr4*M|4oQc5$h&&V!}zqqM<3gEHMM@781+N&yNUSwF!D_lm|neg z`#rCmbTrxT!R!c0v#fBc#5fc$gqDv{UkbN%c)Q12F-kUVW`xv4?@Y6UcQWmu_w2k~ z!xpOR`G6De@wz?ki9UL_CwSPz3rgGs1tk<%XPn>FPk6|dm3G3<;!gNk$_Wd2gq2J> zWhDd_8o?!JvK-`ju$|E?b`0|DuNW0_koX1A?x_B@nYA|tBZEA*qNQD z(9eK-89z334OqZ`j^+UKYI?`Utae{{%4W{*VdK@Drt|r z)S}kHN?~casl{L`<5~Auoy%D-2E9a%V^&j^LO<^^-vrk(?dbh$vuM}1)%EJ4S+_e= zT9>O=yT@MMl*fUW-qVk5%>tZOKpOyYG{bICEyDml;jv%GN05`00aAi7bMAU22r)Hb#^r$* zLP}yw&`*YY7+A8z=9ZC?XCtP(C8I-r7Kgg2pqWE{ctI`B;iU8UH?7o}+B`^piVV@buG@jM)NHb1kiKDPiHOu8HPW z2*)PNK$6294J?#fX_VlaCYwgYH&1uLp|kDS{E4lli$}g{SMYZKyuQ6^XRwL&YT4Xe zZ~nP#F5&-Pv=^IZdD^V2E7-{`Dil@sAFfwl|9Q1uAr$XN`(l#qh)>t;x9Sq!dC>-5 zxWvA5oOF&TntL$=tKQaiDzu4&6AxbN*uMwHXdiP0=_S>=z7rqHn+1OR%9BBL;_kEz zs;%J{LA%Ii%HUT)C}RyTHwzqYW^^KdG?n$2jM2a&gJ~CY91Nty%b9k{I~^dUcksIg z=7$0)!-pT+su?rEtO6v9tj^}6e)GrdmBVEDM{m)uwg?*&Wwdst`z?is8Y7hz4wpw$)Ty$8_Vs%6cb-0iV-pFxGIX2OMy1JY%!KBYt>v=nFvAgND>@+?2aKa@_ zb|<}-@aa?F<-i7L5TGMi$#k@hCQOV`;T*3gl-ydX!?Y-oe=r?%?55GnCt(+T+{CHm#mg$ zb4>>?F!7ohl_qE?G30E;nOH~}D9s_pdi@`_3jX>(8C7tI#x<9mIOcER$fy=5c3fo6 zFx*96T0Sz-878HAJBBA9S6M)BJ@LgBfmwbPC*5g7YR!NM54A9d05tRLLPM zAQrOqY!~e<8ROVtx&zl!nOWh+qo2HuKFt5FHtp3p*2_+s&&}hOvc0n`UCIs@pSXQe zO#=f(=r9sJ!53+OwJPLE1rq5HS-?RhoiDy1Z%gk0}0x#7rtCQ7YF<%CghyA|G`O>?i-N97dci8GjA6A~aohlPZ zufV^6LfAT!1p3|Yvv(%KESY6t5g4L!_66Rr=DOgPvMN)7P&gmx# z!mqutpx0ToD=PnnW2!gN(Zh^8QrC=V*LVs8( zIA(6`>9=NmS}kslTJv?!`6xBt-~}cg|8f!ZYAI3R2UsmSBGUjXLDas$#Mf7sF%#cM z_(;?c>>BC_p`h>)r%b7mQfA?9#_4ayC?dTTV~9z?aqttu>s_=^@Oo=F-l2+FM(1`a z#ilQ}tJBrGy1iM$Azuto()p)Q;D^Awh+TgOc6!q!^wN9&#D52j)d6M$94k3uhX+54fHRb=Leh63%u1ry10gY%uOi50j;daJj=FtH`Z^>B1EX1s1 zlQl(LKHkwJe+#lxnSunbO8JZhkjgVJ!U6Ejf4a&8=1Bm-YPYas6S0NVQ|%fS{#QCnkCzO!5m@WITC zXk;_lGD`@jJe@3g(=6tHpEqEYkS@=!!g+@hF}Zsx*~R9x(FDsK+h{D~BygR!Mv$&W z67if_qjw)Y%+$x6R;;MCveZhKMMu>Z<-BbPvl(pSaPYFfWE8wiX4s~+Ds4P?+S5iQ z|J8yqUCrC|x184ka*e*B&BnlQmj@-Gj!lLa;&(I@d2ji#<@)+r$95~(X*(j>#xm>0Zi z;S-44HmfgRj-0hV+`*BuR`>Z+s6jJ}42!O@OIjoP4v_;Q2TJkrHp%)GKEaE{Ab1BXvzz5b+N@^6BG@zs@hNS8E(2 z_}pAytOnVnXOFP0{WP`v6U%n9-yfcq%5|5Vf{BIB6bHghEl>dDNfrv?&Hvm8_Rart zB3PV!LE>fUN?|K%2M5+5RK zd|S86lVEaZcQ!X~x;9gP(>vT<{o{dLZo#9EopuH}Csj3-vitRyq3C9O%a;0Ne6f7$qbx*k~E-X5es{F~Y+AnEWw2Z_QX(E69v+2p-ffiEEmE z8LntTR{RZ~KW{Fpvvqrh|MHIMX-Q*Q%}Va8e<<{|AvFd#C$j1L*M46R$B-aFqcmx+UGTCqvqD8wT0Y3iBIxIN;Tr zC*#8b9LLl+Y^itC22NHJp@>I`zIWkiu!|BN+FvwLd4j!h7ydZF{^OBPvSb|f%lG)= zv-Ywn4=(nO?C=gxxZK38k9So3UV__oE#Swa9-xup`R%6Ix z-Zr0RCI@HaUO;)Ln?VodK7Hbr50(~876H(B=iR!Ya+I%2gwB7mQY+DRvpC)tPhcc<_@n>}bEXxmi@36ZjWytE<(w zaJVOPw0(!F^TT20cY!ho+k?fAUZ1imWPwsO!}&G%!etHwynZ|Tt;YenrRCpJI6&0q zw2;p_!U6_zL?tQqU<;B!`I{+1q3kRf9sE()HlTzT83=&unLuso&cXh*I$u_w7tMK4 zTK=J!3Gal<*Q7=<6XElZZNP?`pukK}v<^8IXgwfRO$cz?7jU^8Vo``1ZN)4C6tLZMh1?N6g?Qfu%W*xryi_G`% z6eXZIif^<#NQ)gG?J-U48`g#!7=W0FAe304q{=NNc}vEs!;sHFu%PsoLJ}VIGz!0W ze)0m$orbqFC7bJb z@xiIxwu|{@XmWX*EK~sU&Ux1mHTzBDmK;9&*x@NRRt({W%ywj&l!SQRwAkz)y(e^Q zJbxrTp{}*1U$_lD&4YyN(#L!=J=oQsWBJmE~@lMeFZ35KewV9wlI7D__);5zr=GiZ^w~i3k zFTJI|O~Mr6^_1jPI3krq*Om}PMM+B!c9R8-7%_Br$tWWt#~(67#i9NhFK7A~|4nnf z+MLg;FE{I(i{@JfgmFJ7p23&+aPU9afrrmNwgWeQ4r@`G3N>*xBy1TuEX3c>Avs&C-!`E*UeU+pZt@nUqo0#u44Sf9}?$fCK6wc!$%C{e1xudNgT~Vym zXe&oWS8k{aJTkQrMsc5rrC9kk+*f+Soa9z-y(Odc40c9n&D;s|?*+w8dx;gAlj>$3 z7IBXV>mT!z-}^8)a=uvITvaFM>*{(QD&xhs=vih0*$?*xf%SH7hleBGx0XA6uQc<6 z`>-mxfL%0^$$t9aj^Vg9-Q*Y!1Pnw&_{Mb4!;e@1%DD$tI54~o zH#0hgGu~YBmWFxcOk?qarlWiHwOO?5+v;Mq{`=-Jl2!1=%lYywBbs&3 z`54J+_yWf^WU6hDs6x06DP#?SUp-(xN+hbtg4p|9j|DMFCqZgOB~wiHc`BTsf4j_K^(#1eLd-)_o%1+jjfJ1aDPuA32FkV#3Zm^j=2>*zn zmA7cD_9VrOAwBhg+4Npr>ER#3In4x?7;kCX)_p&F*H+i(tM&3al$hOZ|ApE~-c{`9 zzjt`!WL3(0hl!(#DHSZxO^$5jZ|_{l{%`M|j6?RpQxOf8#e094zDY(!3)8HL{mCDO_7K-pOy3l1E!rRMYL&7x|~o73uYb$&U} ze+_q2qBiUvTee}v-Xu9U=dFKiO9OWs_EhzEZWCGOkd3~6F?;RcpI$goZITQPc26yL z84oSfQt}eLm+<`yRDr!EV}UFqomQTe`G$t)J{?25oS&RG?V|dt+FZ`B&-b;m{P~yu z#2&%M!u5}BV?r?=l!FM4H6w;DqJx|$?1G^=^QW$%CFf7!F^n4s7@ZyrMI{lbEG?*t zG1$(yEXLS4n!jWWw=2kusT$JK0~O-%cBY*)t`_ZCb+Nh*xwMPvzh&fz-huC$BOay! z7e0F8si8K)pO=9!k|IyF0yh_ChVe?#JFimoE~`?6Xhb8pPk#sjEjJ}AMd4oZ=H0df z^xY++#a|BjKyA$kMCr6y!?V(4Y8{6#+|5suNq%bzic{?Q>^>po66bE1tls^@32 zvX+)wOFc4)Vt|TpUnOKAy)|PUTllH(NMGatQE}PKm$7*`ypL%+@S96yI$c#~H}lig za{eR+rnui-33GK%abT{QAPVPwl1*3dDN{fQORD`g4dVLX7lw8a-ppCmcfZcwI1iJuDh}9k4Ne;1cR&y@2?r{>xH^!Lcz9-$k2IX&|2uZlJWUP_GC1SdX zBuOUzJIyyS&WLtYUwPGB!p9Z-*LoFjlZG7pd$&&dv&yeNZR6k%mpr;nNgEWL;3r)n z34y6)=mpc9EARRU)y37nOGc<2Lfv?b4YcN(a9$LD6l~^D2{v!N;Y=$<8EqVvbEyXR zCtSh1nGS|L3W%sZ^Ti@44igY$oX_dW zyq&#y5w+bnDd?b*wI)PLR{%~T-AWOO6k!U0~d7V`?FOy`?{+;Iul=blQo>r1=6V7X)4jbc1-dxY26x)b=Htjg=}@7yNK z?+$PvP4bC#86sTXY%6L;rQ{_Qhr_+(aTAT`JGpDdWGs+l+0II-wFgdJ4YMFyn*LsTQ?0HA=hWVEJCY@>FBo zG4E{?DiGS)zLctEZKb3}&?2Q&e+T1H?-;PiSud&;19wVlEo3@t#8aLIGg+3BVxb;| zcQ%LTj^T30c7<}F&Vu~2yyK1>kccH3haXGGsN6Ex z&f%P2!J1L|7S^#|NO7Pb8eY$|&9q}Oxth1@bz7Y`^Rs2Uu67Mo%YkUUqc0z>j!-0c zk3P0#bHW3E3(faZS}C&&cR>W99|;YO<;lB7iN6w16V2dbel#WZ-}a<$rEFNee7 z-34Qs5D-fVBp;QBV`TAWj^7k{@UyFhZ?A{LUh{cP+;iR4Tn~r622Y*z@Zb9$nvy3}1}Vr6tlh^hDOyMlh+U6(x$X;U>mo;xVFZZ^hWi7&XXl zp{?0kipBFjUaILePVT#uC+F+=265?MZq6X2Y?i@rbD`p^dqRbZufdWNA0sh__60jh(9?vmFGlW3QD& zAb5|Pf{&D120n6&)M(U2?xB@LQD{_i$7)d(+eoHNp?>9v#AuWtXe)qcyT~X*wU8M_ zre2jPIEV*-JZCwS3;nuiPUn~Nb+x!{F3!W@O>Zj&Jf?SG`5rTTjU+tIUM z_o%tpb;JX&W4fq;JBz$*Zr1a^=d0@Eyj{e{uy&vC7;jPbN4j_2HgmQkc-F*2+<!UdkZFAoi%68AjsWe`<|UAsH<~&r0zBBS}@w} zbrW6H;031Or#TA*xKWS<6^J@&xJ*y|>4R(OE?Zuj`~<#OVCKS^MzL6tF&a6(9>Y@) zHddmU<1QJ4=+Z7O^9b~EQ(3&3>ALKD13z20XRuCnQlUKXCS=UqJ(bO`|GKC91CrU` zamQ}apuUlBxDp2tv4v7o5sqdidau8{cazy)9HN7CGRshL!6Mf70aK)LHiuePut_u6 z&B53rf5m8U&1b~cTn`v;_oAc63z~NO^-j{II-7qU*zJ$iQ}fP#SI=C8qCR+mV;i@$ z+zw`CP%VtWPdf_z+4J5S`T(JK7u_KfO{*Zipsh+ zt`^Jz#*G&=oi^-NMeib}yjy|!?wpTe$iWL7+mNXY$OSDpArw>qN2Ee0ofvw1=?%R( zbYt6?1+Au3IA)B%TC1@PRBq@k+)HT1f>~jeW>)2SXm7nJlPBwVBMmu?G@Eo=O~FL1luDDP7RZfd6537#8BQLD|#`L}j{ask&_ z#;befvwW}K-^`J`y7vN8D4c1<{RWrlMmr7sQIn&L3daBPW7PP&k7LF!5&dD6G(8DE zvZF9+gy1Cd)QfVhs4gpoBG(G$xBWAP0r>o_;xOv0Asw3alYasQZl-$d|pd z+o7B6zC)4#-&=VKmZo^X=t(tZdUdBsmSJhnydu}LoFW%k6@1zKKC-Hr(HeZ7>t@Rg z{rLMC?I929(o9N*j@TWf>z9lnlCclbsTTL9ch#=o?f!Xvd)3Zh6YJHoxq)BqWpmli zF50gU#$Bx2vv%>%tMv+Xga#B6JVNwY-azm7x@VL5^J=-Ax7ACN(U6HrO)dITj( zU+!HDOnF-cdykh*LYci+n0VYRENA~uNI7A#{|a9tkxAG8^!@BZFG2Iv`Aztcl%OHC zwvtIpwZl50C>Mm4(_tNKCXbzPoO_~Qbm)rjfC&&@u`OaWyC|{36-_eu-XhexUj2QJ zUjg{?Z!Us?`5#*i_paj@;db}}$1b7?PGtzTMt97*?rT;N4WjL*y$+5WZ9h%w;J|TF z%a!fb9Vxc|hy>FsheZkZGO%||wKd8@kiP@Kx?eKp{Rx?IgMZ*~;wZeEX?MA%$|dDq z!>(3-IG0rL^ojfYP_MbmDzTj#R@xE(6-WV|$5ViGD~y2=apuad8v~EkikZin{r9$& zH~K$Pa&wl9b-Z!phSo-y2%K~if>Qo}P*Xc^n`+aZo+e-_-#48unC(_gch7fV;n~>I z%^0ZEd&seUHM2Sdj*@OX7KiP4h$l-RN5NY==IVOuZRW}doPlGmNOhwv1n8<@VLaST z2`y%S(I_>X!ryAE4koUG+nG++Yjcg?)@ofX;T#sbdg4rusysvO54gN59^t9-9zBJ6 z8{;%cuqFH!69jqHIsC?N{x|#7&o#QZ?@y_@Mh?!_aH?D-bzTcf3?<%N@NDQaPrgQuDUBET~%;gi-a6{j`U!{*>05HiQ$kh*oaR$C=(pX!%=sh~KI0gYD|4;U~BK*p7h?7_?G|4M?e=iDMuP&N( z`!!bboEM5*rb2n0ENU(&rZ*quz@gMm?ldH(CfM00%RynbN!@_10iF9O-)bpM_al5D1NPnCQ zp&QtfrxyKNp5cS%fA%8k`JW|~g+$E>g+o#go}Z#k!BGlc4k|v_&A{*#C5kf5RW`A$ zzh=zzrJQy6IDYWdbq5*8JDTJVKwLwm`8q$X7A<@ME*t+BVBgv6gSa*O%h>g&pv3HT z_yQCEJ>W!y)15oj;PzlC;;J^%b_F+weG`5c2vtSUr6V;sE#Wu7GOh9p=jjq0CEZM) zK{*fV&WqfIl$aI93UGMrleF-di@!c!T{fHQvRQA=Ki{mQ#ku>99_r1*^W3#G=e$S6 zJ|nA7p%5;pqyyk7W$11qQI0K6N?*B3$P7S4reyl$|%@- zTm;u!a$t`{&!mFCeS6$@ehcqrBHWvMhTQwkagCU%cg!V%?)(|9$kQk8W|`o=n>7Y< z-WqW+1D3Kx%>Dk;tfTJyu3z@4H}LM`1Ro$b+!DvYHG{X51|`jknRu|5Jm$`=7VfSX z^S4yu=l~V$&^9$(%TMEm@1>TO)%SneJW?ln+&}l{{{y?&kw+i9j&2y?LFY`?O4r?h zac(aCcJ{KjYd3;^nY3$JOC~$AdUrTeX#%dhTopasOrF;02-~N#T7lX;h=8*W9nw%dH=||S>)NrHf1hJfG49} zcnR-kYY`U2<1zSe?`9wR82mR!Huys_24}TligBkQMsbKjGa+m_g_*%-LR*%d?4qSR z$US*W4sBVYZULkiT*<@H-*`I{u;z!>*ZksowXQBJaP7-xbK7oX^?gKmcX-a_z41sG z9zK2YVYv1OJW#{a@Y;ey&6%Zs{oeD{?{j=Lt(CIe6*)z*dPBIBhL@;z`CAxGuSfb^ z?s7w;RviH}fkF(s*QCQ!%P(jpRV*S) zPTcOS4w_DyqV^`LGl)=;G%-kth30;+$}2Rd2CJm3g`v`TGzJhR3q@?f!Kz>{2dg}} z>kTcCbT9*2TYIQ%8(zv!W24(RyR&v*!qvKGU*6RwCnY0~oA? zqKmwT2o%Bkv@yM8IEpKQh55YQWuT+sj`o?62G2`;2&uPf)WYeEYE-+*$B@DuKo$m8 z({9c$R$rSGc>-M8kKj(Y+jE|j)IDhQ`h2xs4zS<*ZoH7aKitH?-VcF}Zh7gn{kyL+ z1^cIx+Ym)+kX9dSx0HtQbjq)L6O*sACMIbusRJBG7C+woRS-ZL>}0(5HHsf~SB$00 z)Xtc!Eg3YC_o7DVZf9CE9uOQf%c}eDc6qUiwUG~`KFAyY2#7C- zA5L4MG;(e6kA)*5Y4ZNxUPe3A-Ny-;9Y!ga4phWiY+B1l(?t*VH6G26x2xSHqwd~f zszU8hhHle>t>9j6=27N;xRpsp@X?~#S-bxKsQb3=Hf}8IztYR^RgL?FZ}BB=cVf3c zN6Ad*tt8PRBZ|}_DSMP(|D98^Q~(NKfh1&>XLZj-(?Jygo;tUE_HO%E+u3~j%|C~8 z(ZPNT`S7RX?HPLJY;^y%(q7tq*ciODkjyW6QEO_=YD8Vbzw=D@!<)(P9gEQihZ^|z zB#ROJgurr{)1xxHR`6pCde7xdH{94T^m9mW*;}y>G_e!Gu!SKM%i%R>;UsV!<4~u2 zG|O8EN*7H9|82dxk6LAnt>8e+hziBbPXq0U91-9evY-wygGGvn$KmO;X_W{_YJ~Yi}OjybFJ$hfFov< zFJHUV+Ap0NR+3s}YrdmG z)F;cOCmJJ;#hRODyV}g=)#tnQ-F5S|iJ4js&Bs3Ii0;t#wY4FdkI4Ebw>BvP3Tr0X zAC%O!4P{^w#`Z4Gh?Sn_F|{PdYKSRaG@`)~TT%ky5bj}^ux_Xp>n<3p$cPqXDr6eu z(ApLp_IRAw4OT6e)nC=;>2})-7(+C}!PS)RX!6ZzCz2spatzs;gwJpQ6M`%Re&)3f z9aaj|`)TsNqo#7Z8t+roR9G<4Z5z{>jAxL<3Q|%_$=}LgWH^WxdRnb#N2syGaN3V? zd-O;=+{nnLaJJ3js@YaIcbn$C=^+4*#qef#GQ3mXx07)shBtin$eS2UhO9R@KO}gq zY0Y}2&_oO4RcF@TkX_2G6|beBn!1D+lGN663m&V4cMLbt3q=i+D62?_$t-(%E5-s* zAuz7v?Jmv`%Rv%Cm;6zvX6m0H|0+%qoS6^wd|o;n!i z;JE^XP;HPQ7`_)dwH1g(f9qH#+*tIt6w3rBwINbV+M#U?7@&br%@nDv1Y0;>EZAAE zZ)sS@##))xJ*Bc(Sp|`|c<3VvN^w#RY-+K(o&JpzFIVe%H0z5NSQ3!ip&->gwet0q zVD(cQnV=Y}xkOG#RbXpMbqzUDrc>KpOTKTStr)z-$b((3gwH8qYY5aOI2#q>brSTBKYPf$ zpL39T5PJ}!TXTF0b`|{m72!&kL)`mYNtc7N`CXg^``-dFq55HGWr!W&Vn!Jg$7z|D z%jtGjU92vy*VDx!=DNQJ!DDz2`zE@_5rqkCEQDvp6SjOthZte<$%~Sg~hww1?>gi>26*ryqQsc3}RuxZSw_^`19%F zKCjXp*?$SMchA2>sXP9fNnC~Z@KfjgEX4I1iT(=%S*o&_8(+I{LU;Nu4JXvK)WUKp zRYz6H1Rfq$eobvi2t2a#sqIQ>8;BA?1ltl7^T?=6+-3gk34#BdBLprea-Fq9 zY>p7Pw1Tjbyy(5n6qs-E*G$Z_N&=gasUr5%|B~-N@t(%5kFZ{yPuJV(wpm~A1{G%P zzJv+8_i$MLyx$A&nq=)>=EQha^6oHDj|dNKjyF-fvZ<(TRBY<7rmiPA}K1>hccEba$PrL^aDjuYH?T z8NkGF{ZpG63xSEqet=Rs7HhA0;i@x&=7y`u5j1XaFq|4DwGlyZ7BDU_ zjWHKwHx^R<3@iHe<>cMjlNJ5?(uqvZ(n%j7Tvl*%2x*Td{9r^yu!TWp!XZea zyI#ysVF?coR;!_$58)K;k&g#J4;Q+=npY55POny9Rv{5mJmotKM&X@Q(UdP-c?^(W z8n#RDQ!HyyiyU6S17bjM%~o@69Hf#ZwIEz`AMSgoU3nYG>XGiu^19_>g!|M?gn^LW z>;%lySOesw!_QZ6F{@<-7jzruXk`%d-r3|^(JsV%xa6t55+rgu$e^$i0C5aXHHNWW zVz~L!?{0YKvfHN_1`t`RtT)^YS(KHMFpmqY9K%4kv8=($-Q*zNlCk0m<2cPn+?em% zsO?QNU&bb!@j}KE{e6YU&zqa-yjo0`t9f8$!B)!DIl3e3SzP86v-3X5GKTk*k@o>L z3j#+gaL5o0sLsR!{Nl9%f5~YBa`*~r0}jtna2y#)cacrP0}jGl~#gg&tW?2 z#ejj|xw4gq|II0|z}hH6;jnQUiU52YuyG!o8-|-0mT?|#S9oj2n*3Z$ z2!!GyEM)flES&l2{p^Fn#AdZz-d7j!%a8UNO88axV2V{(f<;emM(~aFV_8&kB(zrW zG0mL)eEDhe{@2cs+}Y1x)5#!*Tk-e`@OR3sRIFV0FWgLMO-34PxsWy=IqNMMGbX_x zL8yg27CeVHGp6SIx>;T?=8!thn&nk>IdA?BYB9%Q;qsX*-6P)D6CR0$3m!f47`Q+F zi3%n}!9P|rmZ$J?_UGjNf1hmo%uzgV|D3RG2@cYmm4O$7q!0UlWfflB%@j~;^4E-w zrxAi_xS)GkcfX6?P>sP97*VFCxzFIW*tGjKK$rdhVl*XS6_PN4_%=*5XHS6={ z?rIjTa`ld(L|E>g`=RBo*o!6U`@F}E-QZauJVTkTseFKi<}^%ydFz$E-e#1&l&&?W zOuA(+C2A?DA+!j;U$BR)Fn+hAcUO${Ou0hw5g|>&&-d(^jZ|AE*PiDKq^fUjLOBX= z*Ch&B?%D3qWer{<*=Y3^A4Q{8*?@A>JTNRj1jT_#CPX6+7+FWr2&SoWsN{{TwPlpB zf&kmzZhC%~86zy*k;$G)@z?B|Cw!6xqEwXPc{S;@Xaro&$Y_=x+ee$~2CG}MyMCK? zc%LN<)jj2s73X2Ci15*4_qm1#ASI6UCI+P(YMJA7k%TZ#{F02YAv%@X3e8nFd5#0! zkarte0#e)C#4vJxkUPy?F;+Wc4;=>1@)5Oo_@i{ZG4#b>)6bvR)BEb1jmMyYh3P=u zGu^X>oka&4tUq>3Wjd5_1Czn74uyD-hb6H@J`C3S@>A4WUnZ3qO|3L!!?c5LAnBMA z;EuI?mVCIkvpmM$ovhfwqEY@Ph9WkWh+KMlypvHHaMU~R=7-pyrGAh*+da`kv)w_8 z`rsj_Zb~U(Y|xals3?T;B-G~2sGNP6yzd<9nPZ~wlO-zwA2DO81D>b!TT9BrCze50 zg*zJN_>CwnN_aQocch)NeDYbahAW?jEv6wbrrYV*uysu|&RXuL?*x|H` zyEQnp8{cgAK7h1kx6SDnd6bCmW%Nw@P?D$A`z9^ldxx?6Z>4Pj`at4)R%=t6kYO>! zRQzG`?~h$I+xaxKe~zZokP&Jwlsi|$YblZOp&-3OxS0|Z`|gtc&w-tAl;x{obH@@E z`pGUoSGSn#gzxHU)Ov#q*}-(g>@{fw6nL$s?E;0GWAEauf_`UU=f_f3zY_4|2k_t?L;*AAY2YO9tuU}J(f6WkE8 zABs%a=&KK|lAK#cODoC2{vqU6F0@S7@S0MTgq8(+IT}ggt``f!37tTkZrA|HT83(f zJr!Y-8)bj-5qL7_8 z;z$!Y?=Sy~=Dh8n6W~muh|(@=v8<($97l_bOfdzU2rUk|QmxX==0Y*O1^f1fdTQ8X zlUnbb$H(Iy8QkL$N4c0Ik3`58Q)njNJ)it8@Xne1V98U*qsHn$!4AI8lC>ZH6YS>`+!()mrh^f0ZjBg}cc^S?zA-dTU1K0__AcWq z@P@{nXkIqUIZpdF;i&I-rTzELecx!c0PTPH{IN%@ocn-hrD_P~AWyDU4wKElKTh8L zzbBh-TR@MY?Eg#IJbd;kF;;YyC7c2lmRsL{7U>iR`#E4B7z|wquTAW(8ACrqoP>(f zT;?^27pwJjS#4(PIRgF?O=7&L(}uf`=WuKfc~M=>&o?1ZdhY`&P-gb7s#ps-^|ndO zwf7FEjszH_lEKs?{uto>7zU7;t)!2?xPa@Azr4r*T*G4|(cE;1OiOAbAv7Q*XPSH4 z$&vxs843hzM&-f81P7s1CJRUsagEnA9(p-n5~~+`e;=T=d${{L{3C(Z!K26S>lF!r z*2v39m?^c8MKjF{)}8y?2~Ar|s;FgJ z<{3CDgRb1`AVfn?Ic@s>te*NS}r=GZAdpTaBd8}gU@1bBB)KIR|(5QHyq zY9}t0RskM_p`K2y;D1<}m(KtG+vKPJL`!4spA(_Ih8R&eLsJ^ra0vuAh8M(x1iLv} z!rEW4Z{%Xa*aW=06h$=s@P5Xb%s)1tn#J^b(=0F7)uQ<_y}zC>_cid6IlX)Qr^xAp z=bzfVjUmBIBxCr~Wt{g1rsBjTAKto>BOjbO<)q{Y61Q-sgsbKwMGeNSi7XhP2YVSL z=o?a}ch`$%>o|l1*59-2Bh*IlhE5-*KN|CFI=`IWfWx0wo9*;-v%KHT?w8f=yhmdD zEJ7n0U~cak4zutQVk6;ej69$hJY>?fIB~%q*kSWN1aHpV55b$Wj1PezwKWjUKYay= zt(7*yl%yvLchYn5+)ASa*OXE4>LEL}<*3?)kM{V7O%2k?eQ8O%q;dziWBJ{&?`!$TLBGRCpE}HkpK>TQhB_r0{*5iP>`MH*H_=Lb`{%?^2bdDl{~3pU z%o-t4eWIL;4|j7c%*9_YN-nA=RM(pI{QE(bI=r9L!$lv4vd&T5bA4Gg$SAg+Z>qo6 z)w7o5awat013yVwE_i`4K-Lsv!8`|PX?j`?c_zame0mDg@zX9&H0`Ht%@iZtEy6Qi zYsobi$~gb%X~A#|NDd-!R~37 zkHLo(f4!%VJnyzl2Bb))mJdW-Bt*+ZUHNMlD&q>3riF44cIs-BfgN3NZc#O}=CZn3&2F0IrEl9gZg`05$UDlO z(H=DJ;Vw6ND`dW2Fv2x#J2F^jl7zncWAbaq)&J^`&Jcf1a`i(~*tR?CWsLrpiyJ{(Y-n;iJcH z=q9L%finafe9&hiIpk&^ex00kG$$W^?d<$4MROwH7@1bw5nn|B8^qbtDp8)?EZkDw z$fX}&bIW|xda!IP#^!25r9XDL3+a5(Y-iIoyjXRyT1>&MrNHZOX{Y@Vd^?P+Sp2G4 zBfWjKp3XP0C;y{x&~X$fi+h*T`#>BDRp0f-$>7|3k5kvkwYEVEyoMAQD@CD@Y{KjR z`=c9vy8|q{!*8QB?{aJ$V9^i;2qDVl*zQi!Aa#;Gbp5nmjOvI#$g;R33P+U2@mj_S za0{E=8(0QWtj}63AErC%j{hWu^56wV9s^J+gCaVTb|Seh4rH!ohqbR^nFQTFV zKcy_6)ktGVTfych0u?I-Q6&{>d%HP43-_0djev8Ctae1mV_8(%+ZkotAM^J25Smvv z&0@N|m`#`0g(+6@N7391*!L4~B*{wn>@gJ26${2vN&EYSv^7T%08RUS+_c}PLVQyz zVz?BYX``GS*NO^NLJ+{;LDtaOPIvCC7sIO~Z4Ro0dIM*-Ra|}tPJ3MSaEwwHm(|V1 zvI!O7yIqvaBRLW4z@Da0)=Cp2eJQ(R$2x=E6rk((*X$dao-jTktk#+oX*%N-ogPo} zRI|QaEf%Y)#oC=rx7|DAlQfot7dW*UTjQs@$X{zIgrM+0GNp2U>w;dFqvf|$&?^`U z_7dg*N3=qTFd_VO_fXFm?&0WZE^onDvMUuz5>i8V^qkDd6WH_h-Nm%JnJ$*|i|hT{ zNy8~=cSu8y@piqsyt~*X+a9boh6q!dV0Z$nqPG3mQxbwJqo#BKRvKb#aC}7Bryx^{ z+7iRGpFbXIO5q;z=uUP6GrTqXnInUAd_urW>R##S5qaMme>9P)h!e+~m#f9+RkfT# zHuz;4A7_5tP66}sPA$7x+kcNlLKm!lYNw@Iw1S(>eS_Xxn=c#n4$STBMGPm={yA!H zhy^x^Iunal*Mw^cFC?BrHmbL=o-fl>Tca#B>CR0r)AJUMG2jY{91DV(T-7MNk@19@ z=j;1sS*@yz)pEHC(!KpPp@!*fyW{GaUMWea;322BKxqPul29nk^q@v2!d6Mt{60*6 zfBPcJO#3z!I6|PUr6f+*6rwWCEf2h15!35$X>gvPPxZyy-;@Jh@)wN(k0C?grskCA z^-M1xDjT;`FoMl0*)fF+du~anhrJ%oD~~nPEnIm8JDF}~*Q+mq*F4}DO4zr1CB-_W z>Gw?nlD)SWdq)K_IiL1Ro0i%V={s^szutSC0`GG;1q3qEN~fsqOWQvZWG*Qhm9H^PO%M&6n!$yUP&B{GEHN?p>Uu zw;H^_7;;~*H^03Cp`~Tt`0HNej3)f@X7Z+s#(#O!+4`GgG%jn7Zpl%U!RCe1gwcYd z3Bgv4M7b(ZY-e%O~9>;f9UA4`7*z(zCya}oAp8S35W9mJstbL zHhuhjLh$sFyLMDa_B}hVDZG74c@-LaqVMzJtqYQJ*@Ds_DWt935^3}hIYkS4 z_Fyx4#NIm_tKO1PvV1y`V3w}T`tXk`((l2W8KqO-PcN>yY;JmVzF7xSqLAiZNBK{| z0Bpj0^vJ&hMjHP+0O@&KRf6O;WCux=;6Av>X}1QDL{7sKG~}|xA^4{d3n6Wfex4Fs zu&rUyGNfMLoUVLG_`H?9^Lv2v-VD%XFjqTNotd z9mu1aN1}_}=IGRuo3?ARu@i)yDa_1N=UzudMJDxq;PP-CZZ_!iN zx)}>c0^q|4X&e$rFp?u`0e{>`{z_=7xpiFX+uq?G9@RxhY!V@LjcEBSJXlhqMS~Xm5=~1E_`{J!-L&m6M5LH-3VlF%@_iin^viv zJK5(Hl@M>&^NrV3mW2OfoFp2twDYmKT%E6$m(99AnA2_2vtHQcVJPG79P|CO_YO(; zu($FUGEHFuT1kjqrcBTxlBvNK2Ae(u zX{NhejI#!ZB~`6yFD_0Y9`Ve_-`cr?n_Dd_xWNHp_!5O%_Z0VyjfWAC!Rn{ZNtG0V z&FPwH)DI1@SBbFq?b+mGSKE2((6oO{)pi6&ns)Any%ypFsV&z9$!WZu94pq)Efy=a za*nY)7yQ@}RlJVzz#o^*^5VYwtGc*bujfG+d+Y$}K84rrc=wH9j~qY^pFQ&6)llkl zO=$t?8G(PpFO25NF1-3MdHMQ9Y!0XWbAoKjXi2Oyd~OkwZ!ISUiPn3Y8E&Z#7`4A* zOhHW;tYQ#3VAwgrD{wcXjB;~*@Mep@{%Z5JS@xQ$nP-yz8f1^7dv{XeYp{Y!$$uqkAdgvE7q9 zyj2>!RdSxed)BE<(s1VYcv^x{oWxS>F7$~Y4&T-J_8`<*oq_|}7u=n+_C2+~%3!L1f zNid^C1#*34CHPR}4fQfvq|Pifa45)gc7TN0Pt-%e=KN(d(411m%} zrJKKIRMM=SyC(bTmZmM5Jo{YIv6#eZgUW`}^?F*(n)%godU_!g?;1{G>%j}0+Sb9Y z0=i}t;ezA}+^Y>GP-13|2#t=b*+Xa~xtb}guBmXj+mNeSgP|8;P7k(l2xn`Lwar;F z%44BXbegaoJQnRykH`r>=?ZVIzpU2VO*kD?A~1FjCcCtpj(vmWPHjAp5C-We=XE=f zh8>IC>eC+%b%kR-eU$S zgtA(R5HEO){4ZY7X>2Y|ZH_>R>7x3)+HCG_b~Sd6QvA)YF1e?Em_IC`_8Y#&sSTU8 zG6F6_U)M@Kh+eTAuXq5XX-jRU8R5n{un1xpB!~rkVz`4r{O_<&^p=c)7KOx*71JWO zIg95$9uIlbz&~<_Iw9-%u|3!!%@FUjiZ@}y)lY3-{qz!*zE#^p$*`_ZzfW5E%zg#8 z{c}Pa*D}kb%l8C9xE9uy!9DagG3+n1lFDw)s7yc$I@KY^_{xvh?u4s&n1)qy}9 zE0}Qj8bob5*N{{3av5K5J6YV=yE`5JnlXbD90~G_)JKY3;r0B`fP=@mv+We}x2rfHiIPj6&#L8WZ5ks5?34E*W*hh-3~|nN~FQ`H3&y_T zc8;Yh3s#H`uMmTEDNXhgQjbKwcsb*pX?Y-3*afZsUcs$*Q zMjzurPxhBA-1L(H5c=Is}nE3 z%ZZo4;H6*+;qqPc74i#Br4X!yZw)t*N24-e>F%1bxfdc@8ZB4C%FDHSjaVJ2I(@g? zH|lM_4UW#5uf0~Rx0M`=9KsEGCzkJV!}mxIrg)2=I)r70h+zB^z8bWK-;>E?Z+P{3 z^6EcbV(MsDwSP`PhZJYRbljYV*AP`oX$t10!B&RJa&zWAyCtLioV1lu*Ya5QY`B)w z7k<03llA%@GqvgRD&$W2UR>DT;g&Bn?PPEW9zF7SSqo(XlNL3~ebbiqC&P8VdOvyd zs{-3$N?6k@MqO9E`Gfgy3JS9+`ZzWU>+ml+#7Z;9q*Wtlr0B z*W~zN@0;dna^GSMaWzhIXZCH=av5iTzKGEiwtr4=J%Fz#)CF51dzDeligJnc?hY<| z4~!<3GLj3l+S$UzZX({T-~)x|VZtW7lW_nqe6sEsXsQ4qLEgR`Wm8UK>>hH7V)H(< zO~JEA?(_vG0WUcANi_;PL0&Jy0h`eYvOWC)3sy+M8 zC3$&zr6lyjd&t-gS%lSY(NeHLT#8I%VfY^J6(7L;0-r;o4JS-@Bd{%}8RxnjLbAV^ zqeV0P6=Rkw^n^wW-Ny{UiXWif{RrIJT&%X+>Y`cSwyeIfa(9s#*?o<_yO_hO-bLnQ zgV#89K~54Dw3N{+K?oXYbwyqHhslSIOVx#md`Rl#K+>xfG2G))h4U~(7HTQ`d&pyt z*j@E@myGGy34^Q#%2lrJD6Ok_;Tz6=JVm$L*?cj-t*$F@%(pj9C_xwQr9g?zJGG(0 z_hz-Y+rrOq6MdDWsGRqJk-K80xIa~^buDWNkwgx*0}Sz9oCNh)iwk^$BgTz|G4u5KmF&$@caOZR4d7lUGyoy#oCUv)|8R4 z3OA8ef!gimyd`5s#`T1d+PZk>*c^cz7QQ*@ygCl~Outq)Rf9yMFP;ZS)tyzoa~r@> zc}t$!s+8414M_0X@EYl4#x+9LymvmZw%<|*D>Pp?)F;0ySF&4cdhvt)tp$vsOJ7(C$QZd0gW9vvCD5N2OP zLX=@|XP>-b)=wGs#%wK>dO|;0$Ws)7-@eD2R0b*$?k3$VNj65AG{VP9c#B5o@Wh0Q zT5_6)m1xc{?-o@vYc7!+>;}TY6kGys>zO_2x83FyX{J|K_tn?geB0}o9JbvO2JD`G z&wvjFKkR(v^njlGBBwTVK|-<_WLtuNAt4yg(N2EqWpH=Fs*d|hp}tNUgdQuXHR zCFdKadun@@c5)Px!}UjAUNtfpe`gf_|L||DQ{^E1521a6IM)bodd^BXFN+g(Md;PS zO@!8Hq_LI@X|pK{{UxK$7XGDb#hqRUywlZudDWx1mp`_E)Hi6-Wp&ZuHTWj`ZO?`J zlis=J$HCo8q@AL>?5Uli4fIl}5fIbqnj=AGj!%5+Wt(qvvQ42-u9zvSnPY{F5{q0A zC9=(M6T?HSLofqx#VE-kmJ({P9mgTwZQ!AsO$G0|xJSr&5Be8TP8~&I_7OU8UNws^ z^JRtQ*}y^eHdmq`=n%VpjH*d*Ut%utQK^zcCYenEek6?cM(XcL>^`g3& zHkSc$ODXT=o=JABxvOU5EjNZbso};SU86X{%5AMR4syK60m}XIr#mG2%bzbYNL56Q zJc8UKVBj_6Hq4h=IkM*wZf3Y{Gvva&6=Ph2Ot#%D!}bQsr36diipEh-eL%J^reCVd z`_;`n*1XT&WeGp$9`?SCkGP!x(IuD(QPeq%aT+!bSM#Gu2hTcn_Gl$B`7MovxxV`_Ig7K9ouydFkd<0ehTwp1+}qTI zD&_Yu%c*w{wK;kKg5kpI?j{FL23VwA=BDp5H`AMDiJQ5bM-3M4<@A7`$6WI-_>bJ& zSF;8zEk4&3Y^Owo>z>}BR@r~8^bm*purYX29kTm^SK#oUBPNf8;it37>u%2ar?bu~ zU+x16DPmq*g}k0pQVNrtN(K;59dQ(?zwd zF7MXsW_b~E_a1`k$zV0=&NIKVx)-d+d%&q(BPT}o%0q~w)~G6-RUP`{gWF*I!*Pts z1|!6=$}-~#@$y;;%iwojPFE(}%kk->w_<|Yh(eIA_n)Fn6o>GF#@YOMC>A}AME_N7 zZsyzBsVheA4V8B4c$whoEzPaRXCo9Og69cXPROSL}ZSB%-q!<$4Cq2t+IJiL8wYDHnEt^6}J1*5v(bwVB?|kczB74E_wTeDB+GU{0;S!K3;}4)h&}vTs|r*$J})WlH%|KhJPcdp*KE| z0D!!F?G4hs&T!^})fS>=>GJ&(RSPAAQqO|d>TN8vd3ZDv@SPDNx98_Ym?>x_N^j0?~!iSx~q>pDus`?uXX+qXere%jX zoEX#bSR=SlEBNn5Jx5F$Z0lG~Gk3Wd1WU*X*R`Sj@qyd*bi2K;7R~+YZX1nD;YNPw zxbzx~bKA5w{du~&-p)7Mkg_Fp7A36PJ^Vuh)!2(AfmYt*P93sRNUQ>qG}IL)I7wQE zjn{-{ef=itSzqs9rPsztV!9Cn%i;USl_EuYGr<-MXg^S*lg)o?W(cO`BJ++^Nkg@Rc}@ zf-0ko<;)4ZJDdFB)M%YKfj@Q?Z>$lLI6*6eM-nTEEy2GMY#|G|xZAYc6=P5ap>S7( zs+|-_@yhF{tm}HZTu!&Mmg4AUx(-$ zd%S1jGY~xe)Na<0P+Dyl)zZ3U{_nfn*X~%}JE!`Z9?KK85=IkcpQ^9$L~e!Dv>=9f zka(%rAQ^%^?5179x;jT;JuCL=iK402>%K?@Ue5>!njE~t|Fv3()tA-cdWar0z0Fb~ zuzT9&8>7zKrn@Na^GEK}8R0=O80Eb&Kf`99&LpyU|I_5Rjvng$Po1&49L$C>(+y*hSj|YEgJMqjczd5M9hy)%tFE zv8w)BSLLcuIo|>I=)XfHDtO$;&E6;)C`%~@&a0*bqSZ|PsNetexL<7xPOW5*PkXIK0cZGuTC`H{yCv) zuBafyVH!tA$21|z6imGbt86{($D!PNsKh3bh)meps{Pqo)3r9drytU1KTvjjuIANW z)pAiSgL(dw3?{f&bXdk-WH2FkjZ^!3#%N!0Kq74-e9Ur$mEXOd{Or)xITg5{Q*?Dg z*UU&soTOZtn$t4q$8ZB#!pZ~kli8*;3@O$?nI^g#%ZDra@WnE`W;By7O z&w6d;BV%fRFTKpyLSn-uGdzD#-d!?bZE(Uynj&hjcsrwXvI)xN<+8a%(euk@aUBpZ ze_y#+?>{$!x%OKzk8 z8ZI|-A4(wx3tC9vACO)j`O|brIhAM^|Nh(L?aLQ2;A8vegrGXS3x!V%cZpn?Hk7e) zZnU?XEDp)tIz8T!vC#r5kZefu9RwBm4deEPM(IdnB+OtCEo|~)Jw;&GbGDO*M-{qz zI7KTtc>Wl?s4!FojU!TH+DNc164-i*O7bUnFz+{~K9yF&gB*`4Umdp9G#8SU6cY+I zGb|B1$cW)A*pHZ7;Ez!L;Ot@aa&Rx>P!M`_xc7JKd9_;JeO}M|V@2PKGR`~Ul9BN6 zfPDDqk-Kqbq+fY9tmROWwaAH$4;cyMwV>J;2xItCiug8t@U*SBgPtubN)&|@SS9t` zd(*bvf_Eh|YX5uRs!RA>_ZSPr(!p}4F6#OnT!AdSmOJFhOTeXBbNC+*EbJVGxr#Q2_0d|zjJJW4uv`WT{N8LEImxJQ|( zE&MAl7XI*d^8SBc#Ks}oKS%RkSX>e-9ecL2M&qKw6X83~p8c)#yeBmfiz}2O%cNxN zmP^nqgRK+A_W@%>;$Zn>D1d#FOxRSj)$R3s8K{6|?YxAub^+ z@ax4Xn+(hR_eVEF{`bd>3>g^?H2UGrG#QTmGsb8MMZn%3hNln)ZPQ;fR$6YG@U?PD z&LhT&2R=&UjMbDM-R{+TdWHY&A!aySG42koj0uKIo;ubwl7(_$@OxlbYC$24Of}q( zZzeB0k)V%`AlS>KNDyLmwPjj5ntzfLL5#7_B8J=BSXT3P00iYP8f9IiD6%T8?9Bk( zH1lP22ngSVxygimE6uBpv?-aw=NGk%ki=Wy(YA%CPkTl@8%mZGB=Z)H({muU zzS~}h72-q1LXIdcxp%bhC!&a8NbmxucJuJ_mq8X>Ba;(O0Or)0UcPpzT3s=aG*zpq zxt3Nq!}ONaRuj#wC{Y6rwvZ)_IiQ5yE!g+#3IjKST_C=*#)L;bqUOz)W_dBK&euIz z%R&_-_gD&5kb))0fPD})q>$n4p&y7axz^!k_|XIO@vvuVS*tbeva(8Rwe-qJ$Iq(! z+ZlGG8N=$%l6`}c6G`D;wRY9B4#Gj;?TiZ#ylt-U?we}0oNs3H9qH;b;vKy6-PZ>m zhj$1ceQNKgcsTh=BqG%<%@fyo_j=M+mHNZw?VqC@6B?_(#=5ct*u5}{C{m)p6l`JG zTnF-6cfDwXg&}}N*>FgwrzyZQ=2%Y(FZ^rOEUVcZ*^19s+gWoHiB=2sR-Vo*-!ncw zKHXh$7d^FQafs%EaX4Pk|`>wO!_Rk5PHA|(&0+GYBW~C}gaUSj@OK)I+;oMs@ zh7p2~b2|hjcbjhp=@Q<}h|QhG3h1@FE5?*~9;CW$ zp|UPs(6|F(RGe(qm#wVh=hY^#>%vvrA=`G3|0EUL-~~=?-%PUr6@eWUSu2TZQZKSl zOCR34p|v}2lkVFv@WVnHC$u&K?1fXwo{6bE*jLZci69h$Y$fxdyzY`QH!Up|))pg4aEmy6W52;{S31je|LGJuay#34gY|YEmYz>5_LNU`}dXWs63oXkOo5CIB zVS0B))Bc(X?j;WY8NI_F_wW*M_M_~j#>iiA&h;8%&7;Yku4so|n_128Rp5WdIsih!0+oO2mqqNYNhg~hESJm}uxr*>VlpBQc z&aO}oHCXc0(JYlD;3E_WuHo2k=(kT3;Vinvw{f?atTZvm_fQ(v0U^L|!kSi`{aH}> z;l>6*_(L3p-hwg1gVcrSnh4d8W^Zp}VJzOph-yo>&E2BHI1sYY0Nd;DqeNH6J+6b} z)~DA=TA%ljkvl;i>NtM`zfs7cs0gWA67%5i|LZEwzW?uwVZ~XlYuFIF!6!e6_;!f$ zi^^^Eb~Bt|4q<@36{GA(W`f;bF`#tm3>;$#GC~W?bCjP?P7C}P(XOZSWm{7Ee79bQ zbcT5ckYnR;yYuA$uhP>6lqeKOUo%a@DXSsKG~8{}irPZ5D17&OEaOAConf)N49*8{(HJH|AP+#z1>Fa~6yyHZr^GMi zv!R_&*V}4Qolj@W>*?M?JDJ9v6EM3+zps7gzGxDF;XQifu3az{RFT`-C~Z@@-f&&K z!HY~UanxdZyiU}@NU%9aNXvk~w6Y*%G2BT3L3w}8Xyy1p@Ik8Mb+qtqM(NszJ_wKA z{t@@ztgBnNsr%J-^`&|m1_;G*_fWSg&?xTisr>h0xKr#sedM1AZm7>_t`yP_*9M~V za5_HmdDt7&3}FGh6v|*a_${dn(lV7OfCXDfr{E;F{N=6~9SJfMgm$r>==GyWQ!lWG zV;`mUr-pAg)n>X_^xz-dRkaGy9C1JW z^3&wi>nB5OJ4KI%_yULegharta-*5KKJ;=kizFf%0%QZ+F+l z@j^!FlXFw_S+fK;eKA{1ucnJ8f^fi?f`=(i5{P*7` zt)M_(TcG{lQ{gmNF5z93je=!pO(hsrF*hFWB`e?F8B}{K#?)+4S53p$TpbOk#+&&e zO*>Qyx}7%H)8WGUfe7rJ*xbFA628%rD@Hg?b8cW$1;gNK_M#$yjw*u5nak_VjBnrAn*@hV0ZreEI7x9d5A zNG{jS_I~>1x!tmRY|rMFgNK|NUV?z-V2}yZL!|R%wGAPc301y#uP1NLUc{z++dn4; z5e)>=(vgtH1eyx)$0cW(g3S!G9S=3Iy%l4G=0Z%ULJFS}ntXUY;~s^8e{9*nx1hRc z7MIicI>35;ZzaC&^bgCVk5%IHo<9a3t4uKM#5ifYvzP>i<*{_4{2>k>OAjhy|GMKa zx1#1mhv<}o1g`#`j#jsI*Ndtav@D^NW&2mWhVeJ59|cEnrs?kHx&5tsjL+t8gNK~j z-)e~U0zwU>2S$XVjbyqpYdrgxTedp;S58+MS-_Q&#EEz{&Qc3OJT%GSoEqUSj-EOU zmW(C2RA3#RyV@axV-D~Z;~DM0Y`)AdtFNoY=iOejgtfWHwQpl6XM7=8e+<4)GtmQY zA+Hh^Kt&dL+o#F9cw^{YvN43?M3P&lLkoc|H-uBgZIKa$U=zcj%%Os?w_?oQNrMiZ za0isRnQy06oE;gCeO#PUm#byVQ$F2p=OIkG+eR6e)*aQ5k!@CsyDj|oHo;3I9htZE z$m_Y>Fu$Iwv0RDhUu4A3F}>H5SAV{U@g}x^j+!2lBtl{aL8dc-t2nk~y{2rLvQDs} z;ofW?MMWhi=ntLBj=O49Gk~LflGKhV-cDEWhX35&-%cm6kv06<@8F}oY;LBLzgDwl zbvr{rjN8pWZ`UjA5cUxj?8GJB$AdUHa($HixTtO};I|R9aP~f-^ta%VE@u!)?Os*y zQ?M(tJ>+H6at7`@jKL>cLw!{d3N}iWuHkntqOR&V))jy*4neJA;8vcX8dR9tDr1e; z+dUX68SJ5F>fB1B1lKfQG{{>s*4V)uOGcP>dWB;+@gK5l+xpjk{sqo%Q{7b8sG}FL z`7-UE?lAXEhRobRx_nJcbJ(qt&NtN6eXeb zwsJhlxwBq$q{(2Jk=dgM7u!o2rR~OCbE# z*vy`D#3AO@;{;N|V zPY33zh6K|Xutk^P9j($9#C`;O8J=Vs>_>I$#r!{KINZwg(Vqdll^^;u@YqFOSMbyN z{26`$rwa|bTlxN>f%oi_H=b2URf6gw#MVesnJdHc+i#Pfx?uk|2V(tGGS~EE7Z zg!BS@A$U+^2y>ck(nzg5Cw_37JJ`Z75#JDU(_Jvy;p4xL-xN^_BEUyugWNWIzA%#Sg{PNS}r{7=1a3t-Y z6Add)HMdTY%orTcB%&n6SFo31cG>|ebJvS`Oafn4jR=`MkLd(l(NGz#W<0FY*Ufsm ztd{rZ(-udN=`w>Yrfu@uJX2BBcU(}ze+i5vn>Xbgu6S+HQfAjIM1)4?V}^A^kst2DFON-qAA(U{o6&lX$OPKWAl z15e#-DtOt&J(9xo0$?&uN{`%>cXP4YZmVXoy=g)T-`?H}g~m_EJmhsdoLTf;(h;!x zgfT!z3<)r0Ou|2?MQv;?!Y=ZTcGbR=T(VZ|VRoSt5@od@kV|?q|3}uVg3T0AbMThz z*Q_*7tKdYaA;;FN@M^|^`F!Xff36^d{aRf$pFc0BLEu}i{FFnu=N|I+Edcg!ZmBa;wqMnhYT9pyg?rq`_ zAZUNg&|Ngzb!usn!F_k8+rxmsd5>q-VFy=rp{~!&S@zH*oB`$LYzp)GTdErEiTg#V*Y zhcPOn{%f_F-p;Cr92N~bk5!z8ysvxy`e=>h>pN=|(%n0t_q6yO45iTTumg)T7&IXlThErRA%@|agpk_4u8c1(Oe>1&l zmbjg}d2Ci6ujYrYMnUMko-Qw@;2jqiciXr!OmGM#oV$DGy{|y#K!5+Wl1OXsVIwzp z)_z#MS!AqoP@KEvc~ejCUQgb>d=X>WY5$y{tE7xG0r{uH#33zqP77*C_&XWq*cqHh zb{34$QwoC^a_WvFA4(;U_wqyAI)bgHi)y>N0#`lvE&clv$9K1~Zv;?+INp2u$Ug>( z=}@5<(Fq*sSm7VdbNxSma$Wz=pE6uO(p_5Z$tPL~Z$?@|`R9=+4mLIj%NqJNcniip z4)8BVYU@hN3{dmHZT!%mfJZg*8=MwyF5rMyQIEd|bx)p-ad*^*dix9(Tkj!bXhVg0 zyTSen#eeIZ8ustMO+NkSMU1Al{d3fA+d3qZ9i5g&aYjnZXg>6|FxVy@f?9bC#;Vs4 zy+LeZwKKB}Z*&F8=5QK58rG~wg4svB^VM|SYPbdQ_P33t)9n2kO77w1w|={qNEW=k zWyfG>lxRbPh7tavG{pQ7?b8Hi`P~N>d*u?urmA!7G7b0B`{xvUEM;7(u5M*?jWr~!5f`&#e=9vZHcX zS|VMmN-(?Q-HbQ24M%wwtJ~?{s8D*fo=2O_-;3ehy@kUX&Brmk2hSgQq1gspdnjCh zbLXu~2tp zX$SeOjd17vh{fdX`YxOpEY6kNoos#~E0ZhNTY3z>*b+(uya)1|Bkx6R!x`OjXb*(D zNyCiobXKrB%P6PPW5Fwk_VD+0Y%$qeFG`8WCk$27S-;_PS)C)|7{k?m-v@7GTygZ5 zMRPg7nXjwGeRDkvWx%7GDq)E35gy#g3EwKskLNyX43?=?Pm%#g#F2q9B9T%KTrH5~ zk$7=3+R-fgY*{cTO<-EV5^z1qsNNyYQ`TVuUF^O^|o3;x_EOxUHex1 z{h-zEx$heq9}BGxo;~ugSaKHhm5_3s*c$!^H98|O{>9T^`6Ww(h1Fb%PA^=;?^sEz z3@IVN(%V4+zDsY(s93nh8D!yO#_4;>xGTkv~4C z678PwP=uVqQ>P17!RjNoSs_9IB}Gbia7D6~VJmot;P;+fweS{-QB6#z5Ug#jx!}@w z(&Zpi!M^eeTLa^S?wT=G2`(m#!M1oLhTg=2XS|M4T5^=oYI<2+&EfYQ(8v2*%<;h) zst?^!9v(|?b_dbHLr&i7)mr+t3D?K)&S)LdNXDVfZ#*pHn@lVtCrm!gF=<%~Dy=Np z=k>R7{Lq54UKG}BC)C!4%iUpfhGutrBjXwU-E8qETCJ-koI@bZ@|`8P-BT_RB=04` z9Xxyt$uC#3KZgieC?l<8V5VPvJ^9#;<-c+|ydP6z`CtQzsTRWcWWl^PMuecoa(*@3 z*f1k()>LA*W-Jv(P#yR)Eqjjjc0Jv0@2f>~zq;GTTr6JAxaw06baG#(+u3w|KAlFL zX>VI)Qrqqv5A~|C7fWWd-s46d8H2qTA8N%=KZK)rtw!?ljC}T`N8|i5hsK%1k4#eL zf+XQZYC^+df`i$sdb{X_!io|_ndT~&!`WXlhPINT71^^pcs1GsA7${Ho5nVa>Gh^r zUN-CM7OvoawOxIw9{;!w3(o~C*gM$lR5qQv2Fs1yLIpK}7$U7LuZ2O+kzt*XxBmG* z(Y&?&b0R#}lrkYZdREjsvk=ymks%GXaP-ihyI$We1uTd$19yYtxbP9ys(xhKT+c7A ztJ&QKPCwvHFQt6so#vi(rL;)~i;g0=ZN;WtyCXH1?bp92c2ch2YL(Q~o37WjmBesj zO4yyhg*>vUok6U-Vl0G}s^tL`Ly}{7+GCRqd_XVVG@H%*X1-hA!L|JlFPnn!Zno!7HfTZ4y; z!LeBp43ML4Bv&=HHj?ngYpy7;-8nZ;V0#C$H?J9TBrHGNOqQ0%PH3;cWX$k{nqc-S z_UDgEmtpam#t&b(Y?gCylIM48xRvXOi`?f3h8v&52;c51_N~w!^14Z@_g>@Ft``Ez zP`gjUZ`vZ;epZF&{eRsG&-?#oRCtgrP7}eY?ST9UVlZHPMJhbO7V>Bx2QUlWim?`p zG!y)PGn$xwbuCyB@sIY{$2l|iIDP(&2=2CO7K>1-$J?7{ny|S8c;37d%#U)z*GRTU zyv4`hXq5;$n~WPIOsN$(6P+Wi^Ulj5-(@kh3HS|LO&$C^PQy`EgzcfXgW@0+z)7kPm^k3orN|>8_kb4$t{5MI@p1A9u+V&s^ z@xw;VThdI%BK`eD5%l9P(IRO3=cw`N+A3;2;{zWit=7KW^TB~*xQU|~i@XJ6QW?xl zh^m$3`^ehB;g8e&9)rhgFr_W>Z7!?p)!)Y(%tiXu9|E3 zkdd3OF#Z6UX*sEpO`s>Eo=6c}DVu(Z*#0?MnrS%}lsh}7ObuCE3F+0~^?No-G}i*M zL_zYLtGiyT!6@`ZGG8$+k{iMy|1dUrKV3|h4Y<_hWplmy5-=td${XE-%XgwX^TuGw zk(-@nG7!aq^a%l8C{Y+1UV`7`<1dpBZ@XsXFP-hRe@-wQ5Qt=jvM#@gQqoYh-&4DCz!^!s%sEfGryzZ)Fw4|OABCiUj6H<|f1qkYL_tu60}4#1w6 zC9R2-z`uq&C}2?jnz0m>$q7N>z!YnCZ$tzRe*DOv#dNitUsl)izvnkEGJyjJC#&5N z=387Qa3ENG_UG>y?IcB^?bHX*6SH++MhY(CoCN3i30p^21Pf z#n@~zd~dOdLUh{f;G9Qkb@{T!vt@NzLHhTlIlvBw$B?@-9J0aN_3HBOVwd|1RvSac z$D|0j03^i4@WY4TIImFp&cpk>%fb6_4oNSwuB5P0wU%58TTrgS-^$UlE6#E;zz@Rz zQB1l_eH8CyT*HwF7pOL~W_=Z+28xtH^KH^S>Qj_K!xtF2C)I6f#p`;a&(N*z7wc&W zC#?MU-zKl#Jz2S{LfHN}F@(vPp-y23GE2k((1Oj7{${d7(RL$*f<>bQcOu zSv0(zAJPFoNHASbm&<9ZqBg&pZ5JV#ZPt;LC>OaGvhOz`_a)QhdhVl7-4x+ctH7bt znn|1q$4-7u(df^gTx8&%KfTD%aDlHOT%9q-K24#tO!7vQDdYBcajcF*uwt}!gle+2 zv?d)t<8hC>kJdmeYK`608$vqfmoh4(@G~uYnp=A~Z_aR^=KQ>kLX1czb&a3r(^LMk{ zTnFvU{rM1v!|3jedzM=Ymm54}{}W;_FyF?kwg9M#o6m0sYblH+ce8+ zHeK8Vg{l434L$Jv9_-TY(eE1;A17}ZK6(tbF3E{+-UeA6O%4B|Hj|9#<)=xjNZKd9 zZ2z1hBO*o{ucL#uq8Y@U&*87beGQks2Cdv%vTx%W@{S1+wc>V9RVBQX@gg4r(gfJU z*W}F1zA{UL*6SYX;T}3qXDN8rsk2xiL;%&t3={hu$j6%3|9RQjsautPnX*&N1F6zX zcVgh0)rM&z%V@5Id&rvsA1GD1YsOlyjG%m$B7;1baN^@mWH0Y-=G*mMb-TV>f``6~ z6roF$lH4Q9&S-~-`GQ4HZC=_+nT?!Hgt>own7sPw$-@3{iAsJ-c|wg06I?qa?k&BY zz<{&hD9jLqHtPNc>})57mKw}+2sYQtw14n|#%+z)&3XaB?Q;J2G-8O~tsCT>{3*IY z;R}o*(B(E{A)*R(2QW=zJ@*->`#Xe(h}XoT#!6QNMhJy~(*mDb&b-6T3klUQ%f zSi=WP84_dQz4`tUWPf-`;|+YDBu3}kW--67{+_KCtMicQeZLdPG4~u`lzSP6nfxAa zob38|?{I2|E{zP-f-&nfZGn~Q9KaMLwy*vZO>EmgCjw>*wuZRGr=}11M{wrUmYIbK zH<6B*^O?uoC1cEEl271EK-eC%NqG7rnv2=(kBg+H?lJ8dBxjK#1?!KzZmbRU{jGZF zEP^$d9GLKLzfS)B@yYgn`?a&Z_RmpY%W5vEf@r#HxKcbWh0@&xY%kbCo{!xLS9Dj5 z&66{WOon}=eo`G2kA0No;5_U^+nBv+7WbQ3k47m|9CY6~@$QKCHQGUW&~WuJ#KGVh zXkeG9Y}qDpnMI_1V_?DHSNTX{pGE?{H^3BbAhcsQMyYkq*BVj&B0$E=b zBJ9A2**r6J_(IqMAa*CfJ$)DW%->NG(Ot8L4QR8R_{x0^wf z;1JQLw_sqC6ai~Ox8%V?D!gAGJl&(50Gw>E0|Qqx?wT+B5Y|`o>T-3yUVT|DdLX5| zeIISN!LjdK0?K~Nm__%WJ#z2MTkMEy@S?48)~yz8Na!1{1^@orq=hl{L5l646AlSmi+Wr>=`@?y;9WqU{>w}{ZG_@5!EzC-<%CvyjyIWWpzGZ zR-0yV^X-3a&M)s4&ENCCt7ZXzzYA!Sa!;$khr+wAeLoa?yl4DV5k7qkIWe<52ml0n zIQVUFR#TJ1@cqY!$?G@K&TsqY=;r`6bP1B_YiB-y3QkR#QgMG5;gw+?mY_GXg3Sn#!)Naj%LTlgs%!Z|IXXW{Q) z7)Lx1XFJRFgKRZ{e<8fsWz!GLti=bzG5^r+w4G)@Uo^7;2H*r9IKvjbvn*qa;gY9L zaTO1+gD5i(L48Y4(wk~e#Ji5YdBd*Bx-Z4j4LqsCKIm3))C89SxF61m?#i zw-^ySzRp{+@9G%V94W7fbmHFI=?dQOpWFM}=>)d1UM-uu?dG4$=4LwiGQZxg*40e~ z_Ofg?_tP)Pkbr%J9v3KocIe^beh;TUo8MLUO-mT)*yUmSKfVJS+(*xjcL9SBe&>WI z4qjyBo>(eh-UbCeSm~dr|&%S=+s+6|r=a5P%(mW}~ZO2QYB{pa&cxwGD)3d#e z9bc68R_t3S#k(fd2UC2T2)V^f@4i|z_p7^YY$6A5X54k?^>n_RHS5dj^WAzKa!#bS zS;XtQ2ir5#%#obfnEc-*ONR%sJ(OPJcg&rqULc82qO^})4Pmv1|5t-4m6`+VET zcZQVuMQGWAEgbDT-SzsJtVZTps%jxk4x9oHd<4M4N8CiSm|kz1<>k7%ZN4m4U*;FH z>gjJGHn<>|A~?AGv~>_n(O-ECHCk{)fe0fqO-qP!a0Dd>QTXu}m%_!BsYz3~z}m)2 zuR{yQr@00bU?obl;U=TFC8YB%b>M7-%9OtwAk za#Y@OBToXk2*%$~1zw_}Cu-@6oQmwfCV&1HQxD%1&uNgBhE^(|;3%Y|MNo35jjkzkjX%>t7YCXT4K8GE4Cs@P|z2#0FFj7hb z1THtVz#mhLdN6@Df~fIjN22XUjW3fV+O`(>Vy1)t8Hme-gb#DMIn!`2C3um%HT&_S zoX8gWsRhg9QgMJSG0ahWK_iGTv$*Z|*k_55(>?2+X&ynI(tp)NWE#A{sg0RIAn0>) ziyC|i{$5Qcd&-~hCm%ZH(m&sKru-qLTuN=NxzS3RCu$^2u85F|(`R8j3$`_gBN#{s z-Q{AfO-UiitRc_blQ;#h<207*;t3vbyMHzCe^)mbmve|*x6yjc{`@F;-OTRz4z0&z zQKa;rHS!o&(Lf>`=}m;HQTDo5tVvOOzjm|8mf&b8ixe8&tl_+4GJ{_l)^Om3Xff9t zZf00>cyKb*Te2VO@(Gm_*IqsLGh;>-lp4oIp(G4aMiNS+&pi2Bp-(TKYJbD}yVtv1S^Ym-uoK-;vK8}4oF zSV!zH*muPSWo((Lx!`?Qe0v-7!FU_v9d~=QVF;<$u!(B6I&bc-W^woYu)z{>vwMyQ z`{bwBNjT%+AtQIjRPtWI3CZPK?r9wc&*?n)fbNNb9l2ss#=@T%<;Ijl;rDhEnyM0l z2??pN$V3Br3&xx=Y8mO86I&(?hWi<%OU@Q6#tU3R+WdLC-QG0Id|zEYarSQK6p3^A z0;f)#l@&odNAS8G_O!B35RvxTPAu+P|E^e^87W<&a0OpX%CvkIoI|*)yr6vdNUXPJ zw4bVwd`ppj`n;JU#2t2XH;?&lyp_}B&#{hA+f}{3o8L~?o2Y{hc2lUQ`gC}QI_myw zrQ59T!^ZBgweZ7i3!Vr$0O4O5?V+DOP1@qtgR%bP0QTEICv+dBl|ndmE`!9uirO-| zkNysh_0Z00v9^$uEvGr9JI7-1lz(Wq3*WEJcD1ZF7pt)BwR3o8pZ-vHl-d2E-J>(X zk|Vc7(IS7299Vzl5xKm|A~Uo#M9tg;1FS|%$ao75unrBZ_jx3an^>o6!WGUW3c1$+ zYiwX0u4a_x8>i#nPH$(^W%YSIzX*9>a&}+Bn%%SCH!{wB$%NGhk3MxwETsQ+o5wCY58`Vgy@wI&22Vkep+)Y2v}J;s}43Z90?CirMnA8=TPYcLS=1tuomt? zKa96CZU}G-JDkp|`{`o7ncl|<)QXW1XAZeO-NC-LeLN9y{{_ZStrnX5qj)VXgsd4s zy0J{|r@blI&~FGZv5v`%P__pO{jGl)Dd*A(2CBh`jxslB>ttpHgyF z2(qP$yNYwjhEJ4KWuU>~CbFQx17vFMlCgPKP9MNEIuQo<=|`n6s5FEFI#>-7JY2R*$zc%BoXt0DO0IK3#8D)z#hnauvd=G7qJU zSMM%m-)}?yYbL$E_wZADeQl**j?%pCZ%||cWSPRRkgJ}>d5X_cJjH?`(V%8-WX(8o z7c*NBF4@~n9-aSgukSA!D>TD*A3hAir7Iq;V#d|5MqZBk29rF$Tf;rirgrL%xM$zxIb(vy zjiL<%SLqKe5QrNs{3o$+)C;c@-gsXMasj_Y%B3(wxdZp480T<*7lXz+;E973V}&#v z301W=EQdb^4}Sa|p_^uX4Q?2mTHt?+GRU|`w?`2>gFz-(c?=e3L;NDQbqlD+VWzN# zop6?r&N`}eZaSM*rPDRjmit9)Qgf-e4`M9lEW>?;7ATk%R%vGU7{Pa!j1B^d3DOl) zxi93{#_*2c%^V|oJI(ccHosm~0Kh;$zi=zF9=*l00gt^SJk%rR0*}LojXlN{JOCcU z&ycoM`85Qbd6s(!FiO|bD$5;Ul;t%ST0P6GKyO!B4d0z%uD@g~(xqe~k;va15b46T zj55;A*KuB7%@@_Yy1Ls`SK!Y!tDC5~KT`_t)W0DBbVIASAMlr+_m#Zy@o9We-nK6(-!)0XFqx=

s?DpRXvv$(8oQIaDVD>y=N{czC$@5G;}jXc;f3f^Jle%uNY zz(_c2b)^^sKc(`F9{l*nU!#8fV~Q@PoqE(Q0f(o%MWrd)MDFb-k8N&up~_!0TC7qy zm|@&v)zL5#ysA<9c9)Oik%IM0vzV^u)%D$Zvk7@2Pk}J;?&O(14LSYf;5A16bx=z9 zd;r=Ytx&BYW})WAbImkC7GycIo+uxjErH~m@`4dTu$eq*+?}5WZ^_vFgP@Q))!OhQ zXPWS4M)@&_5;AYL_(QMYfEUwn=)c%dQ{M1HcLC*lSUU%sf=7?s^5IwP6Jk=N(IKeJ zRc8%EoPC)5(uwb#IcEP$QhZO<5D^d}nduS%QX|+y7ZD%{_mHPbKY%H9*X&!ofkhEL zqbW~?0zJY!OeV%?+POLW`3ff|V5z(7-LAisRlA3rUo!8#OTuu2)lZ$JQ%hOUq@pb& z990tjXIL~(phn)jb;)YqIQl?IvRaf5<63C#3X*VbjP@JM$2sNxZnCD9b{lE1Xp{+n zp!T<6y;S|6!9={I)92|A#q&p6tBHjiBgYSe7dW*! zTdMsK8#P=lWWuna9L-J4y?=@4-oK>$EDrDyWto2RvzF9Ea;sGlKO1aeSnGOt?$B8= zrgaS;X^0*K-7!|&OQ+%B#|_rJZSdW%tMlgWa(%zsYD=WZ?lJD`M!h#ls!V(9k30f4 zN(I4Fn#nals&1ge71?g&8`;r6{Ljo+lyHrefeF7p1RZDH%u-t^yEE!h*Vw4WOBtoVj`gu00_}NItyehmxCv9_EXc`$wDImKAL_36fSd%68-wFEjQF&( zOg=EopgHxZ;uBq__y0RN>kRn)|8@p^mNa0j#ar%5Kp2V)t{VQ!lq+b3yD89t_ScLB z*vw2wpV;zH-f6s|AHaV<$$l=HFVp+$a89ZSy>#ZZly?RDI`Bf|(%uV<+=&}WNH{aq zLYvVfRVa0s_z3)V=ITZKcJ^XeFG50UZBT8^k!?cHuB>6AT=?GGP2OPh(7cqhX3T#R zg>ZkNjwR5<%lToP`DOEEepzjr`EpzR)m)(UKU2eb*tK^T@SU5@!J|iR`~m7z)~MyF zV3Q;?{CL`q}~Clq+Q}z{=OdHJ^S+JK9sWuPd|BE%MxFN(a4s8!^&D` zwy58In7n-bA~x66{y7oSOQkh+pybxnDE-8JO3mY}I@n7dZfs|N%Uv;%i3?jBmZ_$i z>`UXdjJxTzZmy@BS+$up>zgJ&e&35GH!COqcHSjp_l)jz@aQq*=TzxF2vpaMVh)-) z>GjUjM)qtunV!S9Oj0gf5GVn!4Gz;1^DKg@!M^g~VLR>GTQWN9C2;*cr8>J~g@m~)r!Z@FjoZ2hg^A!9JZAU(D?gHU4+Cr9YzkQr&%y_No? zrK}Z`ObP1x(lR}0e?JFEG7&E~c9x4NC?XI6sf3)$_U&{9Z}!ja{q1xD8(2d~dAHsC zbJ^TXCyV)}sg|p+&GkQT*DHh!4#&#nZIT?}R$Ee$tLCcdS?GTIPKU`I1T04o*}a0E z74Nd(y$q$TMUHuFwysQ3V)&JOuugSsi=-=j2UC_WSmMq^~+`#{GwFuZ0zOx3S zdlM%qlLs$w>bw~&%SW9F@jzKkk=s7B^mVJB6(#tLi&2~&$#pF>t?-LROhSn5WJGV=^VSx z8@B4seqY=E|I~e3d)v6R_Fvgg?#beO&|OZG$)riMbJ%U?jbIxqgQ+i;PE7;88d^4WJD8DjA;(I|^3GK$)nSPo3 zy!}33R_E*XTe~Q);&<6@xL1f2wzDVSpZzhkJ6M0>4!kwSPognyYlH&Q;G*Vc#Gk*L zz3V-Ax10Q3%7a%pw8gC?&P=6HHM;cWs$7G;6v&+UGGh~4T+Aeg&qA4rExe###)ZEn z)%jYj+xdW1r!b}5_&isC59L1tS@T@p15Eroz_k!TA`hW7!TYXtW*q<8oA`R2HStBU z%f)L_x4Pz3NmjDeE!azz`QP5+;s{J29Cq_WBWxW`Fo^BXkpLdAWs=$-g;VH~d0(2V z>p?OvZ}%ni-aY(X^*;M4w?QTLYacsiCqehBsEw|%qC3D$OH{|+e3-rNE8TA#8ur&) zD%}tyd-zF))Dm<{Q4ch&SamGiSAh;TPh=D=#bO7e(8C7wi)OwI%VT*xD-RN#yLGX? z9kp3j->S=1cfer6qm{9{jieLn`8w$y*uJGP=XugVChjT|H@KP$AK=W^@a2$*+?9jp zjj6Oh;;FPh(yD1K^@43}YGVovR{PI>xP5ix#j0e4&ln;ZksJ(fJm~40(0eTJ`N>&> ztQyUEsF-EpyxmhA=;T3g-ht#Pq_-5YetHXYvxttvB%f{`Q#9_k--pTZn zTDM)>XY<8HyWT_%rN7G(F06Z|`Bt|axEz@2>m(O%|J)N%VOL}$us9AeTmU*G{LqR>iVk(RF(09 zCIZ8M-<{bFNLGvL+x*L5O!ARS$L?_-rF0xTz$A3q27DS@K@idg*liYb4DdEW4Xrq3 z)Z>J;N($!dbh%;ZF+hYUGXHj%urWvkGK23pm9=!i{PHL@@M5NKg)f`$;1hqJFIV5z z&1neU_i#iT?!oSBiL;3|g2g7GwnPOWVBiLVQ%jL|H8+d&{N3zDkGSbphhC%*H<1om zqm%4l7%;@`p~|0^D93{nZfx8tk9f|$#3;Qh$1zVMhf161vBv9|zOr^%;EQH)vpH+y znp&{y+C9bnedUp^>tK;%=XDVWz;C)lq6ctQHM)UMawZesc$0~5awZe8=aNA*>&!5L zzp22s@{+Zha4&;o5)p(FE0oOCLr-8dnX54XB9;`y#K$W-KF;P{UFHWYKX1UDtS(OA zcFwMY%+gVS@7;snuRvP__&#`yqw6*oK3bT@eyCa?Pk5N8iYfN953?6N&*L+vWb-1$ z^9bS*z+O7=);PLPj5XF9sMt3<9BkoG6hBv7%oj#7K~r-z(C0MfCZ76n)HNE-ey!%! zU)6F^bz=(;j;`4sSbidS7j#We{v_O5$%3gRc&8MvA+Tm46LP|%-I*T_o?l=lSl*MV zT2XUrx$@`w_r{R-w=l|SJ_eQPh>JEkSp*u>#K|ZPlnPFH`rhg&xLyezbI&VV$I>bl zh3bM6~W6M6a@<9L;)-n^l!_Pm=UViE|$}wBr&nbi)upCT!_&A2ZIhCVg8Ez&I zGZc9&Q?ZD#hIvwmaVZIzj}ndg&tA;l_8RDp=)6r>3FMtxb(!o1d>?4a}d>0*P3Uhh~B@MeSUiX5$JmJ?+oD{-j$79%L+&N88cJ(#S8)1IVi4+)jp`J!!?)yZnHm@k87rEYI& zHO<75^UiI@WKmlE0-?taXW@+wfFC(Bq1T3jr=C?^dH2etYk237m?h~NxI)x+V!*2Q zxQ_xNTyB&uXJ&(~gnA~qGMZS*NVb|e0;7Z~6#jy(C0PddD6ZfIO?%k=t{tiQv2K?q zZA2AIS6g!YXZJRaSaAs+NwqzN?M-RayN#q~*Z(X3Ac*zhd&u06HTJ;Q+(7H97YmzzS5j}oC5suhA=*YF?k zzGmfdUOjWs!8;VQQFL%sD=V#+DaAe?sz}KpvcYEZ$h$`BC7#gOtS2!u@K%i;VctA# z*09=05=TTF)yZ`S^_9&Z73c)KO}-B2?mn&4`3&{$@$Z_x+2J{pgQDK*Q&4eg1u|K< zI*$Enh>nh2)mbY3=KZWA$R?MHI|N&1LsfITa7~l9j6+QE*pe%;jaQ zbFhppn62$@Y5JOe2fXmDT`$3EpI$v!()O;_k^@KXUdi!Nw&7z;LHQ*yA*2Js^}VX#VfYOIgWi!7xR4I6 z*qE7@m{F`1r+F*{o3nO)epX#vZ~ksBL3gUn+4cEq9it?;t*DyE0DidJcorrST){Oc z|5bH*yq{?s1hZ>jaXIo$tc*?!eim9qFSP_W!1lf_I&qK}JkzwSX7>-sZ|$>(1mB#0U>} zGmaHJQZ)4?Mo}9Cwtq9T6G(Wn2@x-7+9~Mo&7xi3RA6ELz7A@wkBkoNp8bA)^?~TX z!2?XefO4jkuiyyMjsMmv&!Ywd`svT80sWL3J{7DcNNMdLJ!n!Z%^;PQfzC zvXYh)uVj)vzIpBY=grmG`eunV)9dBcF6d`P8~EM(*wv;U*uWnwJ@GGqWYQnyQSxUp z2Fc-qZ$JXyaF1^QJOu`&R2uHYs#;NDOFGiwW=2W##^P01UaU)sD7<>j`JrI@crU-? zXCQ;4`tbnx-3uvErrHI7KUjMTUNzOi@}M13fCH()tmT!cUVAa~>ztUG+1gspjWPG; z-a@P)4Jpg3;q4@^C32)f)k_>2eAba4!!@uGRnMtP;k8V+Ds?wm3jy=_rdggg>*^Br zceA=$eXs6*T!%o2nP*YL*t>U8Ld$n5M+J*dLd~fO@cgkW3!V{Td}=Zg{T;FmSIv`T z8v?#`k`t<(zDrYc(0s1Ea@5|zbFhcJE|cxlIj+c|j(5W$lt8rN6rX-R`lfBxCuajq z#*?3}Cikox?f(Ov1+VsUwE!!9a&{dA+1@To=%{;^JEW$A$4Ka4ApF?b=^&)8g{>ug zS7^=z&pvQYh_p?tcIoRV$5fWovcv$7w}Cv`y6vD8y}($?igSeM(rgQ7-9$iTV)%xC zwav0xtgbJsle2YoH4g`QwvH9-2_EB~*^Zg4OxQF}{uFGSB{rCpBdVqlLsG0M=8{G3 z(RP6zy`{qRSWgz`Er=q1k@e8zRk)jjS)c=vF%V!5o{X#oNtrwUzukIEQJzS+oatM^ ziw4A8R~M_Z^?Zx53>Q-M8jVBbN~!>I^icG+a5s6t5@YCXp46caD`!j~0TOW=sP;=q;RQ{* zrn|o0T-{Wgld~V~{Nx<&>qvPg@6;bT?-Z_mY_-NbPeA61NmSM`#E4L<)3E)|UPry+ z?&oMc3gH0qxjPwV4JL?aVjhTXW3aK&F6puAt|u^Nurcg`4>%nTCyh{T;H^xD1#;7_ zzqRvfebfBiEH~$YHQtp{V>k2LAK^ezOOt8@i%q;Tq@@f78Z3N@z=z}=JVdtQI&F-u z;wIY|I|3=ilY%sZycER#D@)#0`Ll7*q4 zxKN8lyR23xXRG)GVtEET_o(+(@mvPGV69`@UK66Tby3<6RCp zhd}6K&==ytiz{$X3-uuncQFc-I>s#NOH9lmKmg4LjZ|CkFH85>R^9&}g83I~WOPqwN2S`D z9dd;pTa&0YBuo$48o}!!I2tqrCz=<$Z13x=Av*>x5rk|GXQSq|)YgNNIW#lmZ{$$A z3{PInlnHuE20buk2Tj(({Y=}~-2x%5s_*kFFnaTtu`4=LJ8ld6i`X?uR1g9&c#J6& zceu1c=qZtGv}V|NN5h;^T-hP={PS%z^6Y+2q>PBcB#r9(|4l6^L~unrmBP)8CxXWk zMV`cz_eyKn+TmascsUapvb(Ff-n0-@Hr4rRdD@(>zGt)>?uLu8$8_w^(=L(x-4z?d zTm9H}TZYI~Ms@`Y@bm^n+L#)@eKC91vjn_#>N(GnECIR}U@k$C@6{MoxYmk+4_pEP zF4)3AeGS94DIwYEB3ELJ7E;1rvWDl+4?gA5z^8KU@%j8>e$!Mp*HKekHtuwf@FC*P zK>iers1AAnnWVMG+^UGAZxf|dXM*lo&IBEfJxFDh3kZkbBFP!}utg|xf=v{_KJ{hB zAcYzH1%D4Gu_5#--U_IX*$5b$r~9jcEmx=4SA(gX!Cp#eoO^0x8n;<3uCL%l+(aKG zi8SmjaBM@zto1QqD1lcB?vffT;N=CV?_5$UH`|jYrGg-j6NpfizR&j1+G04Ldo6QZp_klJ(UgNxX#w9$} zo#M`5@rhSMg;hS3F(OPNA*n+CsV7;zNxy%ZJ@1R5zkhP_Pf1J{SsQH)aq>@~XElO8 zQCY6tFx<@H#B-j+m`&vZzTa@*VwYaSSXUBU%p~if(V6!4dv$uVx(IbXYv*OGa)0i- zYJBcPChfJi^u+ZY6fT5w6!5oqVCs z{IE7}swNaZafLO;pJQj3(njBsM8*MP3j5oK*>63-@^4Oc=(jBZ%R)#aU7{?)(W6na z2w==$6KNO=k{#}PGGjyRjDR~|OTL9q9Zvg~RMPt?oz>a0I&HqsPphxh7chLQ0A(>p zJK?6lkZ&D7?~ig!Jula*)9aIM71==A#Pw0ppzT+&nhLB;VwxqV_2})tXYYUSQ@{W2 z6|(y|%Df|S6wV{FLiS^BiVVUHw=i0&9mQ|*B*vm(xN{5wTw2)MgygXGfsVKIPEjZC z45zPvKQ~z>%!#2z~Vr8=+8OF)rYAYKu;m6@E(&)>N!=N3(qDko?y zm86XK@D7I7!YD3_k_-f!$!gIZ!FO;)4pfh^8P4{bS{Ydc5)tobI!UN6>-NV6enfzl zAKU9M4-0?jo%60CX$knl@Bxmk$IJ}$Sk+X?jt+y;Og5jl|8aYrI{tv1IdX%?SMNMiG6?lnnYhyn(Vq&?ADDu_gJNMAXSuSJ`ofGNYC zd!gN-8L-RLa#FHYG2G3;1YCj0p&h0(#P@(V!0wbP9#(<`5&zR&&?LQNw|)3dtKk}& z<<(h(dcC|H1D&M?z8Z=UB{H#|e33(^xDwp=U6W`aHn-W6R-lynBWIGj=17nzAufzJ=yxN?tmSOi(e#3wMXkCBA`C7aCnE6lnQ`cP?CZzqtI z?~#&%Pn*_83Wt3fkrFMDtYl#*+{-|JCE>83gzz*QpVSo@>s=HEljYJ53PYmrJfP)gZ`(z zW<2-_dCfiQ_bu$p5RsxR8>M?%MP27m^05^R-ZMWg#d&Omi9oR39QFF|?DeN!z5eT{ z*QbPf307-q1aU|;w5Ta(mI%#CsF%Nm5?H0K$XKV7pg6kA_!z_s9``h>vGsBE2*t(^Z@#n_{gn!t%3h`A=8~&R=UB~s!pLw-Z z2>LX4f==5p-&!oV6ws|;3wefXtH!U4E|>yjsbzUARr*{`p7(FmG}RgJ?k6g-~Y2$sb{H1d3ZUEWY#53 z7Sak@5@36pwxopBho6@G#6>N^ft zqU{+p9l<3X_v7&M81j<1>p6Z5POD}0^G|^%zWafcaR~am8GIGCbrbIOxamGa_aUax zA8ZH}!_tdIqo->bPNk|RqUa8bIw$zi5vo+BV{PyYW_dX}~_Gz!9zbC;Xcx@~p zR0aLOf-A#mIR`%2%s6fG*uah}Fj~j4h=eKVp~y~nFTbSQ?jyn6wBJ?(cJu=QpK|-4 z+{-BMt#9oe4wgQ8qRh&m=^w%f96Lk0j2vR-*B+CV8=@zftU6+5#kJS*kAM&86c+)c z2=)-_wqRCRrJ2o#b8;m{v0*4qV|taO=JH|)$|fh&$p0NYNx1c8^#uXKBYh9BgEC%l ze>(YTvD?Mdm@lr#V`~vJ0Y@uUIKiTku`R-AlQ5QhklF~uG*yJT&}d+Xlr%`rQEqr< zu$?TG8tHrRg$_Ad%}j_H7$r(}N_Is|Cf?7qt4QD0Xbx{MQGGGLT7CUm)GqEc!S0>= z<66gX>0|4)V8g*0MD_y@ucj;~S@rCNiyY&Eg{Q%qAV}4k6L+vi=-OJGO)CL+INU`6 zsQy4`tSl@P!ijL}FfMQAS1F)yIQ!|;k=n&#zPf@Z4dBq6=PzL?-7^}qlszJo{}9On zttWcov8UyJh8QUXI?hmAXSFwd{^)w8-5*E2Qi^f8aEXzPtu0a15?O*CBizF{%IHWV zh9@xLl!D(%gmRtI%Y?qck^j)q9R@-fb`W*jA9r z0bQ!V5w5zU2jw}fynnoR&7eD9nlyt5=D;;Xgf8kYyf=!oGM)0nT@(OM3xvj;S}MTF zsfis-xusev@cbvxczCC1KVbcNb5WgC7bkFWizg4;RpFgje)yQ#RS`-*wytp-G%j^y z5X!>8HAK64s`h{HqN?_PTM*8`+cU~V(`OJ_G7Ao15sx$6#CW!KY?9lP7#k+#9SEh6 zET^{@k9|6cndWk}Sgb0lgCMYIZ?Aho`D&HZ+Z#xpxU0#z2{NFF=)qNu00)_+$bIOD z8M3j#mU^A*u;L+(^81tuVio!ODlif1iHwGPwwrfVdtepey-d;}jm3v|^~%NSvi-Yi z7VWq7JZLvO1i2{39d!?T-wNgq=taSDQ|Ky?O8R~(j#LrkQnK}+;V^;p`{A>z$sa!F zXfpD-P?y&Y?5Hf3dkr^HV&u$|8S_zz1h=TxZcEX4W-kKni&rv5y0^>fOY?2s?A$O| z2HV#=;PM&PZK%HC(o;9il=;RPBCDSrvLUoe!Zd&U*R0FB-YWFRfAtF8{hTPOz=3Jq zQMC5%u;83SNcRw?+27T;b3C4n?FFXBwc!=eEYcxVeOatd&QWV3HW|+0m$AtwXB|4| zzNL_R<|G+zGjvwQuQa2U8LGpnexOPTW_c#e%mmY7~ORwO(v}Mrm5+6MIaTtmck%T zh0|GK5rUMdf=$EWX2$DHBkJP`9A>Q{jxjUDdOA33jrTHb$M@oT(^MC5`g=^!6v|<{ z$Nk7T>|p7M`^ZZ2&^m$-D0z(y@H)g9jRRr)-^PvI|?QGYNK|TUT zW)1rOYRZ2T#xbb8)u;Yh5IXoQAP5tBwL;Vbr#b#vc=c@d?$!Ngp&NVu`M-2OM~%O! z38%>X>`cIOrj4N`2ZqAEq+2UyP4!yAy((wT;ZEut*a%R z)Z(}w0QVLi{{s-LKJgEL=rULybqMd+q$G3$JJL-+;R?98ofEU{eeDCxa2C$E4)y4}VwXKb(@w zTYKWFFGU|79{Fu!!O>nS+9*4I0$$U&RzZ+)JqUMjC6m zkT$es}SSD?UWu;V6|s6y=&?I%ALwh$;TF58gzvLpqWkrNTKz0S3Rf_*T|h zTTzIqZ?K6$5`bu~1vN~N9Y(1C6Q86$XZNqP%Vm3YR-LR)&e!cC zaPUhx?(SI@Nwj<7j-6;%EKobnxM7bx}T$TdKA&iA(Ui&np+}0CYM&1OLGr4GuqNQ zZs2^GL;I#?0=}bQQlvV_t?eKl;dUl8L)>AQqW43R(L&uzLos?m<7g z0~;)UY&E`(4n52pbiv^Ha0223~tDc39=>}xcm zG*(M;<;7a1shKedKB>t?P{ym6WRw}r8vO(iziAiXVBWOf6Pi2%uDlC5LVuw9tMDke zvbV^@b(iV@T8Ice>!Z<#VL4du}(0ZfkJl-y^ea-f2}s{kf~{*>Wy!>3Z*2Fdpc zD#L0ar9h9fL{>Q1!{IKrD==33l@t*vj8$7fnDMYDsna_^0Tn}L?vE@#IW>aJ?1`MX z;xTH2c|)ygoE9b~LUNGsp+EiZD&MEyGn5a4MPszpZVyIh(mI8B5Fa|+SP2AYPi8D< zj6hJJd1e^&j^h8|)l5=Nvmu>ZxS)A;y85zSeP1m$=fULCA%H;RS?B)b_w~5*!GOZ$ zrT_-yEZ_a^IWx+g#XVFME23(e#R8@mN|RTey>h%Ru`d%JlvY6h!RJ2_67sFKglsG z>!3Qvo+k|f;;t|S{gcuJ*y%`i%@C2MrdbrcFFl|3WsXnFyEMAt%H{c^HRqPW^AzcH z2sSZLLuQPy1fkkY@U3yKFXt zlvB8$921zMdG6um`?ry&NupWy?42#tsHk_a(*(IFfZUReDIPH|opc#Z0G$^L>8REaugw{SGG|fy8-0 z$J9HRg zQ2rFu4k9tXJxP+bkt8@>1*J?`cBc>^9 z-KD3X$=DMVV8V98A(5%sXju7S_OSJw}8X@@{g$OT0x!%2U8|Awp^sz>Hj)ciXGwKYdXfQq6YA~B6l*`{jk#E*RJp}lIa;w_!Nv6_N9lDpEz-W z4K11MKF@maW0&3MSrYshA3_P~#(uU|@Wv=GXay83*ur=!W~4pOl@}u?;A#f`sg}9g zg=ao3<8{k`{(ZH$86;nJ*04NA*Z#~(Ygs6K;uU`@L)evV>6dla>QDl%5W7~Cl+1x+ zvRFE228mt^GBuARV*0r-lFjn7JrP40gqYyQ)K(At$!%R+c)|5L(w`%L@rlhZ>v^-R zPOrayz1g11NuNnhk|%Ghv%i{MBgdVdHaQ3Ctv>||ENn^hmmhw**|}r{n<~4yQJ=arl!NWt`*^4SKcj1IOoPA{y7xu zEZEHGbokhWnkO*YS<4Z~n#n=!^8j7POPUS~?$0dLS@UDjMjh$LRc!CfkEht-V;o(v zsSSouDZ$(*M7Ch1a&pFdaDXsbYs;B*@C%uRINFb-_ikngcTl34!IK$vn%NAr9o&I5 zmJy!y@!N=Q?d~o0&e?o%(XJl=_}@K`?2Oe`&({@qY^5du}q1? z6W+>%sxY^0dN#2s6UsJ6=Q$)nf|fYcA*Ey25<=R7*}&aU&Aq<04A(F$XY zLm&tKqhJscDl1B8(_j~&I$5Q-(n?U3txmqom;=dG$LlRkTA#WTpSD7^*YLKr6^AK39J$1x6rUiNh?5hELRta=(#hPXIo=m*dB7_gc1C%vWHxLKLsZ z1KslucUPD4P|&?_@nb731gdwe4mS|IcdUL$APWryXb9yxV!4@Va@2_(o^Ur zFf>5DWgQHH#Le)qhMDdq*f{}eYRi~b(&;2nl4?O827xc!)j)|gxR&5PQ%D8QQ+d=s7E~Y?Co_mY~Z7l`87c6pYYpSL2vonYq zg&G5YWrURP-?*un_ir*%Gq86qEYslb-YcZ3xuul(a6bEnl>QD%On5mG6BLVRVWr#( zrG+OwrHpB_z$*ur5G-fAIXho{53FP+ZdNwe;mUg{)AU z687!$Q&*urKh4Q?np$!#gIuQtZ9-bE2f@b*_LT*XHPSZgNR0KdGmDH>gs?rpvEW*! z(J+@+t$0YREB7GxHE}y&T?NY>+t~3yKQX<_EO=EprT1qaW?dW25U9QTIWbLQwIYl; z4d~tX0kTdR z1?$gg%+g)1SEtty|83JBPudiWoZ-e#zi7mas)eY*0Oi@Z*Z-Wo?3s99JD40VQ%t;I zHLP?32yp3GQ(3}fBci4;3`i6+Vz-7QThvOwJja2{~tlN_=1bo_1> z>z3ZOYR(6prrqYsq)Gdu%TMOqEuS>7p3sSFA-JK`FJ*v+m>LOKh04&u=kI3Ed*~0h zit#+jk;!Ue7;y=y4J@Y>qh&g|{T<|uV2vf zs|Hi9)z@})el_1*4e$&~vT1rJoUf-DY?`6ui7Ts60R~pr7Y25r8)eK3S>L>OlRs}9 zD3PtnA8v6}(mEaFf(vChQ4f-q4fYl4u$EL&%d|4NHq?(lwwSq192oX11jTpqvOd}H@`_pe6garp&n9Xq@=Tq{4irLxux%}GwC_QOY4 zSwDQtP*$#RC<+Xf1FVIdKhiKizqEIz*4x3s?yVzkpqPx#B*%s=;<6E>O)H-Egrd}T zv1pgo>f~${cJ1tB9pUij%Psolol;Tr7)n02Hc1**B{dTNVL5w9+mrBC9er}W)wJ=$ zcT;j^sdnd~)j>};U%l5ob2lzaz@E?;Vtm|D+-gpUH*qYVMB=Xm9sXtD@ZU~yVq zoGhF9I_la!5U)XhjQe`FJMkKL%S}O5{R%3RvU~50t>LxJFv#!UxG7w>>n@qX#rd74Hqn$B@GkQL_`n`u%4IwU%%(@kW?)biFPUjc% zb+xQc+rQ7Q*XgWK6+ya8aBYq0pnG&<-fz#d6?>F~)&&bpJVzuI4RS>A=tx$COgAbV zDoL2mXD_@CAqQq4?I%M3Ck55KM@z?HFaf8==)?5xg&WHQ>=?0}p3oTTC61(XAADdt z%pKmyBy&X3p!Ha3Z6Tej;eo+l~?f#)9R-pQdc2)tmCiL0=oRt0HZMD|zk zkJXIj;6+26`{8pm&h36q0OSc{!1<*;+kvf>mX`Vq@%vXsgH4pcsP$wm>6Csg0J5Irw!N-V{SQvI>rP)0xveZ@Yc<$;Pm3T%(J{;`!5Vd!ZoWfAEH;gFty7#-9Ft)-2~=+VkBBz#`3su+e?|WA~tURpuR@GpWkn>c>`P z!>!MviHMlU-)hkh3_;vudi?f3E`oda$1wzV9O$yxoZnBSAv~SXT7iKq!SNn$B9E+S zs{;EnV{CrHVy)P?Y+zgYRPgMlV{C8dU*^^PJE-X9ETnaR2tF0>%yy`=X7QAX@=}V0E2_m3jtz3MP=JKN2wCnHf+WF&8Ppi2&RicKYjdUGNX#l&qTrC!> z0V!YB)=H$1+=JcKMCLwZx_{7Jdg6&Ct9USL1D36pJfhI4q3(~fk8v>ek0~&A(ZSbQ zrX1isQxh)W9ekLfZhu!L`hOjXQB-z`{2H3=+C7N(G09w0ZYS{1W`j+2KEL>~UR{3+ z!22GuteUxaSDpBoOj6=20hI>_Jm_0I`~*svd-rk%dcSYm zRQBU1r+&PLI=1^x88iM^PuC;Sf#)$64%fv~UV8wPad-ojrlMm!xi2Ddu8GvT93p7A zmr>M~ksf4EUV`ZmB7SD|!GNIM#Y`JoVsqB6f2>xg)#h@2ixYnos8H|NcXjIzg$fN9 zKe|3s!u`ybWi<|h3wUQqIH;G@=jU;KP6IO8+FIdF$!l3ljKoU@I*3dyD z4p%G7w(v*5F;5>6v;}{%T~;Tn1sJCCTuRR1mu@&zkk=R*aZ3L1}-I`L&_Uwy0406qFAX!0)PnZ+*?+b>k384d~1g^`Y1A zW`FkR5iWTBpGouxRWsQ|n8HOOq)bXd3f70h-HeupGPsdkk+J#^RWnIyIM`i$(nx&> z?`B$fYREjXSuLv-c%|22S}ALfWeP?83727`R-LtFqw4tqvwW##V20$6=10bbZeBe8vddz?0!rb>X#p9&tKoG`%9_DX?Sm_A%5V3lahuy+)ZBcXk-e=6B^416AORAsqaKJ6Kmyw+nHnuI67u~-x`S+ z`-_{^a&>+rQ|{itBb)MI=_xql;ECFx7EEev|C8uz=H!+>fArA$KW5l-VQQ<4k)9_G zudXISs1l5dgH04*8iA&-BW<)0h9Mv@aWEV zu=vEa-)b5X!y)l9f{i2bQeK_*UtZsZgIkjxHOd94I#Bz=&4lW&gkVCFuG*B_TItD* zl2XwbCADD(4jOe0mwKYmtF9HlQ~zxRqQ@`g_P211Qm(i9#J>StbHB<<2_mrZ+9)t_ zVZfbYhur-m05Pj(mMM2miLe@;#!&Mh%p!x0<*~eu#NM9J*arbi`|!aqHkTq2Z)B2c zpPhMIBfQnB0?ll0R@FrX_w%>^MJP`q=^pez=Sz`D28$d!FFq)0aRX*l;G38Ui2nY+ z9*^XIa{_5vYt3-tzaRJKH9RS!{<#0%b>+b>#wQHND$Bme7|j;uNl9%L+0v;IsZ$+o z?)P?>p{c&CmZwbsA^;sh;=WfRN_J0VEK1HH)bgZFAq%A$4YUXTIf}q%JOVwH$~3=n z;WA!2v2PMC1EK?MsnQ-f9jOJppGp?YG>5wxw{~MAgPz1hm!d#YOm*PIAYRS%yEc*m z@1uFQ0i+MJSN(kOCx^J}RcbyM zLS4-`{MF;kVP6Hfy~2loJhZG7Zl^%1D-as1CrggVDMadBf?YV>A!C;uH?322dGC{7 z*uk|vt1+fy;^ z?gK?Qfr0o_4%jPVzDda>@m%9_G3{Vy12fO9G)izyS*DryMaI;g5M%(CHUcWSb%Gc# zX4*|7r?<$=w`^XCkTq{QxLvPT>nyeHPjmmcHIHs2SZfMixRL?f6+*z&8vafhwnUel z6C#9QrHMO~UQBb#O3wZHJ2{wo#1R)O1QRSh)S9z{>rQwj)2I;NS=Y_U>guXGZx@T3 z!lk8Ms>b~ZKXzFuTzm?O8%*;v@DaQAeO0SG#r^cBtGJ*3%uw7e^`w;BO>MzP6;{iF z9Js+w3IMpVR6zG6IPe%+&g z{8CY{`mr5nW~~{9$y#>=&VxDps5O2ud*_TOIqp9H99w&>drneeC{>j$^p4zRGJ3~Qo|i(4JU1%mv<#byRg`d(nN$BExO`0OlK(ms#$z% zuBwacP4lI>X#@LMzIf^$*n<^MgGG+5cw7qKhouY)9IQhU9wJgD3P8_Z%sL*RAzpg- za{_jTSw)EG4W6Y)z-g;1Y5o1{p zDIHQTiXF{HQA*2caJZWiMIBG((09eLPn=rTYNrOqSWO3SXBv5=ekAY~0J1qbS?#L7 zWvVpZ`95xyCR}>rC0k9E$WJlF6#KD&*WK2NAb?C(LFKjQ$iB{TWSOn4R+>wvoI;EQ&rO%3{0TNPu4yA-s4FkloxnS| z10zWZkc%O^-jVfhwP`QUs>`ZbEZSotTJ)#<*wxT*@na{Fw6uP^5$n2VIBaY%Ka)n5 za(I4R)lKsJaB$=ep~69SL)aJi?_3mA-e51I*u@!KUA@2mzngeOGNhu#Y%cdg4K;9ZuX}{{ejLjmDB-mYv?Gv5?h*Fr}Q7 zu`xB*611NdOc@V$Gu};@;}&~TV@i*-ZE*Hv1efZxS;KPMZMMys(mD3fZ14&A0S`HE zE;i%lJaz&(Ux1vcS@#-B*!0A+CO-t;>J$GEaH<2CD(uYTtTwgDA@+lBz{}^+Z$S5R z`Ws-S1CDG-jcg(~OH?8x_P0=EI@S>xE7J;WY^!ZnpF~#{0)dlM?p&LH*{l|;s;QQ! zu#5SDG4v?6u6x3zgXmEB6oP0$Oo*|}x)~OOjBE>%=MHw0Mvu#N$9<6r8bFHOGVD+qK)9P}m4m)FoB3j1Et30_|o7MTMx@j&zug|xc*at*>^bWmz zop+l`hf5zjJw`crt$uzC`(|-eu4W;^T%t$g_5aR(>j7O~|8K9&zoh_O1$cDeuyU=9 zGvp&E{NfXN9+)5V_cBmsNjT#MhXV7G+pfG=2?^U*1vndgd!+p1R`c$HuULBqUd!=Y ztopjr*RSjLrfN24UowV#hWjg_wC?eih=8L{nJh_pYfr)uE9t|oQwx6=fqz)R?nK_0 z&*wj9&w6yo&(4_7vlKccgK$wY>9$uvWQLP+#*cIlB~1u-Q-H}U5IS_IDMn53b!MUf zLLA=Ew0!D2c5Sh%-OUGq9Lr|ACtTk2j^(j})sJm`tqo@3rN#FWdjM$|4=0T8+qZ6A z`R&_`x-v(wWy%#*+QqnG2!2e+X5 z369p5*SFc|i<4zD589}9*klPq>>hNQ~_ zcb_|Y1j~8Jc8|esLN%3K87wff?C{qYIaE{K5tWmgN*2x{T(no~`3e5n`QuN&4XtGj z=R2qe!v#&QLGx@`eQmzXo1mL3f0qSJtas46deA#PX+oQW^^a|RL-!cMJgk<$OF%-) z8`I%;uV&9)J&94AbU#OvScudFX3ixPle#8WF{w(>?+!MRm%Z9PO619mGVmHqZU`a* z^&Ll{IbK}*v%RXiTz$K4BTDJ%n};K_6Ql0^$qe*u`&7_2ljsSZf=LWU<_WLCF~dMv zhVU?n!t5U7w(uDd5YS1N#2Uv}ArvYKq8e-_i!NmQu&paGmI{{e7yJ#J9MD_wt6)A| z;pTp$>E{Q?1M5{<`G$V}Ko=sD+ zS~Ae5g54E^-Gpik?zOdCbRe>s1zJyJ6x3Yc0JgPimk2dIhXgk?trBf}`U9cLzs(zJUxIy%WK?VwWc^_WA?{=JLuD`CE<#~15 zV!d-2M7;ZKI<4#ZT^a5T40L^48hOtLPKVU)V@yHgS%;Dt(0GCRQB|w_pxQy9a~<(C z3LT>S8_V6Ykgb))gm1z5;b1RW^TT7~guTQl-=4tUPpS_cAjWH%T5cIs4U4pwZKra_ zp&aVZ_mLy$VCkbr&|3QewB`s!j*!5$4tp+A=#d|0&wlGowZkaX{hX)`Sz)Ag==Tf< z>#ev@1wHR@Goz)Ukv{Rb4_i1*eR8z?E5?4l{}U@v(yzas;M zj>uS=OlS~W8*WozboYPA2kOB~nq8!qN%MkrVUQKX+5FKF7fe+$3Zc10IKe;1 z!!e3P>*nW=vroMj(Di=ZF(D8csDR(g8}?R< z8Iu^$2{Y`izG&vlShptL!z3+zG+@7Mt{2shc7FA@uj|1kbM$!(>%%+EfkJ2YYB~>; z=&BA@Ikrj04iHZ*QDrO^*}-IH8srbNcYV72xf6rGOQy?lO33FSGialYMON=(7CG3< zI8eZ-I=T|0C2Wd)Yr-6g{f^f%o!R1T)$3xw?>X(%?g5t%y0==}VCiG)E$E7mp9PO* zYK$Ev%QL5cyq`VoQ)ezp&(l=uOdxfMqQW8Lrm(K&oDoAGWD>&L)i`~_*c3!BE>_}V z1RIQ4g!Jfg-CkYYREy?jb$t~xt9Tz1>NmNmmftF{oYg#PHwW7(;Sjs$x3B$-Jy^03 z00HxQo0L*LJ7Y7aAQ# z;+WyoY|ulJWL$vrpLXb)nC#!3U?Bswu0OtkCLYSL5K2F`;t3f*)(Kr((-lh~%*#`| z*B_#4_d3a1VzElAgq<#&txhmO2_Y7|fLs1iE96+jne4 ztMBdl;wDV{mU21WgUQyVt;*wyJG$~%6%6*&jPP3~oE+VG`f}D$_TB2vQ->m``#I`F zB5*l_|8u};M6HQX9trjSQ$79;4rWX61V$ByV2Yi);Ba>@Rs~PGxWPDMph|W~j4&x{ zb>3W^t#6i?X{oc2QG4;gB zj%Du|rtk%@(gdL++8hqC5tp^i`2zg$e)e1M!n(Pf-%>8DR5&8f**#V(!i;l6;HZkk zjo}s!&fWMDV;xXJ&Lr4S5jI8)lB;mu)1UW?M2RJAtb0s5#)fI73WOfptHtj3fKUi* z1i@kyt(nZ30r>EF_J6%i{qVWhsQ*h&=F!?12$7tIU`uOFi3y4td%L!SUF4DOZJ${8 zg~o<#3B&mYuk(LE^aUqAZGUzvaX<;ha?hzipcsgocy(XeAp5Bi5zK&p7Qs19^zwfC z;JUG&oH}CKjkSoMW|Z5@3(h@Jv|Ni{xRWg3b*svG5@S_F#&D)e78;<#yZLo0{>>U2 zd{z}`SaY+gE-JXCzazHr@rLZ&``ESUSY*g9cz}t23W8=|W@}2jX%h%(p5%1W!KF?t49G#ip8}p*Sf?f6h@R|8w^@%G#>%OsGLYa4XW(W~V zO%7Dl9_)VL27n7mCAiu5o;NH>;mlMKvg_e44#&0$WCp6wFjLWC+Sk%3ueo>7yN~~G zii*7>vdsc6W77uQ1x+5B+xC)ZaG3dFZ<9o58;YDlCW$h_{83oJYk`QLm^;addq4d? z`}Ak;g#X@aU-xrV`!FA4tZRHh`v?(|X>CdrLxVkxbA*f!!Fn=>y2ociVVO=?ncINS zo&B_cD&VDEU7g)jmu+(%!)@EC>tL&y432Ea#L`&P!BG0KGfYf`lPpNoi2ZS(4Jwlt zV86NzQ%C{OH_lRU9gP%17o21XH#2JO#&Wlwz@fU)8CK?$j~R2o91C90blPXPlGGNN zTFFF_2u^xeXZG-^mEi*%U6D;#eIZYFg>MXT8;B6= zP-%@#@DI{S8|-UfM5zH6S`nf$b=ng+P-$?D7{P{NPKVvJoA#nv;!dvTv0hrdlL@sM zeP1-E^NTrzqBqU?*(%_y`G<(S6`az({&I=_WL_HBNQBAzN_m!LqZV)$w#-2Ht0;? zw2tgio!s z@YWB&8}=&g;QdU|Qf^j@)%TmwR6b_iCOGWJuiFeCU>CT#z&Cskj!Rq%wOODUu<&7dX^oaF*yyGNijMz(EOjGW~X>t=2Vj=Owh-J^Ed> zdWYvssC2OU#2sbMR6xIjgd&#L93CJqNA>B|>{TDzesZCglCdoaH;O9NgDz--)flS% zeDHzfJN{k@jHS5}W44<~1imCL*uq}J-FPjN_p0xQY_2z(cCn}y)q3@#kWjjq{`xyPoDI*B z7gO9@{3|ARf;^2o;dm+2DBj+svo_b8W?7xJi?Cw!h~Bn$#*gl8hpSIPc_D5M3cnU9 zZA916I~*-YRE)s-eu!fjen?^%Vi;|}@bz?f9i6MB0vzoJfifHHY#cyoEH&+m9O`t( zdWiYY2%_021`FQJG<5jR0x#z$t3?YIcs*~c%VvWprK@UlwYs{BR*}l%vIJ+kZzU-g zmu0xz#6x6BLjE5K?*dj(kftc7obIM=>gwbaT@o#P}?5eq0tk%_!CS(yvl$rL7dEH|z zT4o9*PhCeDSAmWq2VN~1IJJ2O_t|f=mky=RZ@rejOkxxY#CTDJ^aj_;S_y091GQ)b z+bWU7c11?J91UhR1QP>m3$Iel#^PQ4(z?68ZN}QP-CEa*Vs2H7n!SCD@Cd3sWAXQaq6pU z=GIHtVfW~F4TAF@GubccEq?5d5E~*!Aw0cdx5x}6Yzc`e_WL*Pgh5BIH9BDcFBp{u zXMFAzTh~MgBK++0-VSrPiGv%SJ%OjJ@Y#pi z+qZp4>P!uEKPOtLI9J>ywK8xZRD`Wmdn;hDheJv0Jb8&WD#Fl`Z=G<(vz|7(40@^% zu2pBNFU|G0Ghfd#XIQg3pMIWJzIJULVGTr1B6w7xgNazPK2)8{%Y6D`L`xOZ7JEgFoyWx-OR38o5Ncdg4L&BS+(SW?sIrP2Cp`v*@uOc#5B(z z?`NO-LW+wt`YBmR(MWbBxI630y4TStWy@)QxSJyN6Hn;S#%hG-f@>C(=MAnWM|tpe zrqR4`*MQWX{=oF>kF)tz03K0{EIp%n&^zK?_4p9N^x@LS4mlOmf$bK^=^!8~%o%+B z_}|(4|K6+a$N%=K+x?tqI+Bc0H}Q&uPX?@_GDQ-v{uU0$ndrquQ6?zH(BOsi%6dE4 zHS8r~dOFG0Z`U`~H_*jpNOJM>;mZ^``okG>i+k+-{sGc(53bmWyT?}106qx|=d=cA zb%4a5Xsmzt$_+l>IRi7v;8VauXiky)@ILs&#EB&kRFoT#^S4rf4AGSs?W^Zqj|nl` z3ziOa2o}VmY>0G-tn@4R#U0qgKTa0S&DCmIHE>bu0UCeakrYsI??y`0F{4kJ?!$N2 zp7?h_X%?Wubi<%b)H1I{AKYZ;E8x1x>8}7jkbn@i{|bN^fdGOtpR4%5u{m!ivhYNwn`v?2OfAk1ATzwJ|Fb(Emkq%9p znj&7qpp`JL*&qKkd*8E=fBcu@MWoA3H3j zf`ug`V=!G)YgWSn=lSi=Ub=ey>}7^tb6!&^sK;UsrzyaK!oSMtb-0^@qhwFu&}cKH zNP?gQzE4Ha7`qFacK!BCyIx|ltEtYK^?JUk{#sZ0Ij?M-#(dlD-a*N%S2j*#@BqhF zaz%Lv`=+{{9zrluev&l>@cwtVa`oN;H%_D1;NS}=w4gn>v8l0;MZL;ZxgmgXUk3v< z`Vym{R0ioK7-hT7++qC~?`1lPvOB=zlXcr%gvqk38N0nZpZYT#sB7^VyKuQtx>7h0T^o20poqt=l zVHmr=l^xGX^{4pI7B*aL;^idHLbi~O^$jy<@HNWBQ3mb(^m|l$Kcx~>Lf29Y>vdis z>!cB!s?xN0&Ta}on7a~Vt<9Wve8Z*;MJ8U*Br8j~`KuqzVsTS#;Mmve=pf#sp)R{u zQ{HfAG;IYBF!4`=6@KL0L68#6*RZUnt`{%el-3I;ZJkbOv073hjXOoeYpryM<+wLr zSFneJ;b%O7u_jE?0dz{`1jz6}-{#A2!ztQnLa*j3`UMWfw~Ojzb;k#PujoH_TtbQ6 z6CEgVvKg#@fMh?VC-&G*wKOzrh?cdY9p0b}t#aC@-Wd>G)rxaC7H1d&0y;?%u9!YZ zPC3|DsE`Kf+qsaI?a&zQh>W6D5Tt8UVu<6GLY9Hsn2;+CX9=$8SyP>?=bNk5*A-@G z1KRjp$e5j=ChpH|UnhDLGA3B$=xV5grb~u#H>P0VKSEtuyueEJ+wZ!O^|t z2)H-02#aJ&1)9TMqyb~H2Y!8-QP4!$%`{pO28W+(OI&lSM!uX-6lwISkfxnI9pvmkraDdavloKyI%xY<+QC=LnuX=`i z803MNF~Y)~nM}wFPhgY~fXSX|@pq z$R@EC9Z;|8N0nA%t{3h%Yh#&Fs* zW>IV|h961EM&iM4#x-)>RrZC(va{H(h8RQqa9qGZO+#7?_smyBTfT& zC;a%HaIpHs4J`$W7vf7{DhMq~1e-Xf;O{@pUVge)@b{mbNcdAK5;iq4R%qLI5n~TN z<0MG=?hh{&Y@$HhgfBBX+h=D4)4(a>tid1v9{wclZLFF20##=T#`bG_bu}3G+1c1; zOzYhrXK6zl3ZJ-=3TAyf49ddb+k`-8SGUPGTbNEhAD2@SPi__Tu^j)WJ+ zTJ1Ob@2jD~76$ss(d`yo)9gsql^E4dfeo09rP#3sP;hYSzl?J3KuhT<=bruj?rA=R za=OB&&@N25R6J-n6t$|Ut|`g$gWtTI{ob3&H%@25?@2QWFNI=#Rg~78Sc4OG1zBUg zZIr->az)0PhNYd+j#&0^_qV&2>CediwQ8%gs$G6t94|lY9sHwv#o_A5j%>MAetrqU zONOtkj!?fRS{>fKnmz5Qpj~8}rzt9Ej%5_=b?5_Iq@AQjbK)^_6l-+|_cdAz8fiW9 z|gEIuj}@vYBpzI0;c!!9S`ma4%D<%$3w8lv9-|{ z9U!^kmqPLy;RY$mDaSm2=aysKa%{33gVQ*a3pA(qK`6Y{gutnIgjV~rXoR~MpIse~ zLVcmJRwE*D7Sf6o0_$)pP9F)}EuW+ceA?=~I$5u-PXaXY;(@1ofW>{=K=>4VTSbGn&S0DMj13zNBBwg zff%TGGt>8Of52nSn~SQguFh8Ln&rzM0wX%$9-NUtk1(cv*L_SQ=I@nlVU3Mfb}kAaGm=d51V#~)1$q?5E!q5hQ7)SKGLG;a2kUNFx(#p3oTTAtQLl#2s1NAKeA-XIeJ$^txHL z)weY=LgHZ_58cH(>s=k)0_ZN``p34WRO%pnWpLp*^^9FYd3@;*ygrWyuSshPp`Tzx zSmW@ya#;)TG&wWng4b{}dDH_V-mNDz2AaksHoRC)4+kE{`#lWkSrGfW{6*Mit!paA|s1MjugwFm?8 zL@w;@e_ZqK4h^Nvd)Ll_|LS|I;PulFgCG;`Da|dCO&sLQjJfcb@`Uf3%dL6W@pE|@ zg=2)fm{!nza@N7eT%NV-YOz|+18_EfJ0(oEdusb8#QMicdf46~$M&!-3&;T&w(Su_ z0w0oECyKvsUd_6x*`MvoPDe-gb7E#d!($u>dd5AUv&$739dS3v zZldH)tX+}XFW$^_T_70@RmNd z_DT}gc^S6*Vbv1+!?1UwSoRCid$cy-ID6<6(kklLlMc;(1)Is6{29xBxk96D$$BOc zE|Hh=obi^9ugQ1Z)Tf}or`4vJFR!Y+6%Yx;Qy$mZuP^ZmM~R$vQZKG6n1Y zvp)+R*J*pl>0Snl_4X1{;FS7n#+tNS^DSw)Gm#KBIcU5_K! z(t_#k(RA0a0cFH^k0rZqI}#ZDZ-<85cs0MYieEO@i)wRnjf@7Ds~@}9vI~t@xL5MX z5qhxnu_N>_xh8Aug`;4f!n#(1T=(_6**~8~3tQdK(ePX&J~cHCcr5tnN^&i=F4&wB zZ02z6SWjXsGzX83TkNtqm|Pb<^&_R%vKvz_SBu4}qQY0=ec5!oXz@;!+x2?2&QN6c z$ahubB3!z`15BZ6WpzM2qH6=OC5fQH#xriuykV(lIm1$L0-A#(?BKzo@irO^X+fAf ze~E2c&ks` zIp;$9gbFxAuT9-GK8L<}!eYPw-7SZ?RN2XLm;gNy9j%a~-UPW$0+71{ee+;5p@J(R zn2@C71kU0bbLGXL-lfFBI4bS-Ml;76V0Tkss=JnOxR+nrGr#*7tU$n`ooDo=4G*Qn z$H2XlT|WldPniUM_tu_*Emuqiu(gEO8lF(#zn^3^p#1TE_TtYcG5qN6=S2BiFr|1; zp+YII2?g!*$OX$ap#sb z59Q+?*g!2yLHPuWOhNys3Ls^1IH9Y}!Y6q+shr4$y?izM+{ef-od%T8sTdgv7BrYU z+k;kG&_G5tvn3l)2HP3cyzwa6mpRlvGNVZHT61=2K?|>ET1wf`^e$G{m(|JHy1Ih* zrf7<*Z$g1v1S`EoW!+PL^h; zqnWO?CS18q+!~xY%BUtm#Os+ZJkVW9 z`parP-&EgMi<@QGT=uv_mhS2As@o-oEQ9r@py09tqV#x>AgBi`)J01<<>wEdXCL~S zRrkmH|0P|sl2Q}nf?%=^cTaFt1pGbR#Q1>am}l%sjDZ75j+5Y&IzjQEkpwn8U3Co{ zZ=^JJ?I!^u%^ZT1R4{lcO7~FuN#lBwvizGBN$VI$K>dn`+(8_rMq^l>K!N zxV-LeP5uT;PrME!r3i?%A<(2ob}Z6NW>$ip{^k<@KK<=U2Jx>1k5_mYK?X6@jin`# z2Zq}j2fH0Z=<-EI+cy}FUJ9EDcDtp0oO}Gg=DHK$~|(#sXi#A>gSYls?cq$GbUB>sHjT|3n=*TP-eb)%Q4a6z=&xu3sK5 zeQe!jgtMT-n$(O~_=2l!KoQX0PjQxrPf3;tT`R)1WIg&VD00m;=Ox4H;ciMGiUd-l z6v3jylwsm=5oQNq{{n%=)cu4&s z;gdsn2ga^!mR5iM=vriV1S)NjX|0K|IB@91+8q31T@tEbu$l3p#|)+RgvNAQFc4f5 zy;H_4K`_jx&JFWz-F^c(6*$}%^Q+a@ue+M+a(dmLdwE+uuGik`Q%Iv>$h!l5c%l>Q z*&i;HK}T3R3X4r@L(o1un7r6qL7DdZK+3gZjZ=va%=cK$X@p3;n~0ggwzwMN0j1!v z@k*xE`_U{<*X@svRrq>y)h?dInzD95$sSQt@7M-vS_&aMT;fy<)jGi8DiOQ7$23;yy8_K1IjaO ze!vENiolS0Gknkg>Djn{=GZt{Yiq4>QoG3LD;QC%AOS?Umw|VwC{f_vaz*m(oF_EO z)U9TO)ST$Ub3=GNzhqtKu8r}I%H^WjY~~m9Wq_=6c=~7;;Mx9S9zTH;tUmG2f+fpo}fc5=K<=8VB8OJSu0gb7Y4{$>O(mopBwQUGMfl^BD;>rKc*yz@a6_!M|ovg@Z{p9fANXnKz^h2#@N zeEtxi={gKSHJJz%e+yS)JmgJho^%JTrQAv{p|vzvbbXK^z+hYBXqqEwCs*FkC%B~& zLE?0li$RSSG2OQ3F1h=U%d_U9y1H(Hnow~xYVZ8^O+JmGQHP66K^rv-$~;WeT}u(X zX?e={_Kk-K?|@^aeRJ4>Fp4>3#GNu)OBCS`!jS0gYTO`?bzk-3Vtti}YpQD^hpM=R zue5{2Vv(ZGQM15n^sd*Z)w25er%hB7x3QM)-96bKxoBs@u~*E4q8~QMdBH_JaL(&) zw|PaIMSH$!mJm2rmv99)tE<)b>h8yN*!H;J8H^WXbJAn(r3}=2n`-a<(CJob_d$-X z`pkxX7rGWTH8s^a$?JWnnINn{sLBxTigrb!BIO`&3*!nuhJ@qDi?vxWhF+GY)a!f> z$-(iYr=73*Uuk{b21 zv}%VT<)l>V=6ZcoU2ovbA~OKvmTf%k)1Oosl?p{3Tcs=yA=_$YYIu8ONPrTxPA^>S z7?%Sfi5pR%N}qH1;9TQ&0^Co76bb>zT*Yn$mrH|Z)OuC=m(i1O%Ld@lZyl4n& zh{0x@VPiy!ROp@Sp1R>)+C4=$M52iUSWX#&25Z7RJj4Uhjf2e`%uL`39IClMxB~E# zv>^woIo``83!k}Pfv-2K)782HUl)%2{4B&jeY7uudnJ$jB?y*2x+U#BQrE$Gh9?8F*qd|%t1`}v;pGNg2fG<4JJDPVYM97xgYtz&^E_rI zS#9mXb{%eKLhkiQN7Ex3^8SDy-H>}rPu!3j$^4uxW>hHxNr-yD3mVhx=kI2}_s+W8 z(C~Z8SqE=dNW-LbpcpMUz=WzYN!xG_p-Nk&xYA0{{04qcWOU}$%rM{(B#pv27*B_@ z|D}!f_xbtN3d=QDo93n+0boN2R@0|0KRFOwXPqMo5k8OM5?)?VjZg@+O4m%+W zOL3188+g?%Q^rM>F#n&scWrMQ$Fhb0$~^f_4(=Cy%dJzXRMMGTYG(3{wiR1tS@J8% z$+&*~*_)0{00cxxf-TnD&*{@Mo@$T)w7G9cst?f^DkAI*Hax~*2rzc29S;1{{R3^jOm8n78MF!!`}FtCi_nqcK)TNjf$ zU{?{QX7D>g)?1PZ2zVO@1f=nKh{e-Xc7hoid;*eumocv19`e$~?M)YN&6w^qmlI)Y zV`vH^-=j@|vmcL*oir=>e@zAd#q$sk>+hpP?&luYt}&wX9!V)^Z}npvnHJJ_VT_ZO z#RKW3;aC4Ga~!3m1Mb^d`{!to$lx=hxpGBf+fR>@l9ZH=40n^KHMgA{*k82o(CCB- z96d0km(2~1HY6re@SetFkY}^iW%YeEyIS6CwwdG5E=%}B_po;@)$IJX3C|h4!?BH; z+W`6l`4gIuIXxdGF@$|d38QJSuYc_CgtR(+%xPMYbp7u;2~p}HQ_4g zcS4xg4m!ifh0&1ZH(H2!)s%hs+E@bFI5`a-rG^$?5AHgr9uSw zc7NHJ0vu-;wHrb65bpP59jmHYEtd1M6uup=> zj)~_W+}%s*nfbm5_bo4-)S>fUV+V|3C<&b(I^*0t1@WZve8h_1kZnDeEsv~3e_JkR-v?Z{=dK>qD{-hXF!ULk9#iDmksieyBs ztn6*@XZWC?xLodB2;f)Oy0kLFvd48I%91AoM1j7 z9DYrlc%VN)MGyubR%#0NGF)dGXiB>4MG-)Hg3v{(c9CsN;(+jK{?S;1R^#HN*}#89 zE5uo+Qo_HwH?v03!DVM*dAuj0YTPoYfSvJ@iMkC(N9pMe)j2FSE*3SRl}l zl2ZNPq!C_Agz!o93lj2%I}1M&T2e(JY*4xC=>Cd*K3>)enOW4E&euoh|4df2`!50b z<4uJ?!US<|xpJ0wypL7R3Li3ZduEdPB&5P(lcYw5co`!56Y|V2J!JpOEMz~cEw+xF zL2koqEs)u_AiY_*nF8G;Z^>xXty)BxG`l$Zls+?F&p+C_;dVC5`E3Pp^76+ZXz+2> zo87x9@9Kxun}g>cJJl9c`G5^Z6#M{KtxaumN?Wf#Pd;{NsMik4|6>Xbg|voXbf{VP zP}G@VuR>2k6Bk!mBs zZ9PG~`PXg_qgz>4r>p7g{9+UKfp=SU{$MLI++tw~TD_u`l=kVM8yP4lEH({B}*+h=@4UWpVCzW5c_TM6D zRNm6ZHY#vo0THNybPNTCYf3}ADyIkqDZL_`Ako;v7#p}*#)Nq!UfytDp|u%lkmo_# zOuUr0UJRPSBo6CwmwjS8F)v=lxVuJ+W^sC3{Z*abta`&V#kqOCBiy^dG{DUpK4c6r zu2ss%O9_p%vlNRZJRGb^h@yXa<)Z(;IEbnA=o(JVQz{615LPv)D!}2dwj4i1xS720 zcDvW}){KD{QH>ATnM~fq_<$xlUeLJcdaq~G)oNO8E^d|qCb_W0`7p+@JL+AlLPZqL zgBKWsJu~VTg|YepuMDn()skg|u3x@QzI1x3U%ojx>o$dRBNdX|KloQ&OU+5p_uV^m z4L1?mv0zqMrJ2p0L-iJn4e}6*A8NzW^qy^zm-cJCPiC9Z!1ZP^+cXva2Xd#)XU)~R zXQL%@M)!pBgVwFQp23pG4px<+A~LW8%h!zNNlNW87RPk0wUNTXP=GBdOCSv_s5l<( zB@fq>F|6}z$=Ik4CrE+JiPT$@fK4FbZN}A*FG-(kMok zN)rAk_=s>{gXoAMcj~Se(~ThnCo!e9x#=lh#VEU{abWR$d3#n}G*?&4#n~fgs@`cn zR;C(0WbB5kY@l$gYk?d<80Ce?wwW!?!N6zN)5ZC=KI;?A;d=M8t4A+1 zha0}bv14^ZgpX~Msz$0_3cCvH%5nSu`g!u|+p`$&Vf*KV-IL|CybqnfNa6DU&SsMMI+T4{V%nqr~&kc{gd1?sIjt^{t_pn3{~ zDLFu8NJ0K%I1)cQI|0Samh5*c>Z+3K$kLssFdJHNfd?*Sxo_>f~; zB2z)%)*`G9MMCSaq?{6P{2x!i@qcn`5zAgmcogD9)Y@>Pg?NX+HBrKIYsxF_M@F`4nZlrBi-LPgV#!U z%ivkZwo%TBU#^y>ru-LK8O@u zX4oqIMPn`!)%q-gF0*J7;pC4W+IBoMi)MaSU7aqPSuo_DLywp#Lgk&&Q2%Eqa>Q`u zk(Ztr}0w_|w;nlCi+`ZAYC*DTBll5qu?(g8eOoRwp@l zAYy5@dXB$h48bJW1oBcUWRA(|m7f!Al0oZ&j@=5}IVyeg61!(pub|@%`~$Z6-~VbV_r{cY(EoLu%jQm4DdV@QnMqM`%c7hT^@%xdPYfUY)!j-@hS}Iwx6&&nkxI#53$I-19 zYXnh?L(fX|*vxkwh|jAckH-9$Kc|c8yjiVg%T1JadFQ!zuh_gxW2n1={i1-w=H7$n zAG^k-bfAGnQD{!G8Vkcz=0*H(Urm1h*qOI8t0DPFNBy7h_}mesN+42ry|yl+^(yWn^3LxD3QH)-bae;!*>`%E^n<0W&;U@(3I6+ zX?^v|gzNt8i#r_n+m~lq>{P^(w!hm|(|9dyS=;XICNym&1QU|95k#J4`%A_U*KJ3? zrnCp-*oV*tFKE2UeBOM0S=O2yYj-c<7#=)${;@qc#HImr4O2A&k&s5uhRx(emJR{> z%XomEv~qss373zHR62x18@#;V$y{=e9@U{-RN6mOxaw;ySDE z3}-(c%8b7n_)GP@0>?X_Kc+69cTA;Q&)&+%HZDz=-`>*T1q669h3YvOruEgMd2>O{ zNt!oUUJwz^@^X!VX%U*Ya1VnXa-fFgt(S0+Le$JSvqwGZC^+a5X|sP{P0ywP{Xhc0 zEu`^hHJ`5MA^Sx!ANK29vW;lKEp^L{A)(|%_@nTYi&k}t>KHO3kx_nlGkM;P!+&_w znb7m(I6SSjA@C$eo(oZcTm{mW2Ud%E+bMyK3RdkK6q^t=p}J;vix^0LR*APX-mLPz zMLeC)r;t{jUMvF%gQulIb3w0X6Td_f{$D1k`R^aygt9FI4+@Xa z+7KyiCp^;XXIX0>g;1)utHb-h-ik3h7p#qiA|ia(E6BiZt9f&~yxGJ6%Jyj_y>@Y` zck$`f>DlbZENtqewpGSvyL0T>Y$hZ*_F_pB^&U3{6P1+uH6P^Cx3-q>*$H_x5)~iF z5npwDif)ehD#fRWKW#>pkR8L6<+Y_oi;`YA*vnuvJ2;%@F4(t9NKZ5t?zL2h)_d?; z#zkK9Adz`8y;xjMgWB!W)py)Oe(L&8@a$38Z;LSWp$BZFd6`ZaQ_L4T>9aQ3-B@==|96v?90Q!LWTD+uj(8S%zWj6C>QJq)U z%k~~NalO5#9kcaL{*gMb8DqBLYmC9f1q+6Un1KJH!WkLeXFN_g={@Fc1*wg&Olxf% zQ2`@NTYxIpmI-$=Y~_Ola_)+;-YZh5u$mLcPyc%LJJMeNf4ln~MS+tnGF>#91lf;x#7M9yT zM~Ur3Ev52=4G8^f4tS zFBp>1D9>Y>nrJ~F2Ud?lM&oZQtC%&wMdPg4Hz@^KK7v_<)w|c2@lwVg82^3I%&NaH zX6H>v9JhPXIdeAOJJu&CIR}qBHfn-f>F2VPAm0ORI~^nkHUYNkOaZ#KnpVYxwNcN& zbSPpA=8MjbF;>Fgg_|hA*zB(vtyJ-rhKFy#PT+Bm8#V|(+2!Wqwz{4+m*tTZ-YFgK z{=(&sZA}ou`AYIiBEL5h2vR1qioY*CxbDjwxGqQV0TaT3>w-DK|7NisTr61(_cDmd z9|$46^%6xP0WMsTU5Y}9*?PE`aogQlvzSfi)yb-X+gPkO({Qprck87BRrmbM*NBF> z(7mURyiCNE?q`j(9cryru2%dW1dJM@FkxMlSxQ=(*`P{P4p|ZGD-Ep3cB}4+(XW7j z?6g*@Py03)^y0Prb4o+l&TSh(u-;`8l!hM@bm5-y6GXtlQl6rx3~t!$O|iqw3(EewhP4HkU5vm9GQiVRGC=ZJH_#f)hF?fm8z z*_X~1A!_gmW%JzQ-L+P9uxwuN@G*E!Dz)!9CB&FWAOrs_&(y{P&n{Z#D9a~iV(n?U3Ew|&Y7>jHrnq~#;030AVy8ybEYwCeD~U|@VtAS zQ{iEdX=*%t9}ll7xQa5{|m9lqBIO zJV8`@0Kq3JE9dSf}fRlh(;>ZMD=Y zL?;Oc*IO}nxomaEfay@T;Ru|LNRkQwk z`g46b+aB>AkZro>R4D2VmOQq@vs?wR0pt!vP6Ekln<>2d<~O%P^2SloNOwpWimXzP zKp%dqnlK^FqX@6|HkMWB*&gD0OU7ItR}+G=mi;EldV19?a5FcvD4`16%ZMD_s=1u5 zFRJxL16CLHcENti_`2@+_VsoB*GhUi?_p!`bjUX3dpeCD^cKaPRq=WL$!(rIcW~`# zJf5np5|a7?kAhmIePN5eU0tw;teKOoR_Lu5OEiT=f(=D@4#_4S`gqGe_xxm6%?bjz z>U2JZNHj5m2J&Bp)pI!m>&zu4* zs+K|?Mm?yH5Lgi^C^Hl8r9}0|T{6bf$>3{?jUBd2^#=~N*UDrWEY_m|$UaEVEvmEW z-xoKlFn7#4gA&fwy@B#IpSzb#a))}49)qjBQ#SSZP&8aMsTpDLpE-Humrt&BfBBSS z-4dCHJ1P{!!Z8hTaREQu-$0(e`F7Brzi8jt>IqdC+fy#mWTAZ`diD?Kv@GY-^XjU( zY`|J9yBVbe&Nb{72M8YT_U7^;oLGD0Qtrd4 zKTRpuecZ?`9(_{}?tqhFsAk;5)+Yk)FW)AwzjQA7TW9g@pHulSQH;7QqTq_aEu&&o zLDr&RHzlUKy)|QrFyhQw8M|GGyql{tC1Q~`UeQ0=@K2VIp;kYZ^V`LcOW$%VWwPw< zYIY6AcYD=jGVZ;=*gp1FZlGH@nQgV=ZKmX`2!;j_q@?v>b(b!j^q<-Wu zGjVr0`+XP=*NzO{VdUQiE@Xh z9vb|`OBD|MI`noEejki9*1{>+YzFdR%~-pb87xI|(i4{4_Y;BF^pE~TT+L1|n(4gy zt2&u4msj6s)A`wBe=YJ_*4x&V*!^poFV6y=iGPaU_N#Zaba^A$g7w_LszWny^ zy?F182)2JtBpTTKcE1-^)aF>+d4`Qb?|hCU>RJ%=(|dW-P~$dV*yJcWT%F zS@rmi;rRc5@g-PS7t8C**&;S^|FHWq*+O^7yVeGs_eiD!-s+>M&U51n5=ezDUn3A+ zoL36?_I&cLv(RtPop?WKp|X~gDC>w$T3#D&InlD1Ll3rccstx(FeW+4IeeWFRDNLN z4KHO}*f99tr;F2RbunF_nBLCJO&@XDIu>n1-x!=6Nkd8{RN|3}$k>UY*s zv%YvG<0g8%Cs>_Vm&@x_91mK0@Yg-beY<7DgTKL3M(#ivGXX%fh8z;hIX%NoOeBH} zef>G=LSLttk9i9~Yv+=j4w>eZ^P)O?-d3`TT-#Bi-FmUKmFtPbxk`Sh${yayD1B>m znxa`5=m`uekZ^gdND~NqibWrlc`E>AZMrrhU zWRaKC#bUa-s7{tYr>phy|As#Xk0jXV-bsnC!A>%L!NW)XIiQmHfOK{@2f-k)W-^m} z621p7<9)6qW>q30-B8t5r0)A%sy0e8svZRr*W1`25A0wt;4c}ilC@LmO7*p{BkXoa z7lQXO%1=Nnr@o!er(h(P%f%UT-^C;N82R0P>>=KH?i;)hk>7<6Id*0(1q~qOt@8RE z3Ntr8$42z4sDZxS!aYf~;Kp=R0!Bi7UQTkaw~@Sg%;3XKRHF3U*n;q8n( z$p+tiTV23a`PTWw3VZIs@9L6^DC`9Yl={6Wtj(fNgv>G=6G``?T2hdHFRJ}> zqFXGamfEEOVzn`na9xnoGT6(Yqa6yto#kR;V0Xedq_2y;7akRFX51!y-zi>I@ca4x z9j-anDlUdP%_*z7m$0jOmq4C|FEEC7v(~-P8a9It3Vo}2q}CLyEiI35YpR40lmLq(U{|A4Anv5!;#h$!xJBwislM!b#+!PtJCF=>8)?5Y3u7~*@sxS zyptJfHD$Cz!^A;eszqT}aYbnH0Nbabqclok8G4_0PKU6L2N zw~;}fks;k$b9z^#xqRJe=^#I)D-%0QdMyegHD2 zx`Ia^J9UQmFwjflvKFdF;;&u~+J2mh zwZE^yID06McGrtdaBk$b7I7Re!$RM@aKRpLUOdate*q6?EquWo9YbA9DxaNlb{St=>|P#)YjK1)=kNc@|O{m1qjPhghI=9V~b3 zh!`&4kBE^w3mG(8f|R^G72M(1&rx^yH3_V?2&|^crQQYmQ+JdjkCCT_`^u|EZN+hT zOUA^PB%3gWQ46^_!MULr<0LNf-Ja-0abuN>Me&Q`PAW>GC>U}8;5`^?`^3A=NT zZ{Gy9_f|=HChu8CH%ekiKHf2Ak{>=!zIH=O9~{b`uc;v=92W%d$EjzM+#>wB%#i*N zwowVegd{CZeol-!fNZ3E!Ugg^GNKdnzdgf)gFn9EJ#cp2u9geP!cH&XvQMU~ZHh@b z7B|?Xbq_2*2o2vO$%N}IJ_hguWMn}D2I7-@&Iigv+WA$hb|jV>!Bbdz>BD`OnYDprnjBmgf0<;g2gGR@_R7;stLkthH?=*k?&!QS+DxS zEO<-f8oqDl)Bgj%I9*le)73h_Eaq>tgqL*BdcW#V=9_Ngx9*;QY|p6!ydp$rcXY5k zY^N3qWKlKLzzg{!LxON7NDe?#B=}*>9Oui` zbWy?Yd>N#FW%NM3GZ}J=-JJY3Wu$P)k(XnXwmyA@F{pco67Dujo8@0_HKx`79ID2s zw(!WU!%d6IL*T2pF|J(|Ne+Yk49na1tc*eWi2qlog6gapRpzA-5Y@&yc6L2o!t4F# z=Jt9zfn7lK*WADtdeK}>C-d1&1!>s%e_pSaSf}q5SK*G1TgJIRf-IXo10PzQH>q_`z)po)BZUT zMiXn8pdCU&!+UB52I)y8?i)t;HZeSNKg5UQtr%;*2t6UZCOoRemLRKw!~bVDW15?J z^>aGg{2dgl_93v!8|vwfIX^hxfy63!z_A@Pwbqx1L1&3RltdVxW7dgm@EtFP#|EF| z#UPNVC`BE`Zt#8*UR0NmZwhx%U{uFjGFG9Ir~**SzI0QHx)slT+}`)c>~gbQRoAeK zew(H^Gpl!o`NiT)X4Y`^QB;e$2*ajDtf<^xYTBEUu{)Q1 zquMIM9V|KW;8PLq8yS4Um8_A=EC=`V_Jga=?arcZRp(a9pOV8+{SKW_0{7$XV9>Y* z!cJ$kXw1p+tI6B})Tq`yA7_{uMdJO{!1lqf{hZEE|GvF^6vJ~*u8`pcOOC;XQObI; zBa`qCGK72PIWULL!F6D1ItK=MoaE989x-iFl7SB^6g_%-7{=8NWp>_*G2u_n5W!@K zt0Hu>hKH`#6};>G7W?772$GJijrq%!@gP*}?WBN#d54ytr$yf-Df8();n;~9V*%$k zB@hf*_&)MXPxi;Vs3-d)HP@+lt-)ovbDdPvT61O?FWxipx3h=fuCYPK#91+lIByxR zsG@ldlY8Rc>uGa2O?6H1k{&s$`?bxi;1Yg{i{@-rUBSU$hEtq7Z?;g0#XI_99g@@= zr}69VJB-1ZY9#{MPQh^065^k_mklO4N;5JN8Rjt`)eV@vChk#J0M;nO#p;TlI8yZJO*o8QNXN z@tP*#Ym7W^h3GPX9tqnD(=Y_5hC^iuB;lv8?p)cYug@~(%0z9ARK$@Mpag!)q%GK% z8!ZiYlhr@n&VuMI8LiR6Pe9j7^|U(oK@s8wjWXrUZm!}DE~>w(@6*i&0)*I?;^|O_ z-QDc>i8vH>=skZ7(E#h~^s?H3&qMJ$5=Q(9k|#*7KX%GpZhHMOsoX_tPK=hUQ|g7& z_Ws+rHHfpKST zyM$f4hrX*_=e}eb2jxC`Lu;TQNE;rzRK?^ksMVB1pvx`bWF_<$QXM zq~*&+pAM!lcWTBY-oxFL_x2gQslf}3!rdFGg5=-SRG?HW{yRiVCY-$^P~tlKq(F(H z$mnP#aZu3$94LzHl_;h6_AtzLKIG>8C1Z&{wFofLnr>}b;en5L%>_R!!!PE}?#Bn&K<_NCKE2M!defufuO5bh+HCZ7L^!HFm zW3^VyYHG{jj(eNQ6A;)gV(+aPvnfH429uLs>U=;k4ex2(2&lz$Hm`mzmuEklINkV@ zSJJwBIBF%$dyQk;yO7qeo0E1>h6+(rlBpE}_WtEf)ZV`&`_LM43ov);iEuIrX=}-u z+i){IbC-lOZlvVd3O?SFG1hUy5a2^-8BS!ppK;qc?B;wrtNw20x64h)`SRqNA>HZk zYU718L%bI_wsk9Gg0?q&c^IRus+Rm^$eGwcUlux7Cm3yoV)wdi5>uu#e$J z!xuQVJzGwEKdB%=t*J%aaacZ1Tl2ebQEPseVtG>%KI_^jXW9WWQZN%{h|tBXIoQjg z;(G3K(N?jA5UG}w6ftAGnGu+=KmM@%zv>4>#TU!(o3K6nP|u*%>eqp-?8k1B!=+T&hjp1rx!~&Zk(A1FLW8V!-zEe zUMZ@3WP4lTfG~XckTF=HAv&0w7qaHM=Gc+SCAFmVaAQY>12rJo1DR`3_1&57I7WtZ zvV|pcgIxFg_6>4}WhH~Bj3LTpitixu9!D|0c`^C3bFi*z)t@N`%T+CeG}0LefbUdI zrBJfu_|H=dy_*S!P^y-uB!m$!Y5Y;~YWjcG&t`rxofYL!-Ctkw;U@Mg_ZHz$4PN8e zURYV{Q|T!1DJ>MA)xGvjG?;$xX-K|*mNDzgYop=C9IXMQs<9AY8^KERdxRTG_hS>I z01)^q;}Lv#OGY^WByN(p$cJql66?+M`T`u==3=>8Bso6tsvg-r-*0tKywhq4*=}`N zovxNQr$IG%_x+d2jk~Mp8U4PLAIaBEGXS_RF?QUO4!#I2TM5J{b(W^=+Ygfu9Wuk^ z`}vSUX24fdQpSke%T*HN0R|yK5ydWd2Zu7(IjhA`PfSh(+_j0aCHKHjI>V-q4Su>$ zpRbzLWp%xrH;eVZf3DO z8LwrOMjM4)+>iG)73^ubfE0Qb&7Ffym$BpSjQ35V`>&NWZSP@Y$fdc|2SJFzm%jcI z^`-5fQ!QJJWew+!`X#djuCRyz!2pQ3r+qoB{k#=LOi-6iab5N%^g27Xi`G_-ih3MKO#H|a{| zCEcW|Da5JPDOnj^Yi_7C9%$*no=~utJn75rlvVDMv6_{Tt;`E`I4tho^4EXtFl>u= zGk#}zpTC|h=iisrV!E1DKj5-_o6S6eGR3Oy3U)14<-caKMCCpF*d?k^wC_&xu|{rw zD#AJ2XgT`*r9PN~-+CL}QsH7C&F&#HbYw)VA)@=bd+S^1g6e>81k7kaS4kk4{nVy9zJ7vTOyrU@-nTAV_BFnRZ zo(_&{shUwF1r2cw2}shvK25%K+Ux&vaSSQ#b&j*vglGqxYea2069T+e(Rns^GX;1c zyd|S4pTv)($B;hE$`?Z<*<-5iM5{4B;T>kpRrP%ZR)<(!@M!Cctr)@7ZcFq>+_T;_ z&dhzubdKphdJLA#s18ESn&D8H)wRjdU4QXv@}g7idErjJBvpHKO^o*F9>9u;RvQ0Q zBGB}=FbF6dnqYI5i=mE~nMhk(tuyhxc;w?nGTfzwXUm&&MAx5J7hoV^^jRFw>mK3` z-H$vxZ?O2WBT&r)k`>EQ6N(~QmF47iAK$qEz>n{q4Fdon0@a)f?X(-Mgme#eA-%fI z-VtcHiD8Y_VO+hpX0)BbP*cGOww-N(A1SAcdc)hB)vN;B`nxySy)^>esRQwFEcvRbLZFtT-{a|&FZANIS-(51^Ws) zGFa|8AECG4J$wvVpS0Gmf(qHnIkX(_G(@~7U^cJcOx}0>Lzn6AeX@T@YE2DiPLILD z%W0#qIQkeco8HFq20phIbNn?E1J(pS+LlHJtgDmx^7ImGlYN*C-pjb=tWn@<`m>d; zxmj)2 z(vh1$_y}i|nR1-E;a-L(O@^np-6f-hx_UxnEj24NT_y?tkCCyPTsJ?a^Xhtez5Fo? zr%Dc+B!kWF54!74{*jD3hY~+{jgbTOm<*^t;s35o&4{Xdlck9``>p5C-{$ypcmh#U z@D`JLFE(T0$gJk}QR3`iTRq>dC{dJYt}>f0?t0OFDW3>k3zt-7JB1Nm#3(^|F{r|- z`7v8xR9DUXV!2tx2fqi&jdp5@J{;%%(e?nnQSgwF+pRXCvJGT=OdzWkgq)cWhp(Sq z%XKxP(}SX_7Dj04QuZQ$rl8VqjviR-3U{;fh-k0Y<*nE^Sv?UPE18OjQ0?$PV`b)-e5dz6x zeHT6avx$h>;O&eDMF{7-Sf7ESZ;$x?5_8k&(+eMZh6}sPoru8Sd~*Hxn@>4@95woIB+Wt7!+SCmtnwtQ3i5~s8_Ob6+dfe0uNkF! zkrT=xMvqjw;}pMmA*1x(F=M}-RqJJSJ6#4odUu}Rye?IDntO-g16;r1Lq=}C+=kNZ z2mzM0iV>!z$J{!%?2Wl41*s4*K{TUEyXA0XYw@uj2fF28FL@kk10&$>ntg*+?ZmJ~ zP*tg#I9|~x4LUa*KZhT{a#6t#;W{o?^@J64?}Cn0K@Z>I=+U_`B&eXX+Cb#VYL>-9 z{Ka$MUvk{HfDa^N3WDMeqm1$!f@puzU~hgFe+z>%Vdeg4Ul zcXRA$o4gz2;KE!_3X!p*QkGP14fk?zdh0D1gHAHr22sXr$8DW8EAZLdfm?VplUhSF=?$zilorLY#8$K1)=l-GkoM9q#a+N%W=n^rJgMiOHmE!bGF|Q#=05L?(am zTQ44dn-dQ+Q!~pIRaQ9hFb7{F41W}Mr2fu^hsB3vG5jT?uq}y`5=QoQF$U<7@Mgy2 zHSbiXuA86J`RU)cacPWf>Z6@7TMy^AZ~B@|eH1)w3?7y-7F3bj{w31T!|x-@!@l)~ z%irbX(o$&YQQTr-CfP!Cr=Q)u95iyI{;18JnOJCOu)eLr8?-ipD;AH=nMS z2$13ThW`|e~Cg)HykV6qd_trp}iH}bl# zpgJu1z&}7)jfh_xM!JcH?AOnePhX$K;1}(mQ~4_RFzXl?Ir2;suSe>gyWookRWE%;&e&8V-0BLaBB*fKp8! z_ab(6sJp#xqPiQrz_F8BFe^W5wyNc@r3T67^HSP>y>(OCf4$8~X?1NCMfn@%kcLWW zwU$ynMoJs*s{s3%w`AY7@(Cpq$!bpee81c0knmE*lg}<@)kTGP$aem{#Q0GT+}S<7 zy}PlQBS^us#t_~btxSK^mtmKIz<-98Sq=foAfC0noAtfp@|Dsz%L22$-d@rS`T1yx zVAU971tQ9`&wn_CRoB z@aRz(vt-FPkJ7EIr zj)Jm-C-(7H#*x+D1fmuIK({NUjuPmECr*>}qf!q&F$kF;`m@$#47 zCZGR&Fy@vu>ev6J{c}PfgW(8`>8Ka2t(oCkK8iXSDTr9afv!ChYY-nox#!;E&xc3LiEGm&~>G2aFi%SRlt1xXA2o zkyGDtyG6THNpjr z!#m&GDg3Zo$@S}La~X&^mj^1sbO*Ih4`Bol+R5W(mmWq(_V9$hAU zh4X#Wd3DvS*R!kHBIx6$xcm3)6S?O#)F;}JyFXZZ4Ccj@roMe4nupe!_vPUdZK1cX zChz~JbDIujar@`!JUyI&WT-LK38+h5TVshX$ByIgnB7Boj#jM6zyI0rW} zZmop*?56tJBtcch=;hqQ+qcy-NG}&WWDK<`X<0CGi`_>|(=6hI@@(?cR~LBEHg*QN zXDl|ltUJ7}u~;Rfq1-+W_e`*{L$yo%1*6=~bb?G-%J%H>s+ld~bG8FwCBc45 zn4)`b``4=wrvWIuM)1Np8*WV74-c0Os8%w;ue?A+Fd~54KEz$D*{eTP!JA zB!((M026LvSZ!#?XL>8fFcQ)rn*rhOIKVF~Z3XW-zr|lkk8U+0C_An&cDh{5&hFUK z0|(mMoM)JO@}|1yxI@D=_AW_SgZG3n_)i`x1|g9Gcm`4TRMX1=h$)i1LnhhLP8bD0 zaY4Bs#~xS^@^&&j*gjMa>Xr*^kRy2}+^k@=a*II+kG1oo$_B+E+x5+S(=4i!*`iuE z^Q&L~V{>wLGjIN${arP4`1?&z@GUst-ZfwchXsOL+11sS8glQy#u&_=X-Wf>qO9AF zqtdm?q(OiCVe&^O6z1X-|40gjVcsXLblR~kP7%UaDGS0BgUt*}5)JuaZ^gd-bF5Op zMl9{|FJ4U{7d&l$MBV@R>u1zlox$%X5kQb_&ymxBRKr>)v%$+Jb3!ZX9SfAr+q07&%nRo9|RBk zEDOQ$@|DX)_tJq$C%Nc^hJ>A9J=ZCk!KqoLwJA99+uP3Ie9=(Y?yng0=kNnyw&qH1 zANzH1x0v!pP#kzW|LAeSv*n_hpH-WS zgwy?S>kFwy<_dh(%*-T!>unfixR>@G}AsI<(f%~@pQR7CoG8gj*a-jeAeFxo?aSrr@0%E1`ol(YOfaKz=AGG4 zEj(2-OB!0Z`mqg7kWeNJi4EcXury^tx4OE%iss3`xpnZ5&g}g*A`L`tNT(MCUwMrb zY=jk@O$c{$a4FnhF&0rv-m-dHxl1(+onsBh+nWR=#}W$5b)7gFIGtCU<@sW^nC)5! zyWe-(c(X(gf`cz#1#{jr8Bcr9A49(E(@la~gI{gST1t6{4v8nr-=0riynQh2Z_k~0 z`E4p$77#-~Z0s}SSVD-gv>-Sn+|2L<@1QUB*X%n}3yV(B{Fyl{Sw6Bl_l_m*)$;EP zymk0NuP=9&2F%y%9x!n4_@6vo4xfH(zil}2=NSzAFgU5L>}zl*TGvi#+ihJZOWTkM z6V3^9WPDo&8V)Y13{kVcg@eH(?s~Dd6}RwHtc4Ck<6gNM&U)NFcs2dM>Sr^*n9i;u z4!BTY?48(-f$_H9k+mb zb!cqx2h5CRk3vTkZ0c~Rma|^WcM3Kk20~_%tE!3DFb)LBFXY94eqS|<%lT|konADH z^XhEY{Oz0D?i!lIPOm$+p3N1}&+I>BUwfYWM1SJmZoJ`W<=CsP6o zE}%rgcLyb~{?m^h(UL$GSDG5>RwasTc(-nhP%aiG9(^MzR1^n2DE%!0VU4s)Y zVYs_MD#M2#-EOrA*lqNkY%3L}UqMc?KK?7N5%#a7MwqR&Ax62N3{yicN()k|hdT)^ zS4;58mbJ9$8_RleMmMBsrrFC(Wiq)D4)X6GA_!#VAP@Q_% zl)WYUmMkXJA~~&~BzHEc4Wy4b(HnKT&0@1$RO^e&<{E|kb{k0A(%(!F_6@M z!qMF*B>@RKMaq5!Za&l{iTluxe@s5S>6);AbVk?yIn}GNhI5Ak67nqYOhj65An?#8 zthmDdTpae>JC<;6QKISAh)J69O5%Gk^NdOz`w$ z8#0HyEKoC$wE(k{@QZzxHFxm)M;A}gHe?3*F(4(>@M5mWAGTc$QL5xjzQ30|Db0a^ z*jX|Lr(hi015%e6F2dUxw?(%h@y}|7gv+b50F3y=lSS_7?`qgZCX0d>7(;NZz+(pX zZED2dL0;F>$W75Tf0(@JNU1zc>?A3buC=9%b5E?qatb*fE9k3(&EyeLZFkr1lCdyZ zk_loMtvUpTjAQ+HHRI?Q-H8v~-mGq`n>8F^7&PwzD&A+ZKRDhJx$Q2X;^5gM?<*-H zg9zN}y8U-6Mw!=JdiC1vExmGJ$7wnpcrj@q&3%vuw6x|-8LG>T1^4$djD*ba-Ttb5 zL zpvU!Uy4l=T^X7JWvxz}I@LtA`i~Np)3-I9Tw3(kxXRA;PC9&BumFn(vdzPFD2Z_B{ zvNr8KZsZPJOCCh#6xnv*!-I{|+(y)k-{XP#?`fO1MzvJ!4~-}^bE!;8MxSsm2TQ4V z3q}E3dV)E*%Y}EC`WW8NDE+rr^}Y+;f6P|rvw1bE&TrP$`D(UaFJsWkqVi-JSg?mH z*)JPEP@Sy*4kP~}h<23Eog%CSl2}3BoR_G7{p>cTT^wh!F%9{Sz$n_8BBWf_;MtVo z<$BZJP73(-ZoMc}T4IZmX>}moJ6^~rKLJrCmU(kFyQ)^zYI-%j+_k)(ITV};ynZqLk^itQrx$HxMi`o4h|(PxB_1?tBo{HZ%ZKO7I?3MCGg&64p#jQ zmh71zBk-ANvAX(jG$-E9c#C8AGg7w@%~mJP2L59)>|`GY(CHm}2_L%)pfh~{y3P^re)+-mtnQ$2(z9ZCLBWwy-YE-X5fQ@WGUDC-4)Q=KTa#aB!B`JV zax8g30zWV)j7L4r82H{go9pF#zN}27lvN_Ob&slNcl%BV2aAruQ5qg9lUdq|zvDPj zPnj%XR$sqG&8q!#G++f2BFs`P9VtNx;i|Po)Ejzx$fKtk>JYn&_Kk~9h(zKo>Iyi7 z(4l^tC?Z34)F5@WJfE(r6C4cw{(U-)Rf@aql(01S+;+4y|4kA`7p#A5CuW2S?EFgWgUJF=5zwYsf-&gQUMU~Xyi%9OAVPAS{GwpCrc<&JGl+$x_M%32in zfb<8GuDpuNOHWtxWtOfcvZfg+oHS31nhOa(H~J_5h;Uzr*Hpa~`z04Mf&T}eO>QDI z7jaEZyo_<$TF00?J6}Rpx0udvZ%%siKRat{=8!PD2f1$zX1l&-{~=?DEM=%Q57|uJ z22t=)?@!+)jPva)cYxrn!*iS-AW*fj2LELp-ZseB^y9G4^tP3r3nJOkX0U2(I!H*A zqhV6^>~lT6Y8JSmn^}~OCZ;q$y7J3CyZLGL*YaYqUM`}>8f>*h(bPTJeGRt%TFH?g z?_py{A;=(j-3}~HkgR@rHTnGR!KS}BHr@U?;czuE7DX~0u`!OlI#HC1aS&U)vr^{( zuo%AE(x5s8k!5IBWk$d|W&(3ClI7;&wz{4+mjmhNJ|wKWI`8gsb}hdapkfW5f9!CZ zN$PVf8_{+Rkf5LBHB~01)VmDJA5#lBi^~YAldt4K=h_ zSpQ963qQPZgYku)mkt^oQjkcwGx`+p9*4){mqo1y>XX}m4P{%5JVrEJZ&*& z3@wH;#QPZ;i^jZKUN7fo)$|s*Zi2bq9kyDgdfXlNuI9Ykt0v3K-V2Puq%AdmQH(Km zrxuT-rkQx*J-Vgb)P#c{aRz&lR#|`#ENRod-5fkX;I9~~G;=fu zkJ;sBxvJpV>*hAp|9ncxpze%I_~qRsgS=-SJIdzT`cbxotH(@>p(1Bil>PGCQuG5UB!j(##tYfC(Zs@sBikc;OUA-%9NaXuHHVW( z;?<0RMDo5yHlI!__-_@*C*>-YxJP@0VA^~57(B0L;WTcN&^b}>e(`DY=F5ZOzHkWV z+CL}KW2+6N4u2%Y&JHn(8v8i#-)-d1f>~jeW;UBwV;i?KQ4@@@WUWje``esVC&;;o zF0EhZ#@iT4=zKSd_Y>Y=)?9(Fox$5DnosVIN|dwR^V`4w6uecUTopX)*pAfpP{0In zAdt8rM`PF?PS&fO85_4=l~&nB2(5*@%_&yHnQ%#2Nl)6_OdiYncKD#TW~^Av1vc0? zADFbs@TE3}0)7%-8ViHh&3yLvMT6{+&1!a?Lv!;;l+5lKKeba0A3g@B8n{&2)>Ls` zgoV;y(Pq=9$?KP0v&nI&?VqFe3t=y(+-WpXNfj}im%t|auU}v`&RH-@Tf-2qBZTzI zQN5|RkqMOC(W6&q)oFvr*{d;?NIBiJ=^0v*nYGy_ofj;5YzL^g@CVY6qL5N{M|#3S z511$geg604`M(}a=<~lj6Kek)jY+ZVL9F(ZNlv&ZIA+@0%i)rk{*qDQJl>)yl`K-- z#S0oiKKbATXJ?D)ZFLSmb%!SsP_5$(l{5|$Bj zzGuy1Hl0^3GTHwG97qMc#<)_BM{cXtWdCl5kp~(i3~)Xl3DCB;$P>XIgD8mMfGL^3AkF zZOT2Wq1sf&*j}*Q$kSNKbx^hf2Y?dN*1*3rCx_m7{N?X*_{*^kDWq_vM{xSoz^QTi zD4o>a#`5N7w-_rHtm*1}I;%Edgcp6mf=8fPa!+*M z7V9w0Qt*^9WTu?3fIWgBjS#CfD&gb>vR^;DfvihRnhs=<#1IvNIy*J2hDa8XN+lbt z{$@hkgtMTG$(F}4E0lHDi%s;QiZQ73m+D-S&occiwS{5ZXQa zU5$F57fynUz1J9d=&dLXScxTsk(9ULq&8U}fVUsKnf(tr9$laYHaK)g^baB(N@UT| zf!=2F7}vIk+uoY7q?b!%$K-mnefrkX<>WFa714JK6Nb znGsH_2l3iy%eB?aQTSz2N$x9+?Awa}ZV zu99|ogpk*~{jGPDS4P#ANee%HTLJ(Q>|xl$4y3u>g0ZGEd|nxqqW-efK5c`-GHYOws{O4?OEp z`mktI3A@89FuvvA7kHuYGhSZ?!wA`8A8`GLZ@mW+;gh58XswtB3{#F?-;kYi@`CUi~_B{ zXg`P46QU+yg@UI>eR_RTIR4`&l)*&a=3=&5ZxdlJkyW~9l^@ZDuaU?xgT+Vg-jvh< ze1X==ppKgiN!eodw-1_$)kYFw96@HIYDKAl&wmjT8E*%J8Rl?%vs*6~$uh`ebgdN2 z7q-JgAElog>Vw=dwf!~4hgHpW6t0vbfR{V!?w;Ej4?4V8hYrrH{1smabb2P#1vzsjgsD_Jg%2ybKD zvv$+7pUvv5I-i}S6o3i>hujnF*CSIV+;lFMUnH&Ff4F9%NpYO^mX!Q z$2a`xYiE*wruc@Xt+mvII6*3k(HU)pHsvZm{q3a3c=Bly{Y9g2APq5aZRnx1Ja|9j zHqo2;_v&i8I$6%ocCGXj;tqFDyL_c*U|ijM^caTnBxAlsGmg1mEo+@8(evJu^LU>l z=fO?Qj3vf3X2`;Yg*dPzRgAZjVM89`{qL6Ro3Nb_hJh1Pq!ex+Z)O}ciw`O3?DVp_ zxLL!g2gdvKzceUbD!2IAH#$e9IhR|JOYXkNMk)R19=7bu+2UjuL)AC3v+;Z$} zFhjX@IE>G-a+qb%{#nnvO?uOedHA?l)(x}W@=QkKwVIhQzPD|Mn!98A^dhE ztkH5Hw+u+i_otZg_fSL?*IhHl*GTL{f~je_1IeK2 zyEkTr`4_u`EYOq*mOFOJtF;M~sgVE_uL`~xlw}o#zf4|qNQbvyI)i(WLOM`WbI2Qw zr4L16C2LOLlV7Ii+26&%e8|C)eT!2QW-yZ{t}>P%jP+;N%#nIBQJfK+=w>;;t>ATM z*9d+OwJH7Glxlmr2e)h4*LjzO!3C=y+u(#IL5&H;n{CU^2@WU2-d=hR?q!yPLk3XA zU4==C8edFNpF^!oxi{QVXnR&EuCx*~fv2U$v^pJbBsJp#|9;SBa6ka6##XU^NI#(TVMBIFHT;n+6Mf~G4{ZCm&? zBR;$*6d$cZy`Qu|qF+_0_fFFK?{pQ)LQw0nNEj^5L7K+Aq;+2x+uKAQYvR^~)n79T z@Wqxv&5S#kwt%0;^=h`BR&nG5%V@tIwQ79NF@Cdx6A#f4;qG$0ZVt%z;UI@xZYTE< zdzUoe*L}dTEl_C|DCZEwBG(3DxsbCV1?YX{x!qS8ZWqFQCM6MWC0LqTYozcl$<5~N zB};>Dpt;&D80Ac4lU5u=9f;<|TN$@yUNx)B>T)`t@67$53Ea&oAGrr!zNNDbyc<6H z=w{4>KOzIU7~{w#qH7UOdMAoQZ(c-;L+zgv{KFL0JdCj}T!I^=b%`07a0_`14ci(2 z-6dmQR7flc5|@RkXPa=;^Z0b1J^>MU-fW?nFWwJbdII08RoDQZ4R? z1yEEjq!mxQ?cYB}-FExu1nC0Rj8oI;Hd6ww+-gO<4oxw)9qua&$-lit>Ma>-*bsu; z8pf&!PuV)=x$!neY4uTpvgK8?sM`O(-^%g#S){1sp69;)yL+ExJI8y-u`^O(On^wz z5TYrBG^=cu@I4?40_jCsDnZ`aC#$WI%x51uu(Z_MO_oUW_Ue+qW^8zrnl=Qna+d;A z+)v{Ljl9M*JH2S8^Xji^eKp%$>{@6lNfO?jd-*!kFgLjO^kW+~)4tnf3^su?Cjzp; zye{p_c$YSvDnlNp^}`gn(X|nzRJ$g8{{qN=Z^>A+jqFthuJjs>O@DllU=dBoXpWMPPuePrH z42LA0|M6E2)m)uH@)YUP;Ps5RT9wm7-C^@({AhOpyZX`HUNz}Ty%!jLhHHbFbcOsU zcZ@d+rUX z?Zj z`{dmWd4(`NMBPUANQi$(Jvqd!s^eTjU#fK0QdID@%sIi^T5k3+gf$eoPCElAQ<4=che=J0rwVqX1^~S za^R(t1G?U;j3M@?GLW~`9DdNI23MTL2=(QYn`VD;c>9xSwgzv*yS|pR5GRQuP>$f; z5BK!$f-$iircfOe+tT64 zPp=FO=lzd~p0{xwW)lq$1FpKW%QwbBo?&m%V+XfJih%MEqDBnyfvSuvPcOcTHV$UozS6^&UNjn6<@3cq~!yx&1|m zt3q0tM8di&j1ozfs3OMg_d+CZ1xmk{P@Cy(Vwfd(NaEdFF{%g6a7>BVEgZpc*2fE2 zW1xz4GoSr^(JZR<1^C+Q$B~ff4ra(RLe6(~bGpqX2CI!cF15-AT5c`&7RNp{{MWLI z!C(H{6Lb3Sj9!osH8)IY$6q4c38Gc2WI;4Vu$KY>s<&i}<3)0$r}a2q_GfOwLNH#@ zC_~v?pL*J?=GE1-Ioq!?yhB-dn3=e{okuDOXVAlV?=bT31319I`L-2M2LBKmK^_Ox z?;j_BcK)};K;APnZV_ddgy8sW7f|zBN?}U2io&f7f~|)1a{Lwhp9edU1i|pumTDEX zP8%-iAN_?mpRStuS#@2(r(#vIeRRMSpnFxvYafNLaqJA6TN-dEbBKy@zzBYhCJe^Y z_~=(1W2+mFze+K-!c!Qv&O{UBCrsH9D0M&@dx8b1f>iQ~L zVcuOx2jQbaQ_78NnnqF`pePTdUJZ9M7{?EBOL+_S&Cwv}9Up=BwX_&{3*k;9GGUA<$&T*rWRQJzsQT5d79B*i6T)jQQ|djtOgN}x z3HwAv?=ZRk+06gm(#w71IR^K1cQx6==NN*gAKPFhBf%g8wcun71n^im%CgzF|K-)I z|0|P?r%T3b84>g2$r8a+KbG^` zMb2pOBa$V1$Gofc9!!=TK79=BCPirwOlu?`Z)X4)$(%*nnK2R~QE83l-TbeSwc?VN zqC^fiktahtz=`ZF8kO%7sJ2Ok*}{AS=RN*;hfQ-kU#`H@ww#Pv9jK1NF~<(wvl{9` zWf0;7%N^S-GNt{wUB*c}$;R-yGHmMW=gHeHj&-Fd-=^YN#58Clq!Y(lQbWFKv}C3@ z>NwcYFy=U9VI`UvA93t18J*jeD3-uTCJF0V^J8{aT~#M5`2D1S#&}bY&BFR?r?hJ@SvC;y;X%58k z^Q+0{&cr`EjE|p_scJ^pdjR38^YT4+X&ACfQbMwUR?dRa;QrE8nxbO6mf>$awG4#a;?Ie54IEG$IWe@b}`Xoff)4p*Jupd{yD+C zD3rC5cd{Isw%S_!QMxSQt`1Eo{RR8YSK0mw6w+$-nk?6=>1K0V&70fh%_iDyflK*E z_gL=-cEN|9!H;J%oy9dRdnZw#MC2X)zFnEvizS+-!Q+nZ7Xz6~1UFcSOn#{XFWL#^eoN-AzTdM|b}ZS- zXszdJx`Jr(wpvZk)|=>5;d*er=*eCDuKpA-CDlSadIthBUg%9^0H02}LG_sttTG zWi3L)Vglk1*`$L=aJgxXrVMwLZj-7Dgdh`i+SY;HbVH`QYKv)MM{wmXk_wkU^pvgLasTM_)hqsLHE zMLK-XVwGtza`@}am3e;odGg^+7tlH;+x|Hk&?2LgG&}(DE8dE+7c<##GY4zKdJD!t zgh&!^YC-Mx#>mgRd%Ca1M--m%V#Z&4Jz3qHPOGcwd@(x>3_5Syg=#+D$(QJrMBg+C z1oWPLY$t3?$RklBszxDBFR#l98S0Dwjb^CrpA#&p5Y-xoM#8e%P|hSR>4N>89PEOf z<@zpIPo$o}|J{3WvYI*Mjl^=z zsW)xA_i$dYhl7dIy#-@&INmy~nIUd9Ucy zZL&oE>z-qF+1P)FWKiv`JcgiJQKo{HD%L(xpBTY+0$huIAzvds9ohuwdkh26Kc#mpLV8iL+0m+dZ&>&vSc-pOJ%T># zE(s#cBV4;X@)Ak$ZUDmI>7#JWoQ94W^Hz!cr!_TsL-mjyzmI3f?~~avt)($7fw^1m z;zIC}xc&Za4z=lE#RL=>wWv*xV)=lvS-ht)Iq35Sa^maecC!qEa&~ztUZ+~lTw{ev2x7R?qJsa; zD!)awH!3;YM9-p$=2}q01j+Wj{-QC31HvZM)Iy{r==(#mqnNk5FG9nKZkF>|HT%&l zX6uVy6}mL@v3p=U6r%H(kAuZW9uiv_G>Y+;rfsVd$#__$PK3l?Kf58Zi`Pnr#0oic z409;vEF!>#KnT~PM8)C81_8|(QL(pX3=6`@1k2f~uc?_Lj=>ulWjwqqN$XX!UeB&( zi@4NgVP+ZcsP~PKhvl+^r;MVWC0H;J%WJ`EZhFP(wDmeIUe|ilEnZ}xwI2Vf6}8p2 zg>yZI^?I8cZun*l$383=Gh50K&0<{1pkKd{H4+cwHg0Ay>&4sn2SB#|LeE=mR=4Np zKbmz|(TZ<1ZK?NKenWjF_gwe2(f&&%P1SqY7);eF<(n#Hw8k+~h9vEIE#Vh$UHbDE zZ=Vg*pKAh9FSo?iuNSB%IJC>#2pug~5O_O9X#aXjWs1q;hxF3l7quBcs(dv;ko6E2Pz0dKKNea5V z>U}5nrP|r@!fCNH_ce~)-{RWnps+4l_ynWi33EjS9rU*gGD{N+=vrECaDdVgX5dt_ z5{jPvEetoT2S+cwCHu8FK9Ld`_L)pdw)DwB%wuz86_~I>!P*Kpa5jxnI^XZEfQfpC znBVZ~y+@+b7OXyUSIsQyg?L(@NNS;K$YSdpuDdU9+9qHBbY&rkFtQN?-{sV3#=tyVGMP(Mn zy>r~58J#f|6|6jRyHp|oXSS0}cfUYo^J?RtCeJ@Ti!t%Ee~wxvsW}&ndzQ&-L%5Zs z+?++YmpsXPv&}rcC1V9NoJlt|mBotVctfK!;as;1UiWf6oq^X~_K2O2Gtunc(ybXpc!EhsFi{Mk>-y&0z`|Ib)*A9v4B1pa_$$xmQ1h>LTR3Q@-R4OWExl(q2 zJ6Wi&0Yz?a%>-$P#AENxLv2&PN$PUrC5_VWM*G!p70qIE(Nw1poo<#W)xFuwV$L?} zFiIG@dm;OI+1yv%MjFz+z{o!eO7j3wMp-T4Q;&q_J%-!Z2jT69$^XVB1phZFA*gG` zq@gZv0VB1QLV$^uaKPavhF$QWM2fp&43~{mF{BnI8G`phY&iN+ntE=C{qyGJWLe>q z(R{sMRV%+i<(_Zxs#duA7{X#|H4h9E+$gJcODCIQm+${)@~*SX_y5z`<-3$!3i#nr z%Z%(sCXB^-ZozyJ!Ts&h-^1Z5;NFU{%$UK&BKcs?EW2-eA3vh|1k=X_hOIZ#>x=24 z+FUGGi>P>ax1ADR)IGOd&CPq0WFG3Rf9wVh6Vwllx2kp~u+{HAO+Ixz@9&(7)Tb2B zJ2!9wgm9M|TGc{;9r&QGa@gu20ngp3dQWn z%g8&g^X6=JHCt6bn)U6?CLA@)-1oC2ylSWF)5E#%nv~|hX1Yq{K78Z}sg>b~lc=q! znXG#Z00~=v`6_DbFO$keye3K$mz&zaX=#SCyG625ZwG?}9fLgb539w5RRo)0s;YV% zw&{2mkNh8QU;l!U=@qKy3UojXSCc5Twa zy70>(T#~M7gD1jxAj^5E=!3tNJaEPK6xCg_Z?bwKRNI>FSC00oAmi{4(^wg-gRZqr>iLAEP`RzQD0<*_t5pMVKyX`Jt9!uEN=iSCcm{9*p^g<8<3U zM+0nw>@`AA6lD4pV1sMWQd-F$i4!2$*ugsY-hw^D#^G^-aTnn;dGs8cf4?(f^K(+ z<-04v>c=)a2p0oUPc3SRMNCXhLiAzG?mm5;eCP^FpPUJv52=EZLM}x@h@&b`g{`fo zmKSNQ^fplfb>uG^8{MJ0RXujuVAHr@Joyn+bMJw_8QLdhMG@TN$~Utd_;0ZCu}utI z3iYcv_ysqnHnf&u(KeAGf^&0K#vJFCR2f4eM`V?<-HiPIqwd?f+s3i1|H`a-C!4qf zddsa+u2fR_a;d4VH`-Qg#j@lj$p~3oGz59o5RrmQP02)m|7b_V zzgq+s(TJGy(hwq5MO&t-3aK=Os7w~Hk-LR{S?pf(wpR=pI8zfLN-g;itPvk417r~Y za5DpMJ-aRbJzvh3$KkP>VXc*vnyr1XPtjiS)<1OcEPO~V0?-w?&j}Og{Y4 zI$WCr{g0S6BKT1#&GchE7UEGV6?MnS^OR!!4JF|K9n+)~45xB)ReRA8QlC)d#8!f( z(M&u{kljw_kb6O78snJ|DL~%+qUne2Ce>{>=gZ3)38xl|saLq&X}>vAU;FesHoPlw z#I`q%qVt{i7(;w56?4nL3dO%lB1}oEMAd_%50j5!e)NygWLcI{3Q2Sedr%mzR8q2x z8b$tQd{gJ}%SP>MlUNRR)(heAiNUQ^G!K^?Ud~9czz=1s%X)QEoWXyX*4M6eXW^0? zLapAO_0aG-3y+-l0wa&Hjq$WibV)dlmLWHiUla=&`TO@aX5#((U-~f>1?8Z+P#lL&RH=8aYCj8T5@A4gC1Y6;i2nw0q;7$Mdtoa?b(cTo;|29 zSTAPNIV8`k^@+~|+u3N`l2fUg?Gx>buh+}@^#*>T>+qXI0Zh&lMsBF^bM;wc(Br65 zv%oY!q;~zeMIqX?>(ARzh)Nk^@jV)NEk)pmt8xsbcQ!GY*sV(%W3L!ujbV*aGpo4c zi+v<9p7$tiGqqj2o}FD@FHVc^#rdM+ksbTo5kG97WO@dC_wXoTjI-p(O_C_>I#0?( z$t5;SXs4mHB}Q(!oSYbWi@ZId5G7kRDy>S0k2$Y0POkf#@hwvcA_;s3WFj)jSuX^c zpd7z9%GU4OtrCs*@>84cgMbO7%gd{a*}@xSeNMTs_EMg?R_#Cg&;>9pD-T~xs%ESO zA+*$|SdCcwhqrdH{J~;w+XgTO7fgvYjfXl#m1abmj1XggH~nKjy~FADiovM>(ICH! z$dVM}1&td(b#jh`6tJIf*JtzTx^CJ<2g{V53phlk?7zUsy}hKBUjZ+Cl|$hdA+{$I2*IGsyatGvq3Z$oAMTS)4M*bKhR_ekFq7yIRd z9bbR3Tx>kPhG1GztwftmD+VV*DB`>_(aSiS$N=eb*9e}DjF_v%nVXHk>qsWyqz4iwdXgM(>;pSo`osF zCM1$Wbk8YUtqG=<+^^7t;P97~f zpUr1iSJUDOe012n2OLi(=j>e8Q0KhMOUJnz?bjIjr-C!(NfCn4%BqA|xil$rOdo%n zd};MX8%@y%?;g_^h4@x*!KgJqXdvoDE#N#p+~33g^Mm$+p`aXYy@C%Qktrigc;=(D z{~%uTdj74roUV?S^HVSQ&Nh_Y^lIT4zyP)5FWxb z#L&{VNnKHeY4o#osfL%Wx3;MeK`#+OPsHABD!iCcT5WQN`Mh2%mWyJ3eKPY*`B}#) z9xvpXTU7qDNB$v@!ehvhx+DgHO}zB`SF!QOKPC-u`@V$zNBbRU{v7%aP*VzU!?r{) zJQJtgvwjD>z4YhUJ)Z%4y-*FCt2@OCI;3b8n0mxZ8RbVHRNAhumh<@%PGD%!EEA2o zeeC(GWm^f_#MF_F{0GIwqH0Wf8`X*UZoVvm?^=ZbE(^b427_DrC81h z$j)Zc+EUv^6Pz`JnR%n$NEF?Rh4QYFmVh05KE|Azy1lx;*~4}DxXe9D zSM~v=C%;>|3jUR%TL1f>lb5X#|Ndud#4n>pOiMzT)|SiI_9kj-(`D}%P zN;Y) zr18{;kiBAlTGYi={n&dQKy~-9$sAQ8`<#cG@}M`3GFCdzAA_SdjWE13_X|FVpsp3i zNH!r#e)Xpqfd5$>Bv&v zix-$A;z6~t#(f&hgp?J@ghlpu;oF_$96WZ_yg{nirL$%bj4Z*POR1e=?NxEted{>K zYMk72sis-ar~g;Ob*zdDq;mFzr`vt!Gt>5Xhvci)d&Duy_R1r-SgoliT!55J$i7Tf zDgCN&IHUdJon24*!x8|B*OTDQI5m|u8$>9B2O?`-#+InRnSO%jJ_w?-Vo;V(Vj+>+ z7>7hyYiv9Su4t6D9VD!qT{ik%C#z|F85ZnHJ%=2jv3(u8g~kKkHZIy{zr)Bs2!eRy zM36VZuN`bNlnF-=Pw(H`nXpZ774NhPaM?;qD-*7CDLB>Anc3a*gWzw*{~#Dh#-);+ zBueJG3wDu@1}9c{RSJjVYInYOyq=%tW3WO-j@4;#KD$RU9a1jLzKQ%nj_2Fre;;Gx`K&6z?Q2J*6MlA-5<+sCdS^Qw z=TEif2980e%7nQ~2AjcRQX$tsmWmf%(ReCe$E)j;X>oaS0&)5r+2Urip+=pv>Sdqx zA*x>9^GEL1CHD$q=(MoxgHASONchd$$;*}9B813-GsSc(lw?fFC4s-n96TKU z9(s`;{bPvsia{E@3L_Os222R!(T~z)r)%;yrS3+_Y`x4dMhtg2TlA3RJ)U!N5pBR6 zvA6!nZC9HBhn9kW7?x~PrUSuv-~VsWc$+^5y|gMJEtWQWhbE;VLK~Gu<*d7lJmgvJ zk|F!$YEsG4NIHaY7A|0v1{{P+-m~Cc*6a1`a<*7{<~o3Mb|_-2J=^q(+5qZV{|Sc< zpt)gg(-^rW;KwK7e|7N4;mR3A&z9<^9X&@?KPCQR2!WqutNJOyFr`6sMz-kL-%EeP zxW_h~1w(@bOhZZn-yD*wZie?W0*S&0!@Q_ha};uz{Tpl+?_U*b0b9NP)jsV*mBqYw zIJ7lW<#DzM+Ew*sa<$6n_6WIkLdbmVDV!tQo~{VpSVvapq_PUKVwW6n%;bh3?M!W8Va@ zrL$;6)vQ7XEIXqLm-TEBlCj528P_b(^z;YTlz*JhHl8E(wvxdNog?d*Vd5Bq^*-BF z%i5(^z zc2Ck~HK7!KfhD!&1a}&I$Ez7nMYvup>H_KIzRlL>ezP~*e0yIs>m2XUXm-B=cmL5N zFCIV( z&)bob&YBS|hRV1sb@x7?J}r)MkPZzf;AD9M3Hz8U#0@)ay*OPJ^ZI6bd*Kf^1WzGP znB1QEuKv06R@mc+AxACPgra;?wWp)Tn;AbK`ulPXS#1G7{U5%` zJ{LWWbLP+Py`4vo!J-*QGDO=&BQ77l;G|TEaw$j77}8PF7*bVgrgSA*#WGAJH9{jY z3W$1p>BQZVRFY7|Wcm=2y<}(tsUp~;Cu|VoRDgC4?`2$h@V)KU#gBS^F+BLrLnP;% zaDMCEDs|*N`rui!HeS}uQOg5sF|-suoGKDr|N3ci^ySfZf3<4J&7Xq}AzmsanX#mf znhKDp46UAqU&G&6$B-+<6o)jLCp%_$&8{U&IA2V(m?53udOf|Y7r2}2Stz>3iy2SO z{B2b)PL{J zFT*0C(P9_V;ISYnmTj@iz>x`Kv|DuE&*gSD)3H^8qDZo;WV$+vyJ!gXOa-F9xa`2B zc5ddvE&bFf^7k6fuQjp&pHX!vi=g2K8VRJUe4HP#RuRR}C9p_JpUE!s<@cXF0Xs~$NS-?6K5eFuVJ?jz+TvC|M?>~epC*0DWGxIr_>G6 zaZ-Hn^0l3kzqE`$o|3DQQXz39!qO`yLJ69c0ovV44qgy@$shz%BJ|dw-P&8r1+VC* z`4F5{U@5^SEc zQgCUArTze6Hl(kjqBLJl;BO|a4!51oz+N(>%z`}NU_@pw{f97R=Cf7dg0Rj9VZ`}# zxmbF-h&$*x>`s~K9P&_G-dEGXd-fO%*!au_INJj*6cNZO$!ov;&DK19YiTOQHBV(j z-lZ%Ei_xVZRI8kYbZ;v;^w+EvL#pE_*}+Su)P6*LP0$|VGk7*5UfeeJN+N-hPrG27Z8 zWSeqbWt27cHFjd0D%Q*S^5!-} zsK4VE!M>7b4)gtIk0H#b%9|SDqQw3bfs9n9jBV}EyW<4qE4V!ytsu&;sALcoe4;MMErtn24d2JBtM39q$S!KT7W!ESjya7qd-W;QuP_ZPrtDayFa8ZQ4hg zZm9liL@EB9#m8=?#zU$hWd^D=q9$vKk>ZSHn>9N#mRm+ZIFqVs>HQ3R)M#al5*e)2 z-@(3`PtJNlB{hP=R+O?hCpI4QC{1$c$n$djqxMzDbC{%kipeG!H$rc@ksBeYAQE$| z5dI6oltiH_Mk3UE2QgBJU5%31PinPf2rs43mC4Ay=WnK8TDZp|odrYqP>y(D3~%>M zRGXXmDGm1_4Bpi9vwBlpUa#xp`gVG-RMoze=T23)PKbeja}D^btQJOw`7+m>(oT7YL{T$ohLx0VZ~u7XUcE@h>L0>kk> zeuf#X^F{HkKAzR#q00Pdapz1scAFV3?mz6%V;o#6Z$?^ywQz8n@G0@9I6@}+^3&w? zn@1CUY2iMaKS#R8gtE#uQ3OyLS_xNOG0$wYx1oO5>=l=YmKrBJY+_t%$)Jrwh6F)I zWjW`o=@MS=KbzaD=>&FxdP>)u^?w%i<#cj`(-F7D@$JR(W_@w{pR3gp;YA%#INa3} zPj)=)bx+*)RsCZ+Kl%68Lw@dX2AS;p@jg2Cz0J0Fd*8U>+i!7b!xx0PhL5U+su@b6 z9nzD?7|3fU9JgSe@o*eG36)Y*R`E)el4;H>k*}NV?EgoU&~3MtVxDPgRP6~4C{Ek&5iN>2D<9hGB==Hag*6?1M-A%} z5JjBqpOaTszt#e1yo&W}CC(IMEZx!@5Q!}!m35HH-%GEyOn;-uSu!+CLF9yxQWLVh z>XqPH@oL6xmX8pO&1{o`zj(5liT2QQRJ8_9N;nTcv^^WnJOU!DHle@ZCHH-3yomkc zpI{NY`E$^Xa%7@cb`cxN>4g;e$cMa*#32~T+(Y(?q0vY}u{y7~+LNmUFJ;`8e6J|6 zIbUAZ+Zw;anM;PwLAGZ;)RgyQFYzBehWa$Cm^(3{R4I_`4%xEOGT;v%?F{&X)ftXv zz(SPhn~iD70SP#4MLCr;qjUE5vaj%)vtHLT8`Q+Enn~!rJu}|RNPt$p%EWQqp&oih zPi!CZvwLFi;bU(%E9MEJ-&45bP_gu}(GjY^T}B#dsf}jF5@%MZnN=yBRqV~*O)t-V zU()L=80@$C6bM_v6@LXE!%7azTQhl99By^zDbq+n0}~ z^VV`^&7ULLrZk9SZs|7^Lzc0OPzrx18K4x-lEMBeMLsaY_GYDrYZ)2!#`1W&+SJAI za&cNem4ZzFAVPb<`OCmtV^HtWBd;PErhF-4QsS2ftc=hUfB5B}$;Vcn?aM!{QGeVb z&t||Gwu3`RP(m6&a~2t5ZwE;ViQAJ*XUULI41+Moc=jB{OW>jZGzFr|dUa7;E$8)O zec^e|{ICi8Ad~%Q5^Ta-c?>R93+)P&;tZ*QQAyjX%~J1wTS=WtJhaSIuXruL~nbHM67dgK8s1a7X=R7gyWjeG8w zR3lDvu#^&f^C=G8wOB)gvpn#gDhtBb-9Zw@aBH+`t=Fxd@(DF}C1Tnas-pkI;~r(G z8l!HFL-ixks^eFaWs;n8%o?fsD<9gyO72aygVSqNsTE3$rJ3B<&q0&>8q-OTqU0LA znl;i6?n;tMX(n@k>b*Vmmwfs(66^&-Jqu1Jgq4Qs*z8Ofy_+zz{%j&gr^^L`X*|vd zcLx~?H_kz&n^osMqP+-b^)V!Ytnw9n8BSgzJRCf?Kb{(c@eDUH$g2cn(r|9`8pCfc zFM__an+yd#G7i zK}t#7IrZJA*St;iaz~`tzrALN;*{Sp>{0H3e!6TCYMgw=AqTvkuFj^j;$k(s0895~ zW$H8`p?)IL_TbW;Z@onq$X{~gHmE4^oH1%k!zTnsqeT)r;O*qaua7p^AOapnUw(}R zyQCC~7+Go72D@-#+~Qg>%L%DvvIAuvKkaJN#>4xX+)Esp2QlM8f4T~r<3%};5+4^H*uyk5;w#B(`6 zorcMn+!M&*W$p9sm~~u`thSFI5osup@1C`6iWUm=&+Ca8bA=pT#@iAT2)8hN| za<*PBLR?H(`o)WShP3y7t2^89*){xBz#6W;sy>`cN?e>#7Mt(vs2}^_ z1=$Q~$sC(^*9?jK2!pEZm9El^{%U%5cH4}4Ma;edC&6Vsaozc0t7%Q0v*`*)%dd)) zdbLV7@Ze^1_;35zvzd47ZKE&snY%?vw3IQy@x-`bJ^u@YH zC~$EFXMMZeEN_a3KdyYz7i+gUx=Hql_GQoO<@|aBKhL%I5|LJtxAe%fXyH$y5rWwu zYP^~*Oe!LH|MBhQs0AE;v}#*NQNSV2;!#!^(gF@ERYLv>akt9XW%73u@8_l>_}wLg zO(xMa7xbVeQ%v_>qztHyr526Epzu3d6xeS)^^4Ji3ndg(e5%HgkmXv>4Z z)2D5qszC%11GXR%`B*;x>4;@nRETl0ELL&>wx(MoGW@oU0fWq_PVMidcc!KXFXgQm z8mSR-!YWke-4lk~T+LzZGMLYv%DCB~>2TFaCXuNDBEPott5wMfH|Wf=S+BR1G`YL22xEK2uIcIt zWr#1Uj2KK59wAJ_>lqng+IKMF%ah~P>~y-#oA&KAZpz76Waq$li-HHdZN#R%cNlp- zteEts*^v&rLP~7-y$~PP9O)|m{&DiI6$Y_Y^WMdTLDEKFv$d4F+v?W_Nf5hqR}IO7 z5Qz{2_^bq4%Ijb+8E#~h3GgtA@!J9{Xm%AM8F%-eqr7Dw^X{GGb)TA#^N^7nHmAa4 zJmv6H)lDOXrIevRzn*;fqm96=GIaCjNCYl4Hj~?_T8M15z=n^*h`95Bkhg~<4CU79 zma}3o_+}FV{#A6OKH}=pc=V&R;7|$cL05W;l*OyX#t*}vKv~*3)u9P-g0i%~{^%{0 z3l9gv?+Axb+(4uVbAA16k3BU1wr}i#3)G!s(n57%rB?_@LS>GgQFj-EJHee=mAhmR zZ%HwkFpLZ_S3XWL+i(-OUfmW~P2&9YhH9VZQy8kZ{wVU_#(6m+d9+mUUo`lS9}kB! z;5Tn=bA0nQ#T+4vv`cLO4qx4wlKhqwbnPhBStef#!T~ zx^TRl@ppRf#*T`!=y?#`QOP$f7Mq%%sPnE|V| zpwqTh$Dz{#zW;=9*=k~$s;o#wXhpMVV!2z`e`MZXFqF=+d&E3T0%pL8kKbG)RKWug z7%4oX_VM+((}5@qZ|RYTypScjrbwF#Dz-}DAKw_`v%Z5FEOeX4j{bI~;UjfrypO{<;~=5p^|~%D;bgn$$H5iiG%3pV(4MMF z>_21-mMDd<2Wu#j${X-}{>(u*p+)ljFvH@@s2R$V!*eOMAjziG0^DB4j;^1t>i}}Bcr@Tw79&RU=U9WbGDH&csGdO}24wu)7?dH`r2o`?uuOlZb%ql6Wo@zYRZ+JF06W%nZE(nc~6aM>Ok2yhuPU@GqBbh zw?@gte3^@bU0=)QQ@_}gW4YWP#>B4lF{a>^XQRR znkeAbj^EtY4i`gC~{owTQi7L2?hU|_zaSLYtbrD zwHj+J`et6A&Ms%G;`HD1dNDhmUigKrJ?qiwNND>8p1Bt7J$mHUub79EB-pftA0Xtv zB4ti+2SyICe8ZX2Huj2E@HdHq(pktR-97ZvXZ2;)_JSeY6%*Kfge%(4bH_%Cj7$#v zuUE4Io>(usu;y&slkHii=ixm>cg~Vy$ilsX7DE{hOfVTbz%-Zp%8~uCBlE4YKSZ;3 z>Hs3#N@$9MM;V!({mt~ZfBS%s?vfz}9LkW-TkAmyxaV+1#r|hxRjORT{zt zBQ4NMGsFlJnrHH$vxy`vy&ghJXU%S!Ehd6axQ0lZg>}8|z#8M6778ZJ$E)j;X>oaS zQZG*D@P}eHb1gbYA=^H-J_ib^?CJH%whFel+M&nmrPQ7ATvL@CbwUzM>+9#qm)5jw zJjIu&X~7Qxe%g>863c5cLWIm?TJ8?^AL+5y3-LqJ3agifR9hoeJm>LxI1f9$XEg|hBiR9+?dO=t}zaJvXHQSDtGj7_L^=5i?K3&|6 z%01Dv`yhP(;}r~zNOMiQd+#vv(6mEt(F|`B4oMXcOuI)C&oBSjz++qJd7E?|g^W*F z(s>%b3P!L>WE61kZl@m+)jM|Cr8B zF5up>R(glji`w&l=1Q;k=rPolgcM%(S?Ll?O;uRDO!M&XZ1ev3F2%gz0g_NITdWki zO;%NkIJD~fnzy@`ehQ1evaY>gsH(&@)*UL-p?2)`9C6?yUeWj=9_#CMy(rG7bHC^` zc>g(!+`fq?a`h=geco$~+}nefbGy7$yi0%YZ@>EdLH z)##J!jpy*a-RG!e*{9sG`ow_+>wThHpw3f9Zq$^cRXJltNS;`#l9EI`*PAcFu2J*n zNV`_EO5N3VA1h$gaE2Y+9K~gK3uyq2p4zgtWXF7IHL2J{cuGfoJQ;ZMKehe#MC?yM zpy3>JdPOanK*L{uPR{FZ-=@>3^a)(lVNLzvBzAY! zv&-e?{I=eeao`Bz?9PaC$i`p3wrh4TZOx=;%?@H?VVK>OLw-5NE2%{Gz`);7KNns% z#-~DZ?M4UAvcWW6;(})EKcw^5{!+Y5A&QSpD2P<3y>_$iIK$QU?422|XwM!=uo@+m z$BMp!becj)pmn~Aes?=b<6GN@Gu$;JjC?|tM)*_EgB6>?h|#ge0Mq$=w%io!X|Q!a zSg0uiCQYK{yFdQjYWe$0H95~eG$cne579;hgLebxjCw9f5&oMm_6SB($LkxxfH+w& zCYfjzC$MA&|4}iTZyej-OA*4vYacJ}B+Ea^y>=k=YqU0%9@eglp z)Bo@`!StyrwZYQ8g~cHd3{}i??Yoxqy)EP@=i5sLMbG)9((v^XaiBOH^f*oUK7Rhs z_vvbNTg;2qa_uGOS*maLA@!Bwdtu@JYKOKWt+}grh|0R~X$Vn#Ma<|ZY(~-ine$TW zyBPT~LKdiG#f@=9hqENm-hTRFZC#sUf@$ug&-S7bGI`p_j;AHh^si=|Z zuGU#Im_5tp<3~CX_O`q%ih9K>`e`!gOL$CCpLQlO2kbw`$H2aW{3&!2$AR+#BmW9$ zqs(5InHQ7)w(@STUbG*8|HkCqI4L!uTDA0_8iE6cfxY`eLn1&9&jK2*sYhxU-#p){&IN z*I6~>js?eNhM`-aZ2J_m4=b)(&!-n_2u$l$aRsM;yWA{qiibaTc(b3oklh~rVG7yK z^T%M}LJ1e0ibRR``rdvyD*`zG{9l_{^z(mzNf3{ss6uLN<#X_|r6CluK=TxUb8lO{ zO{*TbxxHM7cAMTQ-19Ej{AxAbY;KD=SjP1xggVC?8Sk{ogYR9=r)R|l8n zN!v%;G2ujndFbV$ zE-tRI36+31>u%mL^9Uzs3bBKI{zE-=@|(toMD1sf!b^K{7(%0{b4gJ4EQu8O&F4vD z%l8dui$F2qrSi_L}bs;s0`x-~~s0#{ARNaf3ky}fkeVtJ;hOPw?ZmBQ zxf~I2RfPyRC252#w?kb3XFnb`!0)rgS#e%NR_W_bIGe~}SoTq+8SPj5d&Q0kLfpa)f<$B`_Y{o6Yx!yFL1(M!8T|hgCk1LPt`8$0j-#WWD*k2w6qlE4wWD8a!q7_GEL5JU)yMhVSG4g_*%6KNuFTP@mM zGh)(&m5N5m!aDc}IQ+xA)#+-rTtS?=yjT{u^=18Uec@%5?k=(!;Qe6@3|Q^=*k)tx z>W8*5__2AEJ=oO8AdMy3*sq`L!1Y&4U1=LU8L6WyOI^wE5@|oQ3s2rTcJ()r1B2wO z8L}~^k&cLq4hkt|V|e(7v9ZN%^XvEE3|PD=*7eEB^671?J*=m&F=zFW2d}15?tB0# zHA;EH=R75G{QcwP)gO=c_q!FhHh+#V-g2c-ScO@Pw^|rUL>|&CX9xRBthCE@?T$<; z(r~6w9Urj4GyZ8J(be?-iXZj-d^)>y?J&jidRva(ktJJS+}yn7#?ZNtntC=R(dR%I zhad1?QU+Id(GG)rS#!$UYNuhPuBaBA^jD3Tw)gNcm^P)<%?b$^nZjy4D)!J{ zlE!9^{;-4Aqd!uDR#9?~Cf;cH<`M9sETcl1znfmV*nXsdvt+mCDj*BMltc_u2oKH6 zz}<|iBl&GrFD~FGj~r}^v*L7C|2wpo`DbWi{E98ZsO|ps-mSwQq-$TbMYuZrOR8?H-+c#Wi&8}l+ zkVsEBY)oy}OTzOWcOw#vb2Xo?i&KnyFML*r9O9kcai!;+aRsIBl4Ed>tdi1e^F!hU zzaWab@xFVE6RW>!dm&Ej8^zFxk{W@Sxt6qr($WaQlztjwb$?^K@V0f^|MsF?n=>fa z3JG2a?_Qr4$MfaM1-hUv*c~rsWCJXx_08mDMCkgf50kI0qP;!!{WYp+4?(;#EmT11($FS!%@@1+J4u7% zY&S?}%~17+H&YAJRyf+NS;;~g2&2nQ84$Hh_dCi|7jjOmFPv==>FrCzfj{=LWAB|% ztxPPo8E9o%)YGd&7x)gMK*>P^Wg_%Vxt6n@}>QUQO>ryA;SrnigP(?@aE3+0nU zHWPqU?lTG2q?~XsqwKc?!p*QW7C#v30$a-+@b)7g4n-ymDcg+H^M&zw_QH}>Hlz@+VGkHMt5tUUcs zLQB#VTuj-)I)uBjJ8+6JI6R}MhNoE08oef`Dj&y6XEXhM+5XOrvu4-21Fe|FKH#No~co5$!>Nm zCqhjGDK+gV0_?#Wj+Zpb06p{_*qkpfYwQkvUoNHxm;CkaWa#H07hQPwHAenjV8o*n zCpd_rW!bR%kpZRe7SjJJ3DU1iCWWN5RTI)kiK3~=$=cH0&R~tfE^@8_Xm`ON){;yrSxRYPE#XL~ ztE<&)-61Q-Qy)oB`OY%GFY85dKEoRG@p5xsdjRHkC%IB=`@s6D;8sX(zegPUXs>+e zR+DheOChZws^nqWInBC;qM0SOUU}0YevGIEFTqb}<#3bkJPGIRAq~H=eGtxGGSn@G z4`)@CoU*NmDKT8ou1FSwW-% z-WdK>`I%}atKwBDz(EnKf2(o2REo-hN$qS@?hg7x(4OkDygCfmK=E^Nc^TPfgF|~=MEARq~IoA{5kp1 ziblS$#O6OlMI%|sbknhITejfL7-b&oeHLtDXGc5Ki3Bmyk;HKq4H+Y8)WZc+iHfof z{%>8+7MtRGeS$yqm@E!CctiL8ICeJhV@Mij)8cz^dc8QVy}WV9Q_2;^+BetvB!$f&w~<`HwCOpNMQ*|vsZ~QlE0j~)L%(;DFzk>7foA*Eu~9=y(p1U z)uXeU3>2pBnxT$!#WB((hU{B##@iX?7a=vGxSX!Qwci%2>FIj2Tucl0RK@6&7{b1p z=PpQl&mQ|{K@+!_MhRqx=+vf`i%Fa@By#Tx%aVFqQ85?PKj2cIJU8 z?^%bg&q=La&SHbHYl;4~O09agI1;Bm7oC&RrBSkxn|}1&@Ik~@ah{%%w}pOE)t;7; zy+8k9X0l!{l;WKC{*}r<7`%{WR()y z26qrs3L-K=r~Ex+k>;?L3=yyjJ%P-WF})q!0mnVAIfv~UkQ0-Y`qFH&4hH=EgJ1PvnlN)Ff{@?K*M?o}D$!A*!P z;hhoGr2VObu<^h6bMp4(FCn~1^XCZ8iyP+Dku?0|jLzI5_V$v4cFtKdR8oQ~uHf6I z#r}~qUe5T3isJ(Z&p3qW9Q?Bf&i>O6oe>k`O%q8lxI1B~0n(K3{|=U_nm>oE8oq3d zFsd!ZA1NS`h96x{tM>MiX4G3_XM4pUlO&mlsx*RRQKrPp8BYxv>~@YEcU?H=v*}TK zXFSw;_t&HBzQCakm^Nf|&X_PMHG|jd8gPuo`L$DPw({O>6zy6Qq|4G)7glSkSWYqk zZ!a0B0PGcmG#_FjAg5O%&4BC6Q;6n56wYuh<1S^LO)qDQS3OP59*&DrYGbmv)DimkLap zxjuMj^^(pmGDs{qONL}+Ilq&vslqBIyyE|Z=RI!QJUL&@)|(}&CKU7KYF4{8>X;u# zHke)XWZRQUu4cu)@%_u5Dl~frgn}z7J zWJ0paQ4HGCZFY8()S2C0HFnnw)s2Zp5^t)a;&{=LNF=MpYx-#_Sr^6S^sHVKmzdw4 zUwaAeu!G1`u5Rz+i7HvWWi0O<4((`-@j66E<495MQNfRz`cSB_*}wg5@@qTi@YZs* zzeag3A>CKZ83D!t`wFodIjOTcyXi+V_c>g5$*#k#Ce6Rfs;c&{V&VOaN67D{p5yOi zQ5-K9r}b*OxbXD+p0j9WpY!t3picP zZo$DXW*5tOeLGFy#2nP5YN$W@KLyUM4E+@Bt7PUseB@sO?Adx>0zy@(SV@>aw-oJH z59Y~&)xoXXXfFtrlxC23Iui=}ehQqe^vhrOxO#iN&`<&~C{7~;-}_U5w=&94K`5+$ zHW9=A`Gxidp4;sGhaWnSXBGE#Nh!E6NHi$N@t|MQFxFot?=5+zFIM9!CeMTw4&vgy z6xIceWayFQ7 z{NG3WwDk#_KZooSJs7XFU0^dB`S>%#MVzhVU=wH;3|7`i!GE~f+YuK%zminskYMT85Be#DpE3YvPzd%`) z+LXfo0EDdnuMd;PC3gt}nm2dk0b{a+kO8ud}zyP zq>#)ClVGi{-`MOwuiyOA&;BC}9u6d^HZdjy(^L^tyqir2H^`1*7g>C>D{T2O!<8n&KL3ZM5#peq9QpbWI@9~TUzr4T;}R!Yshw6s%b zA|ov{1tb^xxhhj?NGZXseSQP;&TZ+Yv*^feP!QsIyQ<-1Hl$Q3wV@YZYz)>5t8){_ zU};#LH|$duJ5FVE)6B`??A$HHU0tH5vz80BW0^v&Hb|b61Ww?*M`?)ZfarQPpQ3iz zk9vO5nI25gLrEvru+Mft@|mQC;;ek=E-E2Z2(Lw>%SQXd;6F*J<=4-XFKrXmZqj^- zHBmWcXF@uPC>6t2WR+D()Za|6N%ob0oCUjBNIj_piYXDz_s=Su%NY+Ca#1f%Zj0~r zqCh@$PdxBBfspngKYQNjKmE`aOetqxj|D!ysCH}Ez1V%9D+T-g>qF3f|B4R(VaK9! zKoAD9C&uwFSzKvn7a7PnyhS4e`3zzLVp4o6p8W_A4|mb)4VdS&I9}C@)8Vdh;OPAQ z5oL9a{>q0oELBxr)z#oHN0<03O6EL&KpgvF87{2@&uF-;VYhCU$257RF_2hbT%R5{_TrB{`Z@egKi^5t{~%NE_%?Yiew^1 z?(QOuFRrJZ;;tH;x>cz0$k}%JGCcL4It~54Tu-mgi#nKv<|)uRhnenUw-sppB}Zk4^dMxVT4VeY#`B7GOy?L_makGu@yY% zEE#Hc3Idq|5>@6DBEnnxsf~HP0b8z7%N7Xf)8gA|iuC^>cR3u3zjKeKJ^9@n<(^o4?*$HR z-9-AG9C^pvAmQhmlFjZi=PFUeUQlb~9l6gX1-n)`e5AjJ{vvSi;G4BzsDIPwww6-( zfpRDKm51uhY#EVR*PD}bKPk=SBb~#^s&E9}KZ^;l^h*lG>OGbUP(9X0_%{7h3{N~fu^0t6; ztd}95_`IA??O{Jr{+Ph|B&n@AG^>Qm;j7Yzl&luR&M=5%`znCVfLje>LJ_av#FB5fupu6<&C zE;SK~>n%Bk$_-bBb$zNpo)N^-_ya5<8~gj+X(#3_M*PD5LI=h^$3NX%ke!E;OJ(h)}Bgo+n z?F$$hyr#Znlv%}j^vErqaxDjpgoaH1!`sQ{mM{Fn+t%biNBP2437MfJ@IRJEB|r>9g?1>6J>xfqWAh|^Dzq{aCMJTHoLlgutLYM6@IRZ|tLX&xf&2v58^pt2 z!hgP6&gaX5u>V}GmY6VgFoJMXhy4=VpTh2Z4ENZk^Vxmj_VK$g=wNbqdHZ@g--m7d zN<-f?ilT6yKZe+vapm$GqTrl?Uq)4`G&bYkKTf{19i65Z`Y0(7^Zk&kY9)vjS}U9k z=Yp~-Uq{E=NV~l;oFy!7ZyXg1%7%Fn~vjE$r!6dMIXUW zcZ}bRX{RKWjn~lMSB?^uvt~EKmy?Pie;(sqTEokFwg~YW;(d&#)ckE#FD~G>U4T1dHr$`j;J!K3IR%@v}oG|zhSt8IqWm^~2wk1b0ugpLkTxv7ox9LlF@*W&3@eg?Y?~HuObyO@yc(8|72#{R?c#WT z{e*ZV`^<9nTKz@GU|o!Ppgt5zhFG!z+%T0Cz<&B_1N%OG{Urg|2hpnLU|}t_k%j;O z{zprbv3TWgrr*W&;TN10g9)s`?}sLI`+Uu5y#llDVd-XvL;?o8F}L8T3b>Tp>x*-r zyC`*=nKIGGa~>ME4tURa9%?^*^DPVs2cJlS@ zquIT*T0hO7gT9oO+GvKogvaU-Evc#$66j|0rQTNd7O%6{3)OqMLdGo3dV=MIVK}^% zahl}ag!=UK2R3o$*Znc`(@eHGr=25Y9x~77KYZj7vzF46gXXLx5@!uWsZ%hCkP}<_ zb#_i1*RNwGVt;u{1*)4ikKu;oaIBp@_|`2sr(9IcCnimq(q1qK<|h*(O0KtnrSPan z833nx+DmNDPUppZc{TmFsOQtO?PAfpb87#FjpAEKCWk%oH-Ok>Eao&u-EKPL)EliZ%3t4-iR%-#hA(z3ge&{%(3JP(4LvcfpX#1!IW+pb3!LYUDS)saxtCHLk!~239fRkX}530-ry?#9Y+40@K~oPBM_RG zMx-&!e0(=~)k3O2T0=^&qL6A07RETSLIilAV9H2Aa|i=?Tj*z*Nf-mPmJI1{u!a_) zGIIM6;5hqEspfvih739LYBqK4Jex{Kdyaj{cCt!`v*gHaQ7~=1!CcHTS&1_|M5c+i zAAOko(bmCix|%<>)WMV@1gt_?*bstqHbc$@Xbr2ssJ=AQW-mXZ8NRf2ib0^wXsQ`HONPvlm#q zTe1e45s}T@-3{~`drukMS}ugzswxB&P)_#7j^Is!H3_FQyoH4s4Ieq< zGXm_+vE%Qe7mk?#uXYy=O)Mc`NWgLHNS@qDQ*4y(UfD9vbC%~Yu< zp*F1?_M0fJ6v-)I;B98_!j-dN2t^_UaIJ>SWLH==5TaL z6PN#zAS7g;dHyn054gm6^vE5rsE8XzLuyF4Zn8v?Ho*Axv)wnc1^A+UBP=kG%23%d zFKdkgd>qM`vst>om%R~V&Vms-bz(|R#Qyr3cr!nZPkw-LUKKT5&8k!M+NngntBRO? z4bNYr_MSclf36yArrnD|EI9_hrc8v7fRS6XPPUQ9XPp#0Lunh4txBnd%!nQH_R)(R z=@;3wR}4xKi90+%l~IZa?`K>Y^zrKYWLjLFoPasc;Sa@ZH#o?!ggS-E!@hytN@2Ma zhV0iExtFJgx#_jWR*Xa@N$|G`$u;7_!<6u^q9WNEHBtm?&7V{_hNX-aIrwY+E%fW9 z^c2jT1w%aW45^mNN^XITc5q>E@S}9%K^cboF7u+e|99(<&9|G);;ijs9oWTkUnR=s z?yNrscg%#Z%?r0Fke!miKMB_O`^U+O@yCck)rw}yHPA-Zc1$f)}AWT+z7s)=fbW`gQ=5&@E zgLP?Rh+n)ih*QL*EfJ9M;g4TJfQ;tP5$jTvb8XER8+b9!Bp4abO)cwhXa{CVCX95+ zWt~NX0(@dpL6~G%8nx{4cl=!zo7L^v*-Z@zVT@uH@9P;%^kK(48|g{CIR_(MOpBA{ zysIC!(^=#wPTM!rvFcq}Ww*U?TrSXlk3-Kxa-u!rJB4C+6e+TkiRE9uo;2)}_f!KG zHl+D;FzkiEOiCjx6<)1CJhqvmoJ4Ar*aV-Lx(vB#0YHx%pX>SnsK z{%u!#J;dFE_cNY}$RF_dS$$coruFIRZO8kjZZd3B@tE5U-Pl#Z%ZhunAsP}uLg61>YCm$16YUL^0p$XIP{u=3Bk7f9Rn9R-e>Z#go!u2f z#cHM|C{@hazJf4tHHUH5+omBltLwSvtDliauRYuRJ*FNWJ?GJ5$hjGzo_en!$p46> zaXb+)a^zU946jE5&4*ZajRXWW_ ze||mr`r^^jKU?*%=FcHZhx|gr2{HJeM;|SaMMz7TlSRniO)ouPAB&K)U@$$_SOwrV zs&gkVjW_dC=gQxg)8f3CF3#rNzSTZneNf{3cp1;^)4fL@I*Hbuau{R^l(6QvOo=}l z6)%V#wGC!Fi$01rm|3ZD{?WE`0{N*hI4AieC9%%V_9oo*mJGGQD&E{S6`i73eOesP zmnRn(@&N3-?ggXZ_mllD@i2@RZI?`>*^!vttQ;y zB&Vt5zMKW3V*fKX$*AvBjOB~^YU5h-jsye(2{VQV*!Ce0HRc?Ao!;}uV9UxU{-KpA zQK6fPl2V`FD`d(a-#UbQ)`;Y`!6_~{(e~gJEj2exS9u8c{7uC571K@FSu+$=3(TTQ zZA-|&sZLi{tJ%5(7*hvj01BZ;nu%l_dn}f-b#XEWceV5zQ;*w8iI-FA*!HP)Ofo){ zY`;e|LUvXjgRx;l$5j<34O)q#o>E$o`X8rA{ZB%XnpcQ{!Q6}3^T=R(Bqss3x0MVG z0rrX^VTnp%7lPVcTf0sv;>C87l#KKA zkyoub_4HMd)LrU^Ba)?nxnKP;Ir@KXCF>8%?EhaZEmn|ILc&K{9}8(F%QYQ_^AqF|@2S&n1!QZJ{5A)i*b2t=ILoI17$@5-JA5 z>Yz4wKt_CQX853K8twh$CgE`oazMPBM8e}Qe()|1^;kKu2%JsJSsUkg`cb{wx zwRcuQII5ur2{t#p61J{5K@l}AU75seJsf{u9b+UY&?u`)@>G0=vt$UK!T6+Mp_M~B zI5dHf<4HO=!NL&E>&#D!y11$z)5={tHA5g5?eRTzr^b8Mp^cJA;R!4#eFqUh40YmU z;mfwIYC{}fM%$|JGX@ioQa;kTD^oHQWrF|7LG|qIp<{uX!nWaLDxJuYV=ov2B@=@2 zkFq&(`o`#+qaV+-&*03C*>PtVMED&+#_`y8uI-uFo%)H=cxO+Fl)N-Ay0CIqIRso#eON zHjLjs`_TT9GUFRkF{Q?QY#3GJy0iij5bE_z(*9Io`P8xNWk3D8cb=13{mE8Pbq67#9#T) z24xs^nJuWGC5mbgSxSGRJpv#2_-4}Z#oYHCEu(7w9C3+^LIP%5kuPZ=C|8W=Dj!V9 z-%Nih*rz9CFBlrL5eNk<6=hjuK;d%6jqh7;@CRJ1FK3(c?P2TFYJb`XKh#C$z!G@R zA9)3qQXd+qO9%uAY5+-pJ|~iNTEd@p(is*0L_%XoIGI%k!hRyeY0~f>yR@o!o^rP{!!LqQ;q(5j?=Qm-Ox_V3m55C+LUb7KI!zXN$7Q= zn0w~|V@OxEkzS{gi;}4levQm`%~6I`n=svCSdHrt!Ow>ZLY(!!YtfNq5Ve*?Xk#W|SpX|{1rPU&hhsL^u2P_?A0o zWv%y!x?E@VF}Pd^J+<4>LH@C-`6sm{i!4tqgM`EK6l0J;ApyfVvzj_al}Zz?a>DSv zz4XtL_jhIOB|}51lp}?eBeuH}JzH}z<4<%Sc-wG0-ElL!^@T<%5DEf0aivGMMik1@NM5?WcRQQj^h>V3RcPsmg16k{J z3s-s~s);Zqr0Dz7w!xJg9_;jh@U0i8tLcy8d+}|0z1~dcuGKyp#fyEsLoIesiWl$E zV{pYvDUaqw!hZ|@QLwF)w$KiOUN}o%31O6_=%bJb&18XA_&exjaO$;Jcgc>)QZlL7 z1kBlp0g^s=^y5lzui#yai}~#G`eJ)uH-jBIXErqIO@Jc$>mS@ba_VA!H7gl10D>z> zV@KS9kr?wjr5U4E#EU!@$WxdRap7$xY4CKbz1a(f8nCpQP*oaU?N5w|_cCs{#r6DK zaXDQbFMSrJ=VVB<&pbyvXBb1G_wZ;WGdNJG71^%z%UTS20 zxQ~K;H_!i3@SZ+~Xqpjs$Q8m&h#L*!h`L@rk^;YfA54LpKSvt8Ttd3rNb}y;n@LHv zsd9*8c6QKTZ0vr;Te3RPYE(hFUkM$s8ps z|K<0uSUD?(KpLD)1h$kc#1y>I*=%vv(d-fZ%G1v`4D@~a4Q%qZIA4DI*3r(q-$AbC zj(tk$4z+!WD2T#YcH|BfB1@M-LW8rYnsO*j!ce^WVB?YPx>Xd9j2f~GfAh)`#p9*q z5aj0IPV%>qrslCdjdj)x$zIY1lBy_A#!$e?kJ3?YHOz2YIvh2TG9X|d>d+c;FLJ_P zeGCbvFw&jeGX!ZJ;2-$^=P8o!|Gcn6+kal9gtnq&TF}bo3av_28AX_bo7mMHJDcbg z#_IKd?vlZ>5}gRJ045XJl-qHm8j8WJyuj1_{{&n-*79lU;yvgE@fj4?`ROTdOgE>>yvG~{QUjrAI9PmR`HFgS2iO&CVH zWFYq$Udp)Jtw;j1x-Bl2tADSOzEO7JZ2stPfoGKd&3~mWrtj>uA?rf%$X)+@;

>L^(NU#Skr;fRIU* z+IFHljJ-BQg>X0H!4EE`vw87jxjcnGBp@OB=2~~wYi`dsM-g_=T&wr+kynnSsoZ2$ zHWpS2WEV?wzn{KNKDO@n)7RFrKgQfI!znt_&>B8wtE!ZeRvNbL zY6$!iN-0d&{a#&#{4U|vlN=Aj0c48|_PMDG|et&lv8hZ!6X$mH_ zstg$*7-uaQii?GsU^7)$1E^v6&oFayd%cqRq%z7D#>y1;uJ@|K+$X`r-n_Me1vWWD99Y1RoWa8I7!E&P z4X!2+HG{u}j)5tnjFyIIo=DB$tQacyR1C!&C9$ll1AB*~K1>}a1gSf{)0?=OZZ#rah5l+u2rfah4l-$p!U0J)>&mOG-iv)(n%%sqg=G6b}DRa9slFaW#=PU`NPO zOF@au$Y#{pO>aim$06vh7)5j|Lc!*P+Tpil?Q1eUC+gL{fE)$a zVW?N{=_5CP`0cw`J!MJ>|4$PBTRtc@j!yWe45Xr9OjpRt$yaoK7ey;ZwE0{y1LFPhrvL)5T)y0h3ZUohKe| zPkpFG4|vaLJnlUG&?c>nXVR47kG8riho-B`4Q<(Q)DdTrT5J!fFGmz38BMygnG6DR z?wVbr#>pt0Y1f49BQe(yESa&J^n7+*{HX5-*7gyZ+p*B>oOTZPJVa&Ad-lOiSyB)D zfIrZZ3R3!Ivj~6Tmrs)qtt8eLYozo;OcIM#C6h{5w$7X>x!{sin&mTOXDeAqTiO-7 zbZ8aq3n8ZPr#&dZ8-9MclyRHzMZGy+-7X67&a1^{IoL7#tcJUh_&Z0Q-z#rpHS`}n z@)DV0%oCGDtesH^2ZsNmKNb*i*>B$3xJ0}46vrj%k|{0iDj8Ch5-No&z`QTvzrURv z!>!(`LA4zL|LSLm=y%(AL!+#hg^J|gYdECh$8>W(T^&yo%H+E_@&vV=$K!uyKkh&K z;C{UF`pOaq?aKz9kknQFJb4=~nZ1pb%!n#gV^3`~E>UeBa@{;AMsEvg2;;3H9`=e| zYi1M5CWIk>MB;QTp8DZO1s+r7dVW@Kip%SDeO%v8Z?-t)9M)$aS8~fabq3a3{Ltp5 z4KZHED@w>c;r|bQQYp+UN3SOhHu%1T^}02%=Fbu3SfLFQvel=(d!@m3Ahpt!;@Uhv?_TrE5yQ5|!W_oQCUm+N9yES9U;^vq)^%rAOlpK-d~ zri$Kps~_5FN>>?!)22yjc$q}m^6Bg3b4%G`55awoQMOPG={Pf*S!}?xWL!{XNDkp; zZwpC;En5Rpd%>W_x<(=pZ38d@q@Y+ck|WT(cw~KmYgwYA<8r>d=>(!7?$1d5C&d-o zhty|M1Nc9^Wk>D@y#X2oCUW@4R3+)~0!He%uRhomNp?RbPLU)_r7ObievB+R`~dPm z4Zml`RmS2@XFEw;``hIl-8DnWAl!dL{8;T#%?;DE{7fFQzFN-b%c4mS_A2r2M&;t% z!}FGS{YQ`d6JR7Y!QmZMQtFS$-KqNFe2x*+UToG7ayD>b83 zvn)j1-X1d4fSe_}Q834`EXvBto-z*(?%;v{)TVt^U(bsl#l5avh`KOG$ZH?yz>qf{ z>3WNf-87l-3Di)xLX}Lz?=Vp(?%i)TUgF(vzx3lJC@HmpE$Md79Q~fG7^6-+yr+Nm zcauiWz1=@MYX-5&YJ%jbw)WIca&dS$qcr2t6cPL?R%g>iMR_<(bGnN zM^eACfyXAcQh)svY^64Tj!nR8>JT4lR!XUTdbFJrReuwm7?>b&F?>D-pbechLsRh7 zG+Lh~HVM$-cAT+DKCA&9(=@b#xA>u5q@fk_2VyayqNvp1 z_e3KjbYCW~zCPMm!z}UOAiu_nK^P-(QYmUV$f`7iQ7Q9foBm$XaJ^fTO=rmv$`3xG z0vVq9-XnB)HRBL2%>mh&Dy1`o+}<L@;o6#t@d#Iyk_gHyT0#TqWW_lrjsfRmMDsV6A)9p93|TYRkkOP( z1z5bpG@^JRHOs1+b3rWwa>9*wYk_ry@!m!I;AGU>$C7XPz?l` z9i_z>U*XZ@FDw7FNJIaM@}wd4wPe)lwGc{6VZhNb^Ay(E*_dygoEmPVq9(bl>n<50 zEEEibb;&{$`|B{#1nK6SqcKjOR%X7un*LkV^XVD5-mr<@Z8Jyf#XilQP4w|~qCAGq zLk=DL3MJh(r~p5}A&J7N>V)KSm&%YX8Tv>qTb!;gwJ=0gGzY<&w}py_gnf#Yw%IdV#IKlRPbv_Q(eIINdji z_C1{S4{c+Hao5HqcIim-qoP%!#>~-cyPs)SapLpeq^y*3NbXU@mrGu`6DRpd?){DR z0}y&_&s{Nu!leXdGCAv#E=9sqypEBhKyn`J0AAB5s&V@z@ejWDVe7o2MH)QB{L`m;o0))>N4oFzfO)Uu)j52a})#n3snlK zDrpVZpjZ0~wizv4$dKcCJn|8uok;)rDzGohb4yMEZ`9x}_2 zQlAx9%jRY_Q*Zu!;0fe1c>6Xw2EQ%U9{#@32_EMS#t?^7$vl2zY=Te-il-eK83O%Qv%uIZ}@+;&BAxFNM}hF3A( z&e20#ceOm8t~SN@;skPO-?E3-$a+L;GUJdcZAnH%>#UI}| z7WpQ@B5`<@3;6Q4z8G?2#*HvW<?+tU24D z#RrFYe7izW|Lo)(egoheJsx3emvM`{Un@P3eLT%RyKE^Y+!u*QsP@tacZ5oLWc`N2 zuZ%R27o~osIMNaN-rN?J{mDBpBVXFEw8F58`=yJnDAkWVTM zzy}cn2S`HkddBT7k$kWKcUiA|XF0s@vpX;0<8eQ8-^Y9ODDq8aynK@)2iX6o?%lfE zxRJHtzw$0$f8D|Pz&p$KI8MeMZ(E+7*{vj$t;RX(E zwWXH6jw@2*(5D8!D~~Y?!JoR3IuHCQIa0@JO9>diZXVX!T64jeEeQS;h*AOx(OoiT ztvPQ2FvV8DPw{adyqR$u>~GC{x|&tj%lTb%xxLLUHwEOLdwH`xGzJtreeA)p3G!8< z<$#kl&*Rhj{mtaKL;L>SNmm^w3Gz^BOxtMr2=!!ZDX3uJq8C$lPmsNNq`TE(9a}7K)$|Bal$AB&-NW{&$SErS`o(nwe*Kc+2nbmV&`Iuu?#9-J^g{Pt6KB2z z1t8#@1!Mer3~_X~n5xGkAEny6*|U2e{!zi3)k$-EezC#a@14%}PBK58oi}nHE`Dei zT!*L@^qwn9!E2)PL22H_5m?h{Gg>pn8F6$EhXR?VR(hjH`v%#*FoXE3L%C~ry}k-U zY(*waAl1R1;BGnwc=7!GSog|zf=ah)D){%#L)@o5(c7{us&}^ATGai}+rmeW+>lac zSx8)qG|RH4964k%jOo$q$;aOx75c~-acX~#M%55PGa-!aCL=7Zh2TotBF3~Q#NHE4 z{)(}HS_ou3w1y2Js+B5Fu=41BSUd^Hj8v? zm(fI2Z_cq^XY^&cYeuIN=>(@B2+N_}!h;{%NYZjWy}qa# z?EUR^L2k#dl`%K?cvxG6tr^@}!OCOMF(bqIUjZIL&1B6(4>!^5@%DJ~vO|h{>$F;NPFG^3%xRpi;u4!h_>MR#UmC^{3t6jQ~-I!qUN)D%e zF_^f^Qd?6K&H<)p z_Z^r=5A7xi^T=v=v}O(~rRKHapiYVx?Ca=>GpxWFjL!b5QSciAA#iOq%S$~uuTe~y z@tVfl*x@mO%$KK^7jS9$iK#&L62{j(|B~sc{#MgaJMIQX9u^BhMQ?C{N?udWYDzK_ z&$~?a!^e;iB)ok53K&uo!YnNb_SzRG{0e|JP{w52g_4ze_E(Ixc2V1w`{-8Pnz6}# zxSUZ2#M!Vt)7ANOR;{MrWpV()58T_>_Ir@K$z+q4_vn#-2@I8ff=nUkKaL34 z2**(3EAa8x=vUxlvMGesL>uYO6KgPIRzUzwicr9ZLJTLy27_gP&6q3CIX3qx+nZua z&bZMB$V5Y*hKvJ@{p?OY>`~LThYo7o6 zCc``nUMq;DUFI+Fd^Oj?$fp?g^+ZaWXp)V<^SE9tnI%cf%o@RnT~Du?1xj%{i%$H? zvCdE2SBRVW^#2+-@m2M0c6qa0_0hB9a+XPZb;sJ%%FMan{(3Bkh;t;517 zKNQCK9fW;SnC=P3AflPE10+?rx*E%CtcDtDAKRg{MoJ;YeBQ1ykTt$MgQLMgstKI!0IkYd zFB)emB#mNjs(BOi(Iw_#s;2r1=afRL!aF)_9QxxFHnvdx=!dMDIZAZ4ntt~+cH2`Z zWl!BJ>8bdxh*gOVr-N5_3x~F@6AVVJ0n09JOkrON_@o&IHqgqQbwnXclM7>a>}kO=qhhzf{Io_Rgz}uN*Epa$i|- z9u{V4{R2@#hV9DHbkgg|%YVIy%?`9bC#9FieuRdaVm2WPpNHz{fMtP`r&;J!TkkZaau|_n5b>$P5C{g{zNT zbG4An*IbSPx~!F~dxHjvM6g3o?Iwbg^wgla#t=hY%>{*EOe?KRFo=aR6hOUlSByeI z8l-tKJUL$w5})9~|I~{6_w?)6)%32qSbqI_6?(uM6n95{6ZeRVD{Z*?$dy)tjq{aO z^V%Y0g~eXK7rFDdzkPfWYldupPIWSCCXGX6WKAuIG^QlMNl%&*7+2n!iLpJYYoTNj zh%3CJpHjUa=Kb~}Qz*@f;$6?SQEm|otY8C&4s^lm45o#cur;>(GF!7Om;2+duKu@8 zPeb}IXe~4Znl361_7+MeOT@XM1pCh2`wRAUp0@afpgSzY#OaOd;&G2V(tV)ZJzYMG z;ch>fo1=;Dp>1i0)7lj*I);e@PDL<+D>Qt0+iv=tVZ4w3cBkQ8)`H|Tyx_Hz7D7sH z9luy>cy-E@R|63S$%cjruAK#AQ@7MkFyd7rXATcf{BXkqu{7@-p3qe1%d_vjj^KyUxK8w)=XL~|_IcN7Sd6?JY_FK@}jpeuN^)@9G#Z>$~fXxxTweY(84fv9t}1daV? zQ`outF#C2U(Y=PDILlthT?Nz-HDB!WP!3DH8nvU_VrVWKQXAeO_MOZV>)}f)5g#W*h)AijC&Q;(#pENg#>A4@0c?t`n?cy1`2e_-v?Y5I}e}jh{ zS{a#?ekhAj3X;^CAmm_H((35-~ z{(TbOicz9I)eb`19+A-Q2`hP^I5t;DAE)Rprq>tK)!7(QR_;X{DrFVy;oy2MRKUTB zqe_VMi_KgtlRE7EAFkzn|3{8{4K_;|k5RzN+6q&c46rB8FyTlJx=goZZ0JW)3?I1V zd!ozW?Tn}Ye>$H}7uE9gVi`0n7DI~3o8Re9cUvXi6D=lq^r3Z^ThsTMafXKC(0R@@ z?5huxzuv!ybwjm3$Mja=JUdS9IAc2stTbtPJxjDPhC+l2E4jid7WI%O2B`krCHo$- zZrNYp1rQ>W4g`;WM4715<_2sm98z_ed}ZBe`pwvq6JgT)W6Wx^m^ zvpaK6YOqw));bT8{M~DJHqOmGrDx+vO_UNuc9U@s-ziDq$6}_@mm?3*Wpg0vtk}1T z7QR==zGj%&3>b0Ntl&|b5hL(Y#$y-}RvrHpO;)u(Cvag#ZoMyA?dSIy!Q-udeEqFJ0*XS3#?r!(2Z&UAO!&u*^6rytte)|7{ndFCF+S0Y|S zMojzuk4bBt`?;w0=fp6(2J=W=pkwg24LHBds{-vlnimMMH@Tj-V63}>>IrDM$F8?A zqQ!$BcSiZ-Zna#1r8>QU7vN;t7TumO$o0;!bdVb^erUB*R0N~!rtKg=YGtZIwM!5U zd_11C>h`1g-(d-9e@+ zW-+vjV7dp%0N&7uGEQqSoC{RP+tXQ4+bO~(unm25chK9K&mwFB!3GYk$`I>uUzG*& zVcZXei7;iAXhMGHk!romA=N@7Y6%!k>Jt8F0fxoD&O^OM=RQoa9;cT%vxb04Px8QcK{^RiZV+d>|@68jm znA!NAhG_rsu=eedo3(m-l##XKy5^i2?FCCo52kgKDyS&Ii%tU;~HOWD`W^ zmbY)ICbh|{M8EQw{5(F-4b7IIubgm?Do83O!5S6BS`K8{A8XlNFlN9Rn@CZM5@jm9 znZt+Wk4y*4tJwm~bW=5po8@9UpU)0fq4Li8*(+4x(?{-}b9fPg0v3aJSizt0*B-cJ zIXHDu^ZOae4(x*{YD$8A^hL?aqi;^W`D^xT(H0x#;RB}C_RS_~ZO3c+DSh=vq`KQ? zF|E$4(`Gfjd$MRgzl!Z%)8S(Ia2sR)SSS|6@*2ErY`#L)t=!>@my?%WH2>ZK2YQ)| z=6P*29GjD?r&QNgTWv(a??ot00oFi&%~;({XpCDVEdyzZSM*bVC~hv6SIxRQtNsQz z;;>=8dp8FO27(P7Iv9}J1khkVc&po??7YUc<4>-uaQrF5Re-mQaABA;!eJ4bomx_o zd8H@J{!zWZWGo<%I7eFxM)nT~@OH-C5%Yk4xvEZ@)vCFZ?6!)B{qEU)^`{XsD`&u{Ol^JaCnm0M39CME(Fr0J&yfWVN?JP~P%#_k;5G=Y*v- zmJ;o>w`p5ziG4B!Tf{?QvZC?;oXh1lxibE7IQDUeDpv?+-!q$qEO* zmeuKUu~@FkDD%!kU)@O`NRhn_jKQ@wu$KU}1XZdA$G7I0=KNn?Is9K)<#70#DW$b? zpz3XnCA6|Fu7NNG5KEi|`?_o0XTh9%0}dPl~-c_Cn|59NpHn)Eena zwNoP3u-Bq?x+hG5l(@fU%vMv4?fH_@&H9~FH-p<5rK28;y04qtdG&qT1I*8qy^Qtl z&c1}+Z`IfuJp9luxG^ReGTVUhnGV98hITgyPdBu~$-%~qL%c}AyA_HXRkAof0PGpf zcJBl1iGxQLQJRS{+u)2v&9*tvaM@11FIh5{DOhzUysh@;ZZbVp=05t+x*Mdj)jiA) zgol~@;;&x6h)t8VKPSvFxY-mrpq#-_tE6DO49u7>LLR;NfVw(M#!}hLAi$}1N3zpw zsUwEry&oMrTP~XUS#>tOoL1|3b9WP;AB(b~CV+Tz@>=dO4rR7?VMO&-A49BbwGL9( zk|WGkJMI+btr9IF;14_KCayo6L^lz%24`3Y;6<<(PJO!KJ*{RS%>FfEZ^dZOC`Hh7 zuV-|hp$|Bc@lSx=-LCGc+cg~SGKylfXA4L^>05XB+uGAYa~<9W4sBJf4dy#3f(k$! zBx;*QxA=K-)EU-~jyHUiG_2S+MY$4=H_YIP5O#v*l%QJ-WEjpw&)~l|g}3g4QH3_x z9&Fs~6>R8ywm9!8s~tINHe!xVzgJgPgIK%1rv8wrgkS5PS$=uA+dx{o++`1~T}sjb z!~P!fifYlfoau_sr;fnMt@wOO5;zHDV-s3+XhIf(IA$fc1>?<7m~v)h}V8~eQF9`BqFQSJ#hFa{S`>Hy$Rz-#;*39wkSp2B-OczOB7+0(k8tWcnPh+#`VS-(y(fZtH9ooWTA<|P! zWom})d_vW|QKv*^=v_QB^e*YZ+Ljy~>oSj8Novg1C}~PKu%Qe+2Uby{DAQb#yz;BJ zVBdii6OM`cTB#IWL?5d!18Cr&ek|f(S6`cx*;7N&d#9J556VO73l|@GwlEwPm3B+$Ad}5dR8ncr0OzJqd=ZG()DiTP}tP!VNaMF`25T_JUYA@KGvt zG{*g*)vM;)bdIO^w1(L|&EkeRSbXGqDXk7cKM*vwR;)H*_?k#Uy^FUUZ(@)UlyT~K z$?&bSTp3%4rpXr}%@|Jd(ogPsvEr#D6V7VMa#a)0e3Yu$2jRSIZZ1}Li|XcLxmxt{ zPg^TyUKO=F&*I7%EPm)970EpP>=CJ@xhFvAH47)QM>_y=zySzuw3d$kN!Y0H%ctd% zM}bs>`QSll4sXR+@<`GNQMEF(mppo)nD0;1>jTZydKU4a&Hp~@dtIG0=e(y*MjZlXka0WJ;$-7z4=Cf+v`~#6@ z(3#N5R>B>1k8cZ$=k6hC?!1)`ZSEw~{+ye^DK4a}HMP#1JAW6SJ5MSbc2roS8FdC@ zz<5Xj2FJ?*?W$~{481@Q0x_=OV2H_cH@yX8p&*eH2Enb(QZ_vE@$}EGmS@ZP*JZVs zu4Wa)dLdiyR(h3(k zO=ss9H}f+14jKJBkB2v;aJ#`f1W!1$QR9UBS|@ld9%7T6PPtuDC>#ON2<;M^qNc=3 z#Y-TmgaQl?c@8(Aduzt#MWn@P7-h8A!qcDe;=?muhou5rLAX|(-G2QVR41BEWF)y= zs_r@Eo3mz99U)k9B1-`(u*@PanDR8yRAfA~g!d?od(dkZT~N{Qrq7f3k@{Bb5jv4zdDL-fO{) z^@(MDc@U;+5r~37D348qI=I(kr0Z~@VMRR+z z{$UqTS&;X?mC$Y0Rzn!mUrx(@tW_}a;&s!f) z8TY!osNUydQ;v3*-6kDyZx18?Xiyu{8c1vvQC^Z~KU^ zFJRxZ>j1mFe0|nC;wP)mhEEwoPFox9Hx62cDWuv^co#E~S$3cd7D!%CIdOoeCPchV)TayB|*uz^u%v*ICQgsBC*sz?JCR)7=QeEiA9S#oIwHsdToH0nUMV3A6J zb}3yhgBJ=DYO_@eyNm?g0=UIpGRi7ICIs;lGoA4vZHD_9hc@5$AO1c4`gJwEgKdME zZLZc&pw8RXlidS9kWzaa7`www{cJr|ID%hW{HJniV>=At2@T6zCLfy{El!Su(Wai= zE|aYb#0eE%3BiOUEx>Xt_NGb+KTqc_*pI!{gyDZ`_=M!8>3q9DT&k8{}B z7oSg;i`iLqIs0dJm7k=GA5Nh!g?CrQGIhx@vAv~tFK{)ozY}}DY zEOeAZEF{1q=Iu9tx)`d0a{Qy12N1}T)#$w00dQB0LSGofeuhIW0vUyuGyc}hEBKNu ztJUq|bXonqs(g(vOdOV@>h3LU>lBp0jtVz01~oS}K)7LuzN71w^*ZcDO95jXd+nab z8G4Q*_*Qb$cA9pjdLxZsUUN*jTw5U5pbs#FDdnygOTWWM9sUt5)t0yzcq8NR?H}}b zeY=?5G!_0O;o(0SGKPDMyXMn!kuid29lBvnE8=4vV__JpK9t!A%3)YazVsbP#JmN>Npi$*U*JU}br**~DA1@9tu2GNwC)DnsUl z_cKoG`Y`x=2jOOQg^+Ql7k#L>XNG)qkN*(q?r;NRh-?)ElfH^WxCS<(#=^PH0nK>% z$;C!?yUEhn$k?Mx;1s&J7K22pIVia zO>!kEz?6;;rI4< zgFD!*mb1lfWBT3S!=d#XXK4B{Euxch1{#-1Y73V7zi~_b-()dI))2pH_@gW45QV&B z)Mwf%5Y~F)4CA*BLB{z@_ElXYhZ@M|aTe@GY>U@3ZWV`jVRb&O7Ss7UgphkCn%m&S zOPK6zn%n-f#}LH|5pd2kPHWThQ^}BkB#|sWKAs%^`l!*zE_K(h35}K#soSM>2`?3^ zH4{v+CmMzD#L6<^14Gr_f<3)P^iMh=NP5d7<=J&~5<*1iYEgA2vX-Uq7~=- z5fL4>X2G6Tl!Fifve!)oME(a0U=8Q6@*<@n4fS-L!DaX!{7Ymom|^HdM593EiZU0k4@5Rn9<% zvh2+y4g-ev8NFf)m=kU0e4+WvGtLYhN^yy`FzM7unzx|X|+s&;P!C^mt z*|xudL+dhlx4tfOUANR%rtU%X#f|jupIk-${Zo!2v}F=Ys6S= zr7yup9mueM8>6>kUw!3-6Ks~##!=rsG6x;mME?()iZ3zztyvKC7O|M_$@KIs)oYQ~ zpkTQ%Xpqt-=uDI?L_|#u4r#u~n!J1cmm90TcKq3NrB>HgQP&9SS`g}YE$usZA4sxy z%fG*3KUS6K-+;#ppN9nLkN^MfzrwMJJG_>0Y1_9uIKAn5-h8Y6xjkEk)CW027P5lg zF>h-Hb2plZMuSI>L4#W+JFoAMwM+r53FxnIIc-s+6$Qgo z0&Ti4#c=gC12@B8H5QKwgHT7z)!_B)W?IEbyWsH0rKUIvKD%oc)nazJoHutNM~Nd# zDW}vuvmqntV7q%8Nd}DG(qo6UFwDo4gm{=DI2u@u9=UX)div|}>hEu@9s_CuSS4;)^j;t+)_Xk|p)2n8I!racHl~lNv zpBhu{64~La#oftt6)(I72T-B_>z?DC8zo8H3vH?3|~v&F@5qIIx|e@BIM54c2@b&EFs{?kY9^ID+- z<`wL56&8Ehd(4jyJTOX*+gn| zf3&b^xTesn#e@H;z1oZEVs%$tfIh9i&ZhITh;?>oc++h7NB!`U9 zem|kHhykn(1Y0@Oe>)7)VX074#hmtht7`)PS2M;+P;2@k3{#;DF>5;O#jLGRnC{|I zri&wZ%;T6veVm`Un9XO`*VF2Hx>|)yMrmdG(YcUiB)fAdP#OuAJG8%w-LQWD9!_j% zY+|WpCLZBm|Lf|`U;mp^6=66Z!r`k;om37(%T^ALI22`n9sqB}Xi}A67Eid8Vmp;Z z@LCS(43y*blOK$PfX z)~h}~LwhG9>ao3Qrq$omt68syCtt);6%+TQw^iJ&cAL=N;Q0sF-X7iqhQHWu25*ze zsbIeQ;DZ0VfZ$2+f5FjaG3lCGoWPdh%*)PkWGKXNAUT9M=&jgqKQI$%kOEmroobcu zDe34@9p=sLYC5k@s?&M1x{PV=gKPy%s&|CjhKSBS65RvA>W9`lZh|@oqYwlsg($O( z=MZNey>|8P=yitPNnJ~&iE7&xexz@ts0Ap4rlLsxCJ-WzD{~-$zJ3~D(* zRBaAb@Q9kk%^h@^m_@^*oZZ>vt5h1VsK4aMQ>2{rFs~u#*8)kHMdncT=l@K8|Enu1 z{-;y4_UGiph-CPO2(EMuckLQ@NPGE z%iEh+UjW|APn|)9*Ll&L&8l^?f~PFPp1jmK6ta_#2j5fb%=UoT#?pqz@uKH1GPxunX**)hWqWs9_yn=CBlso*-FbK+hfnD~a!)L0a8T7^d43CjjoQ=l&34}L?P^VP zo9)7fjog+p%L3<_A?*TdXAxO%Ofy9d<$)<2<$x&&4!aUYc=XJuvr1Z0F1ygx2gS)9$$ah=6&`wwBu*!1p9 zceUx=cG3uf?n6edz?uh574T0}Yiow7yj~_O8XCWJ^Ubeb=GA%f@D_FrjeA1uude=* zG5akTct#LYZQyt8F-Y-@-ibqKY|IZ|El;LknAbN`Fr+t|>$N4~VE06~t^4G(1_tXN zItmuTFi#T+ylfZ}2*k?H%Tay$63tPyKPP&dl#+}%g&)IfLEFSp3EYHGhP;8%jp=7^ z$(Y?_3fn+HQJuyntfgG9X6rtoGMxH|sy}DTMKeDGt9S+f<9r^V=67P0v4-7AaLJMDAeTh; zbWoU@A~Fok30HsrG&$;&&>b>8N-7~kAQG-9ee4fzQNMIaCG>_@MWj{`YV_@(+jTQ9$U-9KlP)5-6i>C@zmy!FQr-SRe(>6T%TLIc@) z4gASMbxc)c|K(L=9ZK;{!*Nn-Vw{SsMK&zLg^xM5XGOLr&Y*c5>f85MjDi~(WcE^e z-+C-w&iJV+7PIQ2nyoLYkVxj){9pIPpV|Kn9z6z?Rz&Psm-#UHt3xewo!q}tsAYoJ zmNTN9Y!zj^CPblbJx5(;>qON+S%&B~$qyfE>loPkuY3>s2#)-4dYYJzgV%mh{at;X z-rQV;L#;o=@N_Q$uaf7}c1Ja2H@m*WZWBqr)?4<_WfsO{&_E|Yb`0wWmUr)8BqzQ znctT=o748owil&Zj=SofSWoRr(W(Ux8GCT4107`w!s3>lUS~3{{rkVJhW`7%IT}i9 zF17CRx&%9f6(_PFn~N_2#=*)F+SNEmW z^JW#=(Pv{e_3mR^7k5uKw(!}9w!@+~=*mnDrl7_eh0Sao{PNl5dTINOhPYlp%bC@L z81jhg*@6u*!|cBo2Z4} zV!SSwN6|gcU9I#M!*#*qMsBZ#Ha^HUyqpxLMB(M6;RH`ikKY`-J%n!@gzaPxA;-B{ zEv1Xkt3f4bI7++o%z7Y0RzYS!Y278Gm`n`5i?tCfKN*Z?KT5kCLqNN$7U$Kx`d$UC zzE713c2D#vQo+IcBUe)sN2R+cc4)yN5&j*M{;S&!t)YgKjL767~Hblh1#?h~clbKPOnrIVVIq zK%@9rAt{#y!{|Vk;jZEVRd?5mDY{gc!4z({<1koXgtZ(mbAOG z-7esZaO-PvmVi0A=V9gTj(1z-&D~^DXT3)sT4%ZKwNy|naDbEtg(Jb<)gE`f7-lyY=#6nrwgRXaHn|6lb=RlMo15x#I-dtz#ZLo2 z;htiC8E6~$iQox`);h&Z=oYh@5pYm@K&6SsiI0Cy-gQp#M~4UFU2=kzqpgun8?&jm(O{qemXzDq&gB1SM(>Z!9tahY96`%lqleT)d|~$XdA$W=31q<$7?KdSZ|MjxW|UEFt_A)MJDxRH)%s$3eK8Hc z1kYAJ^6uoB%SYj}$Iv3hXi!3;ZMp{MTo8~q&t-n~F6uJ3KPMtwODthRJhH5U7HMX5 zDOk5qh$1Ab-lDO#4MMO*MQ%fPgXcf~#>Pufxf_IGT2x=B%gdYD`X)qWe2VFH_e7r} z^&G4}a@$O)CP8pZYXu>Itz}L#RU%q+n-Yej#fzGq@r3v466+lMTP}D z2?pU8heF$KwHS%HH2CH5NX&cmjqUIq9`q=Ut(QW6NI~7hrQTK7%~>7*bo1NA_&tfL%jY3;l{hyE{fti2Rb~7q6k5ufp=UeXCz0~jDd-w zw4nFv%d&U(zq4Gl4ofFQ$1wZ1CEbwVTKA{t4m#g{a<^J8s`>2n0^Wx{eesUW8zAV8 zbUBYly<6dCKh}-l`6IWYhSPA&N7tIyR1*C2MOM$$J8$CsUCzWi(vlEDaMramrKUEL zC`O;AXDSpdO=q4P?Yaxba>v3TB(4?_xV3oSGTz20Ep4u6{B7Qx&8}vv>RYqEyS)h+ z>7J(D**)l<#+Pb$4jwWF+bm@;qNi(PYJ43J~7)VX6mvi2;tICrk zi%(<#faY<%SjL$%gwmpNpuY5I46sBIx8QguKcy%BkOn(hu4d~Bmb$$RbJLkeQYK~H zT}g@ZQhb}qe75)Sk$(k{P&VkU#NK|ey4VdK&M201=pm$0k{L@o;AB->F4{=AV0&dC zOo@plf6-XM8U7;?Q!C7I@9f#*E&Y_=g#dE-bcM9>hj#eA8#<7~AMRlkkv-EQC~e`J zj?={Wm#lBW(WlAlH;>4B8XSqYm z{+dyyF@;=`MDwjb1!*qeQJ^MlYn z0!kKF{*S-A>4cBJ=j0Uya;X?%ow`1_=E7L3i-r)sEJd;j?wV2dH1HYQdjHv{ExAX&-L^0YE6JZEjEAv6m%0&QNP4 zWoL%E%;S_HbheVj76x2!r5PUY94s05Yxeb8fJZl>*tWNKYhK&I4mUJz)xHCbtKbe# zFPdIy;91Lr-q9bROc*}@(8{fe2po2!k?RTmj8p&;-nygNud?$0ye3L8F5NafA*~T! zukFqq?V$*vMq8!0(n?U3T?6!%j1G=kY~V1I40N{Rfsb2Pzs)XhmaFQj0`Gm%tnZ@! zc3Kr5pvd4xW{ZJ|(8n|DY2vQ!?7^ZV50@b}4RY?xwv1&ho_h~IFsgnpC#{p*=Phl2 zPLjY##f+j3UV^38D1X$m41RA?#-)DbcR^J-TLoF(7D*xqrwZ!!F6K8_e+<;EHqoKN1@DnXb4cC*V=XX<_y-@^Qh0Ii%zhu-(BROEL zTm+;YafIP^MuhLMoWa>u-bGCtf zsvoPRnQqibCt{+eeIt5dmi#61;qD!j5393SU%d?++Ilmkg1DNg8q-2xO2Ll4$eMA3 z(AxFwozOb%+au47G48Akc*sOEMSLAE$IlT8HaO!p+*so+8T0L_zyzt1ra$F&eH~@z zfcqGay*|BYRtglsAkc&ZTTNQi=I8*8fkFd;0>QGp;^lDZ!>A@=O+kO#> zGe|o%lrQpEjPgz?%$8FZ4s`o`5#oX3?TlMF*Efg?xTtO}maD~d01`p%zV9T`jwssh zkw0@1DSY-AhB82@v=2BYbgdL@QAB#M6R9EyBmdn2;Jabuzmov?&(nJm3bQZzn73XG ze~h<0Cql?Q$&lN78UGXp=rp{<)v8*+`OJNtel9{}@6@+d>HP?i!$*%iEo?}D;0+&r zP{SIre!{3Vjf(UxK8(4E`&=mr?r6uBY``_8t>QfqqpK%Y&zUw1^d2l8*<$j-S+cM9 z3Y;Sx%2hI(%@yzBr^x|7mtXB2Q!1{BT<|Kf?Wt z+q0go7VDb|&u6+?pI%(e0_5%I#Yu6GzkH=82dmI~{usP$^8fYuYLM+sMSSd-dLO-> zv}BJznk-zv(c_eQ!~U72f_S`-l4~Oh;cxe(C}L;*RimXDbh>IqMS?+N#$GRlfu))1Zrp=j$n6QLn-3~A;!k4jJx>A-CrgQ4H8&b22?msOLNe*zkGI`UzbKX z?feROVYES`7pVqFysX3e$3ISDcO=5=<$S)ZjIZQ798C$M>|RsvGq7tPWO~0z2s3XN zBmZ6)s)Audh0Mta&7*3XiBkyQjL-3J#^+5i!ot93qZ?m99faR#$!Wt-nDApEm=#uO zX7h&_yd`7b3ZfBiR?;3`$u5pL-p@}HLbq*H7t_^hwm8389vH~5yM{wJ=)v<39)If| z7%9BIEsL9lJI})**`bq4fSTi20{rpl8km}Jqsj*0J!uBZTEn$vf6Z7UG~&$~a2n|5 z!q!={f~RdBEXE5OcL09XT&`zV)%teT^ro3|r7n>^bC115aVxRUWRJA>^s!ra9`ta* zXNyWxTZs@mdD-ye-&`u$A&v*A6d9bUr!|pz7K%T_}Qn?XK6T@F~8Z*I;JJdd|9ZysH*qR8=w9}qq z5ow$=qpT<$;`c?`TA#UQ+#hxf7L5UmF+QQPRz~DS`RA+Y`SN}w5EN&&PR=>mWuc!&Y1&wIgG7PD04(tE~ z?(e%sH8*g7pK4T-vgQ(LGP=2E%4rSeUW+2I1HJ?W0(N)B7&?#upAHM(Au?Exx)x4* zT2hyk6 zx@u;N(0gt>K;cHl!`-o7E*5vyDFmG%9zY<5r*K|VXXXHscUZeR#LjM#h}zy$4y}Li z#%Z4?OVm`;8oW58GtAo#Fn9uoWCd5M!@xuaDyfOIqJ)79L@0ou?XDQpGHTFe5iXfs z6G=3~S&v7v7Sq|h`o3JY;McxtHF*i*9Dq9aZ1Qbbvk93hSn|*sBqRy?G6cRY7D6}p zFo(fnGVOcxTQpp3e~xMqh9yiOAidLfMZsyrd82|zvVkx?ZIXmDZX{T*Tp(F@#i%xM z#L4A$0Q@2+=Zlv!Zif=&xmnIy^HDkS~&6Dd)AcoO*2@Adtdvkd?!f_eB}3;|%0+oz?moLU` z%kFFwjg$WWyMKdXs*Kk&{?VjnKK;K2?qgM5FCoIaIK8;N^ff(8_!2tq9{sjDp1a9} zb_b6hc>xFB`Y>sWle4YQ$yn%;C-na4)8t(@3*jQty-UqPaBM~)M!6*%Ruit3DM|?w zN;8Z|HwinKV ziNT}CuJeM0KvoQiO4{To4>=tYiRAb1C!e~q?fdtg&VNdkZ3O~)SVJ702OUzH(xCmS zU?MpXY!Ehjz=8J{jOjiXI0<8H_E;j`#we9MmI<3Tx2x&AI;l?Q%_=bN{nG#p#9kn7nNqI@u;Q_W`<;soVD)qS2ne zo}Q4{da8=oR!L1gqIX?eNen0Dz5$^yB?y_kHDezE#wT3YjBf=sn;Mb8`x#H=>a1DJ z&|a@l#~16H>Fl6$5bjx*PrVJ#K?Kh~v@Ub20%MN!!%D%o1`({XjQP7`m!H{XVM_8d zBQ};+#JFP+U`DJlq$p@~C``|uYpShLmYU4;xxZqpXOfc^Ft`A>8s5!#P%k&JJv=Xu zns>-0N?%)2r+N<`L+Tt};vkw%L;RF7#sZA7CDKivNu*fz$Q*WVdK|#=i2`Hpf#pN# zgeaU*)x9Cb9@7$yP@Ik~5B@NudtJ4j^*TCxSi+pT2iH@@9lIXGMaQ6GN)w+`3CT6_ zPh;WF93^}IcJlIHUAD?;du)GBfM^Mc`6|as(%K4*owp^>pL;?KvMLN!m%Rm}T;+Ts zz=l}|W4%{ug0nuHibX5Of8Sys@pW@I1-t00QVA_`k0o1+Hkl}IxiRRECV`29Fshci zHVEewl9MFbu3mf7whkW7CQdRTwRGJ~jgQsf!YN(Q&Gcm%9?lsawsn_`x|wbLo*P>* zZG@LJe%sc}r2 z4FArf`E`+H(*p^#Hp~z=4U9dF(puv4jPB1j)`>FQN1a7C_G7_V{3&RgRM2~2!nf+I zGdeb&ujlfrnO1*KuV%dvbYBX={MmW;a7(0%wn2Xno_%PI)nVTSBeg;x3M^3ORc_uL zyPZ~Uwm02rr7+tos0&Leuv3LeQxM!Lkfp#Rk-K7FY2}2Q36cm3TB2;DbGk5|PjNdp zdkz2eNy4*!uCk4L)`uwD1kWFXFD;A+kS&pQ#MTtPNf2%38Q?FUCr4fF#!dYmrD`_{ zI~g$Z>oBvxBN1Y@Xy0TgO%^rT=C(<1$rykYZGrtYBYAC;jwOhhV!Wa8de%P-=r4&M$jfT_zCj&Md$7GcYaeEjfDqlOf|a`~w8}W$R2bUi7A&0NC}W zQvop8U!o~Bwi`R70)7()Lcb>glMBS!cLdR0E`}s083y@6kzW7udV19?P>kDItdAM* zW0cC7o8|to9*h>pPav(v4*@LVUG@E9c2hi^l^+Vb$NSvrtl-&W2!kcn!T2D3=(goG z)j1Ro?>FiV^A?;j2~wrh?%Szg@0X!6u?Q$9H-Fp zDyPuHNi7U=B6NN(Xql3fS|9XnPk4<$mcjYF;a)>;$yl0+NW@Oj$`owgz)KoQ*Ho)R zzpPJ}H#Z0dcinQ)$Fj%I+n3=T{BB9)5`7urHbx%g25?#E`k9&p zo;TmxR8&|;+QD&7Fr#HPZu~g>XLg*!XOCRx!NLX>zvcY^zhBifH28@&t=DhdHm!CN zXs}HS9-yTa?o2zLJv zg#^n(Sn6=-7rU!C(UKlp)a6}-kFsOs>4MOoph#F_-?hudDxarI%OM;3m!C7wn zfV0e&sdpdTmI*gooNk%mwPK2E=DcrF}2ykc}qsyCJX{-N|OmR zH_$PK_w!SGxa%9#fC^52K5c>$(K9zwxp%XzS6if+D%iltKMlcm0m-pA2Z3`rfB)-c zxc{4#;kGrgQcIsFoDpWUF}5J8l_$&KS7E4q!&xpinJD>$;FR)K5Yn-x=<#N`a=!+r z^XB$!S}kU$OC%zS8v3m}sCUbLc^9)=@_WAy>fre!{~9P8Hdk9xQ^f5-3?~+LcO{}= zr>g8m!Re|pIJ-oFr|gies9JGlxsNEnb78qBMH=2Jn@`MNGX`%Z)dW5oLWo2LtQQU2 zNaOSv6hD^UzG>#?pa)mC>*l1-1nkLKB3b30X1+TgZX=0K92p)du6g0Tu zq55Lm68zb^b0OVIs`2@yI}H5AZS6>!P=a(NOt<3#j}YusQrK|G){dSy!`P1*D02R) zu`WtN5VuRYdFkOAVI&oX7c@>XwEOn1^ILc`s+0L`pHnwW-V(mBd)nm-w;Ma5gGZ0U zB2you4hd(eF*P{!yUwZ11#5~A z@V*G(Uor+EBA6o`CYjU2hrf5-R&E;W_f)qP$9la0jdFZ&IA%dqK!dd32O$(@*aIKv z3Go(;jSdTmxTjpReFqQQn;GSoz|C~sd*W>;$yv3W&%QP5;o$mdrV`z=FA-aBGnE)T z`_Q2^H6cOLh9;AEV(jA^cVyzD(>$FVnE*FjYpsOigEOv$DcLza)L^m;#MZ_J6RNRl zNI_xPRxp?Gyck~0h&sU5x9et6!QSWd>T)(;H6b%fuAC+G*FEU+q4ZF4EO`3J%{Kg9 zANPZ|7;#M1IvkEj*z6B)UAFNL4j6orZJg1XQ#6)c11FWbwhYX6L7HM;lsw$ajSB88 z7#)rvSl1wKx@-^s9dBloRy(_6&p6xb>bjiafXq^5ELsb8t$`BIPOR$KPEgZ3!j@l~mN$7^$5J3v_I);Zi<@iiT1R zc5)2_*WP+j6>Ul7jf?6tlmb_WOo8Xy+-3z*R8u4=JiDv@UR6(?9(Pak>C)rDQ%3Gq zYb*R@7!qCMbRGDPIb(-MpWKGaBZpKt*>H(dQO0l=g$w*^EGKBqX@Q2WK!o9;!y!Il zXT4ZDoY)EFHBrimmJxm98r;fhf7(KfGsl&Um$zI`uP>^rsyS^=njm<76uX4Jx+mMy z*L2sVyN6`P+FSY14z97m^sgbc1Yc9>ep6*UclFyxH+R(*r3SgZk*A3=>#89*i#RZ4 z3Z}0DQF_X#C{f^4bCnH+=dKvbM^g*8TWcn^2Kq_0cG<|B@bjmz9zeEM$TPS)!)-67 z7vaFucA}QaLU$*=ZMeGiZj;$)Zx5sJh_$cNXydRQ7?B)V4ovhLk0JC;4nru!1Xgjw zxuQ;u$$)lA?hQBX4w4rLQ6L-buNli%anb^lx%n#C)Hx_aPgV5+C;Fo}Jk5N%x~o>p ze=hLy;JsX52HB+_qLeBJyT>(THM@rBZWGCzkhko}-CD_lY_UZacx-~~fkdYn&zxZN zRo28Ys|km!lNi!wa(KSUqeE!UqlMlQPvL)cli&17M7b*4lNP6zMh zr}loY@0OTZTF#eeVdZFxV@d0JCcuDqF}oSv+>Is%je`x0{ChwZlYu$bsz$&_Vj^Uy zu@AzR&y(YL%g1rDz>N+TJ$N3e$25p<5_SS0u2Uw4A z5v|+TmCZ-ZagX^R&TO!OF<46}Ly84_NkP*T$IhNST|WM8^0D(-kALfQ`D4mwg*Z@B zhhu@(_Y4aKIYWDr?2TLJuh`dPJs}iX*%eh~!dQ7oHilT9sqIIeS6^p~`Sk9f%Iu!? zL6kYzz{n$0twVIYmNpMw6Yv0SPGI`}{p9_hk4pajy;FkyGZmP!+DImu1E~R~r4|YT zMdj9h%Jemb5)Iq!K;L-_zu{SKZ_Vgf0!8jv;WDdSPnWR4UvBQMrxTE4wOll}@V+gY ztLfxhvp8*=5f*2^T(6c`i3pu(ysE>7vJdC5yQd8ne>$&DZddCc5FC%6i7gMOgir2X zQtwl-sTpJYy{4xa+#QU;@LMYbA0BNRzlVPdAp)Y`gFhy(|9TO_z-oVv8hy<92(-EG ztfG;^5>=!lBa~r~&M+fL_SQ_4jgWbmY-SgQ^BxI>%R_;;1!tems`J~EW)(trWb%k+ zSBid|P=2Lo6PIYXu_s9hsEuyHm=7&Xi<<8;DD5#efcG-~)YN>rnl381p(h^ng=?KHHoMi`@o(!^ z7eST{HgM=%7q`|2i)7{=C5GWpZH}G%eB@Ci9lglvufTbFufl6>a$A{`pRi! zOp=5my)MNJZAT4kO>GIz@D(f!2eRY=VGPiMJ4?pqYl%PyPwFx`ExeskHao_k+E11c zl2&&JXBV=7J}+yMcMXTgZG{^c`8U7{6$Ivr-P=QKTvb9ek>wyQ`_hCT0;?2PS_zuj<`t~i{|*@VwoI7v8!C52yu#}lV{=1w> zeN1<2g2X`D;Yt%sQx9FEOrYRPGZ^p(9U>I|0l!1UT`-!1!#*KwQY{}P;8i_wj{HI1 z@(4NQLxZi7dyltr;IJUr${2EgTG4)cw`MJZ45MMmE7jh;eMX*x7HP$eG1fuC!a$T4 zrA!Q^83e!@!tL-DjCubO(?zurbQ`N5=?BG|8Ao3J5$CeGx`lWCraHS_t*|3%TQgp! z8`L}F@+N#!A87dKkvsJ~C}&fB-`ogsH?}!t82I;pOnyCn5$pSEe@;v+YjEd@15&Rk zmWl;0GMyNTP=Z;_Uo_VDB?N{l!qAO@C=)k~GP-J=^S zZ)Z1zc}tGLj8Ya%0&~nJ>zX1DunbAmq8T)=g7zw>f`&Yu@Bl%W19}Dfr(9^RN+?@T zioEpMW`-7j(U=>}6!y<5>okw_W`NlNJ1qBZ^eW@mcE>cNSm2qS-JWimIt*4jbYQAY zz_3CIrdx2(T}Q?a6I9-yQ%={it5ci0mYEXDcshkZZI&=w4sW9`&Txas(7ckrWK^$o zi$JTl!rh25dbj?m$)H$ywx+Gc>~cA8X4T2<8Cb`yQ8c0i-McI1<2i5Zo|Yi!4xT@9 zAJquun@){=h47IU7-fa!r?jHG4%M5Oy}#c80(8x zAouH?;I7uK+fLHBc@H_XK5E7Mm{lX!rNNo?yjJ2J{83U%!;E5`VbfsiI5=cJH^Q!l zEf8UFWMGJx&si=?p(`N_0f&za88$fTackTCSnvg?+xM#|nNSHU=N?!wD;F#}@<ZHV~F9b zC4TENa6z zFVQ&g=GbGsa}X`k)ka=hOQ{eY$A@ki35+h;IS>j{pyuc;*;hO}VWRb%2`vI!j`uTO z&3v$Z7t`6<^a@Ptv|8Uxzc!1z^~K$yx}IH6SFtk4p2+6;p`v>oyA?q8LpBdLFmi`i zF_B;Sh|wQ<&epxe zY_8}fLRk0gw{?5B*k_vA-F^Bf6gy-TpkN@V;h<%aI5$zx#B^@QW$C4JQ(Tt3CA`3v z9^SRpV(U3WWY#AsXoiB77~uBSjMi581blXB`sm21wjOa%E`cci!tMN~SyU(RqOY6z z)sO$#oSfaxn}25iRLvZIzYQ|GPt?HUp6IS6&fx~0;3;EJR4x6A3xv)TbDb))^Zoc& zx6awpJP*}5xvDKgoMfjj7j#qz#0V}yr4!09Jd2t^`{Aw`qnnj#B5W5%swSxb%)1dbtWSM(bLoV*{q<65|p#w%m0|sY&wZXe&44k(Rb})fH`u-0$ zzw4ruY+~J@j40~Dkl{oq{G>~^y8E&WCU%A`ox5VJ&0V%lT2%5P;G=ju;~DZE%HR}% z7~N*Xvpei`Lgy@~6Apq4kMV9?&)t z-H!cJLTc74cf|8O@83^ez3gnG!{pljoI>yt5QDi0Uc5GhS#3P(#yzq5deW5eJA+mG z%7wt}Sn#5h?T^cgS2S)V1nmROffr~2iulj;F64gPAAC2z*y$eqwgz*5?A_q$ht_T@ zjNibHMB`LJ)FdHf%7hGSb3FYvqW0%Rx<^tX-E@!PwN^SL>e$s>_JkPjXc#DF`YZNb zUIuUD1l(ckwyTGw@jjlm8F|C{e0E!%EU)erYeRoRi5iM~gxO{^wv&XP8mxb4&66Uq zt5hO?4Nix{pIKR)zur%dyG-j}j#WKQWm<)-rBaeArJXXRh48OX7N;*omaDqCnaE!= zHY~#RgbTRZ4PZlkN{g{u&DHW`y1J>>*O=8AY7r{o$-3wG1S%M=Kk_yoYgqs=A`o|- z$(rZ1wZD1m_4_$e&%^Cb2#GO9Zz0%_Rme! zyiD3ZR%5o4x?{+QxS-n3x-tMhjs&5GX|TN1GOaS5im`x_HZtq4H-SN(!hFcn#4LgWyC4I+MVu{NmB1eaWIp!+j{Q z4Gy)Utrff)s%SFCmnGC5Muo<5qu3%5C4g#!=Z`_hxgcR14yF=qZIIX4$P%%w6+%D9>fhyDNX#K*6>-)5IL z%T;y0T%9yGq514jG`DZjmKc-XnQa*YZYmLai;h9Zw2&sK_+x5M)r<((XHJ*+4rB=s z;Bl^`b%5Ow3RY<$Xqog&Pl`Mk*v08K~PT+xKEoD-%ziq29AFuaFX|Plh@O; z)v`Lf1%293n#eJDL!C6bXFGT;%&HCXEyjyByDquE&a9%GvT>8a{^dWFp|r`7E& zrmJ`<R%$7WY&s_o}L3@79>0IcLwNbWe^nS}V!NlYCq-Hs~SRAzGnnk&bk{mho$B z+o?XCRp+-S%_?lUE7GQ(ugLBVlysAG+tkAij65*rR0piN5TR0>lO%`&1tL#fzLW$kO+%h@r?jt!6?X5m?4OLe9mKkC=i<7^#4l`E?%Y5|O z^`nm*l##R_O>3o@lnw}ju{bBqn4r3tarQ;&g}8{j$t5#9ldj%bE>?pTX2MKujou7^ z;C$(EygoK323Iml#m#rI7qio8^=-Kh!r{F0C{vE@u47v}oxRIsDb{=T$Ugu`M-)_$ z&{*q z98M$>q2?aLryz<}w7$W2y;@(*ZZ3uu|7lo|yyGvS`P*vU; z8lJaaSFpwT9TqWrE_c5eJgQvv@;j&};ug)8H#dQo-4m`*-s|xkhdk{LP%OHabh68R z!l5-zDiyE|LO_S`Uf6OFI@Aec`r54oyQqEXehgI$DU}u7kf{;1G_oZ8LLkU+u4}-Z z_7+SRo&c1Sslu-2j$!l(Sz>b9U z2THaCnI@c}N%VJo`8@g9agDjvrjJRku@-of;U67Tk*%4u)Q73x*GCSd>GdlUK`608 z$xO&xf5q6G8xdIXCL|MBCE4SFS2O+uc8h9sRxRhVZ%q&pKU;r?d*&q**BSjC!K25Z z(o)-SCQgB3QAB#~X>?4TvBl$$7tt1vKT_(@x$9m zn=|h72DU#Z8XvKW%Uo`4f`ObS#uOam38fi!d52mby%l2($U?y@2VY9N4V+5EFyhsW zOXsd;rx(q1UVUAzraidaEE&^^nL8EWp6|9sFn5c|hGy^4hmKQCFHYqkf^3^cYSwF7 zPB%Kf{wrz)+n=KZ5MWEJmTuEBm9`cJcH|L26eRr&B`W~s;IA2l!{UM2ThJRMcvZP>O6q@_kXyB85hhmU6{eR4NR#QbsG5mTUIcc6i6~0a%S{3 zI!nf2013srpz3V;>$ElzjJYHjn)E>Eo#%wfdY6;R*PlE81Aea?aX=ZaNQ@hoo z1e7!9(7`BoZ;CzB)xOr*5K~hAsIgV;DI)mehVZ{;~I1$YsPaRG$RX z5=K&SBe+t|41uYUMzIhCVkko%o%jG*g}Y`nN!2#LK(xI9>8YKyg%cl9A5(J$CtSgQ zt(LLrokFRk$Fs?IG&dtUg^M0qkBkcR2z;j&WFPz|9=75qYBKLWOn&P)N!?!j-%^~U zoYcY!BAvXCp|vu|Q1LXpg`r$M-I9beZlvUy;hwi(3{{4jiBuR3ZadYEcQVed-be6W z^wt*D-__UY%}p=wyZcc4AeWkZs=JnFvZvaEhmAZxL#+~i@dmceaAE{};#qxaBoP|MY?hzCUUcGzR_6xAZUN@nxc26Js7l2dW?rYk5rpETi?h=*T zkN_$fMaJYExW80tW!-*AE)C(fnED5T8lYck)QJZ#wRrw7R}Xka&xh~YSz_Nvsz!A+^!bCT(6ecwbwJpGBUJR zHly|+ZckGecdfbvjZjz3qH6zpx(N9Qb`iKpa?L&dp89S|tnIktbWgOqjj@~L0A`Y7 z6fEyi)p7_&K75>f=v?m)AG`0shotL`eGOI^@IZRdYFAUsUUhW_8tsmN#qYFQ?Ayp4>J@cf;Ucu;j=!5Wc%2 zAXEEmpPCTq%E4eh)r8Ux-1^ zc$gB;Sui#VNC-q2aMEO`6pSZ6N;S-Oi<_I}`eIgny_ee`ski$jC z(4weYS{^qEt>7hN46*s)lb@A^K6>j-4>(h~$&Mz)kzmkJ<7S~*Z6#OKmMcE>gej1S z^4IJuqnsc~g#ueS0O^)fgTm_>*J$qLbg`J;TvR8^@6*+K`F{tiHF*d9?6s!w=_9wa z9E_W<=50?Qrc}cbfFx?;k;6Odbc!4$d1q;@xU$H0;1FnXLAap>Q_a34Jq6cPTca#B znFPXbP9E$yo=iR+pzZ=CvlhFJ52lwA(_Rb$cvex85=4XW!mCBthKX$`dz8%9vq( zks4L=!0Vu%XD>aE7RY{f$>%=&{A`$f4uP{&aq1}FBZm!T5KK#6qDmcZqJZkXzh*3S z7l;^u*k0`{Q@2MxNt?{BkX<*c<@~k+2fY3sDEk(otaA@D-#&L%u7f4V?h|W6S-&pE zaiC4qB4=#=mk(~n{EO2bN@vWnmO@FwmBUp>AQ#n^+9Hbd;UWyH27B$js&I^IzM;xaxN<4bBbP0v=UkxWrR8%UDWDe%s$R2Q-5b!^m047tb#RD zo=??^ussEJWsWM?sN+oE=FJM++|5;Wa=xjq;V0yq=c8%rx`*1c(88L!!LueFvm)n% zXU@tZfoZLIMAaZ+%r8F9e(Qw%UO0LpzomryxQ2IC4Y?BV2HMR>@QnKTV zzwdtc2qb^c=mUe#l1ehBwRz|ffz=X2H2moa%fCI!s2s-gfeJ7xJ0f$5bY=bytN;rl z{s(Vqn(p{PefP`h&9Z9F!3-|f=aX2>S3~IeYse{zt>dF>UzDJFPA|lr?<_t3(jO*_l|QY>+SH6u@^}e zf4v8c?RAaNfv^ZAwGcJ6*j>mQ{Qvyi6#)DE{8@$o7`(qCN;^K+;O9y5qEbP<&E#Q` zcN(O>W()|)Q9!2V!W=KB3AZzjw~aMl?s?U(HuID9O$f4hI>}7$i1+oU$4X{~51)cB z6`GK~GgXkvAxtow>`UakhfuHQQmmHKMhG|7GiYikrHT+GGKA zyq592Y?Pn_hijIn;H1t1(DLD|J2?Tcdx(dowYkJQ;lsxEu!<28c-T8F4hH{Zit#=F zJbT{_-ah}_+2;Gy;H`pR3ssak5}U|_D2XuzbJ}1lM{8_)3&!SrkYd-=O41|shVWLV zoyTt0U*?SVLHx(Z9mx!OL3MufUU-`CsbzG!lk$b0m}tIm?>eJWTnLq~{noDA

k1@($4)U1(cARp^HuANz-DAwJa%E6$ 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 M06+~7jONbE0EN3hga7~l literal 1450061 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

<{!Mg&6Hn7%^|4}%o5G@X-A??xa0eh=tR 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

PEUSn=3FA3GqlV<;E6@SSXRs%B_ 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

d2=5bkd|~D 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

~j-@qxTn!yQ>P!aJ2~O)ArHL-X|^YjyGbkWpuOs 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

40=w1~I{FLA1a>9-0aQ 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�WM<~i6Ent5-AOCjHH~j6` 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�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�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π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 z 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 $ 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�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 nGUN91|cck7Egs{wN1@ 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¬?l!(Ii`D6c z@sGE!jUADc*^mtfQ_JxO+27+2GehzHdj4?L}(KRkAcP#ut8HAYh& zXCzMjX+IS!{mLsY&SUHtSJPT~5@(s@$l@@_Y&PRuevrfV(yh9rtz~CRSk!b-IESjH!4qRNj_&+=6gWpdy?JV=C0<>si$noIHg9cYQj4kz6Go&Jr z5VT2)4YeuUFYhPsKRzhjFUl0t>Ssq#n`N8{`T#N_l*V~ZDb;$%`&LWMBQ(@2BVeM^ zoJj6#KD8yS?AQ!B zK`7@bx2Q4_2?|CC=bK!)=9BLFFrVB3*1~X%c1?+}jqbFD_Cw~9V7u@SByN+@W*kyu z0ZYlr=<3Z>hxE#>!Pmdn)b~p3rKF@ z*_|K0X@NM<$;7pCW}1U8+6Z-MrO9p|ov(H^?tJa}e$XEZWfOw42A!#D zjvM;w$!I_#u=aB^HaN2K5EdgL=jf%X%^scFR`Py($cW`L2DC~1Dbj>X<4}X_QbDa& zngz(XqKRYeS2pEOw)W34hNJCHLM|ko4RCV}^qgtFKAx9%ghxCMj;d7hgB5Zs*IqMh zmR%aSNrIBYOM-@Rf)51TbW-rUgMe*yr*(MU=C)n~i*U`)i<8&C%yGizX+zaWlJ!c* zFRMweD%|5u7kn~ns~()1eSw7|Yr?`bWWDS}JRO<+Oo>AaOm3as{Ye|>kvbSd*5sJ4 ze_hJ<2+K!SqLF4?YL7J_M$Jw-5{X0M&8Nq}7a z*JTKuXID2ddYS!=$b zYA;HMuH%3*$6+G^5)7TUSPG32P$zcXNlI00%dMj-8jJiYF6c^xf)|L~5< zK?fZtJ2&f1z>(kMYueS@nhWEmzL{*pBzzRAq+&0E8hy-XOl^ZG8XDOF!Q$N%pY*7N z#^mmxtU_D~jxo=%`c&W4Zx-44O~$pn@3#nz|P%28B7sw-G2(?xa*D-DboP3s(lfn?B}GT_T>S_1WQ&*$Ag^`?P(kmcBSDxQ z8G%B(*>qTuCzeXG%ZK>$@e^E&KL!wT1MET{ql^ga)#72fJbI22f@$K$TQ2epW!=@weLz&R*%L= z{kR^)enB-As23Lx56oP;NyjZ`1e}9s+|b3t>-G^;xGSy(71S@KtT`pxB9 zC#>E*phjmww1qZ1pv&K_I@eMb+@Cb4u|dkO7^4XGE3ay@ZV+CXUQKKwDDvCtJp+S< z<&6x)Awk;`SoNFOtv_Gx50*Wao`-WVwpZECacMQC3J+lC0`#V6j(-DcqQSs(1?Q3* z+$ZgH!TEj@KZ?@lZ6FP@`J7O1qI1+AQoqS7$sft)l69MRH*PdZQFwx;0P*)tR7vn< zFnMY-<)jH@`5iFOkIHDBw+l{>@WOaxV`8b0M8mWLQUs73YrK5@6H*MocrBAD~N6cl~QvXzUmJdThE;0Go5%BqS)&LsNt}Bl?YU7sTwn=iS0izpsVx zDI*b&8U~{{9T3r!>zwKmV9y}4iYcSzhA&4t2$rrzFFSscucen?;{Wz|c~(A7PT;NG zDD4XS(DvSz2!$YXA_nimm??>$KpW07Z^ngMeSNW@ch%c|^MeXCj}d=o#Y5IXvM-8l zE>^D`r{ix>Uu5>Hfltz5uXx8c!hmyiriaG$pR$D4~ma&`47C3D{Yg3O1+4@M!`<_eE% zZ!b;1!;2dyFJAZmG6gC;H;o1jayHqdsS%4Eyy@SC;!8e+0wb_cSnT|R1+he_+fdVt zc!&~5c%=Q>N}39jJhDlIl}NMfE2dRJu8;lrVPh&$Uxq7iUqCC_`9Lo14(^aRP-wF^ zljXa%dUtlMvT>vCek!X3zLCCk_@sYG6eNBh#2pTru}cU~E`(F*Ao|AJ!BE~4WnFIJ zv+HP1M`$6V9T1K67iQlWAaeinF0IpJp$Q6~eXcWO4dpjsmTV9FBrSNLgGc&3)&lc8 zUKs^cQwlZbm*fbgQO@tTA+|vD@Zy9h*iH=g;{XZN!p08!Fxi-kYBx2_f7mD`Zsw%1 z?$lgIzjJ$#G-)i&ezSr2sPtJ+!3oju4huOA_LXlm(Tq08hR!78XQxR03FJ#q%C#NM zSZD?r7P?98$0GPDy>A^M5fq=P{t1M{XZ&5xq>V)~FpN+?AA+DPr3c?R1tigt7d+~< zgwN*>hn&=eo(o;pJ2lR@!OPnp3(neCT;IxjTLb1T33~L&q9^OFS>WL9=tWuddV$4VVH3^qung zT5A7?VU7O!k72!s&M-yP7f^n+Ns(^48s7BN;5R!s-)l?#&b`{?xo%|eMupCi3Dsfk`;Yu zq^(_gODMLo<7j$+RCx|QxW9Qij6^*SQ{oI@H*Ey04+ggchB4u{?)+KET!eB=ke*}@ zoQDVE*|WMmJJ8T>_M*6@!wk5&2uuT9aC;ZL;ika7!TOO@b|p+2LL6H5e)eUizV{$@ zc`48o>!MHmtv47;0EF7b(Ii4+$KLaR850nVTjGt_PSq685*N))+?Q9dv+!9F3omX} zp!haXz$_o0b!3YAV$^3Gnykei4RU+JM}FE}Y@UG0O;wx9+skK)+#e2hnCS()OAJ<> zKi9{%F^iqy2g^J+U983_&pk0a{TU}+ZPk37KWJn|7oB}up2}lHr*JX>R9yT%H_t?I z8%M>7>1?mpZ2T>~WZuK=p^V14%h@Mj6b}gkzXyS@Rdd#sD)Ze&i8=cQdhwN%6HWk2 zP%6oj8n=Z=P-?9|E$coObOXW18Nt!*oBi>&&A-a!1zgK;>VWy#uz0wkRl{h+9KFR1 zM0llor}?;M3lV`ha0-4n$R>F!-Ns%TPCbr|>V1leyI~w3QT*>)H4HqNsn|cgvpF12 z#z~5XBM4K%@s)cQqcX)dp*CGUEU&FcOdeHHV=t?thTvO7D9k9%fziSTR+2`1Q8w&| zOPj`9_?(uOYj#XVfSv=tZXU&I$#9X@C3`@G>X{T(S9BH;M9fsci@3OzaXIl zCc&KL+*qV3q|8YmmoTj@Ok;%7IFC*ou7AGpowvu(C#$9?R+_ft>vc4IYOZL|Yc>ok zOTW#QXWHPL40P?m=!Y%B!Qmn|U#;Kz&$zHSiPN?KGt%|kM(9Q*`h%Mw2MAgJ72H9X zk%*(g$T<`{ZTnHA+l>~Ag3sp=O#%k03o0KVte;ZjU_h1w)jc4uG>bEK>7l>>Ufyn& z4kwhRdWXIsNA`rw;ZVRUepiW{%6~gQmp7~H9isG8q#IXrw8-D|#HH}DFODqZae1s zzTG(7m64o3LM74G*cX^k+>4_)hWhA7!7+AO7kDC664hHqVKb1Tyymm4%s>(WzEz092}Qs;-gfx>yp7$GwDz z4Y#}n@5~W|=EH#J;z~3;;8XR@evl86H3pCj$+=(76r z2vjWF2E2%wE3@iZZ$oYi26Dn+I;p!->Q4$Yfpu_^x-)*zhYrSxOKk~7kgjJ>*Za6) zK`)PtLAHvGHp!!i&8%D^JC4_&Vg%(kYwEfs-XPNJ0#154 z%^GXmILzn{-jq4oQ=GS~>_DImpX(D0dd8s@&g9s22^MlM{kl_=3<2NUh6G;amIPs_ zYsMzmqV{Uv%}^q#M?TDi8(S{!@i%Oa))ha$Y`M*&W^nb;FaCyx_N)zf78#GuBr+-q zu%GioFgWSbMF*T=T5rQOz-Cj$Ic{GJhv%@0Ts!vzsU#=Ygp4jF@>JbPJu@jX<6O#< z6~~9Zm3mOeT`Q;cU`^=BN)94UG#l$u1hk7x_>W0_EXkPHz589AN)HF@&(k6)kls8Q z2T4U0v9z6;;@qF2h86%7Zy@607Wy<$(^iQ4!c~l&@$^zD>pqpyp&c?4+FJ^;`w@ju9#Jb*cod>CqL0xSy zn7oDOD(SPuNkOD~4afTQ&$wkan;PKpL+I0>V^%r(%yZ_#X)=LOgq~1oXaZ97zvhda z4C_M}!U z1DHDQv_x=U@rz|k1uJY_n`Zt;HogiVLWA#M3QkLU$ zr37}pbg{II#CR&&KlxuUr4I!!#(C>BLSqr^+nN12H@fC#k=Z|tI#R$?eA-*Deh%M? z?-)H2yqUdJ?-*Ua3LV!Jv9_C`g%PMnweYxg``#I5dGNkA9#y&(mEP3QPr*X=`9T92 zmT*TLDYtTHPQ6a|^eHAzf~xwp^hqNZE`6^6Au!<*{AazaK3uM!LqqK$S>pzdwQcIc zSpSM+>9#`T#t7{y$2e2TwgTiNw|fkw^H|2ZSLxDz#Q>fwzW#e<9)5orS-RE$0a6Ca zK5R>z+n_;n*d`9bAkhs#Vp%mO59g$Utk?YRm;<{N69yXnUgoIvSeF}`=b%1dM_v_c ze)Zw3JgQniuB14HM?hW`Z6{Ym`%~iG#)86QM@l%ti;fB0Wx+Cc<2{y|Y{C-)@~|){ zkJC)MT1^T-U+O<=z1+TMnVri5v8a8!nB3r>3y3+77D;wV^!mL4bus!DTFbFqVGgcx zdh~XepO;m|roRoJNUazPpD1d*5&vT;dDE4XlEqB-Z*LG$$B(Xu4TkfFtNsJS$+vu$ zL|>=cF6c~nVN#d*MZ=_CWCgt2pZ~TOd89cqg2cG9no8-eg5)Z4k@;QUDs%#qSO`&5 z!6JDy*KG+>&|15q^kgrSGe^b{pJcm}&jxiRg)>c<1|npPn?;M)N%-xYDi%s)O%}x+ zK7=5#J6I;HVUdt_y0&!8o0NNwEa^ix}+#+J+xAx&p$jJbVvoMPXB14Id2fG zY%mTb0EngeD-?zy33&Dx#%Dwvgc0bP3)9wkg{cvF925#l^9W$n(?Y@xMa`MFATAD# zNNAWOW+7n=uG4tw%(xCsQi2%v_bH40$u2P0KqZ`&4?rA@hQr$W0w5(|}1 z{l{w`#LfO3L48t!43SsRtbvNQa7?tCOqnQoq9xH)L|{3NFz!J`?YVR2&=<>_Q08ve z3IPhsSKa}IKxiB?XY4+d&`DO^afZ|D!5re{wkbjPt6^=FK^D^XW(Uyk&Xg9vqtE(V zh%+pUb^0*r=G4qnF{J^O(@&r*qGWBgaK)^x-my5~rZ>bW8sQwv>94MTeu z^+*cDZHaWM3_7lI(2^52Nhfh${Q)>O z3Wks8P@E;FnC&6vIl6ns?FMcXurMzL|5bz+ez?o;b(Xio)Ln0yyym0{o4y?8g`#Sa zm4J-7%H!ur5Yp^gNoQ_3v5#j~(|KM_3Wzyr^=uf~R*@~ERI=YvHIJNl56vsW| zW7lz*s}?QRCuKrk&m-&YHA!3{udkUJ z-J!=O>L`+e8}~2zgzWP7Jwl7t!$E$pF*;IN;~3-MHF^{KWK{BcyKvom+RXz~d?H@! z-xXVPFh%yFEV^190ecOB7P~%(oS&K;|2CstUqZ^#4?oTuIDrN1O_|%T|U5UObqz+nm2o0tQG$jvFEg+8A*%7N|0CJ4 z5@BQr1H{zr6w8Zfh93`9)oeRb!gJ%Sf@RvZwrHd=Qwpalu7ukJG>XJXtxR;koBoZ4 zvY76iNf-D>+Au3cURd-^45I9C7Y0$n$%RL~xmxKAyvQbGC8m205hFBrTvudXRp!V9 zF?mN!RIf_7?zu#_Bveu&j7BVrNEE^$vfAjsSG7Y*9gNs1tBcQoB@Z#aGQ7Ddu41fJ z7@f)91__Qi4&9W&i3&vz?xlFT2oj_|M3uiAG4;aheO-Zr1HdS|CXt^yc1FjycBkw;9)pgW&(O3+0T);{(^*tmFU%wktXx;}>yxHB*xf%B%_gs0 z4djs?7t80{E-N-}fPrzj9;-f#4sv0!WaAFPY-> zEI7n0g*iQNT-&l#N;RhEp8o5oxz0Ee67%9m?Af`UVE*upFu4@z0!

TCHQ7_HKB| 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 [ "attributes": { "title": "kibana_sample_data_logs", "timeFieldName": "timestamp", - "fields": "[{\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent\",\"subType\":\"multi\"},{\"name\":\"bytes\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"esTypes\":[\"ip\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"extension\",\"subType\":\"multi\"},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"esTypes\":[\"geo_point\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host\",\"subType\":\"multi\"},{\"name\":\"index\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"index\",\"subType\":\"multi\"},{\"name\":\"ip\",\"type\":\"ip\",\"esTypes\":[\"ip\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"machine.os\",\"subType\":\"multi\"},{\"name\":\"machine.ram\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"esTypes\":[\"double\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"phpmemory\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"request\",\"subType\":\"multi\"},{\"name\":\"response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"response\",\"subType\":\"multi\"},{\"name\":\"tags\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tags.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tags\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"url\",\"subType\":\"multi\"},{\"name\":\"utc_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"hour_of_day\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"doc['timestamp'].value.getHour()\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]", + "fields": "[{\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"agent\",\"subType\":\"multi\"},{\"name\":\"bytes\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"esTypes\":[\"ip\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.dataset\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"extension\",\"subType\":\"multi\"},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"esTypes\":[\"geo_point\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"host\",\"subType\":\"multi\"},{\"name\":\"index\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"index\",\"subType\":\"multi\"},{\"name\":\"ip\",\"type\":\"ip\",\"esTypes\":[\"ip\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"machine.os\",\"subType\":\"multi\"},{\"name\":\"machine.ram\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"esTypes\":[\"double\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"message\",\"subType\":\"multi\"},{\"name\":\"phpmemory\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"request\",\"subType\":\"multi\"},{\"name\":\"response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"response\",\"subType\":\"multi\"},{\"name\":\"tags\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"tags.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"tags\",\"subType\":\"multi\"},{\"name\":\"timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"parent\":\"url\",\"subType\":\"multi\"},{\"name\":\"utc_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"hour_of_day\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"doc['timestamp'].value.getHour()\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]", "fieldFormatMap": "{\"hour_of_day\":{}}" } }, From a5ca334f57ebe7ba7a5d8e9b779286cdb4a0d625 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Tue, 15 Oct 2019 12:15:07 -0400 Subject: [PATCH 40/46] [ML] Data Frame Analytics: Regression creation and results view (#48159) * Add regression job type option and fields * fetch dependent variable options when regression * convert modal to flyout.disable delete if job not stopped * update modelMemoryLimit for regression * ensure eventRateFieldId not included in numerical fields * add evaluateDataFrameAnalyticsRegression endpoint * create regression result page generalization and training error panel * update advancedEditorToggle help text * remove unused translations * rename creationModal test to creationFlyout * Updates from PR feedback --- .../public/data_frame_analytics/_index.scss | 1 + .../data_frame_analytics/common/analytics.ts | 26 +- .../data_frame_analytics/common/index.ts | 3 + .../regression_exploration/error_callout.tsx | 68 +++++ .../regression_exploration/evaluate_panel.tsx | 243 ++++++++++++++++++ .../regression_exploration}/index.ts | 2 +- .../regression_exploration.tsx | 28 ++ .../pages/analytics_exploration/directive.tsx | 7 +- .../pages/analytics_exploration/page.tsx | 15 +- .../analytics_list/action_delete.tsx | 5 +- .../components/analytics_list/actions.tsx | 11 +- .../components/analytics_list/common.ts | 16 +- .../create_analytics_advanced_editor.tsx | 9 +- .../create_analytics_button.tsx | 6 +- .../_create_analytics_flyout.scss | 3 + .../create_analytics_flyout/_index.scss | 1 + .../create_analytics_flyout.test.tsx} | 10 +- .../create_analytics_flyout.tsx | 86 +++++++ .../create_analytics_flyout/index.ts | 7 + .../create_analytics_form.test.tsx | 17 +- .../create_analytics_form.tsx | 200 ++++++++++---- .../create_analytics_form/job_type.tsx | 64 +++++ .../create_analytics_form/messages.tsx | 30 +++ .../create_analytics_modal.tsx | 91 ------- .../hooks/use_create_analytics_form/index.ts | 6 +- .../hooks/use_create_analytics_form/state.ts | 44 +++- .../use_create_analytics_form.ts | 10 +- .../ml_api_service/data_frame_analytics.js | 7 + .../public/services/ml_api_service/index.d.ts | 1 + .../ml/server/client/elasticsearch_ml.js | 10 + .../ml/server/routes/data_frame_analytics.js | 13 + .../translations/translations/zh-CN.json | 9 - 32 files changed, 874 insertions(+), 175 deletions(-) create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/error_callout.tsx create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx rename x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/{analytics_management/components/create_analytics_modal => analytics_exploration/components/regression_exploration}/index.ts (78%) create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_create_analytics_flyout.scss create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_index.scss rename x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/{create_analytics_modal/create_analytics_modal.test.tsx => create_analytics_flyout/create_analytics_flyout.test.tsx} (79%) create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.tsx create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/index.ts create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/job_type.tsx create mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/messages.tsx delete mode 100644 x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.tsx diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/_index.scss b/x-pack/legacy/plugins/ml/public/data_frame_analytics/_index.scss index e32b15aa13bfa..4c0ecd8f9ce44 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/_index.scss +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/_index.scss @@ -1,3 +1,4 @@ @import 'pages/analytics_exploration/components/exploration/index'; @import 'pages/analytics_management/components/analytics_list/index'; @import 'pages/analytics_management/components/create_analytics_form/index'; +@import 'pages/analytics_management/components/create_analytics_flyout/index'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/analytics.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/analytics.ts index fe1856866e811..f84478a327354 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/analytics.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/analytics.ts @@ -24,13 +24,24 @@ interface RegressionAnalysis { }; } +export interface RegressionEvaluateResponse { + regression: { + mean_squared_error: { + error: number; + }; + r_squared: { + value: number; + }; + }; +} + interface GenericAnalysis { [key: string]: Record; } type AnalysisConfig = OutlierAnalysis | RegressionAnalysis | GenericAnalysis; -enum ANALYSIS_CONFIG_TYPE { +export enum ANALYSIS_CONFIG_TYPE { OUTLIER_DETECTION = 'outlier_detection', REGRESSION = 'regression', UNKNOWN = 'unknown', @@ -46,11 +57,24 @@ export const getAnalysisType = (analysis: AnalysisConfig) => { return ANALYSIS_CONFIG_TYPE.UNKNOWN; }; +export const getDependentVar = (analysis: AnalysisConfig) => { + let depVar; + if (isRegressionAnalysis(analysis)) { + depVar = analysis.regression.dependent_variable; + } + return depVar; +}; + export const isOutlierAnalysis = (arg: any): arg is OutlierAnalysis => { const keys = Object.keys(arg); return keys.length === 1 && keys[0] === ANALYSIS_CONFIG_TYPE.OUTLIER_DETECTION; }; +export const isRegressionAnalysis = (arg: any): arg is RegressionAnalysis => { + const keys = Object.keys(arg); + return keys.length === 1 && keys[0] === ANALYSIS_CONFIG_TYPE.REGRESSION; +}; + export interface DataFrameAnalyticsConfig { id: DataFrameAnalyticsId; // Description attribute is not supported yet diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/index.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/index.ts index cf7d44ab48b4c..16c55a739711f 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/index.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/common/index.ts @@ -6,6 +6,7 @@ export { getAnalysisType, + getDependentVar, isOutlierAnalysis, refreshAnalyticsList$, useRefreshAnalyticsList, @@ -14,6 +15,8 @@ export { IndexName, IndexPattern, REFRESH_ANALYTICS_LIST_STATE, + ANALYSIS_CONFIG_TYPE, + RegressionEvaluateResponse, } from './analytics'; export { diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/error_callout.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/error_callout.tsx new file mode 100644 index 0000000000000..f7b17079e5046 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/error_callout.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, Fragment } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiCallOut } from '@elastic/eui'; + +interface Props { + error: string; +} + +export const ErrorCallout: FC = ({ error }) => { + let errorCallout = ( + +

{error}

+ + ); + // Job was created but not started so the destination index has not been created + if (error.includes('index_not_found')) { + errorCallout = ( + +

+ {i18n.translate('xpack.ml.dataframe.analytics.regressionExploration.noIndexCalloutBody', { + defaultMessage: + 'The query for the index returned no results. Please make sure the destination index exists and contains documents.', + })} +

+
+ ); + } else if (error.includes('No documents found')) { + // Job was started but no results have been written yet + errorCallout = ( + +

+ {i18n.translate('xpack.ml.dataframe.analytics.regressionExploration.noDataCalloutBody', { + defaultMessage: + 'The query for the index returned no results. Please make sure the job has been completed and the index contains documents.', + })} +

+
+ ); + } + + return {errorCallout}; +}; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx new file mode 100644 index 0000000000000..a78a4747e15ef --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/evaluate_panel.tsx @@ -0,0 +1,243 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, Fragment, useEffect, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSpacer, EuiStat, EuiTitle } from '@elastic/eui'; +import { idx } from '@kbn/elastic-idx'; +import { ml } from '../../../../../services/ml_api_service'; +import { getErrorMessage } from '../../../analytics_management/hooks/use_create_analytics_form'; +import { RegressionEvaluateResponse } from '../../../../common'; + +import { ErrorCallout } from './error_callout'; + +interface Props { + jobId: string; + index: string; + dependentVariable: string; +} + +interface LoadEvaluateResult { + success: boolean; + eval: RegressionEvaluateResponse | null; + error: string | null; +} + +interface Eval { + meanSquaredError: number | ''; + rSquared: number | ''; + error: null | string; +} + +const meanSquaredErrorText = i18n.translate( + 'xpack.ml.dataframe.analytics.regressionExploration.meanSquaredErrorText', + { + defaultMessage: 'Mean squared error', + } +); +const rSquaredText = i18n.translate( + 'xpack.ml.dataframe.analytics.regressionExploration.rSquaredText', + { + defaultMessage: 'R squared', + } +); +const defaultEval: Eval = { meanSquaredError: '', rSquared: '', error: null }; +const DEFAULT_SIG_FIGS = 3; + +function getValuesFromResponse(response: RegressionEvaluateResponse) { + let meanSquaredError = idx(response, _ => _.regression.mean_squared_error.error) as number; + if (meanSquaredError) { + meanSquaredError = Number(meanSquaredError.toPrecision(DEFAULT_SIG_FIGS)); + } + + let rSquared = idx(response, _ => _.regression.r_squared.value) as number; + if (rSquared) { + rSquared = Number(rSquared.toPrecision(DEFAULT_SIG_FIGS)); + } + + return { meanSquaredError, rSquared }; +} + +export const EvaluatePanel: FC = ({ jobId, index, dependentVariable }) => { + const [trainingEval, setTrainingEval] = useState(defaultEval); + const [generalizationEval, setGeneralizationEval] = useState(defaultEval); + const [isLoadingTraining, setIsLoadingTraining] = useState(false); + const [isLoadingGeneralization, setIsLoadingGeneralization] = useState(false); + + const loadEvalData = async (isTraining: boolean) => { + const results: LoadEvaluateResult = { success: false, eval: null, error: null }; + + const config = { + index, + query: { + term: { + 'ml.is_training': { + value: isTraining, + }, + }, + }, + evaluation: { + regression: { + actual_field: dependentVariable, + predicted_field: `ml.${dependentVariable}_prediction`, + metrics: { + r_squared: {}, + mean_squared_error: {}, + }, + }, + }, + }; + + try { + const evalResult = await ml.dataFrameAnalytics.evaluateDataFrameAnalytics(config); + results.success = true; + results.eval = evalResult; + return results; + } catch (e) { + results.error = getErrorMessage(e); + return results; + } + }; + + const loadData = async () => { + setIsLoadingGeneralization(true); + setIsLoadingTraining(true); + + const genErrorEval = await loadEvalData(false); + + if (genErrorEval.success === true && genErrorEval.eval) { + const { meanSquaredError, rSquared } = getValuesFromResponse(genErrorEval.eval); + setGeneralizationEval({ + meanSquaredError, + rSquared, + error: null, + }); + setIsLoadingGeneralization(false); + } else { + setIsLoadingGeneralization(false); + setGeneralizationEval({ + meanSquaredError: '', + rSquared: '', + error: genErrorEval.error, + }); + } + + const trainingErrorEval = await loadEvalData(true); + + if (trainingErrorEval.success === true && trainingErrorEval.eval) { + const { meanSquaredError, rSquared } = getValuesFromResponse(trainingErrorEval.eval); + setTrainingEval({ + meanSquaredError, + rSquared, + error: null, + }); + setIsLoadingTraining(false); + } else { + setIsLoadingTraining(false); + setTrainingEval({ + meanSquaredError: '', + rSquared: '', + error: genErrorEval.error, + }); + } + }; + + useEffect(() => { + loadData(); + }, []); + + return ( + + + + {i18n.translate('xpack.ml.dataframe.analytics.regressionExploration.jobIdTitle', { + defaultMessage: 'Job ID {jobId}', + values: { jobId }, + })} + + + + + + + + {i18n.translate( + 'xpack.ml.dataframe.analytics.regressionExploration.generalizationErrorTitle', + { + defaultMessage: 'Generalization error', + } + )} + + + + + {generalizationEval.error !== null && } + {generalizationEval.error === null && ( + + + + + + + + + )} + + + + + + {i18n.translate( + 'xpack.ml.dataframe.analytics.regressionExploration.trainingErrorTitle', + { + defaultMessage: 'Training error', + } + )} + + + + + {trainingEval.error !== null && } + {trainingEval.error === null && ( + + + + + + + + + )} + + + + + ); +}; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/index.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/index.ts similarity index 78% rename from x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/index.ts rename to x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/index.ts index 3713dd161143a..894834fed7c45 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/index.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/index.ts @@ -4,4 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -export { CreateAnalyticsModal } from './create_analytics_modal'; +export { RegressionExploration } from './regression_exploration'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx new file mode 100644 index 0000000000000..f6cb010c3f040 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/components/regression_exploration/regression_exploration.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, Fragment } from 'react'; +// import { i18n } from '@kbn/i18n'; +import { EuiSpacer } from '@elastic/eui'; + +import { EvaluatePanel } from './evaluate_panel'; +// import { ResultsTable } from './results_table'; + +interface Props { + jobId: string; + destIndex: string; + dependentVariable: string; +} + +export const RegressionExploration: FC = ({ jobId, destIndex, dependentVariable }) => { + return ( + + + + {/* */} + + ); +}; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx index 700be992a1080..ca448aaa7b938 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/directive.tsx @@ -50,7 +50,12 @@ module.directive('mlDataFrameAnalyticsExploration', ($injector: InjectorService) ReactDOM.render( - + , element[0] diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/page.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/page.tsx index dca4e7830c3c9..ad12404419133 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/page.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_exploration/page.tsx @@ -23,8 +23,16 @@ import { import { NavigationMenu } from '../../../components/navigation_menu/navigation_menu'; import { Exploration } from './components/exploration'; +import { RegressionExploration } from './components/regression_exploration'; -export const Page: FC<{ jobId: string }> = ({ jobId }) => ( +import { ANALYSIS_CONFIG_TYPE } from '../../common/analytics'; + +export const Page: FC<{ + jobId: string; + analysisType: string; + destIndex: string; + depVar: string; +}> = ({ jobId, analysisType, destIndex, depVar }) => ( @@ -58,7 +66,10 @@ export const Page: FC<{ jobId: string }> = ({ jobId }) => ( - + {analysisType === ANALYSIS_CONFIG_TYPE.OUTLIER_DETECTION && } + {analysisType === ANALYSIS_CONFIG_TYPE.REGRESSION && ( + + )} diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx index 84845b6c1411d..e0e45eddfe171 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx @@ -28,7 +28,10 @@ interface DeleteActionProps { } export const DeleteAction: FC = ({ item }) => { - const disabled = item.stats.state === DATA_FRAME_TASK_STATE.STARTED; + const disabled = + item.stats.state === DATA_FRAME_TASK_STATE.STARTED || + item.stats.state === DATA_FRAME_TASK_STATE.ANALYZING || + item.stats.state === DATA_FRAME_TASK_STATE.REINDEXING; const canDeleteDataFrameAnalytics: boolean = checkPermission('canDeleteDataFrameAnalytics'); diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx index f2d19027e3430..19a86836251f2 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx @@ -13,7 +13,7 @@ import { createPermissionFailureMessage, } from '../../../../../privilege/check_privilege'; -import { isOutlierAnalysis } from '../../../../common/analytics'; +import { getAnalysisType, getDependentVar } from '../../../../common/analytics'; import { getResultsUrl, isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from './common'; import { stopAnalytics } from '../../services/analytics_service'; @@ -24,10 +24,15 @@ import { DeleteAction } from './action_delete'; export const AnalyticsViewAction = { isPrimary: true, render: (item: DataFrameAnalyticsListRow) => { + const analysisType = getAnalysisType(item.config.analysis); + const destIndex = item.config.dest.index; + const dependentVariable = getDependentVar(item.config.analysis); + + const url = getResultsUrl(item.id, analysisType, destIndex, dependentVariable); + return ( (window.location.href = getResultsUrl(item.id))} + onClick={() => (window.location.href = url)} size="xs" color="text" iconType="visTable" diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts index c8dd101af8ab1..fa2f6719bcb8e 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts @@ -5,6 +5,7 @@ */ import { DataFrameAnalyticsId, DataFrameAnalyticsConfig } from '../../../../common'; +import { ANALYSIS_CONFIG_TYPE } from '../../../../common/analytics'; export enum DATA_FRAME_TASK_STATE { ANALYZING = 'analyzing', @@ -107,6 +108,17 @@ export function isCompletedAnalyticsJob(stats: DataFrameAnalyticsStats) { return stats.state === DATA_FRAME_TASK_STATE.STOPPED && progress === 100; } -export function getResultsUrl(jobId: string) { - return `ml#/data_frame_analytics/exploration?_g=(ml:(jobId:${jobId}))`; +export function getResultsUrl( + jobId: string, + analysisType: string, + destIndex: string = '', + dependentVariable: string = '' +) { + const destIndexParam = `,destIndex:${destIndex}`; + const depVarParam = `,depVar:${dependentVariable}`; + const isRegression = analysisType === ANALYSIS_CONFIG_TYPE.REGRESSION; + + return `ml#/data_frame_analytics/exploration?_g=(ml:(jobId:${jobId},analysisType:${analysisType}${ + isRegression && destIndex !== '' ? destIndexParam : '' + }${isRegression && dependentVariable !== '' ? depVarParam : ''}))`; } diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_advanced_editor/create_analytics_advanced_editor.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_advanced_editor/create_analytics_advanced_editor.tsx index 9c4731698e07a..9a5344cd1f984 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_advanced_editor/create_analytics_advanced_editor.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_advanced_editor/create_analytics_advanced_editor.tsx @@ -163,9 +163,12 @@ export const CreateAnalyticsAdvancedEditor: FC = ({ ac error={ createIndexPattern && destinationIndexPatternTitleExists && [ - i18n.translate('xpack.ml.dataframe.analytics.create.indexPatternTitleError', { - defaultMessage: 'An index pattern with this title already exists.', - }), + i18n.translate( + 'xpack.ml.dataframe.analytics.create.indexPatternAlreadyExistsError', + { + defaultMessage: 'An index pattern with this title already exists.', + } + ), ] } > diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_button/create_analytics_button.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_button/create_analytics_button.tsx index 0d4c606db261e..fba37c48305d1 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_button/create_analytics_button.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_button/create_analytics_button.tsx @@ -16,7 +16,7 @@ import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form' import { CreateAnalyticsAdvancedEditor } from '../create_analytics_advanced_editor'; import { CreateAnalyticsForm } from '../create_analytics_form'; -import { CreateAnalyticsModal } from '../create_analytics_modal'; +import { CreateAnalyticsFlyout } from '../create_analytics_flyout'; export const CreateAnalyticsButton: FC = props => { const { disabled, isAdvancedEditorEnabled, isModalVisible } = props.state; @@ -52,10 +52,10 @@ export const CreateAnalyticsButton: FC = props => { {button} {isModalVisible && ( - + {isAdvancedEditorEnabled === false && } {isAdvancedEditorEnabled === true && } - + )} ); diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_create_analytics_flyout.scss b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_create_analytics_flyout.scss new file mode 100644 index 0000000000000..e6c6ffafc446a --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_create_analytics_flyout.scss @@ -0,0 +1,3 @@ +.mlAnalyticsCreateFlyout__footerButton { + float: right; +} diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_index.scss b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_index.scss new file mode 100644 index 0000000000000..668b35f8370d2 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/_index.scss @@ -0,0 +1 @@ +@import 'create_analytics_flyout'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.test.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.test.tsx similarity index 79% rename from x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.test.tsx rename to x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.test.tsx index 7d505a86d08a9..2bcc7305c5df7 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.test.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.test.tsx @@ -8,7 +8,7 @@ import { mount } from 'enzyme'; import React from 'react'; import { mountHook } from '../../../../../../../../../test_utils/enzyme_helpers'; -import { CreateAnalyticsModal } from './create_analytics_modal'; +import { CreateAnalyticsFlyout } from './create_analytics_flyout'; import { KibanaContext } from '../../../../../contexts/kibana'; import { kibanaContextValueMock } from '../../../../../contexts/kibana/__mocks__/kibana_context_value'; @@ -34,12 +34,14 @@ jest.mock('react', () => { return { ...r, memo: (x: any) => x }; }); -describe('Data Frame Analytics: ', () => { +describe('Data Frame Analytics: ', () => { test('Minimal initialization', () => { const { getLastHookValue } = getMountedHook(); const props = getLastHookValue(); - const wrapper = mount(); + const wrapper = mount(); - expect(wrapper.find('EuiModalHeaderTitle').text()).toBe('Create analytics job'); + expect(wrapper.find('[data-test-subj="mlDataFrameAnalyticsFlyoutHeaderTitle"]').text()).toBe( + 'Create analytics job' + ); }); }); diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.tsx new file mode 100644 index 0000000000000..0d722b9cf0090 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/create_analytics_flyout.tsx @@ -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; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC } from 'react'; + +import { + EuiButton, + EuiButtonEmpty, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutHeader, + EuiFlyoutFooter, + EuiTitle, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form'; + +export const CreateAnalyticsFlyout: FC = ({ + actions, + children, + state, +}) => { + const { closeModal, createAnalyticsJob, startAnalyticsJob } = actions; + const { isJobCreated, isJobStarted, isModalButtonDisabled, isValid } = state; + + return ( + + + +

+ {i18n.translate('xpack.ml.dataframe.analytics.create.flyoutHeaderTitle', { + defaultMessage: 'Create analytics job', + })} +

+
+
+ {children} + + {(!isJobCreated || !isJobStarted) && ( + + {i18n.translate('xpack.ml.dataframe.analytics.create.flyoutCancelButton', { + defaultMessage: 'Cancel', + })} + + )} + + {!isJobCreated && !isJobStarted && ( + + {i18n.translate('xpack.ml.dataframe.analytics.create.flyoutCreateButton', { + defaultMessage: 'Create', + })} + + )} + {isJobCreated && !isJobStarted && ( + + {i18n.translate('xpack.ml.dataframe.analytics.create.flyoutStartButton', { + defaultMessage: 'Start', + })} + + )} + {isJobCreated && isJobStarted && ( + + {i18n.translate('xpack.ml.dataframe.analytics.create.flyoutCloseButton', { + defaultMessage: 'Close', + })} + + )} + +
+ ); +}; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/index.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/index.ts new file mode 100644 index 0000000000000..3a25359373aa6 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_flyout/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { CreateAnalyticsFlyout } from './create_analytics_flyout'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx index d9118fab267d2..b1e7ec33c88ba 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.test.tsx @@ -38,17 +38,24 @@ describe('Data Frame Analytics: ', () => { test('Minimal initialization', () => { const { getLastHookValue } = getMountedHook(); const props = getLastHookValue(); - const wrapper = mount(); + const wrapper = mount( + + + + ); const euiFormRows = wrapper.find('EuiFormRow'); - expect(euiFormRows.length).toBe(5); + expect(euiFormRows.length).toBe(6); const row1 = euiFormRows.at(0); expect(row1.find('label').text()).toBe('Job type'); - expect(row1.find('EuiText').text()).toBe('Outlier detection'); - expect(row1.find('EuiLink').text()).toBe('advanced editor'); + + const options = row1.find('option'); + expect(options.at(0).props().value).toBe(''); + expect(options.at(1).props().value).toBe('outlier_detection'); + expect(options.at(2).props().value).toBe('regression'); const row2 = euiFormRows.at(1); - expect(row2.find('label').text()).toBe('Job ID'); + expect(row2.find('label').text()).toBe('Enable advanced editor'); }); }); diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx index 39e9ce0a81e50..a32631c707f55 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/create_analytics_form.tsx @@ -4,47 +4,67 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, FC } from 'react'; +import React, { Fragment, FC, useEffect } from 'react'; import { - EuiCallOut, EuiComboBox, EuiForm, EuiFieldText, EuiFormRow, EuiLink, - EuiSpacer, + EuiRange, EuiSwitch, - EuiText, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; import { metadata } from 'ui/metadata'; -import { INDEX_PATTERN_ILLEGAL_CHARACTERS } from 'ui/index_patterns'; +import { IndexPattern, INDEX_PATTERN_ILLEGAL_CHARACTERS } from 'ui/index_patterns'; +import { Field, EVENT_RATE_FIELD_ID } from '../../../../../../common/types/fields'; +import { newJobCapsService } from '../../../../../services/new_job_capabilities_service'; +import { useKibanaContext } from '../../../../../contexts/kibana'; import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form'; +import { JOB_TYPES } from '../../hooks/use_create_analytics_form/state'; import { JOB_ID_MAX_LENGTH } from '../../../../../../common/constants/validation'; +import { Messages } from './messages'; +import { JobType } from './job_type'; // based on code used by `ui/index_patterns` internally // remove the space character from the list of illegal characters INDEX_PATTERN_ILLEGAL_CHARACTERS.pop(); const characterList = INDEX_PATTERN_ILLEGAL_CHARACTERS.join(', '); +const NUMERICAL_FIELD_TYPES = new Set([ + 'long', + 'integer', + 'short', + 'byte', + 'double', + 'float', + 'half_float', + 'scaled_float', +]); + export const CreateAnalyticsForm: FC = ({ actions, state }) => { const { setFormState } = actions; + const kibanaContext = useKibanaContext(); const { form, + indexPatternsMap, indexPatternsWithNumericFields, indexPatternTitles, + isAdvancedEditorEnabled, isJobCreated, requestMessages, } = state; const { createIndexPattern, + dependentVariable, + dependentVariableFetchFail, + dependentVariableOptions, destinationIndex, destinationIndexNameEmpty, destinationIndexNameExists, @@ -55,54 +75,78 @@ export const CreateAnalyticsForm: FC = ({ actions, sta jobIdExists, jobIdValid, jobIdInvalidMaxLength, + jobType, + loadingDepFieldOptions, sourceIndex, sourceIndexNameEmpty, sourceIndexNameValid, + trainingPercent, } = form; + const loadDependentFieldOptions = async () => { + setFormState({ loadingDepFieldOptions: true, dependentVariable: '' }); + try { + const indexPattern: IndexPattern = await kibanaContext.indexPatterns.get( + indexPatternsMap[sourceIndex] + ); + + if (indexPattern !== undefined) { + await newJobCapsService.initializeFromIndexPattern(indexPattern); + // Get fields and filter for numeric + const { fields } = newJobCapsService; + const options: Array<{ label: string }> = []; + + fields.forEach((field: Field) => { + if (NUMERICAL_FIELD_TYPES.has(field.type) && field.id !== EVENT_RATE_FIELD_ID) { + options.push({ label: field.id }); + } + }); + + setFormState({ + dependentVariableOptions: options, + loadingDepFieldOptions: false, + dependentVariableFetchFail: false, + }); + } + } catch (e) { + // TODO: ensure error messages show up correctly + setFormState({ loadingDepFieldOptions: false, dependentVariableFetchFail: true }); + } + }; + + useEffect(() => { + if (jobType === JOB_TYPES.REGRESSION && sourceIndexNameEmpty === false) { + loadDependentFieldOptions(); + } + }, [sourceIndex, jobType, sourceIndexNameEmpty]); + return ( - {requestMessages.map((requestMessage, i) => ( - - - {requestMessage.error !== undefined ?

{requestMessage.error}

: null} -
- -
- ))} + {!isJobCreated && ( + - - - ), - }} - /> - } + helpText={i18n.translate( + 'xpack.ml.dataframe.analytics.create.enableAdvancedEditorHelpText', + { + defaultMessage: 'You cannot switch back to this form from the advanced editor.', + } + )} > - - {i18n.translate('xpack.ml.dataframe.analytics.create.outlierDetectionText', { - defaultMessage: 'Outlier detection', - })} - + = ({ actions, sta isInvalid={(!jobIdEmpty && !jobIdValid) || jobIdExists} /> + {/* TODO: Does the source index message below apply for regression jobs as well? Same for all validation messages below */} = ({ actions, sta isInvalid={!destinationIndexNameEmpty && !destinationIndexNameValid} /> + {jobType === JOB_TYPES.REGRESSION && ( + + + {i18n.translate( + 'xpack.ml.dataframe.analytics.create.dependentVariableOptionsFetchError', + { + defaultMessage: + 'There was a problem fetching fields. Please refresh the page and try again.', + } + )} + , + ] + } + > + + setFormState({ dependentVariable: selectedOptions[0].label || '' }) + } + isClearable={false} + isInvalid={dependentVariable === ''} + /> + + + setFormState({ trainingPercent: e.target.value })} + /> + + + )} = ({ type, setFormState }) => { + const outlierHelpText = i18n.translate( + 'xpack.ml.dataframe.analytics.create.outlierDetectionHelpText', + { + defaultMessage: + 'Outlier detection jobs require a source index that is mapped as a table-like data structure and will only analyze numeric and boolean fields. Please use the advanced editor to apply custom options such as the model memory limit and analysis type.', + } + ); + + const regressionHelpText = i18n.translate( + 'xpack.ml.dataframe.analytics.create.outlierRegressionHelpText', + { + defaultMessage: + 'Regression jobs will only analyze numeric fields. Please use the advanced editor to apply custom options such as the model memory limit and prediction field name.', + } + ); + + const helpText = { + outlier_detection: outlierHelpText, + regression: regressionHelpText, + }; + + return ( + + + ({ + value: jobType, + text: jobType.replace(/_/g, ' '), + }))} + value={type} + hasNoInitialSelection={true} + onChange={e => { + const value = e.target.value as AnalyticsJobType; + setFormState({ jobType: value }); + }} + /> + + + ); +}; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/messages.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/messages.tsx new file mode 100644 index 0000000000000..f228d8fe90097 --- /dev/null +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_form/messages.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { Fragment, FC } from 'react'; + +import { EuiCallOut, EuiSpacer } from '@elastic/eui'; + +import { FormMessage } from '../../hooks/use_create_analytics_form/state'; // State + +interface Props { + messages: any; // TODO: fix --> something like State['requestMessages']; +} + +export const Messages: FC = ({ messages }) => + messages.map((requestMessage: FormMessage, i: number) => ( + + + {requestMessage.error !== undefined ?

{requestMessage.error}

: null} +
+ +
+ )); diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.tsx deleted file mode 100644 index 5f735fff73536..0000000000000 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/create_analytics_modal/create_analytics_modal.tsx +++ /dev/null @@ -1,91 +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; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { FC } from 'react'; - -import { - EuiButton, - EuiButtonEmpty, - EuiModal, - EuiModalBody, - EuiModalFooter, - EuiModalHeader, - EuiModalHeaderTitle, - EuiOverlayMask, -} from '@elastic/eui'; - -import { i18n } from '@kbn/i18n'; - -import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form'; - -export const CreateAnalyticsModal: FC = ({ - actions, - children, - state, -}) => { - const { closeModal, createAnalyticsJob, startAnalyticsJob } = actions; - const { - isAdvancedEditorEnabled, - isJobCreated, - isJobStarted, - isModalButtonDisabled, - isValid, - } = state; - - const width = isAdvancedEditorEnabled ? '640px' : '450px'; - - return ( - - - - - {i18n.translate('xpack.ml.dataframe.analytics.create.modalHeaderTitle', { - defaultMessage: 'Create analytics job', - })} - - - - {children} - - - {(!isJobCreated || !isJobStarted) && ( - - {i18n.translate('xpack.ml.dataframe.analytics.create.modalCancelButton', { - defaultMessage: 'Cancel', - })} - - )} - - {!isJobCreated && !isJobStarted && ( - - {i18n.translate('xpack.ml.dataframe.analytics.create.modalCreateButton', { - defaultMessage: 'Create', - })} - - )} - {isJobCreated && !isJobStarted && ( - - {i18n.translate('xpack.ml.dataframe.analytics.create.modalStartButton', { - defaultMessage: 'Start', - })} - - )} - {isJobCreated && isJobStarted && ( - - {i18n.translate('xpack.ml.dataframe.analytics.create.modalCloseButton', { - defaultMessage: 'Close', - })} - - )} - - - - ); -}; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/index.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/index.ts index 9df0b542f50a1..0eb3d7180c200 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/index.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/index.ts @@ -4,4 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -export { useCreateAnalyticsForm, CreateAnalyticsFormProps } from './use_create_analytics_form'; +export { + useCreateAnalyticsForm, + CreateAnalyticsFormProps, + getErrorMessage, +} from './use_create_analytics_form'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts index 23a5380667636..cddc3577413cf 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/state.ts @@ -9,21 +9,32 @@ import { checkPermission } from '../../../../../privilege/check_privilege'; import { DataFrameAnalyticsId, DataFrameAnalyticsConfig } from '../../../../common'; -const ANALYTICS_DETAULT_MODEL_MEMORY_LIMIT = '50mb'; +const OUTLIER_DETECTION_DEFAULT_MODEL_MEMORY_LIMIT = '50mb'; +const REGRESSION_DEFAULT_MODEL_MEMORY_LIMIT = '100mb'; export type EsIndexName = string; +export type DependentVariable = string; export type IndexPatternTitle = string; +export type AnalyticsJobType = JOB_TYPES | undefined; export interface FormMessage { error?: string; message: string; } +export enum JOB_TYPES { + OUTLIER_DETECTION = 'outlier_detection', + REGRESSION = 'regression', +} + export interface State { advancedEditorMessages: FormMessage[]; advancedEditorRawString: string; form: { createIndexPattern: boolean; + dependentVariable: DependentVariable; + dependentVariableFetchFail: boolean; + dependentVariableOptions: Array<{ label: DependentVariable }> | []; destinationIndex: EsIndexName; destinationIndexNameExists: boolean; destinationIndexNameEmpty: boolean; @@ -34,12 +45,16 @@ export interface State { jobIdEmpty: boolean; jobIdInvalidMaxLength: boolean; jobIdValid: boolean; + jobType: AnalyticsJobType; + loadingDepFieldOptions: boolean; sourceIndex: EsIndexName; sourceIndexNameEmpty: boolean; sourceIndexNameValid: boolean; + trainingPercent: number; }; disabled: boolean; indexNames: EsIndexName[]; + indexPatternsMap: any; // TODO: update type indexPatternTitles: IndexPatternTitle[]; indexPatternsWithNumericFields: IndexPatternTitle[]; isAdvancedEditorEnabled: boolean; @@ -58,6 +73,9 @@ export const getInitialState = (): State => ({ advancedEditorRawString: '', form: { createIndexPattern: false, + dependentVariable: '', + dependentVariableFetchFail: false, + dependentVariableOptions: [], destinationIndex: '', destinationIndexNameExists: false, destinationIndexNameEmpty: true, @@ -68,15 +86,19 @@ export const getInitialState = (): State => ({ jobIdEmpty: true, jobIdInvalidMaxLength: false, jobIdValid: false, + jobType: undefined, + loadingDepFieldOptions: false, sourceIndex: '', sourceIndexNameEmpty: true, sourceIndexNameValid: false, + trainingPercent: 80, }, jobConfig: {}, disabled: !checkPermission('canCreateDataFrameAnalytics') || !checkPermission('canStartStopDataFrameAnalytics'), indexNames: [], + indexPatternsMap: {}, indexPatternTitles: [], indexPatternsWithNumericFields: [], isAdvancedEditorEnabled: false, @@ -92,7 +114,12 @@ export const getInitialState = (): State => ({ export const getJobConfigFromFormState = ( formState: State['form'] ): DeepPartial => { - return { + const modelMemoryLimit = + formState.jobType === JOB_TYPES.REGRESSION + ? REGRESSION_DEFAULT_MODEL_MEMORY_LIMIT + : OUTLIER_DETECTION_DEFAULT_MODEL_MEMORY_LIMIT; + + const jobConfig: DeepPartial = { source: { // If a Kibana index patterns includes commas, we need to split // the into an array of indices to be in the correct format for @@ -110,6 +137,17 @@ export const getJobConfigFromFormState = ( analysis: { outlier_detection: {}, }, - model_memory_limit: ANALYTICS_DETAULT_MODEL_MEMORY_LIMIT, + model_memory_limit: modelMemoryLimit, }; + + if (formState.jobType === JOB_TYPES.REGRESSION) { + jobConfig.analysis = { + regression: { + dependent_variable: formState.dependentVariable, + training_percent: formState.trainingPercent, + }, + }; + } + + return jobConfig; }; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts index b83a43c3ffa86..18db5bf2205c1 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/hooks/use_create_analytics_form/use_create_analytics_form.ts @@ -69,6 +69,7 @@ export const useCreateAnalyticsForm = () => { const setIndexPatternTitles = (payload: { indexPatternTitles: IndexPatternTitle[]; indexPatternsWithNumericFields: IndexPatternTitle[]; + indexPatternsMap: any; // TODO: update this type }) => dispatch({ type: ACTION.SET_INDEX_PATTERN_TITLES, payload }); const setIsJobCreated = (isJobCreated: boolean) => @@ -235,6 +236,7 @@ export const useCreateAnalyticsForm = () => { // able to identify outliers if there are no numeric fields present. const ids = await kibanaContext.indexPatterns.getIds(true); const indexPatternsWithNumericFields: IndexPatternTitle[] = []; + const indexPatternsMap = {}; // TODO: add type, add to state to keep track of ids .filter(f => !!f) .forEach(async id => { @@ -246,9 +248,15 @@ export const useCreateAnalyticsForm = () => { .includes('number') ) { indexPatternsWithNumericFields.push(indexPattern.title); + // @ts-ignore TODO: fix this type + indexPatternsMap[indexPattern.title] = id; } }); - setIndexPatternTitles({ indexPatternTitles, indexPatternsWithNumericFields }); + setIndexPatternTitles({ + indexPatternTitles, + indexPatternsWithNumericFields, + indexPatternsMap, + }); } catch (e) { addRequestMessage({ error: getErrorMessage(e), diff --git a/x-pack/legacy/plugins/ml/public/services/ml_api_service/data_frame_analytics.js b/x-pack/legacy/plugins/ml/public/services/ml_api_service/data_frame_analytics.js index e49ccd2d811e0..c5147fc4af7d7 100644 --- a/x-pack/legacy/plugins/ml/public/services/ml_api_service/data_frame_analytics.js +++ b/x-pack/legacy/plugins/ml/public/services/ml_api_service/data_frame_analytics.js @@ -40,6 +40,13 @@ export const dataFrameAnalytics = { data: analyticsConfig }); }, + evaluateDataFrameAnalytics(evaluateConfig) { + return http({ + url: `${basePath}/data_frame/_evaluate`, + method: 'POST', + data: evaluateConfig + }); + }, deleteDataFrameAnalytics(analyticsId) { return http({ url: `${basePath}/data_frame/analytics/${analyticsId}`, diff --git a/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts b/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts index 7962fedd20fee..582c1475f63c4 100644 --- a/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts +++ b/x-pack/legacy/plugins/ml/public/services/ml_api_service/index.d.ts @@ -45,6 +45,7 @@ declare interface Ml { getDataFrameAnalytics(analyticsId?: string): Promise; getDataFrameAnalyticsStats(analyticsId?: string): Promise; createDataFrameAnalytics(analyticsId: string, analyticsConfig: any): Promise; + evaluateDataFrameAnalytics(evaluateConfig: any): Promise; deleteDataFrameAnalytics(analyticsId: string): Promise; startDataFrameAnalytics(analyticsId: string): Promise; stopDataFrameAnalytics( diff --git a/x-pack/legacy/plugins/ml/server/client/elasticsearch_ml.js b/x-pack/legacy/plugins/ml/server/client/elasticsearch_ml.js index 87d3215a426ea..ae2a64e0108f3 100644 --- a/x-pack/legacy/plugins/ml/server/client/elasticsearch_ml.js +++ b/x-pack/legacy/plugins/ml/server/client/elasticsearch_ml.js @@ -160,6 +160,16 @@ export const elasticsearchJsPlugin = (Client, config, components) => { method: 'PUT' }); + ml.evaluateDataFrameAnalytics = ca({ + urls: [ + { + fmt: '/_ml/data_frame/_evaluate', + } + ], + needBody: true, + method: 'POST' + }); + ml.deleteDataFrameAnalytics = ca({ urls: [ { diff --git a/x-pack/legacy/plugins/ml/server/routes/data_frame_analytics.js b/x-pack/legacy/plugins/ml/server/routes/data_frame_analytics.js index 0605990af310b..41f08736a78e5 100644 --- a/x-pack/legacy/plugins/ml/server/routes/data_frame_analytics.js +++ b/x-pack/legacy/plugins/ml/server/routes/data_frame_analytics.js @@ -78,6 +78,19 @@ export function dataFrameAnalyticsRoutes({ commonRouteConfig, elasticsearchPlugi } }); + route({ + method: 'POST', + path: '/api/ml/data_frame/_evaluate', + handler(request) { + const callWithRequest = callWithRequestFactory(elasticsearchPlugin, request); + return callWithRequest('ml.evaluateDataFrameAnalytics', { body: request.payload }) + .catch(resp => wrapError(resp)); + }, + config: { + ...commonRouteConfig + } + }); + route({ method: 'DELETE', path: '/api/ml/data_frame/analytics/{analyticsId}', diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 5670102deacf8..5949c56b81f4a 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7258,27 +7258,18 @@ "xpack.ml.dataframe.analytics.create.errorGettingDataFrameIndexNames": "获取现有索引名称时发生错误:", "xpack.ml.dataframe.analytics.create.errorGettingIndexPatternTitles": "获取现有索引模式标题时发生错误:", "xpack.ml.dataframe.analytics.create.errorStartingDataFrameAnalyticsJob": "启动数据帧分析作业时发生错误:", - "xpack.ml.dataframe.analytics.create.indexPatternTitleError": "具有此名称的索引模式已存在。", "xpack.ml.dataframe.analytics.create.jobIdExistsError": "已存在具有此 ID 的分析作业。", "xpack.ml.dataframe.analytics.create.jobIdInputAriaLabel": "选择唯一的分析作业 ID。", "xpack.ml.dataframe.analytics.create.jobIdInvalidError": "只能包含小写字母数字字符(a-z 和 0-9)、连字符和下划线,并且必须以字母数字字符开头和结尾。", "xpack.ml.dataframe.analytics.create.jobIdLabel": "作业 ID", "xpack.ml.dataframe.analytics.create.jobIdPlaceholder": "作业 ID", - "xpack.ml.dataframe.analytics.create.jobTypeHelpText": "离群值检测作业需要映射为类表数据结构的源索引,将仅分析数值和布尔值字段。请使用“{advancedEditorButton}”应用定制选项,如模型内存限制和分析类型。您不能从高级编辑器切换回到此表单。", "xpack.ml.dataframe.analytics.create.jobTypeLabel": "作业类型", - "xpack.ml.dataframe.analytics.create.modalCancelButton": "取消", - "xpack.ml.dataframe.analytics.create.modalCloseButton": "关闭", - "xpack.ml.dataframe.analytics.create.modalCreateButton": "创建", - "xpack.ml.dataframe.analytics.create.modalHeaderTitle": "创建分析作业", - "xpack.ml.dataframe.analytics.create.modalStartButton": "开始", - "xpack.ml.dataframe.analytics.create.outlierDetectionText": "离群值检测", "xpack.ml.dataframe.analytics.create.sourceIndexHelpText": "此索引模式不包含任何数值类型字段。分析作业可能无法提供任何离群值。", "xpack.ml.dataframe.analytics.create.sourceIndexInputAriaLabel": "源索引模式或搜索。", "xpack.ml.dataframe.analytics.create.sourceIndexInvalidError": "源索引名称无效,其不能包含空格或以下字符:{characterList}", "xpack.ml.dataframe.analytics.create.sourceIndexLabel": "源索引", "xpack.ml.dataframe.analytics.create.sourceIndexPlaceholder": "选择源索引模式或已保存搜索。", "xpack.ml.dataframe.analytics.create.startDataFrameAnalyticsSuccessMessage": "分析作业 {jobId} 已启动。", - "xpack.ml.dataframe.analytics.create.switchToAdvancedEditorButton": "高级编辑器", "xpack.ml.dataframe.analytics.exploration.experimentalBadgeLabel": "实验性", "xpack.ml.dataframe.analytics.exploration.experimentalBadgeTooltipContent": "数据帧分析为实验功能。我们很乐意听取您的反馈意见。", "xpack.ml.dataframe.analytics.exploration.fieldSelection": "已选择 {selectedFieldsLength, number} 个{docFieldsCount, plural, one {字段} other {字段}},共 {docFieldsCount, number} 个", From 72ec06b81086b5be8c41a3082b3698a05702e7e8 Mon Sep 17 00:00:00 2001 From: "dave.snider@gmail.com" Date: Tue, 15 Oct 2019 09:22:22 -0700 Subject: [PATCH 41/46] logging to logs, per brand (#48178) --- .../home/components/__snapshots__/add_data.test.js.snap | 8 ++++---- .../kibana/public/home/components/add_data.js | 2 +- .../kibana/public/home/components/tutorial_directory.js | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/legacy/core_plugins/kibana/public/home/components/__snapshots__/add_data.test.js.snap b/src/legacy/core_plugins/kibana/public/home/components/__snapshots__/add_data.test.js.snap index ec0162b838b84..bbcb2096b6f64 100644 --- a/src/legacy/core_plugins/kibana/public/home/components/__snapshots__/add_data.test.js.snap +++ b/src/legacy/core_plugins/kibana/public/home/components/__snapshots__/add_data.test.js.snap @@ -106,7 +106,7 @@ exports[`apmUiEnabled 1`] = ` } layout="vertical" textAlign="center" - title="Logging" + title="Logs" titleElement="span" /> @@ -334,7 +334,7 @@ exports[`isNewKibanaInstance 1`] = ` } layout="vertical" textAlign="center" - title="Logging" + title="Logs" titleElement="span" /> @@ -599,7 +599,7 @@ exports[`mlEnabled 1`] = ` } layout="vertical" textAlign="center" - title="Logging" + title="Logs" titleElement="span" /> @@ -863,7 +863,7 @@ exports[`render 1`] = ` } layout="vertical" textAlign="center" - title="Logging" + title="Logs" titleElement="span" /> diff --git a/src/legacy/core_plugins/kibana/public/home/components/add_data.js b/src/legacy/core_plugins/kibana/public/home/components/add_data.js index cef2cd8d23ee7..f8c8e0ec8411f 100644 --- a/src/legacy/core_plugins/kibana/public/home/components/add_data.js +++ b/src/legacy/core_plugins/kibana/public/home/components/add_data.js @@ -58,7 +58,7 @@ const AddDataUi = ({ apmUiEnabled, isNewKibanaInstance, intl, mlEnabled }) => { const loggingData = { title: intl.formatMessage({ id: 'kbn.home.addData.logging.nameTitle', - defaultMessage: 'Logging', + defaultMessage: 'Logs', }), description: intl.formatMessage({ id: 'kbn.home.addData.logging.nameDescription', diff --git a/src/legacy/core_plugins/kibana/public/home/components/tutorial_directory.js b/src/legacy/core_plugins/kibana/public/home/components/tutorial_directory.js index 04d040b7c0bd0..eae549f8a6ac0 100644 --- a/src/legacy/core_plugins/kibana/public/home/components/tutorial_directory.js +++ b/src/legacy/core_plugins/kibana/public/home/components/tutorial_directory.js @@ -64,7 +64,7 @@ class TutorialDirectoryUi extends React.Component { id: 'logging', name: this.props.intl.formatMessage({ id: 'kbn.home.tutorial.tabs.loggingTitle', - defaultMessage: 'Logging', + defaultMessage: 'Logs', }), }, { From 74a115f26d8506567935bde8298c91db92e90fe8 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Tue, 15 Oct 2019 17:49:25 +0100 Subject: [PATCH 42/46] Select default supported operation if incompatible field selected (#47462) * Add pointer-events property to incompatible field * Adding compatible operation selection to the popover editor --- .../dimension_panel/dimension_panel.test.tsx | 34 +++++++++++++++++++ .../dimension_panel/popover_editor.tsx | 16 ++++++--- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/dimension_panel.test.tsx b/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/dimension_panel.test.tsx index c0b18a97f5d6b..fce72b61a0d70 100644 --- a/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/dimension_panel.test.tsx +++ b/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/dimension_panel.test.tsx @@ -574,6 +574,40 @@ describe('IndexPatternDimensionPanel', () => { ).not.toContain('Incompatible'); }); + it('should select compatible operation if field not compatible with selected operation', () => { + wrapper = mount(); + + openPopover(); + + wrapper.find('button[data-test-subj="lns-indexPatternDimension-avg"]').simulate('click'); + + const comboBox = wrapper.find(EuiComboBox); + const options = comboBox.prop('options'); + + //options[1][2] is a `source` field of type `string` which doesn't support `avg` operation + act(() => { + comboBox.prop('onChange')!([options![1].options![2]]); + }); + + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + sourceField: 'source', + operationType: 'terms', + // Other parts of this don't matter for this test + }), + }, + columnOrder: ['col1', 'col2'], + }, + }, + }); + }); + it('should indicate document compatibility with selected field operation', () => { const initialState: IndexPatternPrivateState = { ...state, diff --git a/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/popover_editor.tsx b/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/popover_editor.tsx index 2e2e4912b7cf3..080f80b1cc476 100644 --- a/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/popover_editor.tsx +++ b/x-pack/legacy/plugins/lens/public/indexpattern_plugin/dimension_panel/popover_editor.tsx @@ -288,17 +288,23 @@ export function PopoverEditor(props: PopoverEditorProps) { ('field' in choice && operationFieldSupportMatrix.operationByField[choice.field]) || []; - + let operation; + if (compatibleOperations.length > 0) { + operation = + incompatibleSelectedOperationType && + compatibleOperations.includes(incompatibleSelectedOperationType) + ? incompatibleSelectedOperationType + : compatibleOperations[0]; + } else if ('field' in choice) { + operation = choice.operationType; + } column = buildColumn({ columns: props.state.layers[props.layerId].columns, field: 'field' in choice ? fieldMap[choice.field] : undefined, indexPattern: currentIndexPattern, layerId: props.layerId, suggestedPriority: props.suggestedPriority, - op: - incompatibleSelectedOperationType || - ('field' in choice ? choice.operationType : undefined) || - compatibleOperations[0], + op: operation as OperationType, asDocumentOperation: choice.type === 'document', }); } From 01ac90f81e9b1264a169add6199c373f6c39d541 Mon Sep 17 00:00:00 2001 From: Josh Dover Date: Tue, 15 Oct 2019 11:53:36 -0500 Subject: [PATCH 43/46] Make generated type docs more explorable (#47069) --- .../kibana-plugin-public.contextsetup.md | 11 +- .../kibana-plugin-public.errortoastoptions.md | 2 + ...a-plugin-public.httperrorresponse.error.md | 2 +- .../kibana-plugin-public.httperrorresponse.md | 2 +- ...gin-public.httpfetcherror._constructor_.md | 23 -- .../kibana-plugin-public.httpfetcherror.md | 27 -- ...a-plugin-public.httpfetcherror.response.md | 11 - ...-plugin-public.httpfetchoptions.headers.md | 2 + .../kibana-plugin-public.httpfetchoptions.md | 7 +- ...public.httpfetchoptions.prependbasepath.md | 2 + ...na-plugin-public.httpfetchoptions.query.md | 2 + .../kibana-plugin-public.httphandler.md | 1 + ...gin-public.httpinterceptcontroller.halt.md | 15 -- ...n-public.httpinterceptcontroller.halted.md | 11 - ...a-plugin-public.httpinterceptcontroller.md | 24 -- .../kibana-plugin-public.httpinterceptor.md | 9 +- ...a-plugin-public.httpinterceptor.request.md | 6 +- ...gin-public.httpinterceptor.requesterror.md | 6 +- ...-plugin-public.httpinterceptor.response.md | 6 +- ...in-public.httpinterceptor.responseerror.md | 6 +- ...bana-plugin-public.httprequestinit.body.md | 2 + ...ana-plugin-public.httprequestinit.cache.md | 2 + ...ugin-public.httprequestinit.credentials.md | 2 + ...a-plugin-public.httprequestinit.headers.md | 2 + ...plugin-public.httprequestinit.integrity.md | 2 + ...plugin-public.httprequestinit.keepalive.md | 2 + .../kibana-plugin-public.httprequestinit.md | 27 +- ...na-plugin-public.httprequestinit.method.md | 2 + ...bana-plugin-public.httprequestinit.mode.md | 2 + ...-plugin-public.httprequestinit.redirect.md | 2 + ...-plugin-public.httprequestinit.referrer.md | 2 + ...n-public.httprequestinit.referrerpolicy.md | 2 + ...na-plugin-public.httprequestinit.signal.md | 2 + ...na-plugin-public.httprequestinit.window.md | 4 +- ...-public.httpservicebase.addloadingcount.md | 6 +- ...-plugin-public.httpservicebase.basepath.md | 8 +- ...na-plugin-public.httpservicebase.delete.md | 2 + ...ana-plugin-public.httpservicebase.fetch.md | 2 + ...ibana-plugin-public.httpservicebase.get.md | 2 + ...public.httpservicebase.getloadingcount_.md | 2 + ...bana-plugin-public.httpservicebase.head.md | 2 + ...plugin-public.httpservicebase.intercept.md | 4 + .../kibana-plugin-public.httpservicebase.md | 27 +- ...a-plugin-public.httpservicebase.options.md | 2 + ...ana-plugin-public.httpservicebase.patch.md | 2 + ...bana-plugin-public.httpservicebase.post.md | 2 + ...ibana-plugin-public.httpservicebase.put.md | 2 + ...c.httpservicebase.removeallinterceptors.md | 2 + ...bana-plugin-public.httpservicebase.stop.md | 15 -- .../public/kibana-plugin-public.httpsetup.md | 1 + .../public/kibana-plugin-public.httpstart.md | 1 + .../kibana-plugin-public.ibasepath.get.md | 13 + .../public/kibana-plugin-public.ibasepath.md | 22 ++ .../kibana-plugin-public.ibasepath.prepend.md | 13 + .../kibana-plugin-public.ibasepath.remove.md | 13 + ...ana-plugin-public.ihttpfetcherror.body.md} | 4 +- .../kibana-plugin-public.ihttpfetcherror.md | 21 ++ ...-plugin-public.ihttpfetcherror.request.md} | 4 +- ...-plugin-public.ihttpfetcherror.response.md | 11 + ...in-public.ihttpinterceptcontroller.halt.md | 17 ++ ...-public.ihttpinterceptcontroller.halted.md | 13 + ...-plugin-public.ihttpinterceptcontroller.md | 26 ++ .../public/kibana-plugin-public.itoasts.md | 13 + .../core/public/kibana-plugin-public.md | 29 ++- ...kibana-plugin-public.notificationssetup.md | 2 +- ...plugin-public.notificationssetup.toasts.md | 2 + ...kibana-plugin-public.notificationsstart.md | 2 +- ...plugin-public.notificationsstart.toasts.md | 2 + .../public/kibana-plugin-public.overlayref.md | 2 + .../public/kibana-plugin-public.toastinput.md | 1 + .../kibana-plugin-public.toastinputfields.md | 18 ++ .../kibana-plugin-public.toastsapi.add.md | 6 +- ...ibana-plugin-public.toastsapi.adddanger.md | 6 +- ...kibana-plugin-public.toastsapi.adderror.md | 8 +- ...bana-plugin-public.toastsapi.addsuccess.md | 6 +- ...bana-plugin-public.toastsapi.addwarning.md | 6 +- .../kibana-plugin-public.toastsapi.get_.md | 2 + .../public/kibana-plugin-public.toastsapi.md | 18 +- ...lugin-public.toastsapi.registeroverlays.md | 22 -- .../kibana-plugin-public.toastsapi.remove.md | 4 +- .../kibana-plugin-public.toastssetup.md | 13 + .../kibana-plugin-public.toastsstart.md | 13 + ...ana-plugin-server.assistanceapiresponse.md | 1 + ...-plugin-server.assistantapiclientparams.md | 1 + .../kibana-plugin-server.authenticated.md | 19 ++ ...kibana-plugin-server.authenticated.type.md | 11 + ...ana-plugin-server.authenticationhandler.md | 3 +- .../server/kibana-plugin-server.authresult.md | 12 + .../kibana-plugin-server.authresulttype.md | 19 ++ .../server/kibana-plugin-server.basepath.md | 4 +- .../kibana-plugin-server.basepath.prepend.md | 2 +- .../kibana-plugin-server.basepath.remove.md | 2 +- ...na-plugin-server.clusterclient.asscoped.md | 4 +- ...server.clusterclient.callasinternaluser.md | 2 +- .../kibana-plugin-server.clusterclient.md | 4 +- .../kibana-plugin-server.contextsetup.md | 11 +- .../kibana-plugin-server.coresetup.context.md | 6 +- ...a-plugin-server.coresetup.elasticsearch.md | 8 +- .../kibana-plugin-server.coresetup.http.md | 13 +- .../server/kibana-plugin-server.coresetup.md | 6 +- ...lugin-server.deprecationapiclientparams.md | 1 + ...na-plugin-server.deprecationapiresponse.md | 1 + .../kibana-plugin-server.deprecationinfo.md | 1 + ...kibana-plugin-server.elasticsearcherror.md | 1 + ....elasticsearchservicesetup.adminclient_.md | 8 + ....elasticsearchservicesetup.createclient.md | 2 +- ...r.elasticsearchservicesetup.dataclient_.md | 8 + ...server.elasticsearchservicesetup.legacy.md | 13 - ...plugin-server.elasticsearchservicesetup.md | 17 +- ...bana-plugin-server.httpserversetup.auth.md | 15 -- ...-plugin-server.httpserversetup.basepath.md | 13 - .../kibana-plugin-server.httpserversetup.md | 93 ------- ...gin-server.httpserversetup.registerauth.md | 13 - ...rver.httpserversetup.registeronpostauth.md | 13 - ...erver.httpserversetup.registeronpreauth.md | 13 - ...n-server.httpserversetup.registerrouter.md | 13 - ...na-plugin-server.httpserversetup.server.md | 11 - ...plugin-server.httpservicesetup.basepath.md | 13 + ...etup.createcookiesessionstoragefactory.md} | 4 +- ...in-server.httpservicesetup.createrouter.md | 28 ++ ...n-server.httpservicesetup.istlsenabled.md} | 4 +- .../kibana-plugin-server.httpservicesetup.md | 85 ++++++- ...in-server.httpservicesetup.registerauth.md | 18 ++ ...ver.httpservicesetup.registeronpostauth.md | 18 ++ ...rver.httpservicesetup.registeronpreauth.md | 18 ++ ...ervicesetup.registerroutehandlercontext.md | 37 +++ .../kibana-plugin-server.ikibanaresponse.md | 22 ++ ...a-plugin-server.ikibanaresponse.options.md | 11 + ...a-plugin-server.ikibanaresponse.payload.md | 11 + ...na-plugin-server.ikibanaresponse.status.md | 11 + ...gin-server.indexsettingsdeprecationinfo.md | 1 + .../server/kibana-plugin-server.irouter.md | 2 +- .../core/server/kibana-plugin-server.md | 15 +- ...erver.migration_assistance_index_action.md | 1 + ...ugin-server.migration_deprecation_level.md | 1 + .../kibana-plugin-server.onpostauthhandler.md | 1 + .../kibana-plugin-server.onpreauthhandler.md | 1 + .../kibana-plugin-server.requesthandler.md | 2 +- .../kibana-plugin-server.routeconfig.md | 4 +- .../kibana-plugin-server.routeconfig.path.md | 7 +- ...bana-plugin-server.routeconfig.validate.md | 6 +- ...r.scopedclusterclient.callascurrentuser.md | 2 +- ....scopedclusterclient.callasinternaluser.md | 2 +- ...ibana-plugin-server.scopedclusterclient.md | 4 +- src/core/public/context/context_service.ts | 11 +- src/core/public/http/http_fetch_error.ts | 6 +- .../public/http/http_intercept_controller.ts | 7 +- .../public/http/http_intercept_halt_error.ts | 1 + src/core/public/http/http_service.ts | 9 +- src/core/public/http/index.ts | 3 - src/core/public/http/types.ts | 240 ++++++++++++++++-- src/core/public/index.ts | 29 ++- src/core/public/notifications/index.ts | 11 +- .../notifications/notifications_service.ts | 2 + src/core/public/notifications/toasts/index.ts | 2 +- .../notifications/toasts/toasts_api.tsx | 72 +++++- .../toasts/toasts_service.mock.ts | 4 +- .../notifications/toasts/toasts_service.tsx | 16 +- src/core/public/overlays/overlay_service.ts | 4 + src/core/public/public.api.md | 158 +++++------- src/core/server/context/context_service.ts | 11 +- src/core/server/elasticsearch/api_types.ts | 8 + .../server/elasticsearch/cluster_client.ts | 9 +- .../elasticsearch_service.mock.ts | 5 +- .../elasticsearch/elasticsearch_service.ts | 42 +-- src/core/server/elasticsearch/errors.ts | 1 + src/core/server/elasticsearch/index.ts | 3 +- .../elasticsearch/scoped_cluster_client.ts | 4 + src/core/server/elasticsearch/types.ts | 80 ++++++ src/core/server/http/base_path_service.ts | 4 +- src/core/server/http/http_server.ts | 124 +-------- src/core/server/http/http_service.mock.ts | 9 +- src/core/server/http/http_service.ts | 66 +---- src/core/server/http/index.ts | 7 +- src/core/server/http/lifecycle/auth.ts | 31 ++- .../server/http/lifecycle/on_post_auth.ts | 5 +- src/core/server/http/lifecycle/on_pre_auth.ts | 5 +- src/core/server/http/router/index.ts | 2 + src/core/server/http/router/response.ts | 17 +- src/core/server/http/router/route.ts | 11 +- src/core/server/http/router/router.ts | 6 +- src/core/server/http/types.ts | 208 ++++++++++++++- src/core/server/index.ts | 65 ++--- src/core/server/legacy/legacy_service.test.ts | 4 +- src/core/server/plugins/plugins_service.ts | 8 +- .../service/saved_objects_client.ts | 2 - src/core/server/server.api.md | 112 +++----- src/core/server/server.ts | 4 +- .../notify/toasts/toast_notifications.test.ts | 114 ++------- .../plugins/apm/public/hooks/useFetcher.tsx | 4 +- .../on_post_auth_interceptor.test.ts | 27 +- .../on_request_interceptor.test.ts | 25 +- 192 files changed, 1781 insertions(+), 1154 deletions(-) delete mode 100644 docs/development/core/public/kibana-plugin-public.httpfetcherror._constructor_.md delete mode 100644 docs/development/core/public/kibana-plugin-public.httpfetcherror.md delete mode 100644 docs/development/core/public/kibana-plugin-public.httpfetcherror.response.md delete mode 100644 docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halt.md delete mode 100644 docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halted.md delete mode 100644 docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.md delete mode 100644 docs/development/core/public/kibana-plugin-public.httpservicebase.stop.md create mode 100644 docs/development/core/public/kibana-plugin-public.ibasepath.get.md create mode 100644 docs/development/core/public/kibana-plugin-public.ibasepath.md create mode 100644 docs/development/core/public/kibana-plugin-public.ibasepath.prepend.md create mode 100644 docs/development/core/public/kibana-plugin-public.ibasepath.remove.md rename docs/development/core/public/{kibana-plugin-public.httpfetcherror.body.md => kibana-plugin-public.ihttpfetcherror.body.md} (53%) create mode 100644 docs/development/core/public/kibana-plugin-public.ihttpfetcherror.md rename docs/development/core/public/{kibana-plugin-public.httpfetcherror.request.md => kibana-plugin-public.ihttpfetcherror.request.md} (52%) create mode 100644 docs/development/core/public/kibana-plugin-public.ihttpfetcherror.response.md create mode 100644 docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halt.md create mode 100644 docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halted.md create mode 100644 docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.md create mode 100644 docs/development/core/public/kibana-plugin-public.itoasts.md create mode 100644 docs/development/core/public/kibana-plugin-public.toastinputfields.md delete mode 100644 docs/development/core/public/kibana-plugin-public.toastsapi.registeroverlays.md create mode 100644 docs/development/core/public/kibana-plugin-public.toastssetup.md create mode 100644 docs/development/core/public/kibana-plugin-public.toastsstart.md create mode 100644 docs/development/core/server/kibana-plugin-server.authenticated.md create mode 100644 docs/development/core/server/kibana-plugin-server.authenticated.type.md create mode 100644 docs/development/core/server/kibana-plugin-server.authresult.md create mode 100644 docs/development/core/server/kibana-plugin-server.authresulttype.md delete mode 100644 docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.legacy.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.auth.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.basepath.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.registerauth.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpostauth.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpreauth.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.registerrouter.md delete mode 100644 docs/development/core/server/kibana-plugin-server.httpserversetup.server.md create mode 100644 docs/development/core/server/kibana-plugin-server.httpservicesetup.basepath.md rename docs/development/core/server/{kibana-plugin-server.httpserversetup.createcookiesessionstoragefactory.md => kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md} (61%) create mode 100644 docs/development/core/server/kibana-plugin-server.httpservicesetup.createrouter.md rename docs/development/core/server/{kibana-plugin-server.httpserversetup.istlsenabled.md => kibana-plugin-server.httpservicesetup.istlsenabled.md} (56%) create mode 100644 docs/development/core/server/kibana-plugin-server.httpservicesetup.registerauth.md create mode 100644 docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpostauth.md create mode 100644 docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpreauth.md create mode 100644 docs/development/core/server/kibana-plugin-server.httpservicesetup.registerroutehandlercontext.md create mode 100644 docs/development/core/server/kibana-plugin-server.ikibanaresponse.md create mode 100644 docs/development/core/server/kibana-plugin-server.ikibanaresponse.options.md create mode 100644 docs/development/core/server/kibana-plugin-server.ikibanaresponse.payload.md create mode 100644 docs/development/core/server/kibana-plugin-server.ikibanaresponse.status.md create mode 100644 src/core/server/elasticsearch/types.ts diff --git a/docs/development/core/public/kibana-plugin-public.contextsetup.md b/docs/development/core/public/kibana-plugin-public.contextsetup.md index d9c158fcaae05..2b67c7cdaf0e1 100644 --- a/docs/development/core/public/kibana-plugin-public.contextsetup.md +++ b/docs/development/core/public/kibana-plugin-public.contextsetup.md @@ -91,18 +91,17 @@ export interface VizRenderContext { } export type VizRenderer = (context: VizRenderContext, domElement: HTMLElement) => () => void; +// When a renderer is bound via `contextContainer.createHandler` this is the type that will be returned. +type BoundVizRenderer = (domElement: HTMLElement) => () => void; class VizRenderingPlugin { - private readonly vizRenderers = new Map () => void)>(); + private readonly contextContainer?: IContextContainer; + private readonly vizRenderers = new Map(); constructor(private readonly initContext: PluginInitializerContext) {} setup(core) { - this.contextContainer = core.context.createContextContainer< - VizRenderContext, - ReturnType, - [HTMLElement] - >(); + this.contextContainer = core.context.createContextContainer(); return { registerContext: this.contextContainer.registerContext, diff --git a/docs/development/core/public/kibana-plugin-public.errortoastoptions.md b/docs/development/core/public/kibana-plugin-public.errortoastoptions.md index 135418632ac98..1755e6cbde919 100644 --- a/docs/development/core/public/kibana-plugin-public.errortoastoptions.md +++ b/docs/development/core/public/kibana-plugin-public.errortoastoptions.md @@ -4,6 +4,8 @@ ## ErrorToastOptions interface +Options available for [IToasts](./kibana-plugin-public.itoasts.md) APIs. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httperrorresponse.error.md b/docs/development/core/public/kibana-plugin-public.httperrorresponse.error.md index cb82a1f37f84e..59eee87cb70ba 100644 --- a/docs/development/core/public/kibana-plugin-public.httperrorresponse.error.md +++ b/docs/development/core/public/kibana-plugin-public.httperrorresponse.error.md @@ -7,5 +7,5 @@ Signature: ```typescript -error: Error | HttpFetchError; +error: Error | IHttpFetchError; ``` diff --git a/docs/development/core/public/kibana-plugin-public.httperrorresponse.md b/docs/development/core/public/kibana-plugin-public.httperrorresponse.md index 0495195328fa2..1955bb57c50bf 100644 --- a/docs/development/core/public/kibana-plugin-public.httperrorresponse.md +++ b/docs/development/core/public/kibana-plugin-public.httperrorresponse.md @@ -16,7 +16,7 @@ export interface HttpErrorResponse | Property | Type | Description | | --- | --- | --- | | [body](./kibana-plugin-public.httperrorresponse.body.md) | HttpBody | | -| [error](./kibana-plugin-public.httperrorresponse.error.md) | Error | HttpFetchError | | +| [error](./kibana-plugin-public.httperrorresponse.error.md) | Error | IHttpFetchError | | | [request](./kibana-plugin-public.httperrorresponse.request.md) | Request | | | [response](./kibana-plugin-public.httperrorresponse.response.md) | Response | | diff --git a/docs/development/core/public/kibana-plugin-public.httpfetcherror._constructor_.md b/docs/development/core/public/kibana-plugin-public.httpfetcherror._constructor_.md deleted file mode 100644 index f7e057415715a..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpfetcherror._constructor_.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpFetchError](./kibana-plugin-public.httpfetcherror.md) > [(constructor)](./kibana-plugin-public.httpfetcherror._constructor_.md) - -## HttpFetchError.(constructor) - -Constructs a new instance of the `HttpFetchError` class - -Signature: - -```typescript -constructor(message: string, request: Request, response?: Response | undefined, body?: any); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| message | string | | -| request | Request | | -| response | Response | undefined | | -| body | any | | - diff --git a/docs/development/core/public/kibana-plugin-public.httpfetcherror.md b/docs/development/core/public/kibana-plugin-public.httpfetcherror.md deleted file mode 100644 index 70f2edfc7d201..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpfetcherror.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpFetchError](./kibana-plugin-public.httpfetcherror.md) - -## HttpFetchError class - - -Signature: - -```typescript -export declare class HttpFetchError extends Error -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(message, request, response, body)](./kibana-plugin-public.httpfetcherror._constructor_.md) | | Constructs a new instance of the HttpFetchError class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [body](./kibana-plugin-public.httpfetcherror.body.md) | | any | | -| [request](./kibana-plugin-public.httpfetcherror.request.md) | | Request | | -| [response](./kibana-plugin-public.httpfetcherror.response.md) | | Response | undefined | | - diff --git a/docs/development/core/public/kibana-plugin-public.httpfetcherror.response.md b/docs/development/core/public/kibana-plugin-public.httpfetcherror.response.md deleted file mode 100644 index 404d1b7c7abc0..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpfetcherror.response.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpFetchError](./kibana-plugin-public.httpfetcherror.md) > [response](./kibana-plugin-public.httpfetcherror.response.md) - -## HttpFetchError.response property - -Signature: - -```typescript -readonly response?: Response | undefined; -``` diff --git a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.headers.md b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.headers.md index 2fb4c448fe237..232b7d3da3af4 100644 --- a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.headers.md +++ b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.headers.md @@ -4,6 +4,8 @@ ## HttpFetchOptions.headers property +Headers to send with the request. See [HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md). + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.md b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.md index 93fabb053871a..eca29b37425e9 100644 --- a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.md +++ b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.md @@ -4,6 +4,7 @@ ## HttpFetchOptions interface +All options that may be used with a [HttpHandler](./kibana-plugin-public.httphandler.md). Signature: @@ -15,7 +16,7 @@ export interface HttpFetchOptions extends HttpRequestInit | Property | Type | Description | | --- | --- | --- | -| [headers](./kibana-plugin-public.httpfetchoptions.headers.md) | HttpHeadersInit | | -| [prependBasePath](./kibana-plugin-public.httpfetchoptions.prependbasepath.md) | boolean | | -| [query](./kibana-plugin-public.httpfetchoptions.query.md) | HttpFetchQuery | | +| [headers](./kibana-plugin-public.httpfetchoptions.headers.md) | HttpHeadersInit | Headers to send with the request. See [HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md). | +| [prependBasePath](./kibana-plugin-public.httpfetchoptions.prependbasepath.md) | boolean | Whether or not the request should automatically prepend the basePath. Defaults to true. | +| [query](./kibana-plugin-public.httpfetchoptions.query.md) | HttpFetchQuery | The query string for an HTTP request. See [HttpFetchQuery](./kibana-plugin-public.httpfetchquery.md). | diff --git a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.prependbasepath.md b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.prependbasepath.md index 5fff6c3518b56..0a6a8e195e565 100644 --- a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.prependbasepath.md +++ b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.prependbasepath.md @@ -4,6 +4,8 @@ ## HttpFetchOptions.prependBasePath property +Whether or not the request should automatically prepend the basePath. Defaults to `true`. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.query.md b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.query.md index 2c24a3a3a548d..0f8d6ba83e772 100644 --- a/docs/development/core/public/kibana-plugin-public.httpfetchoptions.query.md +++ b/docs/development/core/public/kibana-plugin-public.httpfetchoptions.query.md @@ -4,6 +4,8 @@ ## HttpFetchOptions.query property +The query string for an HTTP request. See [HttpFetchQuery](./kibana-plugin-public.httpfetchquery.md). + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httphandler.md b/docs/development/core/public/kibana-plugin-public.httphandler.md index 8bc9c3302252f..80fd1ea2e5761 100644 --- a/docs/development/core/public/kibana-plugin-public.httphandler.md +++ b/docs/development/core/public/kibana-plugin-public.httphandler.md @@ -4,6 +4,7 @@ ## HttpHandler type +A function for making an HTTP requests to Kibana's backend. See [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) for options and [HttpBody](./kibana-plugin-public.httpbody.md) for the response. Signature: diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halt.md b/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halt.md deleted file mode 100644 index 36983d90cf8f4..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halt.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpInterceptController](./kibana-plugin-public.httpinterceptcontroller.md) > [halt](./kibana-plugin-public.httpinterceptcontroller.halt.md) - -## HttpInterceptController.halt() method - -Signature: - -```typescript -halt(): void; -``` -Returns: - -`void` - diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halted.md b/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halted.md deleted file mode 100644 index 18e380c0786bf..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.halted.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpInterceptController](./kibana-plugin-public.httpinterceptcontroller.md) > [halted](./kibana-plugin-public.httpinterceptcontroller.halted.md) - -## HttpInterceptController.halted property - -Signature: - -```typescript -readonly halted: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.md b/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.md deleted file mode 100644 index 03b91fde69cc3..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptcontroller.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpInterceptController](./kibana-plugin-public.httpinterceptcontroller.md) - -## HttpInterceptController class - -Signature: - -```typescript -export declare class HttpInterceptController -``` - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [halted](./kibana-plugin-public.httpinterceptcontroller.halted.md) | | boolean | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [halt()](./kibana-plugin-public.httpinterceptcontroller.halt.md) | | | - diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptor.md b/docs/development/core/public/kibana-plugin-public.httpinterceptor.md index c694151701ffb..cf7288a492ebb 100644 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptor.md +++ b/docs/development/core/public/kibana-plugin-public.httpinterceptor.md @@ -4,6 +4,7 @@ ## HttpInterceptor interface +An object that may define global interceptor functions for different parts of the request and response lifecycle. See [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md). Signature: @@ -15,8 +16,8 @@ export interface HttpInterceptor | Method | Description | | --- | --- | -| [request(request, controller)](./kibana-plugin-public.httpinterceptor.request.md) | | -| [requestError(httpErrorRequest, controller)](./kibana-plugin-public.httpinterceptor.requesterror.md) | | -| [response(httpResponse, controller)](./kibana-plugin-public.httpinterceptor.response.md) | | -| [responseError(httpErrorResponse, controller)](./kibana-plugin-public.httpinterceptor.responseerror.md) | | +| [request(request, controller)](./kibana-plugin-public.httpinterceptor.request.md) | Define an interceptor to be executed before a request is sent. | +| [requestError(httpErrorRequest, controller)](./kibana-plugin-public.httpinterceptor.requesterror.md) | Define an interceptor to be executed if a request interceptor throws an error or returns a rejected Promise. | +| [response(httpResponse, controller)](./kibana-plugin-public.httpinterceptor.response.md) | Define an interceptor to be executed after a response is received. | +| [responseError(httpErrorResponse, controller)](./kibana-plugin-public.httpinterceptor.responseerror.md) | Define an interceptor to be executed if a response interceptor throws an error or returns a rejected Promise. | diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptor.request.md b/docs/development/core/public/kibana-plugin-public.httpinterceptor.request.md index 0e57cf8dc51f9..4254e4aa8950c 100644 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptor.request.md +++ b/docs/development/core/public/kibana-plugin-public.httpinterceptor.request.md @@ -4,10 +4,12 @@ ## HttpInterceptor.request() method +Define an interceptor to be executed before a request is sent. + Signature: ```typescript -request?(request: Request, controller: HttpInterceptController): Promise | Request | void; +request?(request: Request, controller: IHttpInterceptController): Promise | Request | void; ``` ## Parameters @@ -15,7 +17,7 @@ request?(request: Request, controller: HttpInterceptController): PromiseRequest | | -| controller | HttpInterceptController | | +| controller | IHttpInterceptController | | Returns: diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptor.requesterror.md b/docs/development/core/public/kibana-plugin-public.httpinterceptor.requesterror.md index 5c95e15697c35..af9b8641e7473 100644 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptor.requesterror.md +++ b/docs/development/core/public/kibana-plugin-public.httpinterceptor.requesterror.md @@ -4,10 +4,12 @@ ## HttpInterceptor.requestError() method +Define an interceptor to be executed if a request interceptor throws an error or returns a rejected Promise. + Signature: ```typescript -requestError?(httpErrorRequest: HttpErrorRequest, controller: HttpInterceptController): Promise | Request | void; +requestError?(httpErrorRequest: HttpErrorRequest, controller: IHttpInterceptController): Promise | Request | void; ``` ## Parameters @@ -15,7 +17,7 @@ requestError?(httpErrorRequest: HttpErrorRequest, controller: HttpInterceptContr | Parameter | Type | Description | | --- | --- | --- | | httpErrorRequest | HttpErrorRequest | | -| controller | HttpInterceptController | | +| controller | IHttpInterceptController | | Returns: diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptor.response.md b/docs/development/core/public/kibana-plugin-public.httpinterceptor.response.md index 01609eb2bbac7..6f4205f3362fe 100644 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptor.response.md +++ b/docs/development/core/public/kibana-plugin-public.httpinterceptor.response.md @@ -4,10 +4,12 @@ ## HttpInterceptor.response() method +Define an interceptor to be executed after a response is received. + Signature: ```typescript -response?(httpResponse: HttpResponse, controller: HttpInterceptController): Promise | HttpResponse | void; +response?(httpResponse: HttpResponse, controller: IHttpInterceptController): Promise | HttpResponse | void; ``` ## Parameters @@ -15,7 +17,7 @@ response?(httpResponse: HttpResponse, controller: HttpInterceptController): Prom | Parameter | Type | Description | | --- | --- | --- | | httpResponse | HttpResponse | | -| controller | HttpInterceptController | | +| controller | IHttpInterceptController | | Returns: diff --git a/docs/development/core/public/kibana-plugin-public.httpinterceptor.responseerror.md b/docs/development/core/public/kibana-plugin-public.httpinterceptor.responseerror.md index 71e0f11205d7b..1e7cd5e61186e 100644 --- a/docs/development/core/public/kibana-plugin-public.httpinterceptor.responseerror.md +++ b/docs/development/core/public/kibana-plugin-public.httpinterceptor.responseerror.md @@ -4,10 +4,12 @@ ## HttpInterceptor.responseError() method +Define an interceptor to be executed if a response interceptor throws an error or returns a rejected Promise. + Signature: ```typescript -responseError?(httpErrorResponse: HttpErrorResponse, controller: HttpInterceptController): Promise | HttpResponse | void; +responseError?(httpErrorResponse: HttpErrorResponse, controller: IHttpInterceptController): Promise | HttpResponse | void; ``` ## Parameters @@ -15,7 +17,7 @@ responseError?(httpErrorResponse: HttpErrorResponse, controller: HttpInterceptCo | Parameter | Type | Description | | --- | --- | --- | | httpErrorResponse | HttpErrorResponse | | -| controller | HttpInterceptController | | +| controller | IHttpInterceptController | | Returns: diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.body.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.body.md index ecf8343ab529c..44b33c9917543 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.body.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.body.md @@ -4,6 +4,8 @@ ## HttpRequestInit.body property +A BodyInit object or null to set request's body. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.cache.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.cache.md index 813639b51f814..0f9dff3887ccf 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.cache.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.cache.md @@ -4,6 +4,8 @@ ## HttpRequestInit.cache property +The cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.credentials.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.credentials.md index 26e86722a8219..93c624cd1980c 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.credentials.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.credentials.md @@ -4,6 +4,8 @@ ## HttpRequestInit.credentials property +The credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.headers.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.headers.md index 2e5f86ebe38ef..0f885ed0df1a3 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.headers.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.headers.md @@ -4,6 +4,8 @@ ## HttpRequestInit.headers property +[HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md) + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.integrity.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.integrity.md index 9d8b3644aa9d7..7bb1665fdfcbe 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.integrity.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.integrity.md @@ -4,6 +4,8 @@ ## HttpRequestInit.integrity property +Subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.keepalive.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.keepalive.md index bb1a50c280dce..ba256188ce338 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.keepalive.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.keepalive.md @@ -4,6 +4,8 @@ ## HttpRequestInit.keepalive property +Whether or not request can outlive the global in which it was created. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.md index 89fa6d5379581..1271e039b0713 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.md @@ -4,6 +4,7 @@ ## HttpRequestInit interface +Fetch API options available to [HttpHandler](./kibana-plugin-public.httphandler.md)s. Signature: @@ -15,17 +16,17 @@ export interface HttpRequestInit | Property | Type | Description | | --- | --- | --- | -| [body](./kibana-plugin-public.httprequestinit.body.md) | BodyInit | null | | -| [cache](./kibana-plugin-public.httprequestinit.cache.md) | RequestCache | | -| [credentials](./kibana-plugin-public.httprequestinit.credentials.md) | RequestCredentials | | -| [headers](./kibana-plugin-public.httprequestinit.headers.md) | HttpHeadersInit | | -| [integrity](./kibana-plugin-public.httprequestinit.integrity.md) | string | | -| [keepalive](./kibana-plugin-public.httprequestinit.keepalive.md) | boolean | | -| [method](./kibana-plugin-public.httprequestinit.method.md) | string | | -| [mode](./kibana-plugin-public.httprequestinit.mode.md) | RequestMode | | -| [redirect](./kibana-plugin-public.httprequestinit.redirect.md) | RequestRedirect | | -| [referrer](./kibana-plugin-public.httprequestinit.referrer.md) | string | | -| [referrerPolicy](./kibana-plugin-public.httprequestinit.referrerpolicy.md) | ReferrerPolicy | | -| [signal](./kibana-plugin-public.httprequestinit.signal.md) | AbortSignal | null | | -| [window](./kibana-plugin-public.httprequestinit.window.md) | any | | +| [body](./kibana-plugin-public.httprequestinit.body.md) | BodyInit | null | A BodyInit object or null to set request's body. | +| [cache](./kibana-plugin-public.httprequestinit.cache.md) | RequestCache | The cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. | +| [credentials](./kibana-plugin-public.httprequestinit.credentials.md) | RequestCredentials | The credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. | +| [headers](./kibana-plugin-public.httprequestinit.headers.md) | HttpHeadersInit | [HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md) | +| [integrity](./kibana-plugin-public.httprequestinit.integrity.md) | string | Subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. | +| [keepalive](./kibana-plugin-public.httprequestinit.keepalive.md) | boolean | Whether or not request can outlive the global in which it was created. | +| [method](./kibana-plugin-public.httprequestinit.method.md) | string | HTTP method, which is "GET" by default. | +| [mode](./kibana-plugin-public.httprequestinit.mode.md) | RequestMode | The mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. | +| [redirect](./kibana-plugin-public.httprequestinit.redirect.md) | RequestRedirect | The redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. | +| [referrer](./kibana-plugin-public.httprequestinit.referrer.md) | string | The referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the Referer header of the request being made. | +| [referrerPolicy](./kibana-plugin-public.httprequestinit.referrerpolicy.md) | ReferrerPolicy | The referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. | +| [signal](./kibana-plugin-public.httprequestinit.signal.md) | AbortSignal | null | Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. | +| [window](./kibana-plugin-public.httprequestinit.window.md) | null | Can only be null. Used to disassociate request from any Window. | diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.method.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.method.md index 2aab899405576..c3465ae75521d 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.method.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.method.md @@ -4,6 +4,8 @@ ## HttpRequestInit.method property +HTTP method, which is "GET" by default. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.mode.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.mode.md index 611671331ee58..5ba625318eb27 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.mode.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.mode.md @@ -4,6 +4,8 @@ ## HttpRequestInit.mode property +The mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.redirect.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.redirect.md index 6795e99d370f3..b2554812fadf9 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.redirect.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.redirect.md @@ -4,6 +4,8 @@ ## HttpRequestInit.redirect property +The redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.referrer.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.referrer.md index 60e249cc9cf1d..56c9bcb4afaa9 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.referrer.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.referrer.md @@ -4,6 +4,8 @@ ## HttpRequestInit.referrer property +The referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.referrerpolicy.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.referrerpolicy.md index 3f92ee021f9cc..07231203c0030 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.referrerpolicy.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.referrerpolicy.md @@ -4,6 +4,8 @@ ## HttpRequestInit.referrerPolicy property +The referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.signal.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.signal.md index 8657c6b7a1242..b0e863eaa804f 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.signal.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.signal.md @@ -4,6 +4,8 @@ ## HttpRequestInit.signal property +Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httprequestinit.window.md b/docs/development/core/public/kibana-plugin-public.httprequestinit.window.md index aec7fad7e3927..1a6d740065423 100644 --- a/docs/development/core/public/kibana-plugin-public.httprequestinit.window.md +++ b/docs/development/core/public/kibana-plugin-public.httprequestinit.window.md @@ -4,8 +4,10 @@ ## HttpRequestInit.window property +Can only be null. Used to disassociate request from any Window. + Signature: ```typescript -window?: any; +window?: null; ``` diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.addloadingcount.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.addloadingcount.md index 0dc64a3f75443..e984fea48625d 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.addloadingcount.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.addloadingcount.md @@ -4,17 +4,19 @@ ## HttpServiceBase.addLoadingCount() method +Adds a new source of loading counts. Used to show the global loading indicator when sum of all observed counts are more than 0. + Signature: ```typescript -addLoadingCount(count$: Observable): void; +addLoadingCount(countSource$: Observable): void; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| count$ | Observable<number> | | +| countSource$ | Observable<number> | | Returns: diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.basepath.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.basepath.md index 6794199dc9dbd..6c5f690a5c607 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.basepath.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.basepath.md @@ -4,12 +4,10 @@ ## HttpServiceBase.basePath property +APIs for manipulating the basePath on URL segments. + Signature: ```typescript -basePath: { - get: () => string; - prepend: (url: string) => string; - remove: (url: string) => string; - }; +basePath: IBasePath; ``` diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.delete.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.delete.md index 55e67a50b156f..73022ef4f2946 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.delete.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.delete.md @@ -4,6 +4,8 @@ ## HttpServiceBase.delete property +Makes an HTTP request with the DELETE method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.fetch.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.fetch.md index 92936230149b6..3a1ae4892a3dd 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.fetch.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.fetch.md @@ -4,6 +4,8 @@ ## HttpServiceBase.fetch property +Makes an HTTP request. Defaults to a GET request unless overriden. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.get.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.get.md index d4b9a3810a497..a61b3dd140e50 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.get.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.get.md @@ -4,6 +4,8 @@ ## HttpServiceBase.get property +Makes an HTTP request with the GET method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.getloadingcount_.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.getloadingcount_.md index 5b04c3327fd49..0b2129330cd01 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.getloadingcount_.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.getloadingcount_.md @@ -4,6 +4,8 @@ ## HttpServiceBase.getLoadingCount$() method +Get the sum of all loading count sources as a single Observable. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.head.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.head.md index 78546d0fbb4f3..4624d95f03bf3 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.head.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.head.md @@ -4,6 +4,8 @@ ## HttpServiceBase.head property +Makes an HTTP request with the HEAD method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.intercept.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.intercept.md index 805884a21d18f..8cf5bf813df09 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.intercept.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.intercept.md @@ -4,6 +4,8 @@ ## HttpServiceBase.intercept() method +Adds a new [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md) to the global HTTP client. + Signature: ```typescript @@ -20,3 +22,5 @@ intercept(interceptor: HttpInterceptor): () => void; `() => void` +a function for removing the attached interceptor. + diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.md index 71ddb6dee20a8..a1eef3db42b7d 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.md @@ -15,23 +15,22 @@ export interface HttpServiceBase | Property | Type | Description | | --- | --- | --- | -| [basePath](./kibana-plugin-public.httpservicebase.basepath.md) | {
get: () => string;
prepend: (url: string) => string;
remove: (url: string) => string;
} | | -| [delete](./kibana-plugin-public.httpservicebase.delete.md) | HttpHandler | | -| [fetch](./kibana-plugin-public.httpservicebase.fetch.md) | HttpHandler | | -| [get](./kibana-plugin-public.httpservicebase.get.md) | HttpHandler | | -| [head](./kibana-plugin-public.httpservicebase.head.md) | HttpHandler | | -| [options](./kibana-plugin-public.httpservicebase.options.md) | HttpHandler | | -| [patch](./kibana-plugin-public.httpservicebase.patch.md) | HttpHandler | | -| [post](./kibana-plugin-public.httpservicebase.post.md) | HttpHandler | | -| [put](./kibana-plugin-public.httpservicebase.put.md) | HttpHandler | | +| [basePath](./kibana-plugin-public.httpservicebase.basepath.md) | IBasePath | APIs for manipulating the basePath on URL segments. | +| [delete](./kibana-plugin-public.httpservicebase.delete.md) | HttpHandler | Makes an HTTP request with the DELETE method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [fetch](./kibana-plugin-public.httpservicebase.fetch.md) | HttpHandler | Makes an HTTP request. Defaults to a GET request unless overriden. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [get](./kibana-plugin-public.httpservicebase.get.md) | HttpHandler | Makes an HTTP request with the GET method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [head](./kibana-plugin-public.httpservicebase.head.md) | HttpHandler | Makes an HTTP request with the HEAD method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [options](./kibana-plugin-public.httpservicebase.options.md) | HttpHandler | Makes an HTTP request with the OPTIONS method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [patch](./kibana-plugin-public.httpservicebase.patch.md) | HttpHandler | Makes an HTTP request with the PATCH method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [post](./kibana-plugin-public.httpservicebase.post.md) | HttpHandler | Makes an HTTP request with the POST method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | +| [put](./kibana-plugin-public.httpservicebase.put.md) | HttpHandler | Makes an HTTP request with the PUT method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. | ## Methods | Method | Description | | --- | --- | -| [addLoadingCount(count$)](./kibana-plugin-public.httpservicebase.addloadingcount.md) | | -| [getLoadingCount$()](./kibana-plugin-public.httpservicebase.getloadingcount_.md) | | -| [intercept(interceptor)](./kibana-plugin-public.httpservicebase.intercept.md) | | -| [removeAllInterceptors()](./kibana-plugin-public.httpservicebase.removeallinterceptors.md) | | -| [stop()](./kibana-plugin-public.httpservicebase.stop.md) | | +| [addLoadingCount(countSource$)](./kibana-plugin-public.httpservicebase.addloadingcount.md) | Adds a new source of loading counts. Used to show the global loading indicator when sum of all observed counts are more than 0. | +| [getLoadingCount$()](./kibana-plugin-public.httpservicebase.getloadingcount_.md) | Get the sum of all loading count sources as a single Observable. | +| [intercept(interceptor)](./kibana-plugin-public.httpservicebase.intercept.md) | Adds a new [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md) to the global HTTP client. | +| [removeAllInterceptors()](./kibana-plugin-public.httpservicebase.removeallinterceptors.md) | Removes all configured interceptors. | diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.options.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.options.md index 6579a92f695a4..0820beb2752f2 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.options.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.options.md @@ -4,6 +4,8 @@ ## HttpServiceBase.options property +Makes an HTTP request with the OPTIONS method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.patch.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.patch.md index 3b81f2f863376..00e1ffc0e16bf 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.patch.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.patch.md @@ -4,6 +4,8 @@ ## HttpServiceBase.patch property +Makes an HTTP request with the PATCH method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.post.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.post.md index b990fd1458c33..3771a7c910895 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.post.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.post.md @@ -4,6 +4,8 @@ ## HttpServiceBase.post property +Makes an HTTP request with the POST method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.put.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.put.md index 3f41c6c21fec6..6e43aafa916bc 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.put.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.put.md @@ -4,6 +4,8 @@ ## HttpServiceBase.put property +Makes an HTTP request with the PUT method. See [HttpHandler](./kibana-plugin-public.httphandler.md) for options. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.removeallinterceptors.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.removeallinterceptors.md index 405baf458e516..0432ec29a22b6 100644 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.removeallinterceptors.md +++ b/docs/development/core/public/kibana-plugin-public.httpservicebase.removeallinterceptors.md @@ -4,6 +4,8 @@ ## HttpServiceBase.removeAllInterceptors() method +Removes all configured interceptors. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.httpservicebase.stop.md b/docs/development/core/public/kibana-plugin-public.httpservicebase.stop.md deleted file mode 100644 index 2a2323dbdda16..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.httpservicebase.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpServiceBase](./kibana-plugin-public.httpservicebase.md) > [stop](./kibana-plugin-public.httpservicebase.stop.md) - -## HttpServiceBase.stop() method - -Signature: - -```typescript -stop(): void; -``` -Returns: - -`void` - diff --git a/docs/development/core/public/kibana-plugin-public.httpsetup.md b/docs/development/core/public/kibana-plugin-public.httpsetup.md index cc8ae6ab6aac1..7ef037ea7abd1 100644 --- a/docs/development/core/public/kibana-plugin-public.httpsetup.md +++ b/docs/development/core/public/kibana-plugin-public.httpsetup.md @@ -4,6 +4,7 @@ ## HttpSetup type +See [HttpServiceBase](./kibana-plugin-public.httpservicebase.md) Signature: diff --git a/docs/development/core/public/kibana-plugin-public.httpstart.md b/docs/development/core/public/kibana-plugin-public.httpstart.md index f70c08a1bde50..bb9247c63897a 100644 --- a/docs/development/core/public/kibana-plugin-public.httpstart.md +++ b/docs/development/core/public/kibana-plugin-public.httpstart.md @@ -4,6 +4,7 @@ ## HttpStart type +See [HttpServiceBase](./kibana-plugin-public.httpservicebase.md) Signature: diff --git a/docs/development/core/public/kibana-plugin-public.ibasepath.get.md b/docs/development/core/public/kibana-plugin-public.ibasepath.get.md new file mode 100644 index 0000000000000..08ca3afee11f7 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ibasepath.get.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IBasePath](./kibana-plugin-public.ibasepath.md) > [get](./kibana-plugin-public.ibasepath.get.md) + +## IBasePath.get property + +Gets the `basePath` string. + +Signature: + +```typescript +get: () => string; +``` diff --git a/docs/development/core/public/kibana-plugin-public.ibasepath.md b/docs/development/core/public/kibana-plugin-public.ibasepath.md new file mode 100644 index 0000000000000..de392d45c4493 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ibasepath.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IBasePath](./kibana-plugin-public.ibasepath.md) + +## IBasePath interface + +APIs for manipulating the basePath on URL segments. + +Signature: + +```typescript +export interface IBasePath +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [get](./kibana-plugin-public.ibasepath.get.md) | () => string | Gets the basePath string. | +| [prepend](./kibana-plugin-public.ibasepath.prepend.md) | (url: string) => string | Prepends path with the basePath. | +| [remove](./kibana-plugin-public.ibasepath.remove.md) | (url: string) => string | Removes the prepended basePath from the path. | + diff --git a/docs/development/core/public/kibana-plugin-public.ibasepath.prepend.md b/docs/development/core/public/kibana-plugin-public.ibasepath.prepend.md new file mode 100644 index 0000000000000..48b909aa2f7a8 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ibasepath.prepend.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IBasePath](./kibana-plugin-public.ibasepath.md) > [prepend](./kibana-plugin-public.ibasepath.prepend.md) + +## IBasePath.prepend property + +Prepends `path` with the basePath. + +Signature: + +```typescript +prepend: (url: string) => string; +``` diff --git a/docs/development/core/public/kibana-plugin-public.ibasepath.remove.md b/docs/development/core/public/kibana-plugin-public.ibasepath.remove.md new file mode 100644 index 0000000000000..6af8564420830 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ibasepath.remove.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IBasePath](./kibana-plugin-public.ibasepath.md) > [remove](./kibana-plugin-public.ibasepath.remove.md) + +## IBasePath.remove property + +Removes the prepended basePath from the `path`. + +Signature: + +```typescript +remove: (url: string) => string; +``` diff --git a/docs/development/core/public/kibana-plugin-public.httpfetcherror.body.md b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.body.md similarity index 53% rename from docs/development/core/public/kibana-plugin-public.httpfetcherror.body.md rename to docs/development/core/public/kibana-plugin-public.ihttpfetcherror.body.md index c373603b03569..2a5f3a68635b8 100644 --- a/docs/development/core/public/kibana-plugin-public.httpfetcherror.body.md +++ b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.body.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpFetchError](./kibana-plugin-public.httpfetcherror.md) > [body](./kibana-plugin-public.httpfetcherror.body.md) +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) > [body](./kibana-plugin-public.ihttpfetcherror.body.md) -## HttpFetchError.body property +## IHttpFetchError.body property Signature: diff --git a/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.md b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.md new file mode 100644 index 0000000000000..f33688affe8d5 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) + +## IHttpFetchError interface + + +Signature: + +```typescript +export interface IHttpFetchError extends Error +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [body](./kibana-plugin-public.ihttpfetcherror.body.md) | any | | +| [request](./kibana-plugin-public.ihttpfetcherror.request.md) | Request | | +| [response](./kibana-plugin-public.ihttpfetcherror.response.md) | Response | | + diff --git a/docs/development/core/public/kibana-plugin-public.httpfetcherror.request.md b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.request.md similarity index 52% rename from docs/development/core/public/kibana-plugin-public.httpfetcherror.request.md rename to docs/development/core/public/kibana-plugin-public.ihttpfetcherror.request.md index bd469952806a2..bbb1432f13bfb 100644 --- a/docs/development/core/public/kibana-plugin-public.httpfetcherror.request.md +++ b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.request.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [HttpFetchError](./kibana-plugin-public.httpfetcherror.md) > [request](./kibana-plugin-public.httpfetcherror.request.md) +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) > [request](./kibana-plugin-public.ihttpfetcherror.request.md) -## HttpFetchError.request property +## IHttpFetchError.request property Signature: diff --git a/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.response.md b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.response.md new file mode 100644 index 0000000000000..c5efc1cc3858c --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ihttpfetcherror.response.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) > [response](./kibana-plugin-public.ihttpfetcherror.response.md) + +## IHttpFetchError.response property + +Signature: + +```typescript +readonly response?: Response; +``` diff --git a/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halt.md b/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halt.md new file mode 100644 index 0000000000000..6bd3e2e397b91 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halt.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md) > [halt](./kibana-plugin-public.ihttpinterceptcontroller.halt.md) + +## IHttpInterceptController.halt() method + +Halt the request Promise chain and do not process further interceptors or response handlers. + +Signature: + +```typescript +halt(): void; +``` +Returns: + +`void` + diff --git a/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halted.md b/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halted.md new file mode 100644 index 0000000000000..2e61e8da56e6f --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.halted.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md) > [halted](./kibana-plugin-public.ihttpinterceptcontroller.halted.md) + +## IHttpInterceptController.halted property + +Whether or not this chain has been halted. + +Signature: + +```typescript +halted: boolean; +``` diff --git a/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.md b/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.md new file mode 100644 index 0000000000000..b07d9fceb91f0 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.ihttpinterceptcontroller.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md) + +## IHttpInterceptController interface + +Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md). + +Signature: + +```typescript +export interface IHttpInterceptController +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [halted](./kibana-plugin-public.ihttpinterceptcontroller.halted.md) | boolean | Whether or not this chain has been halted. | + +## Methods + +| Method | Description | +| --- | --- | +| [halt()](./kibana-plugin-public.ihttpinterceptcontroller.halt.md) | Halt the request Promise chain and do not process further interceptors or response handlers. | + diff --git a/docs/development/core/public/kibana-plugin-public.itoasts.md b/docs/development/core/public/kibana-plugin-public.itoasts.md new file mode 100644 index 0000000000000..2a6d454e2194a --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.itoasts.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [IToasts](./kibana-plugin-public.itoasts.md) + +## IToasts type + +Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-public.toastsapi.md). + +Signature: + +```typescript +export declare type IToasts = Pick; +``` diff --git a/docs/development/core/public/kibana-plugin-public.md b/docs/development/core/public/kibana-plugin-public.md index af181ad131174..3adf68ffb35a8 100644 --- a/docs/development/core/public/kibana-plugin-public.md +++ b/docs/development/core/public/kibana-plugin-public.md @@ -14,11 +14,9 @@ The plugin integrates with the core system via lifecycle events: `setup` | Class | Description | | --- | --- | -| [HttpFetchError](./kibana-plugin-public.httpfetcherror.md) | | -| [HttpInterceptController](./kibana-plugin-public.httpinterceptcontroller.md) | | | [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md) | Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing plugin state. The client-side SavedObjectsClient is a thin convenience library around the SavedObjects HTTP API for interacting with Saved Objects. | | [SimpleSavedObject](./kibana-plugin-public.simplesavedobject.md) | This class is a very simple wrapper for SavedObjects loaded from the server with the [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md).It provides basic functionality for creating/saving/deleting saved objects, but doesn't include any type-specific implementations. | -| [ToastsApi](./kibana-plugin-public.toastsapi.md) | | +| [ToastsApi](./kibana-plugin-public.toastsapi.md) | Methods for adding and removing global toast messages. | | [UiSettingsClient](./kibana-plugin-public.uisettingsclient.md) | | ## Interfaces @@ -46,27 +44,30 @@ The plugin integrates with the core system via lifecycle events: `setup` | [CoreStart](./kibana-plugin-public.corestart.md) | Core services exposed to the Plugin start lifecycle | | [DocLinksStart](./kibana-plugin-public.doclinksstart.md) | | | [EnvironmentMode](./kibana-plugin-public.environmentmode.md) | | -| [ErrorToastOptions](./kibana-plugin-public.errortoastoptions.md) | | +| [ErrorToastOptions](./kibana-plugin-public.errortoastoptions.md) | Options available for [IToasts](./kibana-plugin-public.itoasts.md) APIs. | | [FatalErrorInfo](./kibana-plugin-public.fatalerrorinfo.md) | Represents the message and stack of a fatal Error | | [FatalErrorsSetup](./kibana-plugin-public.fatalerrorssetup.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. | | [HttpErrorRequest](./kibana-plugin-public.httperrorrequest.md) | | | [HttpErrorResponse](./kibana-plugin-public.httperrorresponse.md) | | -| [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) | | +| [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) | All options that may be used with a [HttpHandler](./kibana-plugin-public.httphandler.md). | | [HttpFetchQuery](./kibana-plugin-public.httpfetchquery.md) | | | [HttpHeadersInit](./kibana-plugin-public.httpheadersinit.md) | | -| [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md) | | -| [HttpRequestInit](./kibana-plugin-public.httprequestinit.md) | | +| [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md) | An object that may define global interceptor functions for different parts of the request and response lifecycle. See [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md). | +| [HttpRequestInit](./kibana-plugin-public.httprequestinit.md) | Fetch API options available to [HttpHandler](./kibana-plugin-public.httphandler.md)s. | | [HttpResponse](./kibana-plugin-public.httpresponse.md) | | | [HttpServiceBase](./kibana-plugin-public.httpservicebase.md) | | | [I18nStart](./kibana-plugin-public.i18nstart.md) | I18nStart.Context is required by any localizable React component from @kbn/i18n and @elastic/eui packages and is supposed to be used as the topmost component for any i18n-compatible React tree. | +| [IBasePath](./kibana-plugin-public.ibasepath.md) | APIs for manipulating the basePath on URL segments. | | [IContextContainer](./kibana-plugin-public.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. | +| [IHttpFetchError](./kibana-plugin-public.ihttpfetcherror.md) | | +| [IHttpInterceptController](./kibana-plugin-public.ihttpinterceptcontroller.md) | Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-public.httpinterceptor.md). | | [LegacyCoreSetup](./kibana-plugin-public.legacycoresetup.md) | Setup interface exposed to the legacy platform via the ui/new_platform module. | | [LegacyCoreStart](./kibana-plugin-public.legacycorestart.md) | Start interface exposed to the legacy platform via the ui/new_platform module. | | [LegacyNavLink](./kibana-plugin-public.legacynavlink.md) | | | [NotificationsSetup](./kibana-plugin-public.notificationssetup.md) | | | [NotificationsStart](./kibana-plugin-public.notificationsstart.md) | | | [OverlayBannersStart](./kibana-plugin-public.overlaybannersstart.md) | | -| [OverlayRef](./kibana-plugin-public.overlayref.md) | | +| [OverlayRef](./kibana-plugin-public.overlayref.md) | Returned by [OverlayStart](./kibana-plugin-public.overlaystart.md) methods for closing a mounted overlay. | | [OverlayStart](./kibana-plugin-public.overlaystart.md) | | | [PackageInfo](./kibana-plugin-public.packageinfo.md) | | | [Plugin](./kibana-plugin-public.plugin.md) | The interface that should be returned by a PluginInitializer. | @@ -98,10 +99,11 @@ The plugin integrates with the core system via lifecycle events: `setup` | [HandlerFunction](./kibana-plugin-public.handlerfunction.md) | A function that accepts a context object and an optional number of additional arguments. Used for the generic types in [IContextContainer](./kibana-plugin-public.icontextcontainer.md) | | [HandlerParameters](./kibana-plugin-public.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-public.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-public.handlercontexttype.md). | | [HttpBody](./kibana-plugin-public.httpbody.md) | | -| [HttpHandler](./kibana-plugin-public.httphandler.md) | | -| [HttpSetup](./kibana-plugin-public.httpsetup.md) | | -| [HttpStart](./kibana-plugin-public.httpstart.md) | | +| [HttpHandler](./kibana-plugin-public.httphandler.md) | A function for making an HTTP requests to Kibana's backend. See [HttpFetchOptions](./kibana-plugin-public.httpfetchoptions.md) for options and [HttpBody](./kibana-plugin-public.httpbody.md) for the response. | +| [HttpSetup](./kibana-plugin-public.httpsetup.md) | See [HttpServiceBase](./kibana-plugin-public.httpservicebase.md) | +| [HttpStart](./kibana-plugin-public.httpstart.md) | See [HttpServiceBase](./kibana-plugin-public.httpservicebase.md) | | [IContextProvider](./kibana-plugin-public.icontextprovider.md) | A function that returns a context value for a specific key of given context type. | +| [IToasts](./kibana-plugin-public.itoasts.md) | Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-public.toastsapi.md). | | [OverlayBannerMount](./kibana-plugin-public.overlaybannermount.md) | A function that will mount the banner inside the provided element. | | [OverlayBannerUnmount](./kibana-plugin-public.overlaybannerunmount.md) | A function that will unmount the banner from the element. | | [PluginInitializer](./kibana-plugin-public.plugininitializer.md) | The plugin export at the root of a plugin's public directory should conform to this interface. | @@ -110,6 +112,9 @@ The plugin integrates with the core system via lifecycle events: `setup` | [SavedObjectAttribute](./kibana-plugin-public.savedobjectattribute.md) | Type definition for a Saved Object attribute value | | [SavedObjectAttributeSingle](./kibana-plugin-public.savedobjectattributesingle.md) | Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-public.savedobjectattribute.md) | | [SavedObjectsClientContract](./kibana-plugin-public.savedobjectsclientcontract.md) | SavedObjectsClientContract as implemented by the [SavedObjectsClient](./kibana-plugin-public.savedobjectsclient.md) | -| [ToastInput](./kibana-plugin-public.toastinput.md) | | +| [ToastInput](./kibana-plugin-public.toastinput.md) | Inputs for [IToasts](./kibana-plugin-public.itoasts.md) APIs. | +| [ToastInputFields](./kibana-plugin-public.toastinputfields.md) | Allowed fields for [ToastInput](./kibana-plugin-public.toastinput.md). | +| [ToastsSetup](./kibana-plugin-public.toastssetup.md) | [IToasts](./kibana-plugin-public.itoasts.md) | +| [ToastsStart](./kibana-plugin-public.toastsstart.md) | [IToasts](./kibana-plugin-public.itoasts.md) | | [UiSettingsClientContract](./kibana-plugin-public.uisettingsclientcontract.md) | [UiSettingsClient](./kibana-plugin-public.uisettingsclient.md) | diff --git a/docs/development/core/public/kibana-plugin-public.notificationssetup.md b/docs/development/core/public/kibana-plugin-public.notificationssetup.md index 7d9dd2e89f851..c03abf9d01dca 100644 --- a/docs/development/core/public/kibana-plugin-public.notificationssetup.md +++ b/docs/development/core/public/kibana-plugin-public.notificationssetup.md @@ -15,5 +15,5 @@ export interface NotificationsSetup | Property | Type | Description | | --- | --- | --- | -| [toasts](./kibana-plugin-public.notificationssetup.toasts.md) | ToastsSetup | | +| [toasts](./kibana-plugin-public.notificationssetup.toasts.md) | ToastsSetup | [ToastsSetup](./kibana-plugin-public.toastssetup.md) | diff --git a/docs/development/core/public/kibana-plugin-public.notificationssetup.toasts.md b/docs/development/core/public/kibana-plugin-public.notificationssetup.toasts.md index c44ec9ca93e65..dd613a959061e 100644 --- a/docs/development/core/public/kibana-plugin-public.notificationssetup.toasts.md +++ b/docs/development/core/public/kibana-plugin-public.notificationssetup.toasts.md @@ -4,6 +4,8 @@ ## NotificationsSetup.toasts property +[ToastsSetup](./kibana-plugin-public.toastssetup.md) + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.notificationsstart.md b/docs/development/core/public/kibana-plugin-public.notificationsstart.md index acab2d6884418..56a1ce2095742 100644 --- a/docs/development/core/public/kibana-plugin-public.notificationsstart.md +++ b/docs/development/core/public/kibana-plugin-public.notificationsstart.md @@ -15,5 +15,5 @@ export interface NotificationsStart | Property | Type | Description | | --- | --- | --- | -| [toasts](./kibana-plugin-public.notificationsstart.toasts.md) | ToastsStart | | +| [toasts](./kibana-plugin-public.notificationsstart.toasts.md) | ToastsStart | [ToastsStart](./kibana-plugin-public.toastsstart.md) | diff --git a/docs/development/core/public/kibana-plugin-public.notificationsstart.toasts.md b/docs/development/core/public/kibana-plugin-public.notificationsstart.toasts.md index db2be3dad8351..9d2c685946fda 100644 --- a/docs/development/core/public/kibana-plugin-public.notificationsstart.toasts.md +++ b/docs/development/core/public/kibana-plugin-public.notificationsstart.toasts.md @@ -4,6 +4,8 @@ ## NotificationsStart.toasts property +[ToastsStart](./kibana-plugin-public.toastsstart.md) + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.overlayref.md b/docs/development/core/public/kibana-plugin-public.overlayref.md index ba573ccf10bbe..e71415280e4d2 100644 --- a/docs/development/core/public/kibana-plugin-public.overlayref.md +++ b/docs/development/core/public/kibana-plugin-public.overlayref.md @@ -4,6 +4,8 @@ ## OverlayRef interface +Returned by [OverlayStart](./kibana-plugin-public.overlaystart.md) methods for closing a mounted overlay. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.toastinput.md b/docs/development/core/public/kibana-plugin-public.toastinput.md index 8e798697fa6c0..75f12b3d94561 100644 --- a/docs/development/core/public/kibana-plugin-public.toastinput.md +++ b/docs/development/core/public/kibana-plugin-public.toastinput.md @@ -4,6 +4,7 @@ ## ToastInput type +Inputs for [IToasts](./kibana-plugin-public.itoasts.md) APIs. Signature: diff --git a/docs/development/core/public/kibana-plugin-public.toastinputfields.md b/docs/development/core/public/kibana-plugin-public.toastinputfields.md new file mode 100644 index 0000000000000..ffcf9e5c6dea2 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.toastinputfields.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ToastInputFields](./kibana-plugin-public.toastinputfields.md) + +## ToastInputFields type + +Allowed fields for [ToastInput](./kibana-plugin-public.toastinput.md). + +Signature: + +```typescript +export declare type ToastInputFields = Pick>; +``` + +## Remarks + +`id` cannot be specified. + diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.add.md b/docs/development/core/public/kibana-plugin-public.toastsapi.add.md index a59c11d0d5f53..8e9648031f0e2 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.add.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.add.md @@ -4,6 +4,8 @@ ## ToastsApi.add() method +Adds a new toast to current array of toast. + Signature: ```typescript @@ -14,9 +16,11 @@ add(toastOrTitle: ToastInput): Toast; | Parameter | Type | Description | | --- | --- | --- | -| toastOrTitle | ToastInput | | +| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-public.toastinput.md) | Returns: `Toast` +a + diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.adddanger.md b/docs/development/core/public/kibana-plugin-public.toastsapi.adddanger.md index 3f9e6b1c389da..28e596f0c09e3 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.adddanger.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.adddanger.md @@ -4,6 +4,8 @@ ## ToastsApi.addDanger() method +Adds a new toast pre-configured with the danger color and alert icon. + Signature: ```typescript @@ -14,9 +16,11 @@ addDanger(toastOrTitle: ToastInput): Toast; | Parameter | Type | Description | | --- | --- | --- | -| toastOrTitle | ToastInput | | +| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-public.toastinput.md) | Returns: `Toast` +a + diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.adderror.md b/docs/development/core/public/kibana-plugin-public.toastsapi.adderror.md index 10aaf50ebab4d..c8a48b3fa46c9 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.adderror.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.adderror.md @@ -4,6 +4,8 @@ ## ToastsApi.addError() method +Adds a new toast that displays an exception message with a button to open the full stacktrace in a modal. + Signature: ```typescript @@ -14,10 +16,12 @@ addError(error: Error, options: ErrorToastOptions): Toast; | Parameter | Type | Description | | --- | --- | --- | -| error | Error | | -| options | ErrorToastOptions | | +| error | Error | an Error instance. | +| options | ErrorToastOptions | [ErrorToastOptions](./kibana-plugin-public.errortoastoptions.md) | Returns: `Toast` +a + diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.addsuccess.md b/docs/development/core/public/kibana-plugin-public.toastsapi.addsuccess.md index 5aff3229b3c81..0e01dc1364d07 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.addsuccess.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.addsuccess.md @@ -4,6 +4,8 @@ ## ToastsApi.addSuccess() method +Adds a new toast pre-configured with the success color and check icon. + Signature: ```typescript @@ -14,9 +16,11 @@ addSuccess(toastOrTitle: ToastInput): Toast; | Parameter | Type | Description | | --- | --- | --- | -| toastOrTitle | ToastInput | | +| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-public.toastinput.md) | Returns: `Toast` +a + diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.addwarning.md b/docs/development/core/public/kibana-plugin-public.toastsapi.addwarning.md index 3b68f0b7fe22a..0e236f2737b12 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.addwarning.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.addwarning.md @@ -4,6 +4,8 @@ ## ToastsApi.addWarning() method +Adds a new toast pre-configured with the warning color and help icon. + Signature: ```typescript @@ -14,9 +16,11 @@ addWarning(toastOrTitle: ToastInput): Toast; | Parameter | Type | Description | | --- | --- | --- | -| toastOrTitle | ToastInput | | +| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-public.toastinput.md) | Returns: `Toast` +a + diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.get_.md b/docs/development/core/public/kibana-plugin-public.toastsapi.get_.md index 1761fa21b70e8..48e4fdc7a2ec0 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.get_.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.get_.md @@ -4,6 +4,8 @@ ## ToastsApi.get$() method +Observable of the toast messages to show to the user. + Signature: ```typescript diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.md b/docs/development/core/public/kibana-plugin-public.toastsapi.md index 1d5e0382d9465..e47f6d5c8ac59 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.md @@ -4,11 +4,12 @@ ## ToastsApi class +Methods for adding and removing global toast messages. Signature: ```typescript -export declare class ToastsApi +export declare class ToastsApi implements IToasts ``` ## Constructors @@ -21,12 +22,11 @@ export declare class ToastsApi | Method | Modifiers | Description | | --- | --- | --- | -| [add(toastOrTitle)](./kibana-plugin-public.toastsapi.add.md) | | | -| [addDanger(toastOrTitle)](./kibana-plugin-public.toastsapi.adddanger.md) | | | -| [addError(error, options)](./kibana-plugin-public.toastsapi.adderror.md) | | | -| [addSuccess(toastOrTitle)](./kibana-plugin-public.toastsapi.addsuccess.md) | | | -| [addWarning(toastOrTitle)](./kibana-plugin-public.toastsapi.addwarning.md) | | | -| [get$()](./kibana-plugin-public.toastsapi.get_.md) | | | -| [registerOverlays(overlays)](./kibana-plugin-public.toastsapi.registeroverlays.md) | | | -| [remove(toast)](./kibana-plugin-public.toastsapi.remove.md) | | | +| [add(toastOrTitle)](./kibana-plugin-public.toastsapi.add.md) | | Adds a new toast to current array of toast. | +| [addDanger(toastOrTitle)](./kibana-plugin-public.toastsapi.adddanger.md) | | Adds a new toast pre-configured with the danger color and alert icon. | +| [addError(error, options)](./kibana-plugin-public.toastsapi.adderror.md) | | Adds a new toast that displays an exception message with a button to open the full stacktrace in a modal. | +| [addSuccess(toastOrTitle)](./kibana-plugin-public.toastsapi.addsuccess.md) | | Adds a new toast pre-configured with the success color and check icon. | +| [addWarning(toastOrTitle)](./kibana-plugin-public.toastsapi.addwarning.md) | | Adds a new toast pre-configured with the warning color and help icon. | +| [get$()](./kibana-plugin-public.toastsapi.get_.md) | | Observable of the toast messages to show to the user. | +| [remove(toast)](./kibana-plugin-public.toastsapi.remove.md) | | Removes a toast from the current array of toasts if present. | diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.registeroverlays.md b/docs/development/core/public/kibana-plugin-public.toastsapi.registeroverlays.md deleted file mode 100644 index 31601e9b215bc..0000000000000 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.registeroverlays.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ToastsApi](./kibana-plugin-public.toastsapi.md) > [registerOverlays](./kibana-plugin-public.toastsapi.registeroverlays.md) - -## ToastsApi.registerOverlays() method - -Signature: - -```typescript -registerOverlays(overlays: OverlayStart): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| overlays | OverlayStart | | - -Returns: - -`void` - diff --git a/docs/development/core/public/kibana-plugin-public.toastsapi.remove.md b/docs/development/core/public/kibana-plugin-public.toastsapi.remove.md index 822677a42b630..5025c83a666c8 100644 --- a/docs/development/core/public/kibana-plugin-public.toastsapi.remove.md +++ b/docs/development/core/public/kibana-plugin-public.toastsapi.remove.md @@ -4,6 +4,8 @@ ## ToastsApi.remove() method +Removes a toast from the current array of toasts if present. + Signature: ```typescript @@ -14,7 +16,7 @@ remove(toast: Toast): void; | Parameter | Type | Description | | --- | --- | --- | -| toast | Toast | | +| toast | Toast | a returned by | Returns: diff --git a/docs/development/core/public/kibana-plugin-public.toastssetup.md b/docs/development/core/public/kibana-plugin-public.toastssetup.md new file mode 100644 index 0000000000000..e06dd7f7093bb --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.toastssetup.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ToastsSetup](./kibana-plugin-public.toastssetup.md) + +## ToastsSetup type + +[IToasts](./kibana-plugin-public.itoasts.md) + +Signature: + +```typescript +export declare type ToastsSetup = IToasts; +``` diff --git a/docs/development/core/public/kibana-plugin-public.toastsstart.md b/docs/development/core/public/kibana-plugin-public.toastsstart.md new file mode 100644 index 0000000000000..6e090dcdc64fb --- /dev/null +++ b/docs/development/core/public/kibana-plugin-public.toastsstart.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ToastsStart](./kibana-plugin-public.toastsstart.md) + +## ToastsStart type + +[IToasts](./kibana-plugin-public.itoasts.md) + +Signature: + +```typescript +export declare type ToastsStart = IToasts; +``` diff --git a/docs/development/core/server/kibana-plugin-server.assistanceapiresponse.md b/docs/development/core/server/kibana-plugin-server.assistanceapiresponse.md index 8e8dfb07ca08a..398fe62ce2479 100644 --- a/docs/development/core/server/kibana-plugin-server.assistanceapiresponse.md +++ b/docs/development/core/server/kibana-plugin-server.assistanceapiresponse.md @@ -4,6 +4,7 @@ ## AssistanceAPIResponse interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.assistantapiclientparams.md b/docs/development/core/server/kibana-plugin-server.assistantapiclientparams.md index eb03b943a30ef..cf7ca56c8a75e 100644 --- a/docs/development/core/server/kibana-plugin-server.assistantapiclientparams.md +++ b/docs/development/core/server/kibana-plugin-server.assistantapiclientparams.md @@ -4,6 +4,7 @@ ## AssistantAPIClientParams interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.authenticated.md b/docs/development/core/server/kibana-plugin-server.authenticated.md new file mode 100644 index 0000000000000..d955f1f32f1f7 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.authenticated.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [Authenticated](./kibana-plugin-server.authenticated.md) + +## Authenticated interface + + +Signature: + +```typescript +export interface Authenticated extends AuthResultParams +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [type](./kibana-plugin-server.authenticated.type.md) | AuthResultType.authenticated | | + diff --git a/docs/development/core/server/kibana-plugin-server.authenticated.type.md b/docs/development/core/server/kibana-plugin-server.authenticated.type.md new file mode 100644 index 0000000000000..08a73e812d157 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.authenticated.type.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [Authenticated](./kibana-plugin-server.authenticated.md) > [type](./kibana-plugin-server.authenticated.type.md) + +## Authenticated.type property + +Signature: + +```typescript +type: AuthResultType.authenticated; +``` diff --git a/docs/development/core/server/kibana-plugin-server.authenticationhandler.md b/docs/development/core/server/kibana-plugin-server.authenticationhandler.md index ced5cfd9413ec..ff60e6e811ed6 100644 --- a/docs/development/core/server/kibana-plugin-server.authenticationhandler.md +++ b/docs/development/core/server/kibana-plugin-server.authenticationhandler.md @@ -4,9 +4,10 @@ ## AuthenticationHandler type +See [AuthToolkit](./kibana-plugin-server.authtoolkit.md). Signature: ```typescript -export declare type AuthenticationHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: AuthToolkit) => AuthResult | KibanaResponse | Promise; +export declare type AuthenticationHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: AuthToolkit) => AuthResult | IKibanaResponse | Promise; ``` diff --git a/docs/development/core/server/kibana-plugin-server.authresult.md b/docs/development/core/server/kibana-plugin-server.authresult.md new file mode 100644 index 0000000000000..5d1bdbc8e7118 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.authresult.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [AuthResult](./kibana-plugin-server.authresult.md) + +## AuthResult type + + +Signature: + +```typescript +export declare type AuthResult = Authenticated; +``` diff --git a/docs/development/core/server/kibana-plugin-server.authresulttype.md b/docs/development/core/server/kibana-plugin-server.authresulttype.md new file mode 100644 index 0000000000000..e8962cb14d198 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.authresulttype.md @@ -0,0 +1,19 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [AuthResultType](./kibana-plugin-server.authresulttype.md) + +## AuthResultType enum + + +Signature: + +```typescript +export declare enum AuthResultType +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| authenticated | "authenticated" | | + diff --git a/docs/development/core/server/kibana-plugin-server.basepath.md b/docs/development/core/server/kibana-plugin-server.basepath.md index bfa1ea02aec17..da833c71bf93b 100644 --- a/docs/development/core/server/kibana-plugin-server.basepath.md +++ b/docs/development/core/server/kibana-plugin-server.basepath.md @@ -17,8 +17,8 @@ export declare class BasePath | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [get](./kibana-plugin-server.basepath.get.md) | | (request: LegacyRequest | KibanaRequest<unknown, unknown, unknown>) => string | returns basePath value, specific for an incoming request. | -| [prepend](./kibana-plugin-server.basepath.prepend.md) | | (path: string) => string | returns a new basePath value, prefixed with passed url. | -| [remove](./kibana-plugin-server.basepath.remove.md) | | (path: string) => string | returns a new basePath value, cleaned up from passed url. | +| [prepend](./kibana-plugin-server.basepath.prepend.md) | | (path: string) => string | Prepends path with the basePath. | +| [remove](./kibana-plugin-server.basepath.remove.md) | | (path: string) => string | Removes the prepended basePath from the path. | | [serverBasePath](./kibana-plugin-server.basepath.serverbasepath.md) | | string | returns the server's basePathSee [BasePath.get](./kibana-plugin-server.basepath.get.md) for getting the basePath value for a specific request | | [set](./kibana-plugin-server.basepath.set.md) | | (request: LegacyRequest | KibanaRequest<unknown, unknown, unknown>, requestSpecificBasePath: string) => void | sets basePath value, specific for an incoming request. | diff --git a/docs/development/core/server/kibana-plugin-server.basepath.prepend.md b/docs/development/core/server/kibana-plugin-server.basepath.prepend.md index 113e8d9bf4880..9a615dfe80f32 100644 --- a/docs/development/core/server/kibana-plugin-server.basepath.prepend.md +++ b/docs/development/core/server/kibana-plugin-server.basepath.prepend.md @@ -4,7 +4,7 @@ ## BasePath.prepend property -returns a new `basePath` value, prefixed with passed `url`. +Prepends `path` with the basePath. Signature: diff --git a/docs/development/core/server/kibana-plugin-server.basepath.remove.md b/docs/development/core/server/kibana-plugin-server.basepath.remove.md index c5f1092d2969d..8fcfbc2b921d3 100644 --- a/docs/development/core/server/kibana-plugin-server.basepath.remove.md +++ b/docs/development/core/server/kibana-plugin-server.basepath.remove.md @@ -4,7 +4,7 @@ ## BasePath.remove property -returns a new `basePath` value, cleaned up from passed `url`. +Removes the prepended basePath from the `path`. Signature: diff --git a/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md b/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md index f87fc34bdc45f..ed7d028a1ec8a 100644 --- a/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md +++ b/docs/development/core/server/kibana-plugin-server.clusterclient.asscoped.md @@ -4,7 +4,7 @@ ## ClusterClient.asScoped() method -Creates an instance of `ScopedClusterClient` based on the configuration the current cluster client that exposes additional `callAsCurrentUser` method scoped to the provided req. Consumers shouldn't worry about closing scoped client instances, these will be automatically closed as soon as the original cluster client isn't needed anymore and closed. +Creates an instance of [IScopedClusterClient](./kibana-plugin-server.iscopedclusterclient.md) based on the configuration the current cluster client that exposes additional `callAsCurrentUser` method scoped to the provided req. Consumers shouldn't worry about closing scoped client instances, these will be automatically closed as soon as the original cluster client isn't needed anymore and closed. Signature: @@ -16,7 +16,7 @@ asScoped(request?: KibanaRequest | LegacyRequest | FakeRequest): IScopedClusterC | Parameter | Type | Description | | --- | --- | --- | -| request | KibanaRequest | LegacyRequest | FakeRequest | Request the ScopedClusterClient instance will be scoped to. Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform | +| request | KibanaRequest | LegacyRequest | FakeRequest | Request the IScopedClusterClient instance will be scoped to. Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform | Returns: diff --git a/docs/development/core/server/kibana-plugin-server.clusterclient.callasinternaluser.md b/docs/development/core/server/kibana-plugin-server.clusterclient.callasinternaluser.md index 74003189c765d..7afb6afa4bc3b 100644 --- a/docs/development/core/server/kibana-plugin-server.clusterclient.callasinternaluser.md +++ b/docs/development/core/server/kibana-plugin-server.clusterclient.callasinternaluser.md @@ -4,7 +4,7 @@ ## ClusterClient.callAsInternalUser property -Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. +Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [APICaller](./kibana-plugin-server.apicaller.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-server.clusterclient.md b/docs/development/core/server/kibana-plugin-server.clusterclient.md index 6288bc0a07c11..5fdda7ef3e499 100644 --- a/docs/development/core/server/kibana-plugin-server.clusterclient.md +++ b/docs/development/core/server/kibana-plugin-server.clusterclient.md @@ -24,12 +24,12 @@ export declare class ClusterClient implements IClusterClient | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [callAsInternalUser](./kibana-plugin-server.clusterclient.callasinternaluser.md) | | APICaller | Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. | +| [callAsInternalUser](./kibana-plugin-server.clusterclient.callasinternaluser.md) | | APICaller | Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [APICaller](./kibana-plugin-server.apicaller.md). | ## Methods | Method | Modifiers | Description | | --- | --- | --- | -| [asScoped(request)](./kibana-plugin-server.clusterclient.asscoped.md) | | Creates an instance of ScopedClusterClient based on the configuration the current cluster client that exposes additional callAsCurrentUser method scoped to the provided req. Consumers shouldn't worry about closing scoped client instances, these will be automatically closed as soon as the original cluster client isn't needed anymore and closed. | +| [asScoped(request)](./kibana-plugin-server.clusterclient.asscoped.md) | | Creates an instance of [IScopedClusterClient](./kibana-plugin-server.iscopedclusterclient.md) based on the configuration the current cluster client that exposes additional callAsCurrentUser method scoped to the provided req. Consumers shouldn't worry about closing scoped client instances, these will be automatically closed as soon as the original cluster client isn't needed anymore and closed. | | [close()](./kibana-plugin-server.clusterclient.close.md) | | Closes the cluster client. After that client cannot be used and one should create a new client instance to be able to interact with Elasticsearch API. | diff --git a/docs/development/core/server/kibana-plugin-server.contextsetup.md b/docs/development/core/server/kibana-plugin-server.contextsetup.md index 0b4f5aa5d403b..67504faf0534a 100644 --- a/docs/development/core/server/kibana-plugin-server.contextsetup.md +++ b/docs/development/core/server/kibana-plugin-server.contextsetup.md @@ -91,18 +91,17 @@ export interface VizRenderContext { } export type VizRenderer = (context: VizRenderContext, domElement: HTMLElement) => () => void; +// When a renderer is bound via `contextContainer.createHandler` this is the type that will be returned. +type BoundVizRenderer = (domElement: HTMLElement) => () => void; class VizRenderingPlugin { - private readonly vizRenderers = new Map () => void)>(); + private readonly contextContainer?: IContextContainer; + private readonly vizRenderers = new Map(); constructor(private readonly initContext: PluginInitializerContext) {} setup(core) { - this.contextContainer = core.context.createContextContainer< - VizRenderContext, - ReturnType, - [HTMLElement] - >(); + this.contextContainer = core.context.createContextContainer(); return { registerContext: this.contextContainer.registerContext, diff --git a/docs/development/core/server/kibana-plugin-server.coresetup.context.md b/docs/development/core/server/kibana-plugin-server.coresetup.context.md index e98cd6a0d04e1..63c37eec70b05 100644 --- a/docs/development/core/server/kibana-plugin-server.coresetup.context.md +++ b/docs/development/core/server/kibana-plugin-server.coresetup.context.md @@ -4,10 +4,10 @@ ## CoreSetup.context property +[ContextSetup](./kibana-plugin-server.contextsetup.md) + Signature: ```typescript -context: { - createContextContainer: ContextSetup['createContextContainer']; - }; +context: ContextSetup; ``` diff --git a/docs/development/core/server/kibana-plugin-server.coresetup.elasticsearch.md b/docs/development/core/server/kibana-plugin-server.coresetup.elasticsearch.md index dfe1839babdad..9498e0223350d 100644 --- a/docs/development/core/server/kibana-plugin-server.coresetup.elasticsearch.md +++ b/docs/development/core/server/kibana-plugin-server.coresetup.elasticsearch.md @@ -4,12 +4,10 @@ ## CoreSetup.elasticsearch property +[ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) + Signature: ```typescript -elasticsearch: { - adminClient$: Observable; - dataClient$: Observable; - createClient: (type: string, clientConfig?: Partial) => IClusterClient; - }; +elasticsearch: ElasticsearchServiceSetup; ``` diff --git a/docs/development/core/server/kibana-plugin-server.coresetup.http.md b/docs/development/core/server/kibana-plugin-server.coresetup.http.md index 8474f4ef940dc..09b12bca7b275 100644 --- a/docs/development/core/server/kibana-plugin-server.coresetup.http.md +++ b/docs/development/core/server/kibana-plugin-server.coresetup.http.md @@ -4,17 +4,10 @@ ## CoreSetup.http property +[HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) + Signature: ```typescript -http: { - createCookieSessionStorageFactory: HttpServiceSetup['createCookieSessionStorageFactory']; - registerOnPreAuth: HttpServiceSetup['registerOnPreAuth']; - registerAuth: HttpServiceSetup['registerAuth']; - registerOnPostAuth: HttpServiceSetup['registerOnPostAuth']; - basePath: HttpServiceSetup['basePath']; - isTlsEnabled: HttpServiceSetup['isTlsEnabled']; - registerRouteHandlerContext: (name: T, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; - createRouter: () => IRouter; - }; +http: HttpServiceSetup; ``` diff --git a/docs/development/core/server/kibana-plugin-server.coresetup.md b/docs/development/core/server/kibana-plugin-server.coresetup.md index a53f807d001bd..a6dda69fd154e 100644 --- a/docs/development/core/server/kibana-plugin-server.coresetup.md +++ b/docs/development/core/server/kibana-plugin-server.coresetup.md @@ -16,7 +16,7 @@ export interface CoreSetup | Property | Type | Description | | --- | --- | --- | -| [context](./kibana-plugin-server.coresetup.context.md) | {
createContextContainer: ContextSetup['createContextContainer'];
} | | -| [elasticsearch](./kibana-plugin-server.coresetup.elasticsearch.md) | {
adminClient$: Observable<IClusterClient>;
dataClient$: Observable<IClusterClient>;
createClient: (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => IClusterClient;
} | | -| [http](./kibana-plugin-server.coresetup.http.md) | {
createCookieSessionStorageFactory: HttpServiceSetup['createCookieSessionStorageFactory'];
registerOnPreAuth: HttpServiceSetup['registerOnPreAuth'];
registerAuth: HttpServiceSetup['registerAuth'];
registerOnPostAuth: HttpServiceSetup['registerOnPostAuth'];
basePath: HttpServiceSetup['basePath'];
isTlsEnabled: HttpServiceSetup['isTlsEnabled'];
registerRouteHandlerContext: <T extends keyof RequestHandlerContext>(name: T, provider: RequestHandlerContextProvider<T>) => RequestHandlerContextContainer;
createRouter: () => IRouter;
} | | +| [context](./kibana-plugin-server.coresetup.context.md) | ContextSetup | [ContextSetup](./kibana-plugin-server.contextsetup.md) | +| [elasticsearch](./kibana-plugin-server.coresetup.elasticsearch.md) | ElasticsearchServiceSetup | [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) | +| [http](./kibana-plugin-server.coresetup.http.md) | HttpServiceSetup | [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) | diff --git a/docs/development/core/server/kibana-plugin-server.deprecationapiclientparams.md b/docs/development/core/server/kibana-plugin-server.deprecationapiclientparams.md index 3dfe6b181a3d3..47af79ae464b2 100644 --- a/docs/development/core/server/kibana-plugin-server.deprecationapiclientparams.md +++ b/docs/development/core/server/kibana-plugin-server.deprecationapiclientparams.md @@ -4,6 +4,7 @@ ## DeprecationAPIClientParams interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.deprecationapiresponse.md b/docs/development/core/server/kibana-plugin-server.deprecationapiresponse.md index 8ebe61f4efaa5..5a2954d10c161 100644 --- a/docs/development/core/server/kibana-plugin-server.deprecationapiresponse.md +++ b/docs/development/core/server/kibana-plugin-server.deprecationapiresponse.md @@ -4,6 +4,7 @@ ## DeprecationAPIResponse interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.deprecationinfo.md b/docs/development/core/server/kibana-plugin-server.deprecationinfo.md index 21c10bde26378..c27f5d3404c22 100644 --- a/docs/development/core/server/kibana-plugin-server.deprecationinfo.md +++ b/docs/development/core/server/kibana-plugin-server.deprecationinfo.md @@ -4,6 +4,7 @@ ## DeprecationInfo interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearcherror.md b/docs/development/core/server/kibana-plugin-server.elasticsearcherror.md index a1d15704d5e1c..9d9e21c44760c 100644 --- a/docs/development/core/server/kibana-plugin-server.elasticsearcherror.md +++ b/docs/development/core/server/kibana-plugin-server.elasticsearcherror.md @@ -4,6 +4,7 @@ ## ElasticsearchError interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md index 31cf07ac66a46..b5bfc68d3ca0c 100644 --- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md +++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.adminclient_.md @@ -4,6 +4,14 @@ ## ElasticsearchServiceSetup.adminClient$ property +Observable of clients for the `admin` cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). + + +```js +const client = await elasticsearch.adminClient$.pipe(take(1)).toPromise(); + +``` + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md index 34d04d26e9654..3d26f2d4cec88 100644 --- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md +++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.createclient.md @@ -4,7 +4,7 @@ ## ElasticsearchServiceSetup.createClient property -Create application specific Elasticsearch cluster API client with customized config. +Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md index 240dff2e53635..9411f2f6b8694 100644 --- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md +++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.dataclient_.md @@ -4,6 +4,14 @@ ## ElasticsearchServiceSetup.dataClient$ property +Observable of clients for the `data` cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). + + +```js +const client = await elasticsearch.dataClient$.pipe(take(1)).toPromise(); + +``` + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.legacy.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.legacy.md deleted file mode 100644 index 6040b407dd415..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.legacy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-server.elasticsearchservicesetup.md) > [legacy](./kibana-plugin-server.elasticsearchservicesetup.legacy.md) - -## ElasticsearchServiceSetup.legacy property - -Signature: - -```typescript -readonly legacy: { - readonly config$: Observable; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md index 9c3b92a88fe07..e3d151cdc0d8b 100644 --- a/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md +++ b/docs/development/core/server/kibana-plugin-server.elasticsearchservicesetup.md @@ -15,8 +15,17 @@ export interface ElasticsearchServiceSetup | Property | Type | Description | | --- | --- | --- | -| [adminClient$](./kibana-plugin-server.elasticsearchservicesetup.adminclient_.md) | Observable<IClusterClient> | | -| [createClient](./kibana-plugin-server.elasticsearchservicesetup.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => IClusterClient | Create application specific Elasticsearch cluster API client with customized config. | -| [dataClient$](./kibana-plugin-server.elasticsearchservicesetup.dataclient_.md) | Observable<IClusterClient> | | -| [legacy](./kibana-plugin-server.elasticsearchservicesetup.legacy.md) | {
readonly config$: Observable<ElasticsearchConfig>;
} | | +| [adminClient$](./kibana-plugin-server.elasticsearchservicesetup.adminclient_.md) | Observable<IClusterClient> | Observable of clients for the admin cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). +```js +const client = await elasticsearch.adminClient$.pipe(take(1)).toPromise(); + +``` + | +| [createClient](./kibana-plugin-server.elasticsearchservicesetup.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => IClusterClient | Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). | +| [dataClient$](./kibana-plugin-server.elasticsearchservicesetup.dataclient_.md) | Observable<IClusterClient> | Observable of clients for the data cluster. Observable emits when Elasticsearch config changes on the Kibana server. See [IClusterClient](./kibana-plugin-server.iclusterclient.md). +```js +const client = await elasticsearch.dataClient$.pipe(take(1)).toPromise(); + +``` + | diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.auth.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.auth.md deleted file mode 100644 index e39c3c6316768..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.auth.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [auth](./kibana-plugin-server.httpserversetup.auth.md) - -## HttpServerSetup.auth property - -Signature: - -```typescript -auth: { - get: GetAuthState; - isAuthenticated: IsAuthenticated; - getAuthHeaders: GetAuthHeaders; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.basepath.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.basepath.md deleted file mode 100644 index 173262de10494..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.basepath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [basePath](./kibana-plugin-server.httpserversetup.basepath.md) - -## HttpServerSetup.basePath property - -[BasePath](./kibana-plugin-server.basepath.md) - -Signature: - -```typescript -basePath: IBasePath; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.md deleted file mode 100644 index 7a126383116e7..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.md +++ /dev/null @@ -1,93 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) - -## HttpServerSetup interface - -Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to `hapi` server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. - -Signature: - -```typescript -export interface HttpServerSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [auth](./kibana-plugin-server.httpserversetup.auth.md) | {
get: GetAuthState;
isAuthenticated: IsAuthenticated;
getAuthHeaders: GetAuthHeaders;
} | | -| [basePath](./kibana-plugin-server.httpserversetup.basepath.md) | IBasePath | [BasePath](./kibana-plugin-server.basepath.md) | -| [createCookieSessionStorageFactory](./kibana-plugin-server.httpserversetup.createcookiesessionstoragefactory.md) | <T>(cookieOptions: SessionStorageCookieOptions<T>) => Promise<SessionStorageFactory<T>> | Creates cookie based session storage factory [SessionStorageFactory](./kibana-plugin-server.sessionstoragefactory.md) | -| [isTlsEnabled](./kibana-plugin-server.httpserversetup.istlsenabled.md) | boolean | Flag showing whether a server was configured to use TLS connection. | -| [registerAuth](./kibana-plugin-server.httpserversetup.registerauth.md) | (handler: AuthenticationHandler) => void | To define custom authentication and/or authorization mechanism for incoming requests. A handler should return a state to associate with the incoming request. The state can be retrieved later via http.auth.get(..) Only one AuthenticationHandler can be registered. | -| [registerOnPostAuth](./kibana-plugin-server.httpserversetup.registeronpostauth.md) | (handler: OnPostAuthHandler) => void | To define custom logic to perform for incoming requests. Runs the handler after Auth interceptor did make sure a user has access to the requested resource. The auth state is available at stage via http.auth.get(..) Can register any number of registerOnPreAuth, which are called in sequence (from the first registered to the last). | -| [registerOnPreAuth](./kibana-plugin-server.httpserversetup.registeronpreauth.md) | (handler: OnPreAuthHandler) => void | To define custom logic to perform for incoming requests. Runs the handler before Auth interceptor performs a check that user has access to requested resources, so it's the only place when you can forward a request to another URL right on the server. Can register any number of registerOnPostAuth, which are called in sequence (from the first registered to the last). | -| [registerRouter](./kibana-plugin-server.httpserversetup.registerrouter.md) | (router: IRouter) => void | Add all the routes registered with router to HTTP server request listeners. | -| [server](./kibana-plugin-server.httpserversetup.server.md) | Server | | - -## Example - -To handle an incoming request in your plugin you should: - Create a `Router` instance. Router is already configured to use `plugin-id` to prefix path segment for your routes. - -```ts -const router = httpSetup.createRouter(); - -``` -- Use `@kbn/config-schema` package to create a schema to validate the request `params`, `query`, and `body`. Every incoming request will be validated against the created schema. If validation failed, the request is rejected with `400` status and `Bad request` error without calling the route's handler. To opt out of validating the request, specify `false`. - -```ts -import { schema, TypeOf } from '@kbn/config-schema'; -const validate = { - params: schema.object({ - id: schema.string(), - }), -}; - -``` -- Declare a function to respond to incoming request. The function will receive `request` object containing request details: url, headers, matched route, as well as validated `params`, `query`, `body`. And `response` object instructing HTTP server to create HTTP response with information sent back to the client as the response body, headers, and HTTP status. Unlike, `hapi` route handler in the Legacy platform, any exception raised during the handler call will generate `500 Server error` response and log error details for further investigation. See below for returning custom error responses. - -```ts -const handler = async (context: RequestHandlerContext, request: KibanaRequest, response: ResponseFactory) => { - const data = await findObject(request.params.id); - // creates a command to respond with 'not found' error - if (!data) return response.notFound(); - // creates a command to send found data to the client and set response headers - return response.ok({ - body: data, - headers: { - 'content-type': 'application/json' - } - }); -} - -``` -- Register route handler for GET request to 'my-app/path/{id}' path - -```ts -import { schema, TypeOf } from '@kbn/config-schema'; -const router = httpSetup.createRouter(); - -const validate = { - params: schema.object({ - id: schema.string(), - }), -}; - -router.get({ - path: 'path/{id}', - validate -}, -async (context, request, response) => { - const data = await findObject(request.params.id); - if (!data) return response.notFound(); - return response.ok({ - body: data, - headers: { - 'content-type': 'application/json' - } - }); -}); - -``` - diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.registerauth.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.registerauth.md deleted file mode 100644 index 6e63e0996a63a..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.registerauth.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [registerAuth](./kibana-plugin-server.httpserversetup.registerauth.md) - -## HttpServerSetup.registerAuth property - -To define custom authentication and/or authorization mechanism for incoming requests. A handler should return a state to associate with the incoming request. The state can be retrieved later via http.auth.get(..) Only one AuthenticationHandler can be registered. - -Signature: - -```typescript -registerAuth: (handler: AuthenticationHandler) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpostauth.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpostauth.md deleted file mode 100644 index c74a67da350ec..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpostauth.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [registerOnPostAuth](./kibana-plugin-server.httpserversetup.registeronpostauth.md) - -## HttpServerSetup.registerOnPostAuth property - -To define custom logic to perform for incoming requests. Runs the handler after Auth interceptor did make sure a user has access to the requested resource. The auth state is available at stage via http.auth.get(..) Can register any number of registerOnPreAuth, which are called in sequence (from the first registered to the last). - -Signature: - -```typescript -registerOnPostAuth: (handler: OnPostAuthHandler) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpreauth.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpreauth.md deleted file mode 100644 index f6efa1c1dd73c..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.registeronpreauth.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [registerOnPreAuth](./kibana-plugin-server.httpserversetup.registeronpreauth.md) - -## HttpServerSetup.registerOnPreAuth property - -To define custom logic to perform for incoming requests. Runs the handler before Auth interceptor performs a check that user has access to requested resources, so it's the only place when you can forward a request to another URL right on the server. Can register any number of registerOnPostAuth, which are called in sequence (from the first registered to the last). - -Signature: - -```typescript -registerOnPreAuth: (handler: OnPreAuthHandler) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.registerrouter.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.registerrouter.md deleted file mode 100644 index 32daa650f8d5d..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.registerrouter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [registerRouter](./kibana-plugin-server.httpserversetup.registerrouter.md) - -## HttpServerSetup.registerRouter property - -Add all the routes registered with `router` to HTTP server request listeners. - -Signature: - -```typescript -registerRouter: (router: IRouter) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.server.md b/docs/development/core/server/kibana-plugin-server.httpserversetup.server.md deleted file mode 100644 index a137eba7c8a5a..0000000000000 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.server.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [server](./kibana-plugin-server.httpserversetup.server.md) - -## HttpServerSetup.server property - -Signature: - -```typescript -server: Server; -``` diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.basepath.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.basepath.md new file mode 100644 index 0000000000000..61390773bd726 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.basepath.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [basePath](./kibana-plugin-server.httpservicesetup.basepath.md) + +## HttpServiceSetup.basePath property + +Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-server.ibasepath.md). + +Signature: + +```typescript +basePath: IBasePath; +``` diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.createcookiesessionstoragefactory.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md similarity index 61% rename from docs/development/core/server/kibana-plugin-server.httpserversetup.createcookiesessionstoragefactory.md rename to docs/development/core/server/kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md index 3dc01a52a2f58..4771836bea477 100644 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.createcookiesessionstoragefactory.md +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [createCookieSessionStorageFactory](./kibana-plugin-server.httpserversetup.createcookiesessionstoragefactory.md) +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [createCookieSessionStorageFactory](./kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md) -## HttpServerSetup.createCookieSessionStorageFactory property +## HttpServiceSetup.createCookieSessionStorageFactory property Creates cookie based session storage factory [SessionStorageFactory](./kibana-plugin-server.sessionstoragefactory.md) diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.createrouter.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.createrouter.md new file mode 100644 index 0000000000000..6431589c55bd1 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.createrouter.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [createRouter](./kibana-plugin-server.httpservicesetup.createrouter.md) + +## HttpServiceSetup.createRouter property + +Provides ability to declare a handler function for a particular path and HTTP request method. + +Signature: + +```typescript +createRouter: () => IRouter; +``` + +## Remarks + +Each route can have only one handler function, which is executed when the route is matched. See the [IRouter](./kibana-plugin-server.irouter.md) documentation for more information. + +## Example + + +```ts +const router = createRouter(); +// handler is called when '${my-plugin-id}/path' resource is requested with `GET` method +router.get({ path: '/path', validate: false }, (context, req, res) => res.ok({ content: 'ok' })); + +``` + diff --git a/docs/development/core/server/kibana-plugin-server.httpserversetup.istlsenabled.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.istlsenabled.md similarity index 56% rename from docs/development/core/server/kibana-plugin-server.httpserversetup.istlsenabled.md rename to docs/development/core/server/kibana-plugin-server.httpservicesetup.istlsenabled.md index 6961d4feeb7c7..06a99e8bf3013 100644 --- a/docs/development/core/server/kibana-plugin-server.httpserversetup.istlsenabled.md +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.istlsenabled.md @@ -1,8 +1,8 @@ -[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) > [isTlsEnabled](./kibana-plugin-server.httpserversetup.istlsenabled.md) +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [isTlsEnabled](./kibana-plugin-server.httpservicesetup.istlsenabled.md) -## HttpServerSetup.isTlsEnabled property +## HttpServiceSetup.isTlsEnabled property Flag showing whether a server was configured to use TLS connection. diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.md index eec63cf5c8093..d943ad53af843 100644 --- a/docs/development/core/server/kibana-plugin-server.httpservicesetup.md +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.md @@ -2,14 +2,91 @@ [Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) -## HttpServiceSetup type +## HttpServiceSetup interface +Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to `hapi` server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. Signature: ```typescript -export declare type HttpServiceSetup = Omit & { - createRouter: (path: string, plugin?: PluginOpaqueId) => IRouter; - registerRouteHandlerContext: (pluginOpaqueId: PluginOpaqueId, contextName: T, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; +export interface HttpServiceSetup +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [basePath](./kibana-plugin-server.httpservicesetup.basepath.md) | IBasePath | Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-server.ibasepath.md). | +| [createCookieSessionStorageFactory](./kibana-plugin-server.httpservicesetup.createcookiesessionstoragefactory.md) | <T>(cookieOptions: SessionStorageCookieOptions<T>) => Promise<SessionStorageFactory<T>> | Creates cookie based session storage factory [SessionStorageFactory](./kibana-plugin-server.sessionstoragefactory.md) | +| [createRouter](./kibana-plugin-server.httpservicesetup.createrouter.md) | () => IRouter | Provides ability to declare a handler function for a particular path and HTTP request method. | +| [isTlsEnabled](./kibana-plugin-server.httpservicesetup.istlsenabled.md) | boolean | Flag showing whether a server was configured to use TLS connection. | +| [registerAuth](./kibana-plugin-server.httpservicesetup.registerauth.md) | (handler: AuthenticationHandler) => void | To define custom authentication and/or authorization mechanism for incoming requests. | +| [registerOnPostAuth](./kibana-plugin-server.httpservicesetup.registeronpostauth.md) | (handler: OnPostAuthHandler) => void | To define custom logic to perform for incoming requests. | +| [registerOnPreAuth](./kibana-plugin-server.httpservicesetup.registeronpreauth.md) | (handler: OnPreAuthHandler) => void | To define custom logic to perform for incoming requests. | +| [registerRouteHandlerContext](./kibana-plugin-server.httpservicesetup.registerroutehandlercontext.md) | <T extends keyof RequestHandlerContext>(contextName: T, provider: RequestHandlerContextProvider<T>) => RequestHandlerContextContainer | Register a context provider for a route handler. | + +## Example + +To handle an incoming request in your plugin you should: - Create a `Router` instance. Router is already configured to use `plugin-id` to prefix path segment for your routes. + +```ts +const router = httpSetup.createRouter(); + +``` +- Use `@kbn/config-schema` package to create a schema to validate the request `params`, `query`, and `body`. Every incoming request will be validated against the created schema. If validation failed, the request is rejected with `400` status and `Bad request` error without calling the route's handler. To opt out of validating the request, specify `false`. + +```ts +import { schema, TypeOf } from '@kbn/config-schema'; +const validate = { + params: schema.object({ + id: schema.string(), + }), +}; + +``` +- Declare a function to respond to incoming request. The function will receive `request` object containing request details: url, headers, matched route, as well as validated `params`, `query`, `body`. And `response` object instructing HTTP server to create HTTP response with information sent back to the client as the response body, headers, and HTTP status. Unlike, `hapi` route handler in the Legacy platform, any exception raised during the handler call will generate `500 Server error` response and log error details for further investigation. See below for returning custom error responses. + +```ts +const handler = async (context: RequestHandlerContext, request: KibanaRequest, response: ResponseFactory) => { + const data = await findObject(request.params.id); + // creates a command to respond with 'not found' error + if (!data) return response.notFound(); + // creates a command to send found data to the client and set response headers + return response.ok({ + body: data, + headers: { + 'content-type': 'application/json' + } + }); +} + +``` +- Register route handler for GET request to 'my-app/path/{id}' path + +```ts +import { schema, TypeOf } from '@kbn/config-schema'; +const router = httpSetup.createRouter(); + +const validate = { + params: schema.object({ + id: schema.string(), + }), }; + +router.get({ + path: 'path/{id}', + validate +}, +async (context, request, response) => { + const data = await findObject(request.params.id); + if (!data) return response.notFound(); + return response.ok({ + body: data, + headers: { + 'content-type': 'application/json' + } + }); +}); + ``` + diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.registerauth.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registerauth.md new file mode 100644 index 0000000000000..be3da1ca1131f --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registerauth.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [registerAuth](./kibana-plugin-server.httpservicesetup.registerauth.md) + +## HttpServiceSetup.registerAuth property + +To define custom authentication and/or authorization mechanism for incoming requests. + +Signature: + +```typescript +registerAuth: (handler: AuthenticationHandler) => void; +``` + +## Remarks + +A handler should return a state to associate with the incoming request. The state can be retrieved later via http.auth.get(..) Only one AuthenticationHandler can be registered. See [AuthenticationHandler](./kibana-plugin-server.authenticationhandler.md). + diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpostauth.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpostauth.md new file mode 100644 index 0000000000000..a3f875c999af1 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpostauth.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [registerOnPostAuth](./kibana-plugin-server.httpservicesetup.registeronpostauth.md) + +## HttpServiceSetup.registerOnPostAuth property + +To define custom logic to perform for incoming requests. + +Signature: + +```typescript +registerOnPostAuth: (handler: OnPostAuthHandler) => void; +``` + +## Remarks + +Runs the handler after Auth interceptor did make sure a user has access to the requested resource. The auth state is available at stage via http.auth.get(..) Can register any number of registerOnPreAuth, which are called in sequence (from the first registered to the last). See [OnPostAuthHandler](./kibana-plugin-server.onpostauthhandler.md). + diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpreauth.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpreauth.md new file mode 100644 index 0000000000000..4c7b688619319 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registeronpreauth.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [registerOnPreAuth](./kibana-plugin-server.httpservicesetup.registeronpreauth.md) + +## HttpServiceSetup.registerOnPreAuth property + +To define custom logic to perform for incoming requests. + +Signature: + +```typescript +registerOnPreAuth: (handler: OnPreAuthHandler) => void; +``` + +## Remarks + +Runs the handler before Auth interceptor performs a check that user has access to requested resources, so it's the only place when you can forward a request to another URL right on the server. Can register any number of registerOnPostAuth, which are called in sequence (from the first registered to the last). See [OnPreAuthHandler](./kibana-plugin-server.onpreauthhandler.md). + diff --git a/docs/development/core/server/kibana-plugin-server.httpservicesetup.registerroutehandlercontext.md b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registerroutehandlercontext.md new file mode 100644 index 0000000000000..339f2eb329c7b --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.httpservicesetup.registerroutehandlercontext.md @@ -0,0 +1,37 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) > [registerRouteHandlerContext](./kibana-plugin-server.httpservicesetup.registerroutehandlercontext.md) + +## HttpServiceSetup.registerRouteHandlerContext property + +Register a context provider for a route handler. + +Signature: + +```typescript +registerRouteHandlerContext: (contextName: T, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; +``` + +## Example + + +```ts + // my-plugin.ts + deps.http.registerRouteHandlerContext( + 'myApp', + (context, req) => { + async function search (id: string) { + return await context.elasticsearch.adminClient.callAsInternalUser('endpoint', id); + } + return { search }; + } + ); + +// my-route-handler.ts + router.get({ path: '/', validate: false }, async (context, req, res) => { + const response = await context.myApp.search(...); + return res.ok(response); + }); + +``` + diff --git a/docs/development/core/server/kibana-plugin-server.ikibanaresponse.md b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.md new file mode 100644 index 0000000000000..4971d6eb97a28 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [IKibanaResponse](./kibana-plugin-server.ikibanaresponse.md) + +## IKibanaResponse interface + +A response data object, expected to returned as a result of [RequestHandler](./kibana-plugin-server.requesthandler.md) execution + +Signature: + +```typescript +export interface IKibanaResponse +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [options](./kibana-plugin-server.ikibanaresponse.options.md) | HttpResponseOptions | | +| [payload](./kibana-plugin-server.ikibanaresponse.payload.md) | T | | +| [status](./kibana-plugin-server.ikibanaresponse.status.md) | number | | + diff --git a/docs/development/core/server/kibana-plugin-server.ikibanaresponse.options.md b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.options.md new file mode 100644 index 0000000000000..988d873c088fe --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.options.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [IKibanaResponse](./kibana-plugin-server.ikibanaresponse.md) > [options](./kibana-plugin-server.ikibanaresponse.options.md) + +## IKibanaResponse.options property + +Signature: + +```typescript +readonly options: HttpResponseOptions; +``` diff --git a/docs/development/core/server/kibana-plugin-server.ikibanaresponse.payload.md b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.payload.md new file mode 100644 index 0000000000000..f1d10c5d22a42 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.payload.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [IKibanaResponse](./kibana-plugin-server.ikibanaresponse.md) > [payload](./kibana-plugin-server.ikibanaresponse.payload.md) + +## IKibanaResponse.payload property + +Signature: + +```typescript +readonly payload?: T; +``` diff --git a/docs/development/core/server/kibana-plugin-server.ikibanaresponse.status.md b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.status.md new file mode 100644 index 0000000000000..b766ff66c357f --- /dev/null +++ b/docs/development/core/server/kibana-plugin-server.ikibanaresponse.status.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-server](./kibana-plugin-server.md) > [IKibanaResponse](./kibana-plugin-server.ikibanaresponse.md) > [status](./kibana-plugin-server.ikibanaresponse.status.md) + +## IKibanaResponse.status property + +Signature: + +```typescript +readonly status: number; +``` diff --git a/docs/development/core/server/kibana-plugin-server.indexsettingsdeprecationinfo.md b/docs/development/core/server/kibana-plugin-server.indexsettingsdeprecationinfo.md index 8fd0c6bb9f997..66b15e532e2ad 100644 --- a/docs/development/core/server/kibana-plugin-server.indexsettingsdeprecationinfo.md +++ b/docs/development/core/server/kibana-plugin-server.indexsettingsdeprecationinfo.md @@ -4,6 +4,7 @@ ## IndexSettingsDeprecationInfo interface + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.irouter.md b/docs/development/core/server/kibana-plugin-server.irouter.md index 2fb2d30eb31d7..bbffe1e42f229 100644 --- a/docs/development/core/server/kibana-plugin-server.irouter.md +++ b/docs/development/core/server/kibana-plugin-server.irouter.md @@ -4,7 +4,7 @@ ## IRouter interface -Registers route handlers for specified resource path and method. +Registers route handlers for specified resource path and method. See [RouteConfig](./kibana-plugin-server.routeconfig.md) and [RequestHandler](./kibana-plugin-server.requesthandler.md) for more information about arguments to route registrations. Signature: diff --git a/docs/development/core/server/kibana-plugin-server.md b/docs/development/core/server/kibana-plugin-server.md index 3e3e2bd57db96..8a259f6870628 100644 --- a/docs/development/core/server/kibana-plugin-server.md +++ b/docs/development/core/server/kibana-plugin-server.md @@ -27,6 +27,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | Enumeration | Description | | --- | --- | +| [AuthResultType](./kibana-plugin-server.authresulttype.md) | | | [AuthStatus](./kibana-plugin-server.authstatus.md) | Status indicating an outcome of the authentication. | ## Interfaces @@ -36,6 +37,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [APICaller](./kibana-plugin-server.apicaller.md) | | | [AssistanceAPIResponse](./kibana-plugin-server.assistanceapiresponse.md) | | | [AssistantAPIClientParams](./kibana-plugin-server.assistantapiclientparams.md) | | +| [Authenticated](./kibana-plugin-server.authenticated.md) | | | [AuthResultParams](./kibana-plugin-server.authresultparams.md) | Result of an incoming request authentication. | | [AuthToolkit](./kibana-plugin-server.authtoolkit.md) | A tool set defining an outcome of Auth interceptor for incoming request. | | [CallAPIOptions](./kibana-plugin-server.callapioptions.md) | The set of options that defines how API call should be made and result be processed. | @@ -53,12 +55,13 @@ The plugin integrates with the core system via lifecycle events: `setup` | [ErrorHttpResponseOptions](./kibana-plugin-server.errorhttpresponseoptions.md) | HTTP response parameters | | [FakeRequest](./kibana-plugin-server.fakerequest.md) | Fake request object created manually by Kibana plugins. | | [HttpResponseOptions](./kibana-plugin-server.httpresponseoptions.md) | HTTP response parameters | -| [HttpServerSetup](./kibana-plugin-server.httpserversetup.md) | Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to hapi server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. | +| [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) | Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to hapi server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. | | [HttpServiceStart](./kibana-plugin-server.httpservicestart.md) | | | [IContextContainer](./kibana-plugin-server.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. | +| [IKibanaResponse](./kibana-plugin-server.ikibanaresponse.md) | A response data object, expected to returned as a result of [RequestHandler](./kibana-plugin-server.requesthandler.md) execution | | [IKibanaSocket](./kibana-plugin-server.ikibanasocket.md) | A tiny abstraction for TCP socket. | | [IndexSettingsDeprecationInfo](./kibana-plugin-server.indexsettingsdeprecationinfo.md) | | -| [IRouter](./kibana-plugin-server.irouter.md) | Registers route handlers for specified resource path and method. | +| [IRouter](./kibana-plugin-server.irouter.md) | Registers route handlers for specified resource path and method. See [RouteConfig](./kibana-plugin-server.routeconfig.md) and [RequestHandler](./kibana-plugin-server.requesthandler.md) for more information about arguments to route registrations. | | [KibanaRequestRoute](./kibana-plugin-server.kibanarequestroute.md) | Request specific route information exposed to a handler. | | [LegacyRequest](./kibana-plugin-server.legacyrequest.md) | | | [LegacyServiceSetupDeps](./kibana-plugin-server.legacyservicesetupdeps.md) | | @@ -118,8 +121,9 @@ The plugin integrates with the core system via lifecycle events: `setup` | Type Alias | Description | | --- | --- | -| [AuthenticationHandler](./kibana-plugin-server.authenticationhandler.md) | | +| [AuthenticationHandler](./kibana-plugin-server.authenticationhandler.md) | See [AuthToolkit](./kibana-plugin-server.authtoolkit.md). | | [AuthHeaders](./kibana-plugin-server.authheaders.md) | Auth Headers map | +| [AuthResult](./kibana-plugin-server.authresult.md) | | | [ConfigPath](./kibana-plugin-server.configpath.md) | | | [ElasticsearchClientConfig](./kibana-plugin-server.elasticsearchclientconfig.md) | | | [GetAuthHeaders](./kibana-plugin-server.getauthheaders.md) | Get headers to authenticate a user against Elasticsearch. | @@ -129,7 +133,6 @@ The plugin integrates with the core system via lifecycle events: `setup` | [HandlerParameters](./kibana-plugin-server.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-server.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-server.handlercontexttype.md). | | [Headers](./kibana-plugin-server.headers.md) | Http request headers to read. | | [HttpResponsePayload](./kibana-plugin-server.httpresponsepayload.md) | Data send to the client as a response payload. | -| [HttpServiceSetup](./kibana-plugin-server.httpservicesetup.md) | | | [IBasePath](./kibana-plugin-server.ibasepath.md) | Access or manipulate the Kibana base path[BasePath](./kibana-plugin-server.basepath.md) | | [IClusterClient](./kibana-plugin-server.iclusterclient.md) | Represents an Elasticsearch cluster API client and allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)).See [ClusterClient](./kibana-plugin-server.clusterclient.md). | | [IContextProvider](./kibana-plugin-server.icontextprovider.md) | A function that returns a context value for a specific key of given context type. | @@ -140,8 +143,8 @@ The plugin integrates with the core system via lifecycle events: `setup` | [LifecycleResponseFactory](./kibana-plugin-server.lifecycleresponsefactory.md) | Creates an object containing redirection or error response with error details, HTTP headers, and other data transmitted to the client. | | [MIGRATION\_ASSISTANCE\_INDEX\_ACTION](./kibana-plugin-server.migration_assistance_index_action.md) | | | [MIGRATION\_DEPRECATION\_LEVEL](./kibana-plugin-server.migration_deprecation_level.md) | | -| [OnPostAuthHandler](./kibana-plugin-server.onpostauthhandler.md) | | -| [OnPreAuthHandler](./kibana-plugin-server.onpreauthhandler.md) | | +| [OnPostAuthHandler](./kibana-plugin-server.onpostauthhandler.md) | See [OnPostAuthToolkit](./kibana-plugin-server.onpostauthtoolkit.md). | +| [OnPreAuthHandler](./kibana-plugin-server.onpreauthhandler.md) | See [OnPreAuthToolkit](./kibana-plugin-server.onpreauthtoolkit.md). | | [PluginInitializer](./kibana-plugin-server.plugininitializer.md) | The plugin export at the root of a plugin's server directory should conform to this interface. | | [PluginName](./kibana-plugin-server.pluginname.md) | Dedicated type for plugin name/id that is supposed to make Map/Set/Arrays that use it as a key or value more obvious. | | [PluginOpaqueId](./kibana-plugin-server.pluginopaqueid.md) | | diff --git a/docs/development/core/server/kibana-plugin-server.migration_assistance_index_action.md b/docs/development/core/server/kibana-plugin-server.migration_assistance_index_action.md index 4753bd0db71f6..e5ecc6779b282 100644 --- a/docs/development/core/server/kibana-plugin-server.migration_assistance_index_action.md +++ b/docs/development/core/server/kibana-plugin-server.migration_assistance_index_action.md @@ -4,6 +4,7 @@ ## MIGRATION\_ASSISTANCE\_INDEX\_ACTION type + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.migration_deprecation_level.md b/docs/development/core/server/kibana-plugin-server.migration_deprecation_level.md index 2751faf6a1cd9..33e02a1b2bce0 100644 --- a/docs/development/core/server/kibana-plugin-server.migration_deprecation_level.md +++ b/docs/development/core/server/kibana-plugin-server.migration_deprecation_level.md @@ -4,6 +4,7 @@ ## MIGRATION\_DEPRECATION\_LEVEL type + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-server.onpostauthhandler.md b/docs/development/core/server/kibana-plugin-server.onpostauthhandler.md index 884eb3e6346bd..a887dea26e3bc 100644 --- a/docs/development/core/server/kibana-plugin-server.onpostauthhandler.md +++ b/docs/development/core/server/kibana-plugin-server.onpostauthhandler.md @@ -4,6 +4,7 @@ ## OnPostAuthHandler type +See [OnPostAuthToolkit](./kibana-plugin-server.onpostauthtoolkit.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-server.onpreauthhandler.md b/docs/development/core/server/kibana-plugin-server.onpreauthhandler.md index 5eca904227bb9..003bd4b19eadf 100644 --- a/docs/development/core/server/kibana-plugin-server.onpreauthhandler.md +++ b/docs/development/core/server/kibana-plugin-server.onpreauthhandler.md @@ -4,6 +4,7 @@ ## OnPreAuthHandler type +See [OnPreAuthToolkit](./kibana-plugin-server.onpreauthtoolkit.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-server.requesthandler.md b/docs/development/core/server/kibana-plugin-server.requesthandler.md index 0b6a127119d8e..035d16c9fca3c 100644 --- a/docs/development/core/server/kibana-plugin-server.requesthandler.md +++ b/docs/development/core/server/kibana-plugin-server.requesthandler.md @@ -9,7 +9,7 @@ A function executed when route path matched requested resource path. Request han Signature: ```typescript -export declare type RequestHandler

= (context: RequestHandlerContext, request: KibanaRequest, TypeOf, TypeOf>, response: KibanaResponseFactory) => KibanaResponse | Promise>; +export declare type RequestHandler

= (context: RequestHandlerContext, request: KibanaRequest, TypeOf, TypeOf>, response: KibanaResponseFactory) => IKibanaResponse | Promise>; ``` ## Example diff --git a/docs/development/core/server/kibana-plugin-server.routeconfig.md b/docs/development/core/server/kibana-plugin-server.routeconfig.md index 84fa52719e3a9..769d0dda42644 100644 --- a/docs/development/core/server/kibana-plugin-server.routeconfig.md +++ b/docs/development/core/server/kibana-plugin-server.routeconfig.md @@ -17,6 +17,6 @@ export interface RouteConfig

RouteConfigOptions | Additional route options [RouteConfigOptions](./kibana-plugin-server.routeconfigoptions.md). | -| [path](./kibana-plugin-server.routeconfig.path.md) | string | The endpoint \_within\_ the router path to register the route. E.g. if the router is registered at /elasticsearch and the route path is /search, the full path for the route is /elasticsearch/search. Supports: - named path segments path/{name}. - optional path segments path/{position?}. - multi-segments path/{coordinates*2}. Segments are accessible within a handler function as params property of [KibanaRequest](./kibana-plugin-server.kibanarequest.md) object. To have read access to params you \*must\* specify validation schema with [RouteConfig.validate](./kibana-plugin-server.routeconfig.validate.md). | -| [validate](./kibana-plugin-server.routeconfig.validate.md) | RouteSchemas<P, Q, B> | false | A schema created with @kbn/config-schema that every request will be validated against. You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify validate: false. In this case request params, query, and body will be \*\*empty\*\* objects and have no access to raw values. In some cases you may want to use another validation library. To do this, you need to instruct the @kbn/config-schema library to output \*\*non-validated values\*\* with setting schema as schema.object({}, { allowUnknowns: true }); | +| [path](./kibana-plugin-server.routeconfig.path.md) | string | The endpoint \_within\_ the router path to register the route. | +| [validate](./kibana-plugin-server.routeconfig.validate.md) | RouteSchemas<P, Q, B> | false | A schema created with @kbn/config-schema that every request will be validated against. | diff --git a/docs/development/core/server/kibana-plugin-server.routeconfig.path.md b/docs/development/core/server/kibana-plugin-server.routeconfig.path.md index 3437f0e0fe064..0e6fa19f98ace 100644 --- a/docs/development/core/server/kibana-plugin-server.routeconfig.path.md +++ b/docs/development/core/server/kibana-plugin-server.routeconfig.path.md @@ -4,10 +4,15 @@ ## RouteConfig.path property -The endpoint \_within\_ the router path to register the route. E.g. if the router is registered at `/elasticsearch` and the route path is `/search`, the full path for the route is `/elasticsearch/search`. Supports: - named path segments `path/{name}`. - optional path segments `path/{position?}`. - multi-segments `path/{coordinates*2}`. Segments are accessible within a handler function as `params` property of [KibanaRequest](./kibana-plugin-server.kibanarequest.md) object. To have read access to `params` you \*must\* specify validation schema with [RouteConfig.validate](./kibana-plugin-server.routeconfig.validate.md). +The endpoint \_within\_ the router path to register the route. Signature: ```typescript path: string; ``` + +## Remarks + +E.g. if the router is registered at `/elasticsearch` and the route path is `/search`, the full path for the route is `/elasticsearch/search`. Supports: - named path segments `path/{name}`. - optional path segments `path/{position?}`. - multi-segments `path/{coordinates*2}`. Segments are accessible within a handler function as `params` property of [KibanaRequest](./kibana-plugin-server.kibanarequest.md) object. To have read access to `params` you \*must\* specify validation schema with [RouteConfig.validate](./kibana-plugin-server.routeconfig.validate.md). + diff --git a/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md b/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md index 8f8301e159e7e..e1ec743ae71cc 100644 --- a/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md +++ b/docs/development/core/server/kibana-plugin-server.routeconfig.validate.md @@ -4,7 +4,7 @@ ## RouteConfig.validate property -A schema created with `@kbn/config-schema` that every request will be validated against. You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify `validate: false`. In this case request params, query, and body will be \*\*empty\*\* objects and have no access to raw values. In some cases you may want to use another validation library. To do this, you need to instruct the `@kbn/config-schema` library to output \*\*non-validated values\*\* with setting schema as `schema.object({}, { allowUnknowns: true })`; +A schema created with `@kbn/config-schema` that every request will be validated against. Signature: @@ -12,6 +12,10 @@ A schema created with `@kbn/config-schema` that every request will be validated validate: RouteSchemas | false; ``` +## Remarks + +You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify `validate: false`. In this case request params, query, and body will be \*\*empty\*\* objects and have no access to raw values. In some cases you may want to use another validation library. To do this, you need to instruct the `@kbn/config-schema` library to output \*\*non-validated values\*\* with setting schema as `schema.object({}, { allowUnknowns: true })`; + ## Example diff --git a/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callascurrentuser.md b/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callascurrentuser.md index ce0c51be08698..1f53270042185 100644 --- a/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callascurrentuser.md +++ b/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callascurrentuser.md @@ -4,7 +4,7 @@ ## ScopedClusterClient.callAsCurrentUser() method -Calls specified `endpoint` with provided `clientParams` on behalf of the user initiated request to the Kibana server (via HTTP request headers). +Calls specified `endpoint` with provided `clientParams` on behalf of the user initiated request to the Kibana server (via HTTP request headers). See [APICaller](./kibana-plugin-server.apicaller.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callasinternaluser.md b/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callasinternaluser.md index 59811de18d926..7249af7b429e4 100644 --- a/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callasinternaluser.md +++ b/docs/development/core/server/kibana-plugin-server.scopedclusterclient.callasinternaluser.md @@ -4,7 +4,7 @@ ## ScopedClusterClient.callAsInternalUser() method -Calls specified `endpoint` with provided `clientParams` on behalf of the Kibana internal user. +Calls specified `endpoint` with provided `clientParams` on behalf of the Kibana internal user. See [APICaller](./kibana-plugin-server.apicaller.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-server.scopedclusterclient.md b/docs/development/core/server/kibana-plugin-server.scopedclusterclient.md index 7833f698d486d..dcbf869bc9360 100644 --- a/docs/development/core/server/kibana-plugin-server.scopedclusterclient.md +++ b/docs/development/core/server/kibana-plugin-server.scopedclusterclient.md @@ -24,6 +24,6 @@ export declare class ScopedClusterClient implements IScopedClusterClient | Method | Modifiers | Description | | --- | --- | --- | -| [callAsCurrentUser(endpoint, clientParams, options)](./kibana-plugin-server.scopedclusterclient.callascurrentuser.md) | | Calls specified endpoint with provided clientParams on behalf of the user initiated request to the Kibana server (via HTTP request headers). | -| [callAsInternalUser(endpoint, clientParams, options)](./kibana-plugin-server.scopedclusterclient.callasinternaluser.md) | | Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. | +| [callAsCurrentUser(endpoint, clientParams, options)](./kibana-plugin-server.scopedclusterclient.callascurrentuser.md) | | Calls specified endpoint with provided clientParams on behalf of the user initiated request to the Kibana server (via HTTP request headers). See [APICaller](./kibana-plugin-server.apicaller.md). | +| [callAsInternalUser(endpoint, clientParams, options)](./kibana-plugin-server.scopedclusterclient.callasinternaluser.md) | | Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [APICaller](./kibana-plugin-server.apicaller.md). | diff --git a/src/core/public/context/context_service.ts b/src/core/public/context/context_service.ts index dadc509c97821..e39292f87d7b9 100644 --- a/src/core/public/context/context_service.ts +++ b/src/core/public/context/context_service.ts @@ -53,18 +53,17 @@ export class ContextService { * } * * export type VizRenderer = (context: VizRenderContext, domElement: HTMLElement) => () => void; + * // When a renderer is bound via `contextContainer.createHandler` this is the type that will be returned. + * type BoundVizRenderer = (domElement: HTMLElement) => () => void; * * class VizRenderingPlugin { - * private readonly vizRenderers = new Map () => void)>(); + * private readonly contextContainer?: IContextContainer; + * private readonly vizRenderers = new Map(); * * constructor(private readonly initContext: PluginInitializerContext) {} * * setup(core) { - * this.contextContainer = core.context.createContextContainer< - * VizRenderContext, - * ReturnType, - * [HTMLElement] - * >(); + * this.contextContainer = core.context.createContextContainer(); * * return { * registerContext: this.contextContainer.registerContext, diff --git a/src/core/public/http/http_fetch_error.ts b/src/core/public/http/http_fetch_error.ts index 3e08bcb50a330..5292afdd56d77 100644 --- a/src/core/public/http/http_fetch_error.ts +++ b/src/core/public/http/http_fetch_error.ts @@ -17,8 +17,10 @@ * under the License. */ -/** @public */ -export class HttpFetchError extends Error { +import { IHttpFetchError } from './types'; + +/** @internal */ +export class HttpFetchError extends Error implements IHttpFetchError { constructor( message: string, public readonly request: Request, diff --git a/src/core/public/http/http_intercept_controller.ts b/src/core/public/http/http_intercept_controller.ts index 9934cd8568797..e2ac0335ca548 100644 --- a/src/core/public/http/http_intercept_controller.ts +++ b/src/core/public/http/http_intercept_controller.ts @@ -17,14 +17,17 @@ * under the License. */ -export class HttpInterceptController { +import { IHttpInterceptController } from './types'; + +/** @internal */ +export class HttpInterceptController implements IHttpInterceptController { private _halted = false; public get halted() { return this._halted; } - halt() { + public halt() { this._halted = true; } } diff --git a/src/core/public/http/http_intercept_halt_error.ts b/src/core/public/http/http_intercept_halt_error.ts index 856a912f63c82..65d328f35a42d 100644 --- a/src/core/public/http/http_intercept_halt_error.ts +++ b/src/core/public/http/http_intercept_halt_error.ts @@ -17,6 +17,7 @@ * under the License. */ +/** @internal */ export class HttpInterceptHaltError extends Error { constructor() { super('HTTP Intercept Halt'); diff --git a/src/core/public/http/http_service.ts b/src/core/public/http/http_service.ts index 3bff861441fca..477bcd6152d44 100644 --- a/src/core/public/http/http_service.ts +++ b/src/core/public/http/http_service.ts @@ -17,8 +17,15 @@ * under the License. */ -import { HttpDeps, HttpSetup, HttpStart, HttpServiceBase } from './types'; +import { HttpSetup, HttpStart, HttpServiceBase } from './types'; import { setup } from './http_setup'; +import { InjectedMetadataSetup } from '../injected_metadata'; +import { FatalErrorsSetup } from '../fatal_errors'; + +interface HttpDeps { + injectedMetadata: InjectedMetadataSetup; + fatalErrors: FatalErrorsSetup | null; +} /** @internal */ export class HttpService { diff --git a/src/core/public/http/index.ts b/src/core/public/http/index.ts index 3edbbc2e362a4..d4aced6894526 100644 --- a/src/core/public/http/index.ts +++ b/src/core/public/http/index.ts @@ -18,7 +18,4 @@ */ export { HttpService } from './http_service'; -export { HttpFetchError } from './http_fetch_error'; -export { HttpInterceptHaltError } from './http_intercept_halt_error'; -export { HttpInterceptController } from './http_intercept_controller'; export * from './types'; diff --git a/src/core/public/http/types.ts b/src/core/public/http/types.ts index 293c125f9ad83..9bc1313fae546 100644 --- a/src/core/public/http/types.ts +++ b/src/core/public/http/types.ts @@ -18,84 +18,230 @@ */ import { Observable } from 'rxjs'; -import { InjectedMetadataSetup } from '../injected_metadata'; -import { FatalErrorsSetup } from '../fatal_errors'; -import { HttpInterceptController } from './http_intercept_controller'; -import { HttpFetchError } from './http_fetch_error'; /** @public */ export interface HttpServiceBase { + /** @internal */ stop(): void; - basePath: { - get: () => string; - prepend: (url: string) => string; - remove: (url: string) => string; - }; + + /** + * APIs for manipulating the basePath on URL segments. + */ + basePath: IBasePath; + + /** + * Adds a new {@link HttpInterceptor} to the global HTTP client. + * @param interceptor a {@link HttpInterceptor} + * @returns a function for removing the attached interceptor. + */ intercept(interceptor: HttpInterceptor): () => void; + + /** + * Removes all configured interceptors. + */ removeAllInterceptors(): void; + + /** Makes an HTTP request. Defaults to a GET request unless overriden. See {@link HttpHandler} for options. */ fetch: HttpHandler; + /** Makes an HTTP request with the DELETE method. See {@link HttpHandler} for options. */ delete: HttpHandler; + /** Makes an HTTP request with the GET method. See {@link HttpHandler} for options. */ get: HttpHandler; + /** Makes an HTTP request with the HEAD method. See {@link HttpHandler} for options. */ head: HttpHandler; + /** Makes an HTTP request with the OPTIONS method. See {@link HttpHandler} for options. */ options: HttpHandler; + /** Makes an HTTP request with the PATCH method. See {@link HttpHandler} for options. */ patch: HttpHandler; + /** Makes an HTTP request with the POST method. See {@link HttpHandler} for options. */ post: HttpHandler; + /** Makes an HTTP request with the PUT method. See {@link HttpHandler} for options. */ put: HttpHandler; - addLoadingCount(count$: Observable): void; + + /** + * Adds a new source of loading counts. Used to show the global loading indicator when sum of all observed counts are + * more than 0. + * @param countSource$ an Observable to subscribe to for loading count updates. + */ + addLoadingCount(countSource$: Observable): void; + + /** + * Get the sum of all loading count sources as a single Observable. + */ getLoadingCount$(): Observable; } -/** @public */ + +/** + * APIs for manipulating the basePath on URL segments. + * @public + */ +export interface IBasePath { + /** + * Gets the `basePath` string. + */ + get: () => string; + + /** + * Prepends `path` with the basePath. + */ + prepend: (url: string) => string; + + /** + * Removes the prepended basePath from the `path`. + */ + remove: (url: string) => string; +} + +/** + * See {@link HttpServiceBase} + * @public + */ export type HttpSetup = HttpServiceBase; -/** @public */ + +/** + * See {@link HttpServiceBase} + * @public + */ export type HttpStart = HttpServiceBase; + /** @public */ export interface HttpHeadersInit { [name: string]: any; } -/** @public */ + +/** + * Fetch API options available to {@link HttpHandler}s. + * + * @internalRemarks these docs are largely copied from TypeScript's included dom types. + * @public + */ export interface HttpRequestInit { + /** + * A BodyInit object or null to set request's body. + */ body?: BodyInit | null; + + /** + * The cache mode associated with request, which is a string indicating how the request will interact with the + * browser's cache when fetching. + */ cache?: RequestCache; + + /** + * The credentials mode associated with request, which is a string indicating whether credentials will be sent with + * the request always, never, or only when sent to a same-origin URL. + */ credentials?: RequestCredentials; + + /** {@link HttpHeadersInit} */ headers?: HttpHeadersInit; + + /** + * Subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of + * multiple hashes separated by whitespace. + */ integrity?: string; + + /** Whether or not request can outlive the global in which it was created. */ keepalive?: boolean; + + /** HTTP method, which is "GET" by default. */ method?: string; + + /** + * The mode associated with request, which is a string indicating whether the request will use CORS, or will be + * restricted to same-origin URLs. + */ mode?: RequestMode; + + /** + * The redirect mode associated with request, which is a string indicating how redirects for the request will be + * handled during fetching. A request will follow redirects by default. + */ redirect?: RequestRedirect; + + /** + * The referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to + * indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to + * determine the value of the `Referer` header of the request being made. + */ referrer?: string; + + /** + * The referrer policy associated with request. This is used during fetching to compute the value of the request's + * referrer. + */ referrerPolicy?: ReferrerPolicy; + + /** + * Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has + * been aborted, and its abort event handler. + */ signal?: AbortSignal | null; - window?: any; -} -/** @public */ -export interface HttpDeps { - injectedMetadata: InjectedMetadataSetup; - fatalErrors: FatalErrorsSetup | null; + + /** + * Can only be null. Used to disassociate request from any Window. + */ + window?: null; } + /** @public */ export interface HttpFetchQuery { [key: string]: string | number | boolean | undefined; } -/** @public */ + +/** + * All options that may be used with a {@link HttpHandler}. + * @public + */ export interface HttpFetchOptions extends HttpRequestInit { + /** + * The query string for an HTTP request. See {@link HttpFetchQuery}. + */ query?: HttpFetchQuery; + + /** + * Whether or not the request should automatically prepend the basePath. Defaults to `true`. + */ prependBasePath?: boolean; + + /** + * Headers to send with the request. See {@link HttpHeadersInit}. + */ headers?: HttpHeadersInit; } -/** @public */ + +/** + * A function for making an HTTP requests to Kibana's backend. See {@link HttpFetchOptions} for options and + * {@link HttpBody} for the response. + * + * @param path the path on the Kibana server to send the request to. Should not include the basePath. + * @param options {@link HttpFetchOptions} + * @returns a Promise that resolves to a {@link HttpBody} + * @public + */ export type HttpHandler = (path: string, options?: HttpFetchOptions) => Promise; + /** @public */ export type HttpBody = BodyInit | null | any; + /** @public */ export interface HttpResponse { request?: Request; response?: Response; body?: HttpBody; } + +/** @public */ +export interface IHttpFetchError extends Error { + readonly request: Request; + readonly response?: Response; + readonly body?: any; +} + /** @public */ export interface HttpErrorResponse { - error: Error | HttpFetchError; + error: Error | IHttpFetchError; request?: Request; response?: Response; body?: HttpBody; @@ -105,22 +251,62 @@ export interface HttpErrorRequest { request: Request; error: Error; } -/** @public */ + +/** + * An object that may define global interceptor functions for different parts of the request and response lifecycle. + * See {@link IHttpInterceptController}. + * + * @public + */ export interface HttpInterceptor { + /** + * Define an interceptor to be executed before a request is sent. + * @param request + * @param controller {@link IHttpInterceptController} + */ request?( request: Request, - controller: HttpInterceptController + controller: IHttpInterceptController ): Promise | Request | void; + + /** + * Define an interceptor to be executed if a request interceptor throws an error or returns a rejected Promise. + * @param httpErrorRequest {@link HttpErrorRequest} + * @param controller {@link IHttpInterceptController} + */ requestError?( httpErrorRequest: HttpErrorRequest, - controller: HttpInterceptController + controller: IHttpInterceptController ): Promise | Request | void; + + /** + * Define an interceptor to be executed after a response is received. + * @param httpResponse {@link HttpResponse} + * @param controller {@link IHttpInterceptController} + */ response?( httpResponse: HttpResponse, - controller: HttpInterceptController + controller: IHttpInterceptController ): Promise | HttpResponse | void; + + /** + * Define an interceptor to be executed if a response interceptor throws an error or returns a rejected Promise. + * @param httpErrorResponse {@link HttpErrorResponse} + * @param controller {@link IHttpInterceptController} + */ responseError?( httpErrorResponse: HttpErrorResponse, - controller: HttpInterceptController + controller: IHttpInterceptController ): Promise | HttpResponse | void; } + +/** + * Used to halt a request Promise chain in a {@link HttpInterceptor}. + * @public + */ +export interface IHttpInterceptController { + /** Whether or not this chain has been halted. */ + halted: boolean; + /** Halt the request Promise chain and do not process further interceptors or response handlers. */ + halt(): void; +} diff --git a/src/core/public/index.ts b/src/core/public/index.ts index 2522e22f644f5..3d451c7c1f37e 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -53,14 +53,7 @@ import { FatalErrorsSetup, FatalErrorInfo } from './fatal_errors'; import { HttpSetup, HttpStart } from './http'; import { I18nStart } from './i18n'; import { InjectedMetadataSetup, InjectedMetadataStart, LegacyNavLink } from './injected_metadata'; -import { - ErrorToastOptions, - NotificationsSetup, - NotificationsStart, - Toast, - ToastInput, - ToastsApi, -} from './notifications'; +import { NotificationsSetup, NotificationsStart } from './notifications'; import { OverlayStart } from './overlays'; import { Plugin, PluginInitializer, PluginInitializerContext, PluginOpaqueId } from './plugins'; import { UiSettingsClient, UiSettingsState, UiSettingsClientContract } from './ui_settings'; @@ -110,12 +103,13 @@ export { HttpFetchQuery, HttpErrorResponse, HttpErrorRequest, - HttpFetchError, HttpInterceptor, HttpResponse, HttpHandler, HttpBody, - HttpInterceptController, + IBasePath, + IHttpInterceptController, + IHttpFetchError, } from './http'; export { @@ -126,6 +120,17 @@ export { OverlayRef, } from './overlays'; +export { + Toast, + ToastInput, + IToasts, + ToastsApi, + ToastInputFields, + ToastsSetup, + ToastsStart, + ErrorToastOptions, +} from './notifications'; + /** * Core services exposed to the `Plugin` setup lifecycle * @@ -251,7 +256,6 @@ export { IContextProvider, ContextSetup, DocLinksStart, - ErrorToastOptions, FatalErrorInfo, FatalErrorsSetup, HttpSetup, @@ -265,9 +269,6 @@ export { PluginInitializerContext, SavedObjectsStart, PluginOpaqueId, - Toast, - ToastInput, - ToastsApi, UiSettingsClient, UiSettingsClientContract, UiSettingsState, diff --git a/src/core/public/notifications/index.ts b/src/core/public/notifications/index.ts index e85db3772f019..55b64ac375f08 100644 --- a/src/core/public/notifications/index.ts +++ b/src/core/public/notifications/index.ts @@ -17,7 +17,16 @@ * under the License. */ -export { ErrorToastOptions, Toast, ToastInput, ToastsApi } from './toasts'; +export { + ErrorToastOptions, + Toast, + ToastInput, + IToasts, + ToastsApi, + ToastInputFields, + ToastsSetup, + ToastsStart, +} from './toasts'; export { NotificationsService, NotificationsSetup, diff --git a/src/core/public/notifications/notifications_service.ts b/src/core/public/notifications/notifications_service.ts index 33221522fa83c..2c14f2f650078 100644 --- a/src/core/public/notifications/notifications_service.ts +++ b/src/core/public/notifications/notifications_service.ts @@ -85,10 +85,12 @@ export class NotificationsService { /** @public */ export interface NotificationsSetup { + /** {@link ToastsSetup} */ toasts: ToastsSetup; } /** @public */ export interface NotificationsStart { + /** {@link ToastsStart} */ toasts: ToastsStart; } diff --git a/src/core/public/notifications/toasts/index.ts b/src/core/public/notifications/toasts/index.ts index c047ac71f7adc..83c2d52f3d77a 100644 --- a/src/core/public/notifications/toasts/index.ts +++ b/src/core/public/notifications/toasts/index.ts @@ -18,5 +18,5 @@ */ export { ToastsService, ToastsSetup, ToastsStart } from './toasts_service'; -export { ErrorToastOptions, ToastsApi, ToastInput } from './toasts_api'; +export { ErrorToastOptions, ToastsApi, ToastInput, IToasts, ToastInputFields } from './toasts_api'; export { EuiGlobalToastListToast as Toast } from '@elastic/eui'; diff --git a/src/core/public/notifications/toasts/toasts_api.tsx b/src/core/public/notifications/toasts/toasts_api.tsx index 9ecbc87f15b45..24514cb11548b 100644 --- a/src/core/public/notifications/toasts/toasts_api.tsx +++ b/src/core/public/notifications/toasts/toasts_api.tsx @@ -25,11 +25,26 @@ import { ErrorToast } from './error_toast'; import { UiSettingsClientContract } from '../../ui_settings'; import { OverlayStart } from '../../overlays'; -type ToastInputFields = Pick>; +/** + * Allowed fields for {@link ToastInput}. + * + * @remarks + * `id` cannot be specified. + * + * @public + */ +export type ToastInputFields = Pick>; -/** @public */ +/** + * Inputs for {@link IToasts} APIs. + * @public + */ export type ToastInput = string | ToastInputFields | Promise; +/** + * Options available for {@link IToasts} APIs. + * @public + */ export interface ErrorToastOptions { /** * The title of the toast and the dialog when expanding the message. @@ -54,8 +69,20 @@ const normalizeToast = (toastOrTitle: ToastInput) => { return toastOrTitle; }; -/** @public */ -export class ToastsApi { +/** + * Methods for adding and removing global toast messages. See {@link ToastsApi}. + * @public + */ +export type IToasts = Pick< + ToastsApi, + 'get$' | 'add' | 'remove' | 'addSuccess' | 'addWarning' | 'addDanger' | 'addError' +>; + +/** + * Methods for adding and removing global toast messages. + * @public + */ +export class ToastsApi implements IToasts { private toasts$ = new Rx.BehaviorSubject([]); private idCounter = 0; private uiSettings: UiSettingsClientContract; @@ -66,14 +93,22 @@ export class ToastsApi { this.uiSettings = deps.uiSettings; } + /** @internal */ public registerOverlays(overlays: OverlayStart) { this.overlays = overlays; } + /** Observable of the toast messages to show to the user. */ public get$() { return this.toasts$.asObservable(); } + /** + * Adds a new toast to current array of toast. + * + * @param toastOrTitle - a {@link ToastInput} + * @returns a {@link Toast} + */ public add(toastOrTitle: ToastInput) { const toast: Toast = { id: String(this.idCounter++), @@ -86,6 +121,10 @@ export class ToastsApi { return toast; } + /** + * Removes a toast from the current array of toasts if present. + * @param toast - a {@link Toast} returned by {@link ToastApi.add} + */ public remove(toast: Toast) { const list = this.toasts$.getValue(); const listWithoutToast = list.filter(t => t !== toast); @@ -94,6 +133,12 @@ export class ToastsApi { } } + /** + * Adds a new toast pre-configured with the success color and check icon. + * + * @param toastOrTitle - a {@link ToastInput} + * @returns a {@link Toast} + */ public addSuccess(toastOrTitle: ToastInput) { return this.add({ color: 'success', @@ -102,6 +147,12 @@ export class ToastsApi { }); } + /** + * Adds a new toast pre-configured with the warning color and help icon. + * + * @param toastOrTitle - a {@link ToastInput} + * @returns a {@link Toast} + */ public addWarning(toastOrTitle: ToastInput) { return this.add({ color: 'warning', @@ -111,6 +162,12 @@ export class ToastsApi { }); } + /** + * Adds a new toast pre-configured with the danger color and alert icon. + * + * @param toastOrTitle - a {@link ToastInput} + * @returns a {@link Toast} + */ public addDanger(toastOrTitle: ToastInput) { return this.add({ color: 'danger', @@ -120,6 +177,13 @@ export class ToastsApi { }); } + /** + * Adds a new toast that displays an exception message with a button to open the full stacktrace in a modal. + * + * @param error - an `Error` instance. + * @param options - {@link ErrorToastOptions} + * @returns a {@link Toast} + */ public addError(error: Error, options: ErrorToastOptions) { const message = options.toastMessage || error.message; return this.add({ diff --git a/src/core/public/notifications/toasts/toasts_service.mock.ts b/src/core/public/notifications/toasts/toasts_service.mock.ts index 06a30f458c162..f44bd3253048d 100644 --- a/src/core/public/notifications/toasts/toasts_service.mock.ts +++ b/src/core/public/notifications/toasts/toasts_service.mock.ts @@ -18,10 +18,10 @@ */ import { Observable } from 'rxjs'; -import { ToastsSetup } from './toasts_service'; +import { IToasts } from './toasts_api'; const createToastsApiMock = () => { - const api: jest.Mocked> = { + const api: jest.Mocked = { get$: jest.fn(() => new Observable()), add: jest.fn(), remove: jest.fn(), diff --git a/src/core/public/notifications/toasts/toasts_service.tsx b/src/core/public/notifications/toasts/toasts_service.tsx index 022d57d155b6b..6a5fd8c576557 100644 --- a/src/core/public/notifications/toasts/toasts_service.tsx +++ b/src/core/public/notifications/toasts/toasts_service.tsx @@ -24,7 +24,7 @@ import { EuiGlobalToastListToast as Toast } from '@elastic/eui'; import { I18nStart } from '../../i18n'; import { UiSettingsClientContract } from '../../ui_settings'; import { GlobalToastList } from './global_toast_list'; -import { ToastsApi } from './toasts_api'; +import { ToastsApi, IToasts } from './toasts_api'; import { OverlayStart } from '../../overlays'; interface SetupDeps { @@ -37,11 +37,17 @@ interface StartDeps { targetDomElement: HTMLElement; } -/** @public */ -export type ToastsSetup = Pick>; +/** + * {@link IToasts} + * @public + */ +export type ToastsSetup = IToasts; -/** @public */ -export type ToastsStart = ToastsSetup; +/** + * {@link IToasts} + * @public + */ +export type ToastsStart = IToasts; export class ToastsService { private api?: ToastsApi; diff --git a/src/core/public/overlays/overlay_service.ts b/src/core/public/overlays/overlay_service.ts index ca7b1a0d4ef9d..1a72bb5dbe435 100644 --- a/src/core/public/overlays/overlay_service.ts +++ b/src/core/public/overlays/overlay_service.ts @@ -25,6 +25,10 @@ import { I18nStart } from '../i18n'; import { OverlayBannersStart, OverlayBannersService } from './banners'; import { UiSettingsClientContract } from '../ui_settings'; +/** + * Returned by {@link OverlayStart} methods for closing a mounted overlay. + * @public + */ export interface OverlayRef { /** * A Promise that will resolve once this overlay is closed. diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index 69967074c84aa..911b87e2bedf2 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -385,9 +385,7 @@ export interface EnvironmentMode { prod: boolean; } -// Warning: (ae-missing-release-tag) "ErrorToastOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface ErrorToastOptions { title: string; toastMessage?: string; @@ -432,31 +430,17 @@ export interface HttpErrorResponse { // (undocumented) body?: HttpBody; // (undocumented) - error: Error | HttpFetchError; + error: Error | IHttpFetchError; // (undocumented) request?: Request; // (undocumented) response?: Response; } -// @public (undocumented) -export class HttpFetchError extends Error { - constructor(message: string, request: Request, response?: Response | undefined, body?: any); - // (undocumented) - readonly body?: any; - // (undocumented) - readonly request: Request; - // (undocumented) - readonly response?: Response | undefined; -} - -// @public (undocumented) +// @public export interface HttpFetchOptions extends HttpRequestInit { - // (undocumented) headers?: HttpHeadersInit; - // (undocumented) prependBasePath?: boolean; - // (undocumented) query?: HttpFetchQuery; } @@ -466,7 +450,7 @@ export interface HttpFetchQuery { [key: string]: string | number | boolean | undefined; } -// @public (undocumented) +// @public export type HttpHandler = (path: string, options?: HttpFetchOptions) => Promise; // @public (undocumented) @@ -475,56 +459,30 @@ export interface HttpHeadersInit { [name: string]: any; } -// Warning: (ae-missing-release-tag) "HttpInterceptController" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export class HttpInterceptController { - // (undocumented) - halt(): void; - // (undocumented) - readonly halted: boolean; - } - -// @public (undocumented) +// @public export interface HttpInterceptor { - // (undocumented) - request?(request: Request, controller: HttpInterceptController): Promise | Request | void; - // (undocumented) - requestError?(httpErrorRequest: HttpErrorRequest, controller: HttpInterceptController): Promise | Request | void; - // (undocumented) - response?(httpResponse: HttpResponse, controller: HttpInterceptController): Promise | HttpResponse | void; - // (undocumented) - responseError?(httpErrorResponse: HttpErrorResponse, controller: HttpInterceptController): Promise | HttpResponse | void; + request?(request: Request, controller: IHttpInterceptController): Promise | Request | void; + requestError?(httpErrorRequest: HttpErrorRequest, controller: IHttpInterceptController): Promise | Request | void; + response?(httpResponse: HttpResponse, controller: IHttpInterceptController): Promise | HttpResponse | void; + responseError?(httpErrorResponse: HttpErrorResponse, controller: IHttpInterceptController): Promise | HttpResponse | void; } -// @public (undocumented) +// @public export interface HttpRequestInit { - // (undocumented) body?: BodyInit | null; - // (undocumented) cache?: RequestCache; - // (undocumented) credentials?: RequestCredentials; // (undocumented) headers?: HttpHeadersInit; - // (undocumented) integrity?: string; - // (undocumented) keepalive?: boolean; - // (undocumented) method?: string; - // (undocumented) mode?: RequestMode; - // (undocumented) redirect?: RequestRedirect; - // (undocumented) referrer?: string; - // (undocumented) referrerPolicy?: ReferrerPolicy; - // (undocumented) signal?: AbortSignal | null; - // (undocumented) - window?: any; + window?: null; } // @public (undocumented) @@ -539,44 +497,27 @@ export interface HttpResponse { // @public (undocumented) export interface HttpServiceBase { - // (undocumented) - addLoadingCount(count$: Observable): void; - // (undocumented) - basePath: { - get: () => string; - prepend: (url: string) => string; - remove: (url: string) => string; - }; - // (undocumented) + addLoadingCount(countSource$: Observable): void; + basePath: IBasePath; delete: HttpHandler; - // (undocumented) fetch: HttpHandler; - // (undocumented) get: HttpHandler; - // (undocumented) getLoadingCount$(): Observable; - // (undocumented) head: HttpHandler; - // (undocumented) intercept(interceptor: HttpInterceptor): () => void; - // (undocumented) options: HttpHandler; - // (undocumented) patch: HttpHandler; - // (undocumented) post: HttpHandler; - // (undocumented) put: HttpHandler; - // (undocumented) removeAllInterceptors(): void; - // (undocumented) + // @internal (undocumented) stop(): void; } -// @public (undocumented) +// @public export type HttpSetup = HttpServiceBase; -// @public (undocumented) +// @public export type HttpStart = HttpServiceBase; // @public @@ -586,6 +527,13 @@ export interface I18nStart { }) => JSX.Element; } +// @public +export interface IBasePath { + get: () => string; + prepend: (url: string) => string; + remove: (url: string) => string; +} + // @public export interface IContextContainer> { createHandler(pluginOpaqueId: PluginOpaqueId, handler: THandler): (...rest: HandlerParameters) => ShallowPromise>; @@ -595,6 +543,25 @@ export interface IContextContainer> { // @public export type IContextProvider, TContextName extends keyof HandlerContextType> = (context: Partial>, ...rest: HandlerParameters) => Promise[TContextName]> | HandlerContextType[TContextName]; +// @public (undocumented) +export interface IHttpFetchError extends Error { + // (undocumented) + readonly body?: any; + // (undocumented) + readonly request: Request; + // (undocumented) + readonly response?: Response; +} + +// @public +export interface IHttpInterceptController { + halt(): void; + halted: boolean; +} + +// @public +export type IToasts = Pick; + // @public @deprecated export interface LegacyCoreSetup extends CoreSetup { // Warning: (ae-forgotten-export) The symbol "InjectedMetadataSetup" needs to be exported by the entry point index.d.ts @@ -629,16 +596,12 @@ export interface LegacyNavLink { // @public (undocumented) export interface NotificationsSetup { - // Warning: (ae-forgotten-export) The symbol "ToastsSetup" needs to be exported by the entry point index.d.ts - // // (undocumented) toasts: ToastsSetup; } // @public (undocumented) export interface NotificationsStart { - // Warning: (ae-forgotten-export) The symbol "ToastsStart" needs to be exported by the entry point index.d.ts - // // (undocumented) toasts: ToastsStart; } @@ -662,9 +625,7 @@ export interface OverlayBannersStart { // @public export type OverlayBannerUnmount = () => void; -// Warning: (ae-missing-release-tag) "OverlayRef" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) +// @public export interface OverlayRef { close(): Promise; onClose: Promise; @@ -912,34 +873,41 @@ export class SimpleSavedObject { export { Toast } -// Warning: (ae-forgotten-export) The symbol "ToastInputFields" needs to be exported by the entry point index.d.ts -// -// @public (undocumented) +// @public export type ToastInput = string | ToastInputFields | Promise; -// @public (undocumented) -export class ToastsApi { +// @public +export type ToastInputFields = Pick>; + +// @public +export class ToastsApi implements IToasts { constructor(deps: { uiSettings: UiSettingsClientContract; }); - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported add(toastOrTitle: ToastInput): Toast; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported addDanger(toastOrTitle: ToastInput): Toast; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported addError(error: Error, options: ErrorToastOptions): Toast; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported addSuccess(toastOrTitle: ToastInput): Toast; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported addWarning(toastOrTitle: ToastInput): Toast; - // (undocumented) get$(): Rx.Observable; - // (undocumented) + // @internal (undocumented) registerOverlays(overlays: OverlayStart): void; - // (undocumented) + // Warning: (ae-unresolved-link) The @link reference could not be resolved: Reexported declarations are not supported + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "ToastApi" remove(toast: Toast): void; } +// @public (undocumented) +export type ToastsSetup = IToasts; + +// @public (undocumented) +export type ToastsStart = IToasts; + // @public (undocumented) export class UiSettingsClient { // Warning: (ae-forgotten-export) The symbol "UiSettingsClientParams" needs to be exported by the entry point index.d.ts diff --git a/src/core/server/context/context_service.ts b/src/core/server/context/context_service.ts index 1c5bd41a01f0f..1625fc9ad75ed 100644 --- a/src/core/server/context/context_service.ts +++ b/src/core/server/context/context_service.ts @@ -54,18 +54,17 @@ export class ContextService { * } * * export type VizRenderer = (context: VizRenderContext, domElement: HTMLElement) => () => void; + * // When a renderer is bound via `contextContainer.createHandler` this is the type that will be returned. + * type BoundVizRenderer = (domElement: HTMLElement) => () => void; * * class VizRenderingPlugin { - * private readonly vizRenderers = new Map () => void)>(); + * private readonly contextContainer?: IContextContainer; + * private readonly vizRenderers = new Map(); * * constructor(private readonly initContext: PluginInitializerContext) {} * * setup(core) { - * this.contextContainer = core.context.createContextContainer< - * VizRenderContext, - * ReturnType, - * [HTMLElement] - * >(); + * this.contextContainer = core.context.createContextContainer(); * * return { * registerContext: this.contextContainer.registerContext, diff --git a/src/core/server/elasticsearch/api_types.ts b/src/core/server/elasticsearch/api_types.ts index 02834739942b5..8444f97b0c7f0 100644 --- a/src/core/server/elasticsearch/api_types.ts +++ b/src/core/server/elasticsearch/api_types.ts @@ -317,14 +317,18 @@ export interface APICaller { /* eslint-enable */ } +/** @public */ export interface AssistantAPIClientParams extends GenericParams { path: '/_migration/assistance'; method: 'GET'; } +/** @public */ export type MIGRATION_ASSISTANCE_INDEX_ACTION = 'upgrade' | 'reindex'; +/** @public */ export type MIGRATION_DEPRECATION_LEVEL = 'none' | 'info' | 'warning' | 'critical'; +/** @public */ export interface AssistanceAPIResponse { indices: { [indexName: string]: { @@ -333,11 +337,13 @@ export interface AssistanceAPIResponse { }; } +/** @public */ export interface DeprecationAPIClientParams extends GenericParams { path: '/_migration/deprecations'; method: 'GET'; } +/** @public */ export interface DeprecationInfo { level: MIGRATION_DEPRECATION_LEVEL; message: string; @@ -345,10 +351,12 @@ export interface DeprecationInfo { details?: string; } +/** @public */ export interface IndexSettingsDeprecationInfo { [indexName: string]: DeprecationInfo[]; } +/** @public */ export interface DeprecationAPIResponse { cluster_settings: DeprecationInfo[]; ml_settings: DeprecationInfo[]; diff --git a/src/core/server/elasticsearch/cluster_client.ts b/src/core/server/elasticsearch/cluster_client.ts index cd581013e7957..d43ab9d546ed2 100644 --- a/src/core/server/elasticsearch/cluster_client.ts +++ b/src/core/server/elasticsearch/cluster_client.ts @@ -131,6 +131,8 @@ export class ClusterClient implements IClusterClient { /** * Calls specified endpoint with provided clientParams on behalf of the * Kibana internal user. + * See {@link APICaller}. + * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. * @param options - Options that affect the way we call the API and process the result. @@ -163,12 +165,13 @@ export class ClusterClient implements IClusterClient { } /** - * Creates an instance of `ScopedClusterClient` based on the configuration the + * Creates an instance of {@link IScopedClusterClient} based on the configuration the * current cluster client that exposes additional `callAsCurrentUser` method * scoped to the provided req. Consumers shouldn't worry about closing * scoped client instances, these will be automatically closed as soon as the * original cluster client isn't needed anymore and closed. - * @param request - Request the `ScopedClusterClient` instance will be scoped to. + * + * @param request - Request the `IScopedClusterClient` instance will be scoped to. * Supports request optionality, Legacy.Request & FakeRequest for BWC with LegacyPlatform */ public asScoped(request?: KibanaRequest | LegacyRequest | FakeRequest): IScopedClusterClient { @@ -197,6 +200,8 @@ export class ClusterClient implements IClusterClient { /** * Calls specified endpoint with provided clientParams on behalf of the * user initiated request to the Kibana server (via HTTP request headers). + * See {@link APICaller}. + * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. * @param options - Options that affect the way we call the API and process the result. diff --git a/src/core/server/elasticsearch/elasticsearch_service.mock.ts b/src/core/server/elasticsearch/elasticsearch_service.mock.ts index 6cf759b73c656..d935d1a66eccf 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.mock.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.mock.ts @@ -21,7 +21,8 @@ import { BehaviorSubject } from 'rxjs'; import { IClusterClient } from './cluster_client'; import { IScopedClusterClient } from './scoped_cluster_client'; import { ElasticsearchConfig } from './elasticsearch_config'; -import { ElasticsearchService, ElasticsearchServiceSetup } from './elasticsearch_service'; +import { ElasticsearchService } from './elasticsearch_service'; +import { InternalElasticsearchServiceSetup } from './types'; const createScopedClusterClientMock = (): jest.Mocked => ({ callAsInternalUser: jest.fn(), @@ -35,7 +36,7 @@ const createClusterClientMock = (): jest.Mocked => ({ }); const createSetupContractMock = () => { - const setupContract: jest.Mocked = { + const setupContract: jest.Mocked = { legacy: { config$: new BehaviorSubject({} as ElasticsearchConfig), }, diff --git a/src/core/server/elasticsearch/elasticsearch_service.ts b/src/core/server/elasticsearch/elasticsearch_service.ts index 9bec697825346..ed1f2a276ebc8 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.ts @@ -23,10 +23,11 @@ import { merge } from 'lodash'; import { CoreService } from '../../types'; import { CoreContext } from '../core_context'; import { Logger } from '../logging'; -import { ClusterClient, IClusterClient } from './cluster_client'; +import { ClusterClient } from './cluster_client'; import { ElasticsearchClientConfig } from './elasticsearch_client_config'; import { ElasticsearchConfig, ElasticsearchConfigType } from './elasticsearch_config'; -import { HttpServiceSetup, GetAuthHeaders } from '../http/'; +import { InternalHttpServiceSetup, GetAuthHeaders } from '../http/'; +import { InternalElasticsearchServiceSetup } from './types'; /** @internal */ interface CoreClusterClients { @@ -36,42 +37,11 @@ interface CoreClusterClients { } interface SetupDeps { - http: HttpServiceSetup; -} - -/** @public */ -export interface ElasticsearchServiceSetup { - // Required for the BWC with the legacy Kibana only. - readonly legacy: { - readonly config$: Observable; - }; - /** - * Create application specific Elasticsearch cluster API client with customized config. - * - * @param type Unique identifier of the client - * @param clientConfig A config consists of Elasticsearch JS client options and - * valid sub-set of Elasticsearch service config. - * We fill all the missing properties in the `clientConfig` using the default - * Elasticsearch config so that we don't depend on default values set and - * controlled by underlying Elasticsearch JS client. - * We don't run validation against passed config expect it to be valid. - * - * @example - * ```js - * const client = elasticsearch.createCluster('my-app-name', config); - * const data = await client.callAsInternalUser(); - * ``` - */ - readonly createClient: ( - type: string, - clientConfig?: Partial - ) => IClusterClient; - readonly adminClient$: Observable; - readonly dataClient$: Observable; + http: InternalHttpServiceSetup; } /** @internal */ -export class ElasticsearchService implements CoreService { +export class ElasticsearchService implements CoreService { private readonly log: Logger; private readonly config$: Observable; private subscription?: Subscription; @@ -83,7 +53,7 @@ export class ElasticsearchService implements CoreService new ElasticsearchConfig(rawConfig))); } - public async setup(deps: SetupDeps): Promise { + public async setup(deps: SetupDeps): Promise { this.log.debug('Setting up elasticsearch service'); const clients$ = this.config$.pipe( diff --git a/src/core/server/elasticsearch/errors.ts b/src/core/server/elasticsearch/errors.ts index 0db6841e2e1f6..6852b8632ebf1 100644 --- a/src/core/server/elasticsearch/errors.ts +++ b/src/core/server/elasticsearch/errors.ts @@ -26,6 +26,7 @@ enum ErrorCode { NOT_AUTHORIZED = 'Elasticsearch/notAuthorized', } +/** @public */ export interface ElasticsearchError extends Boom { [code]?: string; } diff --git a/src/core/server/elasticsearch/index.ts b/src/core/server/elasticsearch/index.ts index 7b496b738182b..1f99f86d9887b 100644 --- a/src/core/server/elasticsearch/index.ts +++ b/src/core/server/elasticsearch/index.ts @@ -17,10 +17,11 @@ * under the License. */ -export { ElasticsearchServiceSetup, ElasticsearchService } from './elasticsearch_service'; +export { ElasticsearchService } from './elasticsearch_service'; export { IClusterClient, ClusterClient, FakeRequest } from './cluster_client'; export { IScopedClusterClient, ScopedClusterClient, Headers } from './scoped_cluster_client'; export { ElasticsearchClientConfig } from './elasticsearch_client_config'; export { config } from './elasticsearch_config'; export { ElasticsearchError, ElasticsearchErrorHelpers } from './errors'; export * from './api_types'; +export * from './types'; diff --git a/src/core/server/elasticsearch/scoped_cluster_client.ts b/src/core/server/elasticsearch/scoped_cluster_client.ts index 02a37e1e3567f..920d236935261 100644 --- a/src/core/server/elasticsearch/scoped_cluster_client.ts +++ b/src/core/server/elasticsearch/scoped_cluster_client.ts @@ -56,6 +56,8 @@ export class ScopedClusterClient implements IScopedClusterClient { /** * Calls specified `endpoint` with provided `clientParams` on behalf of the * Kibana internal user. + * See {@link APICaller}. + * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. * @param options - Options that affect the way we call the API and process the result. @@ -71,6 +73,8 @@ export class ScopedClusterClient implements IScopedClusterClient { /** * Calls specified `endpoint` with provided `clientParams` on behalf of the * user initiated request to the Kibana server (via HTTP request headers). + * See {@link APICaller}. + * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. * @param options - Options that affect the way we call the API and process the result. diff --git a/src/core/server/elasticsearch/types.ts b/src/core/server/elasticsearch/types.ts new file mode 100644 index 0000000000000..505b57c7c9e8e --- /dev/null +++ b/src/core/server/elasticsearch/types.ts @@ -0,0 +1,80 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Observable } from 'rxjs'; +import { ElasticsearchConfig } from './elasticsearch_config'; +import { ElasticsearchClientConfig } from './elasticsearch_client_config'; +import { IClusterClient } from './cluster_client'; + +/** + * @public + */ +export interface ElasticsearchServiceSetup { + /** + * Create application specific Elasticsearch cluster API client with customized config. See {@link IClusterClient}. + * + * @param type Unique identifier of the client + * @param clientConfig A config consists of Elasticsearch JS client options and + * valid sub-set of Elasticsearch service config. + * We fill all the missing properties in the `clientConfig` using the default + * Elasticsearch config so that we don't depend on default values set and + * controlled by underlying Elasticsearch JS client. + * We don't run validation against the passed config and expect it to be valid. + * + * @example + * ```js + * const client = elasticsearch.createCluster('my-app-name', config); + * const data = await client.callAsInternalUser(); + * ``` + */ + readonly createClient: ( + type: string, + clientConfig?: Partial + ) => IClusterClient; + + /** + * Observable of clients for the `admin` cluster. Observable emits when Elasticsearch config changes on the Kibana + * server. See {@link IClusterClient}. + * + * @exmaple + * ```js + * const client = await elasticsearch.adminClient$.pipe(take(1)).toPromise(); + * ``` + */ + readonly adminClient$: Observable; + + /** + * Observable of clients for the `data` cluster. Observable emits when Elasticsearch config changes on the Kibana + * server. See {@link IClusterClient}. + * + * @exmaple + * ```js + * const client = await elasticsearch.dataClient$.pipe(take(1)).toPromise(); + * ``` + */ + readonly dataClient$: Observable; +} + +/** @internal */ +export interface InternalElasticsearchServiceSetup extends ElasticsearchServiceSetup { + // Required for the BWC with the legacy Kibana only. + readonly legacy: { + readonly config$: Observable; + }; +} diff --git a/src/core/server/http/base_path_service.ts b/src/core/server/http/base_path_service.ts index 916419cac212a..5b5901b0ad6fb 100644 --- a/src/core/server/http/base_path_service.ts +++ b/src/core/server/http/base_path_service.ts @@ -65,7 +65,7 @@ export class BasePath { }; /** - * returns a new `basePath` value, prefixed with passed `url`. + * Prepends `path` with the basePath. */ public prepend = (path: string): string => { if (this.serverBasePath === '') return path; @@ -77,7 +77,7 @@ export class BasePath { }; /** - * returns a new `basePath` value, cleaned up from passed `url`. + * Removes the prepended basePath from the `path`. */ public remove = (path: string): string => { if (this.serverBasePath === '') { diff --git a/src/core/server/http/http_server.ts b/src/core/server/http/http_server.ts index b56fef5f65c2a..3354324c12407 100644 --- a/src/core/server/http/http_server.ts +++ b/src/core/server/http/http_server.ts @@ -31,83 +31,12 @@ import { SessionStorageCookieOptions, createCookieSessionStorageFactory, } from './cookie_session_storage'; -import { SessionStorageFactory } from './session_storage'; import { AuthStateStorage, GetAuthState, IsAuthenticated } from './auth_state_storage'; import { AuthHeadersStorage, GetAuthHeaders } from './auth_headers_storage'; -import { BasePath, IBasePath } from './base_path_service'; - -/** - * Kibana HTTP Service provides own abstraction for work with HTTP stack. - * Plugins don't have direct access to `hapi` server and its primitives anymore. Moreover, - * plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. - * This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. - * If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. - * - * @example - * To handle an incoming request in your plugin you should: - * - Create a `Router` instance. Router is already configured to use `plugin-id` to prefix path segment for your routes. - * ```ts - * const router = httpSetup.createRouter(); - * ``` - * - * - Use `@kbn/config-schema` package to create a schema to validate the request `params`, `query`, and `body`. Every incoming request will be validated against the created schema. If validation failed, the request is rejected with `400` status and `Bad request` error without calling the route's handler. - * To opt out of validating the request, specify `false`. - * ```ts - * import { schema, TypeOf } from '@kbn/config-schema'; - * const validate = { - * params: schema.object({ - * id: schema.string(), - * }), - * }; - * ``` - * - * - Declare a function to respond to incoming request. - * The function will receive `request` object containing request details: url, headers, matched route, as well as validated `params`, `query`, `body`. - * And `response` object instructing HTTP server to create HTTP response with information sent back to the client as the response body, headers, and HTTP status. - * Unlike, `hapi` route handler in the Legacy platform, any exception raised during the handler call will generate `500 Server error` response and log error details for further investigation. See below for returning custom error responses. - * ```ts - * const handler = async (context: RequestHandlerContext, request: KibanaRequest, response: ResponseFactory) => { - * const data = await findObject(request.params.id); - * // creates a command to respond with 'not found' error - * if (!data) return response.notFound(); - * // creates a command to send found data to the client and set response headers - * return response.ok({ - * body: data, - * headers: { - * 'content-type': 'application/json' - * } - * }); - * } - * ``` - * - * - Register route handler for GET request to 'my-app/path/{id}' path - * ```ts - * import { schema, TypeOf } from '@kbn/config-schema'; - * const router = httpSetup.createRouter(); - * - * const validate = { - * params: schema.object({ - * id: schema.string(), - * }), - * }; - * - * router.get({ - * path: 'path/{id}', - * validate - * }, - * async (context, request, response) => { - * const data = await findObject(request.params.id); - * if (!data) return response.notFound(); - * return response.ok({ - * body: data, - * headers: { - * 'content-type': 'application/json' - * } - * }); - * }); - * ``` - * @public - */ +import { BasePath } from './base_path_service'; +import { HttpServiceSetup } from './types'; + +/** @internal */ export interface HttpServerSetup { server: Server; /** @@ -115,50 +44,17 @@ export interface HttpServerSetup { * @param router {@link IRouter} - a router with registered route handlers. */ registerRouter: (router: IRouter) => void; - /** - * Creates cookie based session storage factory {@link SessionStorageFactory} - * @param cookieOptions {@link SessionStorageCookieOptions} - options to configure created cookie session storage. - */ - createCookieSessionStorageFactory: ( - cookieOptions: SessionStorageCookieOptions - ) => Promise>; - /** - * To define custom authentication and/or authorization mechanism for incoming requests. - * A handler should return a state to associate with the incoming request. - * The state can be retrieved later via http.auth.get(..) - * Only one AuthenticationHandler can be registered. - * @param handler {@link AuthenticationHandler} - function to perform authentication. - */ - registerAuth: (handler: AuthenticationHandler) => void; - /** - * To define custom logic to perform for incoming requests. Runs the handler before Auth - * interceptor performs a check that user has access to requested resources, so it's the only - * place when you can forward a request to another URL right on the server. - * Can register any number of registerOnPostAuth, which are called in sequence - * (from the first registered to the last). - * @param handler {@link OnPreAuthHandler} - function to call. - */ - registerOnPreAuth: (handler: OnPreAuthHandler) => void; - /** - * To define custom logic to perform for incoming requests. Runs the handler after Auth interceptor - * did make sure a user has access to the requested resource. - * The auth state is available at stage via http.auth.get(..) - * Can register any number of registerOnPreAuth, which are called in sequence - * (from the first registered to the last). - * @param handler {@link OnPostAuthHandler} - function to call. - */ - registerOnPostAuth: (handler: OnPostAuthHandler) => void; - /** {@link BasePath} */ - basePath: IBasePath; + basePath: HttpServiceSetup['basePath']; + createCookieSessionStorageFactory: HttpServiceSetup['createCookieSessionStorageFactory']; + registerAuth: HttpServiceSetup['registerAuth']; + registerOnPreAuth: HttpServiceSetup['registerOnPreAuth']; + registerOnPostAuth: HttpServiceSetup['registerOnPostAuth']; + isTlsEnabled: HttpServiceSetup['isTlsEnabled']; auth: { get: GetAuthState; isAuthenticated: IsAuthenticated; getAuthHeaders: GetAuthHeaders; }; - /** - * Flag showing whether a server was configured to use TLS connection. - */ - isTlsEnabled: boolean; } export class HttpServer { diff --git a/src/core/server/http/http_service.mock.ts b/src/core/server/http/http_service.mock.ts index c0658ae8d1e5c..40a140f154a6e 100644 --- a/src/core/server/http/http_service.mock.ts +++ b/src/core/server/http/http_service.mock.ts @@ -18,18 +18,19 @@ */ import { Server } from 'hapi'; -import { HttpService, HttpServiceSetup } from './http_service'; +import { InternalHttpServiceSetup } from './types'; +import { HttpService } from './http_service'; import { OnPreAuthToolkit } from './lifecycle/on_pre_auth'; import { AuthToolkit } from './lifecycle/auth'; import { sessionStorageMock } from './cookie_session_storage.mocks'; import { IRouter } from './router'; import { OnPostAuthToolkit } from './lifecycle/on_post_auth'; -type ServiceSetupMockType = jest.Mocked & { - basePath: jest.Mocked; +type ServiceSetupMockType = jest.Mocked & { + basePath: jest.Mocked; }; -const createBasePathMock = (): jest.Mocked => ({ +const createBasePathMock = (): jest.Mocked => ({ serverBasePath: '/mock-server-basepath', get: jest.fn(), set: jest.fn(), diff --git a/src/core/server/http/http_service.ts b/src/core/server/http/http_service.ts index 0ac5ad9276353..c720d2fea4fc6 100644 --- a/src/core/server/http/http_service.ts +++ b/src/core/server/http/http_service.ts @@ -29,12 +29,17 @@ import { ContextSetup } from '../context'; import { CoreContext } from '../core_context'; import { PluginOpaqueId } from '../plugins'; -import { Router, IRouter } from './router'; +import { Router } from './router'; import { HttpConfig, HttpConfigType } from './http_config'; -import { HttpServer, HttpServerSetup } from './http_server'; +import { HttpServer } from './http_server'; import { HttpsRedirectServer } from './https_redirect_server'; -import { RequestHandlerContextContainer, RequestHandlerContextProvider } from './types'; +import { + RequestHandlerContextContainer, + RequestHandlerContextProvider, + InternalHttpServiceSetup, + HttpServiceStart, +} from './types'; import { RequestHandlerContext } from '../../server'; @@ -42,59 +47,8 @@ interface SetupDeps { context: ContextSetup; } -/** @public */ -export type HttpServiceSetup = Omit & { - /** - * Provides ability to declare a handler function for a particular path and HTTP request method. - * Each route can have only one handler functions, which is executed when the route is matched. - * All routes are prefixed with plugin name as a first segment of URL path. - * @example - * ```ts - * const router = createRouter(); - * // handler is called when '${my-plugin-id}/path' resource is requested with `GET` method - * router.get({ path: '/path', validate: false }, (context, req, res) => res.ok({ content: 'ok' })); - * ``` - * @public - */ - createRouter: (path: string, plugin?: PluginOpaqueId) => IRouter; - /** - * Register a context provider for a route handler. - * @example - * ```ts - * // my-plugin.ts - * deps.http.registerRouteHandlerContext( - * 'myApp', - * (context, req) => { - * async function search (id: string) { - * return await context.elasticsearch.adminClient.callAsInternalUser('endpoint', id); - * } - * return { search }; - * } - * ); - * - * // my-route-handler.ts - * router.get({ path: '/', validate: false }, async (context, req, res) => { - * const response = await context.myApp.search(...); - * return res.ok(response); - * }); - * ``` - * @public - */ - registerRouteHandlerContext: ( - pluginOpaqueId: PluginOpaqueId, - contextName: T, - provider: RequestHandlerContextProvider - ) => RequestHandlerContextContainer; -}; - -/** @public */ -export interface HttpServiceStart { - /** Indicates if http server is listening on a given port */ - isListening: (port: number) => boolean; -} - /** @internal */ -export class HttpService implements CoreService { +export class HttpService implements CoreService { private readonly httpServer: HttpServer; private readonly httpsRedirectServer: HttpsRedirectServer; private readonly config$: Observable; @@ -137,7 +91,7 @@ export class HttpService implements CoreService { diff --git a/src/core/server/http/index.ts b/src/core/server/http/index.ts index 4f83cd996deba..ff1ff3acfae3d 100644 --- a/src/core/server/http/index.ts +++ b/src/core/server/http/index.ts @@ -18,8 +18,7 @@ */ export { config, HttpConfig, HttpConfigType } from './http_config'; -export { HttpService, HttpServiceSetup, HttpServiceStart } from './http_service'; -export { HttpServerSetup } from './http_server'; +export { HttpService } from './http_service'; export { GetAuthHeaders } from './auth_headers_storage'; export { AuthStatus, GetAuthState, IsAuthenticated } from './auth_state_storage'; export { @@ -31,6 +30,7 @@ export { ErrorHttpResponseOptions, KibanaRequest, KibanaRequestRoute, + IKibanaResponse, KnownHeaders, LegacyRequest, LifecycleResponseFactory, @@ -53,6 +53,9 @@ export { AuthHeaders, AuthResultParams, AuthToolkit, + AuthResult, + Authenticated, + AuthResultType, } from './lifecycle/auth'; export { OnPostAuthHandler, OnPostAuthToolkit } from './lifecycle/on_post_auth'; export { SessionStorageFactory, SessionStorage } from './session_storage'; diff --git a/src/core/server/http/lifecycle/auth.ts b/src/core/server/http/lifecycle/auth.ts index a89c17a0340be..036ab0211c2ff 100644 --- a/src/core/server/http/lifecycle/auth.ts +++ b/src/core/server/http/lifecycle/auth.ts @@ -21,46 +21,50 @@ import { Logger } from '../../logging'; import { HapiResponseAdapter, KibanaRequest, - KibanaResponse, + IKibanaResponse, lifecycleResponseFactory, LifecycleResponseFactory, + isKibanaResponse, } from '../router'; -enum ResultType { +/** @public */ +export enum AuthResultType { authenticated = 'authenticated', } -interface Authenticated extends AuthResultParams { - type: ResultType.authenticated; +/** @public */ +export interface Authenticated extends AuthResultParams { + type: AuthResultType.authenticated; } -type AuthResult = Authenticated; +/** @public */ +export type AuthResult = Authenticated; const authResult = { authenticated(data: Partial = {}): AuthResult { return { - type: ResultType.authenticated, + type: AuthResultType.authenticated, state: data.state, requestHeaders: data.requestHeaders, responseHeaders: data.responseHeaders, }; }, isAuthenticated(result: AuthResult): result is Authenticated { - return result && result.type === ResultType.authenticated; + return result && result.type === AuthResultType.authenticated; }, }; /** * Auth Headers map * @public - * */ + */ export type AuthHeaders = Record; /** * Result of an incoming request authentication. * @public - * */ + */ export interface AuthResultParams { /** * Data to associate with an incoming request. Any downstream plugin may get access to the data. @@ -91,12 +95,15 @@ const toolkit: AuthToolkit = { authenticated: authResult.authenticated, }; -/** @public */ +/** + * See {@link AuthToolkit}. + * @public + */ export type AuthenticationHandler = ( request: KibanaRequest, response: LifecycleResponseFactory, toolkit: AuthToolkit -) => AuthResult | KibanaResponse | Promise; +) => AuthResult | IKibanaResponse | Promise; /** @public */ export function adoptToHapiAuthFormat( @@ -115,7 +122,7 @@ export function adoptToHapiAuthFormat( lifecycleResponseFactory, toolkit ); - if (result instanceof KibanaResponse) { + if (isKibanaResponse(result)) { return hapiResponseAdapter.handle(result); } if (authResult.isAuthenticated(result)) { diff --git a/src/core/server/http/lifecycle/on_post_auth.ts b/src/core/server/http/lifecycle/on_post_auth.ts index a7f4eb57c2694..6ce70af2082c1 100644 --- a/src/core/server/http/lifecycle/on_post_auth.ts +++ b/src/core/server/http/lifecycle/on_post_auth.ts @@ -55,7 +55,10 @@ export interface OnPostAuthToolkit { next: () => OnPostAuthResult; } -/** @public */ +/** + * See {@link OnPostAuthToolkit}. + * @public + */ export type OnPostAuthHandler = ( request: KibanaRequest, response: LifecycleResponseFactory, diff --git a/src/core/server/http/lifecycle/on_pre_auth.ts b/src/core/server/http/lifecycle/on_pre_auth.ts index ad204044ec34d..dc2ae6922fb94 100644 --- a/src/core/server/http/lifecycle/on_pre_auth.ts +++ b/src/core/server/http/lifecycle/on_pre_auth.ts @@ -74,7 +74,10 @@ const toolkit: OnPreAuthToolkit = { rewriteUrl: preAuthResult.rewriteUrl, }; -/** @public */ +/** + * See {@link OnPreAuthToolkit}. + * @public + */ export type OnPreAuthHandler = ( request: KibanaRequest, response: LifecycleResponseFactory, diff --git a/src/core/server/http/router/index.ts b/src/core/server/http/router/index.ts index d7393a1b98546..56ed9ca11edc1 100644 --- a/src/core/server/http/router/index.ts +++ b/src/core/server/http/router/index.ts @@ -37,10 +37,12 @@ export { ResponseError, ResponseErrorAttributes, KibanaResponse, + IKibanaResponse, kibanaResponseFactory, KibanaResponseFactory, lifecycleResponseFactory, LifecycleResponseFactory, + isKibanaResponse, } from './response'; export { IKibanaSocket } from './socket'; diff --git a/src/core/server/http/router/response.ts b/src/core/server/http/router/response.ts index 874b494a1676c..f1ee44726ebef 100644 --- a/src/core/server/http/router/response.ts +++ b/src/core/server/http/router/response.ts @@ -36,11 +36,26 @@ export type ResponseError = attributes?: ResponseErrorAttributes; }; +/** + * A response data object, expected to returned as a result of {@link RequestHandler} execution + * @public + */ +export interface IKibanaResponse { + readonly status: number; + readonly payload?: T; + readonly options: HttpResponseOptions; +} + +export function isKibanaResponse(response: Record): response is IKibanaResponse { + return typeof response.status === 'number' && typeof response.options === 'object'; +} + /** * A response data object, expected to returned as a result of {@link RequestHandler} execution * @internal */ -export class KibanaResponse { +export class KibanaResponse + implements IKibanaResponse { constructor( readonly status: number, readonly payload?: T, diff --git a/src/core/server/http/router/route.ts b/src/core/server/http/router/route.ts index 7734c80dd9346..bffa23551dd52 100644 --- a/src/core/server/http/router/route.ts +++ b/src/core/server/http/router/route.ts @@ -50,9 +50,11 @@ export interface RouteConfigOptions { */ export interface RouteConfig

{ /** - * The endpoint _within_ the router path to register the route. E.g. if the - * router is registered at `/elasticsearch` and the route path is `/search`, - * the full path for the route is `/elasticsearch/search`. + * The endpoint _within_ the router path to register the route. + * + * @remarks + * E.g. if the router is registered at `/elasticsearch` and the route path is + * `/search`, the full path for the route is `/elasticsearch/search`. * Supports: * - named path segments `path/{name}`. * - optional path segments `path/{position?}`. @@ -64,6 +66,8 @@ export interface RouteConfig

, TypeOf, TypeOf>, response: KibanaResponseFactory -) => KibanaResponse | Promise>; +) => IKibanaResponse | Promise>; diff --git a/src/core/server/http/types.ts b/src/core/server/http/types.ts index cade4ea4d4f2c..d75028ca12d66 100644 --- a/src/core/server/http/types.ts +++ b/src/core/server/http/types.ts @@ -16,10 +16,16 @@ * specific language governing permissions and limitations * under the License. */ - import { IContextProvider, IContextContainer } from '../context'; -import { RequestHandler } from './router'; -import { RequestHandlerContext } from '..'; +import { RequestHandler, IRouter } from './router'; +import { HttpServerSetup } from './http_server'; +import { SessionStorageCookieOptions } from './cookie_session_storage'; +import { SessionStorageFactory } from './session_storage'; +import { AuthenticationHandler } from './lifecycle/auth'; +import { OnPreAuthHandler } from './lifecycle/on_pre_auth'; +import { OnPostAuthHandler } from './lifecycle/on_post_auth'; +import { IBasePath } from './base_path_service'; +import { PluginOpaqueId, RequestHandlerContext } from '..'; /** * An object that handles registration of http request context providers. @@ -36,3 +42,199 @@ export type RequestHandlerContextContainer = IContextContainer = IContextProvider, TContextName>; + +/** + * Kibana HTTP Service provides own abstraction for work with HTTP stack. + * Plugins don't have direct access to `hapi` server and its primitives anymore. Moreover, + * plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. + * This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. + * If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. + * + * @example + * To handle an incoming request in your plugin you should: + * - Create a `Router` instance. Router is already configured to use `plugin-id` to prefix path segment for your routes. + * ```ts + * const router = httpSetup.createRouter(); + * ``` + * + * - Use `@kbn/config-schema` package to create a schema to validate the request `params`, `query`, and `body`. Every incoming request will be validated against the created schema. If validation failed, the request is rejected with `400` status and `Bad request` error without calling the route's handler. + * To opt out of validating the request, specify `false`. + * ```ts + * import { schema, TypeOf } from '@kbn/config-schema'; + * const validate = { + * params: schema.object({ + * id: schema.string(), + * }), + * }; + * ``` + * + * - Declare a function to respond to incoming request. + * The function will receive `request` object containing request details: url, headers, matched route, as well as validated `params`, `query`, `body`. + * And `response` object instructing HTTP server to create HTTP response with information sent back to the client as the response body, headers, and HTTP status. + * Unlike, `hapi` route handler in the Legacy platform, any exception raised during the handler call will generate `500 Server error` response and log error details for further investigation. See below for returning custom error responses. + * ```ts + * const handler = async (context: RequestHandlerContext, request: KibanaRequest, response: ResponseFactory) => { + * const data = await findObject(request.params.id); + * // creates a command to respond with 'not found' error + * if (!data) return response.notFound(); + * // creates a command to send found data to the client and set response headers + * return response.ok({ + * body: data, + * headers: { + * 'content-type': 'application/json' + * } + * }); + * } + * ``` + * + * - Register route handler for GET request to 'my-app/path/{id}' path + * ```ts + * import { schema, TypeOf } from '@kbn/config-schema'; + * const router = httpSetup.createRouter(); + * + * const validate = { + * params: schema.object({ + * id: schema.string(), + * }), + * }; + * + * router.get({ + * path: 'path/{id}', + * validate + * }, + * async (context, request, response) => { + * const data = await findObject(request.params.id); + * if (!data) return response.notFound(); + * return response.ok({ + * body: data, + * headers: { + * 'content-type': 'application/json' + * } + * }); + * }); + * ``` + * @public + */ +export interface HttpServiceSetup { + /** + * Creates cookie based session storage factory {@link SessionStorageFactory} + * @param cookieOptions {@link SessionStorageCookieOptions} - options to configure created cookie session storage. + */ + createCookieSessionStorageFactory: ( + cookieOptions: SessionStorageCookieOptions + ) => Promise>; + + /** + * To define custom logic to perform for incoming requests. + * + * @remarks + * Runs the handler before Auth interceptor performs a check that user has access to requested resources, so it's the + * only place when you can forward a request to another URL right on the server. + * Can register any number of registerOnPostAuth, which are called in sequence + * (from the first registered to the last). See {@link OnPreAuthHandler}. + * + * @param handler {@link OnPreAuthHandler} - function to call. + */ + registerOnPreAuth: (handler: OnPreAuthHandler) => void; + + /** + * To define custom authentication and/or authorization mechanism for incoming requests. + * + * @remarks + * A handler should return a state to associate with the incoming request. + * The state can be retrieved later via http.auth.get(..) + * Only one AuthenticationHandler can be registered. See {@link AuthenticationHandler}. + * + * @param handler {@link AuthenticationHandler} - function to perform authentication. + */ + registerAuth: (handler: AuthenticationHandler) => void; + + /** + * To define custom logic to perform for incoming requests. + * + * @remarks + * Runs the handler after Auth interceptor + * did make sure a user has access to the requested resource. + * The auth state is available at stage via http.auth.get(..) + * Can register any number of registerOnPreAuth, which are called in sequence + * (from the first registered to the last). See {@link OnPostAuthHandler}. + * + * @param handler {@link OnPostAuthHandler} - function to call. + */ + registerOnPostAuth: (handler: OnPostAuthHandler) => void; + + /** + * Access or manipulate the Kibana base path + * See {@link IBasePath}. + */ + basePath: IBasePath; + + /** + * Flag showing whether a server was configured to use TLS connection. + */ + isTlsEnabled: boolean; + + /** + * Provides ability to declare a handler function for a particular path and HTTP request method. + * + * @remarks + * Each route can have only one handler function, which is executed when the route is matched. + * See the {@link IRouter} documentation for more information. + * + * @example + * ```ts + * const router = createRouter(); + * // handler is called when '${my-plugin-id}/path' resource is requested with `GET` method + * router.get({ path: '/path', validate: false }, (context, req, res) => res.ok({ content: 'ok' })); + * ``` + * @public + */ + createRouter: () => IRouter; + + /** + * Register a context provider for a route handler. + * @example + * ```ts + * // my-plugin.ts + * deps.http.registerRouteHandlerContext( + * 'myApp', + * (context, req) => { + * async function search (id: string) { + * return await context.elasticsearch.adminClient.callAsInternalUser('endpoint', id); + * } + * return { search }; + * } + * ); + * + * // my-route-handler.ts + * router.get({ path: '/', validate: false }, async (context, req, res) => { + * const response = await context.myApp.search(...); + * return res.ok(response); + * }); + * ``` + * @public + */ + registerRouteHandlerContext: ( + contextName: T, + provider: RequestHandlerContextProvider + ) => RequestHandlerContextContainer; +} + +/** @internal */ +export interface InternalHttpServiceSetup + extends Omit { + auth: HttpServerSetup['auth']; + server: HttpServerSetup['server']; + createRouter: (path: string, plugin?: PluginOpaqueId) => IRouter; + registerRouteHandlerContext: ( + pluginOpaqueId: PluginOpaqueId, + contextName: T, + provider: RequestHandlerContextProvider + ) => RequestHandlerContextContainer; +} + +/** @public */ +export interface HttpServiceStart { + /** Indicates if http server is listening on a given port */ + isListening: (port: number) => boolean; +} diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 6add81af863d1..0941153fee87d 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -39,20 +39,12 @@ * @packageDocumentation */ -import { Observable } from 'rxjs'; import { - IClusterClient, - ElasticsearchClientConfig, ElasticsearchServiceSetup, + InternalElasticsearchServiceSetup, IScopedClusterClient, } from './elasticsearch'; -import { - HttpServiceSetup, - HttpServiceStart, - IRouter, - RequestHandlerContextContainer, - RequestHandlerContextProvider, -} from './http'; +import { InternalHttpServiceSetup, HttpServiceSetup } from './http'; import { PluginsServiceSetup, PluginsServiceStart, PluginOpaqueId } from './plugins'; import { ContextSetup } from './context'; import { SavedObjectsServiceStart } from './saved_objects'; @@ -76,6 +68,8 @@ export { ElasticsearchClientConfig, ElasticsearchError, ElasticsearchErrorHelpers, + ElasticsearchServiceSetup, + APICaller, FakeRequest, } from './elasticsearch'; export * from './elasticsearch/api_types'; @@ -85,6 +79,9 @@ export { AuthResultParams, AuthStatus, AuthToolkit, + AuthResult, + AuthResultType, + Authenticated, BasePath, IBasePath, CustomHttpResponseOptions, @@ -92,12 +89,14 @@ export { GetAuthState, HttpResponseOptions, HttpResponsePayload, - HttpServerSetup, + HttpServiceSetup, + HttpServiceStart, ErrorHttpResponseOptions, IKibanaSocket, IsAuthenticated, KibanaRequest, KibanaRequestRoute, + IKibanaResponse, LifecycleResponseFactory, KnownHeaders, LegacyRequest, @@ -198,30 +197,12 @@ export interface RequestHandlerContext { * @public */ export interface CoreSetup { - context: { - createContextContainer: ContextSetup['createContextContainer']; - }; - elasticsearch: { - adminClient$: Observable; - dataClient$: Observable; - createClient: ( - type: string, - clientConfig?: Partial - ) => IClusterClient; - }; - http: { - createCookieSessionStorageFactory: HttpServiceSetup['createCookieSessionStorageFactory']; - registerOnPreAuth: HttpServiceSetup['registerOnPreAuth']; - registerAuth: HttpServiceSetup['registerAuth']; - registerOnPostAuth: HttpServiceSetup['registerOnPostAuth']; - basePath: HttpServiceSetup['basePath']; - isTlsEnabled: HttpServiceSetup['isTlsEnabled']; - registerRouteHandlerContext: ( - name: T, - provider: RequestHandlerContextProvider - ) => RequestHandlerContextContainer; - createRouter: () => IRouter; - }; + /** {@link ContextSetup} */ + context: ContextSetup; + /** {@link ElasticsearchServiceSetup} */ + elasticsearch: ElasticsearchServiceSetup; + /** {@link HttpServiceSetup} */ + http: HttpServiceSetup; } /** @@ -234,8 +215,8 @@ export interface CoreStart {} // eslint-disable-line @typescript-eslint/no-empty /** @internal */ export interface InternalCoreSetup { context: ContextSetup; - http: HttpServiceSetup; - elasticsearch: ElasticsearchServiceSetup; + http: InternalHttpServiceSetup; + elasticsearch: InternalElasticsearchServiceSetup; } /** @@ -245,12 +226,4 @@ export interface InternalCoreStart { savedObjects: SavedObjectsServiceStart; } -export { - ContextSetup, - HttpServiceSetup, - HttpServiceStart, - ElasticsearchServiceSetup, - PluginsServiceSetup, - PluginsServiceStart, - PluginOpaqueId, -}; +export { ContextSetup, PluginsServiceSetup, PluginsServiceStart, PluginOpaqueId }; diff --git a/src/core/server/legacy/legacy_service.test.ts b/src/core/server/legacy/legacy_service.test.ts index b5153847e2d0f..9b64d7c811aa7 100644 --- a/src/core/server/legacy/legacy_service.test.ts +++ b/src/core/server/legacy/legacy_service.test.ts @@ -39,7 +39,7 @@ import { ContextSetup } from '../context'; import { contextServiceMock } from '../context/context_service.mock'; import { getEnvOptions } from '../config/__mocks__/env'; import { configServiceMock } from '../config/config_service.mock'; -import { ElasticsearchServiceSetup } from '../elasticsearch'; +import { InternalElasticsearchServiceSetup } from '../elasticsearch'; import { HttpServiceStart, BasePathProxyServer } from '../http'; import { loggingServiceMock } from '../logging/logging_service.mock'; import { DiscoveredPlugin, DiscoveredPluginInternal } from '../plugins'; @@ -56,7 +56,7 @@ let config$: BehaviorSubject; let setupDeps: { core: { context: ContextSetup; - elasticsearch: ElasticsearchServiceSetup; + elasticsearch: InternalElasticsearchServiceSetup; http: any; plugins: PluginsServiceSetup; }; diff --git a/src/core/server/plugins/plugins_service.ts b/src/core/server/plugins/plugins_service.ts index 0fe20e7e59c31..781b3ad309ba1 100644 --- a/src/core/server/plugins/plugins_service.ts +++ b/src/core/server/plugins/plugins_service.ts @@ -21,8 +21,8 @@ import { Observable } from 'rxjs'; import { filter, first, map, mergeMap, tap, toArray } from 'rxjs/operators'; import { CoreService } from '../../types'; import { CoreContext } from '../core_context'; -import { ElasticsearchServiceSetup } from '../elasticsearch/elasticsearch_service'; -import { HttpServiceSetup } from '../http/http_service'; +import { InternalElasticsearchServiceSetup } from '../elasticsearch'; +import { InternalHttpServiceSetup } from '../http'; import { Logger } from '../logging'; import { discover, PluginDiscoveryError, PluginDiscoveryErrorType } from './discovery'; import { PluginWrapper } from './plugin'; @@ -48,8 +48,8 @@ export interface PluginsServiceStart { /** @internal */ export interface PluginsServiceSetupDeps { context: ContextSetup; - elasticsearch: ElasticsearchServiceSetup; - http: HttpServiceSetup; + elasticsearch: InternalElasticsearchServiceSetup; + http: InternalHttpServiceSetup; } /** @internal */ diff --git a/src/core/server/saved_objects/service/saved_objects_client.ts b/src/core/server/saved_objects/service/saved_objects_client.ts index 6e23f81aa3df9..634f5ba007397 100644 --- a/src/core/server/saved_objects/service/saved_objects_client.ts +++ b/src/core/server/saved_objects/service/saved_objects_client.ts @@ -28,8 +28,6 @@ import { } from '../types'; import { SavedObjectsErrorHelpers } from './lib/errors'; -type Omit = Pick>; - /** * * @public diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index d1d6f35b4da1e..3988d8dc7a751 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -388,8 +388,6 @@ export interface APICaller { (endpoint: string, clientParams?: Record, options?: CallAPIOptions): Promise; } -// Warning: (ae-missing-release-tag) "AssistanceAPIResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AssistanceAPIResponse { // (undocumented) @@ -400,8 +398,6 @@ export interface AssistanceAPIResponse { }; } -// Warning: (ae-missing-release-tag) "AssistantAPIClientParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface AssistantAPIClientParams extends GenericParams { // (undocumented) @@ -410,15 +406,21 @@ export interface AssistantAPIClientParams extends GenericParams { path: '/_migration/assistance'; } -// Warning: (ae-forgotten-export) The symbol "AuthResult" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "KibanaResponse" needs to be exported by the entry point index.d.ts -// // @public (undocumented) -export type AuthenticationHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: AuthToolkit) => AuthResult | KibanaResponse | Promise; +export interface Authenticated extends AuthResultParams { + // (undocumented) + type: AuthResultType.authenticated; +} + +// @public +export type AuthenticationHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: AuthToolkit) => AuthResult | IKibanaResponse | Promise; // @public export type AuthHeaders = Record; +// @public (undocumented) +export type AuthResult = Authenticated; + // @public export interface AuthResultParams { requestHeaders?: AuthHeaders; @@ -426,6 +428,12 @@ export interface AuthResultParams { state?: Record; } +// @public (undocumented) +export enum AuthResultType { + // (undocumented) + authenticated = "authenticated" +} + // @public export enum AuthStatus { authenticated = "authenticated", @@ -499,26 +507,11 @@ export type CoreId = symbol; // @public export interface CoreSetup { // (undocumented) - context: { - createContextContainer: ContextSetup['createContextContainer']; - }; + context: ContextSetup; // (undocumented) - elasticsearch: { - adminClient$: Observable; - dataClient$: Observable; - createClient: (type: string, clientConfig?: Partial) => IClusterClient; - }; + elasticsearch: ElasticsearchServiceSetup; // (undocumented) - http: { - createCookieSessionStorageFactory: HttpServiceSetup['createCookieSessionStorageFactory']; - registerOnPreAuth: HttpServiceSetup['registerOnPreAuth']; - registerAuth: HttpServiceSetup['registerAuth']; - registerOnPostAuth: HttpServiceSetup['registerOnPostAuth']; - basePath: HttpServiceSetup['basePath']; - isTlsEnabled: HttpServiceSetup['isTlsEnabled']; - registerRouteHandlerContext: (name: T, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; - createRouter: () => IRouter; - }; + http: HttpServiceSetup; } // @public @@ -533,8 +526,6 @@ export interface CustomHttpResponseOptions; }; -// Warning: (ae-missing-release-tag) "ElasticsearchError" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface ElasticsearchError extends Boom { // (undocumented) @@ -607,15 +592,9 @@ export class ElasticsearchErrorHelpers { // @public (undocumented) export interface ElasticsearchServiceSetup { - // (undocumented) readonly adminClient$: Observable; readonly createClient: (type: string, clientConfig?: Partial) => IClusterClient; - // (undocumented) readonly dataClient$: Observable; - // (undocumented) - readonly legacy: { - readonly config$: Observable; - }; } // @public (undocumented) @@ -674,31 +653,17 @@ export interface HttpResponseOptions { export type HttpResponsePayload = undefined | string | Record | Buffer | Stream; // @public -export interface HttpServerSetup { - // (undocumented) - auth: { - get: GetAuthState; - isAuthenticated: IsAuthenticated; - getAuthHeaders: GetAuthHeaders; - }; - // (undocumented) +export interface HttpServiceSetup { basePath: IBasePath; createCookieSessionStorageFactory: (cookieOptions: SessionStorageCookieOptions) => Promise>; + createRouter: () => IRouter; isTlsEnabled: boolean; registerAuth: (handler: AuthenticationHandler) => void; registerOnPostAuth: (handler: OnPostAuthHandler) => void; registerOnPreAuth: (handler: OnPreAuthHandler) => void; - registerRouter: (router: IRouter) => void; - // (undocumented) - server: Server; + registerRouteHandlerContext: (contextName: T, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; } -// @public (undocumented) -export type HttpServiceSetup = Omit & { - createRouter: (path: string, plugin?: PluginOpaqueId) => IRouter; - registerRouteHandlerContext: (pluginOpaqueId: PluginOpaqueId, contextName: T, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; -}; - // @public (undocumented) export interface HttpServiceStart { isListening: (port: number) => boolean; @@ -719,6 +684,16 @@ export interface IContextContainer> { // @public export type IContextProvider, TContextName extends keyof HandlerContextType> = (context: Partial>, ...rest: HandlerParameters) => Promise[TContextName]> | HandlerContextType[TContextName]; +// @public +export interface IKibanaResponse { + // (undocumented) + readonly options: HttpResponseOptions; + // (undocumented) + readonly payload?: T; + // (undocumented) + readonly status: number; +} + // @public export interface IKibanaSocket { readonly authorizationError?: Error; @@ -730,8 +705,6 @@ export interface IKibanaSocket { getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate | null; } -// Warning: (ae-missing-release-tag) "IndexSettingsDeprecationInfo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export interface IndexSettingsDeprecationInfo { // (undocumented) @@ -742,10 +715,14 @@ export interface IndexSettingsDeprecationInfo { export interface InternalCoreSetup { // (undocumented) context: ContextSetup; + // Warning: (ae-forgotten-export) The symbol "InternalElasticsearchServiceSetup" needs to be exported by the entry point index.d.ts + // // (undocumented) - elasticsearch: ElasticsearchServiceSetup; + elasticsearch: InternalElasticsearchServiceSetup; + // Warning: (ae-forgotten-export) The symbol "InternalHttpServiceSetup" needs to be exported by the entry point index.d.ts + // // (undocumented) - http: HttpServiceSetup; + http: InternalHttpServiceSetup; } // @internal (undocumented) @@ -936,19 +913,15 @@ export interface LogRecord { timestamp: Date; } -// Warning: (ae-missing-release-tag) "MIGRATION_ASSISTANCE_INDEX_ACTION" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type MIGRATION_ASSISTANCE_INDEX_ACTION = 'upgrade' | 'reindex'; -// Warning: (ae-missing-release-tag) "MIGRATION_DEPRECATION_LEVEL" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type MIGRATION_DEPRECATION_LEVEL = 'none' | 'info' | 'warning' | 'critical'; // Warning: (ae-forgotten-export) The symbol "OnPostAuthResult" needs to be exported by the entry point index.d.ts // -// @public (undocumented) +// @public export type OnPostAuthHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: OnPostAuthToolkit) => OnPostAuthResult | KibanaResponse | Promise; // @public @@ -958,7 +931,7 @@ export interface OnPostAuthToolkit { // Warning: (ae-forgotten-export) The symbol "OnPreAuthResult" needs to be exported by the entry point index.d.ts // -// @public (undocumented) +// @public export type OnPreAuthHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: OnPreAuthToolkit) => OnPreAuthResult | KibanaResponse | Promise; // @public @@ -1062,7 +1035,7 @@ export type RedirectResponseOptions = HttpResponseOptions & { }; // @public -export type RequestHandler

= (context: RequestHandlerContext, request: KibanaRequest, TypeOf, TypeOf>, response: KibanaResponseFactory) => KibanaResponse | Promise>; +export type RequestHandler

= (context: RequestHandlerContext, request: KibanaRequest, TypeOf, TypeOf>, response: KibanaResponseFactory) => IKibanaResponse | Promise>; // @public export interface RequestHandlerContext { @@ -1536,8 +1509,6 @@ export interface SavedObjectsUpdateOptions extends SavedObjectsBaseOptions { version?: string; } -// Warning: (ae-forgotten-export) The symbol "Omit" needs to be exported by the entry point index.d.ts -// // @public (undocumented) export interface SavedObjectsUpdateResponse extends Omit, 'attributes' | 'references'> { // (undocumented) @@ -1577,6 +1548,7 @@ export interface SessionStorageFactory { // Warnings were encountered during analysis: // +// src/core/server/http/router/response.ts:316:3 - (ae-forgotten-export) The symbol "KibanaResponse" needs to be exported by the entry point index.d.ts // src/core/server/plugins/plugins_service.ts:39:5 - (ae-forgotten-export) The symbol "DiscoveredPluginInternal" needs to be exported by the entry point index.d.ts ``` diff --git a/src/core/server/server.ts b/src/core/server/server.ts index 29c9a3cd09275..81d30a367261d 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -22,7 +22,7 @@ import { Type } from '@kbn/config-schema'; import { ConfigService, Env, Config, ConfigPath } from './config'; import { ElasticsearchService } from './elasticsearch'; -import { HttpService, HttpServiceSetup } from './http'; +import { HttpService, InternalHttpServiceSetup } from './http'; import { LegacyService } from './legacy'; import { Logger, LoggerFactory } from './logging'; import { PluginsService, config as pluginsConfig } from './plugins'; @@ -140,7 +140,7 @@ export class Server { await this.http.stop(); } - private registerDefaultRoute(httpSetup: HttpServiceSetup) { + private registerDefaultRoute(httpSetup: InternalHttpServiceSetup) { const router = httpSetup.createRouter('/core'); router.get({ path: '/', validate: false }, async (context, req, res) => res.ok({ body: { version: '0.0.1' } }) diff --git a/src/legacy/ui/public/notify/toasts/toast_notifications.test.ts b/src/legacy/ui/public/notify/toasts/toast_notifications.test.ts index 61660812de1b7..ba39ee59e388c 100644 --- a/src/legacy/ui/public/notify/toasts/toast_notifications.test.ts +++ b/src/legacy/ui/public/notify/toasts/toast_notifications.test.ts @@ -17,130 +17,70 @@ * under the License. */ -import sinon from 'sinon'; -import { ToastsApi } from '../../../../../core/public'; -import { uiSettingsServiceMock, i18nServiceMock } from '../../../../../core/public/mocks'; +import { notificationServiceMock } from '../../../../../core/public/mocks'; import { ToastNotifications } from './toast_notifications'; - -function toastDeps() { - const uiSettingsMock = uiSettingsServiceMock.createSetupContract(); - uiSettingsMock.get.mockImplementation(() => (config: string) => { - switch (config) { - case 'notifications:lifetime:info': - return 5000; - case 'notifications:lifetime:warning': - return 10000; - case 'notification:lifetime:error': - return 30000; - default: - throw new Error(`Accessing ${config} is not supported in the mock.`); - } - }); - return { - uiSettings: uiSettingsMock, - i18n: i18nServiceMock.createStartContract(), - }; -} +import { Toast } from '../../../../../core/public'; +import { BehaviorSubject } from 'rxjs'; describe('ToastNotifications', () => { describe('interface', () => { function setup() { - return { toastNotifications: new ToastNotifications(new ToastsApi(toastDeps())) }; + const toastsMock = notificationServiceMock.createStartContract().toasts; + return { toastNotifications: new ToastNotifications(toastsMock), toastsMock }; } describe('add method', () => { test('adds a toast', () => { - const { toastNotifications } = setup(); - toastNotifications.add({}); - expect(toastNotifications.list).toHaveLength(1); - }); - - test('adds a toast with an ID property', () => { - const { toastNotifications } = setup(); + const { toastNotifications, toastsMock } = setup(); toastNotifications.add({}); - expect(toastNotifications.list[0]).toHaveProperty('id', '0'); - }); - - test('increments the toast ID', () => { - const { toastNotifications } = setup(); - toastNotifications.add({}); - toastNotifications.add({}); - expect(toastNotifications.list[1]).toHaveProperty('id', '1'); - }); - - test('accepts a string', () => { - const { toastNotifications } = setup(); - toastNotifications.add('New toast'); - expect(toastNotifications.list[0]).toHaveProperty('title', 'New toast'); + expect(toastsMock.add).toHaveBeenCalled(); }); }); describe('remove method', () => { test('removes a toast', () => { - const { toastNotifications } = setup(); - const toast = toastNotifications.add('Test'); - toastNotifications.remove(toast); - expect(toastNotifications.list).toHaveLength(0); - }); - - test('ignores unknown toast', () => { - const { toastNotifications } = setup(); - const toast = toastNotifications.add('Test'); - toastNotifications.remove({ - id: `not ${toast.id}`, - }); - expect(toastNotifications.list).toHaveLength(1); + const { toastNotifications, toastsMock } = setup(); + const fakeToast = {} as Toast; + toastNotifications.remove(fakeToast); + expect(toastsMock.remove).toHaveBeenCalledWith(fakeToast); }); }); describe('onChange method', () => { - test('callback is called when a toast is added', () => { - const { toastNotifications } = setup(); - const onChangeSpy = sinon.spy(); + test('callback is called when observable changes', () => { + const toastsMock = notificationServiceMock.createStartContract().toasts; + const toasts$ = new BehaviorSubject([]); + toastsMock.get$.mockReturnValue(toasts$); + const toastNotifications = new ToastNotifications(toastsMock); + const onChangeSpy = jest.fn(); toastNotifications.onChange(onChangeSpy); - toastNotifications.add({}); - sinon.assert.calledOnce(onChangeSpy); - }); - - test('callback is called when a toast is removed', () => { - const { toastNotifications } = setup(); - const onChangeSpy = sinon.spy(); - toastNotifications.onChange(onChangeSpy); - const toast = toastNotifications.add({}); - toastNotifications.remove(toast); - sinon.assert.calledTwice(onChangeSpy); - }); - - test('callback is not called when remove is ignored', () => { - const { toastNotifications } = setup(); - const onChangeSpy = sinon.spy(); - toastNotifications.onChange(onChangeSpy); - toastNotifications.remove({ id: 'foo' }); - sinon.assert.notCalled(onChangeSpy); + toasts$.next([{ id: 'toast1' }]); + toasts$.next([]); + expect(onChangeSpy).toHaveBeenCalledTimes(2); }); }); describe('addSuccess method', () => { test('adds a success toast', () => { - const { toastNotifications } = setup(); + const { toastNotifications, toastsMock } = setup(); toastNotifications.addSuccess({}); - expect(toastNotifications.list[0]).toHaveProperty('color', 'success'); + expect(toastsMock.addSuccess).toHaveBeenCalled(); }); }); describe('addWarning method', () => { test('adds a warning toast', () => { - const { toastNotifications } = setup(); + const { toastNotifications, toastsMock } = setup(); toastNotifications.addWarning({}); - expect(toastNotifications.list[0]).toHaveProperty('color', 'warning'); + expect(toastsMock.addWarning).toHaveBeenCalled(); }); }); describe('addDanger method', () => { test('adds a danger toast', () => { - const { toastNotifications } = setup(); - toastNotifications.addDanger({}); - expect(toastNotifications.list[0]).toHaveProperty('color', 'danger'); + const { toastNotifications, toastsMock } = setup(); + toastNotifications.addWarning({}); + expect(toastsMock.addWarning).toHaveBeenCalled(); }); }); }); diff --git a/x-pack/legacy/plugins/apm/public/hooks/useFetcher.tsx b/x-pack/legacy/plugins/apm/public/hooks/useFetcher.tsx index 16a49ef6cd636..ba74b0175ff71 100644 --- a/x-pack/legacy/plugins/apm/public/hooks/useFetcher.tsx +++ b/x-pack/legacy/plugins/apm/public/hooks/useFetcher.tsx @@ -7,7 +7,7 @@ import React, { useContext, useEffect, useState, useMemo } from 'react'; import { idx } from '@kbn/elastic-idx'; import { i18n } from '@kbn/i18n'; -import { HttpFetchError } from 'src/core/public'; +import { IHttpFetchError } from 'src/core/public'; import { LoadingIndicatorContext } from '../context/LoadingIndicatorContext'; import { useComponentId } from './useComponentId'; import { useKibanaCore } from '../../../observability/public'; @@ -86,7 +86,7 @@ export function useFetcher( } as Result>); } } catch (e) { - const err = e as HttpFetchError; + const err = e as IHttpFetchError; if (!didCancel) { notifications.toasts.addWarning({ title: i18n.translate('xpack.apm.fetcher.error.title', { diff --git a/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts index 1c4a2e04dfb2c..1f20fee46ba4c 100644 --- a/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts @@ -10,10 +10,11 @@ import { Legacy } from 'kibana'; import { kibanaTestUser } from '@kbn/test'; import { initSpacesOnRequestInterceptor } from './on_request_interceptor'; import { - HttpServiceSetup, CoreSetup, SavedObjectsLegacyService, SavedObjectsErrorHelpers, + IBasePath, + IRouter, } from '../../../../../../src/core/server'; import { elasticsearchServiceMock, @@ -45,7 +46,7 @@ describe('onPostAuthInterceptor', () => { afterEach(async () => await root.shutdown()); - function initKbnServer(http: HttpServiceSetup, routes: 'legacy' | 'new-platform') { + function initKbnServer(router: IRouter, basePath: IBasePath, routes: 'legacy' | 'new-platform') { const kbnServer = kbnTestServer.getKbnServer(root); if (routes === 'legacy') { @@ -54,52 +55,50 @@ describe('onPostAuthInterceptor', () => { method: 'GET', path: '/foo', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, { method: 'GET', path: '/app/kibana', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, { method: 'GET', path: '/app/app-1', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, { method: 'GET', path: '/app/app-2', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, { method: 'GET', path: '/api/test/foo', handler: (req: Legacy.Request) => { - return { path: req.path, basePath: http.basePath.get(req) }; + return { path: req.path, basePath: basePath.get(req) }; }, }, { method: 'GET', path: '/some/path/s/foo/bar', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, ]); } if (routes === 'new-platform') { - const router = http.createRouter('/'); - router.get({ path: '/api/np_test/foo', validate: false }, (context, req, h) => { - return h.ok({ body: { path: req.url.pathname, basePath: http.basePath.get(req) } }); + return h.ok({ body: { path: req.url.pathname, basePath: basePath.get(req) } }); }); } } @@ -211,11 +210,13 @@ describe('onPostAuthInterceptor', () => { spacesService, }); - initKbnServer(http, 'new-platform'); + const router = http.createRouter('/'); + + initKbnServer(router, http.basePath, 'new-platform'); await root.start(); - initKbnServer(http, 'legacy'); + initKbnServer(router, http.basePath, 'legacy'); const response = await kbnTestServer.request.get(root, path); diff --git a/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts b/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts index 0bbcd20c85292..d6ff4a20052e4 100644 --- a/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts +++ b/x-pack/plugins/spaces/server/lib/request_interceptors/on_request_interceptor.test.ts @@ -8,10 +8,11 @@ import { Legacy } from 'kibana'; import { schema } from '@kbn/config-schema'; import { initSpacesOnRequestInterceptor } from './on_request_interceptor'; import { - HttpServiceSetup, KibanaRequest, KibanaResponseFactory, CoreSetup, + IBasePath, + IRouter, } from '../../../../../../src/core/server'; import * as kbnTestServer from '../../../../../../src/test_utils/kbn_server'; @@ -26,7 +27,7 @@ describe('onRequestInterceptor', () => { afterEach(async () => await root.shutdown()); - function initKbnServer(http: HttpServiceSetup, routes: 'legacy' | 'new-platform') { + function initKbnServer(router: IRouter, basePath: IBasePath, routes: 'legacy' | 'new-platform') { const kbnServer = kbnTestServer.getKbnServer(root); if (routes === 'legacy') { @@ -35,14 +36,14 @@ describe('onRequestInterceptor', () => { method: 'GET', path: '/foo', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, { method: 'GET', path: '/some/path/s/foo/bar', handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { - return h.response({ path: req.path, basePath: http.basePath.get(req) }); + return h.response({ path: req.path, basePath: basePath.get(req) }); }, }, { @@ -51,7 +52,7 @@ describe('onRequestInterceptor', () => { handler: (req: Legacy.Request, h: Legacy.ResponseToolkit) => { return h.response({ path: req.path, - basePath: http.basePath.get(req), + basePath: basePath.get(req), query: req.query, }); }, @@ -60,19 +61,17 @@ describe('onRequestInterceptor', () => { } if (routes === 'new-platform') { - const router = http.createRouter('/'); - router.get( { path: '/np_foo', validate: false }, (context: unknown, req: KibanaRequest, h: KibanaResponseFactory) => { - return h.ok({ body: { path: req.url.pathname, basePath: http.basePath.get(req) } }); + return h.ok({ body: { path: req.url.pathname, basePath: basePath.get(req) } }); } ); router.get( { path: '/some/path/s/np_foo/bar', validate: false }, (context: unknown, req: KibanaRequest, h: KibanaResponseFactory) => { - return h.ok({ body: { path: req.url.pathname, basePath: http.basePath.get(req) } }); + return h.ok({ body: { path: req.url.pathname, basePath: basePath.get(req) } }); } ); @@ -91,7 +90,7 @@ describe('onRequestInterceptor', () => { return h.ok({ body: { path: req.url.pathname, - basePath: http.basePath.get(req), + basePath: basePath.get(req), query: req.query, }, }); @@ -115,11 +114,13 @@ describe('onRequestInterceptor', () => { http: (http as unknown) as CoreSetup['http'], }); - initKbnServer(http, 'new-platform'); + const router = http.createRouter('/'); + + initKbnServer(router, http.basePath, 'new-platform'); await root.start(); - initKbnServer(http, 'legacy'); + initKbnServer(router, http.basePath, 'legacy'); return { http, From 55e1b670a16b70605187f26104ef773843ed07b2 Mon Sep 17 00:00:00 2001 From: Wylie Conlon Date: Tue, 15 Oct 2019 12:58:21 -0400 Subject: [PATCH 44/46] Skip failing dashboard test #48236 (#48251) --- test/functional/apps/dashboard/empty_dashboard.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/functional/apps/dashboard/empty_dashboard.js b/test/functional/apps/dashboard/empty_dashboard.js index 2a7772a32093b..94c562b312a47 100644 --- a/test/functional/apps/dashboard/empty_dashboard.js +++ b/test/functional/apps/dashboard/empty_dashboard.js @@ -39,7 +39,8 @@ export default function ({ getService, getPageObjects }) { expect(addButtonExists).to.be(true); }); - it('should open add panel when add button is clicked', async () => { + // Flaky test: https://github.com/elastic/kibana/issues/48236 + it.skip('should open add panel when add button is clicked', async () => { await testSubjects.click('emptyDashboardAddPanelButton'); const isAddPanelOpen = await dashboardAddPanel.isAddPanelOpen(); expect(isAddPanelOpen).to.be(true); From 2c89392c1b85151016aa939d9ef62ed5725f917c Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Tue, 15 Oct 2019 11:06:48 -0600 Subject: [PATCH 45/46] [Maps] Use field formatter to format value in legend (#48132) * [Maps] Use field formatter to format value in legend * remove console statement * simplify logic * review feed back --- .../legacy/plugins/maps/common/constants.js | 6 +++ .../es_search_source/es_search_source.js | 5 +++ .../maps/public/layers/sources/es_source.js | 29 +++++++++++++ .../maps/public/layers/sources/source.js | 5 +++ .../legend/style_property_legend_row.js | 26 +++++++++++- .../vector/legend/vector_style_legend.js | 6 ++- .../maps/public/layers/styles/vector_style.js | 3 +- .../maps/public/layers/vector_layer.js | 41 +++++++++++++++++-- 8 files changed, 112 insertions(+), 9 deletions(-) diff --git a/x-pack/legacy/plugins/maps/common/constants.js b/x-pack/legacy/plugins/maps/common/constants.js index 33ad39adc5d1f..1fd1f4b43bbda 100644 --- a/x-pack/legacy/plugins/maps/common/constants.js +++ b/x-pack/legacy/plugins/maps/common/constants.js @@ -49,6 +49,12 @@ export const EMS_FILE = 'EMS_FILE'; export const ES_GEO_GRID = 'ES_GEO_GRID'; export const ES_SEARCH = 'ES_SEARCH'; export const ES_PEW_PEW = 'ES_PEW_PEW'; + +export const FIELD_ORIGIN = { + SOURCE: 'source', + JOIN: 'join' +}; + export const SOURCE_DATA_ID_ORIGIN = 'source'; export const GEOJSON_FILE = 'GEOJSON_FILE'; diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js b/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js index 502ed034a4416..56573322af1b0 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/es_search_source/es_search_source.js @@ -476,4 +476,9 @@ export class ESSearchSource extends AbstractESSource { path: geoField.name, }; } + + _getRawFieldName(fieldName) { + // fieldName is rawFieldName for documents source since the source uses raw documents instead of aggregated metrics + return fieldName; + } } diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/es_source.js b/x-pack/legacy/plugins/maps/public/layers/sources/es_source.js index e279b6bb6849d..2e20617848c91 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/es_source.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/es_source.js @@ -301,4 +301,33 @@ export class AbstractESSource extends AbstractVectorSource { return this._descriptor.id; } + _getRawFieldName(fieldName) { + const metricField = this.getMetricFields().find(({ propertyKey }) => { + return propertyKey === fieldName; + }); + + return metricField ? metricField.field : null; + } + + async getFieldFormatter(fieldName) { + // fieldName could be an aggregation so it needs to be unpacked to expose raw field. + const rawFieldName = this._getRawFieldName(fieldName); + if (!rawFieldName) { + return null; + } + + let indexPattern; + try { + indexPattern = await this._getIndexPattern(); + } catch(error) { + return null; + } + + const fieldFromIndexPattern = indexPattern.fields.byName[rawFieldName]; + if (!fieldFromIndexPattern) { + return null; + } + + return fieldFromIndexPattern.format.getConverterFor('text'); + } } diff --git a/x-pack/legacy/plugins/maps/public/layers/sources/source.js b/x-pack/legacy/plugins/maps/public/layers/sources/source.js index a9df3592af276..f96fc42f02178 100644 --- a/x-pack/legacy/plugins/maps/public/layers/sources/source.js +++ b/x-pack/legacy/plugins/maps/public/layers/sources/source.js @@ -127,6 +127,11 @@ export class AbstractSource { async getPreIndexedShape(/* properties */) { return null; } + + // Returns function used to format value + async getFieldFormatter(/* fieldName */) { + return null; + } } diff --git a/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/style_property_legend_row.js b/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/style_property_legend_row.js index 399fdf34c5683..2f8a603c290ab 100644 --- a/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/style_property_legend_row.js +++ b/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/style_property_legend_row.js @@ -70,19 +70,25 @@ function renderHeaderWithIcons(icons) { ); } +const EMPTY_VALUE = ''; + export class StylePropertyLegendRow extends Component { state = { label: '', + hasLoadedFieldFormatter: false, } componentDidMount() { this._isMounted = true; this._prevLabel = undefined; + this._fieldValueFormatter = undefined; this._loadLabel(); + this._loadFieldFormatter(); } componentDidUpdate() { + // label could change so it needs to be loaded on update this._loadLabel(); } @@ -90,6 +96,13 @@ export class StylePropertyLegendRow extends Component { this._isMounted = false; } + async _loadFieldFormatter() { + this._fieldValueFormatter = await this.props.getFieldFormatter(this.props.options.field); + if (this._isMounted) { + this.setState({ hasLoadedFieldFormatter: true }); + } + } + _loadLabel = async () => { if (this._isStatic()) { return; @@ -112,6 +125,14 @@ export class StylePropertyLegendRow extends Component { !this.props.options.field || !this.props.options.field.name; } + _formatValue = value => { + if (!this.state.hasLoadedFieldFormatter || !this._fieldValueFormatter || value === EMPTY_VALUE) { + return value; + } + + return this._fieldValueFormatter(value); + } + render() { const { name, options, range } = this.props; if (this._isStatic()) { @@ -130,8 +151,8 @@ export class StylePropertyLegendRow extends Component { return ( @@ -145,4 +166,5 @@ StylePropertyLegendRow.propTypes = { options: PropTypes.oneOfType(styleOptionShapes).isRequired, range: rangeShape, getFieldLabel: PropTypes.func.isRequired, + getFieldFormatter: PropTypes.func.isRequired, }; diff --git a/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/vector_style_legend.js b/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/vector_style_legend.js index 0534c819ea88b..60baaff158377 100644 --- a/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/vector_style_legend.js +++ b/x-pack/legacy/plugins/maps/public/layers/styles/components/vector/legend/vector_style_legend.js @@ -10,7 +10,7 @@ import PropTypes from 'prop-types'; import { styleOptionShapes, rangeShape } from '../style_option_shapes'; import { StylePropertyLegendRow } from './style_property_legend_row'; -export function VectorStyleLegend({ getFieldLabel, styleProperties }) { +export function VectorStyleLegend({ getFieldLabel, getFieldFormatter, styleProperties }) { return styleProperties.map(styleProperty => { return ( ); }); @@ -34,5 +35,6 @@ const stylePropertyShape = PropTypes.shape({ VectorStyleLegend.propTypes = { styleProperties: PropTypes.arrayOf(stylePropertyShape).isRequired, - getFieldLabel: PropTypes.func.isRequired + getFieldLabel: PropTypes.func.isRequired, + getFieldFormatter: PropTypes.func.isRequired, }; diff --git a/x-pack/legacy/plugins/maps/public/layers/styles/vector_style.js b/x-pack/legacy/plugins/maps/public/layers/styles/vector_style.js index f308e371c5aa2..f7926b7b88827 100644 --- a/x-pack/legacy/plugins/maps/public/layers/styles/vector_style.js +++ b/x-pack/legacy/plugins/maps/public/layers/styles/vector_style.js @@ -303,7 +303,7 @@ export class VectorStyle extends AbstractStyle { ); } - getLegendDetails(getFieldLabel) { + getLegendDetails(getFieldLabel, getFieldFormatter) { const styles = this.getProperties(); const styleProperties = Object.keys(styles).map(styleName => { const { type, options } = styles[styleName]; @@ -319,6 +319,7 @@ export class VectorStyle extends AbstractStyle { ); } diff --git a/x-pack/legacy/plugins/maps/public/layers/vector_layer.js b/x-pack/legacy/plugins/maps/public/layers/vector_layer.js index ffe2ce379436d..cf93c2ee5797c 100644 --- a/x-pack/legacy/plugins/maps/public/layers/vector_layer.js +++ b/x-pack/legacy/plugins/maps/public/layers/vector_layer.js @@ -15,7 +15,8 @@ import { SOURCE_DATA_ID_ORIGIN, FEATURE_VISIBLE_PROPERTY_NAME, EMPTY_FEATURE_COLLECTION, - LAYER_TYPE + LAYER_TYPE, + FIELD_ORIGIN, } from '../../common/constants'; import _ from 'lodash'; import { JoinTooltipProperty } from './tooltips/join_tooltip_property'; @@ -202,7 +203,16 @@ export class VectorLayer extends AbstractLayer { return field ? field.label : fieldName; }; - return this._style.getLegendDetails(getFieldLabel); + const getFieldFormatter = async field => { + const source = this._getFieldSource(field); + if (!source) { + return null; + } + + return await source.getFieldFormatter(field.name); + }; + + return this._style.getLegendDetails(getFieldLabel, getFieldFormatter); } _getBoundsBasedOnData() { @@ -249,7 +259,7 @@ export class VectorLayer extends AbstractLayer { return { label, name, - origin: SOURCE_DATA_ID_ORIGIN + origin: FIELD_ORIGIN.SOURCE }; }); const joinFields = []; @@ -257,7 +267,7 @@ export class VectorLayer extends AbstractLayer { const fields = join.getJoinFields().map(joinField => { return { ...joinField, - origin: 'join', + origin: FIELD_ORIGIN.JOIN, }; }); joinFields.push(...fields); @@ -794,4 +804,27 @@ export class VectorLayer extends AbstractLayer { }); } + _getFieldSource(field) { + if (!field) { + return null; + } + + if (field.origin === FIELD_ORIGIN.SOURCE) { + return this._source; + } + + const join = this.getValidJoins().find(join => { + const matchingField = join.getJoinFields().find(joinField => { + return joinField.name === field.name; + }); + return !!matchingField; + }); + + if (!join) { + return null; + } + + return join.getRightJoinSource(); + } + } From b0dd6c8c7172447ed8ef9b514df6a082bc95c273 Mon Sep 17 00:00:00 2001 From: Luca Belluccini Date: Tue, 15 Oct 2019 19:14:09 +0200 Subject: [PATCH 46/46] Provide an example for timepicker:refreshIntervalDefaults (#47345) * Provide an example for timepicker:refreshIntervalDefaults Add an example for `timepicker:refreshIntervalDefaults` * align with master --- docs/management/advanced-options.asciidoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc index 2e9118fef46fa..caff7f5b1fdc6 100644 --- a/docs/management/advanced-options.asciidoc +++ b/docs/management/advanced-options.asciidoc @@ -94,7 +94,7 @@ refresh the page to apply the setting. the time filter. This should be an array of objects, with each object containing `from`, `to` (see {ref}/common-options.html#date-math[accepted formats]), and `display` (the title to be displayed). -`timepicker:refreshIntervalDefaults`:: The default refresh interval for the time filter. +`timepicker:refreshIntervalDefaults`:: The default refresh interval for the time filter. Example: `{ "display": "15 seconds", "pause": true, "value": 15000 }`. `timepicker:timeDefaults`:: The default selection in the time filter. `truncate:maxHeight`:: The maximum height that a cell occupies in a table. Set to 0 to disable truncation. @@ -268,6 +268,3 @@ If disabled, only visualizations that are considered production-ready are availa Helps improve the Elastic Stack by providing usage statistics for basic features. This data will not be shared outside of Elastic. - - -

L^)Y9KSEA14 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°34+8m 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≀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⋘;eBg}QroU3`wUYDs@(Oq(@T>j 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⋙ltad;m=5eOf)szXKOv+!<4QiQsb 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∾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�<;Z50ej_c(n`e`H&Q^hDQ*>h|8@gYVeXo`YcZS zgJAvb3|d!)o}a&HEYCzFG=V^z?m5bW_cQ(q@&#TJm}B*AdUbWtJl1eaPTj~o`fYvX zo&zqyqsL(0J#X30V4;SMfWJwYg{F%~TSJIs&8afVVPtGo-?=K;8|v?-$c$RIVyr*J z2o}SY3ntpFgcNnMqp|IW($c&+nO)3Q)yY3+&0=;mJr8k5PpZ!8UBFY9n1W{?Iu_>b zF?zgi;FwyZj?HWPqT~KO?zn$XN5jHW<&nA}b2u$c>HtJRyT0aaWmvC1!)-fD#(Xy6 z6M}$|0vZN*Gvkh*PawaoPMg)qA`G0LQq{mc^r!Fg1WzA%-xuE82Lf}0(I>VyDbFKT zMn@jkD|wsblVNDv){?I8Ygw&1v%F*%DBQ~+%468vy(MGg=0sr@A|&76-tlgJ>dtT5 z@r~&W?f+|#59@cY)gng-?EPPpmz}Y{|H~;}Hi&8)#+5X=)6QbzUCY&h(3`|BS>=+#-XI%=*@ zgAvnqQzaa-dt})auZPDc$Jx9^$B-CPWK#&nYB+q6T9?6Cj-bdNuU%rMwt757%!Cp_ zQZnuEG8&|IP$4nX?t?YKCiWNF^Hz+7&5|JBB-bf7+CxR+(T_Lp4M-bS%YV-BTH!mp zKHuaU%Y?(-Vdh(3_!`M**IRrHR;WX6R8?cgk)k4A&iu{$_b$E4`}fZ>=v6oz01=#a z`g@uov{C6Y&75Eh!-?xaMao?-Dm$$wg4A4W>gL3_O`pu*Vr&Vg*SGQHvxF77XR?3S zCS2~&aUoYUDEctCB!TLTOom1iPXj+ccOeX)pFhij|60W)XO8EBpo?frWx+Hs+{@tb z+K~5h*GrHZNSxLlzys#M7vNsT9YUToi`jHuUBQ117jUC#sIgC7>k5!0F%E&uY#jh26L2zoa~%Zzi(^QeRPg=m>@ z?h&Z$>1Dm0WC5EtqkX&eqQD0+A#kl~|G`+ilkvdt;nlB}^V>&yX*{O9m>r)jF*LqxkcudXjGtUL);sWR&AE_n zZ1@f%kCQbMD(K6=cUs%pz<>4no~g9>%jEN)U0VF5v-b50Tl+W_2Exn0J6HdI|D2lXl(V zmvH7=Ko!GhkD=Q`Eww=ooRo`B2x9GmM7Hp~Vy!fW14TBF7E4)l(BLUGq7`=3AyPNC zCsVnL7*=~T<6`Z-$2%OKH5aq1<+pD!S6)i?Ds!;l;mCJ$<$FnAh0h;@L0b{fQdnNw znjw5%g$A9N9NLA6M%7jeD@ZqvhlOD!gjNM-3xd6b7Of>@NtS7qIh5xv7bSb66Ul0b zK(?{xQa`WYegjF=uSk$#*IK&#* zZ-R&Bj}LC|=?}+Er+ZHlUJCMQPshsQBPHYNF?eWt8_Oc}-#kR%uNgIKGodI*DtlBk z7tL%DBcZ_?`Kj&tWVvYOC)MTj>S`9y#06U~;jY~y?iq6?UybuVX`^|d1KdmmC^?JEjEUWcZkION>;S%jD z_k4G?)&6TGGUDK2Blp8f^+xd_U7#BN5d0PT;gmtg#Uzu{djgUS4c|S-pf$F#j3R}E zsKQO`KXBl!7{z}G%nzu_9XP;~AEm#I=E>6&h;>h@`Sr6js;fk6%00*Y7&&j&AY6Rp zrfC9%2&!EmX)w}=X4vHpB#r23rQzCDXqUCth8tc+VaMOX-fbplxxPu7389F@lP)v_ z-sTj(iM>g?4CKdH;8@^>&X$YYYCfNS$H~}$*XG9#OT@VD2@V-!Cs@$EK*9`zWk+s? z%qV}r-N5$^D=M^RnZ)ME?$*V;9=ltzoO}n&vM!$muMGt!S+YMA?xoiuvZx6wnc*zY zPkIZ+#@ji?;eBlecxrN#Sn*~?X|+)gdV9T^Rj1728*Qz1<{hlAEd<5dYE}^05o~4< zjyZ_za2M8&_;`k{+b zy7iH+&X7Q?aE*b!3@4V-jOJSl4Vl_XW0iF4$O8U9^*DUy;jZ>hX}tye;j==9UDza1 zHbQ5}+a-dteHoFDW~YS;2o_cDo~Ie5s(gJw!44f;Do zB6VTS2&QYHUrpdJzP|Bt*f$wDtbkX;aRx{K3qcNqQC*T5s=u8qZm7*TX@AXFk%<}v zf=jj)IaGkeK-6S=KR-|G+)5J6t8cT#e7ZFgREW<=z$SA#xb6jP>vwZsG+Ddy9(`!1 zOEnD{npMkq)M{FpuyC9}M8E&)y509*bKEYksbI`d{!lwcjDzHcXjU+A?ro<)+csD< zHq8XV6)G5NlgH5PU~gmKXuPEni5IL;ksYhZv&CY1whbY3u+KvF?49?v_PpKeCTE+x z7dW(4tJZ5~O(jNKK^`9CZ4MrzrLBcL&r;pZ0^f}~N#UAv87#)e(ZoR#93~kPBzrbd zz|F#ImSIq>Cqj1&#*Uz<2$`>lG?+2i9;JV$;Vs8jQiy) z*SKH4$}nyzA@DXtxr6>llp&4OrUZ54Ahv4j`t<;^3Suy1)7Ld|xp|t)%ZU87B>aCy z&b$Bw|EJ}BK^6U{dwF`%;du;igB<~#(Mi#6*hLSRs0k#o61Tq$)usX}K zwGZy3pgVt%oD@VVFry`*4mMfV8XT*lWiS=tCI(rs2D`WJg0cQBV>lto=!R*czPNP+ z#W*?^$9qq*t}c!t%sjgeh5^G}mTBg8$2nwz>B)jkU0rYeu@|V6qCu!Dkk1f_d+M;O zo1PNdmbV;2eXH(DQC+x8YN;%NgtlCD%HPXysd$)#!&xz=SB-*-@N+}=DNMEYi}&*L z6s9gPqn*yHRdv*?R?YVE)CDz$+)H@c;#BzPk=s5e%pdr*@ZH9mE7LU#)%wyDcP~1c zWjED*k)&C+@D|-5KR%He8Bi?mIUN{mWMADOZ@rk=a}K|xwYCE~o5QL@cqgMY`)FtB z`mDLQn4VO)+DtsLs~kMG>k z1Q*7U9!*fS!itfr7YGTzVTSlHt(`O6a1$k_5&T7CAP&JH)2l60xl@67`s0tgk5<#~ zYp`a>c$@FBkb8LKZyS(CcZ%Bv+=JtO;p!uIxyl65wnDyCTWem^9?fLJ<^KDl8*cyG zK~bi|ZBh$G8Fhy8wW+n1Oz?tkH{49G3dOB7N^niH`6j(3W1d%_Y%Ba3xp$+e9Y!!C zjk?p!c(dvV{^&o;n`O`u-nEakvm5TN;vhYw-~|p{W)|EZDB}2LE!TOLehFInhq#re zoUoKNBZ^biap_R-a5$7td5JP}u!Z3w^FUbbt`}uMqbxtr9N;Dk zo!vBx+4?N3E%!E)w!{1qvwLj$CFaCwxCN5H?x0Z$6YYdt0l;`XNpkW;O&gN_tQ$%U(Tkh)wDWm zW~U4AJe#Y~k4u2#UBR}Fv;+Z8_yS`{YPl7G+@7wbuB}8e@@F}-2`@iP-gSj4w@CeN zL!pXTsqe}}4-iU5n9(IoJlIOl!WAVDyKAm;M|7R_Vl(#0q@Zh}2WnM0g9&&oTyv>E}F&hZFPLTTFs`u zQI_cPx~Gy|bV@gMgXP9xJ;DZp(+qN{mckHnU>l~G3C7m99%HN9zS&gj)>64KN2xVpDcKKLExaSfh721B<} z*#M!TP`(8TSP<}^8~$!h&HOal^8MYUXLB&TxoZ%N_cJcndapos zTAhIbg_A-hW8NH-b`Sdyaj*CELszT(Qk6!Q2*eb~x+e~rC{=xU;~MgZHyMVE-5<-_ zx|CC@V%DIDN;%1ta5KZ*pMmnQw_p@?!La5nrQQQuTbtb*L*+gC&<3lt_Cd@DjK=|0YHJe$BoiIm9RQMw)RJ?qRX5((A{D@h z6fYNNhnv~kX1xVtj+a`bOt5Mn9nd?GGCd+?qs!^ZYFV9JgQae3v6=1HJWt!5Zh5QS z*nABheQ>J<@8;Kwjcoz;6uv4cM{vTUDKE8*F~||MIIaF~)+|r2do)p{P0u^T(xw+KK5~?y)Y2~vb6w-t zkBNx%Pl5^Ro!47=m(yE8G_94baF=73;QhkhN--{|a9??V!;R!K-jXq93ITtK8uIA~ z8&q|Kg6|j`_DP}eQbq|ajHRI$&FZ#-?{ercqdP5Oz3#d8tT&rGDtN0T*@XA3G5Apx zS}esx3f_?+r%NU^Bgi=_n@CR>kJ+}a<|NQpqPyeFBIXg z2;2>m(i9ck=gF(r(RjK2IMK1yTKSUMs9#A9Es6f`?Itff-PpAC*Ni2nT(=aQgcpG; z;uVe3N#{0ne<*8L@RIp?au+?cHNiJyuhP@oSFS0!iakkF zlDa06QSOv@DVH@D3M{P1oa;d82@J?+Vree9@j&H?w@NUy=I;DlL>r_fQB=c|>4!z~ zw>aOM*N|D|D}jW|jv*s8ffl@iKO=O@lufe+*gk!owCIF8>-yw4 zs`lfAqY_*x?h4$Y7`$oq;Y&EG-Y!ZwDu2;fCdvu!%^Ecni6*oT-Q>d%@q;03bxR* zF2lgED84{G`rTPFMg=a&gy>o@;nZViSE=z(IP;%6zgtgNr_))rx^4bx7VGn%=HqO< zL=fp7ZoZZJFOj72_Ld&Gr3%hT;11#UR^w2HLNcSg(#^-;ChZ(|UunJlIO-8`c_mzf zg%?F4QLvC%92rVTHeY{DPLa*WA}niFevp(1E+7sFf) z!?~ruXpEu^LMbfnNI6gh#bX~YV(8ul&S%%v_a0cNR9VzJu2N;uaM45iDg)o?fZ|?Y z_Y4u9VWgTy61@8>YG3WgsUZ_C6?KFhaRf_o_~j`%80zn3xWzcgbKk8Oi%_Y>q*)lV zFR>@y%6NJZ=c{HtyO^!2_0{sWSuAgSd)t@1^S%s}16p^_c-v5OU;57A*@w1VZcXSJ zS#8-}Wznj`EvRXglrp&*yfyn)Ef9{)z~s#a ztL|ZY;P}Tg=(#>?7K`Nqg57y=g z%n(0#gn=Kj2m@hjMjGw%rhuoz|CErW33o8udKrj}y#=H2S~j7g*1|#G++M;<;&!(Rhw4{4ja{ z+p`#RQTuTs%vIWU2B-~$j;0k!E?|KE>kp5N4ac_5iqXQ4LK0Hy(iJs*9wIwdL5b{& z&~i0hRO_?V>?ZV+O&;%1Mp5YDDDz!ovx!D1SaR&9sAZ6MT3xq)g9GTpQd1(vzj+hW zPJ46H#Iz)q6K7%!POMgpNT$nC4E47Ynx~djQHT$f$(<7m){H46N--g}Hhg~#X_Ljo9vX)_$K-fAj5 z?sV~DMnrUUN9KE5t(WuV&FwVk>E>=SZJPNSH0~*H>pQo2&yC6V!_!9|UmI=xF#v`$ zTLLNHDGyWc1X;`1&u;4N4uz+Cz7|XMTH0Q*+!dN$9o=D6R=l^_}a=%DaudOGjYTz3r4S6gsrEp(8^VIM{sPSq< zW+Ln^80FxWxJ}FY#(B}q7NK>j}*Ce!E-esXwCFf88|mDOm6Ma`n%3;6ArLgEHxC zcN;zP-elUlylt9$+kJ;I7(Z29gs3S9`dV=c8=1XJ7oeZV3((I~KL99eV;J*UQz?Bl)#W@U?_lwfSEv*ZS<3_hh-;kfCYcf#UtYO@$uG|MYZ5RC zzhoNqFF5JIAp%utiDf0H5`xX_t!nNq7@H}Q8nX+gx00=i@sjckTC=e*3a_uGmuG0h zm@oG`Lr+Ck>Yjf2%Jjgnk@x748@(oe)D8c$#F`W$o^n#|9R%kDskv50IAcf%`H-3u zQUszI?qL|~F&JulOGYU!Sc?NRjmjj>3Jy7(!+ytqBmDp#B`hX&p3DYpGn3xQFCj!M~R3%PeTF@m~w5} zaASj5>7fyOZ^0-E%1)%Ixl04Jp%K(l#K3ioXPW+Kb$vXoE~fLv>^Q(SZ|Vc>j(d7I zugB{H1y4D&{ZRv7p@2M})X0h=;M>(Rz<3q-^%plLeeI0TZi-1ExU)=l1Z+kjqK{cq zlsiAz%rGzMP!{T~7=PT?0XX9Pf~yQ=SMd9s{;TULwdYF6FAZTJ?M zxyLe=+MV&X$!7j*rh&um!w+r1IuyUKU|9wNpPG_P{=^rbToj{Ac$!8rl3H8Iz+F7_ zaPWbIQChHv6KrLF;IO-33^^eg(y%Ml>)!0do2YX{FCN{Q-WPgXdVIL6Ge$$}WXz!=g___FwZ7!688NUCd=#S8w+CpYW-#j)Z|V}i6r9(9#qEg+s0 zCTPVL34p^5<%!Dqpk!t_As!gRTQ%0UA*^MtCNd9;@om*C{;6(e)3c-M_&f#1z}tEX zFvgGV=Ajl>&G~eFR;|yP)kWZ(x8HG*T-H1Oo~7>!zDT}svMc1h#GyU5q$X(lXj&`e zpbJ?2Xf=m_Iq-9@(}d23blxliz|v!29K1uzH?};CL%8^%Elnxv8=7q+$Xdc*dDUA;KONFx zH~risXu}vbOS*Om5@ajgy12)v-uk;Lz(DLQ7#pyGh=q$tl}nymPBoDBT+2D>DZcSRveSZyH8^n=WOOS-{UwukihYr5`|vEf#sCKQroYxkuq z#+w;8&*|xEdJ5}QXBAGt^*WyWQW$STAJv_Di7M|l1jfO$4{pyqr1qDp)qgSYg$pr^Ja8Y@mfZS{)^J3 zPH_ZwUafknt54Tw^-lk(`>f%^5AA{>y(2vrj3mB{;NO|kvhV-*Sq!GsejN3{8usri zx8m5TV5R7d`@7hmsLfw8T2qn}NPLN=nKdOm{Bir-`4nqQ)d`}NZbJ3($0{;CoZ@2? zncT$>ZG6-+8K9J`Z1Xkb0kb*0#=m@;Jnu%;-S+77)Tlbjdl9XP(;lVN)*KJY7BRkX z6D2CT-kLFwDisbXYDIHlx$WtXr=kQY>EgCJ2LH2}&#;UK>`rUjw#gtCH(Y(>VJ%h4 zCsa~x)W(pnH_SofVeJk~#wby&q*v)RtX53fqD7@(D|vRfF|Ku2>{}t75Q9{3$}R9_ zjv`0GTU5}&>ltNu8^tQLdds)SppXC~C|#m`8th}Z&EX;dL?J6Sqi;ONV&UkCQ=Zb#-N_mqab>*Z>Ba(%o>E;3kc?B0|S7RX6rBmiG2 z8c{w@v}k^N=eACNdzaBV<+28Msw{T~Usz4xk;ICU^eg^m@;auQ8A!b~`##mQ($=!p za_=rpdpVOmZ#V7-;rQ9Cx#vJrS9QunW?5-YOv^`O~?d%-8g;B5%_IuX){dd-6wZW?VUU5 zvH>D*tf1bUsIDzaxcYpdJIAHL98#1mfgyn)|$1sK>RREhM_)XF^yd}#qv6mkvA3OOt7c}%S zDIaHQu9Svvct^<#5s?v;kRm1)?jhZ@%%&&tmW-x<3cW8A&gk{g^%|bKUZ?3v;PA&w z7?v@V-QQt>8mxDi`NkK0mvrXnK4A=Y81x!BsVS2Xy4~fF8E~IZUnlSX`(TJIRo{IT z_P;4ZWT?0%h{McDQBKPu4T*gexKFUJ{kgH-1*80&bRu~z1?$0m*3*k-fjhaL{R9-* z?KI~Fe6!bQp&&(kKPBol?(y|3F%#?4f2}l|ru(pwmvgKQ9A`@=*@~@2cuZmj`}w&W zoVKG}L%}ITctQx|(q#|9DXCjvd?D7La1$jo$h|eA0?1+_DI#(6hr96jf9iV89kbWj zaiqGu@Nr}Cwwx2c zy-AgZxDRWS0$J8GBI194oV@wM$X)RY)9Q-8%6 zR+i}r<9NE6SXn&ykvY}*bh((FRF})k5bLuwGIp36tUIs#xHcOV>n%QV?v zB5P^#+9l7wy1Zb|of1--7mU@GYA`=X`GJZS!Y4fwEJLXoY-nrfI<=HCk50&2GB8Kk z3i(i!n71@j+G#qUPZ!m?I%>|Rs}!3M-qd0J>HR_E+4I%e@}gN+C)MA}#WWaC+4?Zj zR)0@4v>Cn^+)B^rcV!t$y=?5aq5lqJ|83v_$u*LIfTu(zkdPatpf)P6k*-f`>996% zDit#EK1x{a@2dCvV30V$G{8|KIxQ^w%iMTxN`n8bRUC^2H{F4?nNVo{bJ!a5>c<(LOO`v{TPFwp*> z$lasWtXWhi*WbPcX4q|N?^ruHw=H6A_Z{Mv7Os3~OS75EvW*zM<|?lZuTiBwN5b&SC)dw? z`IO=3kl5nvhn3$~EfFU*{}cGv5NrUX?7n5~&~TwHT`(erI^(&GWn zo=z`jix~tMzGcCC=eVy7Q}WIw--X@1Kq5*EmK;MZ7E=4rgFzMp5gYt1YLin7`sLH) z{a?>w*vHqd z4)4d;odqU!cp(&{n(znnGdMgYO%dvX-uv&btl}>jbz*SqaM((2bYgheqb#PxiJ(`< z%XI}7b`_RVH~P8E8LZ&g%K12V$wSA72!acGjqp`c2Fr91vt=09i+{U>TQC0oY?yFM z=-MD$)@gNE3LzNLybx?X+(efC$!7QFEg7qX2s@FomSTefO0RYar$6o-?LLmA5eHWi zR~MY%mcDKnSJz*ET=i|X&@7!A4l*4)fO9-z|V zfWblU+GrRM2kbv(6uF}!Gz?u^+H!`S5Rv0t-@loB>2N&n-*oo-C5hv~7Mr4iD@U@L zLh{HNF|xc5aaW8*uTsNbDA^gO1i2GWfYTm-)_8G!)?8dnPbxI>AZjg> zF?MH_?L{|*tKM=WcbZc3V3dT^49Ra}NcA|;){7UD_l~093#VF>Y&h^*TE(U7G2w@Z zaGd@sC&(G@Ww<3jRQGfj>|32_wVzaNl3bJi|8>VRkzkO;n;E6&j3t)S)na{B;XzGT z>*KSF*(T+a4Tn&|p50sM+4BGm$QJLJF#q7`ht5_NlL7VyiQ;f@QNw@d^b_BHa06m@ z4kgWFfX!42F|k7rjr3KT6yh=HZDJ4_n-TrGOZKx>IgtiyT*CHbz*1C}c=jU@)a}HH zPFB-db+p8G_~LvS%TJ5ZSq3MzZFV|9XW3u<&~_#y4+2-KTVJ8TW%QKx;*Jz7?T@&n z{jmY$W+gRRIul<=*(@X_RF{)M2{*HU{ncABhJ9rmlM|9QwFPsFodarS4%jSmon%CH}GpyF&D|&#Ow7SukuA%8- z-@c?8n&^rY)m%BMW2_d2Tjk54>??5OZ)SMrdMGn>7mUK+SeqSLzAtYcUd*^l!DrLi z$@BsO>}j>Wntp2*x9hXpMRhs542wulM3NU=z_v!d7fD|K*@w1lL;3&9R8C14wS!52 znKPh`m11dHHfe`ono3$q8h1c3r8kW|l<%hXQX~!nQZXT<2B*J~+^cPq(gTru#j@3t z=4N(MT~yzj`FUuGF(R)Wd!g?631 zhSTj?r5q`Zdja*aEsiB8c+Qv$>+WW^=sEXY({Z!=0*CglLg`>88{*fNDS!%uz2({d z`~ObfbwYwIo7g?SW=cp9e3n4N52i*a2!ZPX;^JG>vXVa%;yS;NHohgsL^ln z3xKyYq8im|c{E*JVYK}Hu?>3Idv_;&5PJ?@;L!H0B@Za%QGvJ>bnnxntXe= zYXYkudz3fqqpgq;i`X6|3&!2s$Cy2Md=lr@z7I_pKV zU)id*(WJK74i##=pYbHhe>cbH5ME!eFJf^0r>;-CCw{>CbnqHuz)f+{lXtPT!dJvH zL0&D(!TYaN+f-4_yA!x02i>YNYXM7Ya@$G-2me_ur z7$3DlOD4L6S3`(Qg(TENQ|)Sr;U0#;#sikQRoaw9iBE37{OfHeEMMwmf{<-L970i7J~ z&NR?T)s}JPS{{X1-)bX$!rh%UkK7Fm!xsn3%iVf0|HsLMsanwum|;BPQCeLwJbxLV z*d1j7D-4z!xfLqN>HU@mWcMp{s&J# zbgh?K5iqfUIa-AC;9z#vq`IeJ_##Wg5He3NHR?>NYg$W)khPCn+&LKy_Aof8K49zK zdOcfbZ5NJn6ne_!#BPs$+`z>7a)orWXRFyw82)CGWM^__ddHXVcXKGR`->mi-njOG z!t9P=1T`0P80cSrnY{bo2V;Bvr8Bnn;}rZ~8A}cK8Y|iwNm&Wa-Czq@2#3w|n9hPx z#%qJ)xWtuAYc4OV1pB-mDFFE1HJ&$DXRF&qb#=B}Eh3@q{l-c}xbE2vSz3oS^xh%O zHtnu_Xfvbju#017$e@M4-jGOzb)E#O=*6Edboa%d&oZF9riL#%mF`TNt+_UWmc-)+ zd)a$p)m<-&L15U*lGaZ$;VZEM&*1#y5RM2hWkfil_1ScGepX#vum5Q-A;AP+cYVHG zh4z=R(GsTV9`m+QY3@s=;Ro)cN1mkGwvZZVkum|_UIt#?>KrfnX7Z{73%_>wA6})v z!V2P3!>Q&ScOaD($z^RBWyAh1vgTDcqKkqxqe&`9IdwurX5fma|5Ik759q-e7L!h@ ztJU?!M6_VG`EbOggWGWNkz1~!AuF0eQt6hVnVQgW6Y#*dA12SgL<>yq$9qv%?^$39 zchhssmNU)4338S>0PC$7gBKAwfmmM3BJe=GpHbSj=f3ab=F0}RHEXInJn$fn;c+2^ z?p18-zDqy|gXbSQ{x(8{1lc&NDj*fDRZgP&^7*9o%l&zt_TxnKEhJ+1y6z4o6mm$# zjF;#Zp;rqxv;)^Khs=QZVo&a(F?(kk6{x8TC)^|%bPT!WbOo!uxvU z(ENV4S=iveo5l31npfw|O|v+e`If!Yj>{N%cm6#i-^91J>l-JH-FuI*yZw;s8@!s7 zh%o>Y$@nSw`o<;8|LR2RNwRz;Yhh54#rY`^qE?h>NYD#J>%kWGh7r5##rnLQLG(~_ zwgn5SiqU}+r_p*1~?kyNIXZQ<}5@HLq zhVf=bY3A`+0c-=GTwnF-+)qjV=AQr4H-LkukKFLJktCQJKo0+!vB)q`!tB4q&HhW$ z>=9HUtjm>5NjnN8c#&FLxQD@()!@*8vtAT5sV7X-@Dq{-P2xe1(vG9G^P6TqUENlz z+v|&2V9BK%uzPCR4mfRg!E%RAkd+d;=TMnwM?rbWc@eX#&woxnbP4ijr#7-fArt|9PdIbl1 z-fKA(vLWwu@`Kn-h{kZqL)#I2nRqy>N+FeM0R&-5IT@I4%h3d1NGXv&q65db@Y%)k>g=|d6Wz&BBGVVq!9BZ^Z| z?bm*GHavd|d9mtdvvXFA$!#!lmw<%4Y(2;#oc1U!FB-~zTR{X{olKGCa}lF)DU}eq z2e@TLHk}p*i;mn5EwusmsfOQp%#cD*V?wzK+@F&*y6$gd)<`&S6_4+eMpJWc)uX6Z zxf>eRARe00c~~u4g=G^WYAZ-jsj4}tj*u}By-Z)P3U6VQ_8H|dy>1rM>a;p;R?`6Q z6y0pO{z-SdJ!{R>r|P{~x}@qpYZPoNmV^qB@TXcv7>0PfXIU8Jzn;6ZHGerMi1cg? ze2295Tc3p0LJ3k7?9|)N-h$!5lF>G(frG7?mPL3C@s7qXZFPDLUlFi_>u+$`n|q&+ z%y#IW|F)TG5w^qN1rA<&(!$S1scy-@EUi^odPU!J~y4t=d(4K@NzNx=lVP#N!wzV zB}~{o>1|DTyH`z0UwJPu@_5@Q5^$y=n4Z)cLAg1T2D^;ID;$USYRi;@R|0!0BjX(I zVSmLtcfr^I5oB4y)`W|6wFysplreP_d;CMcSp~*iDt2~HtU&8CSZ)mAu`f;|+d{d`!$THDCB#}e+KnGyy8xY! z4&QbXpaUVOR?=vPzX78=VT_gq>?qv9uw=$S8OU2OD%)sb(VAPEIR%G@J}!G|=F{_a zvp8v1)g_$m?ec1QQ{8{K3L7F@Pr7C3I6fRQlW7yp1fsJtV1nKz_NE~87K}DgD6(0B>)#lF z;&J~xcG>#P>8zShmy6JKZVXQIb>G~BD-)cCOCGv98p6g==mgW54Ac7Sx$6Smw#O#w z6=gJvH$AZI;_$Sj8qBK*y{Ef@(5$os1GY@7d=;l|y;#KrWia79wL9;1y@p4w*KyY; z3ICsA{P>fJLco=-PG{BnY`F;W;r)Gh_5>T*jXtG2vV8v*eV1ev#e2fY{hLwTH$cN$ z9s!F#a&gC%2}g-js%jYx79MhBrH z_&>azaas3bcD|f9x7F(Uyt$dJ&+z}=)VfLSw1ic==e(^|=e}f;*3f(O$Wv|3t&e5c zG|HVY@vomJ&wqI^@s`)L7>g@yx z6|CKpZx}CTl*x8%g6$k4^Lcf&JUU^;q5`u@MqV(_K*X3! zB3AoooSUDU_G~`AsZMT}JzkX(e5U#RDfd=(i|O~{GYy_UhG3oZrMb|9TuXI`_B=b%=u{$6!=eNPnVL+cxzR7F|YWe*B9|5c=YmXTt=c5Q7q7 zz>9TtY$Q!EToMn$xSuZ#_mbyKH=?GzC1cDETulf{RqdM`F8`K+2Z z|1_)Vfzo2{gr7Do4j(=8C>aU&{V18K8v8I>!wzyN&UUDKFY< z7;YY?V0V()K6RTv^_ClhKV>Wsm_r^F!D>a35-6*wv>#cEq0HzG_+ccxnI)>E?p3&z zVaoj>o?dss7-Nex6Py{)A!ExSJte%M@rSo(%LQ&GI&faNy_CoO(p|+7TTH=gjKSdH z3mh^{2y`c;rUdpE^1{ST{@pvbkNoakP9Is2~Pak=Z4f&%D8qBOl znlyuK)LFLw$eKi#z+ccNP@i#^H2<7NZbXZ%CZc;v^7^f zewjhO#b!D&g9#V6WwMZsk&2(|4}f*j*h|?E*IkWchfU^ZlzIzYnl!H z^p=d#9!m~kR4v^>!#(lcJcq^q2_by@{NZx(Qv14VW0<{3v5_D4mHl#DH_VZtpmmOx~^IwkDrZ5}Q)?9LHol#^ebuF|I z#Pg-)tTxzJ3EdrU&8YOWnlM@$citk4JsEFhJcG)APto$L=6Vyg!QHu$GlZfa4sKsd z%;iN6o;8MYwbG$p4}pJ?APo#d_-CF~zV$l8Z*w}s0tf$;*3RUjMlDIv4oN(URrYpv zu+E&nVl0)V7Go;SWX~$ss4a|}xtT@HQb+W9Mpvl5!b0_QUY#!Qg#|*34YpapWW7_} z*JS&zl}uH=hmAZe7A9ynQ-Sk&aQ!&O(`z`#Z26@}k?Kw%r+ZHr1RJANN0F*^jo)Cy zJzL%z<-e#e^+0po6S||d!KB!&^_Z_E%?CM z!r;*(_u1BR>DjhyiCk+7|6*QlyiYt$!RuL1GssGmv$goqW8}vEt`7Iz&U&%9nvn^y zHILM)Vg=?FP7U|)^SJ1*)eKC0F|XRTPG%{2Pg8bJ^D#@w-c!clc7@gfnFlh)S+E_d zBH-$@R>y{O`^3a?`A;=H{fioNec1KV*VwFr0QzeOG6EAhSpC=wo+?0()+S=O7E@ zw(fCcCT#i5$EYp8Nl7ON2%@cFt_X=1HD^{zT7&|+w}}EnhyI$;va>=FaY`IBhL?ix z;rU2NYNG>%m(6Ors1~;;(^cR%f4qEw)~k0oL)EB`nYMd@be-5;cI;s-3vkL9a-wX3 zt@9v@d!Q#291a&Q8!gVyYw%v>e5SvR;lAteK+^qkF<6t-6HK@bDFsi)YZ+yf8!I70 zDtlR-tiTodwpt3Cd@rRiGD>**3+@!y-<>*)k%?v{(@2K>UJxtdNq!RLQpua@W}dV>aVSC4GY_gl@?^Mh}1 zwZ58dE_|cjd8=hiyF2urX>Th~?en%t>-OGZ3?(e10`wJDXl(0;7!5nZ@j!e(Z5GC< z;!Xf#L7cwh$dKA-V#-R=2YcDWx?=^bhb5yDWdd_BB6cU8jzr|}yZ0}=q4CzS9@qhz z#cVo9|CNweL%I95;|yu;XYa^zE5@iWk-LG{))WcOTlF@$pr88p;Ob`GR9A3Mz3y{) zf{$S$&F+4V6|e{IFoqOehb+@Ah=Sb(qCBjmCoo_yUb))DFJ3*%&?atMPu%77!S5q{ z-Z7e+=MKbw)ycJ_V2}Gg@vt_zJw0M0T!-46el2ON4dah=x<$B(HuP&ym zt7iSr^!xg9_AG|_`mv=PV;$^yxkuNt*4(khhxbXEqxX=b*Tb3eV{`a+5m}46rw^Vm z!(TqSN#a*jIeM+#^grl-Fi`xHi@Yj z5oE`qVZ4g*3=N-8uV#x`rJA_e?L0G_lO(%mx3>Xi&kcLeI<_5Zs(eiJHjen19lm?+ z(OWt->m($aky=}+xMq&}0=yT6l(2~U!VounpWJS^r@WmUp7M#L6RvB*w(v;fVIRlR za)a2*>0&Y6TvVsPlp+?m-O|q%vrtgXP8$WpYkzfY+!Ee0fj_J8bkOicW7{ zxJ9QoFLH`bNUNz7clm4#sxIh)408TPhB=~#=K`G-qo^!3!I43ioPEEsK)jTnq4)D` zc2-?g-?F9%DG3sYX*6!o^bH&W4lQB<^(R1*Bk*x5RQd~qZFsc`^lHM zI?oBJ(2G;} zs-5a{lS^cidn5{+a9;;YjCl*j1`(LR6xymj|4qVP@h(PL(~TvbU#qj#^m}#QeEqtZ z-tK3)`Sg$OX+E0e1`ioSa4ZASZYD*WS0R(I4$U*+N?*Q;y3+RJMBPUsX@=>_uf`x% z43pCHrF*OWg`3E$^$dWRy+vaX2_aD+hY69+IOW(>xVNz;mq;(&QyEGxbMOw{YR8U5 zMLTcf!-}vV!Ql;Qh-XL&5WS6$$R^7*u)3tm>s}a9TW(BI1)^{-2RAXj1!MMultZEx z`fzG;yqIwZrf195a&vJDx#iV#bK1MM;XQLmXuyM->37_e{L^*W8aM;ZkWKLJKF5(ZYDjPxAGWbS*-(x=2^@}j!B zS^v{qUot^>edVeo37S*~sxrwWGc3UeEio0i+pFKz3Bt13nu0L`IEm>%mghOmm zqtdL*6f^ncW!ImwvTITkrj>97cp0RQnsdb;rIQ=(>)=kVw_q&KmTW?FE#3N8o{|aP z$tb;Ytk=}craOfedCd0UM-QX{lL zW|pddjhCu_O}42}wo(!60Hz=+VO$WdN{~PH_AuP!9Y~}76=N=yNHG3dQJ(Jb;#rTs z(si#bw5s4+@fA5<%C~;qn1-++Q-vK*8GUcjws-s$yl&+Kk12ew#OEvn#OK z)%0o_w2cm{bM0NK?(XD>b*|tw#^7-Ump(Ft>Xxy;WkIB2u$-Vzf8i$NYqQ_q})+Q!m0xsIP z^Z=R2jdog6jKXhSdCJIeD?9h4xMGs|gpuBwv7rN@QDjcJps%gGgww?WykNC%R^U|^ z%Wo;tNW7^>E@j7kHY`PQPt&Dgt%s}qsTG&oS7r{a(ZUJH?icFw@wZ`c<*uS z-vDK)@7t|ynHU(u?|NPx3_^QX8Rc`1Ylp;CXkv_82jh^iQf1|%Ody5(%F_ki?&Q5S zqm3&yk)-ClUkXdf7vX&zr)cd`R@~e4Etpkx(rnK@s?#jQb&qVOpr z&%QMgG*I5QwLt`8E5{Pp=<50^QS;h$>PVp4EfKEpHl@5a29A=HlMU?cW>9QD#@hAKRX(?XkjfR5z*_!7MU!#Q&GK?r_B~Z=YpJgIZz< z^R)*xGuk{FEnK*>JOkfeN%t3xQBy%I$7C%S%MP;fQpQ6{wP+Tnw~#i2;jU)!ss6%Y zws&Zc7G{S}IkqVp9Sk@!oZ*24PK!t!9rv!Ef1P~pz*wJu?F{jA3XG*_ZG@1*;ZCPY z))E!QY`H3SZ!^OLIs-rtf5jLnBWKtcw?-9gV&N@~2#tMqHG`0{x?C>KR?Vgd^EgJQ z$~*Yub*jSG7g+nTd${kB%5rULwn&cR`Rc<&WgKg4J`NL4ew694>x}Q@&D`X8zFf_kn6>A?GV{4Q z+#~H7^Wm_}aQ!j#leJQ+*LT91AH{1Kww)3Y@gB0GoP+5RubphLo2;yOB#PE>U+H)_ zo6^o*F$U`56v@pv?enx=ucn*LZ8dLhmp7XzV=`RJcpJ&Vym58XoX?tgQM$L&5_Kx~ zX!i}7V=tBjhungGV1b6Atmy5baR|-_kmagA-V;mw!#3|Isy*{_2dl{Wt;p&{9I^ z>tH!qt)wnU@)K+%k3n`&vFLuqD5U_IF!01KrNGV@t|L~KV=4vL7qj{7`g&SjgXM-@ z-`zo4dk!7DN4u-79thG39zFK7)(9Q6j0A*-y4H0L!8(M|@BSMNquY;6f3Ch74D{IY#JhM zqbxNdANlMp8qHBTQWaQ!DDoL^XIuo7&3yWQQCW9YoljTm&7sb7|5WwigrC@X29F-O z^JLum87;CM2Z2khwsytzk19_b6>Sdu|EG{K2KKs(JHmdV3kkh)c9|-Qyez zr`OB*%?7@p+r#N_$z#`?q@bpUVnz{IoTCrvrMCe+X17?q6{EZvtfdMzApvD?XwOE-Gmd9s^PAJAx^7livrV&DKI;P;(uS2! zPUD_Vep%@L@oBOQchQjtn1%+5UX-$S6x=|F9HI4`3-Oc9HbfgU1JP2?+tWwvAk;5)oMEH5x;sH zFIB>Ik2v2}!&gbzY_RyTeVk_^pm!J699YH0t2sUx|E_Z~#3c1(C0zG- zpSXk@Jo?y{3vMlFa8g~P9xeKg5Gr2*%HhpF%qa@ZoehXIJ0&5W^Zki?gV!%S7mXc2kVc#awS7%W%$b8Wq?%GJ(|~;X+Hnr zvdlbpD#U4RYgS{Ft(@^#Lux{prRou!a=4>mI}Ji^M!-w?F43JS_TZs{a91gTcw-lE%;9acE?7hhH*>I% znYUoHf+i6*;|&09tKB%5oTw@x+|GE%fI3yeJI2H-xC%(h^UG_&?h6&!9&Vsyk*)u# z=~A2f0>=)_g_0&1@DsIxZvv6E3Eh99NdDGK%irdtZ=>k9s3Ia^n!bFhl#&Q-U zitCaLbm3+Sj0pN`Mt=k#1>`knd^<2YN8o`(CVj`y;*QQjEFjK>xc;(%H(7yPnfNZTN}FvFIDii^IHTPMOf0u9SDD|&Q{a! z)p_&v>tY&2!2Rvzc)1)zmwTG|#ut5`WI@||!m;g8GZs{&1Z!3A6#R@n%f*K5ny_*W zmdK3ePQr@H>%(1YiXB1GjT0DYl8G-f0mzrmSYQ*S>`p8wLBwgaSYKaK)6d2N(p z#H~dMQ(N@AB_+pt+bNNW`iu4ryqyR`Os+d8v=`+R-p}}J&Fk42IN$0V{M>Z4n*QS( z`IGTZxyQb%eILj>6+HUb?pg`vqrSGy+ea<>)#T-Wp2dc5+m92(Q;=#}>@Yv1pBg-% z^@%k04Vs6>?0b_D1GI4iWA?J8)P{R^As@Zy7>@b)i0XSQ{NBv5!FzhMz!dT#R3<1D z`?@DH6#Hfg^m@x3+j6L}0c9$I`?jK{3^S{6dN1J+-+!1q?=>m7Iz+sm@tEA{yt&2VYfDAb)AxBY z$LAjJ6Fa`((PM~dCAgv7Ts3CAA6~nOs>?r~PE>7e!51(=yV7fG5<)6kM7Dl=iW(Kp zJ|IKY5X+!$n;|ys{qUT}ReOaz6CB|8*?Rf)>+a5PIK1o*rGVoLmK%fRQ1}7`^;QVs z7=gd>3;rw@nBdU&yLFxhwZOe)Wju^s8$dJL%`T_tkGk)p82VUmD2av!?a!-ZUpoF|p+Ij*2do#%RTgdXh z+X-Zx1!Emgq7m=J&3586Jn9j#$DB`B7tQLd+FZ=0^FXAo3KGAct_c zm(ZTI1dFyzE0YJV^VW;eQ$XT^YCm?T{$w00t779YqY7+KFQ$v?|Gx=Eta3M8BD8f+ zynL2ABp?|){n(}~d7uwVIci2wlugbl(1K%jx+|_@PIgzAsU;QKT1S$OAf}J8BJ7C4 z4zl#;2Hdf;Vl227WlQ&!T{N@v1^BEj7F#9~?v61(63%31 z3l=}N)iFf_tJA1)$ZEvhn9zeJh=D(Ubc?$#Wn#Lx3t0iR(gpEBh$#u<{gzd8IbB~Mf5Yl(KrZ>QVYJ;z?;6XNfzf);ANioC38ilkBm@7Rg71XR z#Mi#~=pqtcI9_)fbiQqexWZPnE$|3huqhL6W^gKOP|Vd?FII!1W+F{($>G4-k!s(> zaSdmyWp#D~2ES_xo7tMlQ=;n*zkCimP>b>&ee6)08y4_4Xi;N6X=+IH@*?Tye@#Ao z?ut>4v}^luG>Nsfl@37A(3*4W<*x-}Xn#i~V1nM7{RrCN06+Y$OT~K;baQ%ftoHadKHGd~1LTLBE_6?!C*GWXs!9zywZD~6*=?z^oNZOD)#AJz1 zd7k!dmZvqfV1^rqR}Fbe;BR4ViN0yDg<;O|0UztG7oA?!p-t;!pGf_!6MBYe=oUKIVtr-<}WfRDU3F)P~NO#xfR`>rS zq|-<=a`2LVYJ2`cLVmei{c{uLG|fGk5?1eC(0*C+4sV+liFMy$4An2AX($UxYVagA zd_7c%FizCIzI>W|>69T|E%h%cWk^UXt>#R2vOUNo#)Xsx@x|d*hKUV_VfyZp(J3{H zpcBJFXT4X^3omE9)28=z>Xzd3YjZLS8@gr7U~sb#!fzjhdpP`K)WL%1kHWfnAmeU$ zjbe%@@)0U>#l1Y(w&Uep+fJ(uDC9j7w$tQl)j25FR*7Q99qgoM+uTZ{1lKf^wA5WM zTIjM92my#vrQAE-&3KL5_2KZ{SyU&>1tigZ7}nE!a`!Hd<;jD0ICcR{!+ZE%oVJo5 zH3dgyLy_5-oqzn|+PN!nnWis=r8TowbyGs9)M|0YPL$v`>un;7mub8I_Ll71xt;L# zUYT?!gch6W>UuR>_lU^x+{X>#SkKO{ZWd?N-_=D3w|dxB38QomE zt5gO-GZEMYttqoLV`2WB#xuX~=t5oC)cYh|DEv-=-yjYnxaGB?%1BkPW!&FRiO|_! zG}bYOzi@I_%R`$=Au1;W;N9rOCcaFOgf8q{O@aU1(%ZxDr*jd&Z0!A7U z(M*{7>p1!U>lFFF5Vd612ykZ!T81i)wSRTp{1DZ^0$HN$#O#d(?E_C|K_J5i1E?Xp79mx$U|qgO_O8LT>sx zUUzz(syhi*bHb!?I9&vla3hN-s268Jhl8b-OO>id)<7S zZPu5~Z4?H%!x@w?XZJQ9sXCNFe;>Za$m3fu2_DSn-U&NU2)43A>~$*X2{ zTg_1ir};LG{U|({432vZ<(ooTs`B0o9NY18P5exjD%M7njKQ6=kd-Fx`XQbD>s>UR zZ9k4Se08k_@dkG-L<3Brp%=9D-fj+V3DQkp zFFJ~i*PlDXevzWs;0oNI7TV#cv4T>~IWK3`!A`R17PotEcg0w{m&5Hs^hU(N+!}(2 zf8pI6KgWKUTw0z?R~rc1H>Z$h`zE|Es|M_HKUR(Ipm(+4LaZ9z3yh(=q^%5nI{j@VrNvR>!+et7bjBnysq!W_jBzA~MniN@(8MWp|#o^U(!M9y?YxmIri> ztX8^44sI5rr4rTe|GM-3@BaI2c;26rnsBY9GXiXBZ45WoCnZ0SyUO3nAoa~qXV+P- zZ)ReGpmvC*IXyi0#akJ7?hBR;xo`WQeI#Vb?03jS-E)8X%r|)Yv8`EC<1=`$wpgP` z4PW)VR`N?v49~4-Z5w7%5F2X+P3P6O*#x}3vzXtk?77n*8tkG#A+Z|x=p zk3P0NQ%iZMA7lp~b1K@BVWA^t-=u{IssQQPNsRSCiFP!L~l$W8X$mu!St%_N~}$cfnXsxSiyN zY+^u@2#$J`U83Az`>a{art|9LX0`so)V`~T(GdNHca~+kM&XiU0B78BMtLYJNa-}I z?_h$NIWMwmbUj*+RU_4-#SV;xhjT~y#3GM2qqJc6sK1?Itn^UQ>n|D0dL=_LO)ht$ zicUhM@s7sD6%8l8Sg7(K+Br_teYRvNDj-!3&Js+Ztm0+!*Yj zMo|#_c9Rg4l?bKZO|~j9N)GQL@2c`CXf35dWqRQb z`Xe_bCHx3o)w zE^dOtmcN%0v9xz)`}T{w_erx+x(^w-|7AplM3s=!fh(j&)hhJAX_b~Q9S?^)qWC4n z!vU|MBvURZ8Xjl`*hyK=+F&=m;xrM25-XIO z1mCRcd-eBpv#I_LrOrz9nWwAOa+MjKySH@T6MPU6B>{V6_2NP8E5K__sQew;Nc_p=iJbskcQt{E^8gKPRGpo&HuVhsW(oKIZand zYooPw3usg$jk6-0l%Uk|HZW+%L%pbn#iF=OIuWL3nxs8yO-G{p=VLR|pTN5s|T^G+)=-IG1!XJ!S@CS3#sR znS|8qhH}atMQ178R#tkvwFBj?81u-|U=}7^ZoD5U+t+tIHCV(&vpQQx6X;;Ko)N=#_oIsL4tL)?y8l{9|LZ+$>WIO9Gz+sV80;Jpm+1K@ORj$PMEh-E_<0(E|ayfvXv6= zhAtqH2J_~&1Sx!f7lVd96l(h`M&oUPGt$hm1ctNUfhK)y*Ks@0587&%sLC|+&D7gW zi3+xNX8ECW_#WxF*qrko7AEMsTG5SG|SC?_Ojj2IoU2aD{DAaEmZ1(DPB-w zC@Cnh6l`T!3o%DoyjwDc6%i0;No;^0j=|J99Ghd#iN7_A(`j|G0?QuuyN`w0bg!g@ zvuj$-Aw-mhK;-?vMqo5T>xd}n?}NP@TIF_^>sz*IX(q6nbueQW zUdniSRm<)wHvD}44CQf7#lgC;Zns-WV6sHx16 zQG5Az^3Gw#ecM^?yA(67wD=lI$c{&ZN*qE$Y7tXHMy^Mt&)}_n^V^r1c25&^k9k+uSb~{0 ze1T&dGp8ny7{zio8|xz7uS6;g|1|f=#^UmK)_XfHkQ#F@%(iYkQl? zQ-~NcWp~l&JaJ3YL})K_JwP}HFKV1T0rxfz-;34xv|3E(>rgnYpk&NWL&p#IuwMdO zLNX?NjgeQf6bXI%-Iy&C7#oJHUWqK%`89Z%^=km}CWBzvB?)2heK($0FEb|5+s`oj zPY;_3|1$oe|C8XX8mndzi{(s09aQ%9bP4bH@6GM?bOKvhEf>uVeCrm?)pYWMJ*QgT zTsGfk>kIt=40d78bYh+YWy-WNXg(P5AO@^82sR(suiCf(%SqLpbeZ$PM!6Q6?lSl0Wx$ z5&jZr3BLuFX_c)W6|5PH4VXmMa%NpIjWtC^G6rs@%iJkVT=bu=3nWtbs0=rg? z7(8U;aWS{Thg~Vzj>h6&nL>*Dz^>rM$eos&Gpl5f5wqm1Qm~giZPl%|=&l%}2!ND` z=$Z?1ARi`P%P8Br*&MhKC$6jS)6Kiiy*d%%xo(&1B%p3@2uC={d8Hi~Vd zSZ5}|-Y*|r1l2E2R+~mpnVKnXgfs51;djm|!3`MfI5XcfAAyUji_cnI8h_Sz93_r=*!ii=5(c)wr%`!}T zjQ-iHenF1B0%yGm+soyBw0Fpl7j_3vIkt~BkZksSG--+NYaN!k(kSN_zeH2t_TvN@ z7pGY2We>nE0}my}kdnZz-fq%0=N;ynyhRgIiVPV)Y!O@+-qE;QLifaaC)IqqSk4M5 zksqR{_~ZC@b=*ai$b%O+wuy7gebF|^WoxQ6e0L+0N^!i`$1iRnyA?*w=q+)0Gj1H3 zYl!WJHGrig`mi^h7o#7rdoxfz&U%t3j<^^7M3Kfk%fd4{t^DEjh*^Z)MY?rOjX z&;JJxKeq82$^vpNAyCGbQBj)^hmnY?pMRPB(kU)JcZ~O!EsBdoGeu0t?Sb;a6xjgy zqm;eEef5%QYAB_O5S87L@|KJlG3OJc*i$Cb9~FHSyrt-((rf?T&Q+E^_czNkjFXb!`st6!yKX$< zlS6FzE;Sy(4Y(-5C6g}Yw1s?_(GnCLy*(5tartY;bk-n8;tV1M$1HnJ6Ha?PPV?_2 z7LsQ;({r-iTr^j{x#d_^PG879nVxl}z))!e3YHsreTg!nf@-pb=nVg+@J$k7g(;Dz zzWyA|Q`?VI{U3_Nv0W`0=UgpSfj0QwEI7SgWHn{CSCRcSqf>nnuU-?oRV}GK^idX( zVrF=@T!Ho7R#(;4baUFwzhdNfHeHJsJ641sLvSl*SvK)jhkpnr&7$)%EIT0V@X5g{eK4>GX7myl>PRd$D9+$9vqd z16R1mU{)T55+E$lSm7iYZuRvWw>b3rO-6A@klJ!Xh@<;$AuQySGQT*qcjOvw;!uJM zf5BKbN%e&3S{joB^T$&kdkVRlR~OU8?4J;#SQz2oom;;5%tQElE05fXBAh6w(qeK~ zLjc;-L`lupf1G^kpc213P>D}TDs>!MQC#RQfrKwPQ;IRo3f5@7tsKt8>@FCas}~l> zFJ+(wx=;T_5b-a(no;`ETvNWn_RO@pxH-R=uB)#%^RMttDAS`6I6S(~On!Go$LP_7 zFE9oSGLtrtEkiaX1Ol~gCojL<8G;N)0LJHvB4OVH+ceyRAeVt3hdauezw>?yDB+6u zlepfZF%U8*SkSgIa}f8cS*@@OM3kw9oIvRR&ej+$-ss|GuNQiMLI{pS@QYd33;;F+uSQzU?@xhXhU}B(#b* zaew`gCGGx@uI89t@rNR-Vg5Gox`Y9{Cz_wS-#}G@1WM`Y@YKhpyzp(_ zoXxIgtLj^`zP;Imw05E7!NK?$;bcD{p?re?hTGU0S-P8Is| zh(;v~aK3QF7eeeH*ia zm!03@x1$%n$|KDIMSDS**UitWrn+t(>daj$sJEFy(dfgu4H;WUX$KsbPFuJsc!Ok-~q&8M~&|nBHtrb$1ga(J3=?QUDp@rc}WRpF4E5^oX zxt$PF6J18Yz(zn$NAZC7BeQ9Fuo5x_+3LLBLGPM677!{3pFajumelwtf23v5?VJkB z1o^*xKl$+cvlyvs`*8x~Zy_jk$9Sx)Ik)&pxdu|WmtMTej1d+t$e6rtuD4*UWGp!( z-L)mEAfGE<(edngD0yrdD*k=lEayvbybCnZc~py}FsExCBSv>0``LRDUf19?jvX^= zN?6b^LLNej+IO|i91eK-e)75FX>=5lfY=jSf;F+!sx4Yx6@Lom~OrIySWTU>JLFx<=Cxzj6J(8kE{wFH}ayc z?hOp!pVw3&NlQ+~`}U(7dB1h=9?8fXzV6Cu_`eSCK}@aTJ7-N1*j2cPVNX4f@cJu8 z88HNgAs)rlT}anA%#5LdG1qlh%aiG9Q=LHojxI01Eh_ipl{>!`GfTn`*?Dc478Y8a7@I+tO!)T)&vDTsCS_R_045kV-iLdo0- z0cX9agpk6TqIE?Eb{E!@g#W7#XZo33<80n6DmdYgCuR>7J~)g$WriNEV%Hq?Kn1?= z*<13-VLoAUK`DoC*?0b8C;zt8@@tiFMTo=q1O#IWbv>PiJ7SnuR^ zbg}Mxq*d$P)sI~VveJZ^q^vbWl%@`WfoWn?2cYmG2cRHG&9sHg(GlwaS4D*()EkT~ zR|N8QH7x5jm{>k67tJa;*14$cb3?4BSIq)?bkx<^0`kP-}x|TOiN|~fH&+}Io(msxY=cyx zLp8icTsK1rwLE+L{llbX;r+q&;LLKiA4lzxB5=tVhsw+#KbR5J_ov0|G1yiX@59!V z(Oob~=qV4}gq~_tUi1h0{e0D&q;wx2fw=SG==Qh5Y~oJ$S;sa;&RNinw2&-8 z@QKR4jAhc7z4+)-FT8NDI7#XSSYE)F-+Izg@JOu;QS?#h%X&M@(w5pzvg@zew@Qv< z5AcVE_9@J^TP5DiajY`d$GCTl*QiI4^o*qq(>=Y%Hq78z$2LqwNx*r)X{{`(j8dH` z%D7J#5gwwz0324qHV8C|KawhPu&rMHDG6sdip{h2WV|I~CMhVU*Idxu(XDtb;|^he z^gK+|L?4Ag&^^$7t#k*RYw);{V|};^q|F(F7>;5k6278g{uwVHeR=M>*DudA+$(1_ zmsAngj^Sm|y;_eP`_S@Hu$f_s?7{MpyJ9Tulp6JOm@C$J@Nf#=(kKx?@d)|0I$6!m z&ZmKNx(>8a!OL*$$PWbR+ zXUSB`kbK|P8vCR&GDenw(|`QKh0}j@Fc4`ty{)Y_)}8#;61CFXVeoQr`fxXC5{K+6 zvcG1mj?C1A5=bBPA)xw}!U1k)JcZ@cd2@3%troM>B@zN>D7+0o<@c^OcL!X;es_S% zhtEE?`Px7=nStNLSWuu6aERVb6rSIAL!fTq`F&~#6g`|`hH=tO!jResuxCz+Oo4`* zI2^3&tr&$=w4;R{>(R;08Xme{r&*8enAFd=TW5bWB~n-S+=jyBZqhUQE@>=;`-G8) z%8Ya0n@XG-6Sag5sLWQ-tJiL@>_VN=Nvi;dL_865ORx?f5+W5VI*0q}Stz&CD8V(& zWK{4Lj1ejbf?`@=@w)=*@lJl4FnPNY^8T>|gIPOqRjd#&XAh5+jK$BVN;c{}L@BZ_U03m8~Fxs)bZ(*+o3* zarb`C?ywUV%lXxv)$OdrIOHA${YcD7b(;b(u|*FP|n~;!28NQc8-D5n6?GlbSgmO-ieE zA&(YrBCm`ypzq);@y%RkBQO26t*ax`S<@~mS4bHAlFQ$vjC?d7k&5@>D( zDcym*31ap6!F^J^oAI0U`SfbGn1v?&gnCNukw1A?G*r_++kTuNVX)F#A%y7g{JbW#l$u1ihb(5ltwkYk#h4LG0pVAzMG|S)10TV` zkGn#2IbAHKn~Ro3^J=;Zp$z4rNbV^XkB`IE$KXqa=(RK@#(nLONL~W_KhL8HZ2R#s z%16CDRY%#)e68vz%wQW(;otf5~yqXaSI9!6+ZLl-Hs4kcPOnZW!k2%@qo@38w zA49>xd)yeJSq9hXv#0Qyqlz1*P8rec+xIS=pIa45)A_-V6k3Gaj^Xe)E|9#zG0`%t zDgJ))Iy0VenmdLWhd9MqGCF>W6O1+2PO*2Jvb!_xbuaAhnydh8#anuU`1i+7_f9_7 zr_0Tzx}47Ex4sSUxP8yG1v-+whE^Z0p=a9L%zF2CP0z8qZ*Xjnte6RK55&|4zQp*q z&aw56UncMV`(W!W6U)7${%^YV3aPs>t`?%H2~%w$sYL5F+{7@LXo!;DTQLU4CA$3) z*CdCy6OVn|C8NKW>*`{GxbX6cA@`PU?b;uW27_;c#Q~R*Y4N;9gsQn~OBUb04?8 zT{qvR^Xl7du{>WjXFaCe(&!`i2zRi!JoHhp__2+S$)GxmlWY{{pm63f&&4^|KG(%1 zv3-ivQcG!-LjZp={%+9=7AxEKb~4PRI}G#l7maE)z%Q(*txNm27j_75=BGyg&6g`| zuw1NW-@^H^V%VY#@xX`c*tN`iAg(BQ^vHh)sA0?xfR%w557iJ5&>He;r+PTMmzR*K zPZBMueE=#LQ45W6DKo`>40^j6W=0w;`}%7}wFu3G85AWyw1?A@)sdCd-iSK zoXxIgs~G+Eo~@p}BkJxNj?wA~o`3A18~-ru^*~lfAf+P&BFqpJk%SjIy&l)n)4d)6 z<{}953&~OurAk_Qe>Zv3XxsgMuxeDaf?;YUjM^l8Vyr_~kw zGEA%MX1!i67RzeAS#E-1oZJnUuxt0kceU#s-ZL$W;XZu~%^^jF4NAtkMY&rM;nq)2 z0yru4hpd5dUK^`hUBeD*2+=&4dO6f^Z!g1EJv24vtr!dCsh%)e8>$Z;0}w|fL5t%8m5%t*bg^GmY^@}?;_ps&20yHD+X4rJ`=cf4gpyWzZKbYcser0GuF5}&DWm` zChkmls|OCwGQWqG#yom!_DmChk~!7`AP4W0^Iu;_^-bYI#)~w509tIO z*B8@8wOoG(+k6(oOa0j2!EteLj6JK&W$Ax-ow#v^4;h1Tf`#~FHdM1(!#{}46B{zG zB*+K%$ZLhDH4!)p+jW#k>wz?v1yRW1Zh96;G}nR}CbAX3{WW72$uwMaEhSI1mi+(k zF8qpd58~yFBLx28-u`_%tJcfvb{fvyWNk0UP6q?v;DC1xfOB6oX~Ev3M;-tp+Axq6 z2NRRLR*1P3Sv4z&fM0agX*U9Xk*ZEJQyZmOK;SJk<;3TrIIw0FZYH#CEg`+NC>M}l zvGM>vLBPJ&?A!KTpR$dT4=-5Z_54I3GK%Lct8ef}%hl{i6|CS2p16Y5fBLcO(pp%* z0R`8rkceK@J-B1szTdxbefRq}8NM6rTQbHZr4JddwY7mLm5YMKt6(d6dga^A+g-A6 z+;_atq!uo!`CwTNyrOY~wXT}gZ3W-g9%1QYNO9yic=saqYd#$=$I*X{kvn^1i0|wL z!uO@BX%2rP7P{huZ|Oloh(xt!)FB~;kXRGLsn2||Hz>^Az;NI`P~_@Xi@9||CwB_# zIe2G0>QOrGSk)TcHcEC>u-s)6sO{u{pLcQ1-7)5uwg!RE{gp>{5{6fk&hcOw*VejHDe!D3?@+y9sSmFe@x%0CoqtJ9o)` z0oqQeok&|VB@ZR^$IJO?jQ5_5czuDzuvJh7dm_I7;QUJj-PwHq{b!Hd_660x?K2MF zJh_^FFGWv^;-0d=A0~i+$8_2dr z17ETb>yhX(zkV}mrL%rmpi>NMKTeEBY0QGVnGCSL8a|Nvk;JBZ8ygWOWZgw#{y;#EM)pdiu=`z}azTbV0Jr6ll_mubTK|Al0 zuGEcga{0TQKrd&NdjmB)1&uO=WyZN$8E3c4O;8f&H8-Re2W4tyWN$^P`hKy zkB=j7lFUH8^~ZqcqJkiKa7csBWG!q2&=s@4=N~73b>ywj9Zt!=Qsk{1eyg}ZiU8%z zBT~h<5JmU_dYd>n=Ji*Mp}2^`^oQ$g>5=yA#}BN$LvmE7tJ(GS^kDAfJiu0Wmb=>F zAmlk*{pjwG$iM(4Yrkbw)hdS*=gmiV=HQLX>6)B5fZrfO15O-KOI}LPF5JWLAn=g- zfV*H6)hyw!TBvXexSwXqzRiuw>)qSi%?dVf6|uJxuFgHM9ZhVTWqFH^!M_Q{g4QYn zMDPW-L>Mq$gIr)Qv zMH;oMzAIkJ@%&zN_!cgGbv~^Y(|Io~d?X3i;0X6E;N(fT_8&I#`mACyU_0lew(1T= z-)oB|iabtF)GhKPd!q1V2OBXEm32b~5*&`OjCy8U#$>}C4Q7c!hzdtUd=^%J$(Wnu z2L8305SGWo3g4sU=Hj-RSC`A{RTJZ4y(4s#!{q0WTD!eJi$nFfDD#bfkHaY!1$UR# z`*qlttu_75NuTb$#mIj)xDr7yjdHDszvkdMGG_I{0w_g>2tD>wP1G?v;|WzurTRod`p48jxezJ5Pq+N1KU++NT(7TiYe7Bge9k zY$_q7EJuwM?qzWJXuw+i1!E;)_=~lYz9m3Vcsa*On`6U8m+%#-R;|8Cd%@}McXwY)jQou0y(Uv)cvwyyyyywvW2v#0>OiY{RGjC|eEz*-sNgl{w+N5xb$8e}nPp@C z^zWN_%Q<&Dg+B`7+ulYCRKC139kR_%vM>5B$teKu3CH$|Mh48UwEg`@Kr3WinR3%F zU%7zamyY&V8t@C>X~XgD9Cj%N-ycCs;+Fcm$zo(5C_wv*Mwv6jgs2*_+?@w-6VtbN zPviEZZKZlvov)^+7njRz?bxBcmn&3t*RWpzyu%x(i8kDKIJUWqw(8;z*HQ%FA;Bq= znHpj*<9TedddH8@_%XE^&b6-CZ;0b|u4c4I|A!OBWA&+%|i5#}{{X zdIkUEd>(@`mGP?Gk(FxdhKnBCvJ4M2gb>?GMaxAfLlxXKMNOQf@kI(Sp=iye5ys_) zld=|qa7hZ%DhGSXlg%8UsBzbfA}0(=k}+3JC^mwbL0y4&GXg^8JMHOh+~}G6E9W4) zGv3uf=D%thl;J*n44@3ZvkOrkwJp^G&(w;483*sbOo8_y2<8%OmGTGfWNmB92~~a& zysvu2i6Y*dUonnEjMY|FdqRoq0ccyie$Uq^L<5!KSEj$l=Ns)Qf z-Y$B^X_({+d=D|1l;-}D(X^C<&DX|6)iA5XNa{$Z%wzQ;_=YaPySC)!mp!$Jw_-n~ggEG~;myT?vu=1b<9Ddjv+oFAIG>$7-mKeDPU@cd zuCec7b8g|IkDa*+u0r)&_%0X*Us+@i&GE1wzf4|t9@drOe4X;JO2PV8Dpy_rJ|o6T zS;oWmb}{T>hdGn|MPn1@k|Ubcq`4P+Wga5A6{FSI_P11!o!~@C2Z~oT?walS4SYMQlljfpWyqtp!@diZbsx@tzy3<@ ztENl9?hA||Hdcbru!_WpsZlmIY^KJH`?W`7{5prmSfD(#1wZDrQVFfKG67rS0aYY- z3kN5v?s_qcCIkm@mD@aRV#q(z7v>pVsJpsZZ*Hsg>BaZy?DP_hq8IL#vBd7o^1W!Y z1-%z8IR@L(Dwvs5q!tR}usW-E`SSgw^_KnqO8artworjcNGd$Wm#re$oYJEMZlN^jAz zms};~y^K&Jfp{(QXH|CQ;m+j%EH|9$Z!1sbYCHe0vto?X2oisZd`Gl5sdBxVZopH_ zo7?5hCY)J8BrRUbC=0PeuJEqy`E}JSF6XmFb$Zb(&a1Oo^N(-9sdMmbdQZr$d+tqVw8heXoEUErOiNA-cf(d9l+?5! z0x;Z6UKMBn0q89nE9eR&v#Plr(1XqZFW~iz((Yr`qs_(gs##YT)5RjBWGRSk7_RMh z$G>Z0dMK_TeE898PKpO(FA~4B;HKcecxK7z^Z!m>y?!w7&;Q$*cl&W-@nB&^4Aaz>_#jZoh4wKN`c=6FK6Tfiimy%^-2wSNF zci4jAyE3tn*zTm|tTxIbk`c}FTC9$;LsZfdL-NryZO(Ay6vEc? z{peSwk3-$t5HSK8K$;258(DG4iE33LDRwOcs; z^L0ky81WQbqoDf(p27<7(UJ*j3wDKi+sQ-e56DS-izZ54R6-7B4^*$k`x#{bo*<0E zpMpv?yL$0r3On7om-pfWX74?E3?*x-!rYp*P#~PJ1|N`T+8=&(YiVx7H_aUZKYqk| zb!&qX2+}COmUgIV2fG=jGaW9Wd27asXz=5X5_p6jDxrn9GZMbH`zrU}%k}j7qPnV@ z)8-_w;U|;H^3J$K0=|y zd5-P77x1(hdidyL$M#k-KRdT~gi931lEb=NqBXV$&;?efmRdw-J|yQ9qGipAuQGC& zX@{H1V!jy?`{`DU!dp0G{IxJ4Gsb>cY`mUv2KIN5mg|eze0E)3BBbTI=h2@QjO`u% ze)0TaVC?V(j&9qW+o12wA(XBK4)BC+??l$VE7J`pIOE5(!_y8<#2P|q8MJ7)he5K| zVa;lH#h8LEkrOH4&t;~9EuQ;``r6=qoB7$Y0*h&Gm(^7T2mQ|$=bJXgeEm!J(0ZnL zxSXxG_!x@Zywz%VOJoG%KZYa`jO0*feE4o8>v!%WS(-EMac$x#gQ% zzB*p8{unGyYwee!bgMvKBMO3woH?TxZ``o;g)?WA#%E(f2g#r_M5rmGNQ{{>WNy7p z^pa7ELI#Qul^wGBYsQR@@CoL2R&Sj)!V@3=w9(%UipZYaoL)|EpM@}x5>cjmT=}-P zZO|xOat!9hwGHNU1$LEd4*!{}&GnzjTc_glAIH8@6(4v8f#}UBhn*NTIl1MJq|N2; zY7jd)+`4rZ?3o%PsKN#=klFt9LrSLuE@EWf?Q#k3ZB~76F5x(R8+#PV4e!``CRa#u zBYeonOR~l)Urh%Yd8tt?H3MZ~Q8ro2ZNDYyoB+^Up z%GqddXTxkX!-1&3XjG)5t(?7cak&YPRF*|fT7X6K7(LPTf# zOw!(>&fOXBYu7u>Bn6KfgPRSUETi!I)B29u=E!kC*7*FFXx7+%oIpGhNxASw<#{bB zQI?d*8pAzg$z5*ssosixOEoRS39q$raLw>W=a4&v6NJa~rP;z(OH{MEot`gOA%EMC zU3s>*=RBZ$YC~ac$J*AtK*Gj?Wsh9~RVI*7SEh#e5=YkRys^HQ9&+hr7IMkfLQ?RM z9dgM)NJz9)CHt1aRzf>7(pbxdwAr{NcfnYiNHvlHn4XUF-moRSo$*W%TsPmQ^XgVjgX}rv8Y492XOoDvG z4v?5y%_LRj5JG4ElH_mP}zFKCnrZf=l$*=#OWw~Oim zer~q+XP!c(vb&u9T>YUcmEQA5{^NitSHRW5kconVQ~&8TyIdE?3g zxk8soSs=k+Y0iu*I}7m-rQ9f6f)X;=LeGgy!WlObLiXHf-CZ%Es3&bL-0}UbI3zsv zae@b3oJ0dj_utj}YPPv}wht(2C!vCe6U^`2W`dG}#gA=qng^00@XIeSHtf^a#SHHE z*KV5pyE96kOp_G>?;<33kbjVK!sCc7p(`6~pl5E15=EKjD!&EftQa#lK~S}j8Mz%5 z!H2a$j%s7`*-iDmM`=?C4B?(qeieBu7$R756kVDCBTsovAvQrBs1OSgGp4s6J!UwE zh9=1jhuW}0W24nAA!7wd+aiREe9e6UB12m$tQhke_>m`L^c2MA~_|OCQ^LQKf8vrnPO}g5c2{_x1TN zH(vbwS5CYL&Oj2a9QTECSC$a%=Xd*~Y5hH90oS)%oV#L-ff2iLqLzZ^>Tuw}kK3EA zPnVlbbvcEEZCi(?fN%58FF#z&)a3|QAA_62e91FAV-d@S`ACnaB{2%Nht3>_H_=8& zXA}$rGfj;yDQOk#r9gAVT`@|&WN^;UxGWEQ(In!vjMo?54|fju!eSJPdF*T5+3#9V zJ&;B*c=X6?sf=3R;u+4ADELwnM}r=tK-bQiK;XQc#) z!h45f$JWO3KC!AWaPc&AD)iHzZf)q(pBc3wE>VBX5NbPCRZQ`f6;u|P3Jo_AnmTwq z2$H4HjO;|H+ASKJ3}p(ZqAV3LG1)#Sm>-ERHE))CKAl$R=9;UM=4KwK^mN-QVVCa7 z?NEtz-yu00>a9G6u-Zx)G%W8lisA3Rk4-cz_i(cCtwpgr?Xsr`R7KYEv4Hx)zOpjh z0hIxF$r#-N=M$=G?TY#2g7ooT#v4~Z%(E>o7S+7^I$O-cfwsql=DR1mZ<}%_xe)Jh zV=!BPx)kN4T1rkGzZOw^DU0d50krHXSYQO6DJpYKHqeiMC{mO6?htI+IOGb%B^@Jj$c@m-Di%H?^ z$Lj;{;?jGNz)5o%;&XN{`oa~>76YW94~JOZ{DRewoeXLjAnK_i$jnir>KqRd_34`L z?;X(AjZJ?~GW$V3NEmgAxs4W9_`S^oiG9PZ42GjaLd@QRv0xMuea3tp=51mQN!BmC zmN93FcND%TwQ~SZA09A!kk}x zoVgm5y%nIf89F#mHn0j| z@e1CyI-g!OI{?@B92j@cYu}2{AaFf=${4&Vry`JoHmYV4-CHd}mWBlT^_v$i`}La_ z&xYBrvH3t5F^(3r;oxVLDLO?SZl(kh&|NY%i$*kt3_={NUV~RNE`NH5PdaT@*KN1L zx5}qeuW`?KS66zddQI@`V|!6bxeYp=+#=yCw(+UX)Rueom)n4OTaYH;Vm>Q*Qd4 z8pRg0CX`F2I~HDujFrN{&VmJGe>`+;ldK(;3(kSCurCQI(XzhYObN4Es>hO zI-6cjtM$CO-7KRD5_>@g_iMj;7qMRv>R`xV_zq(*a;bPY1GkNDG$rHu*)2wW_?%IU z5)g+f@W$3{)DqNHWAIAl(%@l|(Ow)q#J4a+F{-c`2tQ_)k^{qNyq)n|``-;5PIb}D z*VFm@IKj1d=1&`3hmRilXn^TyzL6FQt9i{ct^MN{H)sC%B_n5U`40r44rtNfC@iPU z2Q3~b`R4CskXdCIsOYX3EqM`?vm*h;ezO1Q)LY_u>?5ULiY3)sam70vLfZWEXK3Av zDA_OWziPTT=DxtOGi*ytK=ZF;t#SOW&l8d6S#uO!U7oe1qASN~2*bFm{-$vF*h*4T z+S%XB;Ss#MV2n&rTBMMZawqM#6vrA~&A8L-v*p!n0e^PBT+JSpL~ST$cTc{2<9Luj zEqwmSJ-h0)m9=bXLXqnbV(q-L+CD_8aGnsx8|p|0$Qlulf<01Sxwo?d3LpNO(aB$p zH1m+4bAO$6vztkIJw8tGphYWt%4;-?i8t{fm1||Z^>%7NcitOt$^nr zC$BrLfafmJQ%WlUt9&?wz&e^jBWi_`#3gIl{oNFBg#MZ_Mp2>4E>%s?JK{n#FraT|D4ZCZ&$N3wMv*>m`oaRm<5 z^QcSlS_ ztU{WKtu8gc)Z`vZA(t8~IflLv1c-kBmkCIV2>i`tBr;9R9DMmS`S71-u>rpJ<3w;O zs6i>Khh!3d!{LdFl|)zdc9T^_+Ae41uNg}qkuk*7=HNjhyq$63BTrWFMXA15e@{1? z>hExxw%F{@a1z-aamhOH@Q^|H=wmxV%lx<(s~ZAIJauHoAQALBIvZ}#o7CA*vgVv( zGquy8Q%C^CX&E=z+eB!!;DwDQmU?V3+f|gkCHqFJQ7ehtnh2-*dsj>BGf%J)U>>{S z+LTiHkGC&jZ|>;~Im3>-w0nVsEd|St!68yAWk6mE|DxtKW=dgLnP{m%WZ8C0`;le) zaYB}r6Yj}6B8wt10tX1n<&pkg4wj^FmWy#mFx%>q&>nZhUZOR4Gvh}|d|ge?rm&;S z>Y}+hy*y%H#k+tb^i{&=AKO(57Wm4$2oAoyT+}k0mQR2pe);J3OMc@sMvuAowlM3ISubbrp zHZq^jnyYnw{F{x2*lp<6y@HaFa5f?$c!6UZIYfpwoH@`)x?*d_a_ABF;X{Q-FvgS% zXojGMN+Qaz{fB!PE(#4Jp1d_N2aA-@)B+vgYqXRhSjyE*^Ncj#=e06#@ z`vz%kEKuHSaA42*c=sCi3zkc84SVl!Y+riEAmOFL2EW6t%(%{RrmtR4-aUV?^H+`z zRr_%&6Gn@6i%Wz-j%lTjGTOVx5^f?-`fY&d)LS$vN2MpN+<-GH&@1=Cd5_zZ{&UgH zs(&tK=e_B?Qt_;NP}xp&oBQ;Z8-x24B5Yj>jSA(6MyqXTRf&!Z7}kroQNwCKjyh0L zGf6ae9H=D_w%-vyl}kgz-4rn|Z_!u}lduVeaDa&eTP}Dz$8(*F+tx08nwVxauf8|) ze~!~@@y_;XdoAIkM`6931Kcv}ZM9mFTTDg)M z1XVMwDu;gvw~{BTv0dfZT{1??ChUZ=8h)#G&Stk*Hr&ziTdog-Gp!BJr*Oqr&0cwH zS!;IB{E<@E9J>x)V+`J!hcH1a+Zj*PrO0gffV2Mdb<|n6A1CE^j@1zh$Fb~pzC4?LpZ$GVeQOrg*>q8Xkq&5~?^ytLPiUy}l&OUt zEP3om7diR^CPiK&JRBMEbFhN@B(9{^l6a7L%fOUO=nMCjjtlmXg?iWy@O4*=SrU~H zSk%g$6OWCc!D)}PntPXtLR7oDtuDZyY&WMp@$>F6<#$5|%*k8w*yaTJn_mh-Y$>=- z0Y8N{WKWBk(-$vo{F0S6(wZx6l*1~FdKSVks<GliyhHaKjN5UZU5PYdTEEt4gz&42$qT+deL<*pb*xpO)pq_#YS9!e#=Mt5dQQVE5785B+&@M_+Av8D#fMq9+q7A%6|4UKYy+O^nw zplk<&UvF+!@U-ubRw&KI=ef6X#4>5{8prmjOi{nSf|Qri)K(%~Ah7!_WJ0gvdEu+H z;S0pSyJD%N=9a?ycr#?h$b`au<>3;xI$LkasJG=4_;c;T0;vNo$a;l!9O38e&1O~HSfg8YBI?c{-Rw~w^=i^kx%_zMkxxErf)3`)d* za>|plW--Iz(k7fN%{q>pB2o?_(7ljd-FEJaCh@r5qsRVxpn`go;^3a(Z)PL%kqJNk zA>Ql!f7E^3b{jXg?XT?N=Tp_VU-)LnZpZD|@$n@)?YELdON=N|gOubWfBjjjWT^lY zzye7~Ecb5j&QKCm0nn;-n`_Pw8+x5o3g(Kdu4d#gtJE5>S44E}3t z$&%4~&(u{$QR)z;p6GP8wEgSp=|=QInd($`mRly)S#r$Y>La&L4&Ex@EW%n1)!4cV zaleTSdj~a0UUR9vMyAvhr^*YCo(3D)d#>DFFG@_tCoFK$yAqS(t&Gxi^SU@c2T`lb z2CO9mP`E2Y*^ug$dnem^=_2f8?$ZyQQ!5dwZAjh9Il=!>lUb>L{%5pO-TpWlmABR+ z4C|&)wXChS3aMI(49*0b7*u2*<{r_q+-2uL?kT4^(FG&SD#$oqgO7WZc@^f z6*|U*<-YrS@};BcZB;7n zy=IE07mGfEU9`$MIBwwb)G6rdXH){7RZ3=+{}Yzv3|M-%*lL0F)I09odcV1^nzU%|1x8+~!a4CCy>?3$4<^}DhE32QetGT|tK7~~ z8g~!IO?k_m-x<891rtn*a+5Q?-3;PEGDg(BHDmHpoJ^#JgD=8{h&MFKvQ-QWasiL2 znv))1+EdF+bvID{8;~P2^=eQ zj}ty$OHQamre;meEo9irn{+RzG8JqrugyI4IdB(^HJK#*SJztgRi-YQ*&>Dt!7CZP z%?F^7_1SU}7Q2FNmhkWHarSIG6D8ujPqN?SJ!KT>G+}|KrmeyuBMh-g8Kvg0?N8Yjc9x5pSIZMCt=e~Z9PebD-JS<(!*;fA4yU;| z4J8$yY>wPJ@)AASE#}C>XOBGCWhx;3M|?Iq3jBrcjmD;F|KG$>(8&T9ay>HeqYhI9 z(*9GeSjq8+-fprww*&ma-kQ-d*_I7NT3RCC#Ty!B?3?>ZxNMg5Wz|#*wCedR;*y_C z7r?!m10=%X^GE(|fXp)x1fj4^{Powh$s>IGd}&TjA5k zkW^D0D1{i>)^-_3rJEf5*830cr1AR?&oWd55XY)GmEBAQWC09vY{Cnq)V(bX5@ig8 z`~HG4Tc<7giEuky5$qNo_IR`D2U~@&z_MChFOHW{-Mcb&*qvB@KD`OO6)rh;S8H{^ zsDU%K7IBR=6^}-)Dma3;jBvClDTOz)5Ob1pxUSx2hU?4&Cg`sijlm64$67W(*p>s7 z#>@F7-R(mc3a@Wb{ZoCLUR_-@K~Z{tu=G{|_`|)FNX)kaONUQCbcM}FmY_!w@V&x5 zYKEVE;|YnlwY5!@0|vz-9Yzn-=76YLDq2FVC)h$(Z+Rn@#9c7fN#YboGOe;16grad z{}~ZbeD9h~l;bTvh9H(P6Lf~K7bzhzLz#-4 zAok7Y$(OD(^yaf;T&d1bE3r!8$(_gmBDRzw3Vv9kGZb!O7#uy6vU)2W z7Ft?7Y<>G`@>}P~-a3LFza|P5<4?9f&d@$s38qBR=i741i&*BV|COmD#+uV&NLYWic7MQ+QElW>qZY#Z*u?^YTv z!I2Zb#-Xj7Gi0gph*L@3ril1u&I?mt{3jZwwm(i_ER2N^-6h#zq!v<3Q-pgi+{5r( z{cuyrTQk-J7I3YQtg=-3w+DHGlOK1h_xNlzTVE|N&!(&DxLJc;-{uCgJGXVaQ!F0H z28$os@`SLV@r6E$fNg_d|bE|ksUb=8M zS?t9_Ht4PyMINdNYH3lEH#amS+6-4TZWCRDZGK-aPpb9hY8DFD71nId04hG5{0*5wmNdk>Yi@Z#tM%MIaSs3HrJi%rUc9AUjLZZ&8woY@^*qSLzP{a8#Fvk9_ zdWByqG&p)C49Vts?G}vjPf9Z(kRA}$C!V{!jA4uM9u8j?y5qFCX%@%R>S)z00-SBvm54l}Fy=L~di>@)TSw7DKRh+8d^gS>E%{ zlXvePEbqBfmu-KX@OXq6Zk@q81s;!EjWh8jEU&kVyfV>d$iBa5zfNQ)j3Hqsr!t$W z4bK0UY-2t|v(0>dTdig%(|xPBLwE%DbceP0Wji#evs`!Sffh#!*BzGy~qK;fwx}Y90lt23SO(YFRbD<9ys;!s9F zJ&R?Gcp<;EBRyHJmRD!D)kSqNy*h5@->^q9uX;l}@gpe_7rQsGYX;hXtt1PD z_pp(hJXZnoUg_H2Wnw*c^F)TaH58B_?2o&0KN><5xLd}(p6bqY#{L$v>b)CdWOu>7 zeZx1NPpGPeRzuk-sz2h1kJ6@N(vZhz%?f_|tCQ+`Gd~Y4Hj%w1#32Vs+}wjKo4y7s zAG#n*HPOBvIz@yxN?jPt!a^yanBjf=GWmDMt@!avXL$ckaVz3SNolT}k#cafOcE@N z76A_Rc9AETycx&fFB)T3q%C8B@7J4bD~m_py^0zA!_6>5jpgsGZolhUdw%ijdWLv?K zBTwgSOP}e}c1xtlLfQH}g~>0UJW4?a$+Ib=qr?azaj5ENMrUg&s9-*y*xsbw-d?io zZ!?g`TQb^sY&8#zi2L|liTantU7H@!BH;$b-7yN*T2Vt23PgS zMWXwS?jBZO!*5D;G{61^*Y4Zzw%ae^kKKFdS@tHY-r;4FA-neqhqiY~nBQWtC>8?# zMb2n_hEGT~voBu5 z2!_+{;I~(+=J>WcZssT7r}KGra=TvcO5nQ*9 zlRggK%LqK|ePH};)hy1dlPS(^Euui)J*9E-afa?m?^dMRPZ}qDfrDExQGQ6w2(JY= z9ONtrseltU{OJ!j3;y&+Mi$IX&4n_?r2^*gBPm!py3cSc1qRW)C1U_X!EyFU3bVHz zBSHyp=kRlC_hx)PZ?4zX$*g_-v+CQtiKFtjH|7LRX&6n|9rq!OIedYUx1M=j`5n+K$h~y_W-Zpu%?;`6q#g6*0v3 z8Hoidq@&6DDD22eNUavcX;ahM5&~a^l4MTdX7Z#i2ehudMPndj(UQuNQf^#EI$+b{GT@UCFn??C>mCK1lw!w((c+n!_=ft$w=7N<>f z@L%s=O@8~cE4jI3ZGWbnK9TSRbez875C>Rkco}?ixQRSIr_E?eZ_OA4MM{(xH$-g& zf!UZ~){_VA_Z72~>t->nP7z8u4Y-;%LcO-ZeRSv2v$ox!Ucr)MfN=zMF4dM~nUuB4 zA3)m9J@uzH>fqTU&u5uYL62D~jKsl@;-8#w_l;NM zdXrP*5*+n>m^7WWYg1bxx$#}~?!!ajF7`F_V8!SxErV5SV?;I)IP8Cv*=qh=#Kmke zt0>)6%qn5f?&0Q#%(-mg!Rll1!&U{%rV!dvgcK2Y&3rzK_iv(x+5R{YK$DjCsiR;s zq$Y+k?dPGz&{yHUh6(!zdrsbxG4^oAu%JdY>C+#cR7dmW@j1q+5l#yg;W9n!*k3cB z{=WuJdR5&l=jY3tXE7v}zpD~mVfPGs_LxhI7`|1K?c00S7_1Y#ls|C`nHxATiZkgX z1V$#Bz;8afs*i7+^fsyb$Y?FK71|Awr9oW^W@x!#rEoJ@EEJn1YTOlL2`-_Ca#t#o zb2y3Pz>67wjC?n%d)cg-AGeG3c`&+=web>8)jjrYqvYI|OlH2`qYqy5H3797g$)=9 z5h=t>VYw<{&tKn7-gHUt*LRLRC(Bi~CJ^1pjy=lCS}|nxSLJY7;a>9Q=r^M*-6do8 z%*=$!S{Sws#xi2hcrk}54aXWbKf_(s_y(J`voZ$To$Iy+oBNVUgY_PLXoCfZ7u1)* zmKdZxmewqbgyz-j$%p?wnCmMC7v26irKrQOBGs{^T2m`+sFlnV(cB0&vG+irw_sEO zl21^$z!hQb*PYCmu#xlT`)Y~|;Qv%7)A{vr6O@iibZFdj$xb)Z#uF?zh6q+e0Oxx= z&EPA5(0P`{p7!p)ZjIN)A*bgGQ0Wakn@e&b5!T3L8Ip@|55o$oL-gM6f{EfT<+UI- zpS}rCejHtx`;KP|PP#mU7nxlK#$(9@6B|zJXy}aEvv3tMoNda28BwwHoAoPoB#eL6dk(-V=Rb*qFASJ zNAmikcI<%N&lq^&bh>KhC)Fh)g#!3q2{-AUN`V+OSZ?HPNu#+83#=`G6nz5EQ78WJ z*>#s6KIgbgQ@0GG6!~ZFjY>oEWV!I-(;|(J-j4Fj%tsP&6nG^;snuCFrimd5R^B+F zd1Mne&3wALt&VQbmpAM4+Z5jf-q>M#nfGUrmquPrPgcw7w0+=q_H)cq8YBe#;g9 zB3J8+*;N2Z%HMg8jpsn^-3!<@c;4!5)7i26{6iOVA%+e0u6Rua0%Eb@o8jnRzi_#W zU%z-Z%w5cRZ77qH_|da9N-J5SklWitfk|3_&Dba{gS%z5bw_D?_6o;6qFU~Hx;mZS zMxhI(?9Dxv0%3Hp+{nXd_!aY+jB#kJ9mr-R^yJ9SIh71Zm6GW12N=`9NWVn`5;{IZ3?oa1=)_k9b z^DtSPFB2ShM_<0;vN^Z$;ov8Ts5wB6)i&> z#LA9xE1|Vk#`>A_zR_~9nf*y-ycMIPH)H}kv7#r?F*y00o>IkI8m0Z`2Gq;>^t4(m zZ)R8P^I7mw*!pxzd3yJ*c8jdHd+GF0kNX;9NTC@GCt5f0$i==1Up~1Qf0tQ3jq#T? zvxE@`ErDvzglMqOB0=^re_XWhG%(Y;nLmyg_!XVN-?Y{l=z-Tdoh?p#`2Gk5>tW!+ z4?U#WaVunSHv5T4dNA9cTPWeJ-6I+bxjSjf?gf%W5#F)~&s>@C5&FnfhGhJZNQSX> z0y6mdqe}$w*?|D3i6D4Qw6@eqT@i(+sV&;l4fZk&q!_MCxl6{TXC!Ime)(3xbqoRw z_cEds_a^~kE7y4l%%FR) zEpKk8K`m;-Jlk$WY~CSeSEaJG(}UGVp0gUu{32B=V?h!4V<9WcD^tDolGe9bNh`b< z2`CjM&f=@GNo%;9!AaD?Ak|+o$}w({^p-QaXQc}7W|Wy~v{JQPERdOe)uU6|vrx4S zaJW19r!7>4j~+wb89?-P8~stCYY`$ilI)2u;(gl}slF{jbuCxa5sI}M&V-XdD0WYy z4))S>yP9fil%+=GH*VcEV<;&pG5t}}Y-W-;X;$#CbOq|bJTTEH`A*BHI=)_kXS?u? zH+PSo{d#OLxxhyEh_|)gE#5MT(DI&s=x~{~3LI|L2y9F18p%$26E;c6@^5ij*-d(U z8WQ}6fjBK{L50ymmunn_8yTE$9hwqw*NXfioCQy>~dYAuArt%5kJB!ig66ea%5wynj9U^7UCv zLZtn1q9J4zquN!6CIoU}OUe+ugnI~W*y5y-R)S_u`grU0Y?u+OJ#tKlZ5mvG2R+U- z_dyM0K0RMgXVvX=K3h+Fd2Rs%^iC=}vrXDkxZKE7St){4mTFaFBZMHPAgnQ^6tmvA z^3lJ&>CA1Dd^CsuPtt2;BJ2SCi`eQm)?Q*47sq*W%#f|yG-9-T3%E9V{C)~I7NZ@e$ry4`rJ$H zkE2Emzp;`^%cO&v;+Aru3L=hsn;C{C4p^?gVuIhBq4OW$_uhrR^kCW^?a=J$>Uy#M zHk}9JmF3t=v&p-Eo^Oe)bsMt7;Mrp+Ix#B!HV;MpNN_7~|FyAMiR+usZsO_^n5IFG zthSusAbVGM0*}U}FuqLfz6|}rW(FxDh9M8$lChBi1i>NA=>Yw32J#6n=WwN`7^e&P z*6HP0by+p@`E)UC$2$U;hKJ(2LoQ*&TS1nBhmXOEB@rYp9zudN=Z2a`AwcYHY*EO}B4`bcr63GA%fmkRpij?ppif-aZCAx`-eD=Q zXJQ0AwH*6lxS2tM{{a#vf5DhJ5;Y-M_ugOs2CrtEC8&FQy+8ya80;zJvj|1JI+)9K z&;7|=Zt(CixLhr)32+#Y(OFYl_#YCYgwvz8f5qkA|4O!e;P@bcR93Uju5koe5+w>! z|A)IN(zEpz?c275tbQV4gWKs_rp9gYipD=~doyoNX6t!#6CLa;J90Z@-XZO;&jQ_M@v3|JDhw(<T(!l!sCkX&lHDOGoBjs9cpS>-N4^ku7dn`e?GWv%h269 zZ|iCIXN3!%K8AQ&N*PSu=~gBR;X*mIa3~Pq6ro*#fDLoFR@#nE+#qEQZ?&Y04BYt} z*n9fcTQD|oPYrg(EN6qGc5v7ufiyl~Ef$a&&ZpDr+iZOn0+I_(+qtJSwhNXW zd*CXR54=#aR-{I8HWFfu6PfF~kCPVK^b@S;m|OefM9)V^LZkyWMp(X4n(KnYc)?x< zrP>EQrn_L@?DT}I3G&{V4XnobIV)bxFB#z88}d&A3^?}rv-a@N1zd%QC)4RR{pWyo_#47F4{IVEI5*6bTO1W|H= zGrWf9I9ojUaW{2uX6IMSRdrFpS76bsdxHhr6@qiBP3{qv^}4~zV+eAY;vq?Do4(;l z4edz`Bxh+|@(RbhrU4fOTQkx~XOh-}Ar@tE>}_QbZjlk}dTT}}^5DO17iWJ&Bizk+ z1L21pHaQyqbbt%**thkm`vNY)hacLRDoF#y$y&DK-#vtKV!+_V$H~{um%ebyRbNxS z6!i@VL5u@+v5kT#E(^-XdOI0RU58}X9~O(n%7o%aip#wQ3);R8T*tUw?D@R8URNix zwrX=$eVaEY(_u>paiPSYATVbY>n$UPf@ z_ioMEW41}voHaz_;5fCTNJ8Pz1ee-Zi!L^q(A!wg_$A>C(sRjGw()ywM)gU=M2ea- z)tgPYTura8ZmW57yS%=NO()>hjK0$K@F8g6U%9R>mS-VyBemU9xwCu5J%i7jU5LG0 zT5-gE+@U?Tp&_r0LPZS-Gm)54ga#bXrvLN7tyQ;PdT_Ex*P0OPQDRVD6UeZ=uF<~f zbhw#3M##FSiZUOO7(Qw@^M#A0A~0 zofbu%&Cea+*n!T_M9~avr1B1LdCwfi8Mrd z3spdG(Y}dmoKs=6R?HdlzxyTWh1qcGiOZ{HRhg~7^HoVyd- zqTL(3MzW;rEj|Wwqa+k7px~a7sf97fBQr_SzkG7TS68(s9lr8fYf81~yqf`+Z;W8z z@Cwq{1iK0C&PZb|7t*rKQ37wle#=))xS62;b4gg6%Zq9~UENGq&R_O>60wF+dqLyS zqrU??{SXQP;uf1M(d2axdfO;sUim(8rJCyOr62ID&hyT&XTbP615Y_ z;5WdDWjD#BPv`U5@(O<6rYUuMyr#pZtoNsoH+*#2T+gfZF?>93tIOs05cIL#VU%ey zb$8PHENrSbZ~dytCX@F9V{r0PYv0Es5t~Goo7#j5Vu?P|yO-Y3k`q&>hnCt#n zaC#OMi9F17Ifg5LTX{mg8>?0Bim~t-TZ*K%s?TrLoK#2i_g2Z++k4g+%+eASpe>OVT%snVL{w;A>G(e%+}PXg z5Tz+3ZOs`9(?8fHs|Cte(t`Z2{mqn6&GZ+IR*>QA3r8(`qG7vKknxJfWvBPTniuG! znqxT8L)VHQ&ig>MV)yxn?)fs&>-i$J1#QQ0co=43fotlZMHRH$; z`#7ZR;jZ%7ZZ^&e`)kGq2dP1=Uv6X0b{+GwcpKveTR!xBoAdSUauGIs{q2>oSN9Zm zce(4$zBYKs$TMTXZBPLtU`;qV$7-2JGWpqK(D`U?)x)nqb~&PcIzo zr34q9w`O0$gtqch;HPO)w{x4xLe%xdEBa*`x%2t*_M|#%E-sdflbCPbX}oYZ{ZH>Q zcJt4Bj~9mTaA+TGjFtheQrD=70KW`5!-e3Ue~Y{4O;`*w1mWVR()^I;iNY-c^?_}=$`Vn{&IiVWAOAbSh3PJ zR2tia$B3Kp`wuSq>Ah2n2CDZGipgut;{@@aL~^_effKX%>8 zJ*!8nI|UCJdELoy>_d8la!4bAgdn<>VP7^q(fhf>I=U0RpEq#I2`w3QkykjJuLUC| z1;oPL>^-6HEf~v5sX#ERbz481kUq&lUc8x6mYd>|_6@l7`Q=%41XjA3oj=P)Wfh(7 zb&r2rkDL3F$>i62^vLaA&|p}IV3`GCMF?+2j!gFJ7n9#RU;O$-XY;=&eX*v~G@(!j;Sxn^2SPnGMyUE?3KwYp~g*;f1S>Az$S*&@|AtrVRdFg!q%3Q5^_% z9Z3T>)J;knz;CF8@Y3nzkeVq)xQC}G66E%_GsqGd)SW0(l6fdcf5~X&iDA?L|6(4@ z@pO7ITg>1TQYc5fq$kK)@3*>hdv?(*&zIG0bJ6^0Lh_8Q4xmtJ>fsuCrn@V$G4`hE z;*|URLnpOLgo8o^-VJ__5gwGq5{a?%*LdvwHSI?={7$*5orXZ%p^zGb7Lh&(Hj&rL z*$kTU){Md!8H%H6YI9g3@!-des%YlZ^EE`p&8oVD!@gZ!EpMv(AFg^+^(DoFyu-|I z^yKhG1}l#|%B9NKpv@|gVGTn%iF5sV`R#|_-3HJHhsibF0D|9iZa8zBtvGeSlr2Yp z(cjFz>Yc%gF)~SRCP<^l$sYMF!YSIj8D&%)O>iL~Sj~>lt8dE{m}ieza{CN-H!OvB z0Z*IZhL1k9?*(Jhy@3KNTBSNFb8^@hFI~HKXLOTx%}mWKxITxW+3K1zPK4nla@gJ` z1}n$|Chad6xGeC+P__Ifp|)@RKMbI+|))(nF5heOJCsGGc~x7^6R zDERu2^-;H+hPb=RFJs(ZGZ*?_dg#tQ)7?9v&K*#)-vF`KqsLs{+H@7DNWE_ym>$Qqz<pwJ`<|DS%KJUaR|$XgeS z<)WHjAJ2kmovbZ;hAojMa3{`+hXdc%sB>R3%~s()dhF>iWOcr=qxy~#HT+vD)IdlC z*)RT_{Pv}*JpJiZp1!1P9nwf`DF(K#LXoBr?LH2ZMYyj5T_A7Cs4k~M(oO4Dmw$$P z7tL%DO@-k)Mwtrdsuf){tMdv{Xv(^^HQMxV%7hjO%{=7OQsKT6#?+*g{_HLn`xtryi3 zw75$_^tOaka3kYLtsh{^*X#9kKCkB0Y6*6{j=JCCy3@k|Z zqzZP`&&K;1XU+OPUOrvTPM51$wV2LtuaCl#_0x-IyO*$=@7-TKJ9vjNxLb~t41H5YOiKa(XZS)QE@E*n=U$3vGmuJ%jxZ$JOV!cd}KlVofcY{%R2f4ck9vB4-9&&Kk zYeQbRlnQUc>uxKl4O>@Iwghl43x?pRsm)3Nl{bm+_GS<=NTt&HyKs}zwA`JpR$m&R zjE6l=KYDL+|4f@jbvc`^R@3UNnVl}Ct175Hmlm@34zXu;`v8-}l}BDfhQI5ZBK*_% zi$_gFlrP;catzY#7p2vFaBxBxP5Hy*fQ8?A1wW+TYN#)$47N>7va@m2s4C4H%@3OAEwl>Vw)f}HP?_WM97um)blD2+VVZ(m#^ zr}Ffq!bim0MJ3T1?iue|rW!_T1W!41;H-)A!5Z*uXlvwd&Jo`H&xgtH9dm{&Me=)! zIRk!C6tmnF38Ii|5+kH95w>g0>}?>lN=AhihC^PSXO-PzQDIwwa&U^OOs!2k?D3Gn zU7)bYbY6X1uGiNWL0If=ql9s}hqXmy9K1$a)z)2ng`^SU;se}m7 zi;u26*9%90ASus8=bb)GUL9x#w^6x1d0w$k&P%@vZ)mbq?al&?~K>UL3Goh?_3tFY<&v{Js_?QHv5C^gjNzQ7nT98$|*nz*HB zLq-W!%e<1=oA;By;&Y0BB}q2m<7g$v|2X8ZQeu;;V4JG9nRH~n1z)7MXkVC!wCwuu zl^|q)1qHmH!(lt3JUO#@v#8+oLTk?5VgXb3&Ujl>-r_wIN<+cZ$6&`gbmEM0)RR`E zW;wFkFTc7j{N>ji7Y+$3(Ty_Q#1l8nRc$9i0+W3&bFm^q1jQ1_up>8^7L?u@)0o*g=y< zZ4Gcv_nPpM4pZ}rnIuHN7tOj_O=mq;xvh6vrm@tW`EL2~b}yXlFnO;r1~#pqvu;Q3()bxQVH6m&Gr21k&D&ti4`wa2a6xti5g~tnv>P=djx-MZNmxsxDS2x zY4Y2j4~F*2K~A+lPO#$`K`b*}#H!(uT2M)O!J<>Jmq8~wG%(<<7lSPeZ12I=_&++c;dNoQiBAP?T$9rlwap5fCEZN=1BZL$Y& z6CmeTuU#F4SFfK9>mW#76UnHnb4$6bxloLla?(OWQ@8Q*@y2L)^WZI{I(WaLHm=_7 z)|5Cc*b1*^JQ46+cj$6?xxAVE^p<<@-|XmM-P0{^y94|;-lNA5>Pj8vu}svIs+t;A zt56p#ftmX7%AKD7@aoy{^gKqpl5^&;z9MEy8_T%IuUwGjCfHcoA#YJia@UMOr?{Lj zS=$JuJ-`%Dc{Ydd+D6)3-dJ^9jsHr_i9_Dc%1fzFg6 z-FX)%BV5W_X?z>qSG&*KN}ek2=B(6NF;%~7RYHF%;+BEMzx^0?w4gf2ykE?5= zsDl4ENDG3`3m7DKt}ca}*q;#AUou);vMAI*-IUj_Opb_wDoRVUT!163n(DH77z0Wa zg*`Lek^0d+ux)!Z&U>VbOYZ7purouHAKmIZ!ZXGgmMya!=a)~ec!)cjmlO|C5DgMS zTu~q@ZEX$C1C#?i_BJzI&>b2C@K)?w9Ew>Wq|L|zpa#60@e)?tkuq;X2ls@?2k#=D zyZ{wG{m{WNBi1h?8-v=CHRPB!hwLNn9fMS)~ASTt57 zq7s`@*4li;5#GQkF~QLWPD?@aPjigMSbb}5WV*MiC`)o ziTNp#t#AVWV2*_CZ|^7X{(cr?hH8HtHCa|$DU3gHM{BKAP(s?-WP7_Pz*6C_8Kq-X zNP=rA8}OHS>Z3H%e7-hVrMkFYpRSslSb|!@Qr+_`=23%14<4l2Kq{VE+iJ#PPal5U z@;WW=zPh-gcMd=|i7Qg9hA>gO09~ped^I+x{FGx#?Cq=oM}@y;w5n^c%B5|Lt+>aS z*aovUA`Cx@VD{enj#k&l)9T{*xLKUQM%L9V5Cz&mn7DhX_Te0N?XwILCI$}~L#ap$ z>D#9PC!pIA55__)Qepz`_s^409bxhBpF8XPw1Kb~e+{+6BCbu%;qsV|`r8x45Nu|! zI6IV2y6eR%vs_N3tRXHhqtykMGu~2BrybB%b1#lB;4e<+fww$}eph!5+g6DRjkns?Jp$Q}^wNXwbDzs5N z(zUqfxNW(15S$RMKJsEMeA7dS5L~>1KQbnt zlPDIw`ZRgdrK9d_%$rm?%8?~pfnjugO(YH{@Y#N>Vo`5rJ#&?WGj62hTOfzLMPu`( zjAC)x$b3#iyp&Paa-+y1Bv@OWREz58Up+pDp?jvgR*rHMC%vbP!huTaql`FQr^FyD z3(dEK;0DJrFsZHW1UC%D+9>2tMMxL?9SmoZ0}j+#E-JV|P(p+o;uVW}UK5UaT=2d5 zay4C4>$BDDCTwUnn>fr`tU_K5$2*;Tx7chVCJUB4bk@d<4MtGVPb2#!f>uHcN|au| zd~!uwU6fu@w3Wke1vf@H1J@SWTr9Q97NjK%cQeS=J77%yf>AC7+cK+3z8T-{l<^Qp z9b+DYs~JzOx4xcVHH+$K1~%8sFMj@Ib98b&Z+^^vRLvZIejUuEg_R2S9J3T(l*+~U*< z?iuF0(oAZFVDUpcRmp>xl(Ya)ijISX^hAkP2l&)aZ=*i-Q)(s~D_hhc%KafQwWzqYyjzP(doeZIlO1Rr|mtT-hd}PUrkS^ z^GE1t6QmYwv3OUUxB_&8zRrfq6bPOpu^%yLh+yu)NUHd44og0qe>U)9!fjL8dz_eo3B{bwKAa=8?KVGK*I6n--qauA2P zbRv`fEuKklnq1Y!`a%~d9U-;$GwGe#SHex~%{J;S*tb_RVc15jm3EmRl0waR>f^D= zljhs)NebCiP?b42r!8vEL#oXEl}Ctf!`}gCXpqh9mEqpDn|67QOykPioF-45yP} z*qk(6ImkvhRSEe7^$S|Ny5Qa>29;`t$e6qZ`}W^bR7zWG)zh9#0gv(IM``1^iSR$m zvqg1zhK~DkZ$$ED?0;~=`OZ5FlH6Z?x`GyR&k}A zCX{8hQiLfV>bPgd8}25wUieTjAxVq4%nP911^d>kU}qBoA9&JJyxFOtjQ8_PoA&B# z+EnZ5$;qP()n!NQ-o-q93%dUTWB)FQ0KKVO&Q2U0&8>s&LIq`O#f_0pY1@(-a%sU! zhV{W-3JB)7EB3Q$K9L$l&J0VTymIT>crCy5=U~1(nSP)Bb6(vvi|S;$sE(%XSji!} zS?;wwaosz3^r5R~%yQ9#qF|+nAv?>XMefpCqupT#Q(Gz(Ri3TyE{x^xp;zoS3}SaU z7-F`8pFAuXOWg_L1(6Xpr+S8`KJKyj_3ZTGdT~4{ z#$w2|2XPc2&KZ(bdnM${-S-m zW5`zk83h$KkC!GHZu5gFWaSZ|uA1}d`m9=?HLHupx5%vhma2@oC%&!g%ze>>MF)=_ zc^u6I^)Vt8duHJIsg#gKhQ2ka!S0L_zR4LSL`7CDIdxl8vIe`etmG6_e>eM58V4)( zjlG2o5cqb(B4iicS+CB=W)=e8e<`P4`cr6JO;JA8rnalk6 z@H)w&xA%}S*q>_U)E)bi2s49!3MnMA>)MX>xpnQd^@&;v$-PM_`0f){7ReRtC65zs zV+G4yv2Sx6yuyS^WX0Mu!p3VEKQeQpg3psi+V06eaikqQ`p~&E6E+B?kqXAv8WO|M zohIUF&zru<@}?GvT(KzKi4#C3$_yzhmgjF}Z)z)dy_g4ObV6{fJjrd99JonLNa5v- zGjViPTqf)Et3-WxDF|wPx+GgbBOnTfT#|(K!c?9z(>&QHQ5I?&uaSc6Bo0j|QxbxP>UTKY2470}1-Chz$#33IK0S~2Y1$tr zn8qci!o@*SMr&=9u%1vzky>qUM_VVFR4a+L=L+GuYsPGhamd|krk&>O<#Y)z_^+$m z%jpF6f#sHKNN5(##dLCfwwkT4mX~MKRRz{?dc9sQ{&l%pVv^IxLq&Kw${ObVj(7Ke z4S3!8mU);Fj@&aD z--5RvUG(Eymz*P+h2l&ew_J8pz^KqcIaAVOX)e>Z>1}D-)-9Drc%On`$^N&1wS0!Q zHjL(d3%)mt)9SXlL^i9$CjhSMvA+O!``p7fFBZ+otXem#=3BD}**mt}|NgGry@g_C zAAi$?wFhr7atw#!0a;I)2s+Wm-K8W2nIaX&5SQgc)s|7oHG7Ok?f^OT4s;)Be(1Kl zK*a<;6vX`&Y*zNeix?$bBUYn2YF4XT97cwJGiV?cmiG$|bLS@SMtQ&fLq=}3R)@7@ zU1R-)wF-BkFm94v??XqG>6WBEq^L5vtc|e7W#_TF7F4!UVdYB6;bw*-`3!m{^?Gir=RN_Pk)B|t>d;(LvRVXXb8VdH1 zH|VetgXJw5Bj=%Zf;oUoR-GO%!c!l&CEi0a{;7`U%jLzl*>oPz)|O`N=?-v<#!wb( zkGJy3Lt{n-`#(M6O8kcy4zgyVBX^lfAm}-b%hsX6PPvj;053~j>1}6F7<+gK$zL-T z98=Xw(YY#{J7F#GdPW%@FBc-0Az!;*&abcFS8wgVL$X!mt$gU< z7D6>Y2UQSvW9-c!jO)=rr?OD+rC;N|^lQSpa7K=4Y=Axlxagm>lvZ;37+Gjath~gVje~t5Mqe-VB_L zFn4{rENUk3XRlsI{aO3t)Cf6Ymb?Cp)GhLs74c``9`cmIHk+omX5Ti+L{QXOpp*2(#4m{<_1eI)A?<4JME=-8<4>HBjxT{=G*5cEO5Bw$c<8)fGI@$clCBN3@R;=5`CVw%`QH*m-vg+uHedubMP=?*&F-?5+3m zjGf&TMQk=d)4RVXuR2?Q_qP*Vr)-_unldG&15Ch)A4M$XkAofx_cb_EHw;v8SB%Bl zRG~JMGJR-os%(q5F|KaOMRUHM!SDO^svk%{Lao+4w8yK}22VM7t=0x4X#%W6X|RTx z8u2U(hp>xq7fQl&$(-Iv8=>C)rRAPX>tK(T6r=MgnSMsu+^A)(pq`7<-ljxQCp$ z6$@~uK5IDheGGB>;DAe{zFYB?1`i*3xyuiesn9hg@CSZ{dt>o&vwr>A#qYLh@F2B| zg%@IkyELXKw<)Obcue;+>~Jr`6feUmvA<|cBZyh#)svQPO}`d5a(K!A8OHjKxoUmS z=yWq}e&Ua|WoAo!9pGqolMCwZXxp#DE-#!E4f0-N3~4h{0lcC`?;r;ZgY9J!J^dAj z68@Eh5}KNGM)5xmnx9%ql`29z)7wN=lDt_g#9J~(&em!|K`JIUcBJsY$6N8b((Kv(C@~!(-y*g?uixZI|WOQ+!2caw@>c|HYr0*$sC1E1UGdIH6FMr#ZV(4 zzSi1k?$oAjZIJJYmNC6>6M3Von{CfqvtN}K6E5((3bCzIp_*My6Hs39%Omp7&mi2c zu5PbavjD&0Y`Z{n*gM)GBkh2{{!1i^$idQM@P@`R9+;%61yZ0G{F7Hje)Za&qBQYE*8_Pv+8(xe7>5_=g}f_u+uWN=I&s3tu^;wD-G>%A2tT76~qRP6h6fE zXElao&cD6*=xK9&%&=MvW3{xxQRT6uwwh>E3@De?hP&Cj@a(S`tvoAaqa`e}%bOOw zg{wK7;l|O$&DC;!Hmkl}uddIV?}ydh>dv`jA2&;P%X{?5BW0^a(A*{PyMR~)9SN1w zou#i`wCpCTUz5=?oF@DRchzXhYAz68aRVUY1J&y5WWbdDO;CvjMN36on>MxP7@(*T%tUFPuq6uFevLZV=c%z* zffbzxQ?$rdMmg9*Ih16$jV$hnjn36uv2TB7!Zb>dfY&Z1$Afos81r1*wnow?C!bZb zn?CvJ)64F-r~OEsox!$F@D5{0iLE7px)x_Oa-B%{hfNqTC*14%*OTY}ez52FP9dxP zaY`^xD`6Z74@ilXmd5xa4dwi6xUmB2dH$NQmM>|k?ujwEWT$u`BTIzAnwnKpO{;&V ztHtaz90V*+Yw8}`u6}ip)--s?7>v=-07_*UiXpeZU;V0bv^e$B4Rl@M*fc28)XE5= zo#7(NkkemNB}z>F^>@*;JdT;N;F{)Y#rjLeScb7{fEp7{llAC&4NqOKD|p-aErRZP zXz@i9k=C zVNVHx{E!2N)|sg2zWh4*(p7X{esy{_$%-z4096?6a28U=YC#O~-Qu1-n{YQJ2)+G9 zV+~ejaD!lfdkzfX?ff!T-Ftq*tLk*Q3>inCYI49m`)%{kJtqf(M~}hvQe~J9V8)_G z^qhz(?yOo&SB%WNm9XoRdAC1Kly?Q^g1RI1yf%snS(2~6x0}$swWJE7S*=WFN7h>~ zhAtEe{#z3z(|*|b%bzt2G|_t12O+liGqQB_bb2vc%qrDvcE#yUmM~-YoOdfHWxi<= z!00`H8i;^CtY-wp~)n`^l57BU3RBe3iQb;gI^ z-Ky1x-*c)~verUMUnk4fj4MeBQsRW0$usN$c`SF$*aRTlF9$#Aa^ejC&O|sf@M^|0 z|2MCem&^G{HN8E9JJ}=#o!VcH;pU*J+!HQuyqowi!bgwXZ5t7^dSyF-UQ3)u&ztPs zVM-q&T+4;f%x(7)X{{}ZrV6(*T$3KQY;VmNPb5O=crDog+f~MFFJ8?r1nk- zU(GI;$7i8T^%Ktix)-pm;qN{B8$5gr*|%ar-5cDJq_xp?mewsY*~N9QlT$_9qHQy+ zJtYuBG%Hf|_TRr}(uPT{z^#!jAXLth(IA{-E1M{uHBSTwez;`Xg=pN?!r<^dd|bqiZDH3qoJO zF`q{fQ6-$5dum&@kJ8R7SoF|Ir_ns98pE#=H<11zUvXAo`u^+WeP?3totDu1l!;*n zlt`@=QZwH-ZAGoAv8H4-DcDP%B=hFxt-EBbA0)*@Fkhd2IMYc)rf@fh&pPiN-1>Sk zyJ{-@pX%qd`qrsuQ6X3Fu*+wkLs4k(^g|o6Vl03>QC$nz3T9H7&0R<_-@S{bnC*|F zB03fxLeMvMmds_%sYF~vK}+^GGuZqYt_r&=M(6P?<`_($9es z-Sj{idsczB5S#N3{E54{!J`jt$%2p`OhdBP<-jj_M$Eelbde!qO7K?7<7dnZC&vs! zipL`KFu^7UEqDmH=q(s+-&#auG8abW+NK}^{)}`6=iW5Gt(wL8e72~L&zi+)buw#y z_!jCJA8aWGlggll>CS2>(7jwOPp*$QMYzFghc+imjSB1uG8LkbtrUKJw$K`Q8L!a1 zOgB~xgt*+{Db}XeMhjh1tF^zKA_H&!sxd&mU|21%!tN_LfHyQEEv)a&e12Q4;S5)+ zj0)?c=n8npTcW_ag|0yO>@gIAn2=#~t7`B~wbkIZ!v;!PBl5$)qc;2@Ib5S^E3HLR z%FwY%D9(9mrYTC8I1c1S0?{`s1sYC|h+~&70fh^;K-j25)8@NdJdK zb#{7jy*R1Hn=GRp@WB3}u|WZjlUKEM zN8)yDg5m{@vI!dX(8tYcUR_L^lj*@4pzh&6c>^?f_{fc)vp}MNNdf;#tA8QF?r0MG z;7IU!+UcnhGmeZ~!i-a5wx+fgXAV5ti9M-gg1uzTx(^5fxl6{d4~$JDMrVBg5;NY- zDD6HsLB8irT~`&Afx&bTV$3joj#=a9udX$I{+eTr zq}JScxwFO2slmA**BXmhVz{9^MO-g$hF}3X?;I4OyJnPj#!iTWyxJ)-Urv|se*e0< zy_`;98>{7_xxQNeYtdXxC({+|uBnceQ!Jw*`AKhrfIfC5?B^!;fL_40OsmCoz784P zw%d9MkL%t*&!#uo^VYAL=Am(4U<{=)2(x_0%TR2cp~9pBgUss$fB7`|)KRm#H0Pg^ zgvz9r27bGk2S|iGTdI=f?%r;CUYBUD1vN~NyiSt8V$aMOnMggM7>sW>c^P=6~Y%}&w_-T8;;iE^MN-G|4Ofd<*iC`J9rZjA2B?9XY zZ(Ud3PW%nIa%O5m2%}1MT0$sbDVXpj49ZDvh8rs}FXS)UkFgpW1fNwpH)|2xM#;_A$~Ht;Sv$Jd%U|w;Jvp>gx|rl4jq0gF8ui0 zzz3b9nlI#g8R7R1Quk6LA(vqejG4l34#eJ6P*FPk4)&85eR}{cCb{v$Z+FeUv6_hx z6NU&7ofmzdK-yV-tERK{be;^r@uD6(0{^+uokQ?uakX4j>$CF)_PPqqck3f4VcPCx z6br;tZ<{dr;2jQa@>=N-cY@z-On_0b`q#fW_4IVOvB9oTE z*pN{*l?G!qCPUwrfK=|#;6cDX)5>L`L9Pm`iL|Pm{7<-cMSoVf${;J2+k?F+OFo;?P`mV`xE%sH~G zn9T8mH!mkI9H_K|(|VDDN`s5y%ou7&$3Y_?dB-7hD@uf|y1~9m#gWb0z(K}KBcVCJ*)kr*KoO!S9Rfo9ZdWfUBho9 z{4uo&5mE_n`p4VJ%MKm+hf~#knM6l|OG01j3@G4K4YS@T=aV51qU!9`G)sT(+$h zsp0oN&!K+)7Y(b?_m)4I5f`ZuGcRCA!P#6Sy8vx zdq?&e>BS5~8lP-x{|`B-D};weMHk95?s=_2kXx2jg?Kui76+jgQqz5ejcc zoe^7WDV4GuRg<%a;l5@LQ`7x|v8i>=VbNO26n{*gUgA(BFHn*~H}kV;*lhGSQNrfjv)Z`{ z^6)yzoX&g5p>2eadRpsOv14b zaBgQ1zQEm#GFjXb%5%BA3?T;PnwNvDP40y}b>}j8_82;sO7LLrMW`CS>nQq?sXqDo z^W=F~Xnp;;v-ju8LaTuHAcinr>PtT<@KQ#^pmsi8ET&gyU~ob1nYFo6*61GZw*E2qMU(gg@6m_0 zS)+qkSn3*U9|Tp=GLzLe9{bXp9QLJFSy3=|0NmJGa-z9E5n3!+4fmBdhB6>U~E3FJ{NV1Zc32y&IL@Y3-V*I&YJ7nch>z z5S?l*e2kAp;^`VqgoK^Rgx`Ge=j7erT{ilsV}XCC{H8(KVrpIbLY$B>;4efuylk+S zz2z+2^`Zjl9C^p3Hha2Fyp(axV;`TbX6vivqh;7Z3=Gvn-+d1zH_K?QF=Lf^?l2K1; z@T;v{#6hU=+cRM}`%#vXVqhTnq`)@Lt8dE{SZI&^DBNp_-i&*wTc)J`o1|T>yZ)gg zUCV`!wSy~D28W;ebJmGK_un7gQEL|iw23{RQ);LKLoirOmB#w;^&K9+QR4J;z-G;4N6lg2#>AkxGS1 zrH=Jtfl{>OJd|b?a6OuY*Euu^oYX>4>Xw#}hEH>0wU?ys>PW*qgtlr?C`T(nGZ94I zdNJUFBuHpOSy;RM7mm-zd?+6KD1B&lefN&fP!LfVH+xk`KU6No2 zZ}mfaRcfj1LHls5m>_^OS3$#TroPE(rb@)-HHjd zQ{0{0yO)Z0Gj9AJ?B;4YpH)Zjum4!yEQ1crz8%wCjJ$j1PuwmIpFMIntT^?tO)YPh z*0n++%+TCdmlsiUe?R#Wmo)y8k~9|ZVnjM(<)%ii?m%f{U%u{ODZf5Y&4YdGHifD0Wb);`KG2p7{-r^}P?;hcB=0hCCD-8eGG-o^lra+=h8HvR=2=4q5{RXr@P7JPD&V?|lOQj_i@}+qc#+ClQdbu>W(kQ_- zW%(Zjf7Mu&P6%R0jHcOLBfOJQntg5{fN3{uusT6t@_B;$d$`xM4KTSo<;Uwb1y316 zw~3md;j7WCYJv5gund;gf_>FZ<9L!A$!Q$K^CGsd!$P&#M}sJhaxOgBO9_~UyJVjL zm|{1dw-WGsHk|NY4%cvsVl{s9d7o52nv3(tYBvoL0J|srw5_J_(IfZE+!)_4Q;RVt zws{43oDhMPNX7sCaq|32w8Y*1IDu>C+A`v#;#Sw%Qc8=8S@yQGw@$3TVifFXC$i;m z**6!*+xaCu^nHWszBGQdx}FzK)3<3^br?wq75Ym?r*8Q~AhQ!4BAsZ%X*l_jh109$(R6i%>M@Ix zCe)&f6HDv_q;yYe3nLq*l?YcJxeL@ZWZ8y)oIQjW&z%kqV_+|3?_h+#w-1f)O zV3=cP4gnSqMJg+5t7R+pUc&amO_X5S_STFQsfnC0UMs;iux!%|mhCY{xZPO%Y|)0e z->z4yumqJh%bx*qR-L&!#%#mfR5tdOJ9HA?`XXI%-eW!z2Rjdu4`btdn` zpSI2vK6>PC)iCZunqhm8-PLgJy)nOZ^T(wDc4FEj4KVmsrm&vm7Leg*S{dsVkc+i{ zf^B7iob|>bdS}5X?n6x^96TfW!$NQsqjb4m{M*K@|GGL`UNr0Ka=HfFzIyEbj(41o z*53)AGK!Rwa}|WWSl*Oyd(75UhYb8FjK)h(Rmy>6rQwpi)?lI3@x(^ghDst-NzUNj zc0$usLNFnT6(ZL(gEeC{ApAtrnp;%@rqN!~;nLH^ZEH6Es9)90Z)S_?WHtT%>=D5j zd1a#Rw72!eB>)-0^GEKGwG=c^lY(th-3lj(u+rP=#K&5?Upi4&x25|fDeB6Q;=@uw zAA}!~A4U_73^(P>J>1MN2xF-2X|S=FaM`V`^t zh|#;~jCtSO11OLvdpA&`&69Y~q*$Ey^pRV?)splPnJL}ZMBa^vOlN}MHUFeSfUYGa zTD$T9L{K9Ny81z-*8uxK1iwBaa|nICS>_cl-b^Gijc*0VOtWvm?fg3Ce>z>=^?1)_ zJ$AY+4xvOk?p{Rs5FjHd4_;vGUjY&7glGd1E&ihC>xBI0!{oO=AHD+r`QXI-f2O_y zwpN@=E2VP81Pp~3z>~q-GX@AZ6MhGbG}dwU&D;`Fj~w;~I$f-SwhOTXaHEP)u*51{6bZ;;oE}Gvw#=V{>yd zy$y#Sv-Vh~vfiEWw#J+Ll4-In_t7JF;#$x^V2?2z9Acc;GDjxi)#u6Q|9!COR}M*K z`{Ss*o`eruK%XZ>tsu0AxVnfcw7-Yp^nIvv<}Mgj%M=rE>`Loxs6yyC3+b^+-AS{6 z@Vq*@Uaf!PvL2Nt#68gLuJsl)A;J11w^48-!Squb0@sG%_*RCEe)_}J5&HDUvtb<} zF5x%b8f_i2JX2dL6;-qdk!-MsVIudTG}~P;7F;unGq2KYkiW!}9;HnVh0S;Uu78>f zoM*be+DRC5I3Vs$Fxx0M#kk&bhlY~KP(gtq%d3JITt%=XDfN<o->#FUd+t zYo@rd4t%*~Xw~#l<_p73<&7(CL~{9SMr+&fv6Z!wysw{dQXS2g$LAPB_Iu6pU@{8P zQq{c^Y*wpa8X>xyGB($p-L5U=-dm+>(C)KF?i9fh1=Ly=JXTFPsd>KE(4X(34XF0V z2?k4LTG7hREw%zoS`ot^g<8ws)-V^yKxXQ$*SA$MVQun4jgHvrI%=eF5x=C*^hOTv z_&`pVH_KVVwAZC<+CAglZF;@gn1hEL+Pj*T`Yjwvki5o87)nB5bi85w;-lLze&Ngs zrW?i_k(w=M#{)DPexW?)x-T>&+(;fcdH@^ZE!wwJjhzBwYT`~N_;gMWfAO>aIL8ab z>SLm7j8`-sR=k^eb23}co15xpIX@3&O}5)<38Qrne7D}v7H^xd>EIm>Zqv&65woo= ztC`Ff`}^{B^0}LJXxqN`;c{};0c%Hw7>AZe*M@N^{Bm$H|Lbomv~38JAsn!jWt+CM zUJUZZ6!y0mkA%u`sWH5TabvA7aEce==6|a7#q8=V?p}uk$nqK8yA#~mxeiH>1rIs2 zA!^Ef^rc2bAw)_z-j+Fo|Hd2ndy_TtN5PRQYn(E!<~7p7Nak@q@5!$bY-VpZJa54$ zVZybILi`M=)}v&Jia`+l`b9K|Zhsv0xwOWK2gbV~+UQy<%8iyq#tVZz^de}Y zxfawgksm>OYeq?Q7=FQoPPJfrb__@VOXs=M`FyrsE~@2X_TxI_*2x^a&&E@F2b|x+ z$s4;57as#Y0?Z>AyN5{K5O6c14%6F2IQ;(ga3ZjNkg}Dp|Xdwid!l>GH=*U2~?XCFK(4-ev~Jh=&Avy#@Q0 zPbQ3^s)uB~LB(B*(Rf4SNt&C><$S(`$m+mVXz!#CRD}-TVdU;z7#1)GAS~C^m>*KD zpJm~e|MOw;_SLi4kV5<8n5{EY6G9kO>S0=`Wx5eeP^F96dT%#*5~G_r1H3h(+;jr@ zzJzP;JE52Haz^RmV;_Nkmh0)|S#>^L^{C^E!J6S}VeQRib`NL2?FV2_TyyZ~k=wmi zfe50NwdOU4U%uXW@`jSQLr372#5brn8KbRst-hV|Z}mpY37ql-udoYvFpEDS`)^7*chtn zS}K3WSdkWI4C$y0hYsU;`m5KjaKtO8IF}TT;1Y6jL)_U1R8yi7QXX2aJQr+b@4mLX zUf)v91Tr_tYoqu!QG1GEL>*A6Ji_#~zQW(u>a6)bp9a|M+&!jEHWz#19&!2Ld?+su zo<0WaMc|{4(FT`DA+_YH?vddpqVO-DT;4vH5kAS=Cm23Op|L)I#8^$3v_c`n~zB~$j?bDXcz2iPa z**tuKv4`14`*=_YfHhKHaYSL{Sv!Q;AG%7L8)knoUn{N0?w0~Uw;CU`ebIx~wm(j&uxYK} zNnN5$sjW3dGOmJ@e7)`LtHKtn7-Pof93u-WMG*(w-qDCgnc;QUSIb4UK3-m3J*q>^ z!KJyUeULyqc!4oERm!Lepx*GwG3*Z2+$&or8d%RiMjKe|k5jZC@Vh3B15qKS*2Z#T zMG+aNU=t+-&;3PX{VPgP?Ao|mG8@6(?dgxqmELJNRVUSPgGaof%2guJbw8e#sAKKz1XFh+tHKx0M{sUMx`SDLHtE^wYoh$y=m4Vzg1bih+(0Z?xeSkR|{xGgwG#&T^M4=fcwLu=q+Lj zOimcPOKk|=Kub;?q_vT?pvE#)CXDsB&@*q#Squ5%xz5#DFE)})DDr}XyACWnGBhzx zP(`lOJ#SXiMYXtvQ1>)q;)OC!??m%`?fokxM~S^fM{bs29yUNlK>#Z6^oV#KxZ?fm zNjvV;pL}ZnI+|e$1Xn=h+ex@sR&z6Rypg#`ETo&_Xl7EPai`ONwjmp9=kKjT{HOg z6}1d;&Fpo!fJ_Q}Bx9FjhR>&L!u5@8)^aV=Pl;n`5zj!%$(ZL&DIQ+0L zQt$@BY6(%Rkllp8RyBi18&-sTBiuvQME_=KZ*R%IEkXJsk;e>kF*UF00e)*~xM-ix^sAmUQEHm{T`~qDl%{R6xm?b%$*+fBnzW=S zUd{L!b$&8ApDd47%bVqVeI7XB%+06GJa-bnJ^F18JpUz=2tn`RBQHZyLm2PnsI8U& zgt>W*Ahi1bjaz+EgNW3kWw7fw?T~_paE9FO1(k%oy=19|4`3af6{A!f2BB$^Z%`uI zLNgpMXOu;#+)u*sS+kmh_rIAoL&8Om+B5QQ<^VmT@cCo#_uTeG#1RvZ5i1H5WI6m7 zA6?#Bm(DWDTZ=kD+MxPa$6G6FMU-T^Aa8ANGlMidgCb<^g3&2`iyT8*$j$yfM?)O% zW@PxMyDd3oo7nvx?jI$zHx1QkBU$Fh|>3GQS3 z9{U|O{K@Jr5B=brO5U0FRJSarQuwSfC@NJvu)4_KC3V}}M|n;f`}4=in-1{OoymQZ z0=&f5T*i!WfNBl6fEMD)G8odmP2{y)Z4a=0p)n#~Op;>BPYhIr@YKhzj+f11{?BQ% ztS-TAo?k?1S4ya$dv3+5MS;*U=$a(~xa?LBH>PUu-n($^?;Pm4BwRZ-DZuN-MAu<~ z{I${&Vz@0*e;x2_cSe>Sa&0A+*73h|XW^oHh9^E=J-aIvHH+EVWwV^FtMmEg)%q+P zYAvZ~_Xk%}(OjV;PcZq-{kjD*x}gQg9E^Ma#zl~M@6?Nu2r@z;V*+S_bO9(3%SD#s zMG1B?7+wzhqMpcDfGH4>07B)%5uWq<|Hsna^z91X5b*e}zQSGms=DvETw+jQxW%cv zgI(j!BJ=0L0*>92L5Z*5l0YCOT8c{*>UT`JpTC=Y`1~Z+-_-t`C(!$$&L|18dcvWgYq8&TSd!+j@3#dbaY_^>$C? z(m>t04cXVr)#7RcZ{nr1h%~{NEB4q*W~GurVHU%=+Ts*-CWi8d&u((3Rjv#GMa8YM z#_Qq-CstU_%e4xJn>l<^&J`HT=@5cM!kUEL{99A}&G}S`7>Y99&bSqFy;?SlDHxn@ zvG&8fU6;xHbSGcF2IDR@nGW(6FoqD78ttcpz(io5JNCk6PUpP*7&V|TQ$u(hhhK>> zPAkGuHa!v!-9>4Dk+#1R%vE4S?qm*u~}Hs63##boJ*vO zw=v3qG+GS(x^9+di}|uTIc=8Ts_DG>Ctf}oBG%ny>a{!5z3V0e)VkqA#$X|>Vk8)p zQ}s<_ErDCiEN*`O=nkv9HIwwPI;)8iQgm4)aMfxm8Mwp`!gbx>Sb@o!Kxj-?sl{)S zbjJa1-pc6#>KFv%6X`Xm$CFc2BVlCW5x5^N`wm}K?| z?`R|j_$HX0eTO&ly4p1B*&<$8eY}K|d)P-wI0XwBg;EO{^a=7BDd!0M^{kO}@T47m zc0K7dFP8@0RhCmLoQRhTtxEJB^>$Ezkjs}DOCmElk)}2-+8RVxRUFR{4t=~`5nbKp ze7>AlIxMi>ZK_oM$vwOLqK&tXWPaC^JO*{+Ob0M8H@Ndu*;-{1T!Y3vk89lXl*YkR zD7e2aG_XOmYt4z!tei(2Z02C9TUTCR>vUWEHnkvf7iTyE2#nV<60_N10xuTx=DeC! zo72^Lxd}1Wvi4a@N8OVy?+9=0a0nhf@+7ikA&Qg05l% zL_!$edrM3QLqXxiu@r*Df_VGA-4tl0_hlx+Qle|KTUeSJT*Vt2cdn`VGQC<<&1o~O z&R3`B%`)gKeB9|&_xQ^Ps>9Q%!ShFMa~ZWh;fA%fRy7tSdr7IN>hF$d3M;@|GT1NX z7K4=F#EW5z)PaKSgz9gV;z}z)6UADi6@vFW$i*^8~wO%*>zF4mi1f>`8!W|vgQr{lK0i)~d`Q>JHaXMR9 zC(Y&Md>Vk)?0iNgz7+0l^}ZC_ic9;fHi>ZIt>M`2Kx+nFZ-CZF?S%G@+8hu3#mmW` z-S^eo26I}z$XImET1X;eoN2nd zV6lS5F0L_<>$g)K$<%vMv^Ux_n^)Jf#r$%1Jqzigd)rAXWiHx`dv5s-cXTDmkl1^| z$j!6hI!G}?)F(-eO-}5g5XV6u!8{|g`@KG5v!GVIR8Z{ip+HFN2#k%~5rJL@qco?d z5zqXm4vfECgGH(q^OI9}H~Q$~yLCYhkL7iTJEXC@bwCD^N3N-$8Ub^pt*LCS1eGBR zNTR%p%K9R%tSJN-OztrvAcXA@in*+Xu!I+ca|}0=WkCnJHC&O=2|at0CD9+c zPE%O!Y_}0gjT`OsLK}-;PjIX~BCf+e1>t6ffn5izw+k>OHkeclu{C8FR>{TX*AiQUfT<@hezTP8? zBSIE4f-^Un2#~*gaBEn+~g}S$$Q1>}wlrbr^hp;|G z9qmbt<kL9>U_3X&QAiExDr|Q+ekkvtKMD0akA>( z^N*b;)6)3uoC=v`AxNf?xI9f1|2%HuldUK?Z^@Y@j<*jc-Vh~~_7uI?97VXVLC1dp z9>NaYz`Hn3)+~+C{(W^B$AG)rM2=<7WB=+7tf!ZmLlVxK zwz8MpKV=NfV8#Y;8OVBL;I)z*DMj+U>^O&pte3R;)_+vZP!L!Gp(9#CpGdhJ9{6ZS5 zJ*7v8ozX;Bp||l@b1-1i37fU86){}0h zeKq1Qk4BqsqUF1O&-JXChNb0)0$=rxbYIh(3BDRWYvh5jF*c}LAy7H5G1Jqdp-*|o zAH7_-I~tKhLube+4T{@=>|jqB)y(*&x!ja-u&;DHoZDRHNsMO2`Gm;YYMJdH<86#G z;EfXe-OMd+PFLs6z8>^0Cb&D!hx49;ryM(Wm4f&!UxwEl90(4VnORbP){&06aqF`r z=@`5t!bs+Hds++Cda?bMg2 zaJq}IquSeDnZj{*hC39FgJmRZ$DZ(!+e@yP4_qZ6P(x%Jcz^j)gP6tUP zh~Zw^m@;MMgLuB-zJ?v&fpn55FxrM?CpageS>x&zXr2sra46iBCoksUaypR+$i1c5)9cuRV;^sbdT(Hx#cVyVE>?@{ z<}AubP?%KLJF!hPkT zXlz$fPiBlRQ`iYd^1q#3UA&fYYw3BjhN!fff1fYoNudYuW!(dPa9=if*vR8m1s31W z?;=J9f+A8Ra1O!g62;dKpC_L?f@>E>{d1Dw8gu|mn|6z@s@Br7a%3d^y<|btZHK_| zWk#DEE!N{Cvxin+@p48PxJJ7rR;Nft(wqh;b>-R{^H7|-(|_zrZ1C)3n`maVAHh<@ zUTgnhG>3)c-7B{O`|edv1r{5-x%MIIc&!X$*0axhvwQ`67;ae}uD7}(V}rnmCki2` zbo9A5*9&Jof^ok)U0gP+vsHE7oHze8A>DilgX*41b~u_=oIu>M6^Hf!TagKlO4)Ky zg`@Ow2IzgVKdPpdDB=w3SqS1RF@_UW5Z=+>O9=w#dwJ0^Cz}wk?6k)#g5%U}6Y1T* z+5V-8NY!OVpk9uEuZY)ut z_gA&({gfbubC#w*d*L=7K6~+GxbYCRg(wcLr!(otYQqeNhnI7IgS}*xQU^NxU6E0; zcQcWsCQO%7cD$ic`oOuYnm1EF)#YXezif{GiRf(t!FQY9A2sh{wOFjGHX)ITgthG$3Vs3Z@22+! z*cTLQVBzU+fxDDrn|x&q3$org#U`-f9{eqW+e(GRtv_GetrX_O|?wFZl@QIVEM6oK| z#4wT4aO~~L>`w=pcD|d`gzBx3@p$6nZ?wE6U*W!*7J`I#k1D&0wH*>Z5IF|bGLrZy zZff9@0j{`&H;9F*mBz5z72rZ3;SAx{V;_Wfmugzl)$Q$OxFS4M(DEe4NRGH|>2%!e z7Q7YJljCAFWEOfKJT3q*ZFL$FQ?4*0xyV}X!mYO6_@)mGx zx7VtGSq0x#ik;gC#}bk}#4A>NKxN=mj%3D2XTC`4n!s{oVP*Ci6f9xggcplrR`{-j^aLS1EGgrt0CRA+@ zA3MxkC6FaQ{Wba6L27*Zt5fEWDM$?^Yfxn?AiV8{n+%w63m$nnnx=3whtKbO68izK zZ6O(SEsZRJDcN4nh?37YAatkA;<5)9U6za~BmL~1b@`g|AarE-{9~&!m&yb=Xbcn( zimT3HSlMF$3IbEjgfI@nifxC&l!l*5 z{Ql3o2Cv&;;IpeQ&END}6+5)to< z$@4!tMRR&I+n-a^W)zX+90+#g7gYsYv%-xGv!@KDt~`mc{!F-D%4%ZF_Bu~SfQ$Ds zvb5D1Xx0X&^p@4v+3IYAL}h_OW^T5Grn-k+qQtXP5F0%F*p?EEQ_y3H#TRzNzR7Yr zulBK(vNoU!#${39wYAJh9}aSFTN!Smr@-7wqXgHKd$g zMuAmbUsvDf>rHfwVmCOAoK_0=9CtOOIglEG{9|jNB{sxlwY7mSu{H2djs|}IIB99P z`><5)&xvt;bQhgjKvoOMi7tW^*W1Bhm&B0y^aMufxZChU@!ohtTJ`YYM-)$9Hk;Mu z>Ad=SwZ1xQel&+GTL$y?{i!{GqJ{Fu;InEKG$)}VSZtQB8Gk@d0ggQ#LO9Jy7)B>=T`ijH)zv0SFrXscNss2V#-;~vI~>B^ z;narG3fV!W!UfHj+wmH^BkXBpCLTs?Wl01_?{TA0P^T3CIcC={HJ>f@>CWD8MLW5=4{);e#So5nzPVN=F+4pav-fa7G0^3{;s`b_K zWL5pWu7=HLY>PQgZw7+u{TY|ApNVy*@m1ZYkHLT{s{FbNBR6ew417Eqn$Wlgzxp(J z_WQjCzxvc^aQkzL+SUpNcGNlrOeT~-Ft~DUMd4-+_kn$pQKTE)c8UsH3j6}^Xk4!F z_0@U~uJH2YGzEP8$bdKZN4~347X-X<*KlmROttjwGAs?W?S`G*=8%HCd+(BhynFv- zm=pxLH7pfWb-n%uAInUTcq)=~>g{L{)iKEXLIiHSA$MP5H0LDS*+;iWVcV4Sv{}w) zi)sUZq=wt^q8`{z-|jO@vF}>`*A- zA6U2?lRYWtiHxPJxR@{oAFduq%>ixycuC_fw9ckKP|tsy&Ns8Y?04zBR(A~#WWw_@ zT;4K94qK-gXa6sRtU@jh3xCi|_;vgk#A$}oV?eg%QaG_UtAz&51dskf_z}Wgm0;KO zWcF*kaw4$_4*q+cP0NSZF-nZOcm?=mwb@jstMv-pfPbQ8r(LM6hswY1f$m#u8YJcm zpK@$ltxP~FkLe$U=^q434ZZNBv3C4$S3lF_e7sf+d_LwFYlS%{g>C=kdi=x9^sF_} zTnlQLNZ?HMYQCPtzOlB5B_^ZtFN=o=Ddkw%005V zb}!jNw;sHese#E<@2F)AevI<4B?1)uq}L+Ih3MzC4`;8MMb8uJ_J*S7k0S zTpupr*jC#L?W-_?S1Pbf`Ke>pn)l+Fr zwKd98Bl4`bD=#*2%jksgn&`eqy|rOW5b-a(lH*si?o{`N%etCYf3KEdRXM9;3%0aB znqzm2`})y4G;IZs8+ky?mGt|$1VpB^9XX>WoT*I=$nOD*AtX)}bK?xiTUuL2l=4I3 z1O4q_Gd+d1oM{d=pJ$WPdm^JlwE`i!&9+YG9T1%HenuG~=Vr~mUazLBbp^H?j{Xcz zKjw=U!*?Ds-0t=4=Y=1J?Hn#(C8GagK--Ta3Og{b3{deIP2U)KD zIT440?H1ITwKp7|$b>Y!#N<)9hl5SHCooEC)}}{^6tOljSKTGy|N1#~{m#mNThG3M zoa(e$e`&71ojyr)k9nF5+ukRhb`Q3v$;sgeZw+ZSGFS4keQPCb(6GsMjf~$U7q;r- zQ@360qtkDlY!{;t4s)ZG2U~^H%~Ek%&OQfQ$(sV)o~3pq#>&x%tWRprcJDOVk`03! z8fP}_&Im7>tMzPAeW^|s&H8Kv*)aDaj+hM#mN9Z`EDZ_4tT0E-S_Uzl)1mV8kICEr z-hT<6{?UC2+Mg4|gq#_w47tyhX;v#rB{r>;?ojFNXdl*K##uY~??PL-Vq^1(*k~wf zh?(=+RBq$h)7f%4Tc#RS@V<^~&+kqmtC3|nKU+b7Tj6*kLOtXEKS;Cfd?Y1&cK336 z-->nnUo#v6WLYDc5Z57q*AUFJ zE;5nqt-k=@njf~&8z0I1JFxBp1 zi_@y9el&|S5D+U-2WL=1rQIXnw>aHjRzk~zhmBp!ner3g@Zz$TddR}x%qva5csY65 z&27AR*=hO9)Z7L~=q)rmj+SF2iPQ-NC#A#9WW~JOc?MmH(QXokLn++t&(5N@>vwId z;e7X)b^WASFRJrdGY#fAvQDFf*1LDHtD~K}$aH&(`{*$^*H&_0(UBrs<7_kBJ;}*y zKYurQ`pc78^H}?HqIrxNstlBILmM*F8CAPNU z?7{JmqtP=Qsa#gK|5gCma=4z{9o?>Jt{ha$K>ir?PVfMP9lo^)gbWTsP7?X|$@9Ou zB=YZ0K>Jrp=isv=sc~yb#v(QVL1dC5z?SX~h81qeUGBui0$IWkl!3c^D1!h%aOUF; zXYcwr?gH9d3X~EkKso6r_e6(Oa4#gF-~l7|e}xFBJ=qNvm#lR-sF;|Gc=lrQ*V}s) zedgqx+MlD|uc{TJ#yCCI;Qb0JtSrj2?QNw5`m-Z3*7w0AmasUZyZFA5sR+E3pW63@ zzqV}Pqf(tTi|K5>UhV1v7vd*$ucW*Syp@?Sc=Q-dv1HUApy0KIzsXd;$1A4jA0f=` zD9S#%VQ!M5Ow~pjVLL=kq~jKpYpY7+mi-M30!$ApxFfLNz#(uR23&e;qiB4+&J4sM z8W#n_Eu5`tQpUEBmGzFQXc9S;JaY5uXOI~qIPP16e^~cMmSQUR`Kbp2;51bxhaMDz zSC|>?!Gp%;@NmL<%a1uJZvn;6}z9kKUA59q6fORc05=jZCh-`*Ym4 zBr}Y=5j^GC9fdOF)@1OSX;vFkXJXR6nEdv>OTjv^X8Us@9mF{2!s#hQ=qai!=4lF! z;k!FYBjM!bgdAznwk8Xz4KZkvl5bZeOL;U_&D@Cc`=Xi7&*$rEGw-p6l}EN5w5aYK z>>5~>g0>9SFb3NzmGp_kG+Gi}Gs!^Z^72XVe|JrozoK&@kl8ev&m>!&>)`b*{lLl;XwY*doPg;c5k7l>-&!Qq*j}-*})pdV6&Me0ojtM zkz$X-OD)41ZNg^1em8mB)qvcAgSV*~5PTgulbTxE@efJ^&WwO>LAi;8a5IBo)PoVS zCo#$vVZaZ9{|zaEkcHPXvMlm?^<}o+REz4{{LAGkQ0>PB$?}eSR|8%GBr9CNv8^~Y z+8^4pur#=J0{(Cw3iZ3cCNH{{i+6u@y8I&9a=~iJgjUY*kcJH@Ar$q-cMn9N_O}wM zGCYn6Nvsgr(`gGQSHcY3XZXaWc-@Ane3bixlg~DZw zyzV4h7Bn{r4z{&Tg~^(Sxwb?O{Kd=3vp=51+M3&+6a9{YVh1zl4ziBsut`7JRxSq~ z?5h`(OTrm9I8TwuGVBVBP8JCqmbA9dZ`xd3#M0k*7o)65Wlt@nN00oSmoVt=0q>g_ z@0OFEL~@g^< z5dlI*3kg*#_#fts>pp+&rn;ZM&Pa7*ceB=Bdxy5QQG^Gs_TJsi{uZ+0UnP{%J;I(+CR>`L zYf09Ty(f&^`Nf=)&&5P7R$1Whks6$_JbU{57neZ%`7fPvCJDsBI2ps4b#hup)&kyD zTC%UXx0}I8cxVK{6BvWCVHC-2m5XS1Ku)W@pr6_$K3O!^o7EC@XF6LSI|t@o&rxz< z!2*t*1G7Z?9bimocp+*8v|)MdE(jFg@sE2z@hSds2pBce8JI5ih4)ZNqnIf<)DY}t znDJq#*Tfar*L~5Ba^i^6PE!r>+!x-=cmS^8m^Z7%yqbS+mh;OVYIN=#r6e@&>Clat~P~0nKr&-%Z*Uki@YOP* zY`BSGyt$#|uqQEE{IwI%MbobsrAOoO@JE(zy6?7xaB=nhI^J+ub~N5Sx?OcHXEZ*L ze{374wFu_oDQgGMD7Ur9fus2JYVxw!(I1dMnj3mCgI^%nx?FwzdZ=|9*0S!f%3HQT`muG) z+HevGOB^+PZfiz)UJ(>LNvEaJ^(50Rjl32LG1F9+1!6VfmUHU?P?Rfz2K&lmAR6#2 zU70bhBLqS1h2s4>=(PH>Se=~Vd)_aH;;oEF`R-!C#q9gZ>1=rxOsYqBRLaeC&v5Tj zXSlMYYI@H)wrX-BbTFg`FPZ><23{1CIi&a8qXctxGhIGmwP5WSdq^6a8k|LygI)+YvMC`+sXX)X5H)#a9^d& zC-Ms)H}c8~Q_}ZZnW?EHHC4Qpp+!xo?9&fXm3^9G%|@^ou%_H?6sF(`3TuQZ;k1T( zD8ZrYii}P0Q8VFf%_R$-7*74Cu9kdn7Wl#}t1qkNv|0DfY*_?j_jvQ2+?;XuK=R17 z)dthH6d@KQ!lU6Ic}X3I^4d-6q$#f{7*q)GoGEy)ScWhYKs)UpVg{QS4l#$4I-bNB z-XUp+sD+E`bUELo(AR9nEbSPz^(N!Gs8$!N#k87TpEm1F$fDcrx|9>_p6-yccFha^ zLXv2Rp6Fxyyh_TjC--LjljA&k*e{f(!F3p{U6o8SSo4+$)DS6^)0IFCHO2>~IIt@r z+)dVK-S*UvCoYTs%m5T%(jA}1h($E?plq^U1YM& z-h1@1byh%V7T8b(x2O0%)*|$H6FLh{@5gvG@?)|ZDQeIbP*DfO)YM8SYfCm0^mcP_ zCy^(xud#AM^#oZvI7=5uc3`f?`#Fx@F0Whd@%#P29<44bP`*vbKmW)S)b2U&s=-Al zsDlNJ+*4MB1;~hq0%&V0S`MryxefR(`A$x%Sm>HybD(t!GQ_s&V?xRSSM+wX58-8R z4%QPIYwRU#!gww8!43I%J)?A~qs7x{^L;+8zOCoqz6BqF$LrH~4}VwvKeSIjc=pIu zAEH0$r=m5y)C^v3!D>dr0r>UBc}({|Kb`#k^hpe;vHdxLjmjY=cH(4R^RfWQy`6-5 z4^K0iSjw`Qw|tR3t!HG?x^T7PJ)7>{$g(t zBlifT4aNs7g?AkSa`>NxUxjpK+DV*0&q(Y25qjUn|wApYb)$0GM@6ED0U44a@y1iO1q1PUVlg;(?QX!vSY&89#4lwteM{lN+Br|jJ&luXm- z&i#c8IJQSG1rxowKd_&$sa|<4mB8zQcrSsM3gQt3jxZr9rEYVIw898gg5WRM!eC8p zK&xGG(P^P}%-d2Yc<&iwIOXw_$~LoU^>sZ%a#~*(3s_U{Jcer1_o|h4g9CBLR+nJL zj;a>;AO2QtGa+Z5|LVrS&wtH`e+9#muI7%yXjW?~6$8(=U|}oR&0t|`ut~%f7$xen z6N!Z{dPufAkG|y5v}?LrB1&2?bhk$u+v6?SMFG20edIKD`0TO!wgKK7xR}^Fp=oV$ zkeeZ3b-2CUfHlqS1xup3^fm5<;5_XiJmY~3qw7Rw$Drb zbAq|u(QaOzHp?Zd_0`Ed(Ca2I&zzHXa!+%}a&}!^&6f0WD01Zb$cgZo5Ev(5K;R#V zQB|f+?mT*=YX!cbl3fysA{{Vef|Ti%?(HH?x|cu29!QNfOk-7%)>?`L2t{O+p-*`5 zGwA7kFUi$ubAFEAEj%J5$8~o;oF^Xcm+nqC+s*AQBH1$S2_MC@J2S!Xk!6Va*|sud z&E9_a?5gI6&pE28U>RHx)|pFqiMZh*Jj~vW(cvZv&|&&AV-1*ax$yQYs^S47=63M7 z$HhHzd9~Oy%j(N~SzR`Z^V@%IzD%zc%|G*hs%8PdUj^2&M8?KFufqe%P}~@FtJma= z0Ta%WQp_gu5PL0AKiQ|1iq)KGrrnN7Su;t6wwgUe{iMIMVesL>mghid6o8muca2p# z7l1h0+D#7|DSZb{{fw7gh5BW{Gh`5ke2F zrX-InU=N%$fuO_EQqj%xArF=&U<(WOJoYv-*!wh;I`sqwifP(pxWH)>E>tO6KD?n( zIJ z>D9OCY(1Tw&!_Y2W%cc9y>7mpoHjAtf1JsO;4b!4`a>ok`U^OAl}9t{H$4bgngah) z>;Q$ldpi>+wIGBjr_KXkOQFFX*9E&C!p-D);9Hg56WKTO8XSj-l;Go)!9vFS88;o! zmZ_%41Ue4ReplT-yy2n0fH7EeOM|8+(6AbD3aLU=kvs+e(~GzN%t|%e+FEUmlWI1s zHn1E6L3p`BZn&F+8=HKIePhm$q7iq;$S#1#5!J@48NV67WAkf%v)dmoVGz zsqd=Vxr}kFq=SR&2MlJg~+KLefH|PPJ%jJ&t*u2rqib<&;d{znr}O&%GMGci1G`pQ9EDyHquk#^Jg`>}|;ne#i%Hn4#YFAuuWljcy{qU+rYbl{DHJ!R<9^k(#0hkN27Ui7L4OZ} zDn8s6;Y#c)xk7So`~tY$_c!lOzZ*jRoDIBp2KX8@uv#szzOLteAl2JFmoU5TnGTuV zu7$T-KtekMu_M<`L6i>+MG*F+rbw1WLiLQdNPK?fjf^@V5y_EJrEp|aS+`OukVjow zVapXy!o3W8zr!7ap3J_YQuz2xD6%0GV3Whk8Ko*mM`@bn9IW&P{@69eI@A@B)dLkA ze)$~hKqo}_^pPvRWl{xp8Hc|_jfKsys*>!D`m=*-b*rX-CZSq&ZG?nJaj!*!TWT~f z$RQc*Ww29th(gkp*H0d`?7;$oqjsvOBq$`|Vn(U-+4Yv&q||186@tVZ{wc_>rMj2$ z=pTdd=_CIbgyRCt-dH(_)89FxJg;9&etUoaDR}*&`xLZ4$36uT`6!7n4v;!UY9(Tr zPgb&b@~gLt!yBannXyj+Hxo%}&cxO{a%5uQXVCGxA-lVn{AAUH5bBv}=VA5j4l>_6 z-zrG9`BpwN7IXK{5HTNKVivF|5Zmx|9 zxi}Fwiq=xrSp?JXUb-&yJEwk}bfF=dmXsUjqN_6oi=@POX|ys}tHFkbvuQzLi%Thp zkF@HFjG1gqrRo~&Z640*->cJQb#V&!KEFu9tl~`_*L>d{L@q>4vzUVBz^0n>z}epU zFw!4|?6xZJT6!OaeIZve;$e4FHFfORQl zrS3isn%A0Wsf8$#fD1PfeisCIE>>w~bGd;%fwAHnA&8)4-Q-)?auK3;;MtE-^P^4E zSJV0Cv;rMn&I2tE_vxwfK5!nvfet0%(oHVgN@kw?k!z_T0XZ;|n6X;m*nD2a?DI!A zALq7OC-ZR>u- zc5=fXnRo+#ymi~${&@Q&18)HKhyO8MG2LKmHvC5^T`;Q`?55}5Tl^Nm2a4wtpL#N5 zGm4T=C>%PI2RF5%k;f|<<(DDXy+1=%@oIVfW!9!_3Ut6GT!I|$-o2guz7hv^zy=E# zMNc~k0BUiz5W6}V2Wy=P3-;;P$+IrC?>4nROQrTXt2x&#)j~Ilg%l;AlirweF<7wP z#tw#__5{XeO1Qyj#SpRwwF-&g*^X{Txy^p9s+09>{_V6k5cyz)D#79Qbh$90O8;?V z&|Ir^*a?So{09_*3!}El9$cxQc-3|p{(F=(=8B$$O(;ASGw zB-6Fbffac9YVu2GfL}Vj?7t)pFw&fA!li?HODIK5o)V)by)E>-Z%wr|%2Fe;tLmQ2 zgu&$;K2Q#<0G#P;eX*Wj_6llv>?2dtTLQn+*>V}OlXd$jW?9w% zbH&mCOp_ul8gGemA>_) z{{w%QZSP#kNPFSci~vDFzP<;Opt)Er7OSeIVISyOd7vbgd$zlp#{6Zb!FJq-k34ln zC72H1`L&3Vfzw!2=U7Z642+|PyiV#gmY@~mZs#|H*IDrrC_Lc?hO<>e!ym4|SSnlE ziR3k>B(Lby(thK)k1`<@Q|ZNQwVY3@v-v;s^Bsy#d*`6L1AU01Qy_oj8fpmhOT)UR z;I<*6bg$?X)6Z94*T}1!t`P{&wPr>;B`0_s*a=4cyz;&(8f+mCCu@82w<|K*Ekf|4 zteM(Al>vu6O0A4Kxy$+4YSCO*>#MWo`~310|NjBXe3@Yk@BH#ra@#OQD01XlXcf`H zFa~@;c&!jqE(aax&CAK>u0O+V-uk?SdXqC{UBU;<>?&$CEy6z*?&07mNmpL1SsT0Y z!F$(os}kZ_k5UO;(|7|-azm0^Ev|OZy4@P7+(Rp*d4b50YaZhv{44w=M4tjLlF=~k zjH%wor>=+k@o9#KimGRg;l>?Pw)k3eX379_1)CTq{~ONgcrs%cBBV{d3odiAI(YD- zS3?KF`MO$ECyQD0Jw$jdn(uKBv24C4kUWNbs!+iQA~m`tiA9PKo5?7TNuSU0q|fJ+ z`pMdGEttc+2@e)Ra$T-#xwn^|3Mxtzc$Hk`!?k)cV|cAh;o!3-JIx?QN+WnRBgwhm z%>-Y7>Mg48^X2N>x|xQa=z&1XyMVrSXS{3n=P;n<@X=#XVI`zLaLD1?D{BUe4D~nB zlduO73Sv!DE(Ep0X-pD?aN^fCi}fV1q3ON>2sX%8f9QO;=N{O+hrCU^97)y4%Nt zT#<=J1W9V5*@1QzZ)QAW!SMPmo9T6R(M+4gS#ul<>z(f7TG;T>BadAb(;~kyIHuHZ z-@4h`w@z1ZI(w^Y?7eeo4&ZT?bB(ZDMQ9EN`hk1IgBfG~+uMOTe5xkGfH}@;NWgRd zX+qaqdXkG~4OZ(RLs$0@%Z9Fj=l+IIumT33NNGXww{S`j!wI4uAZ9?(IZ;5FhiNo@7b$=dG0kgYKPX@m(z<%A$y5>r6^ z!aWSmvkv;Pp2S$bh_kj^+Qqj?s$QEHvXMFV(Wzc~nkB7xd#8iCBP_0Xf$)*Lqf#mp zw8vtHnrhRPI&5`Mq=R0*a>GowLpB*^wol-cJ17(g`f8Lm;z0&f!fj=N%MEnQx*}sa zAtKQ8rp!cgLYL9O6u6C1I;q)+6U}0AU9IQSpy1+fyG&-NJKg;=LzhD-A@3n$FrtR} z;iDzB!9F?UcFZEl+r8fw$F{W+#_Idh3p`b6X^bjDNfhp3XB4SWH9dh*%`_8cYayMI z%U$KYf|V|=HxUvAIQntX<=uvftM9Y*`E?j5_V-gr?e33m$aHoPtkJckbAyjWma-tWP~Kx!NK#IuDmD(0>vDiv<|jIZ)OCJ zdHjCr<<)Y&X)6390l-#5&)fscc2T$GNIh|5P%0)_h;M|Qn&6ZWhB?2VKhnbGbCY|l_c?I#;=Fp z*0XOQr#h){P`ZbQ`cNfF?_3|aBpE*I*d{nJ}fA%HBM8n|WS7f0EJ6BWp>i0=2Zx z2qvMNpvU+SCbYM);Q^7M7}1j$tuLwxmO)(Lf?R|VyqKRdk#p0-zJ(xQcifTuCIa`! z_cg7%;f}bEJGONVMyXlbvJL;BC3%w7?(_Mh>kPYdmq}+BDJCIk6At8vC5XLYse%EO7F~ng)C)4JD(^qK&hmRlo6|`nUJE9Prj$BUnoKbwIZ+Q&R|z&Y z+-IB7ec%a=nPwqd`f}axwjDIhcsC>IlK1ntP4#89oHk(^_d#*Kx^sLKd+R-J42o)* z30i`5o5KW~2yb5w$o4NECQrLjmR}s0ucuo^Sv171#)0RvNNGY84wsb(X~RtncH<3& zw4T7esZ|g%-JlL`N$=uWk3X#hHt5^zy86Ca^aiI(WRKjFIy|o%iW_;jDzuipxlM`R zdRq6Gt`c>WSMfT^t1WaFnh+`-J{+TK1q-D{mB1DW_fP`4z>^uPrbyPpKzS`d$<|jq z_E83-QEs~H)n;9ttrn|k=-BSo`kFII?H=R~sichd*Ff?pY+YOMaNF+?)1$@-eI~=~ zZ5*uY^?zI}+SmVil7U5wHF!=8kq%-3t+^(W6$GRX_Y!KMmJ}jdrd7Td>WNH*mq`7} zcADEv!FAaq_7-HPd8=vjeLk%gs~=l(ybsRd+@1Tb@#YTe+!kzhPd|3f$Vwix@1e=y z1YTL%Pa8#}%r`C)LYwg&L_#pNlwD(jVc5-Hq?0{ZdmgOiP$#=9G@9n6aHqAAVvFkv z$2{%|OtYB%UrP*GeVeT>gPd)dSg|{&!yVU9+!*YmR3^|Ril{XTJRC$t&CsP!zfRu# z^&|$>-u|431*xFK1N5P`7J@QXhVeYyM1j@=Ph_mZ$yw`nE16a)JniFIyx1V+*Yyna zXMS>4U2d+{pt(QFYms|21+*v-HwG=@JOGcR6g@zRJq)!8(dkmD&o^#T#WhOlqzXd7 zS|gm2WD9=7B*exKf-lh9SYGOLK($<%F^E_}CSb|Hq3$>JTwFv;kvxJbIXc%eJ^kVD zu2kgb9^}5M&u&Rc+*j`*$95Jm>*oi6_@bE_JtPt~3nVCsK7XA2-eK0cCC1;ka0)Ul ztZ+xLFmu2eWk!{Y0E5kxa2`FGQNU(~6;xx?!Hh($P2?HlACCswd`CvMSzj%JQOJGy zg$`2K?yPqW`wH<3c?%eMs+GaZ5P(x+E(78q!r;%WNs-?tFJ5-Z*55l-Z+}jBv)pP< zxW_&w6$5XtNV2uRi@bE}R-+pTjp;eg(t?|%x0E;V#7CKB&E^|Q^N6OExa}9paD3e( zEa3PC;*M=uA%+S;Js?D4HJCms^LP+mf0(ocf48Ysr;gbEoZ$L{yHLvM-BB8}O|;#z z1&I*+z4Qz#(Oe5~cEt__4p(LrUVtNbge5)F-UFyW@s>u^!?SgI>ljR*-m&jzV@oi7 zhRZm%ax+dt*bq$G)EvA*8Kzj1Bqy)C0cp2x`8tWi1tA*RQSQRcl3EBsixPPTdl??R z%t^UAGNZujZE4IhyPf7_+N|MW+jSZ*X9PNZ(>A-F&6lUE#k89JXckjnp>sD_BFp5S z@UD8i!#dL_?(Wma?kF4U_aqoh8nx{%J%-Mx-F`Rus|$!-Op?En0Wq(+wiI(i_x(S* zMg(`mbcsSru!T^kjWpJBAuY@GkX?bX5(=a6s@9gWE$%U#^C;cpSm=9O=A6Mro(G6} zY5m-#&%HaaBDEAx+!(UJ65i&3KNB0xF~+K?%7ohb@HwhiA5tk`2;rA2$Xa zH6(zWWK1ENBK*T@aP^+#&UAh1wA3xQd`fC*i`{6oa=7%UuDPU=6eLUNZ|7i!%s^y} zFG!jR#+Lk05NEud@te!r9MNU7IXUei!RBncRQbg{_+3NF+=V8&iM&UTJ)R^o9OQ)e z1v_RCMl1Au6Q&uI{^>7KrEh;uEZ|2J=m=n8jIM-| z$KXl}DTBc=1ipe0j>3DE13Uz=?&~;mbh^u3)|?rloxw4!YXy-bQ`GHcC}T{64GniM z1-2C2<@QZ-tf?!qZ%p-s(20a=CJw&I#cT!3`}gMhVm5(YtXIqCYIFJTCA`*?b9D2T z)!$%-HXC@mAv{}QnXfl)2AA~+p7q^^^Yn7|_3L_eT{V}dUxHqyeYRY}!n)_*Q{ZjZ zbf+1)k{mmQD3V%;hr78NV~`JCC{`{77Vagl=XiUm)fE}jV2GFm0|gfc zgBsm{GU#z4&bt#jH{BKR4t?FMmI=_^eNm70>1On9Vb^R}AMrS#ohDXRh@TUZL*2OTf^9` zI<)~3F#IKp^Pp|enc<2fl*_ZIzPCR|xtt(~)RZGg(!DDVDr6;N+7_Ww3pX*?-!X)n zAVc#YP6lkr$zx3b;;h~&sDNPBWvtSDaa@VfJC~=I$ zdWF$;3s?jk^iQp#f3GfQ7pGN&5p$1!w1mBNk1<;-)21^JH-?0@Rn(t?Z?mvU)kfBg z=M4?)k+a5#fEtAfY8RKANz45HtOGkg!p-!uRzwg=tWZ*AHhy>#`-alAg+g0fV-BAg zz{?pK0_f!iG;X%6zExjVKW0JUsO0ECMz4o=*t@#J2agYgPalIeD=z);R+(DE3#(}a z7$)6q`RdoGHn%?~a#+S_#qN=o;M1=RSAG*$v3`zlQ+d{O`zVknGYV%RCIstKD!ZWr zFJmOydpq@W)1&owbpj4;kA*F_H6wqJwmY((au#dM2%d86{1T@moUi3IcJT`QC(oLG znEc+cT)6YKzb9EPz#dUVF6^KSt*E)BW%EnnUWVsuhuWxIfwBGziM*CIaoGit zZ@i*$L!@m%7Cmg*HbMWLV`|;Ic%aNvj?E30F$SB-mMs-_@V)d5=)B6BBm$_`kK z8?q+BYCyW?V00lq?fAlB2SO@N%jtY?GlQ9?0iE{+#u}#?!&ic}X zd59*Cd;{&C{I2?3qKzY5z_FFu>Hq=R!VBBZ$@YL-V+#H8f8B)j$N$YpSaVworLD&f zfDouwa!pE9i2NO-r-$>bup=!xoz%h>Nw>MOmwVO`*yG2?tGUIh`1jw<$yv2nU0pr| z%!PX(1xRYR{!xo5y4Se;q7Hx90#M5%BUY@|;xUMc%Kf*-uBbz?= zu#aN;f(48rDz!!g(B&HEQ8B9`kS9391U~m_w$HQXjKC`-)LI9%1_{n7;=C1^@ayj) zRAnUu6Oy!(PMH`QzRbQd+lkQVu3I^TTZ5-Qu4r>H`(912SLe|zaS6ld9!|Dl96+fF zg&x~HDy;*A8qI4=ULXNvkL)c`H2v%Ch#y!PMzAH6Fo=Va7$XB?zZO$sR5*U zusQf}V~2W~zQ7p$Tbm82h3QvKFK6dCD}GX4&7;LrxRvp=0iUlH(Q0Y1i4ykCJ+pnw zru}6l$=|$(9bFZT3{;V5w7ZxJt#ho}>vxl19ojd?s{NXpzrh)Bt^^@Y9R)FeVVUqx z39A5@9S+a+v+!>ggIrWR?$82%(&-K|(c5ava zN_S$#>|7vp9m1 zp?L3v@7}hMEMJmwLQ7=BLk&@MJmwUQdqEFW?##d*_SSH0%c~U)`j!yv2Ery|YMI$M z_~I`Yrt!sJPcmQ{IdUEo>G;5unA%997=0KYIM~;4L-4RQc16ZM2jF7~^pf?iPB7le zxXtr)wQLsCYC1ccRhNtAdb5fnH}2sm=YYMrXZzsJa`3Q`+jC0;;8li`=4i1PuX*T9 zr!gJ>?6O2IyxX72ED@GlT{1KE#vYk5g>j5Gp6w ze&N9~zsRxorq)te>5Tn=vBlqvD3U_%?;`vz2xf&fIw($=!dJeM4*iKVdzr} zkm1?(V`Es{DK}W(O?3`_`)tuu>;ekw9a?_Oee>|-M2;tN45b=Fh>ruMM9c8aaDqNV z$v%9ZeE8#D$y!E%yZ`2ol#5~tD&_Llq#Q)XI~`?ws3IQkt;9JbtGU<+~%M# z;(?Egu6a8gOi{2!@38WfDg$gWlspFAQiO|Oc9q}eMd4#@LmQUxao>1QYj1L()&zWP zDPvA^F2;ad60K=DI=lXEdYVQJD7hj;W!FOkq0ylmi5xAA(jrbSUefsC%i%3uHq-0s zaXvqdTbOgrir7#mL7?ZGnXg_Loyqgg<1AbpL)A{*)T`jBW?4Q%Cb!Zw3GprAr z#_qWHtKA&Nt{yI645ksRQNZLuU^B>Dj36c91Ztvm^SPTpbxSv&liZNBmc(f4w=Ws6 zSK9Cr4e`BAWO3LHu{pakV+~7^AzQU(L!A?N=HqGx{JNe^XYe|oRj19>$wPHYxF=M~ zJcdHYpi`2E^-zmNzP3alLLi5PfpoedTmzZzhEO$AR5EAA#Bzj2(9EYvFH{K)c9hqc zvd3v_`-lPEi<)eg}w|mZ;Te(g8 zR43K>3EX**O5JzkIhqW2Jzs9m6?Iq9Q{{be{RdW^OfGp#8F}qQDHD`dkqS!UvL@lQQIaJhV^J=fVff zQYp1V8Dbb1N6Qo`!$9C~Abc1SjGYGj&jGOySt900rjMhK>@ARL3c8Pw+uW*Vrm(-O(s2Q2ei%g zq?4d+*w#g`xuerTZEM4bB0iDsfu3}*m%P0Dc1PM38Ev7|w7Qk>)3aJz?O{=Y zXUug$ip_8zp;}9>j3$<{{4sx5V&A~>31>)%ECnw%XUro53de;>UeCV4-@%o`e>J~+ z7_H7X#qOaWE8-2-Fb1tQmIlZj*k*yf#^4_EoN1z`zqsYFr@!Qs!;p%H32mL};TGzN zGsS6%7L;%k!(Q`XpzBJEHJ~syVG3dak~QoA$3C(SO`I5NW{c|Ue0g#<3&Po=vkvZA z<$J|BvkrmektdxMvpyIqBfLi4K&G*<`zuZQ)2dwGTW)_&k=hbsHR;+p@y#aI$cLf* z3Aa^%-qsTtOFK!8?|~7vH@e?kTtsoJ;4*&d6!WrKo?IhG(A9c95A@gHdX5ecHlesj z+*9Jr3I1+9$rO|Kkdf=N2pnY9Vo%nH|DTh5diud_JbUVR$LYp1g9b@b+o6@Cp^{QF zT4rL<-$GAw4Fm5OY&Xen%6298U1PXygXk*KrK|mNbqNo>ysTiQi)+kL_V@&TqVe3z ztIK9t!A&d{)!BTpZh9b)z3rCpf8CQEGP;+m#nlF0)XVr<65eg_gfV!xR!C1HvAL1K zjlv%~$G3g?%JpquI=!IVz*fOHX_wNA5?XUXgxBn~uSSMj7#=Mg7~=H=#vEHL)Y)27 zyLCh!j(S`HXcBn5%ox0PF!>6#Z45pXdF*K;Wdlw;Wox8E$5%X@HcGgsA3nPZzaSDUDVYL7*K z7t^jJ!A5F3B{H+_`R(g-#uk?JKE20{!Jsi7km67y;JYnaS~hAzH!}tJ_Hy#t0epMu zXk}`kR_K}=C2gB7y61g19I=|bW~Fj~Z@rxjQ(O&aW__VCiU6b~<+WC{A308|FN@X5 z8LC2GKk;hDUjx1VzFID4)k*Vhk%$q!O_nf}?vd^tDTb>`V*Y#28hgNKjPIXP_zN|c zwayt-dhVruo@b?gEOMZ8$;rKQYHY1Qi)@*(cy9xtzFK&+(n?U3O#*N)F40SC=wP#Yg>FwQJMX&9JbL0rVIFPJzlVgSmek-u zGM)o9@%f|cue!L2>3|O@(UCV9W$^i6t5#whYGi zfsV)4p7-~xSz`QmQJtKws|~you@YprqcWzhJG%VJMr0*P^XADvdVnZdKv0F_*;xC= zj?l1zv2H`(n94b6Pgmu(r9BNN9s`FJwXuYglAZIt-3&sN4)IfY0%PqyqMfERtk>?d z4g3J@SH141Wbk@Mgh&BuIKSMiE>34_@INmv=hG;lc+O69bTtQt*gf!`z8(xp;jA{< z=Hos8*!s)^aw=B0gK6+ah5bDVfAoFV_wM?m?^Av6V2L<0nlZ+l=2;1$l=j(H_iqI7 zwvdI=v^{`y1jdr3f+NO=AyLS~>ZZB6*V^7^r+W0f&fVDi^s0gI@Ea)TdKRc>Zy%+! z&^@*MOloX7$-JuffMctfR^gNh<_jfn`OX**W53ko>5Iv8r}FQh_&!gDf3g+^RwtY! zjzZLL1$t0$^0c>|EG(x11Q=gvRQK3K!q>x=0r|#T8aIYNw#_bPm({HLvPKNVzt>f- z((#x`-tGl`k{~fY0QF(3)7bL#_wTe?)QRJ<=gU7A>w<%T)|REi2PATd!B^VIA|1?E&&U zq5LtVR+Z#|F%uTaLlNdIQh7|nr8tWBI%mLA(ApZyg~Rh`47|;h38o9qM)$Up#bG?4 ze!kEs2&uqymPa|aCx8-M(6}J_5 z4>`8WD``NmY#Cy4A)P4;$Ewp>`Tp0aR<=J!eO@f8Xk)<6-ut`?nIE|j9wl5ctqitx zxK_FXqdf!^=V7>Oez(tw;7yD>%)Dr>7S)g0eDhCS5A%mWG8zi*k8f{H9G(I39&&6= zYRdkWXj5d^-gyuS)knm z%{zDEVty|(6Rt0}+h-#m9TyNeGW|Heof@oolQTMn88lGlZ%duDHssCmB7065=fc5$WbM4SWCuH&n9+ain`2D^RELL`E3`*aW@@*0t%|LtMO%OYr)5(?HZh6<5p!Z)rA0XkZS;LwSVtM;!RvBs}i#2N(2tgPXk z8;z>XuwGP>(bd~YuQ1Du5f(1TWXHyiz@Az&Iw532;BFb;UKE-(Yk1OK5hAY8cq`)_ zOKWq!|6VO-->S3KCI=}$w&w!&*gNzR6{5sCi3-T+wlQfXl3g!9PCj)> z=a)`%|EE;anJKV&nsU?8V;IB+qeM!n%313n7Oh@$e@3}?JBJp2v^gSV2qg}!_Tue~ ztJ?eb?CaO{?7C_$PrqCb>+!=dUbrXx*md6E*~fOa1q+;QoI2sAM$90a)6f6;qVIA24PZobGUbDWxh`^zaSQUJm`8n*@>wdCU- z_fbkd!2*u0(y|A=iKv(q2cjV=3;UdsK=r?VidKEvpA+5r+FI*UKEc5mO5hjIJ{}mZ zhMPGYiNO~c9bIJ;3emVbG#>M)?o%A;kX7bDaUNBd&qF@g%$??_a^~FX{b`qQbK^@* z53RZnA49BaIQ0k75#k3Er{Iu6P?n|6AD_C}r;krFvQH9D55e{vI2EKzl^lXbRc@ZH zx0yU3q^!E2$p zun$zO^)@xw^*B&A>V!q7WGz+%g^BecZ^Jjkix^kN>D%dSjhxGyc`tMPU|?qM`R!k} z%>y$Fo;C8p0d0-1s5q@H>ekR?!biOR5Y^MyDF#)h5Xm0PKio|>DaMdmqCmPS*h1Ds z(01H5G3*Ps11JD)G-m3kQXYxk6fbSo47IuJPq@6%`=Ov7naGg&i&y>OXB zug_jgUUa}n&m0(s7b##QW^2vB;gZhKE4*Ax3!zI6y@tCfznhDeRp|X-CQbfIpRyh1|+RS_ZbhiFByRN>k z7QH&Dx3jcX=A+rW=a=uDhRaCU(m?pgV@IiM2y3ruFnHKd10hp}R=#^RdEP-Ky>k&= zl2A#c)?6~<@}Ln4mWx?UOK4?p6T^ruLk+>6#3-DEK>#eOwqqsXd5RE;RMl8UcG`TOPpicYZa?&PcRq*`L8^Nt zyE?x6EI46|gJp~%u(etSfvp6G6k%-%uc^!-M*~OLfq8Kq;UvrpN6Hw%m`6P-YpIPE zvPin9w~Jxs-$BrBPh`yK6566vDVv|Q#q%E-0q~|dySi?w)pCA$I)Cuwtaoe=kem(W zkK78=kP3z&A-3c#FCPoDw{biC`RU|i=L3IsIv74~qji!7^ijHjsnVR6Y+&f^We|sZ zzz_BXMv2xeM&0mnIk+2%j+H_tW`Mu0o8?(GoneY*84x@@a*vXG2PKkDJ6YV|;m6K8 zSrWiEwSa(F3xxNWgjuI#yWt+tiJDNZopyXHYRiZev|zhoZ!-mIG@i(quTA*`{(A@^ zN=?4v9gRCVwfZqzR^OWSdcN9h_VTWay4KwdJdkUh;a7WW7`chpk_7{GhSjWvvq!qn zOc=KpFDGxhHVK!z@lC2t0>o=={fRnJOGYvHr4Pg1818I1Aw8J-@NE`z(s?UI& zP*S{)@mG0o8k;Vfb@R{l^73r{z}o2@hs?SH^-OlE&FHWR1ZnF;j7$ds6_< zbEW`b8C+||TxI|YaW$1jn+Ksr?rm();U36w`2u528d2LSaq z?r3%Xbv|266N+58uh=``{q;GkuQ+_x$km$k(_*GIGE{~-9aHGH|MjRo9N6PD)dzuy z!YJv`WKkt*B`9{{muS}rH<89;%uG`I5~FSZ2)YTTFE!5NDy}5_Uq6py{C5NAP))Bk zo6spvw`{-;_w4?^KgRr=b!N*(ApF=lD<&xm`uSZ;xb1_y11w9XS4OG8VJ4Xrv|5$@SbIQ4O7p?b5g{)W=VFuya(J-1y;L(V#q zxnWQGvGt5A=2v3d42P{LvFMaN$!alv^I`I`n?-k9FkYr+(M8LpXqoDG%MFs02w1Bv zSo;ZgGdM&uRQvG+#*~f|%zO(;4{b2Ut2sUx;tfXHjg?#dU-i9NR;R14n~=}^(b|c< z6E0EN*`b{{eD=tFS4~OazH)ZM$A(1U8736;`q_u5UO!7_du0u=pVCgY7yAXd^5%qS4dg!Pj5$C zx>XBZp~p6%G?+ZamUW5&Zri?|Ieh9wiO+M2tK5JGp^S0#%z{bPSX1$;D*JPnhr1|% z`w$3?b@d~_hpZ*vf_FwUMoy19`_?SMx-4e1>gya?=zQHOp;qoO4XM?|dNsW|*``l{ zv@w)Hl+gj2FHi}VNfHZg3xhG)7x znK7s{q9#<<*2?_;Ks^5OS3TfWUTsdVtBYB4Hj5ar9a{!-z_;Dg+%-1LX&VgWk3kg$ zwc%tpxE>Taq3T{DW;**4HE@4S-gOi;&mGc=cS(vGuYlNQ-~^vF{_tQ~3d2F%T^DT=`6$6I|7h@}IJ@PJrSfDwY!+DaxJjvMet6-E19 zZlJEWm*MG}VfWdS8EYAWueW5i&^>c~z*rq#)96!0chT%!U&6`iE-7@}u{!rk_Os|k z#_ED)96Jjo6bamPcn@$`RA&;)z5e7`^iMfSC|w((jZ-p3J87h{57IE`ZfJ0ZCxb8J zUS6zYfp9p|np@gyIl5TSHk<2e(Oj>tHeuJ1AmU$m6~{?XMJMZ!x@v(v3Ke+fDQ>ym zraVoBUF|!FFGR)Q9?*N!RcA8dMbS0%$HG=QMiv$ z+T|FU;mM-8n$Bm{X*2(}oUN;`!Y;n`0T3UNdc!;FU7h6;)EnUf#-Pqt@*w>MpJE*5*6=^>q0Yo~ z`OQlgQ}K;62A9NCM7$?$+GawBd_yu;s$kpOM3##@K)d0JjOj7g6T)gkbNYJQF;_VH zapkyf*&mmyhpMuZ@RmlB0+{!#v#oR7S4S$M$U|$S!3iyxe*nK^KPG z8Kol}HMSS9t?FzsKfgNLwcd1h0Hre3?md(*H#w_Kq^pDHA3ZBYRM5sxRE?1vRW<@) zoGKr`n|%5!nvrgQPPopLQ=%Pk{u>A-VI(QX!sqtB}IbB~bt5cBoK*gqE1Kl0%;})92M;}{rCFedQ6qSgpjjyJtMUIpF+Cyl2 zorBOOVEbCM9&x9&;5Z9~F>n!twqO$nhq|7?zOHi2M-m+0b3$D>(%JfAJ-?jw#?9f> zkFSt7J^zc_bbf=+o}=mOG#^;`+#F>om5=)4H%I% zhHRh%PqMlfp1+&C?=;WN?YvKE9ym!-8F=rzMq)}u&84Cb1bNioSs}C5$&7MU2_#V= zith+}gf}y8WB2#!bXi@T!oubkK~LcWf*f_{+0)PBAV=P_j;*Si8edf{LT<_0AmL1y z%SkBeZ|^5BKi(_qZ|^%rZGTRH3K~NU7zgI?$Vmoq-UGE6h5I_Z?&3*|)m^|7639a- zvb&7%Hjbm7u{NT`YC8Kd|NE?kc9_nV)tA}&TT~?r_7ZvLwy!b{_7a6p8AJ1dvC0Q! z;P_@4WG$p7XIT9G@9tph``@2rU<9&SAhaj#23tW7l_3N%cni3y;U0z^)q%9CCopCj z2}9skqmlsJJ-S9X_mTAo&DQWw{E-++c}4E8F_?rR%vqb((;Zo@?t7Q0)>=8CG+x+KfzD)FW>T9!9{-~!SA&Ni+u@a#hO~05 z_2FtNS)RZ9`=`n0&foprnTPqD^mjQpx6)XLY1P=;8iaN5K+Vdv)%)8TR`WrQxlUfJ ztRmV`W+nR|_m{KtW{LZ_nny!Ydn{zZXs5xtxtyQR*VW}_b=@pO_@nri$`wJnQ{30} z?Jq4^^za^bY`qjjnV_oxVYkrBL&C}|yNeXaonm?v$SK7HizPMDOmvEAk;6%~?Y9M~ zXoAfg-d*4dj9Fa77HCOzwp-k3vjzh{U~=JZ#-pOcW;C{^GIq2()Dm_yvCgC+^`1U* zN7@*w0z1oFG(C9FYmtf5v@4JVXfrZH2uGU@EL2jhh$#Wp+uOu2ck7TMdlF-eQo>9) zL^p11$zpcXzPi$gc_dB&0soED=%^6|~94$UjCtwg%+T7=EE z3ETSNkEm_^kOXQHwXjqv2Q|%@8dq8hi7?p1Fpv2lr>Y|`meQpXtGkM6Z#u1SFEc__7DYFRaB9!KNBh z(@YcSOq01LFgZ;oL@lME%xT*LhgMR?gz_TI{hahU<6 z-S*5!Y5!scmSwX#TUFQ1dGk*bHX;-Q+I0_a$Lwy}x&=ayZQU${aGs_~TQdeu6+<|K zysXZL|8c7)ADl*?G%Ey-X-dB-or;>YxS;AGvO3|u3iSPWBKx{WFnveSESepA4e(M% z(E1aSD4n02z~7o(M-w~6dkeht+c&3^*;^1kYvlHkn-Due%NB8qN(Fz0YMV^?>wo@Ww|ghM=8Se&XYz~SJ^k2rnrjuJ8o{d!CeyG;Utmh#e~Ih+ zFX^O^&{SAA#Y<}gv0kZm+;9_v{7u6%-JZx;B+3yD2T7?0JYqcZ@#Jo&SIrWXa@~BN zE%1aM#O3u)r{dyDrUH;p2KT7(;OUb&hp{?JfYEIrkS*CPJNd*)wze)G47O47T8}|P_XV8_w{^p zK*7AHjG>WFaP2qp35)((%_xLfGL!b@{hO$jYky8O5J_UN^w8yf;Qf=77h);wZDP2k zV8EaCCB^{p1qIt#8xFvRO{o|DU=yYi}dBwub-8d3^m<1@pkW z_7Jz@*zxhuN&2oN(Gpt}sh6bWqyF{Z-X%)~pa2#~LSl8EPC8-Sr~<&vJ*~Y~1;@R- zyxH6}chi{E(vC_M12*X$>5iT;N2MZMf8-gc;DJCB&X2HKpkRv0E6;xT5G~KPA19Je zW*9iE&V5oiFD58>q!MNtY@uhQiV{V^WvXmxCU?btB&x70O;v65kO~@}_Fpoge4x8N zYZkNVyxPFuo+xm253^X{8Z0_;o1~h^VEP$@Ziv=2$>#;yhwp$P5{ObqHw`s(jZwr; z6Awk;2D>Ri#^){>D+@`5DqbFhU>k*FQc|Y9oKf0vEZIDtUdv&*+?Pz&eY{5>J6Sb0;MJsr)etZKl=}-yy$PONbhmHg?)L2#qgG53XTAmLthqK? zm4x^8wv(5qZm$9Pi^c?IB*j^KN@WqUT)d@m=CBVQ_;%i$wdma2W_@?F2_f~*%b@F> ze@Xk!WzY>@VC0@%8R0i+8AXK^2uu*mn%SjAP+&adew7TlIXHGpxg$YiNo@(S%Fm3; z4TXmr8>X}$k|Oq2jKO_{oKR5soC@nlmx4l^2&Nl1IS%A)XE|yR4?8|p+x5~){j~=DPe!g=qG$I2OacMo`9H=fJ)54RCK0!AsTz}*) zm2w@b&!AX1sg12=*p4b!_h!15;7^5g;2hYVl0|tZ{GAlwNOKm9vA{5ap@MZ;e)kHY z+e;axON|P@T}&6%|GQ~ITJGlxpWSnR=I}Xq^vG>p@lfMNBj68Z9gtNloDGU&pa1b` z^7ZqJ81Gv9aYE#VYQY)ls7X=e##%*9QS5WLn?Z{on#}W8j1qgd$O9{OlD>#zpYeJ| zY4o{%d~>n9YSvW);pxum?B(X=-8(7&bCAL6?LK|%zX*i!02)o;o6c$!r|HRFB|2ok ze0JUcFQ0ST-l7(gDdI9Q@|qjMRY{uv-fqGl1cU52Tu7VWAM=(>wZ~|!ncPl+;q+UO zhau7#!^;`v??Dt}-Q3R3s`(Ty{wk1|%-emA=?{+ox~IRZ?PtH{*1p)|v&Vo5WmNi; z4_Lldtq!UTF)e96SF2nVNr8MICrGzAfYuVIO)$1?_C!Q_Arb}87y5p3&w(Q z#wJwOMwqPx8F<*E^rz9J8jKTXCjNX8f=$ZA$la0U*TA;XWQ0qO!To6yXvSIiLl9?T zD}>UpNgPji_uzvPrj`m)Tc<~Cc`XPhswAefx0yV*x1C+wTQg>Ayv6=75#p{NIe8!d zOFp?O-qW~LnEzmzUlC-0e-&?Kl)gCjYp_0DZZ=gjhs-wk8Q7nhHADIJ@oe`Ema|z|gNKd5 zcheR)>6oplDe9V{v}ri9pDa{=_)oM@-F_UkSy@A5Y`L<+0d8vok)tVCmI}7g^V{4? zqXgHK<)*9diU~WV5aTO#I4vt)%wNn|KPOwOd)6f?P`k0U22UTkYbHVI85=D%GLz~M z$`!Nkk8dZhy2{kYw@zf9s!U1vMiS0krdF)w8UbcgL~b(N!{C_J5c!U~Ud*t$ZdvX{ zNKqHn9g&3p&p4r(xuY11+3Cd+KCj@1W;F}dW48#Ez}EM(=I(&=^W;pCl5q87qqGza zL<;cB$Lf3JaHat4yEqPHn-q|wLbw)**e7F35eS5P7-Y#Aut;ycguXh25ot24UYCcC zNr~V-)V-X}=i9*0B^;%DQu(G8zQ#7G^=|Qz`$0vl&F{h{De1ocBig5FKaOIsOs%z6 z!hv8h4#r?bxj}}(4s4$qV9+HFHDIYm_?;>d?BdOg(qYC*#x05Ya&hy0HS4pOmyCgP z(9Z5PJbN4*KK1EES5(c(J6Cz#wGX>wObU}oL zzmZ{Kf?-8yXT`pMwG$$d&cxCZsjP|gWJiUJzDHGDRVOPjj;Ax|AzX!b?9ZRo22UTk zH@DmbT3RImjKfmP%PanJG>t3sgw}M$5zJi%@C%f`Wx3CCs zLoUyNsjbq4(IPyv;T{GhtcSoH?s~B~WRCQ~aIQnD3wYY2H|8FP$l0G4&0=;ky$nVE ziqUzwC%9wHDjiSoT+0wt!4^Tgb6?+}VP;Gd_yZzDMNV%t1!_qdT8x;4VDoM~EPxBww#k4rNi zYJYs^y4;WN@)B#x!L}R#B^INogfk=M#+ibx9O`%7<@&a*Cq$uMx{^KC+XH}Ics-*u z`k0H}teVri>a>}k{g}?@)!E&8`5d6H9Kk^Mc6JQ_4?*z0!V3bwg4Z~9RZZxis@5tB zaZ)oXe(KB*+yA%UCoS>M&z{xqPS5J~mcp9VZHMX+*=1{OSm@^u?B=C%NLk%R_y21 z1}|P9Bg}v__wZaI-pVMwdTuCx-mEYnu2$38x(DejH?267sJmBE;)h_DVa4FtV?cZg zDnyX9gRc_EJ&6_K5E7QQ_ut~;rN5=vy(ku+t)Px#utK01HN2?B_qLP9qGadm-jcCF zMM@`3)z&2p8Xj_w7(L$3_!Ta$n$`NEsb;sc#m)=_nO2<>ue-;-t7YfDXmbA1d-NC# zTTv16aAN?9WndeL(_>cs>$l0$lFT+mEAIPox+?nL~$kL@{tLU|*!fm}7qz z!$9sKd-j)%fm;MaX*t5k)=@`1^6^{iW_bzmYSrAFG?%kgSP(BW>gXL=emQ)rB6zUm z(eq%ULv#tP6$)F+K6-4`ZmefuAAXs<{q@nnKK$Ys*srND86KjUl$2X%j<}us7qr}% zW4M{&BzOow<}Mf$Ig}LVST(b0jy>nU{tUh_-mO=COT^0=H^$`8i)L2+c`-Y0hS>Mg zyDnj0q|~DK{E?@|5Ss?$6B=SbrfZIxESbqMf<`;5_dug5t5>|16#S~g z+|$ab8KxnIF39B->?UtWYCCn0w`Mn7x1fb@H`qYJYXuLcS)O z+Hh{*(yfymTY=MtM!`>jWA9}~n8O_njxhJEo(pU6d*{}?-9`I~j|2%@5njj~QiJR1 z65jA{o4f1j1U9l-E}9!~F^lGEItizc{&u}uVqc~A0{|EH3{m*QjFE8+@RZ1 zW>yQ*Hm3?W-*6AZh|%F+0dLKy_f@D9Ph3DZoauCRy_&73ReUNMPGOXG9(B>%>)5@$ z7IM~)r<(7qW3Q5S+wKF7UE`)Qh=XyGkwSJ3t|z1eiaOX!vT7D*+xtWC z>id!Eb*GYVNdr`v-jc_*9cGO0$rKLy!+n#Q(hwz`s1(2b)rC>Lbt*?m7?l8H(He16 z%BdVNO|50x6pL%a%?#(01N|Xy!5BbNa+I%8To!c zgWV%PN-;QifiV<@xMqPABH>8Z2=1xQg+A{=*Q090qz@Kp z37P9fMbh%PxdvLFsR*vqie zaSjyPT{K#mqR4luT^j3co}#%rQzE9+hIcc{L^YdXWVvYOXVuyC5^}n>2ps z1aV?^h%dqCbE8F(oHyLWU>SN4&E+oG57*U1AY89jTINt>-m5S2h=Tc1DQ;J@(^j;2 zQT_aHK~TPh`O>q->1wrHWhBM!sSPE?yYpTKs~;kV#S-i2?-JLe8+p z&)+8RI>^IkXI9`{QlJ!Ezig*>X$NXFwUwO6GLlH)CVJLL1fj$VCG*9Iy)|Rj$P{+l zv~rnrZr1SF^}2$$o!@OD2naa;zjQ!*+svn{S#^1H(yV(NJH6ePvE1&U^DQ^}E=dda zo-l^^RI#A`q-h(28C&>`!2yTR9fXZscO30%0HZTb5A0mUf+gVPYI33}fy z%*;4DkLP8aTRfhz#&UP8hSf@f6I33D)V?McY+)GaH&ADF*NcwM8Dt&MWcyq?p7dYF z=C0r|Rdd!{^$`#yEY3Z%GHxzh^4Nt{!9#UxqTotctxX@Jkl){ce zOkC4DzMkn77S{|Pc5I`RTn20`5a}^qYZQ6SYj*4kB;fERw%i!nIXg;iZLNgwqAoo{ z8ti9h^?61`i@0@iJ!i#OrpL)dnpzs2H$HkYU2U3qv#7vLT{i2~^eA4`6C3KoR(W-+*7eD}#$E@4 zAF|7~U*jXCU$=~uf;T2ocCZ3NYh`p{##C=BC4fZEiqRy~Vv=KBGNxfBl4R``uV$3N zaTHK^vYLUBoZWo?90H-+fsxz4B04}jaFhY8g@)`i z!~K8zGI{mkMGQ3Dew=99Xl;oQ9c7F`d_B|16;-0T>u+J$@P}%<&U!H>Rl?zCw6;yRNhlAyg9cObD#Mv6j(cq>Cx|Ezi z`}5@O%P!FV+*w-tabk|#z_(oLPJslT$eFRiCu`Zesub*Dn89?YtmH137+IsZ1sxk6 z?U$FHJY+u5tmZeTO?BO@u4bEN5tMPeedSnJPS?{tzWfrC_a56u+`5&=fJiWm_=p54 zv3x>NgNJ0Q{(Sh)M}3sMGkAfK=bem6A6JBo zd=$cUio_u{hr{91d$;oJO7d;P3ksthB@aeX+oJ@eq4)X)P=djtG5Ko=KjFs5HEf?| z!Gr%xXQJ2B^Ygpv$Hi!6X0CMJO6mkX)GjUB4C=Pwv@)bL#px)$!J%+GkP zxxS9Y(Rdr9G~_s)@a+8RW^q>iQC$Q^>+dqhX!8hzy93=fknUb7>2ke?jNE*|_0V3a z7o$fa>RtsZVZB)H?HGf-a_<(#U}d!@r(=0-36V^Dyf5WsaD#mfw|s{wMcpN%DtQ)r zen#}ocQ7Hwd->}a^26xq75p>JVj8vO9a7`m2~_ulpCK_09yf-1mW9AR=+vVAHbjU< z*We5S15OBge0=K$%^%-p1kFf%CK#NAC+wjR3k(T!!ESB1okM5AgB4?DdykJZT9nZC zz#AHWWefhXMFS6RrERCPRZw*VV0KA@+~9_&;hw zewR3x)7zJm-+y^D^R_|s^Z#i-PH;VdOO(=+v4(dO3Y9Jk%Gidx$s-*dkg@d^jWua0 z!KOUvtN0wCXN^}i?*7thc|KiLCl&bY@874>n5h@muO9C5b~mw~wU^MY4qsyo4xZ~^ z?0^#RUnl{mFmcSX`&S<)txxZRvD%NLb}wo!i6YLhJC2b{Lm=oa$2Z>F%rJ@DpgNwr zVwA#7V#SXY)v(7~8X1?{ay~t;a11CMZ$E~8yQh9c`wm`XNor2T){#Rv?(uZ6AIF^* z)!FpVi<>7Bz4Z=fsEd_JY91^(h5%X`>IcwB8UbG$4d0rax!o_nOx|?_iC-Mi+jl8~ zL>z;)LQ99K0`+g;O9qi_2}26DP=fi`T`~r-#PKxvF)%#0rHto3{<_!s&0Tfgtj-qG z)uCPEVGV)q49ho-gVjeK+DaQVjVbtN_~z9NzJWSNv+mt%5771cMFyZt*2qe(9YB|* zwKb43DqDn3G2BER=yHHh(OWb|3x#Ms4t_cd{fs9+%8)hY2{#wZt7cs_mp!=UZZPN} z({#@;-!yX|(80=MaEOZ0kTaOTH6anUsKfETctPpSS1-8yn$s`hH3pW%QLlsV3MYhv z`4vP{27AeKja#Sey(Obl_5uRe8kQ_3U^U#FqE;F*s=m5krQ>Rywh!1PRS@DnR=beo0M~rOHQT8A5C+ zHM`y}vH;QB{j7s9>BGgAjAC)7unNKg*%>usK)is>)-Ey1wv+j&1lZrf@{EaZ}+hotyjFAaT)4k{r2q7i)Jx9nf7|HnOiNC+CCn2 z3D3GqzcqaL(Su}7WDq6eh#X=8RjqQ0!5@BcIa5D4#o#n&D%va|%#{tGtR`GisfzHX z275SIA=Xo)ECT)v+uBoUPy0B*uggr;CY2ABq_gUep=*QkyWSWrSH_T}rz%dVsH(kb1(Om$QgMP@u|IO!y(6#T9TrM1ju*{8Zuo*vNKO-!N9gHB1#xV3TH`7LM*oLG2ztzGR>Kv1NPMt{_uP{3#v!nMh~{& z;5c{a(FCs%v(EnF#|~7DwZ@NA+c7ivrocB&=GAk-0-aFRwZL?!Y7y8^1=GgKIF({l zvvOjty}b-~NrwVfZ^fP^;@lRFb0C!Iu##@eR0DT29<0zBGR(ztQO$2oXJ-ZKxBD5V zcf!wHzwJN$*w(9cz%fN31(vL~8tar9&T}7e9FCPC>$4~0AOn+3mVg|Ednlv8?5x>0 zTZor5c;#A?EgXt?*yAzB$I{Q`^0t}ZEf>p6-zZBMn|m(Vo-l1a!E(p89xFv4WKQ7w z0bdhiYa13@6KqdkKTke%(dSo(74gHC=u>g6n4@D3A-%O+Nv6xqvxb`)M7$3Nq3(+P zC{#@ZogkqN=^^*_B74H?8F@$Z=PdeswpdIr!mj3X5a_*=e_O@Bi=Cf+Eo}J8RchmlKO3BLZASfZYg6FU9_FrHOjT)}Q=~2$= zdoVeQl4ctEw=ZrL$)$GMRz;F6T)-I}ha}H1T6TK0x1G?^1+&5`&1^QKzqevPmewd( z$WiiLZLcFa-y5u7M2sA7XJn0<^#;GT)%r)X=y53KZL&nb?4EInN>cPK6R~pe>@ip| z(}B`5qA3uNE+yov8S(HxK22H@)IRX2{Wv9!r?pfr@JQFnP_E0&frfiXV*qmz3+{q_ zyKPBu38cuq9JoiHs3StlqZ?XVG>g-_3f$sq79(#dVTSIJ<;TGfk5AZFu;{TPVPk?a zEkf3qtr`CO=Wq>!bNu>i)H${v$81YN+GZs+!pSu`{89yq#f!QaDhGtu^Na6xX{BZ&**@Y@XLWF0LV2;L0Efe=~*u-@Cnu(KL2 z+4_t24GKwWPz_XQyR~`)XMP-G@&d>Q-0OV4ygREdnyahjBIreyfY=4+l5a^{t24op z$F?G4jp#WgMrtMDKLZ;|6aMV1y=rT#4O&qr2_Z0?p*b6AtmQ)5Ok&<( z#eN#cv5-z7J*TWlp%t%aJobEE-K$H@mp`7go;sBIxu<-LT59+L$2Me0l>ETfLZ(l_ z=cu|zyPGiKUFWI=sR^WmkAgH1E;4PxKFPizZSeksA{N75*j+Ie%rZS;rj{N-$u=A; z9{IRCAP>T)=hLeuAPy=GeD%&RzZ8=Pd<_>LIXu8H?#rbjUscSm``Gl-b^ zaDU?|1~P+_FVW!0AIR)K{Mf$LpCr=|_i0)SRB_61tdQrv=~%7ZJoinK)!NovwVqTt zc`m^uw~WYmu!Z4K%)wfbyJ9~iw#Y&wS*_h!%=K(Dt@@r-68=B^;jm|qckkyh7qiRd zyt%7ZH&Ab8WZrs#IGi~tH!Xj1V;_v zo}GHq^>hiZ__xj7^>hL|K|YI$ZOm~~a)6TD(1krjgFa}_Nu>qBV!Kw)g z31VB}MHWo{-B*u8)1mQ8a%ggR5oHOAv~_wg7SY9lnIAZa9c-p&-kNG_l%+=GB4)iM zV<*jX8yq&@8Cy9fy_FTxay;I*c z7|wmsBxKKf^wFKRHUV4@!g(XXsiIn0R&M+4%jCDtYrAlS-?mhmBo&r+wI*xekw_y@ zl9V&p%3!5?juB(e`G5v8BpF$gEm*34E-E+&Y6lXEa_g6o*!_+Di zK1H4}Bm%Ig_?KsGU*gTxFUjUAdPm1uA^|RVO72M^?oZ?u?qCqnK0GJpuNlL}GKPvB zTFdQFBXy+Ok!M@?#UqGa{|`df>8iS2&UT{F>1=yivI1(XGhpz>H7@ zgx`zOGZ6}aryxh4Cto_h_0E~M{*v-r@SWsHE9p|rlA3@gLjs_3U6tN;4yVWSmyE%V zI7BA+L#a!^j_``c*$ut7#_JjUeOhfUZkC&vmpcrAl*I`j9Qv-YXc_pC_xzDJQmGAx z!wf3_AZ2S!ZBF;))BDNGuKUu?l01NQw`htI#)OM9L@i-Uc%Uh|KUg=|#KBbY{)#b< zFKSR%20lttl;B~HvOk)OcK8WQn!^2F1u*%84c9xu?4UL6UxVdFZih^Yfar_Y0z9M1 z6k>VjLFV7(K;{Lhg(O<}w9?iRqAe{~!SyyW+?^Swr2V;CbShI$B+l3GRJn~;d+9KGsrsUcQ+@y7k7&R9lU!fU)voh4~0)ZdYr9D(3554UZxi1D@iW2|MTR{ zt7x3vejIhWsM<}z+#Kdyl&!(YyI{knznx(KQw~9xw`$DxB}J^LGO|dh4YxGTQ2W8W z=gp7Rba6VZ{;1BT^PAJ=n3#X>_>T~DhtEH@ky~Ly$_3Jb@NhmQ&!PYJaq_7fDgDiH z=$}#}r9#)-8lzl-d9WKsl=16Qhw?4>dpVf3(_1js!@==JS#wGb?&09Y9G{8)u`oPa zoL3jk?0VW3qK*SYbdUE4y&Lc0$F^HA72j@Aw*-P>iOkM9mE?U`QdmvF-56I75yC+* zWKss^AMT+57SUTW29J`q6%kh~w{3$bKW>M+X)bT>nrgY2tuJPWHgSg80=p9|-oOc0 zAAM?U{L~m_zR+q2d<#V=){;Otz4|!$`tN9qr~No3yJWyLoq$`iz7c|OLIfk2f&@bIo=gZ|;%#NRn64bkg@)|t|4?>}$z^7~r0QBHf3fnG7y9wWduq$=io^sFJ-@cjr+7X_;ebbryuSvo)oRO1C zJFz%rU`|qU?ZF^V&lbsV*lzO+y`2q0J%;SxUoi^wP!Lo=aO0H9)|x?O%Ww?Yg;wk1P0()$-0a?9@g}MD6a$_6&L8E3@sz(g+gwamP-c zg<-ybX7^L4XhBqmaeBgNKYyEi?h@$F-#VlHoJydXt}VpK$}w8QYGt(Gew<#+XnPwQ z9GxHPYIzIBs@qIX1d8(5p2;@X*D*uI+ZX{(>#@|eyjWCc)p9<&4J+0DKFU<1yW`r| z4!hS$mYltZjKOb0V(J+nLjDXSgBt$I9HiYtDar`K47HDB-iG5xR1z;nE@F7$hW62A zf<<0v2G5!91HNC4Ymfyc$HH*~1A6(WmIMScH-P@C1-K@cn z!kzTSgZ4Or9NW%8W4c$;v+sS!0MqZB1ekblF@_%i1>a!r7eK%tBCHmw)*+8+N|W^; zlb4?#e*<3rqx%hLKaTzen3@YAsKbk4P2I|95LQkxC)mp{q-!8hcGruUy-)~pSFUK| z0UT3!HRBJQH_J=N7pvyxq`92+O#Yb(sN5^qH7_ngKoz{e$m?Uq7(Z)9sbO9tK)F{X zPZY>LySDG5O47DZA!AmAIMe@NO0 zrq2U+GfL+jvw!#_iw3NuI)$HsDFpDly6{4gyLSUTS%yq6s=1}su=eEC9uD6i%uy(A=Y zM?z}&F==DK%(Qop!Doe}D^_cTkN@dK6@}noz`pEsdkviZSO*hf z{l~YiHjUfxPHNLYmJcB@A>2`L6DWC%oJ0lXjlww_>dDM{P@h#rGKM#A_L)#rNgnZfBR9<*GVgu1=aw2vL2) z*-r0(_pRUO&vu57J2s3(Sn4O@602eGb%ehOnH8D;;(^P5$pM#x-D)GPaRiVdR+mgL zQ4pRMZe>_vYGAO$TQJ6Fc3*-eQl!|C9{)=Smx#pX*z(5f88?vSYQM;TscH_?+krCTL- z@(tHL$)4dR=?=Ha>x4^=+!lohX1rRT!oW7Lp_6Bg?>yeMaKNr7;W=`!)!jgsqUK4 zF2ik?FjDt?^Nlp}Cdm@ExBkd2mRb|kvamKoId}~CcG(35jRA;Wt+E75}T7mW>Wpb&%cSrgJUWmvhwJNZkS^2Kzqx~q^tbp3rcod=A< zTe!{kD_nVJyl)+PklQSH$QUY9iZg$#L$??wlwFPRo5T$F<=GZB4rN-y05$KZK8mg`fEl}A#lIE=E4Di!KqGH*Q?pO$5Vy}KeCcj+w(nN z-7MDMdluJiq)g1)oz)KB(|w0DV8dN`fK3sH+$7nsMf+ zF;Lcex;mfEsy`87y_p3Q7yYdk3Uj@a9WvBTpgH;SLSn*^b-)=M| z{g*qf@bX_TGNu)HZ8^M^qn&QRfFUfF)E21#hnpDg+zeHKy%l3+BT8{5O|vYyI7#^b zjL0~zo8^32HPr%bYo4zR2iw?}|JpsUT{|(u>Ttp8$2Kt~xG(=kDL8R%aSp!6YM+Q? zu{-KypKf*Y$5)jn;QPfyd3fKzg^e&`QJIN zPhp#{WxD8G9~zx3$d1$7O98Z=zh(lAE8$D8NFF;*GC#zt88_g5g*vCJvkF`I-@@@?8_g+?U*j#_b+`Y-^^$1dXBfJ$GYmasYl`-+Ek;&a`W~7^|?b z!-KNMkJ*t(arpkej<;)O^*1$Xd9K%afZmJafI?(mgrW zY)mX${DC#qyXJbezD5J2v+<+nzn?~}GP_X%SNOqn9S?=+Bi8>sRoKc9`c{whL-e!jDs{?Hhf5jMR0RED2#oX>Zw3a4d##aUO0(Z@LppKR!%7mh$L|E68VJ@1VclDsAy^E zi%Smo%7ODG$>AWAGnN}7Yl$`oEFY{tax?O>eOm^HRclDh2slxiC(Vfpe($;n+Ews-m$GHk%4)m7 zLW5fL<;=LZj{*fLf6Z7$ib^E!Fd~WJ-J?H*S2S+3{$tuKD$IAQccNDhS65fRHP2Jk|jPcIA{L2 zVwB~SBV7&C15zUyKLdC#qm0&L9psZgu(4ZhR(I#;w@rD;-d$7k?i!vwcn=IOnSAWHUtF~E#}xOAK*DaOIqSH`HHGgRV@4L?JnU_vfNA?{ z#*CY{BO=r!DU5p&IvoDEU3oK~Uap(P*{Yg1x6`}J?bweJPTD=j@JGdbj#wu}OIF0f%@k-8c}qswN7aPdTCkl) zUX#qiG$PV_G??Vsy=?a8VtKXu#Op4U!Z|+FJ?Zj&-eFqd;Q6EIJ~0}MCSce^blX>9 zG>82VQs;O78%>?tj}xi0B*tphHG6Tk)KF#&;U#8Yd%GA^CkiDO-4b25&_sXKTv?NFgSR1+6W(C&f8;Io2%Yh8CPx2=_89u`|$E@)qnHHJ`wbHVXFkW8(v=(RfAU z36cMpe*eCj-c`-|;$#dJXZOsHSaA+sW8@WQrF_JsA#KqG*?~m}5{a4or}r)y@u&AM zhRKLwc}{do_tZ@V+FDXsXnG;s!!WDja6!sjGsYkz2^Jcqb$JzMn`spfq2bs^Sx=7H z`PI$3sjlF_d%oJ)V2%L~DcE|aI21%X9E#psBspcgrAKa+T4~)YRUz^bkx3!1QvzH0 z+sDb*4(0Ki6Jmc&&g+tzXsbP$N)8`!!n7A+m!q5s_I0>SrMF@N@xfIMIdnFCBHqR* ztu;61zQR%b>AX6ht`<0xAID@4^C|8K^7whoJxeaes2DtD>_!d2SHPx$U`d1mW3-Ur zY+wC-^1gGnuN(sL_ep09Z^fjwZq_Vnr3n*0i`4#XZNVlAn6S5G-`VO(t4>-Qo%+)cOT%!P{1-YJ)^XoZW9p`y&g{FfSCQ&c;b5x{i9T%nT6XW_)Fy-mNQ(kLLr6|IX(c46cVAx+Y%98oO16$Vdi!zIAi*0l za88bcG_sbAN%&Me4Ht2+u|Zjl;k43QGS-Nd3V!curn1E2?&(m?kuZf(8@v}nuTGoQ zG-$|dk%8Nj6UsfUeJeaeGH~HTj%|K|uz+u0lA3B(Q-xFtnT6SJU)-r$mt-P2Rm)Km zMseB+B@>MeCM(F(FoE~>b+9s3uw)E}L=^m0E8eF9Z_cWd`SSD&YvJhtbiFdzIv2 z6g4M^uf8)@N!~_8yq3w@PWH&G&cG^-hV$ua zc6rgv=GEp7g3>Vce6HD9_wajm{0{@b+UU@*5CE^>tB(Q`d4SyCK2AQwJCYxg9Z8(|($=`#!Wg&~ zhS~RbGtBjpqrc&;8cQ;Tz)LoaA3PL}H#Ban{c3qKUEvJO$@F4zIeof8@ZtQlJN8}U z)`N$@gNKj7X-bXO6?#qV=m~5iWX7&w-HxQWYu!mnbI9s63Yt60I>?_$399YrCn+WM zc9v)80|+5+(I^5zW1u8hKY&fJDB_)r%dxIE@J}G-=X}-NP7|f1Y#zl7p`6Df+rNf1 zz@ZpC0+|2oJrpL3GUJ@xX1pXQ zVZ}nAA9@n_(s2oYE)1;G%I9x8RD)YLdYeQwh}sZqwJV$qc0`y7=3Wkstb^TTbxw!k zYIn_8y@>LbBhs1!b?xwSMp+b&I_UdW&tiFg1Aq6e|3HDe9j0d7!{62R4^y}cA3buz zw@UixiLH`c>F({T57F*z`*Df^MngJk9FQ->K-6kQ#FL;Wo?o7eO{AP~T`Oj@Y0Kd{ zMrrD~zW=hinw~d{>gp7%?BZti^bvY@#!ncbdk+~ywoI)NKJEgU{}_iqSL+ah_$T~< z80hJrE(-C}KVM{^5aBDMB-4(v2LzNgAySZnI<&!F3V3UG#TXcoiHVT4(sY*q9nQ6f zP{e!rD`18fv+2A#xmm4GgX(nFwo90u1!+U``z}TAWIOTcs?t*Mw{S z`s?JKBLd{$k>4dD7!>kmLY1R3Vo;bxv^renQt5Cv!^n#vbd|Saj7I_~Gi}Y?p`C3> z+K+peioKAii-rptcL5E)I$_Jo;oX#}w55G@-?ZA^C9F4DEQ{YLYS(MyZk7kk9%xY;#xgKpmk0t2YvyOm3T&#mTUJ*UTtJ|> zm$ymJieZ5muNLd-!VC^;5~Z`xw8@>PiiZP!ywFJm?h>_yFYz)L+Vei z%1A1tW~PQOD8$qbj)c^POJ&RD&i%~{PVx=L(ZQNg3K_%-p;lNC?OVK}@n+Evk#*bX zI$zx^*59Y|GvBtKS@zbwfL%?zi0p0f0>^gK6u#s^M+=)Z3@2u5_&VqL=~o|JAf`K~ zn+9TnK{JiIV2^3DW;M7>O^M+Jha7_43{uPt&N#RWMg?%yM3UONqe%Oe$na{$Gn@1< z#BjL;qrRIiE(87QV)d}0rj>WZ&t4Go9zF7cmywZ&y7PtQZh-3AgqHe3{znY`fPW_C>Ttl3<|d@#)OfgXw1l*M>CytS1rz~ zdG(_TdCtRKmgz%v=h?H}BnUh9DruCM`+$*KsA1L*v9Y)V2_Qqp@17=SqG9A+VS1y7;(02_Rj;}w{qQowQcg*-NVL^98=8#7&bZ*uq%eCUpUSmhkt(i zGWq@AFJgF*_T$7fzqJB!V9Zf6XbF*hdYc2o=5RBEQU*hVOx}XgNhXaqEJ!ag9%R-| z06_7E#+w^I81QMcnlINCBEeR(>3J~qzuO6vaM12W?3W<#@V4o3D)$}6VD72~V0mb7 zj2qz#4Zq-2<&9LmeL4AW$HD4~Xa6_F!Kx_AlrY<|ceL!pl$Vs(?C<4ZbN5$_(pqr@ z^HXjQ9;U*(Ii8_=G4(^m>k_OQo$~C@VD{qR!Kr+f9ruV!RI_&)oC+R(>@t_-+J}Z% zQVW5U{8WUK#tCuU4{jOz!-t$Qwyg<7wbY%{FcgAZFB3k@bc1~i$JGPnEqA>H&kjfF zl7SJ(vt|W}_ja?zI~jL>`F7r%&8}vvYJCCcJ`YhLxf?Ixmfe#tVa$p5+{W9}J^k3$ zY?Ka&c_0REdoNNUNmO3i{NZ=cqJPh@XhFcES*d9^0*TSLREkOVG$IGRoehfmWsGF_ zi^igHp<4A-#KZ5M8*avcP z{Iz9p+ODeR0D}%*#_dVNt{PSMFkZLcJMj(cAF8s9K~PVkg5B&Ax2um(kI zg%lP@Wsym+{Mu0kaqRE)76~q4;HJFM23m7Xl#xXUmcvctHF<_yp1Wu)vgH;d98RKr zp1vrE_zTpQzOS0apVjSbdT~;nUZ%P`Wx~_$_=eg#yHTD8E04kK3>SUKgkUve90kua z%UWqe+^qha)NP!ZysE1bOYkrUmTu|Z%6 zZ(24krzCVeUBV0gZF6@$oxna;%SCguS^sU(T*3doUe4#sit@i*ua;PB>{Bd@=O_$4 zY;}KakmcF*$Lx>G>b6-_XVXP>GHox*G1r~Wp@dU)Z=+|?+Z^hyZ<-tr_MU(2VAt?a zfJ^C`Qiw$jHX&bRK_UP7e)6H4R`{nQc=;hYtpMqzklY*m7d1D8@sd!;U@t}Zw7f-Q z$O@D@MfH@Fc6=@wEZ)s=V&5p9;*Tj<@gL18+HUo|0rwkBCS+~0RG-#8=3NU%xi6Z8 zVt9`pI~0Qpf5IO;F4CMTaJ(!mDJA>4Z#wxPx1akaB_9M25QZA!$dynk;4`hc=hhFi z@Nh4AY(86)SZ~SbP(Q_>g;RNWsTl8Ol#q<*55RhZU-fELE#Rc)$Ez8;SMdBbF@x90NaYFQ}R0HwR+#0QCQqU09s36Ld9)NkIpZKBqZ4^je{ns99`?PeQ{t|cdmJrz@CZ)aI; zqV2;>{+dzqS1lnU?boTVSJTbru9`P@%bQKKU=5cuN|zp^2Kc_3o=sP?)642d1-pZ9 zRJ5qw+jJpwe>~-VtJ|>`OPjd+xKY&GOi*t_ff3rWRYagyY3?m&n8A(B(D6p8t5ibmtRzCCJH5Rvau}iEJ!ItZF*nkW zkKy}TYX+WzX6o~Pc+G3m=(QF}rjhtGA=U@!wwEi%LO=*U0i0 zjm;hr-U`h~n%BrWshasMq?Tu^>5o(|3oq-q@$$n#WC5`5X4QIG-A$K)$KCZ9N|?TT zAH`Z(iI+_dFnO;qil|yxUnB<1P>Z%@!+0iL-WN}f^h=f;sjP)2$_m=qKSxe~D&>=m z9tOJ#e*lyatQCaH9vJpkjAg}Kfvwa$5>Kb~&+HL}nX-NLYI=^U5*N+tq`5f{)tYt( zc4hRhyyM*0Z|8`kc~2RGeF_s2b0}6r{)rPcVLK|(Z+`iD@~Z1cy>zulQ~fAR76}-H zqt;C+_-6>Dg(^ri@9(9T<{Bn39w1}~o_S}y^t`0iKh z(~BR|+36)*mT#=Z80Lq2P~ExjTC6^dU_N~G$b)go19xmJDr{m#NJD!0n61D2JbC}? zqpiPlXtvsqQ_Qu@wsH5PE5_L$skomr?~CLNwlG}G8W>J;*Xx-$BgmkJC(Vdw;{9Gz z#MzFa@*G1_KMpc9m+QObBAjG^?G><6@926~nuKrOKRj-I;gTb_J|>L}Af583j&&OV zQbDc0wC9DxuRcz`{P#r+P2GN+vOzdCA{`5)R&u87lT?`d`x+ee9c~o)YsQ?f5EEf* zWBQ6}gN-7*no*i-lq9QJtuLBt2AN@8H~1-9MBe#6eTyi3+!%soMYta<8`K-oILOLG zW-|Nw_sP3X67jV&5BM%6i6{tsc`PRmQ6*S&tr!UePs^#Z1p7*toinvr-1VZg9PO{T zA=%O_copM~j~}{1&3t;fZV<^)UBh|bEjP>C>fyuWz+gE&7WZKHZx9XWu>=npyAM_Y zLW@yIMx|^e1A8tw#TdOuMVi*Koy!*vV>GLcl$?@slsdiL^ul39iK0w%m5ssl*NiDQ zFo~qX5YHb7(89|Zr5DcT*|}&|U^LZf13vmJXg56ZDo2mva+$$NAmi3?ans$eyY_96n?WCa7sZ zrNI~$P~lH1RO<_kFcCMujK|GMDRCicBe+uTRFkd+qf$Ic6FA(`9x~$0fRhT^z}~Xa z5r|eio-mQu2VP%HS3j1^vub_4!XP!#3dTEo23vjD@!l@?Y8eba?6LPU>2Y@t#rnVL z_f5}3xNmW6m==@9H~d!ot7fRy+sl~a<4&k!+>JAOI>xDSMgea@A=7kRuQd?5GNViC z7>9cq1VaxLp1t*A5K0KG2!WJgK$#_j%nt8m+>ot@Ncwi#gqny4v)k>0ut8^vvx9|Bx)e|AV(PUQ9_>7+cNO)kSmmeb$pXEot3( z@=V?FKf8g4PanBw7nTG>)&vP}T6!zWbLJrTF?@l;gZkd)xNH+)0`H%pYX9!ae5HcwQ~9m-Dk~dUpYq6yQ8d8L)elJp)cbvbUAB zyyeE=aw%MKFn^5X_Q+%a`KS(E?y5zb_vOXkyCaC798S$`4D!gxg~R}lLA8XFDM!ZD z+sL6XO@F~y2TE#WOXY5IJFHiYR#vb2BNFY^{1qJTeJ5&KovfO(yXucs6)R-toIshD zRCfvcRj@PPG})E%o<9Z~_vz^wmRb?JL~)8IM}qj{+sW5X+VrCX=lq(IHU$e&+Gl|lESkkB7-a>{ZWS_Sl^I;} zPG-nUc5=eo2A9Gmk6jYB-0A=o&1xirr=*r)ML01B{O!x+AOCt0>&4>a_j6PT z4OKYpAc_Mm!yWayv_x~=Vy{U;HA2A8u8*?x){Lf{9O9muS)B*6yh7x|bPj%LeKp%$ z#6Xq;5>&jdCpPeh&F*dD&Ag?yTQ{etK{0uc1MsX}U`1pfYws?jXYKnUEz|Ft&UM|l z74k`eqC0T~(`>DnF-jK{aS1n* zMRhk&@AcM<%@+zeA)>bGaNslE&WKc89*H+lk?GHio8C-tL9BC5J=i_!5)GZ5K#{@2 z$52_aEz_%G%#g8Kuqyb%_GX1+hWz>4g3Z8hzG74p zR>ErrTNsX>hb`D$GG@P&A|of&bZcP=4}1LO;In2igE;Y|S*-#_c!$r;KU?{;A+NegAY74>&^7~0{t57Xub~Fl=F68qS4|We2MTg`j$z!p!e)C z*fmwg`n^pJf5x@|bVf7fKwo`yJ*5lOPkYMep=S*@lZDRT9*BBN_6=K2sA+3<2lKPG zS93hWjwX|XK!xY($9U)by#1K)(PJ=UrC5MK0`rnJ6SWKl0b>UI+edeD?l;GP)01MHb4;h1#(@X|J0?42(;ZGvzSy<9Zz-(Xs zGWqC83H;L8;m4$ufCX2lDR*GDR@YQ&h#qM<2vKi0SvdEt*5@x7<5#0wEo6Hq5w?2ikMQ(0M^%-8Q-&-(g(hG*rb z=8SXcFr^xUBsfCbf)*WYOuxn0PHCjc+>*+wU_ZFDu;5Y-tH^`CM3n=(txVg0mkTw}bJG(%V3phD&!$`Ppaq8rztY zy2Z!fB`pv5R0RBUIC4!PvC10kd_8GL%KFXB_Txl}7Sc~DoUm7`TEPG2kdhX#uW%28 zWWobI7jL~-WtNjxMoDgIXyQSSx0&)_Wq(Y+gBQH3e!9f$$<1u~BJZ#c?`Ve0jU36! zdC(J~M70cCyv`g{dHZtGB604`t&Kw;;W{aIrjdY`NynX03Lah}RECzzGQF)7(9G%9 zixLMb+!&#J7uxl#thGsQOc?eRDBetuME@!qo1|xXAA8ca2YTUoy=Q>^^$r z)=o9|p$*csDVC%N8O`vmuis3*c8Ybc9Xh11NyRz?KZU{~u%T<8Sp3WgULtl4_s|Pn zsiBlALX^nve0pofx+q*tBuD3)+eN{nAEj02I%0?j?laNl3JkV4o%R%Mm+p|CqV3|X zK8ncK1oYmz6;5o$VtUf<32zL+uhZUigWqI(Q|cO(uawi?#JLiS8d>G&6~es?)AtF5SVhD7(EB2xI951!2-8KjEVR$1(vl&A;=dpI;>_124OJ?ja|@DUPt)E?Qs ze)1vD9rzN?n)$RkZ&qiEs6#9h-F8Q_qaWNBw|a|?!Tm8|eKW!-Vsif@pGl+p?aSn! zUFpX~-TpIK`q8x}giwb@7XntH7-8}$a0kJrLbFmrFd<2s8RuoC?t(Gc0hc&BYII)= zay`9j7Pyg{SyaRo?qeJ+&PTV`+*PO5$<66y$bKK+Q3>mF53px_nFxgbYbB8g-ouXV z*n|#-FX11kk*>qGz}~!w^vi44xqW$^;oO+5xuBLgLt7Smmc){hA!%*qaJ0QW zBB3Ui0E7ywbJ=Zw#U&T9_aQq`e_ATer^J;y$nq4nXFD^r!)o?Fm z%&|MQp_sPg0E@j!n$6aIz!>6Nt8F0LNZ=ntc2;EF?I}gX5kT+%?RwMq|IYBH9HM+< zIpYp>CIr0-GO~hH2K~)sVfqFLtGzX2pgy4{64G9G0%Z>v5RwPs^^CtAy1IdwvRa>B z{Fu&8FX75w91IECk2lCW`&~Wip`f7f;UjOm2&F=@YVankMsir9GMw$JkCR`z9;*u( z`X$+8C6L$NQ-(R-mN13?D&lQ}J(OTR@Yd}6T7eYhxG_O95kq+LqwKoG(%bp$ruxye zn1!bV6uGCEUr)*e6a|Zq!S8Zm0tz9^TMYzFY7@3q5+V`1cU4;Csuji%v?lq{dsd1vIyw?Ovy?x}t9k$QTcxy)MR(c{#ZS~=3d%T#xj7R=sd9kS0)yYjb?e>hK$?oAlcbpwQ zd<^a!>`4X#s_3!crU{CIhU}YZeip~JJ$mh=ZQEK%Dil}L$)h=GIa|u17W>;7Y`qRA z(*BxJQZd%5dy!1Egu?|ABWl4*8hR zu&b@__Nr-WGxr5X?&PU8^8f2guWI;1;LuoD#!d>rIrwE4e38U2gEetUAhegt?N3ol zgWUSi*go7%UXH!p*ZYgcSa~7N!~e5{2przfD7}5|PsC+)H9c<@)zvB7<;6|L1m06B z#JP7cC|4U^&G5X^clA-KwE-Gvyi$%G%m9l!C%E0!PE6TiM>Q79dR8CFAK+r z2|+oN4>yyS-fy2<^45%{_Y&C>YDMMFHNCX!$9o#3>rad^okO&IS)HzyH$ThlyVm=j zLJ+pQm?tXx)a0B9VxtQl=1lZCMc2wm zRbqfCeE&nC*4}#2ra3`SfDvko>;@e2xS?f#ET`2)HC>#~1DU!4iMV%0**&tY?P_gJgXLnQzS%O%KaYJ^w|MZl zulMMYhsst3$uYs2PYrP^wK*zPuRcybcN&x~?BsJwgHniEXifG0&BL`1j;hSAYKCAUa=d!FF+r#iwrg z&!U&2+(LR=4P?EXduU&tvAc> z%hhzVndSGJiq1p0Ctb4BlraerJbDa<%()I&a3~~Dj3RLv{Migw`R=1DP33lxlG0Sn z)66{)ktv`*NS9tU>-Fqv zwg^~Mi^DP9Gs{jjbK#i5;>S)rwPiuW796^*wT0m3Mb?DxJCDBqT@HP};I$IeC{KSw z)e0Ph56mhyBC zGY%r&P9eaUS{O?dF}z^^CD=@n{)@Y2!hQuRKC*-1m3TX&Ohfa_x)+P;v{_#lXFJ}h z$mCs0iH7V><4wWCkM6cv&~a%shJ~nYKFZ?T7gvnH1ze`Z2si|DqQz8oj+@nlv@vs8 z5oTvIJ&TtFhbN`v`Am`Sk}-pas0=Y!F7xpLXiL1G@lfJyre{c8j@~anxy=Ss=JUF` zr(80{%>`42FK}!tX2e>*Sj9w3SD{6u9-N53-@l!_`TA(a?;X$Gew=9hNTd8bm$&Uy z4*z-*ZJ%&s!y)*P#-+DnbSz4>qVbCMLhx&>^W0VQ=5Beji4yI=#f*pzU_McaadU^sbl~> zER=nQTN>`W_FN#R#Nz+!rl8)kQH4v1MMKRUJG`DQ;U)jJxx1cDU@xoXqPc-z>_u}m zo!rhg&3p!5pgT~z2=@YSqCWKz_|<)w<* z{as{H%5QHa`D@1LuOyo=1nnd}e!rA$h84+SFmFz83qn zmO3ET;549nrp0?p;p)eB*Fpv|W(*7k!b|wlF&Xxi(o+sEyR6xra(J1{npv%_mAcb0 zGc78@SYN@u9LOrz*1?guw_udEf+N2!cTv(mfj`albqrXAS23b0*S+aoS0~N+EUaAn z8!3|zcjwhJx=cV-_d01}3-=+T=<8Awz^J5!7_jCj$`#g|qYb7#=wWP4C{vE{QO0X- zP*ztIQZ{n8Fz5$|3eE0%eIIBigtX-hWwU)Cocg%>xy^ifxo#F`s|rqad3m$BYwo67 zncPd{ukO*6cXh$)$98pK^+98YV$-P&u6hG~F;m-zhYfN%qw!zHnFErFN(RYlk*QgK z4<-23-6a!h@+~v7OfpQgv$Et^O`F`r63%tAoZnTDW38tr&1!wwSEnvvW$uaPTiI56 ziD1bwcrwjY$aJ`yuJo&qlTV!-u3Px|v`r4zNFuGnY^rL3YMj&-F|Pq#={`W|Fkxwh z5eikcO=E!j<20&2PBR*8;4pPXUQ1Lk{~$a3ofdk-JMk@ z^X2I!26+7>4{v0Y)t79L@5OX=)hw#bY?Bzc@eiO>t<^p9y%WUn&64Cz-m}KwT@4Mr ztGZWt6&3|2^KALeE4OU==2c$Vln{&_z1E6_*RfAy%Hg&KRj!8|uD4*6#7W?s0k_$O z8oY~fWsh51B)P?!u0)z+kM6lWRlz2F$S4d^+JF>BpbnL-4g5`n4bFrie*3SRNq+lp zP9~}0*If#4?ybevN=l!I7be`;ut4?T2%NiO44Y3NtAUt4QZyZ$OT~*BnK0j3vzQ@B zzgeyBqBi*?v#IVW?rWJl%%%p98+k+wUq6}+5=^un9hOnI^|*~?lrgG=WRFE4cpT)6 zTKFU7`xk+>g9E9eL{X->%4Sa6iVd{LE6c!YxJYwy<4KP)(%oKuoj14ByUSV7@F*0; zdMB5ioTeKZ!E$5pk5n2KTA0D|J;nOH$`rhN`|IRYM^O0IVeEdDA}B;Oy3!EmIkg~L zbFPUjs%RPRro_akw`R=VsKos#Mi14wX|HD-!RtdtdD(0(R(Ff)Vzvsn@t;-H#yjPn zZ9c82P5A6%w@N6acYz+Qs12#L$(%NQ=XE9D<#Z(l{HPmli97bjY6}r&K)g~WxD7Ux zN2BD|jNs=+c`!b2(I_`JYmu5IRABs)E{qW9Fg{;g7myOn_bOTvF6PV8!b?z@(z2~V0*V$O>?}sFL3OLJK$Er z@2EuVx2k(psT2x#kC2;!)k^9%YLQ-v5J`M`rE)dpaAU(Y(C zLbj2JTJoI{5^yKu#tlLqyWUiI6w}rE^x|q3C;HFDLG09b^$vD_GtI(5gwGmzW(onQ z?G>IWB-U6~&7Ng>?RnAHIbIZ!Q%>IAHGF}sXgbg_9C?=<%|<01G& z@Q`DBTTP|!ZQ<-{t+375hcG1?L;EP|$eLNHv=il0R8W+X>w;Pw;bw-Luo(h$?wWm* z6ceEkj7p_Cv@e8rGlJo>hn`T5`dqp0(2%jZ=lsl_q43$qwqeNvO{^Bn11c<$T6cQe>Y5m7pNf?~+}Gg|v$tZb{Dk#If{gt=|9aKT z7BL5lw=wQmdA-4JEYg{rt*3Di)Whb=^>Mp{+}E`_@06?`c~3dET|)fXm&<4?BMQPg z6MEM;kJ7vUowQSJKb`CUc81x0oZtwyLTcf3W+-M1${NcHI@jKA(o)L#-ql|;W|Bfo zkQGW7W8}ws8iAh;aZk;vx`y+=TW*%O)gu@xUL$@+f+g<;_A3(~Ot2Kb!^pE>2y??h z0d|jmM^PA-`9lCv_TS@C_TSS#1cn-7efS2WRxwKpa+vmZQ$hgCU$p;2peKS(+6e+$ zOqv7kY4o{qs4}~$&X>!xWB(|)w{ff=h2R~=&KBZcC&oZW|e8RV20=mmT0#pZC4y+GEAkev;F3lA#X(8xv< z&TruRP@T+gAjRI#u!|C-dI$eRww*zd8otID%$q6^sJ4M!my(CdKo-r;j~;mpwDr@CR&7 zISOjL$O3gi{QfRpB~Oz=>6%I-kvHSf%uP+Sg>Q994T5ktz3|;Il>4HDwe)|>^P3v zZO6-(?&-Y25-ri9NG+0*NBQ;NIglk(6{?6LSrXxyq|;&22X(>0x$k|x>(`)6-3!|u)m70D;JTGn#j4pz%BXg7+fu9^*TJYmu@ zL(1_P^foix2sYSo?MjTr@RH+K4)$?4BT0KZqx=@c{DAcm;`dp#Sf1a&Ux%w``_h%< zWar&$C{at>jj|+o`mwY2Qt<$v$F>=1hV+rWTwP4VKYyH@bhR{h9Qh;Ela;H( zr;I{BMZo)G@e_{)7%awQ*uLLhxw`36+NPsiQfmrk$AzYYg=wRdEn@q^Jq&kd4urR! zz`iE7bqGq}yW1ODN&!aVxsNMPwGC=~cYyz#$zS)_@-1L4NMs=W*j}b4B%tJ>7%JIX z+nVPn+NVF&WY?l)?cM$!eo{V7)@6 z!h;@B-_&dl3Ir#zj9IG^s^gx_js_~NJb}sfyOjpZ9j?S^8!??QRcn{GbvSb#8419v8JC~fTrcPIWktoV z#fzdSQQi5LFJKISM0t-Mc>#ljiA`;4A!?C1R*Sqgag>;o6fT7z$RTenG2F3?5Z76% zxP6k$i?^$TOBjy0sQXEfI83-SH(PQpd2{SzDN&p)7tQ>v`VNbnHCJ&2<7n1pziD^x zG@mT%5U7_xnU5hD)RIf?j^Ds2oG? zyioLD@!O@Z)v#yOK#83z7kk>{?Eq#X81M4ik?F{n9Wwf07LZjSq6bIiq zIdrrH?`M>19&IO|uFj{ks<}Oz_EfppAW0?%-Q)R}H{V-_NrFco+wt~;VTN>E{2mmy z$84Uip|*`Z{TgcfbE27!39hWe4G9jdC04SMj61#ElxX$wWX6!yxSUW9*Lx7-&JnSM z>c^6OMd?K}E=gJgt8DZu0W; zFR}LZ_UAV;BUg-kS^W*Jo7gpeD=t{37Xo#*b7o4nh7?q zvP@(D_N`lKdiyq~(nM=;;*HliuWRsIt>UU2=|^uj;g(f-oE zG6+k{TNR)x=_)8i@5{mkd+b!TZ9K^^uyvz)lPKrlUuy(7XPvEW899_cFjvmj_I8#> z#Uk z)e;`Fd$#*p-PppCW3Jxgj&65}Vu6!PT3BCf1_=Y>1YXk1$tMRd>7|nd-!kY*sZuVQ z3gV_o!nr?ma9~^Gf=a4Sn-q5eemY-Ac*F7B%D)pT(_Zx&}yr~Mfg z{P7Zwq50m^k8RKykpZC}*R@7OqFU!nD?t?fzAI_FQS|#%NgE;-W3@3%KT=zxC#wk; zq6{{gzlEMsQv+WTMTioa!%B|4*nB)F-}huv5>l^fHi_irXGSyvydqWwA1noXpX@C@V910nvO zu&zFp8OIHGGz^3ms2A~c%M%yXE`db?B^>R#o-Sc+|JdAJPbaX2)pF6?Y}Wr+G*{Ef zVs^QlH?!)?%^4W31;koQ1QUAhjuDazAKu)~))&=PGrw4FR)J5v$3A~Kym`bs^PZA! z3vc&ZZ(6V2Rg58V#WW2Gz%2NAHARXGlQVt@=JNBeQFGb;993_FTy_ScU#CC>k7bw( zHYHG=!cFuHCed6AYM3C|ajz#cMs&*z#y?bqpfqVnH8}k7=cTX9T0IAoOMzF%o}cIl)>tb&hf=`u?Y3LB)oS9&Bx=V>>9it4DB60ee7QY zYJ-*zj=(PxedDM46mSNQP>OXQ1Iuf}q_ia=ue^N>(sT`4>rPzE0cRYWRFvACpL5IS z0I%k!{vKR4t4nO)Y8LCuyKQ#COTS7dBzOV|lwDr=e#UJjQr z%1=Uc%;UD1Pgi%Q`auiBELSAos+OyvgT3~>%eMZYbKMhG;c~{Zy?xU4|xUW?Rx3Sj5cC3 z{62FxTb)M!!DAm8o90<_J3Fi9Q@FgVu!dX`?8iH*{J=T`>?f2wawDmg^xL&4;>}rj z!8pQ8h02$jlJdX_Ugm%kfK#dk6~bY~G_sb4F)qu+)xFIe3OW)bYi_qL7~Q-{kK zgF6mxaR4b#;jKrgC1xYUU$IZZiw~0)+_pa})&88Qbb~5(^A{Snq@-0oY3AN-BfTx; zwS#RU%T43@4kjc^Yz5(LJUet6baC z*`Cm2w~j!Z8IX0sy@8LQRBgiARbr^=^RF)Vd|Oi<;-1IpAcNf_(gk!^g4mLMmcdqr zHEW2n%aP|R6(gSrnY4e@gph+ro9+#4WF}%%y<2I->3zqY_EgsJ`1iA$2Mj$$7BF(} zT5u`y%2a78dMCDa+pE*DwXC&PpmE%~?bTFrLUh6Q>TQLpxH;XP-b$6K@Yc-)$pFC4 zQc+}}5$|P`ZgtcaZ&uCeU3J>b&%RIR^Xlww9VJdWbnr1Re->WHQN9Af0!IE7xQEU2 z!0oX?1DiA8uO@RU61?h{aRh=i>Ig^bOC`FoW^l6&MBeIYW+MChDiL-2LSr8XE+#_P z#$^`FgCW418Rd5%7p34nWqvW6UrkrVAPV40XN&Fn-<|lrwW=(9g2=;0uIp5@fRi4a z6<9q^>-X3~6AAVAuUt)k|0+Y%73L6(p>8WF#MD-Ts+R-`4K|Z5H|Nq>IP!X$jZvJL zFj*^pD2z8=%P18+);SJu?xH!HRqJL25*JT~@jYPXz2o22%;zpLuJqxfN3QgS2S|eq zNd*Z0OB9RBd20XRv#a(WK4+-CfI!HAf(!bHHmDKzn@FRSE(j|YZs%ZP?m%Q;_YvA+ z0^bGW=F<--rQsco@(Yk_>Muc;H)t{!)#dW9v2fK?UzP#D@a_{P!wTFT<&Jsxf$5Tn^pR^PV)6yxCt#kW zY^N7{{i2EJ{MGAdbl(1)0QYA?aHcwj4hwF)QAU<2d-XPPIQ^9`vLB0Uymp-W)G3d> zN6`UCKT7q?&Cjnl_;ObWd@>E%M7@odO2NBFoUgaxQWC*-ApF>MGiG!+^(F2*un=9e zH};jVn>$Z>!1ATx%7HOJJU|6*HsxhVSHoQl_iYc3e0d`Kn#m`EPpGJ^app36joNVD z$LCso@Oam!%gv^0=9{Y~$afdXV!0=htw?Fr3B--u;^~&=+tn;3Yj}UCfuK8tGl+M7 zz5h6Q*O|QcPUqLVq{%~gJEzUVa7^uzqJ$UWMh1tdhBV8S*Y`*{Qkfu;uGNRnQsS+Q z(ipn^o{zcb<;^+VPjy~hfbN90@3}@N!#mhD7CmfqGV=5>G;txZOrYHw%|cDvv`e1Z z{1B(U_>iQ&Fty=?TZgQw&F@l8{kG1%&1SfXgDK}cfqmVku%`)8wYJHg&OW~d??;=@ z*2)#jCV!hYi|Si*ikew{ZEk1LZmy!>1>xD14=)4h$M#b>^W9X5&KP`fNv(5y)K{-3 zzrA`?wpZ??;j46M*AUKiH;s&Vx18G&fn%`zUS7vAtSfNn zNsKj9;I|dbq3DnI4gyT$#f;K@9m?gjnD37RO#GKvBSmq{>F~IFDqR+HI`X(gnvJRJEa$Q`=4ZQqF3t2$AY(h>*gK4ZE-ztf!vPz9LF2NK07@7y0hT zHyWI6R_62`ab z*RQMTUDd2FzTAa+=)sTmd2<2+FQZGO$-mS4Do4t68lP~aB7+98om)uz2RmJ z4_&V-SnK=_dpLR-Q8`jB%?E22AcP0yhu;3uhVOx!FGuU#!^}5*(bXiBFnGeqO`xGc zk2)w2MXW#g)8y#r$-7C*TF{?GZGTR*xN*X))ea#D0jHFKgC>h0oQIp}*+EG-_`g!} zd=frSW~}1R^aNFyk}O}8{+xa10X*_q^=%1?aY&70C?VsWY*}wLkbG==X$A8mK_*F! z0K;I=Gc@t_2iF~a?UGR^-BDI^$+dDrL0t>Zb%{=JfB7ZY^*Vt)1!M%PRnpW_vn-@T zIPBxt$2iL2a)BU0Ax+j!0EZd&&pV}juX70GFe3Tb%A}YMsCfv^J%fvd`Gh>`$``+R z!_~iKWHkkW0}w{LWLNN1LBO_&aySdU%^cj%<_V0ASP*;P0^B2yJ^;uJFKIlP&L5RN z^UIb-m}fxu4v)L1rq6>!7FovFeOU;-{AnuI;&96h7DfS z2|0188i^|lA}R%&NynYJF0Cgq=FuV&ov67uoG-q0d0~a4^m$|7g19{{jIA`>!P?!x zeqVvZ5LLnj9NVUY|L13vB*S4Ta0sc$>rUTi?t|1uQ^RaGO%1P_LQ?sXWYob{@=B9i z)!UUA>#vifZSHbsvJN)rcthhc=wI)aXUkP}cLP!2?DC?QV>*UqchCKZmOWU;u{B%R zfN4*|_nRX8Cqk5E1i$}$KY85|?fvt8r`WHPM0*G)D8O=ev>e8Q9pRkFBDI)s4}*i2 z1Bqf!UbHV=OgOC-&*s>}V;@lvoM^QxKjrKmRelt_LmRp){n)ytLpXn<+xLi3lh*lT_bwS;QmmCNj9RJS`pP!w?FEZt~FE23R7N^td%c{r7UNBXAe?~)kb-h}i-JGW2dLz<~tw)m4U^r5PinlWi)aJqB zpS+v2Of>ysN&9nDlfe5X90Ihiz1(7P$-;69g877d$@4$ALt(ojW9ABZQ4pa_?E>SK zK*Wc;8Moqnxm&d%<>>{yBwwa&-{Ma2UFBR*_vCkVL3dbZ(mHxiAID%M3()Pkg{TSn zjA2JIOcp14U_buX%@%)j%w#%SEWp$t&U=?F2Ibbsmgo;hmYW^v?X0KiNF>iCGn{2N z!3I*J^Uxam!VF=%qH*Hoj0^^Ub`DYH?Q$OUqwk8X`OvqJG06OQcs+eB46GSGYz*ot zq+&r`l+~2rgl-K!UWNzz^4;X0@sW^!CPzYOO)RE(I_ymB@TLq$y^1svg_{_J&CIBe zx*}saAI=dpm2o-1J%LC56Oga}h!Q?%@iJsTkqNL||RukDhk1V-0xZ zYS!iScDAUR>MPva?s4L94zxR@Y@OPsO`f=8Ym?O~j1w^zR2#%#$_f+z`Q9x;y2;FR z5fXzfDw)$$XCQLq@TLh-5bD|AN*<8=fbZytjB-412tLs#K0Hdqn;E&@HLH1bFt^mD?6U#lpO`H!8C#UDIfh$ z1k2E{RKs~W5a)0=S(C{FHqw*X*J(D9aKjqDPUb)Wcf6eAD0GbK^jmXRomO9NPA|7Y zK0YBhyLYtZRd*Zma`@;m1dhy@p!A_F*3R02T@iK!t=iF=en-%2S9d?Z&d^<{YAY=k z7CRzwY0y9$Mharug}XUCg7ii9Ro5cL4qUQOJ5erSS5Lk2=fduhB~8CxGP*Exwfr(& zZL0NV`n`welfU;u0jYNdyQ=t3t4-*6@cc38ImB_H%PsDyfh4PQaP9UXRKxBX2pye4 zGi_?FsWK&c=YtIlBm4|ACOHygip|JGA{rM@PI9)CDR|W5SJ~zF>7qJsR;$@^(?j6O zQpF)l>mFEsUTEw1W*~A5n#D)}#>2oi7}{nTb%+g8D)UNe0VYctXD9_bRh3nRW~75X z6oCP8Wk$nT-BLQ6kfESw5=jJuXLR~?dI5pzbX}b`SIz3I*)#u|5r{sXTB+P?D0JjK z?aB%kDj*VLVOhO5pP6C~d*d>1w_}+Z%-djJsB*gwunicrl9!A=gU#gO6%1-(Co|S| zKosKg8eN7#2rp=qUG34zn`!eJYD@+uW2L{_+#jc)g5wf6Q0VDquXu(xC*Pz1)y+it0F)ji;zlIJ3N zg)2*%cJEoEaGgAu4mOAK%5B+DSw(ZZU>@g9RiVo1yAW^QA zykzz`+|0oQfS$m<@z!v=$fmL5NLn)e1eY@|SoR;V3K!GGV!AV%ci~KvciKnDG=LE4e)lj7L6B#S1f3?Xb()UG;5MJy9OGJF#MUU{B=8!%{`K@8QCW1**Yo zjkp52k?Ffh8;(XABtE4S5F79W6Owhk^YBR`Mr+^2E!R6AZfv;yX$W=2lNf88=k1iP zibkjFs7ZwD7-d)*%|~6$Ku@Rh3Y=arle5J#5t*)YL(+^9weCpwk4M)-P4wPFMy|o| zy84MF!)wkF2dGwIh?;~|*cJXAAHa<6SpPtIsZg2{Q!YLYHjEQCrruiTV`Pr`c{<%b}9S_dwCIlrqwk7n1W7t_UMVC}PxrCf5W zyO@&2rwml3;L*nppLt;YExgI37P8;n98>jQKTKYAHKku&iu+Ve37lTej3J^!RHDd- zgAEs=MCk1AU=S#6K*Jqref>6VtVU{Bx#OYFHYtWBo?*?O5Abk4yl|=Z!+q@Q{mZG*H+EK#9o_H?zNsh}658%=o zL^pC~gcQ!R`nBA{Osuz)o_!^nYe5YY`4d8&z`n;VkjsbJ8iXEbU-3ppXX!XiF1`uup$XPP+2Yr$3xTSgJfE z4NjwSEu2AGscQ~_BgEHFML_EA>re~p$&1lE5!RL)tl60)i2?5H$(Z~t0Lj1{n$o)7~z zUvAfWr^g=Os>oo3`PnJ1w$3=^ok@YOfp;Y(z6Q}%CM#Fovq%0h;MDpJnk}>pc38-o z_PzxP%m3S}sOA4HiF9mhVYHSV+Yd!@fD$9X;p(%-`?q`ap2!%VD_lAJLuKi}m?EC_ zD78D5=bqle3wc+8>6^|kqbvX=6xBVvq1<-%v|=E13?mJk@Bk5qw^%i`ur=j5YIgE! z^5#EX?)p`yX6?^0HB;cJ8fzRqlkkdwjWMbWt81`@5)IFu%xJR+pD-k24`+g%X8C^o zh#ztMehX_BRS~svHj<-ZL(N;>k?p8r{!-GN8m|1K=c^0}*jaTAF&j4V@(@Wb-B|fP zj%@LM3$leY_#+bGh4(G$#@eZ zBFeaJ=J-l1sxQmM8CbPmD@CxKLbV?6==RMWJ8Md&o4lut-0Kul1{3=21R_D86)HpU z)I?hO(|=sY^V5HF98ZSC09-hHZnw!%ATs&+02Umx@qu({!%w1yA)%6~IY~#zV_4}e2a-)J1 zg*2%;)azs>`F%W|e4kQlMBb2ubdD}4wdU9@rOR#ZN*?A%_e91BWZC`97%2ec zigz<2bNsD=bEvMH@6-9|-*-DJZb{nM?vTrC?=V}e_w-{cuvNy#u9C9GA$YOFT+-_o zlRw`+DsW5E^W&eiKaazG4);}nY26bUO%sc@ASmdL9T|8jBd_(|T+KGCo9cRXvjDSx z6LqYg3M->K)_vXUe5?%bStEC{CFd%by$6+o_)dVk5Qf63p@cokx*BWVpgvt$moidY z#Tod#<;-!gnG#Ktp3K;wuVmOc<`sJO>)wE?8KsMztMKdD`PI$htol}61gYU??W1&W zWLMjLU>{}h=y4>OgI>yX6GsYYV-Iy_wNRQX({cV#0x`8xQhK<}#Z341h7KigzL{8& z&rh3Fo|s;pHUgfGbcKoz$mse1%0E~{v55m!X7l`h#U846a_*+GNx_0lvKEx z5@nldL2ue_Ii1ZC|1H}8q!j?!}tZ~6a2j#JT&CWi`9?> zN02UVOAv>#F^ug#V#?jDn+n{;W))8BK4Y%gJK$%}HHS|>w&oh8L@@e?{8tD?PSF5m zXQ*0@jlk&qnR0`94e_dnf<=*B+Zf7qLFMgjr@Ra&ZGLZ50;8!(KfW-N5K6FI2Q zAKhue7GymG7mI4HoJL0^bhb>fr^!HtyUHWU9Uu{NME3O>E}2cFMc{#67V3I6-E8iv zd2_eC*+d($RK}G4^8skYdmmGqIXvcd&u-sTQ*2oYl?)ztY?V}028kx@IH1@?gc$!J zR$WXZ-~Tar-vz+$o%#CrsQ?&EEMb%whXMg!ZDE*I+B30b^s%?4eIj8d6i0>xM=5=| zvE(piAiFkhG<-c>!Yco!u5iYF986OHT-40iZYr2zMDOhV2sGL?fIPHcq@QjP3 zq{BVr)rq&ZZFwT2w15mbV3>4#@V-r^WLz@|>&^7~V!EilVmGC)z-97Q-Kk_}p0{P8 zJaHp$#o*FrgJ`5nv+w^EjdR@!ayi-%Vb2&5-|g(^IKtNUU}m(vk)~`p&AhjA1`Pxdy6mFT;j$AUWj;jN-D} z*5T2tKr=Jk%!rzqA0XMkF4yautE1(Yy)%CH{Brp8k=tZu0%|~Hz*MZ}SpCc^9KCrp zdGXt$a=&qAa@(I1+hRmQ z8P#FIYKUnONKrY+R*G{G1hoe$d9ayb3qDXD_5{YfZDfmNwcf2f9O?SNdl`S%2ljk4 z^9DlVW_1~2*k$dzj0@hKdU>VZ%JmyO`q=KcCB{!>V@nnC$G7BM+2!J0JDdfth15bT zKSf2TwIzE!!p#hh7YM3E>&19E~TnQOM2=-akxrhL7|9A5Fug+BeuakfN zE3MoNf=S!*ls@|7f@s1^A_4?^33Xdbs;FgJnS544M`DZ@6t0*ci0)3NI;z*YKdN+` zcIk&+u5a)k)kQPAo`$U42M+w_E3kXM<&E-I)eRnfY@-ZeD+yXYAWUr8;~5KiL=$A) zAO3WaJU%!Lm}w*r11>78jOmX0$Rd*=Q6=N(a5GtoJJ9IiNbDDn6a)_w$!n#=E@nB! z){VC_ZmWEEyId@$)oF7+pYCdtcOmZ{s!zEGU*04S5_gBsKek$P6T-ezRvT~_kaLXW zbd8*RaErkw4$0BBVz99i^w&XzX2@?~q)$(}_k2>giNWc?K^6vAU`(Bn)Y8^Wg9IR&htm?RFc2AE00H9~7V4K7`{v4fkQeTh*3*481Sob`bG%$i&`0imNdqS>09@oAl-66L7@F62F1sP?1A6CLGYh6boUb|z#?;L$kjs4h%MaHZzXDyYBBKe5S zc>3cGOTiwmFPdt0J6i;WpM5}@hi!6qh&#H$Ss2ZM{IQ#38i1winze&(q!yW(U7Bj}dUP1*G%nAzuu+7BBaK%O8($xgfB}ob$BR36< zcQQ&Vyp4`XKT&o#50|bx`sd9MhmRh)w$rvt!ks#Rl|#&@5EM0xj1z{~alGGUIo{X? zt*uKvMlq#sOC*`X^%nqt_C&_i9RHxT6lNgHgoiy!HO{unKN3@`>Pxd)HJhhOOu0u| zEHM=b9YbPDN$a;bBh!`C2#03!nEyU~aQ)y5w0*;+2Sac1x zG6&W!+!}`<`SKdcst{o68g4WPp>bkO|w{pKsdW? zwM01Up7?$>n;ll0YeW5Eu%EcPe8d)D3#?N{xhetf=3@am1P(SxWyQ+ zaX=MG2t%bV#@>rqlEh-TDmoXM)>>IEyj<3ytPB2LLZy~m8BHu@B%gG_k=Xa88Kz1I zD2>qD**wph6+CM@i7#Hw@r$~TzVmbiaqC?L`n%pN7tieU7oZ(-)$Gofh z?y$~;BOW~c*cxm}kc`GAd|q=}v)*`cwDk00(h~6gC_OnYc>8n0BpV4vnMtRonOUl= zKN`Gu5bW>Z&^`-STx{ZA$O*HxR6ON*_uCqem4S|F=H1O|R$VpoyY)qgWaV$8RCdZe zv0W3+&RUYg`JVJK#JSvvzCa%m$t4WX|lWDh|O5wCVK}_`$4T}C23Z#x* zi7@~xoCC2Ci>KxU`k`vfrybqw-dVGlP3P5@n-!e*wiq?XnH}QT^^P&$oQCU2B1L(^ z$Dn&kP@grP-{U@DM-UaiWOXxs{x~`5hUeWp(n)f79#I_)Q`|h}jWw$!7cA%xF4oN$ z?rX4II}9G>N{r3ea*4DuR`YD4UA&EPWr=6!%T;x|oCk`x2gC00bZmECJM>Et0z*zb=x$88=mqgbGF&z?W>#9X>~Q7FP;SO%{|0yo4C~jb;TV! zWkanFOd!S2I(GEpWG2sXKu_LHe(T0nU7q>hQsb)N1|Ueev>kkmVKsQ9;1%j33_iVG z^t4S;q9`bw$}Xb>LSy5ql1_xif0$Od_Q=QGHMrj3ds)Ge&8N*`cb&>X8+Xs@aJ>q} zjlsJ#S_UZM7C9@BE15&Em6s50`+)ih(e~%WAh@*foppRm3!Ad6<%TbzS>YzKe97&4 z<%#U8mBvC9=HV>M&5PpMk3YJ50RL}RoAvZdvszyUv{|`X)9iwUcb3I7rlIs>TQ@C? zuYp|G%76=EY91COk`={wak$cVDY#OhYRWiqaSxTQwS_mlB<^9bm7aMspiK&nhnVb; z&XE{pjitz!WNp}-w|83*Ue9q1p_?VWpKrNtZsyhZ>1^}&HVu4+ZXoZVcTJKO>IMqe zaBMy1N{8fFN!;O>7JvNj%7WsVkK0Ra=F|Uc;Ivmb-o1`>(3Y+@dgoZ)dIr*uu63NSfN}%N z*YKhliCKqVvPM{N+WWVt1$~*yk7Aa9KycRmEL_QT>(^ zgj12U1o9Ey%qY{dG3|$=!;ZXaeY%WJv^*CIl6MK^)qfBLDSZC1ExC{ZFa$%q1008L zGiEu{Y5#mbX~$20(6qmI%A6lk#T0B%RfIcyc2XftyHO=P=>8tEGEv*%2m_%p^(JHj z+YnY~b{gQ}kH!>Mxn@am~R%5@qaER&*cJydN{Lz#m?F8Y5^7?yx%|q-a zpQg@}8cRUIO(X3up?M^Am+;nZ8n}Z+b-Da|dN;j|anqp>jW_lT+2V&S?;Y{pHtQKe z^f!MutFXa#zmq87YkL>d)9-D43wtj)nYHp3GIF0=K{Oj6jv^y+t*{u9o1ETb+=US% zjDt6-+hVi=Yex&>je1)-nD5;Y7bERp3{3!0JE21)MpfZfM(J-y0U}N>n$>)|uD-(m zX1dyJHRT7Ab__NTy4SF)&%MJ!ldK)y)5qZlhyV%vJ~PyI5QIbNG5!9-gC6}O2YM8I zZet908!NC|L0e-b)djrna1RB1Zck(a7m@24L}pLLz{!uJlkfqE6#jm7SKZE5nN*}q6rNS~5v^R+sh7%j-dZXfTGyCE<4-xUV3^U6)I3bcs$sWxt zf-VpPdPobxdWV}CPGApNT2Eq>sgh#*8ffhHvC_v{V|uEzy_`|n+FemxzAl>(^*i%S zN)@Kud)d|a<}Wo(cj-QS47S%;#W5^J+1qETsF}-l2)7ABAw(e29s>CFSY%$f&~wG_k( zr`rnb61RjSFiQc`>F;2eVRE<#+zE`@O^VfR%0u>>ewP(JA~IV36eT+1kf)mW8xdIRt7wA!p@i+~}r z7_eDRRO+67`IPVwxS9Ltqr1tBng0oKTP&hp(|)xlVN_j(ewU-r5>q)E`>P(kWL*=f z3@sCnhI<$uXdR%)@dQTAs+kb5jwGebJtr8BecVp)83GWlPnTap#+>4981Cuq5R&G# zVFbd*;Kka&j7r)zkN((2iR!0!OhekWUe0ee@ZPPR z6{K4lT(Ki}U4@k5e?qoJr0!O>W-Nz|26Zmp(vVKO+8V+)E|fE=!)v8AEd<-p+eBXY zxV`A<3yn23w17D^D8QBw5}TLs(0>}ow3$yY*UjQ=Rjn^?m&hX(!wLK)qbn(+AE7(J zVxeRpbPRTm%b<;jVLa4=OiGraa_|1-s$4tPI;e6AURq`Z@yeS7jhr_eSESi6+)t=| za2k{`DRjEmkct-N!JX1^WX9mc2*ZMwk~*)|@Sza+t@<)wF0a1Mrt`B{vtgU^ki z`LX4l{nCeqg@MkZeGj9ABkSHyPqFvyHyl`W64T6E%CVzNV`P;$mJeRTD{Sqih~1XmmdB zz9>pZgwT84+`>zKy}VxD&Q62WP}cSeD6n_9yQYP57n$^@y+#TF_xH?F?o=(x0!X;a*MhdUbfo`ak(1rdSy_GI?8S0c`xu(fry zH|OiWs^BiZeuXnjS#P|tCsyZ&{qCJpT2242`rgbhrn9Tvt#8U&E#RQ4NT~{ zGNXo@PbdV{dZ+RF)c7sl&o~pv503g7XvF-ix}Jim@6GZ(>(s4x_Pg5k0#mo)^GBX6 zGeVkRC|4oGH3RFM=c~VeGx=}ltG8(1KmN&olfF8sHBmx1wqL{XYEJQ6P)_l^t@PBM z86zxQoH08L<~~Y{DLoex0%6#0EbTFG9WG^*$+T#8I|W*mwe>=2@9yNwS9k|pdGFC< zNX5bOe7rfvNi9tc-YN-=dAu1C-1)zLjk@#g&(V<|Qxhd|__t%Q0{bYn)!deAh77in z&cfw0SUD2=IXE+6azZ%hOEDTsyq=NOr{?qJ-5H|gTrC%8G28u|Je2N{?`OXc=b;SN zFb1tQQU@*0v?Wv2^xmEi;*fuKTQ@#@{$;pz16lbvk=zjFpwCGqt@1G>_vW?ow=kGf zAL6xg#KqF-4E!>V3rhwC^P^=z5agF703zUdw!eYN~DU2Uo*D9+Vg=mhV45;;gh*|H{+}+J?ME`QCd&W8(+ttaVXb2@mJm#MIjIVw&FDNzbR3gfniW zf7~*=abjUOY?>8DViIa5U(0(GY|LZ?)p8Bu<h_xg#7tzW$qOm zCE^bjaBR08^eV`dD-2pmO)*K8lPQ1ko7*hrg4v~~Jw&af_4-APuDLKsaaLr&D%?bY zOt~kr@6huJL~H`oO0zUmC!Y2=9rZ_Ly_$gmt1g#|vsJUX3o)TfIO6U}W#`D#o^>E@ z4AxUCD}y{4L#8kA5_uoQDnSGP_U+`=%SXL>>r|lHpA%D5iW4o2dd!L&Qo~ts;e$jL zqk->jY*5jL;5R&hQTPpwx6Q3n`TapxzMftozV~T$GmEjo(Iea~iUR2! z><;ziVHC(v@(BFW5VMN3IKtSiKuKsr6Dg<{A3WdG!8_mTn<}ZOGl@(Ysj->am~v^T z{&q^x$@@ZMddUp3NKwvnrR&b?^ zKd8vC3@#YL2b(bNOt{D|-%Vb>h-R4EpJVFHbgebv2;}i-X*HM!%BW=KDO}`mU&EMI z!+p-K$QaTGkvNcL4ej~J%^8lPpI)LT+INxhQpPh{{D2s6+JJpM3ra`P{gg-tyQjCW zZ`@l|68yt^*0FVxw$ppAPJ#o44NIymW@goR-+JI5Z*#yu6s;wfQaQcJIB#GmH&&OU z?d)ylU~U6nVia;mW6_VuVhs0qMdQ)XDOjPZslF_yG28l_lLqcl?`K{QpEL;8aBOWB zM(WIQz_fjR`@d29+Ws7MpJ_|cN!`Xwq~J4D$S1L`Tjv6MaqVGaf%v^9*y?UcKl^mO znr=3C)x5b|-fUvV74PFXsvGOVyhmXEzMOxJ+ST4}3Ypf&guI}STo_OL? z`AK66xoDP`%jynX;lG>9*%RiNyhALSV+tjYp;Tij;hxsP zx8KqhND(5e47GcC;$dZ+u(X(CGWBUATuVv$!?0l5Cc1+1o=&>D9%Xrv2ENjFy zu5Cy@5Yw>tpIi-l|0zeqNG+{4%JD)C;!$ZqeNc)rMNn@$yH37xg%CM@@9?9%zN)E- z6cec-Vm5h5Q~{hz3Wf?V>50A5hn?;ZLv_EEtJ6g@3#JA3IDrybUH3M6>boxrReHS% zeGgVK3cD($U%%n^Y|BUqk{x{R%0VgJ1>@>>SRuUH>a1E;r_0-EU{?Ljq?I$j%fUUf{WH1ip&-+H$QX1_ znjnpfNc^T9JEcACOV8xCA!L6hxBWR`bcGc}N~s(SXJzi~a5)aWU^97GP+NmaPh@Ne zUKp$kb2UIw>okGlOh}|-7q4byfHC)pp!3!2{5+VB&)Z^&#E^T!yJl~*SDBou_ntlS zERknqj?PWoq_5JrPLUMU8fPA}ks!%E~oF^tMuf2i}(%Q*0`bdR+2>A-wI1 zEg_^GCzDq!@w>jAZsxePH7NdOec9Y)4CM`|y~HHSK5E~c|MRQ8_v|s)ZN!NQhHkLL zFGRoZFyS+U)qWXA(n#wz9D(J2s0_g;)$B>?HU5^04Bb2m>?=3~MhbCxv|>H4`Kp;M zqGcMmg>kvfch%y&npfYeAnhA$q=X@M4{TqT*;!9Q_kyP!J3pnA3VIE}XtV^7h}{r^ z*raFMoR3&J^fS;D9?vLx_vZ!-ljsC=1y<&`+2NRfnPccj!bN`*ZtnP1Em zet`SGu0XAmVCRJ)Xoi&AJ^WpjyCD2bu#Az1#YRgXnF=R01-v7$14=S8&S=7ai<|Hy zV1=%QW`e8Edu}Ob38DN+{O8`jhSSaiO^m+8eoqCP2n8-eZ8hJqn;0);lwompz3E53 zdQtuOZ$W}=#~$SD%(Zvs`)97RdXU3s9oreF(hz?zK#H2$mYPS04H@P5OCSv9@L)r_ zxzp-zl2OAeEIu;=ld|1v^O)(X`jb_J2S(uGW(KJShtpo3$bOrMM*4J!(WNPaBa0U_N?RWD>*38RL6R>oJuLRQl|ke-6= zj1m=!8@W4dnG)et0)G7syggw(D&0Q$vg7^oV&D|-mk>x|>NRj#S!+t3rW73PX>dqk zpncL67t=5NWLmI8GP@Ftw=hbdH(HpQPcPS4ovP-|?ewk}{XRjl*geyyD;5V&8H4v~ ztnjnVt!JhX)3K&Jf4Fw%B$cc=GekS{dK%nUDkbv=hsurDh8r8iMb9AVb45m*vLxms zjqUer4CI^PTE^wI&ZpA~IenU|FU`$-b5Qnpr?#rc6MW+Aarmr}+f^3umuLd~9UAEr4RuH0 zXPapi=L2ISr6Y0G^?t(k$Jouqa(;EMqrSFwTP$NcyJH-3Z`aHD%?94eb+CwZi-s%u z*r6dc0l+Y*1O%N=_9u zFO2L?ZU;S!ttaiDx=%Q^x{0>%@A{?;u{wF%2~SlHfGMcl$NxrEuKhUy`=TIFB+_BN zq|ylGCu7R^q`eL8KHpBYZC@(KE%l|wnE8Z2{5+va-r(&+chS}9DQL;`E;V_JH}=G8 z`mo)+0fCEVu~;su`OWDpV36KtyCtlpd-gpo-gnG)%Yu_^ecm$0?(8xVLi@u@hkt5S z^UR*8PhOPzDJM!5x|W)N@+q$;3TeEwhoD++s36?fU|+=$dzU9L+F5~ZGvFZa+7pGB zGD?4VS7?mu<@rs3`nF?0+j`v@%I_ZbQ-`y`v&NBZVlqfJp@FJp-Q(9y^)fq$ zd*1$>u;)fdK^!73qiO}FM#!hpVSiV7F7-g3=}}TPxaT)tnpMc0 zldFokR?$7OC)2~=A;*qwjR;zU(XXTuyc~w;4VmerUHPX4PLM+YrKK|)Iw?+o5M zo7CIH!9D$f$XI(Iq1YX2T>9Cbiiu zj;=fbbcCrHu?Tf*bI?UkK21(K>gE%t^l_4+ZWh?Bh8;N$tT)aX7|hRCTmNa!X&H*9H#T0>WpY)^?Z6YTg)oTe2w|B@)GG8_hj;utla_<)+Z2q zYz49q5ruQ65EN0O>yVBn4XU&&JcA%LmbJM)eW1tq1<0vhE1eWphenYH>b76*@}VyY5naKfLRHI z#yHNU#T`-?8vlR}bdo^{_iQECi1A$a()wOA?<;Dd7xFDb3t zDqJRAGT7r6AENg7MKVAowc@P(zsGi33!gSAnbuFj1=rhHsL)`MjV6||Y<>1cMmeb9 zqYWp{`oO`d#&^7sak|wHsn+>&HCH=#LD<8Vawqh5pAKw@hxoff_y zOTX{v^#AVuyPhztcsJuz&<-aJOcS=hf1Rx_LKV&3c8;+fDp-04zpJI)VWElGH+cFO zDw#OY)tg>HuoJ`+P@!h0n3aE<{Ig@5df{Lt{WHZjh2bwDh{rG7LW&fooX6bTN~qXY zDXz23{_i%oMGe1WT3YS^xIRjgNnOl@T9<%Cy9Cjukhiwp1$mRD){Xt_Dj%L&UC~ zv{$b5vEa-l?T=U`(~HxfY!G1*Uzgw7pFXXQKzIOTNTd zr#{Xkf(jeqVITE#%yeWZCzs7?Ij_Dfzg#YTHEZ(H$AjH_?$HcYYCRO9v?2u}j~=!f zqJw!e4*nawE%;|9lGq+#-WrohkMtN6{R1lsvX}R^k=G)-J!JJ{#@h0P#Sa8?;q!-M zqA2eTITH7AZbk`S$3=5CtJcj5%xG^yEo;{$te<=4<-^sjlo-LIkFCiNGMiokiZQIS zKrj}@sWCPF_bWI5^l!&=P3NB&cm&i+=1#InqAk)CmuU72_b}+H4vngK0%PGRmlFn> z$hU;2y%-dZeng#rXU$?Z1-rOHnC``TGaZ8VOee%H%)lTUv{Q@!oaDfV%pEHbh>`5=R|g{%mKSGb3)G12W^5U#}7SQtmN znwqoijwhb>@yntQmT%L{&zntkb+c~1GObfAb+n$2kO?6jY^aE`*R2LeLP(y6n`ox3dC+V!q61I|I(>qMOi5zOJWN z%>uV`GmB1)!POk!>OMl%BY#x2JiS;3^o#M$!O4O)vHHxT_N7OZVXN zonUVb={9>;@))#@nigr@RX2k^oy6YLn%WSJD8;R~2huwMZ;M*uj7{To7leGYBs*Jw zJ3ZY~lqkwHSNSb{zR;KvC8`q;j%5GLplROq$oT48jVQ?GpaZt`mfsOe^neoX>uB5A4u zCGN6D2v|vsS8LhZl7>6zsk5fq8fB@;o+|Za_O)6605~R!1Yv9hDeOpXe=!gC0Y7WL zyq^ADHDEngv%r^acTuEp=^oOK`Pj5R1wuz*F)j0p9@4`5USpw7g&Gxay4}NA3Ra_~ zbb;T&Xw^aqp;WoSv|uZFs zb`5&SC8TXllmRvhw$K}1C4x|5g_0^eE9HueQb#bHAmVJulg8uzsTKSYytY}dLD3h>i19B` z-f@q#nBN@;9fRMk1o8DxBP}*^fr3Vab~rih_U2Vo1>2t!6R2DYK^%4nZEMR3RV7)6 z!@Y!>2uDE~d<*pB*y%ujyeBY0;ljXHo1F}C-{nRCGQ62_x!fJq5*+yQ@@8|_Z=2X_ z#I1$5+mr9*$8nc8vculC_w=JDr2>dRrfMAOhF3x7;GBK>kB4{tpS6;1QlgK^-$Ds&Tt{Mpix4~~$!!+J%gA5?FQyGF^z1AITPn`r(w)+fW!#y;#S=Yp z*Hts+2e1ZStsifg4V#*hrgK+ZTrO*?xZ&KzKq+}5V-35=>?(Yo zi9G>W@M?Z)H+R$A&6lg{d-DURupC^=E(53Ch3slx4~1$8AAW4>iadkiG$|teVNe#D z*FTC)fE}jdP%TRL?{V0f zh&3ZdEwcw%`Z5c$6h3mqaO+rRD{HXSg8P(*g}M;KE$vaV<%U^B{GzQVwy&_@qiK8- zv>W4YqZ|4L%5!yBT{Q5nFH&4kcw@&k*bhgsx5@qi(|vlg`Z5h0HFiFq65j{+rh4Cp zZQq7{R-5>41Zz098HeCB=z?VMnzwjp=$q!1osbQ+OF4UNsHv2*BDEy~pWclkC|Wb7 z;jGFz?Y-TUs62TxV?9~SOeEs4S#S0Sg1y!4bmjclApjUWo^j5~J`Nus4$SJVI<3Af zFBa=C(9YU*i4fd9^Ibjj+(jl^vAjngTcITlFpc5w;dMn4Mva)gSyA}OyGe^l-tQb~ ze@;vm2~G@QP7O)d5?oSa3U-e4chl2o3Ti_YAu79hBoG>{C%4E3g3%y7zrluGD(~Iisyg56J%QTya!#l$#&Q^ubI<{t7 z$y9*zEnD1bZt7l-MFN@W?O&6RUC{aVuTC>Rrh-nynJ|=d2jL7n#aglu;p{*kHQ3B> z&Ugsf#T6LE9fdD1XezM>f-~X0j6C4Hn69pxMYWmrr}Lf(n8`cu@}BBe0-fN|BhNYu z#{A?GL#hGr*o5r^hsSjM(|_D*u-k)?t_CCLxc0GRz>9^2THpHa?ZpOr$ReBDjw|d+ zj7SIIJ&5>`?$ptA*OqhJ377YI+8O)p7fFHrj~*P zCYWFw0{E_xM&o3f=;N=^G*SC=swBk0^0`bK8d0^ee#;7);9xU(d^y{*M4rsPo=RkG zU|68mhqr6M?Tk`^-AeC+0-s(qD{w}uFU$GaG=tafX}UAK^WW7hA55eZJp9-Ww$_67 zv>SW+ThgbzR;+(}N#K9yB!QnC`ZV0d@Fc+yKe8t=2IM9oaDuqO1wM_vEoaRNz90iy z4Yx8*_xhn}<4dzz-BsUbbC5P2*5ufxOQ^DY>LpY;vCbrvocHvR8*;9B0CQ|>ZECE? zgrFL!9M`+a?;oOO{P!e~4X+i^9yt%Zoi!{)`#qQCa$Mf7N=y(r5))lm5>B7?q5Yfd z>sV$BFJhE7JLYuXTw!mv1{TTC%!_jA59_l3C=NTj#8~ot;(dX13T=-aA+n07T97Z zBzA3aG9>1@CTMKDniIqpHmo@n^OSoVJ9x;~mlzupWEQ_yM)sjt;Z2G=%g5ps$kpBT z>2kBFuA5c!_uXQBnQ)QscUPhu>>lF&<>2-9I&koiF}TQ#1+;V+NHPe&m8n@zF=JZ! z@%7|g$3Xe8Cu^6furzPOy!cC+T(D@+fuEa<80e1c`a+nCH6Z-Y>0(dDt32L;?uhaWKm)u3p2(3Wi=;F`;{`z;3tdZisj^D4 z`yjA_*--6#E_G`@ssyK8Z~Xn&Q)In6TMF_JtcgZrG(gEz}qH>$F4+ETVf@c z15+%V?CmBmQ@g!C!jl;zRF}G)j8>TgH{b6st%VSbQPi-CMvIl$tUr1Fc5t3eIap`pru7zIyGpI=yn7*mSEC z=&u9?c4p|TtTACj{Z^*~RodT5sL+C0VU=b!U!NU;u>=v^Fax{R=kgf@1WlJ-+Z#Hb zQpegRevHSitIOHdm(}v-{9>E2&De99gi&|;yK4773r;4Fyk(5ss}__6g9bH31R^p( zn@B1-n(ro+(wYydBdu{8nNjm02H|A@8@&x=bvO>xS|8;_{b`EneyP=Vt~{K+AEOhU z-Mf6x)OEg^o?h%3ToozAdcGm1vYik^tl%EYNWu_1IbPQgr*pit z#zc;NWQsMi=EN#lh&Mgl!Z5SQ5O2CCG3HUj9|A12ODobxK<7tBs5np`&z1|cN@u<% z9$Y>3PA^*txB0uCxH0&<@V7zE7Myk_ad^5GA^KCA%IEFtXdse|5Aj@^eqIT4}lWJvzrwxP4ICor1*{dMwR2VUIaeg1C>UL5)5B{RmYcS`I` zP)w>K_0Dh;S@q8C+UALjbsccoV#gbk=p^cSta$dvM@W3^Fqp2+r?cwsW`4KagdmCD zM$+20OMgLkT=}74xQt|9fhT+nhK{$RU0zBSA_`l#jOQ$~Z|~jf$*ayuedh#&uToAb zHp*zpd?pQQC}9PwEa6tN+V%#LvaZN}NT}NZCnU}c88x=jb|+m`yq<9xzUh2ETSG{= zT+IHyxs37Gdz9kfJDF(NCSh z{km!vm$1?5^rBguS7)>4?-A5c-OD;+4K-NC$UhfG%iwc?H42PdDFN3mBP{;6*A(^d zoTey=)V7MV$HEQe3}P4pr&y*5IM_mgW+-1~EGi}hV-Tr(Xfd4+*aI4d!~ZEi1Z_#? zALr9mGe4`YtJ7w++U~a(a?ZVD&X1-et4Rjbp8Sz3FPK|@LQWw%Hsc6}69O$JBJH>T z>uPUH05V7~K*6vR>XcpK2T2ttrd%;7*h$aO6V0`thKXz(8CPNqMMiKO8q#JbFtL7%z+bhxr4CoZR~2w51gM19)0ZS+Xm)YnwpyXHolyk^&aXCqNT6~l)1}U z6D;?FXYEyc%Y@zjeunitaOk*{