@tuki-io/tuki-widgets 0.0.219-dev.6 → 0.0.219-dev.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/contact-center/cc-import/cc-import.module.d.ts +13 -0
- package/contact-center/cc-import/cc-import.service.d.ts +85 -0
- package/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.d.ts +56 -0
- package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.d.ts +77 -0
- package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.d.ts +3 -0
- package/contact-center/cc-import/constants/cc-import.constants.d.ts +37 -0
- package/contact-center/cc-import/mock/cc-import.mock.d.ts +4 -0
- package/contact-center/cc-import/types/cc-import.d.ts +73 -0
- package/contact-center/cc-import/types/uccx.d.ts +109 -0
- package/contact-center/cc-readiness/cc-readiness.module.d.ts +3 -3
- package/contact-center/public-api.d.ts +8 -0
- package/contact-center/shared/api.endpoints.d.ts +25 -0
- package/contact-center/shared/api.service.d.ts +3 -1
- package/contact-center/shared/components/card/card.component.d.ts +13 -0
- package/contact-center/shared/dcp-api.service.d.ts +15 -0
- package/contact-center/shared/shared.module.d.ts +11 -5
- package/di2mt/api/api.endpoints.d.ts +3 -0
- package/esm2020/contact-center/cc-import/cc-import.module.mjs +45 -0
- package/esm2020/contact-center/cc-import/cc-import.service.mjs +228 -0
- package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +144 -0
- package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +243 -0
- package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +3 -0
- package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +62 -0
- package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +78 -0
- package/esm2020/contact-center/cc-import/types/cc-import.mjs +2 -0
- package/esm2020/contact-center/cc-import/types/uccx.mjs +24 -0
- package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +7 -6
- package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +5 -5
- package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +2 -2
- package/esm2020/contact-center/public-api.mjs +9 -1
- package/esm2020/contact-center/shared/api.endpoints.mjs +26 -1
- package/esm2020/contact-center/shared/api.service.mjs +8 -3
- package/esm2020/contact-center/shared/components/card/card.component.mjs +24 -0
- package/esm2020/contact-center/shared/dcp-api.service.mjs +26 -0
- package/esm2020/contact-center/shared/shared.module.mjs +15 -5
- package/esm2020/di2mt/api/api.endpoints.mjs +4 -1
- package/esm2020/locations/public-api.mjs +8 -0
- package/esm2020/locations/src/app.constants.mjs +18 -0
- package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +23 -0
- package/esm2020/locations/src/locations.component.mjs +398 -0
- package/esm2020/locations/src/locations.module.mjs +42 -0
- package/esm2020/locations/src/material.module.mjs +55 -0
- package/esm2020/locations/src/services/api.service.mjs +67 -0
- package/esm2020/locations/src/services/locations.service.mjs +69 -0
- package/esm2020/locations/src/types/location.mjs +2 -0
- package/esm2020/locations/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/locations/tuki-io-tuki-widgets-locations.mjs +5 -0
- package/esm2020/meetings/public-api.mjs +8 -0
- package/esm2020/meetings/src/app.constants.mjs +9 -0
- package/esm2020/meetings/src/components/live-meetings/live-meeting/live-meeting.component.mjs +107 -0
- package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +98 -0
- package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +110 -0
- package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +65 -0
- package/esm2020/meetings/src/material.module.mjs +76 -0
- package/esm2020/meetings/src/meetings.component.mjs +65 -0
- package/esm2020/meetings/src/meetings.module.mjs +51 -0
- package/esm2020/meetings/src/services/api.service.mjs +67 -0
- package/esm2020/meetings/src/services/live-meetings.service.mjs +178 -0
- package/esm2020/meetings/src/services/meeting-spaces.service.mjs +102 -0
- package/esm2020/meetings/src/types/live-meeting.mjs +2 -0
- package/esm2020/meetings/src/types/meeting-space.mjs +2 -0
- package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/meetings/tuki-io-tuki-widgets-meetings.mjs +5 -0
- package/esm2020/shared/public-api.mjs +4 -0
- package/esm2020/shared/src/ui/material.module.mjs +188 -0
- package/esm2020/shared/src/ui/shared.module.mjs +36 -0
- package/esm2020/shared/src/ui/tk-page-section/tk-page-section.component.mjs +13 -0
- package/esm2020/shared/src/ui/tk-page-section-row/tk-page-section-row.component.mjs +13 -0
- package/esm2020/shared/src/ui/ui.module.mjs +37 -0
- package/esm2020/shared/tuki-io-tuki-widgets-shared.mjs +5 -0
- package/esm2020/user-creation/src/utils/device-default-prefix.mjs +19 -2
- package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +4 -0
- package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +6 -3
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +60 -13
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +2 -1
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +8 -6
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +13 -9
- package/esm2020/user-device-manage/public-api.mjs +4 -1
- package/esm2020/user-device-manage/src/app.constants.mjs +9 -3
- package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +311 -0
- package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
- package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
- package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +2 -2
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +34 -17
- package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +207 -0
- package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +401 -0
- package/esm2020/user-device-manage/src/services/device.service.mjs +32 -2
- package/esm2020/user-device-manage/src/services/user.service.mjs +34 -6
- package/esm2020/user-device-manage/src/user-device-manage.module.mjs +19 -7
- package/esm2020/user-manage/src/app.constants.mjs +8 -1
- package/esm2020/user-manage/src/classes/simplified-user.mjs +19 -4
- package/esm2020/user-manage/src/device-list/device-list.component.mjs +7 -4
- package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +6 -3
- package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +9 -5
- package/esm2020/user-manage/src/material.module.mjs +21 -7
- package/esm2020/user-manage/src/services/dcp-api.service.mjs +79 -0
- package/esm2020/user-manage/src/services/site-settings.service.mjs +11 -4
- package/esm2020/user-manage/src/services/user.service.mjs +94 -19
- package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +12 -7
- package/esm2020/user-manage/src/user-manage-widget.component.mjs +90 -39
- package/esm2020/user-manage/src/user-manage.module.mjs +14 -4
- package/esm2020/user-manage/src/user-summary/user-summary.component.mjs +30 -0
- package/esm2020/users-list/src/app.constants.mjs +2 -1
- package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
- package/esm2020/users-list/src/classes/user-list.mjs +2 -1
- package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +3 -3
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +14 -3
- package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -3
- package/esm2020/users-list/src/users-list.component.mjs +100 -17
- package/esm2020/workspaces/public-api.mjs +8 -0
- package/esm2020/workspaces/src/app.constants.mjs +27 -0
- package/esm2020/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.mjs +32 -0
- package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +96 -0
- package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +66 -0
- package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +56 -0
- package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +130 -0
- package/esm2020/workspaces/src/material.module.mjs +83 -0
- package/esm2020/workspaces/src/services/api-webex.service.mjs +14 -0
- package/esm2020/workspaces/src/services/api.service.mjs +67 -0
- package/esm2020/workspaces/src/services/workspace-detail.service.mjs +169 -0
- package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +59 -0
- package/esm2020/workspaces/src/services/workspaces.service.mjs +150 -0
- package/esm2020/workspaces/src/types/workspace.mjs +4 -0
- package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +14 -0
- package/esm2020/workspaces/src/utils/device-icon.mjs +13 -0
- package/esm2020/workspaces/src/utils/workspace-name.mjs +8 -0
- package/esm2020/workspaces/src/workspaces.component.mjs +306 -0
- package/esm2020/workspaces/src/workspaces.module.mjs +54 -0
- package/esm2020/workspaces/tuki-io-tuki-widgets-workspaces.mjs +5 -0
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +998 -127
- package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +3 -0
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-locations.mjs +679 -0
- package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +894 -0
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-shared.mjs +280 -0
- package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -0
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +111 -32
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +1013 -48
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +380 -89
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +121 -22
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +1275 -0
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +989 -127
- package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +3 -0
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-locations.mjs +672 -0
- package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +902 -0
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-shared.mjs +280 -0
- package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -0
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +104 -28
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +996 -47
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +366 -82
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +120 -22
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +1276 -0
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -0
- package/locations/index.d.ts +5 -0
- package/locations/public-api.d.ts +2 -0
- package/locations/src/app.constants.d.ts +10 -0
- package/locations/src/location-confirm-dialog/location-confirm-dialog.component.d.ts +15 -0
- package/locations/src/locations.component.d.ts +92 -0
- package/locations/src/locations.module.d.ts +13 -0
- package/locations/src/material.module.d.ts +12 -0
- package/locations/src/services/api.service.d.ts +18 -0
- package/locations/src/services/locations.service.d.ts +25 -0
- package/locations/src/types/location.d.ts +30 -0
- package/locations/src/utils/app-loader/app-loader.d.ts +6 -0
- package/meetings/index.d.ts +5 -0
- package/meetings/public-api.d.ts +2 -0
- package/meetings/src/app.constants.d.ts +8 -0
- package/meetings/src/components/live-meetings/live-meeting/live-meeting.component.d.ts +34 -0
- package/meetings/src/components/live-meetings/live-meetings.component.d.ts +43 -0
- package/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.d.ts +39 -0
- package/meetings/src/components/meeting-spaces/meeting-spaces.component.d.ts +27 -0
- package/meetings/src/material.module.d.ts +15 -0
- package/meetings/src/meetings.component.d.ts +29 -0
- package/meetings/src/meetings.module.d.ts +16 -0
- package/meetings/src/services/api.service.d.ts +18 -0
- package/meetings/src/services/live-meetings.service.d.ts +9 -0
- package/meetings/src/services/meeting-spaces.service.d.ts +16 -0
- package/meetings/src/types/live-meeting.d.ts +71 -0
- package/meetings/src/types/meeting-space.d.ts +52 -0
- package/meetings/src/utils/app-loader/app-loader.d.ts +6 -0
- package/package.json +33 -1
- package/shared/index.d.ts +5 -0
- package/shared/public-api.d.ts +3 -0
- package/shared/src/ui/material.module.d.ts +28 -0
- package/shared/src/ui/shared.module.d.ts +10 -0
- package/{user-device-manage/src/shared/tk-page-section/page-section.component.d.ts → shared/src/ui/tk-page-section/tk-page-section.component.d.ts} +1 -1
- package/shared/src/ui/tk-page-section-row/tk-page-section-row.component.d.ts +6 -0
- package/shared/src/ui/ui.module.d.ts +11 -0
- package/user-creation/src/utils/device-default-prefix.d.ts +7 -2
- package/user-creation/src/utils/device-name-dynamic-tokens.d.ts +1 -0
- package/user-creation/src/utils/parse-device-name-rule.d.ts +1 -0
- package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +2 -0
- package/user-device-manage/public-api.d.ts +3 -0
- package/user-device-manage/src/app.constants.d.ts +6 -0
- package/user-device-manage/src/associate-lines/associate-lines.component.d.ts +95 -0
- package/user-device-manage/src/classes/device.d.ts +15 -0
- package/user-device-manage/src/classes/deviceProfile.d.ts +5 -0
- package/user-device-manage/src/classes/simplified-user.d.ts +1 -1
- package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +1 -0
- package/user-device-manage/src/device-manage-widget.component.d.ts +6 -1
- package/user-device-manage/src/device-settings/device-settings.component.d.ts +53 -0
- package/user-device-manage/src/line-key-config/line-key-config.component.d.ts +84 -0
- package/user-device-manage/src/services/device.service.d.ts +6 -1
- package/user-device-manage/src/services/user.service.d.ts +2 -1
- package/user-device-manage/src/user-device-manage.module.d.ts +12 -10
- package/user-manage/src/app.constants.d.ts +7 -0
- package/user-manage/src/classes/simplified-user.d.ts +17 -1
- package/user-manage/src/device-list/device-list.component.d.ts +2 -0
- package/user-manage/src/material.module.d.ts +3 -1
- package/user-manage/src/services/dcp-api.service.d.ts +21 -0
- package/user-manage/src/services/user.service.d.ts +19 -1
- package/user-manage/src/user-calling/user-calling.component.d.ts +3 -2
- package/user-manage/src/user-manage-widget.component.d.ts +14 -2
- package/user-manage/src/user-manage.module.d.ts +9 -7
- package/user-manage/src/user-summary/user-summary.component.d.ts +10 -0
- package/users-list/src/app.constants.d.ts +1 -0
- package/users-list/src/classes/simlified-user.d.ts +1 -1
- package/users-list/src/classes/user-list.d.ts +4 -0
- package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +3 -1
- package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +2 -1
- package/users-list/src/users-list.component.d.ts +6 -1
- package/workspaces/index.d.ts +5 -0
- package/workspaces/public-api.d.ts +2 -0
- package/workspaces/src/app.constants.d.ts +25 -0
- package/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.d.ts +20 -0
- package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +34 -0
- package/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.d.ts +25 -0
- package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +20 -0
- package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +43 -0
- package/workspaces/src/material.module.d.ts +16 -0
- package/workspaces/src/services/api-webex.service.d.ts +6 -0
- package/workspaces/src/services/api.service.d.ts +18 -0
- package/workspaces/src/services/workspace-detail.service.d.ts +22 -0
- package/workspaces/src/services/workspaces-migration.service.d.ts +18 -0
- package/workspaces/src/services/workspaces.service.d.ts +11 -0
- package/workspaces/src/types/workspace.d.ts +439 -0
- package/workspaces/src/utils/app-loader/app-loader.d.ts +6 -0
- package/workspaces/src/utils/device-icon.d.ts +1 -0
- package/workspaces/src/utils/workspace-name.d.ts +1 -0
- package/workspaces/src/workspaces.component.d.ts +74 -0
- package/workspaces/src/workspaces.module.d.ts +17 -0
- package/contact-center/cc-readiness/components/card/card.component.d.ts +0 -6
- package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +0 -13
- package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +0 -13
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';
|
|
2
|
+
import { Subscription, catchError, finalize, of } from 'rxjs';
|
|
3
|
+
import { CcImportService } from '../../cc-import.service';
|
|
4
|
+
import { CUSTOMER_ASSIST_MARKER_TOOLTIP, CUSTOMER_ASSIST_NOTICE, IMPORT_WIZARD_TITLE } from '../../constants/cc-import.constants';
|
|
5
|
+
import { IMPORT_WIZARD_STEPS } from './import-contact-center-wizard.types';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/material/stepper";
|
|
9
|
+
import * as i3 from "@angular/material/tooltip";
|
|
10
|
+
import * as i4 from "@angular/material/button";
|
|
11
|
+
import * as i5 from "@angular/material/form-field";
|
|
12
|
+
import * as i6 from "@angular/material/select";
|
|
13
|
+
import * as i7 from "@angular/material/core";
|
|
14
|
+
/**
|
|
15
|
+
* Full-page "Import contact center" wizard: pick a UCCX contact center, review the
|
|
16
|
+
* entities Tuki will create for it, then start the import.
|
|
17
|
+
*
|
|
18
|
+
* Rendered as a page by the host app (like `tk-user-creation-wizard`), not as a dialog -
|
|
19
|
+
* the host swaps it in when the panel's Import button is pressed and swaps it back out
|
|
20
|
+
* on `cancel` / `imported`.
|
|
21
|
+
*/
|
|
22
|
+
export class ImportContactCenterWizardComponent {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.title = IMPORT_WIZARD_TITLE;
|
|
25
|
+
/** Serve mock data instead of calling the UCCX migration API. */
|
|
26
|
+
this.useMockData = true;
|
|
27
|
+
/**
|
|
28
|
+
* Contact centers the caller has already loaded (the panel has them), so the wizard
|
|
29
|
+
* opens without a second round trip. Left unset, the wizard fetches them itself.
|
|
30
|
+
*/
|
|
31
|
+
this.contactCenters = null;
|
|
32
|
+
this.cancel = new EventEmitter();
|
|
33
|
+
this.imported = new EventEmitter();
|
|
34
|
+
this.ccImportService = inject(CcImportService);
|
|
35
|
+
this.subscriptions = new Subscription();
|
|
36
|
+
this.customerAssistNotice = CUSTOMER_ASSIST_NOTICE;
|
|
37
|
+
this.customerAssistMarkerTooltip = CUSTOMER_ASSIST_MARKER_TOOLTIP;
|
|
38
|
+
this.selectedIndex = 0;
|
|
39
|
+
/** Contact centers awaiting review - the ones there is something to import. */
|
|
40
|
+
this.options = [];
|
|
41
|
+
/** `options` narrowed by the picker's search box. */
|
|
42
|
+
this.filteredOptions = [];
|
|
43
|
+
this.searchTerm = '';
|
|
44
|
+
this.selected = null;
|
|
45
|
+
this.noticeDismissed = false;
|
|
46
|
+
this.loading = false;
|
|
47
|
+
this.error = false;
|
|
48
|
+
this.entityGroups = [];
|
|
49
|
+
/** Which entity group the Overview step's tab bar is showing. */
|
|
50
|
+
this.activeGroupIndex = 0;
|
|
51
|
+
this.entitiesLoading = false;
|
|
52
|
+
this.entitiesError = false;
|
|
53
|
+
this.importing = false;
|
|
54
|
+
this.importError = false;
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
this.load();
|
|
58
|
+
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
const reloadTriggers = ['customerId', 'host', 'dcpHost', 'token', 'useMockData', 'contactCenters'];
|
|
61
|
+
if (reloadTriggers.some(input => changes[input] && !changes[input].firstChange)) {
|
|
62
|
+
this.load();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.subscriptions.unsubscribe();
|
|
67
|
+
}
|
|
68
|
+
get canGoNext() {
|
|
69
|
+
return !!this.selected;
|
|
70
|
+
}
|
|
71
|
+
/** The Customer Assist advisory, until the user dismisses it or picks something else. */
|
|
72
|
+
get showCustomerAssistNotice() {
|
|
73
|
+
return !!this.selected?.customerAssistCapable && !this.noticeDismissed;
|
|
74
|
+
}
|
|
75
|
+
get canImport() {
|
|
76
|
+
return !!this.selected && !this.importing && !this.entitiesLoading && !this.entitiesError;
|
|
77
|
+
}
|
|
78
|
+
onCancel() {
|
|
79
|
+
this.cancel.emit();
|
|
80
|
+
}
|
|
81
|
+
onSelect(applicationId) {
|
|
82
|
+
const selected = this.options.find(option => option.applicationId === applicationId) ?? null;
|
|
83
|
+
if (selected === this.selected) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
this.selected = selected;
|
|
87
|
+
this.noticeDismissed = false;
|
|
88
|
+
// Entities belong to the previously selected contact center - drop them so the
|
|
89
|
+
// overview step refetches for the new one.
|
|
90
|
+
this.entityGroups = [];
|
|
91
|
+
this.activeGroupIndex = 0;
|
|
92
|
+
this.entitiesError = false;
|
|
93
|
+
}
|
|
94
|
+
get activeGroup() {
|
|
95
|
+
return this.entityGroups[this.activeGroupIndex];
|
|
96
|
+
}
|
|
97
|
+
selectGroup(index) {
|
|
98
|
+
this.activeGroupIndex = index;
|
|
99
|
+
}
|
|
100
|
+
dismissNotice() {
|
|
101
|
+
this.noticeDismissed = true;
|
|
102
|
+
}
|
|
103
|
+
onSearch(event) {
|
|
104
|
+
this.searchTerm = event.target.value;
|
|
105
|
+
this.filter();
|
|
106
|
+
}
|
|
107
|
+
/** Resets the search box each time the picker's panel is closed. */
|
|
108
|
+
onPanelToggle(opened) {
|
|
109
|
+
if (!opened && this.searchTerm) {
|
|
110
|
+
this.searchTerm = '';
|
|
111
|
+
this.filter();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
onStepSelectionChange(event) {
|
|
115
|
+
this.selectedIndex = event.selectedIndex;
|
|
116
|
+
if (this.stepIdAt(event.selectedIndex) === 'overview') {
|
|
117
|
+
this.loadEntities();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
onNext(stepper) {
|
|
121
|
+
if (this.canGoNext) {
|
|
122
|
+
stepper.next();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
onPrevious(stepper) {
|
|
126
|
+
stepper.previous();
|
|
127
|
+
}
|
|
128
|
+
runImport() {
|
|
129
|
+
if (!this.selected || this.importing) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.importing = true;
|
|
133
|
+
this.importError = false;
|
|
134
|
+
this.subscriptions.add(this.ccImportService.importContactCenter(Number(this.customerId), this.selected.applicationId)
|
|
135
|
+
.pipe(catchError(error => {
|
|
136
|
+
console.error('Unable to start the contact-center import', error);
|
|
137
|
+
this.importError = true;
|
|
138
|
+
return of(null);
|
|
139
|
+
}), finalize(() => this.importing = false))
|
|
140
|
+
.subscribe(result => {
|
|
141
|
+
if (result) {
|
|
142
|
+
this.imported.emit(result);
|
|
143
|
+
}
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
stepIdAt(index) {
|
|
147
|
+
return IMPORT_WIZARD_STEPS[index];
|
|
148
|
+
}
|
|
149
|
+
load() {
|
|
150
|
+
this.ccImportService.useMockData = this.useMockData;
|
|
151
|
+
if (this.host) {
|
|
152
|
+
this.ccImportService.setHost(this.host);
|
|
153
|
+
}
|
|
154
|
+
if (this.dcpHost) {
|
|
155
|
+
this.ccImportService.setDcpHost(this.dcpHost);
|
|
156
|
+
}
|
|
157
|
+
if (this.token) {
|
|
158
|
+
this.ccImportService.setToken(this.token);
|
|
159
|
+
}
|
|
160
|
+
if (this.contactCenters) {
|
|
161
|
+
this.setOptions(this.contactCenters);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const customerId = Number(this.customerId);
|
|
165
|
+
if (!this.useMockData && (!customerId || !this.token)) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
this.loading = true;
|
|
169
|
+
this.error = false;
|
|
170
|
+
this.subscriptions.add(this.ccImportService.fetchContactCenters(customerId)
|
|
171
|
+
.pipe(catchError(error => {
|
|
172
|
+
console.error('Unable to load the contact centers', error);
|
|
173
|
+
this.error = true;
|
|
174
|
+
return of([]);
|
|
175
|
+
}), finalize(() => this.loading = false))
|
|
176
|
+
.subscribe(contactCenters => this.setOptions(contactCenters)));
|
|
177
|
+
}
|
|
178
|
+
setOptions(contactCenters) {
|
|
179
|
+
// Left in source order on purpose - the picker shows them the way the backend
|
|
180
|
+
// (and the mock) hands them over, not alphabetically.
|
|
181
|
+
//
|
|
182
|
+
// Eligible for a Webex Contact Center import: not imported yet, and either
|
|
183
|
+
// unsupported on Customer Assist or reviewable for full feature coverage.
|
|
184
|
+
this.options = contactCenters.filter(contactCenter => contactCenter.migrationState !== 'migrated'
|
|
185
|
+
&& (contactCenter.compatibilityStatus === 'unsupported'
|
|
186
|
+
|| contactCenter.compatibilityStatus === 'requires-review'));
|
|
187
|
+
// A contact center selected before a reload may no longer be importable.
|
|
188
|
+
if (this.selected && !this.options.some(option => option.applicationId === this.selected?.applicationId)) {
|
|
189
|
+
this.selected = null;
|
|
190
|
+
this.entityGroups = [];
|
|
191
|
+
this.activeGroupIndex = 0;
|
|
192
|
+
}
|
|
193
|
+
this.filter();
|
|
194
|
+
}
|
|
195
|
+
filter() {
|
|
196
|
+
const needle = this.searchTerm.trim().toLowerCase();
|
|
197
|
+
this.filteredOptions = needle
|
|
198
|
+
? this.options.filter(option => option.applicationName.toLowerCase().includes(needle))
|
|
199
|
+
: this.options;
|
|
200
|
+
}
|
|
201
|
+
loadEntities() {
|
|
202
|
+
if (!this.selected || this.entityGroups.length || this.entitiesLoading) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this.entitiesLoading = true;
|
|
206
|
+
this.entitiesError = false;
|
|
207
|
+
this.subscriptions.add(this.ccImportService.fetchContactCenterEntities(Number(this.customerId), this.selected)
|
|
208
|
+
.pipe(catchError(error => {
|
|
209
|
+
console.error('Unable to load the contact-center entities', error);
|
|
210
|
+
this.entitiesError = true;
|
|
211
|
+
return of(null);
|
|
212
|
+
}), finalize(() => this.entitiesLoading = false))
|
|
213
|
+
.subscribe(entities => {
|
|
214
|
+
this.entityGroups = entities ? entities.groups : [];
|
|
215
|
+
this.activeGroupIndex = 0;
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
ImportContactCenterWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImportContactCenterWizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
+
ImportContactCenterWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImportContactCenterWizardComponent, selector: "cc-import-contact-center-wizard", inputs: { title: "title", customerId: "customerId", host: "host", dcpHost: "dcpHost", token: "token", useMockData: "useMockData", contactCenters: "contactCenters" }, outputs: { cancel: "cancel", imported: "imported" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"move-user-stepper-container\" [attr.aria-busy]=\"importing\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">{{ title }}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon cc-import-close-icon\" (click)=\"onCancel()\" role=\"button\" aria-label=\"Close\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </header>\r\n\r\n <div id=\"cc-import-stepper\">\r\n <mat-stepper\r\n #stepper\r\n [linear]=\"true\"\r\n labelPosition=\"bottom\"\r\n [selectedIndex]=\"selectedIndex\"\r\n (selectionChange)=\"onStepSelectionChange($event)\"\r\n >\r\n\r\n <!-- Step 1: pick the UCCX contact center -->\r\n <mat-step [completed]=\"canGoNext\">\r\n <ng-template matStepLabel>Select</ng-template>\r\n\r\n <div class=\"cc-import-notice\" *ngIf=\"showCustomerAssistNotice\" role=\"status\">\r\n <span class=\"cc-import-notice__icon\" aria-hidden=\"true\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"currentColor\" />\r\n <path d=\"M8 7.1v4.2\" stroke=\"#fff\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"4.8\" r=\"0.9\" fill=\"#fff\" />\r\n </svg>\r\n </span>\r\n <span class=\"cc-import-notice__text\">{{ customerAssistNotice }}</span>\r\n <button type=\"button\" class=\"cc-import-notice__close\" aria-label=\"Dismiss\" (click)=\"dismissNotice()\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"step-title\">Step 1: Select contact center</div>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <div class=\"cc-import-state\" *ngIf=\"loading\">Loading contact centers…</div>\r\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"!loading && error\">\r\n Unable to load contact centers.\r\n </div>\r\n\r\n <section class=\"cc-import-step-content\" *ngIf=\"!loading && !error\">\r\n <div class=\"cc-import-field\">\r\n <label class=\"cc-import-label\" for=\"cc-import-contact-center\">Contact center</label>\r\n\r\n <mat-form-field class=\"cc-import-select\" appearance=\"outline\">\r\n <mat-select\r\n id=\"cc-import-contact-center\"\r\n panelClass=\"cc-import-select-panel\"\r\n placeholder=\"Select contact center\"\r\n [disableOptionCentering]=\"true\"\r\n [value]=\"selected?.applicationId ?? null\"\r\n (selectionChange)=\"onSelect($event.value)\"\r\n (openedChange)=\"onPanelToggle($event)\"\r\n >\r\n <mat-select-trigger>{{ selected?.applicationName }}</mat-select-trigger>\r\n\r\n <!-- Search box pinned above the options. Keystrokes are stopped here so\r\n mat-select's own typeahead does not steal them. -->\r\n <div class=\"cc-import-select-search\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"cc-import-select-search__icon\" aria-hidden=\"true\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <circle cx=\"7\" cy=\"7\" r=\"4.6\" stroke=\"currentColor\" stroke-width=\"1.4\" />\r\n <path d=\"M10.6 10.6L14 14\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n <input\r\n class=\"cc-import-select-search__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n placeholder=\"Search\"\r\n aria-label=\"Search contact centers\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearch($event)\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n />\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.applicationId\">\r\n <div class=\"option-row\">\r\n <span class=\"name\">{{ option.applicationName }}</span>\r\n <span\r\n class=\"cc-import-option-marker\"\r\n *ngIf=\"option.customerAssistCapable\"\r\n [matTooltip]=\"customerAssistMarkerTooltip\"\r\n aria-hidden=\"true\"\r\n >\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8 2.2 14.6 13.4H1.4L8 2.2Z\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"11.3\" r=\"0.7\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <p class=\"cc-import-empty\" *ngIf=\"!options.length\">\r\n Every detected contact center has already been imported.\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n </mat-step>\r\n\r\n <!-- Step 2: the entities Tuki will create for it -->\r\n <mat-step>\r\n <ng-template matStepLabel>Overview</ng-template>\r\n\r\n <div class=\"step-title\">Overview</div>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <h3 class=\"cc-import-card-title\">Review Contact Center Settings</h3>\r\n <p class=\"cc-import-card-text\">\r\n Review the settings for your new Contact center to make sure everything is correct.<br />\r\n You can make changes at any time by clicking on the name of the contact center on the dedicated page.\r\n </p>\r\n\r\n <div class=\"cc-import-state\" *ngIf=\"entitiesLoading\">Loading entities…</div>\r\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"entitiesError\">\r\n Unable to load the related entities.\r\n </div>\r\n\r\n <ng-container *ngIf=\"!entitiesLoading && !entitiesError && entityGroups.length\">\r\n <div class=\"cc-import-tabs\" role=\"tablist\">\r\n <button\r\n type=\"button\"\r\n class=\"cc-import-tab\"\r\n *ngFor=\"let group of entityGroups; index as i\"\r\n role=\"tab\"\r\n [attr.aria-selected]=\"i === activeGroupIndex\"\r\n [class.cc-import-tab--active]=\"i === activeGroupIndex\"\r\n (click)=\"selectGroup(i)\"\r\n >\r\n {{ group.label }}\r\n </button>\r\n </div>\r\n\r\n <ul class=\"cc-import-items\" role=\"tabpanel\">\r\n <li class=\"cc-import-item\" *ngFor=\"let item of activeGroup?.items\">{{ item }}</li>\r\n <li class=\"cc-import-item cc-import-item--empty\" *ngIf=\"!activeGroup?.items?.length\">\r\n Nothing to create for {{ activeGroup?.label }}.\r\n </li>\r\n </ul>\r\n </ng-container>\r\n\r\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"importError\">\r\n Unable to start the import. Please try again.\r\n </div>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n\r\n <div class=\"wizard-actions\">\r\n <ng-container [ngSwitch]=\"stepper.selectedIndex\">\r\n <ng-container *ngSwitchCase=\"0\">\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-primary\"\r\n type=\"button\"\r\n [disabled]=\"!canGoNext\"\r\n (click)=\"onNext(stepper)\"\r\n >\r\n Next\r\n </button>\r\n <button mat-button class=\"uc-btn uc-btn-secondary\" type=\"button\" (click)=\"onCancel()\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"1\">\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-primary\"\r\n type=\"button\"\r\n [disabled]=\"!canImport\"\r\n (click)=\"runImport()\"\r\n >\r\n <span class=\"uc-btn__inline-content\">\r\n <span class=\"uc-btn__spinner\" *ngIf=\"importing\" aria-hidden=\"true\"></span>\r\n <span>{{ importing ? 'Importing...' : 'Import' }}</span>\r\n </span>\r\n </button>\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-secondary\"\r\n type=\"button\"\r\n [disabled]=\"importing\"\r\n (click)=\"onPrevious(stepper)\"\r\n >\r\n Previous\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wizard-loading-overlay\" [class.wizard-loading-overlay--visible]=\"importing\" aria-hidden=\"true\"></div>\r\n</div>\r\n", styles: ["cc-import-contact-center-wizard{display:block;width:100%;min-height:100vh}.move-user-stepper-container{background-color:#f3f3f3;padding:0 0 16px;position:relative;overflow:hidden;box-sizing:border-box;min-height:100vh;display:flex;flex-direction:column}.move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:0}.app-icon{height:20px;width:20px;display:block;cursor:pointer}.cc-import-close-icon{color:#fffffff2}#cc-import-stepper{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-stepper-horizontal{margin:0 auto;width:100%;background-color:transparent;display:flex;flex-direction:column;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}#cc-import-stepper .mat-step-icon{width:28px;height:28px;border:3px solid hsl(0,0%,50.2%)}#cc-import-stepper .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}#cc-import-stepper .mat-step-icon-state-number{background-color:#fff}#cc-import-stepper .mat-step-icon-state-edit,#cc-import-stepper .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}#cc-import-stepper .mat-step-icon-content{display:none}#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}#cc-import-stepper .mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header:after,#cc-import-stepper .mat-stepper-horizontal-line{border-top-color:#1170cf!important;border-top-width:3px!important;border-top-style:solid!important}#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-stepper-horizontal-line,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:after{border-top-width:3px!important;background-color:#7b7b7b!important;border-top-color:#7b7b7b!important}#cc-import-stepper .mat-horizontal-content-container{padding:0!important;margin-top:3rem}#cc-import-stepper .mat-horizontal-stepper-content[aria-expanded=true]{padding-bottom:0}.step-title{font-size:26px;font-weight:500;width:70%;margin:0 auto 1rem;min-height:32px;display:flex;align-items:center}.wizard-actions{display:flex;flex-flow:row-reverse;justify-content:flex-start;align-items:center;margin:16px 16px 0 0;align-self:flex-end;gap:1rem;position:relative;z-index:30}.uc-btn{border-radius:50px!important;padding:8px 16px!important;min-width:80px!important;line-height:normal!important;cursor:pointer}.uc-btn__inline-content{display:inline-flex;align-items:center;gap:8px}.uc-btn__spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:uc-btn-spin .7s linear infinite}@keyframes uc-btn-spin{to{transform:rotate(360deg)}}.uc-btn-primary{background-color:#000!important;color:#fff!important;border:1px solid black!important}.uc-btn-secondary{background-color:#fff!important;color:#000!important;border:1px solid black!important}.wizard-actions .uc-btn-primary.mat-button-disabled{background-color:#bbb;color:#fff;border:1px solid grey;cursor:default!important;opacity:.3}.move-user-tab-content-box{width:70%;margin:0 auto;background-color:#fff;min-height:350px;border:1px solid #c3c1c1;border-radius:8px;box-sizing:border-box;padding:25px}.wizard-loading-overlay{position:absolute;inset:0;background:rgba(243,243,243,.72);backdrop-filter:blur(1px);opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:20}.wizard-loading-overlay--visible{opacity:1;pointer-events:auto}.cc-import-notice{width:70%;margin:0 auto 1rem;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:4px;background-color:#e8f2fc;color:#2a2f3b;font-size:13px;line-height:1.4}.cc-import-notice__icon{display:flex;color:#1170cf;line-height:0}.cc-import-notice__text{flex:1}.cc-import-notice__close{background:none;border:none;padding:0;cursor:pointer;display:flex;color:#5a6172;line-height:0}.cc-import-step-content{display:flex;flex-direction:column;gap:20px;max-width:420px}.cc-import-field{display:flex;flex-direction:column;gap:10px}.cc-import-label{font-size:14px;font-weight:400;line-height:100%;letter-spacing:.1px;color:#2a2f3b}.cc-import-select{width:100%;max-width:333px}.cc-import-empty{margin:0;font-size:13px;color:#5a6172}.cc-import-state{font-size:14px;color:#5a6172}.cc-import-state--error{color:#c0392b}.cc-import-card-title{margin:0 0 8px;font-size:15px;font-weight:700;color:#2a2f3b}.cc-import-card-text{margin:0 0 22px;font-size:14px;line-height:1.6;color:#2a2f3b}.cc-import-tabs{display:flex;flex-wrap:wrap;gap:20px}.cc-import-tab{background:none;border:none;border-bottom:2px solid transparent;padding:0 0 8px;font:inherit;font-size:14px;color:#5a6172;cursor:pointer}.cc-import-tab--active{color:#000;font-weight:600;border-bottom-color:#000}.cc-import-items{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.cc-import-item{font-size:14px;color:#2a2f3b}.cc-import-item--empty{color:#5a6172;font-style:italic}.cc-import-select .mat-form-field-wrapper{padding-bottom:0}.cc-import-select .mat-form-field-flex{align-items:center;height:32px;border:1px solid #767676;border-radius:6px;padding:0 12px}.cc-import-select .mat-form-field-outline,.cc-import-select .mat-form-field-outline-start,.cc-import-select .mat-form-field-outline-end,.cc-import-select .mat-form-field-outline-gap{display:none}.cc-import-select .mat-form-field-infix{width:100%;border-top:0;padding:0}.cc-import-select .mat-select-trigger{display:flex;align-items:center;justify-content:space-between;height:100%}.cc-import-select-panel .option-row{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.cc-import-select-panel .cc-import-option-marker{display:flex;color:#b26a00;line-height:0}.cc-import-select-search{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;margin:4px 8px 8px;padding:0 10px;height:30px;border:1px solid #c3c1c1;border-radius:50px;background-color:#fff}.cc-import-select-search__icon{display:flex;color:#5a6172;line-height:0}.cc-import-select-search__input{flex:1;border:none;outline:none;font:inherit;font-size:13px;color:#2a2f3b;background:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i2.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i2.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i6.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImportContactCenterWizardComponent, decorators: [{
|
|
222
|
+
type: Component,
|
|
223
|
+
args: [{ selector: 'cc-import-contact-center-wizard', encapsulation: ViewEncapsulation.None, template: "<div class=\"move-user-stepper-container\" [attr.aria-busy]=\"importing\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">{{ title }}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon cc-import-close-icon\" (click)=\"onCancel()\" role=\"button\" aria-label=\"Close\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </header>\r\n\r\n <div id=\"cc-import-stepper\">\r\n <mat-stepper\r\n #stepper\r\n [linear]=\"true\"\r\n labelPosition=\"bottom\"\r\n [selectedIndex]=\"selectedIndex\"\r\n (selectionChange)=\"onStepSelectionChange($event)\"\r\n >\r\n\r\n <!-- Step 1: pick the UCCX contact center -->\r\n <mat-step [completed]=\"canGoNext\">\r\n <ng-template matStepLabel>Select</ng-template>\r\n\r\n <div class=\"cc-import-notice\" *ngIf=\"showCustomerAssistNotice\" role=\"status\">\r\n <span class=\"cc-import-notice__icon\" aria-hidden=\"true\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"currentColor\" />\r\n <path d=\"M8 7.1v4.2\" stroke=\"#fff\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"4.8\" r=\"0.9\" fill=\"#fff\" />\r\n </svg>\r\n </span>\r\n <span class=\"cc-import-notice__text\">{{ customerAssistNotice }}</span>\r\n <button type=\"button\" class=\"cc-import-notice__close\" aria-label=\"Dismiss\" (click)=\"dismissNotice()\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"step-title\">Step 1: Select contact center</div>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <div class=\"cc-import-state\" *ngIf=\"loading\">Loading contact centers…</div>\r\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"!loading && error\">\r\n Unable to load contact centers.\r\n </div>\r\n\r\n <section class=\"cc-import-step-content\" *ngIf=\"!loading && !error\">\r\n <div class=\"cc-import-field\">\r\n <label class=\"cc-import-label\" for=\"cc-import-contact-center\">Contact center</label>\r\n\r\n <mat-form-field class=\"cc-import-select\" appearance=\"outline\">\r\n <mat-select\r\n id=\"cc-import-contact-center\"\r\n panelClass=\"cc-import-select-panel\"\r\n placeholder=\"Select contact center\"\r\n [disableOptionCentering]=\"true\"\r\n [value]=\"selected?.applicationId ?? null\"\r\n (selectionChange)=\"onSelect($event.value)\"\r\n (openedChange)=\"onPanelToggle($event)\"\r\n >\r\n <mat-select-trigger>{{ selected?.applicationName }}</mat-select-trigger>\r\n\r\n <!-- Search box pinned above the options. Keystrokes are stopped here so\r\n mat-select's own typeahead does not steal them. -->\r\n <div class=\"cc-import-select-search\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"cc-import-select-search__icon\" aria-hidden=\"true\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <circle cx=\"7\" cy=\"7\" r=\"4.6\" stroke=\"currentColor\" stroke-width=\"1.4\" />\r\n <path d=\"M10.6 10.6L14 14\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\r\n </svg>\r\n </span>\r\n <input\r\n class=\"cc-import-select-search__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n placeholder=\"Search\"\r\n aria-label=\"Search contact centers\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearch($event)\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n />\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.applicationId\">\r\n <div class=\"option-row\">\r\n <span class=\"name\">{{ option.applicationName }}</span>\r\n <span\r\n class=\"cc-import-option-marker\"\r\n *ngIf=\"option.customerAssistCapable\"\r\n [matTooltip]=\"customerAssistMarkerTooltip\"\r\n aria-hidden=\"true\"\r\n >\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8 2.2 14.6 13.4H1.4L8 2.2Z\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"11.3\" r=\"0.7\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <p class=\"cc-import-empty\" *ngIf=\"!options.length\">\r\n Every detected contact center has already been imported.\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n </mat-step>\r\n\r\n <!-- Step 2: the entities Tuki will create for it -->\r\n <mat-step>\r\n <ng-template matStepLabel>Overview</ng-template>\r\n\r\n <div class=\"step-title\">Overview</div>\r\n\r\n <div class=\"move-user-tab-content-box\">\r\n <h3 class=\"cc-import-card-title\">Review Contact Center Settings</h3>\r\n <p class=\"cc-import-card-text\">\r\n Review the settings for your new Contact center to make sure everything is correct.<br />\r\n You can make changes at any time by clicking on the name of the contact center on the dedicated page.\r\n </p>\r\n\r\n <div class=\"cc-import-state\" *ngIf=\"entitiesLoading\">Loading entities…</div>\r\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"entitiesError\">\r\n Unable to load the related entities.\r\n </div>\r\n\r\n <ng-container *ngIf=\"!entitiesLoading && !entitiesError && entityGroups.length\">\r\n <div class=\"cc-import-tabs\" role=\"tablist\">\r\n <button\r\n type=\"button\"\r\n class=\"cc-import-tab\"\r\n *ngFor=\"let group of entityGroups; index as i\"\r\n role=\"tab\"\r\n [attr.aria-selected]=\"i === activeGroupIndex\"\r\n [class.cc-import-tab--active]=\"i === activeGroupIndex\"\r\n (click)=\"selectGroup(i)\"\r\n >\r\n {{ group.label }}\r\n </button>\r\n </div>\r\n\r\n <ul class=\"cc-import-items\" role=\"tabpanel\">\r\n <li class=\"cc-import-item\" *ngFor=\"let item of activeGroup?.items\">{{ item }}</li>\r\n <li class=\"cc-import-item cc-import-item--empty\" *ngIf=\"!activeGroup?.items?.length\">\r\n Nothing to create for {{ activeGroup?.label }}.\r\n </li>\r\n </ul>\r\n </ng-container>\r\n\r\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"importError\">\r\n Unable to start the import. Please try again.\r\n </div>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n\r\n <div class=\"wizard-actions\">\r\n <ng-container [ngSwitch]=\"stepper.selectedIndex\">\r\n <ng-container *ngSwitchCase=\"0\">\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-primary\"\r\n type=\"button\"\r\n [disabled]=\"!canGoNext\"\r\n (click)=\"onNext(stepper)\"\r\n >\r\n Next\r\n </button>\r\n <button mat-button class=\"uc-btn uc-btn-secondary\" type=\"button\" (click)=\"onCancel()\">\r\n Cancel\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"1\">\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-primary\"\r\n type=\"button\"\r\n [disabled]=\"!canImport\"\r\n (click)=\"runImport()\"\r\n >\r\n <span class=\"uc-btn__inline-content\">\r\n <span class=\"uc-btn__spinner\" *ngIf=\"importing\" aria-hidden=\"true\"></span>\r\n <span>{{ importing ? 'Importing...' : 'Import' }}</span>\r\n </span>\r\n </button>\r\n <button\r\n mat-button\r\n class=\"uc-btn uc-btn-secondary\"\r\n type=\"button\"\r\n [disabled]=\"importing\"\r\n (click)=\"onPrevious(stepper)\"\r\n >\r\n Previous\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wizard-loading-overlay\" [class.wizard-loading-overlay--visible]=\"importing\" aria-hidden=\"true\"></div>\r\n</div>\r\n", styles: ["cc-import-contact-center-wizard{display:block;width:100%;min-height:100vh}.move-user-stepper-container{background-color:#f3f3f3;padding:0 0 16px;position:relative;overflow:hidden;box-sizing:border-box;min-height:100vh;display:flex;flex-direction:column}.move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:0}.app-icon{height:20px;width:20px;display:block;cursor:pointer}.cc-import-close-icon{color:#fffffff2}#cc-import-stepper{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-stepper-horizontal{margin:0 auto;width:100%;background-color:transparent;display:flex;flex-direction:column;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}#cc-import-stepper .mat-step-icon{width:28px;height:28px;border:3px solid hsl(0,0%,50.2%)}#cc-import-stepper .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}#cc-import-stepper .mat-step-icon-state-number{background-color:#fff}#cc-import-stepper .mat-step-icon-state-edit,#cc-import-stepper .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}#cc-import-stepper .mat-step-icon-content{display:none}#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}#cc-import-stepper .mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header:after,#cc-import-stepper .mat-stepper-horizontal-line{border-top-color:#1170cf!important;border-top-width:3px!important;border-top-style:solid!important}#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-stepper-horizontal-line,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:after{border-top-width:3px!important;background-color:#7b7b7b!important;border-top-color:#7b7b7b!important}#cc-import-stepper .mat-horizontal-content-container{padding:0!important;margin-top:3rem}#cc-import-stepper .mat-horizontal-stepper-content[aria-expanded=true]{padding-bottom:0}.step-title{font-size:26px;font-weight:500;width:70%;margin:0 auto 1rem;min-height:32px;display:flex;align-items:center}.wizard-actions{display:flex;flex-flow:row-reverse;justify-content:flex-start;align-items:center;margin:16px 16px 0 0;align-self:flex-end;gap:1rem;position:relative;z-index:30}.uc-btn{border-radius:50px!important;padding:8px 16px!important;min-width:80px!important;line-height:normal!important;cursor:pointer}.uc-btn__inline-content{display:inline-flex;align-items:center;gap:8px}.uc-btn__spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:uc-btn-spin .7s linear infinite}@keyframes uc-btn-spin{to{transform:rotate(360deg)}}.uc-btn-primary{background-color:#000!important;color:#fff!important;border:1px solid black!important}.uc-btn-secondary{background-color:#fff!important;color:#000!important;border:1px solid black!important}.wizard-actions .uc-btn-primary.mat-button-disabled{background-color:#bbb;color:#fff;border:1px solid grey;cursor:default!important;opacity:.3}.move-user-tab-content-box{width:70%;margin:0 auto;background-color:#fff;min-height:350px;border:1px solid #c3c1c1;border-radius:8px;box-sizing:border-box;padding:25px}.wizard-loading-overlay{position:absolute;inset:0;background:rgba(243,243,243,.72);backdrop-filter:blur(1px);opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:20}.wizard-loading-overlay--visible{opacity:1;pointer-events:auto}.cc-import-notice{width:70%;margin:0 auto 1rem;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:4px;background-color:#e8f2fc;color:#2a2f3b;font-size:13px;line-height:1.4}.cc-import-notice__icon{display:flex;color:#1170cf;line-height:0}.cc-import-notice__text{flex:1}.cc-import-notice__close{background:none;border:none;padding:0;cursor:pointer;display:flex;color:#5a6172;line-height:0}.cc-import-step-content{display:flex;flex-direction:column;gap:20px;max-width:420px}.cc-import-field{display:flex;flex-direction:column;gap:10px}.cc-import-label{font-size:14px;font-weight:400;line-height:100%;letter-spacing:.1px;color:#2a2f3b}.cc-import-select{width:100%;max-width:333px}.cc-import-empty{margin:0;font-size:13px;color:#5a6172}.cc-import-state{font-size:14px;color:#5a6172}.cc-import-state--error{color:#c0392b}.cc-import-card-title{margin:0 0 8px;font-size:15px;font-weight:700;color:#2a2f3b}.cc-import-card-text{margin:0 0 22px;font-size:14px;line-height:1.6;color:#2a2f3b}.cc-import-tabs{display:flex;flex-wrap:wrap;gap:20px}.cc-import-tab{background:none;border:none;border-bottom:2px solid transparent;padding:0 0 8px;font:inherit;font-size:14px;color:#5a6172;cursor:pointer}.cc-import-tab--active{color:#000;font-weight:600;border-bottom-color:#000}.cc-import-items{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.cc-import-item{font-size:14px;color:#2a2f3b}.cc-import-item--empty{color:#5a6172;font-style:italic}.cc-import-select .mat-form-field-wrapper{padding-bottom:0}.cc-import-select .mat-form-field-flex{align-items:center;height:32px;border:1px solid #767676;border-radius:6px;padding:0 12px}.cc-import-select .mat-form-field-outline,.cc-import-select .mat-form-field-outline-start,.cc-import-select .mat-form-field-outline-end,.cc-import-select .mat-form-field-outline-gap{display:none}.cc-import-select .mat-form-field-infix{width:100%;border-top:0;padding:0}.cc-import-select .mat-select-trigger{display:flex;align-items:center;justify-content:space-between;height:100%}.cc-import-select-panel .option-row{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.cc-import-select-panel .cc-import-option-marker{display:flex;color:#b26a00;line-height:0}.cc-import-select-search{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;margin:4px 8px 8px;padding:0 10px;height:30px;border:1px solid #c3c1c1;border-radius:50px;background-color:#fff}.cc-import-select-search__icon{display:flex;color:#5a6172;line-height:0}.cc-import-select-search__input{flex:1;border:none;outline:none;font:inherit;font-size:13px;color:#2a2f3b;background:transparent}\n"] }]
|
|
224
|
+
}], propDecorators: { title: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], customerId: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], host: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], dcpHost: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], token: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], useMockData: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], contactCenters: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], cancel: [{
|
|
239
|
+
type: Output
|
|
240
|
+
}], imported: [{
|
|
241
|
+
type: Output
|
|
242
|
+
}] } });
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtaW1wb3J0L2NvbXBvbmVudHMvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvSSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsSSxPQUFPLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQUUvRjs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLGtDQUFrQztJQU4vQztRQU9hLFVBQUssR0FBRyxtQkFBbUIsQ0FBQztRQU1yQyxpRUFBaUU7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDNUI7OztXQUdHO1FBQ00sbUJBQWMsR0FBMkIs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QU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RlcHBlclNlbGVjdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgY2F0Y2hFcnJvciwgZmluYWxpemUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENjSW1wb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL2NjLWltcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ1VTVE9NRVJfQVNTSVNUX01BUktFUl9UT09MVElQLCBDVVNUT01FUl9BU1NJU1RfTk9USUNFLCBJTVBPUlRfV0laQVJEX1RJVExFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NjLWltcG9ydC5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb250YWN0Q2VudGVyLCBDb250YWN0Q2VudGVyRW50aXR5R3JvdXAsIEltcG9ydFJlc3VsdCB9IGZyb20gJy4uLy4uL3R5cGVzL2NjLWltcG9ydCc7XHJcbmltcG9ydCB7IElNUE9SVF9XSVpBUkRfU1RFUFMsIEltcG9ydFdpemFyZFN0ZXBJZCB9IGZyb20gJy4vaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC50eXBlcyc7XHJcblxyXG4vKipcclxuICogRnVsbC1wYWdlIFwiSW1wb3J0IGNvbnRhY3QgY2VudGVyXCIgd2l6YXJkOiBwaWNrIGEgVUNDWCBjb250YWN0IGNlbnRlciwgcmV2aWV3IHRoZVxyXG4gKiBlbnRpdGllcyBUdWtpIHdpbGwgY3JlYXRlIGZvciBpdCwgdGhlbiBzdGFydCB0aGUgaW1wb3J0LlxyXG4gKlxyXG4gKiBSZW5kZXJlZCBhcyBhIHBhZ2UgYnkgdGhlIGhvc3QgYXBwIChsaWtlIGB0ay11c2VyLWNyZWF0aW9uLXdpemFyZGApLCBub3QgYXMgYSBkaWFsb2cgLVxyXG4gKiB0aGUgaG9zdCBzd2FwcyBpdCBpbiB3aGVuIHRoZSBwYW5lbCdzIEltcG9ydCBidXR0b24gaXMgcHJlc3NlZCBhbmQgc3dhcHMgaXQgYmFjayBvdXRcclxuICogb24gYGNhbmNlbGAgLyBgaW1wb3J0ZWRgLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NjLWltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1wb3J0Q29udGFjdENlbnRlcldpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgdGl0bGUgPSBJTVBPUlRfV0laQVJEX1RJVExFO1xyXG4gICAgQElucHV0KCkgY3VzdG9tZXJJZCE6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGhvc3QhOiBzdHJpbmc7XHJcbiAgICAvKiogQmFzZSBVUkwgb2YgdGhlIGRjcCBob3N0LCB3aGljaCBzZXJ2ZXMgdGhlIFVDQ1ggYXBwbGljYXRpb24gbGlzdC4gKi9cclxuICAgIEBJbnB1dCgpIGRjcEhvc3QhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICAgIC8qKiBTZXJ2ZSBtb2NrIGRhdGEgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBVQ0NYIG1pZ3JhdGlvbiBBUEkuICovXHJcbiAgICBASW5wdXQoKSB1c2VNb2NrRGF0YSA9IHRydWU7XHJcbiAgICAvKipcclxuICAgICAqIENvbnRhY3QgY2VudGVycyB0aGUgY2FsbGVyIGhhcyBhbHJlYWR5IGxvYWRlZCAodGhlIHBhbmVsIGhhcyB0aGVtKSwgc28gdGhlIHdpemFyZFxyXG4gICAgICogb3BlbnMgd2l0aG91dCBhIHNlY29uZCByb3VuZCB0cmlwLiBMZWZ0IHVuc2V0LCB0aGUgd2l6YXJkIGZldGNoZXMgdGhlbSBpdHNlbGYuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGNvbnRhY3RDZW50ZXJzOiBDb250YWN0Q2VudGVyW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIGltcG9ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbXBvcnRSZXN1bHQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjY0ltcG9ydFNlcnZpY2UgPSBpbmplY3QoQ2NJbXBvcnRTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgICByZWFkb25seSBjdXN0b21lckFzc2lzdE5vdGljZSA9IENVU1RPTUVSX0FTU0lTVF9OT1RJQ0U7XHJcbiAgICByZWFkb25seSBjdXN0b21lckFzc2lzdE1hcmtlclRvb2x0aXAgPSBDVVNUT01FUl9BU1NJU1RfTUFSS0VSX1RPT0xUSVA7XHJcblxyXG4gICAgc2VsZWN0ZWRJbmRleCA9IDA7XHJcblxyXG4gICAgLyoqIENvbnRhY3QgY2VudGVycyBhd2FpdGluZyByZXZpZXcgLSB0aGUgb25lcyB0aGVyZSBpcyBzb21ldGhpbmcgdG8gaW1wb3J0LiAqL1xyXG4gICAgb3B0aW9uczogQ29udGFjdENlbnRlcltdID0gW107XHJcbiAgICAvKiogYG9wdGlvbnNgIG5hcnJvd2VkIGJ5IHRoZSBwaWNrZXIncyBzZWFyY2ggYm94LiAqL1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOiBDb250YWN0Q2VudGVyW10gPSBbXTtcclxuICAgIHNlYXJjaFRlcm0gPSAnJztcclxuICAgIHNlbGVjdGVkOiBDb250YWN0Q2VudGVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBub3RpY2VEaXNtaXNzZWQgPSBmYWxzZTtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIGVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgZW50aXR5R3JvdXBzOiBDb250YWN0Q2VudGVyRW50aXR5R3JvdXBbXSA9IFtdO1xyXG4gICAgLyoqIFdoaWNoIGVudGl0eSBncm91cCB0aGUgT3ZlcnZpZXcgc3RlcCdzIHRhYiBiYXIgaXMgc2hvd2luZy4gKi9cclxuICAgIGFjdGl2ZUdyb3VwSW5kZXggPSAwO1xyXG4gICAgZW50aXRpZXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBlbnRpdGllc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgaW1wb3J0aW5nID0gZmFsc2U7XHJcbiAgICBpbXBvcnRFcnJvciA9IGZhbHNlO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByZWxvYWRUcmlnZ2VycyA9IFsnY3VzdG9tZXJJZCcsICdob3N0JywgJ2RjcEhvc3QnLCAndG9rZW4nLCAndXNlTW9ja0RhdGEnLCAnY29udGFjdENlbnRlcnMnXTtcclxuICAgICAgICBpZiAocmVsb2FkVHJpZ2dlcnMuc29tZShpbnB1dCA9PiBjaGFuZ2VzW2lucHV0XSAmJiAhY2hhbmdlc1tpbnB1dF0uZmlyc3RDaGFuZ2UpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY2FuR29OZXh0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRoZSBDdXN0b21lciBBc3Npc3QgYWR2aXNvcnksIHVudGlsIHRoZSB1c2VyIGRpc21pc3NlcyBpdCBvciBwaWNrcyBzb21ldGhpbmcgZWxzZS4gKi9cclxuICAgIGdldCBzaG93Q3VzdG9tZXJBc3Npc3ROb3RpY2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZD8uY3VzdG9tZXJBc3Npc3RDYXBhYmxlICYmICF0aGlzLm5vdGljZURpc21pc3NlZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY2FuSW1wb3J0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuaW1wb3J0aW5nICYmICF0aGlzLmVudGl0aWVzTG9hZGluZyAmJiAhdGhpcy5lbnRpdGllc0Vycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNlbGVjdChhcHBsaWNhdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24uYXBwbGljYXRpb25JZCA9PT0gYXBwbGljYXRpb25JZCkgPz8gbnVsbDtcclxuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgICAgIHRoaXMubm90aWNlRGlzbWlzc2VkID0gZmFsc2U7XHJcbiAgICAgICAgLy8gRW50aXRpZXMgYmVsb25nIHRvIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIGNvbnRhY3QgY2VudGVyIC0gZHJvcCB0aGVtIHNvIHRoZVxyXG4gICAgICAgIC8vIG92ZXJ2aWV3IHN0ZXAgcmVmZXRjaGVzIGZvciB0aGUgbmV3IG9uZS5cclxuICAgICAgICB0aGlzLmVudGl0eUdyb3VwcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlR3JvdXBJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5lbnRpdGllc0Vycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGFjdGl2ZUdyb3VwKCk6IENvbnRhY3RDZW50ZXJFbnRpdHlHcm91cCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5R3JvdXBzW3RoaXMuYWN0aXZlR3JvdXBJbmRleF07XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0R3JvdXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlR3JvdXBJbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIGRpc21pc3NOb3RpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ub3RpY2VEaXNtaXNzZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VhcmNoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmVzZXRzIHRoZSBzZWFyY2ggYm94IGVhY2ggdGltZSB0aGUgcGlja2VyJ3MgcGFuZWwgaXMgY2xvc2VkLiAqL1xyXG4gICAgb25QYW5lbFRvZ2dsZShvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIW9wZW5lZCAmJiB0aGlzLnNlYXJjaFRlcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU3RlcFNlbGVjdGlvbkNoYW5nZShldmVudDogU3RlcHBlclNlbGVjdGlvbkV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gZXZlbnQuc2VsZWN0ZWRJbmRleDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RlcElkQXQoZXZlbnQuc2VsZWN0ZWRJbmRleCkgPT09ICdvdmVydmlldycpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkRW50aXRpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25OZXh0KHN0ZXBwZXI6IE1hdFN0ZXBwZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jYW5Hb05leHQpIHtcclxuICAgICAgICAgICAgc3RlcHBlci5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUHJldmlvdXMoc3RlcHBlcjogTWF0U3RlcHBlcik6IHZvaWQge1xyXG4gICAgICAgIHN0ZXBwZXIucHJldmlvdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBydW5JbXBvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkIHx8IHRoaXMuaW1wb3J0aW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmltcG9ydEVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXHJcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLmltcG9ydENvbnRhY3RDZW50ZXIoTnVtYmVyKHRoaXMuY3VzdG9tZXJJZCksIHRoaXMuc2VsZWN0ZWQuYXBwbGljYXRpb25JZClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gc3RhcnQgdGhlIGNvbnRhY3QtY2VudGVyIGltcG9ydCcsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZjxJbXBvcnRSZXN1bHQgfCBudWxsPihudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmltcG9ydGluZyA9IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RlcElkQXQoaW5kZXg6IG51bWJlcik6IEltcG9ydFdpemFyZFN0ZXBJZCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIElNUE9SVF9XSVpBUkRfU1RFUFNbaW5kZXhdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS51c2VNb2NrRGF0YSA9IHRoaXMudXNlTW9ja0RhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhvc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2Uuc2V0SG9zdCh0aGlzLmhvc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kY3BIb3N0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLnNldERjcEhvc3QodGhpcy5kY3BIb3N0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2Uuc2V0VG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb250YWN0Q2VudGVycykge1xyXG4gICAgICAgICAgICB0aGlzLnNldE9wdGlvbnModGhpcy5jb250YWN0Q2VudGVycyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVySWQgPSBOdW1iZXIodGhpcy5jdXN0b21lcklkKTtcclxuICAgICAgICBpZiAoIXRoaXMudXNlTW9ja0RhdGEgJiYgKCFjdXN0b21lcklkIHx8ICF0aGlzLnRva2VuKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2UuZmV0Y2hDb250YWN0Q2VudGVycyhjdXN0b21lcklkKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBsb2FkIHRoZSBjb250YWN0IGNlbnRlcnMnLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Y8Q29udGFjdENlbnRlcltdPihbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGNvbnRhY3RDZW50ZXJzID0+IHRoaXMuc2V0T3B0aW9ucyhjb250YWN0Q2VudGVycykpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldE9wdGlvbnMoY29udGFjdENlbnRlcnM6IENvbnRhY3RDZW50ZXJbXSk6IHZvaWQge1xyXG4gICAgICAgIC8vIExlZnQgaW4gc291cmNlIG9yZGVyIG9uIHB1cnBvc2UgLSB0aGUgcGlja2VyIHNob3dzIHRoZW0gdGhlIHdheSB0aGUgYmFja2VuZFxyXG4gICAgICAgIC8vIChhbmQgdGhlIG1vY2spIGhhbmRzIHRoZW0gb3Zlciwgbm90IGFscGhhYmV0aWNhbGx5LlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gRWxpZ2libGUgZm9yIGEgV2ViZXggQ29udGFjdCBDZW50ZXIgaW1wb3J0OiBub3QgaW1wb3J0ZWQgeWV0LCBhbmQgZWl0aGVyXHJcbiAgICAgICAgLy8gdW5zdXBwb3J0ZWQgb24gQ3VzdG9tZXIgQXNzaXN0IG9yIHJldmlld2FibGUgZm9yIGZ1bGwgZmVhdHVyZSBjb3ZlcmFnZS5cclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBjb250YWN0Q2VudGVycy5maWx0ZXIoY29udGFjdENlbnRlciA9PlxyXG4gICAgICAgICAgICBjb250YWN0Q2VudGVyLm1pZ3JhdGlvblN0YXRlICE9PSAnbWlncmF0ZWQnXHJcbiAgICAgICAgICAgICYmIChjb250YWN0Q2VudGVyLmNvbXBhdGliaWxpdHlTdGF0dXMgPT09ICd1bnN1cHBvcnRlZCdcclxuICAgICAgICAgICAgICAgIHx8IGNvbnRhY3RDZW50ZXIuY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ3JlcXVpcmVzLXJldmlldycpKTtcclxuXHJcbiAgICAgICAgLy8gQSBjb250YWN0IGNlbnRlciBzZWxlY3RlZCBiZWZvcmUgYSByZWxvYWQgbWF5IG5vIGxvbmdlciBiZSBpbXBvcnRhYmxlLlxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLm9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uLmFwcGxpY2F0aW9uSWQgPT09IHRoaXMuc2VsZWN0ZWQ/LmFwcGxpY2F0aW9uSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmVudGl0eUdyb3VwcyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwSW5kZXggPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbHRlcigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBuZWVkbGUgPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBuZWVkbGVcclxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uYXBwbGljYXRpb25OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmVlZGxlKSlcclxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsb2FkRW50aXRpZXMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkIHx8IHRoaXMuZW50aXR5R3JvdXBzLmxlbmd0aCB8fCB0aGlzLmVudGl0aWVzTG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVudGl0aWVzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lbnRpdGllc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXHJcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLmZldGNoQ29udGFjdENlbnRlckVudGl0aWVzKE51bWJlcih0aGlzLmN1c3RvbWVySWQpLCB0aGlzLnNlbGVjdGVkKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBsb2FkIHRoZSBjb250YWN0LWNlbnRlciBlbnRpdGllcycsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdGllc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuZW50aXRpZXNMb2FkaW5nID0gZmFsc2UpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGVudGl0aWVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGl0eUdyb3VwcyA9IGVudGl0aWVzID8gZW50aXRpZXMuZ3JvdXBzIDogW107XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibW92ZS11c2VyLXN0ZXBwZXItY29udGFpbmVyXCIgW2F0dHIuYXJpYS1idXN5XT1cImltcG9ydGluZ1wiPlxyXG4gIDxoZWFkZXIgY2xhc3M9XCJtb3ZlLXVzZXItaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW92ZS11c2VyLWhlYWRlcl9fdGl0bGVcIj57eyB0aXRsZSB9fTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vdmUtdXNlci1oZWFkZXJfX2Nsb3NlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLWljb24gY2MtaW1wb3J0LWNsb3NlLWljb25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIHJvbGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk01IDVMMTkgMTlNMTkgNUw1IDE5XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS43XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvaGVhZGVyPlxyXG5cclxuICA8ZGl2IGlkPVwiY2MtaW1wb3J0LXN0ZXBwZXJcIj5cclxuICAgIDxtYXQtc3RlcHBlclxyXG4gICAgICAjc3RlcHBlclxyXG4gICAgICBbbGluZWFyXT1cInRydWVcIlxyXG4gICAgICBsYWJlbFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRJbmRleFwiXHJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TdGVwU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgPlxyXG5cclxuICAgICAgPCEtLSBTdGVwIDE6IHBpY2sgdGhlIFVDQ1ggY29udGFjdCBjZW50ZXIgLS0+XHJcbiAgICAgIDxtYXQtc3RlcCBbY29tcGxldGVkXT1cImNhbkdvTmV4dFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+U2VsZWN0PC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1ub3RpY2VcIiAqbmdJZj1cInNob3dDdXN0b21lckFzc2lzdE5vdGljZVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2MtaW1wb3J0LW5vdGljZV9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjdcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgLz5cclxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTggNy4xdjQuMlwiIHN0cm9rZT1cIiNmZmZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiNC44XCIgcj1cIjAuOVwiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNjLWltcG9ydC1ub3RpY2VfX3RleHRcIj57eyBjdXN0b21lckFzc2lzdE5vdGljZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2MtaW1wb3J0LW5vdGljZV9fY2xvc2VcIiBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiIChjbGljayk9XCJkaXNtaXNzTm90aWNlKClcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNUwxOSAxOU0xOSA1TDUgMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLXRpdGxlXCI+U3RlcCAxOiBTZWxlY3QgY29udGFjdCBjZW50ZXI8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vdmUtdXNlci10YWItY29udGVudC1ib3hcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtc3RhdGVcIiAqbmdJZj1cImxvYWRpbmdcIj5Mb2FkaW5nIGNvbnRhY3QgY2VudGVycyZoZWxsaXA7PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXN0YXRlIGNjLWltcG9ydC1zdGF0ZS0tZXJyb3JcIiAqbmdJZj1cIiFsb2FkaW5nICYmIGVycm9yXCI+XHJcbiAgICAgICAgICAgIFVuYWJsZSB0byBsb2FkIGNvbnRhY3QgY2VudGVycy5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2MtaW1wb3J0LXN0ZXAtY29udGVudFwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWVycm9yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtZmllbGRcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjYy1pbXBvcnQtbGFiZWxcIiBmb3I9XCJjYy1pbXBvcnQtY29udGFjdC1jZW50ZXJcIj5Db250YWN0IGNlbnRlcjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNjLWltcG9ydC1zZWxlY3RcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgaWQ9XCJjYy1pbXBvcnQtY29udGFjdC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiY2MtaW1wb3J0LXNlbGVjdC1wYW5lbFwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbnRhY3QgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZD8uYXBwbGljYXRpb25JZCA/PyBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvblBhbmVsVG9nZ2xlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPnt7IHNlbGVjdGVkPy5hcHBsaWNhdGlvbk5hbWUgfX08L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gU2VhcmNoIGJveCBwaW5uZWQgYWJvdmUgdGhlIG9wdGlvbnMuIEtleXN0cm9rZXMgYXJlIHN0b3BwZWQgaGVyZSBzb1xyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdC1zZWxlY3QncyBvd24gdHlwZWFoZWFkIGRvZXMgbm90IHN0ZWFsIHRoZW0uIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXNlbGVjdC1zZWFyY2hcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtc2VsZWN0LXNlYXJjaF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiNC42XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC42IDEwLjZMMTQgMTRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2MtaW1wb3J0LXNlbGVjdC1zZWFyY2hfX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIGNvbnRhY3QgY2VudGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGVybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25TZWFyY2goJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLmFwcGxpY2F0aW9uSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgb3B0aW9uLmFwcGxpY2F0aW9uTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2MtaW1wb3J0LW9wdGlvbi1tYXJrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5jdXN0b21lckFzc2lzdENhcGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJjdXN0b21lckFzc2lzdE1hcmtlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOCAyLjIgMTQuNiAxMy40SDEuNEw4IDIuMlpcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDYuNXYzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjExLjNcIiByPVwiMC43XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYy1pbXBvcnQtZW1wdHlcIiAqbmdJZj1cIiFvcHRpb25zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgRXZlcnkgZGV0ZWN0ZWQgY29udGFjdCBjZW50ZXIgaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZC5cclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1zdGVwPlxyXG5cclxuICAgICAgPCEtLSBTdGVwIDI6IHRoZSBlbnRpdGllcyBUdWtpIHdpbGwgY3JlYXRlIGZvciBpdCAtLT5cclxuICAgICAgPG1hdC1zdGVwPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+T3ZlcnZpZXc8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPk92ZXJ2aWV3PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb3ZlLXVzZXItdGFiLWNvbnRlbnQtYm94XCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJjYy1pbXBvcnQtY2FyZC10aXRsZVwiPlJldmlldyBDb250YWN0IENlbnRlciBTZXR0aW5nczwvaDM+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImNjLWltcG9ydC1jYXJkLXRleHRcIj5cclxuICAgICAgICAgICAgUmV2aWV3IHRoZSBzZXR0aW5ncyBmb3IgeW91ciBuZXcgQ29udGFjdCBjZW50ZXIgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgY29ycmVjdC48YnIgLz5cclxuICAgICAgICAgICAgWW91IGNhbiBtYWtlIGNoYW5nZXMgYXQgYW55IHRpbWUgYnkgY2xpY2tpbmcgb24gdGhlIG5hbWUgb2YgdGhlIGNvbnRhY3QgY2VudGVyIG9uIHRoZSBkZWRpY2F0ZWQgcGFnZS5cclxuICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXN0YXRlXCIgKm5nSWY9XCJlbnRpdGllc0xvYWRpbmdcIj5Mb2FkaW5nIGVudGl0aWVzJmhlbGxpcDs8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtc3RhdGUgY2MtaW1wb3J0LXN0YXRlLS1lcnJvclwiICpuZ0lmPVwiZW50aXRpZXNFcnJvclwiPlxyXG4gICAgICAgICAgICBVbmFibGUgdG8gbG9hZCB0aGUgcmVsYXRlZCBlbnRpdGllcy5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW50aXRpZXNMb2FkaW5nICYmICFlbnRpdGllc0Vycm9yICYmIGVudGl0eUdyb3Vwcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC10YWJzXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2MtaW1wb3J0LXRhYlwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZW50aXR5R3JvdXBzOyBpbmRleCBhcyBpXCJcclxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVHcm91cEluZGV4XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5jYy1pbXBvcnQtdGFiLS1hY3RpdmVdPVwiaSA9PT0gYWN0aXZlR3JvdXBJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0R3JvdXAoaSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGdyb3VwLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiY2MtaW1wb3J0LWl0ZW1zXCIgcm9sZT1cInRhYnBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY2MtaW1wb3J0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3RpdmVHcm91cD8uaXRlbXNcIj57eyBpdGVtIH19PC9saT5cclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjYy1pbXBvcnQtaXRlbSBjYy1pbXBvcnQtaXRlbS0tZW1wdHlcIiAqbmdJZj1cIiFhY3RpdmVHcm91cD8uaXRlbXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgTm90aGluZyB0byBjcmVhdGUgZm9yIHt7IGFjdGl2ZUdyb3VwPy5sYWJlbCB9fS5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1zdGF0ZSBjYy1pbXBvcnQtc3RhdGUtLWVycm9yXCIgKm5nSWY9XCJpbXBvcnRFcnJvclwiPlxyXG4gICAgICAgICAgICBVbmFibGUgdG8gc3RhcnQgdGhlIGltcG9ydC4gUGxlYXNlIHRyeSBhZ2Fpbi5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1zdGVwPlxyXG4gICAgPC9tYXQtc3RlcHBlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwid2l6YXJkLWFjdGlvbnNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3RlcHBlci5zZWxlY3RlZEluZGV4XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidWMtYnRuIHVjLWJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29OZXh0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmV4dChzdGVwcGVyKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwidWMtYnRuIHVjLWJ0bi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cclxuICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMVwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidWMtYnRuIHVjLWJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW1wb3J0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInJ1bkltcG9ydCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1Yy1idG5fX2lubGluZS1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1Yy1idG5fX3NwaW5uZXJcIiAqbmdJZj1cImltcG9ydGluZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBpbXBvcnRpbmcgPyAnSW1wb3J0aW5nLi4uJyA6ICdJbXBvcnQnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInVjLWJ0biB1Yy1idG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbXBvcnRpbmdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91cyhzdGVwcGVyKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFByZXZpb3VzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIndpemFyZC1sb2FkaW5nLW92ZXJsYXlcIiBbY2xhc3Mud2l6YXJkLWxvYWRpbmctb3ZlcmxheS0tdmlzaWJsZV09XCJpbXBvcnRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** The wizard's steps, in order. Index-aligned with the `mat-stepper` steps. */
|
|
2
|
+
export const IMPORT_WIZARD_STEPS = ['select', 'overview'];
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFRoZSB3aXphcmQncyBzdGVwcywgaW4gb3JkZXIuIEluZGV4LWFsaWduZWQgd2l0aCB0aGUgYG1hdC1zdGVwcGVyYCBzdGVwcy4gKi9cclxuZXhwb3J0IGNvbnN0IElNUE9SVF9XSVpBUkRfU1RFUFMgPSBbJ3NlbGVjdCcsICdvdmVydmlldyddIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IHR5cGUgSW1wb3J0V2l6YXJkU3RlcElkID0gdHlwZW9mIElNUE9SVF9XSVpBUkRfU1RFUFNbbnVtYmVyXTtcclxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { UCCX_ITEM_TYPE } from '../types/uccx';
|
|
2
|
+
export const CHART_COLORS = {
|
|
3
|
+
customerAssist: '#177A5C',
|
|
4
|
+
webexContactCenter: '#D0D0D0',
|
|
5
|
+
requiresReview: '#1268E3'
|
|
6
|
+
};
|
|
7
|
+
/** Compatibility score thresholds, per the ticket's scoring table. */
|
|
8
|
+
export const COMPATIBILITY_THRESHOLDS = {
|
|
9
|
+
/** 80-100 - migrates to Customer Assist with no functional loss. */
|
|
10
|
+
migratable: 80,
|
|
11
|
+
/** 60-79 - migrates to Customer Assist, minor unsupported steps dropped. */
|
|
12
|
+
requiresReview: 60
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Slices of the panel's pie chart, in order: the recommended destination for every
|
|
16
|
+
* contact center detected in the connected UCCX environment.
|
|
17
|
+
*
|
|
18
|
+
* The panel is slice-driven, so re-cutting the chart when the design changes means
|
|
19
|
+
* editing this array - no component change.
|
|
20
|
+
*/
|
|
21
|
+
export const IMPORT_PANEL_SLICES = [
|
|
22
|
+
{
|
|
23
|
+
label: 'To Customer Assist',
|
|
24
|
+
color: CHART_COLORS.customerAssist,
|
|
25
|
+
tooltip: 'Fully supported by Customer Assist.',
|
|
26
|
+
match: contactCenter => contactCenter.compatibilityStatus === 'migratable'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: 'Requires Review',
|
|
30
|
+
color: CHART_COLORS.requiresReview,
|
|
31
|
+
tooltip: 'Supported by Customer Assist, but a few unsupported steps would change. '
|
|
32
|
+
+ 'Can also go to Webex Contact Center for full feature coverage.',
|
|
33
|
+
match: contactCenter => contactCenter.compatibilityStatus === 'requires-review'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
label: 'To Webex Contact Center',
|
|
37
|
+
color: CHART_COLORS.webexContactCenter,
|
|
38
|
+
tooltip: 'Not supported by Customer Assist - migrate to Webex Contact Center.',
|
|
39
|
+
match: contactCenter => contactCenter.compatibilityStatus === 'unsupported'
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* How UCCX entity types roll up into the groups the Overview step shows, in display
|
|
44
|
+
* order. Types not listed here get a group of their own under their raw type name,
|
|
45
|
+
* so nothing the backend returns is silently dropped.
|
|
46
|
+
*/
|
|
47
|
+
export const OVERVIEW_ENTITY_GROUPS = [
|
|
48
|
+
{ label: 'Channel', types: [UCCX_ITEM_TYPE.TRIGGER] },
|
|
49
|
+
{ label: 'Queues', types: [UCCX_ITEM_TYPE.CSQ] },
|
|
50
|
+
{ label: 'Audio files', types: [UCCX_ITEM_TYPE.PROMPT, UCCX_ITEM_TYPE.DOCUMENT] },
|
|
51
|
+
{ label: 'Flows', types: [UCCX_ITEM_TYPE.SCRIPT] },
|
|
52
|
+
{ label: 'Skill', types: [UCCX_ITEM_TYPE.SKILL] },
|
|
53
|
+
{ label: 'Contact center users', types: [UCCX_ITEM_TYPE.RESOURCE] }
|
|
54
|
+
];
|
|
55
|
+
export const IMPORT_PANEL_TITLE = 'Import Contact center';
|
|
56
|
+
export const IMPORT_PANEL_TOOLTIP = 'Contact centers detected in the connected UCCX environment, and where each one can migrate to.';
|
|
57
|
+
export const IMPORT_WIZARD_TITLE = 'Contact Center';
|
|
58
|
+
/** Shown once a "requires review" contact center is picked. Dismissible. */
|
|
59
|
+
export const CUSTOMER_ASSIST_NOTICE = 'This contact center may also be supported by Customer Assist. Check compatibility before continuing.';
|
|
60
|
+
/** Tooltip on the marker the picker puts next to those same contact centers. */
|
|
61
|
+
export const CUSTOMER_ASSIST_MARKER_TOOLTIP = 'May also be supported by Customer Assist.';
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0LmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29uc3RhbnRzL2NjLWltcG9ydC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDeEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsa0JBQWtCLEVBQUUsU0FBUztJQUM3QixjQUFjLEVBQUUsU0FBUztDQUNuQixDQUFDO0FBRVgsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3BDLG9FQUFvRTtJQUNwRSxVQUFVLEVBQUUsRUFBRTtJQUNkLDRFQUE0RTtJQUM1RSxjQUFjLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFWDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBdUI7SUFDbkQ7UUFDSSxLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLEtBQUssRUFBRSxZQUFZLENBQUMsY0FBYztRQUNsQyxPQUFPLEVBQUUscUNBQXFDO1FBQzlDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsS0FBSyxZQUFZO0tBQzdFO0lBQ0Q7UUFDSSxLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLEtBQUssRUFBRSxZQUFZLENBQUMsY0FBYztRQUNsQyxPQUFPLEVBQUUsMEVBQTBFO2NBQzdFLGdFQUFnRTtRQUN0RSxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEtBQUssaUJBQWlCO0tBQ2xGO0lBQ0Q7UUFDSSxLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLEtBQUssRUFBRSxZQUFZLENBQUMsa0JBQWtCO1FBQ3RDLE9BQU8sRUFBRSxxRUFBcUU7UUFDOUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixLQUFLLGFBQWE7S0FDOUU7Q0FDSixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QztJQUN4RSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3JELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDaEQsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ2pGLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDbEQsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNqRCxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7Q0FDdEUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUM3QixnR0FBZ0csQ0FBQztBQUVyRyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVwRCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQy9CLHNHQUFzRyxDQUFDO0FBRTNHLGdGQUFnRjtBQUNoRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEltcG9ydFBhbmVsU2xpY2UgfSBmcm9tICcuLi90eXBlcy9jYy1pbXBvcnQnO1xyXG5pbXBvcnQgeyBVQ0NYX0lURU1fVFlQRSB9IGZyb20gJy4uL3R5cGVzL3VjY3gnO1xyXG5cclxuZXhwb3J0IGNvbnN0IENIQVJUX0NPTE9SUyA9IHtcclxuICAgIGN1c3RvbWVyQXNzaXN0OiAnIzE3N0E1QycsXHJcbiAgICB3ZWJleENvbnRhY3RDZW50ZXI6ICcjRDBEMEQwJyxcclxuICAgIHJlcXVpcmVzUmV2aWV3OiAnIzEyNjhFMydcclxufSBhcyBjb25zdDtcclxuXHJcbi8qKiBDb21wYXRpYmlsaXR5IHNjb3JlIHRocmVzaG9sZHMsIHBlciB0aGUgdGlja2V0J3Mgc2NvcmluZyB0YWJsZS4gKi9cclxuZXhwb3J0IGNvbnN0IENPTVBBVElCSUxJVFlfVEhSRVNIT0xEUyA9IHtcclxuICAgIC8qKiA4MC0xMDAgLSBtaWdyYXRlcyB0byBDdXN0b21lciBBc3Npc3Qgd2l0aCBubyBmdW5jdGlvbmFsIGxvc3MuICovXHJcbiAgICBtaWdyYXRhYmxlOiA4MCxcclxuICAgIC8qKiA2MC03OSAtIG1pZ3JhdGVzIHRvIEN1c3RvbWVyIEFzc2lzdCwgbWlub3IgdW5zdXBwb3J0ZWQgc3RlcHMgZHJvcHBlZC4gKi9cclxuICAgIHJlcXVpcmVzUmV2aWV3OiA2MFxyXG59IGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIFNsaWNlcyBvZiB0aGUgcGFuZWwncyBwaWUgY2hhcnQsIGluIG9yZGVyOiB0aGUgcmVjb21tZW5kZWQgZGVzdGluYXRpb24gZm9yIGV2ZXJ5XHJcbiAqIGNvbnRhY3QgY2VudGVyIGRldGVjdGVkIGluIHRoZSBjb25uZWN0ZWQgVUNDWCBlbnZpcm9ubWVudC5cclxuICpcclxuICogVGhlIHBhbmVsIGlzIHNsaWNlLWRyaXZlbiwgc28gcmUtY3V0dGluZyB0aGUgY2hhcnQgd2hlbiB0aGUgZGVzaWduIGNoYW5nZXMgbWVhbnNcclxuICogZWRpdGluZyB0aGlzIGFycmF5IC0gbm8gY29tcG9uZW50IGNoYW5nZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBJTVBPUlRfUEFORUxfU0xJQ0VTOiBJbXBvcnRQYW5lbFNsaWNlW10gPSBbXHJcbiAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdUbyBDdXN0b21lciBBc3Npc3QnLFxyXG4gICAgICAgIGNvbG9yOiBDSEFSVF9DT0xPUlMuY3VzdG9tZXJBc3Npc3QsXHJcbiAgICAgICAgdG9vbHRpcDogJ0Z1bGx5IHN1cHBvcnRlZCBieSBDdXN0b21lciBBc3Npc3QuJyxcclxuICAgICAgICBtYXRjaDogY29udGFjdENlbnRlciA9PiBjb250YWN0Q2VudGVyLmNvbXBhdGliaWxpdHlTdGF0dXMgPT09ICdtaWdyYXRhYmxlJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBsYWJlbDogJ1JlcXVpcmVzIFJldmlldycsXHJcbiAgICAgICAgY29sb3I6IENIQVJUX0NPTE9SUy5yZXF1aXJlc1JldmlldyxcclxuICAgICAgICB0b29sdGlwOiAnU3VwcG9ydGVkIGJ5IEN1c3RvbWVyIEFzc2lzdCwgYnV0IGEgZmV3IHVuc3VwcG9ydGVkIHN0ZXBzIHdvdWxkIGNoYW5nZS4gJ1xyXG4gICAgICAgICAgICArICdDYW4gYWxzbyBnbyB0byBXZWJleCBDb250YWN0IENlbnRlciBmb3IgZnVsbCBmZWF0dXJlIGNvdmVyYWdlLicsXHJcbiAgICAgICAgbWF0Y2g6IGNvbnRhY3RDZW50ZXIgPT4gY29udGFjdENlbnRlci5jb21wYXRpYmlsaXR5U3RhdHVzID09PSAncmVxdWlyZXMtcmV2aWV3J1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBsYWJlbDogJ1RvIFdlYmV4IENvbnRhY3QgQ2VudGVyJyxcclxuICAgICAgICBjb2xvcjogQ0hBUlRfQ09MT1JTLndlYmV4Q29udGFjdENlbnRlcixcclxuICAgICAgICB0b29sdGlwOiAnTm90IHN1cHBvcnRlZCBieSBDdXN0b21lciBBc3Npc3QgLSBtaWdyYXRlIHRvIFdlYmV4IENvbnRhY3QgQ2VudGVyLicsXHJcbiAgICAgICAgbWF0Y2g6IGNvbnRhY3RDZW50ZXIgPT4gY29udGFjdENlbnRlci5jb21wYXRpYmlsaXR5U3RhdHVzID09PSAndW5zdXBwb3J0ZWQnXHJcbiAgICB9XHJcbl07XHJcblxyXG4vKipcclxuICogSG93IFVDQ1ggZW50aXR5IHR5cGVzIHJvbGwgdXAgaW50byB0aGUgZ3JvdXBzIHRoZSBPdmVydmlldyBzdGVwIHNob3dzLCBpbiBkaXNwbGF5XHJcbiAqIG9yZGVyLiBUeXBlcyBub3QgbGlzdGVkIGhlcmUgZ2V0IGEgZ3JvdXAgb2YgdGhlaXIgb3duIHVuZGVyIHRoZWlyIHJhdyB0eXBlIG5hbWUsXHJcbiAqIHNvIG5vdGhpbmcgdGhlIGJhY2tlbmQgcmV0dXJucyBpcyBzaWxlbnRseSBkcm9wcGVkLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IE9WRVJWSUVXX0VOVElUWV9HUk9VUFM6IHsgbGFiZWw6IHN0cmluZzsgdHlwZXM6IHN0cmluZ1tdIH1bXSA9IFtcclxuICAgIHsgbGFiZWw6ICdDaGFubmVsJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5UUklHR0VSXSB9LFxyXG4gICAgeyBsYWJlbDogJ1F1ZXVlcycsIHR5cGVzOiBbVUNDWF9JVEVNX1RZUEUuQ1NRXSB9LFxyXG4gICAgeyBsYWJlbDogJ0F1ZGlvIGZpbGVzJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5QUk9NUFQsIFVDQ1hfSVRFTV9UWVBFLkRPQ1VNRU5UXSB9LFxyXG4gICAgeyBsYWJlbDogJ0Zsb3dzJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5TQ1JJUFRdIH0sXHJcbiAgICB7IGxhYmVsOiAnU2tpbGwnLCB0eXBlczogW1VDQ1hfSVRFTV9UWVBFLlNLSUxMXSB9LFxyXG4gICAgeyBsYWJlbDogJ0NvbnRhY3QgY2VudGVyIHVzZXJzJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5SRVNPVVJDRV0gfVxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IElNUE9SVF9QQU5FTF9USVRMRSA9ICdJbXBvcnQgQ29udGFjdCBjZW50ZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IElNUE9SVF9QQU5FTF9UT09MVElQID1cclxuICAgICdDb250YWN0IGNlbnRlcnMgZGV0ZWN0ZWQgaW4gdGhlIGNvbm5lY3RlZCBVQ0NYIGVudmlyb25tZW50LCBhbmQgd2hlcmUgZWFjaCBvbmUgY2FuIG1pZ3JhdGUgdG8uJztcclxuXHJcbmV4cG9ydCBjb25zdCBJTVBPUlRfV0laQVJEX1RJVExFID0gJ0NvbnRhY3QgQ2VudGVyJztcclxuXHJcbi8qKiBTaG93biBvbmNlIGEgXCJyZXF1aXJlcyByZXZpZXdcIiBjb250YWN0IGNlbnRlciBpcyBwaWNrZWQuIERpc21pc3NpYmxlLiAqL1xyXG5leHBvcnQgY29uc3QgQ1VTVE9NRVJfQVNTSVNUX05PVElDRSA9XHJcbiAgICAnVGhpcyBjb250YWN0IGNlbnRlciBtYXkgYWxzbyBiZSBzdXBwb3J0ZWQgYnkgQ3VzdG9tZXIgQXNzaXN0LiBDaGVjayBjb21wYXRpYmlsaXR5IGJlZm9yZSBjb250aW51aW5nLic7XHJcblxyXG4vKiogVG9vbHRpcCBvbiB0aGUgbWFya2VyIHRoZSBwaWNrZXIgcHV0cyBuZXh0IHRvIHRob3NlIHNhbWUgY29udGFjdCBjZW50ZXJzLiAqL1xyXG5leHBvcnQgY29uc3QgQ1VTVE9NRVJfQVNTSVNUX01BUktFUl9UT09MVElQID0gJ01heSBhbHNvIGJlIHN1cHBvcnRlZCBieSBDdXN0b21lciBBc3Npc3QuJztcclxuIl19
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stand-in data used when `CcImportService.useMockData` is on.
|
|
3
|
+
*
|
|
4
|
+
* Shapes here mirror exactly what `CcImportService` produces from the real backend,
|
|
5
|
+
* so switching over is a matter of flipping `useMockData` to false.
|
|
6
|
+
*/
|
|
7
|
+
const APPLICATION_NAMES = [
|
|
8
|
+
'Operations', 'Sales', 'Support', 'Billing', 'Reception', 'Helpdesk', 'Retention',
|
|
9
|
+
'Onboarding', 'Escalations', 'Emergency', 'Pharmacy', 'Appointments', 'Claims',
|
|
10
|
+
'Collections', 'Dispatch', 'Front Desk', 'IT Service Desk', 'Loyalty', 'Orders', 'Returns'
|
|
11
|
+
];
|
|
12
|
+
/** One tab per group on the wizard's Overview step, in the order they are shown. */
|
|
13
|
+
const ENTITY_GROUP_TEMPLATE = [
|
|
14
|
+
{ label: 'Channel', suffixes: ['_CC'] },
|
|
15
|
+
{ label: 'Queues', suffixes: ['_Queue'] },
|
|
16
|
+
{ label: 'Audio files', suffixes: [' Welcome', ' Music On Hold', ' Closed Message'] },
|
|
17
|
+
{ label: 'Flows', suffixes: ['_Flow'] },
|
|
18
|
+
{ label: 'Skill', suffixes: ['_Skill'] },
|
|
19
|
+
{ label: 'Contact center users', suffixes: [' Supervisor', ' Agent 1', ' Agent 2'] }
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* The ten contact centers that still need a decision - the only ones the wizard
|
|
23
|
+
* offers, so these are exactly the rows the picker shows, in this order. The flagged
|
|
24
|
+
* three are "requires review" and carry the marker plus the advisory notice.
|
|
25
|
+
*/
|
|
26
|
+
const REVIEW_CONTACT_CENTERS = [
|
|
27
|
+
{ name: 'Operations', requiresReview: true },
|
|
28
|
+
{ name: 'Sales_inquiry' },
|
|
29
|
+
{ name: 'Tech Support' },
|
|
30
|
+
{ name: 'Tech_Info' },
|
|
31
|
+
{ name: 'Finance', requiresReview: true },
|
|
32
|
+
{ name: 'Innovation', requiresReview: true },
|
|
33
|
+
{ name: 'Marketing' },
|
|
34
|
+
{ name: 'Gen_Support' },
|
|
35
|
+
{ name: 'Legal' },
|
|
36
|
+
{ name: 'Sales Support' }
|
|
37
|
+
];
|
|
38
|
+
/** 100 contact centers: 70 migratable, 20 unsupported, 10 still to be imported. */
|
|
39
|
+
export function mockContactCenters() {
|
|
40
|
+
const contactCenters = [];
|
|
41
|
+
// 90 already-imported ones, split across the two destinations.
|
|
42
|
+
for (let i = 0; i < 90; i++) {
|
|
43
|
+
const name = `${APPLICATION_NAMES[i % APPLICATION_NAMES.length]}_${Math.floor(i / APPLICATION_NAMES.length) + 1}`;
|
|
44
|
+
const compatibilityStatus = i < 70 ? 'migratable' : 'unsupported';
|
|
45
|
+
contactCenters.push({
|
|
46
|
+
applicationId: `app-${i + 1}`,
|
|
47
|
+
applicationName: name,
|
|
48
|
+
scriptName: `${name}_AA_Queue.aef`,
|
|
49
|
+
compatibilityStatus,
|
|
50
|
+
compatibilityScore: compatibilityStatus === 'migratable' ? 92 : 41,
|
|
51
|
+
migrationState: 'migrated'
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
REVIEW_CONTACT_CENTERS.forEach((contactCenter, i) => {
|
|
55
|
+
const compatibilityStatus = contactCenter.requiresReview ? 'requires-review' : 'unsupported';
|
|
56
|
+
contactCenters.push({
|
|
57
|
+
applicationId: `app-${91 + i}`,
|
|
58
|
+
applicationName: contactCenter.name,
|
|
59
|
+
scriptName: `${contactCenter.name}_AA_Queue.aef`,
|
|
60
|
+
compatibilityStatus,
|
|
61
|
+
compatibilityScore: contactCenter.requiresReview ? 68 : 44,
|
|
62
|
+
migrationState: 'not-migrated',
|
|
63
|
+
customerAssistCapable: compatibilityStatus === 'requires-review'
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
return contactCenters;
|
|
67
|
+
}
|
|
68
|
+
export function mockContactCenterEntities(contactCenter) {
|
|
69
|
+
const base = contactCenter.applicationName;
|
|
70
|
+
return {
|
|
71
|
+
applicationId: contactCenter.applicationId,
|
|
72
|
+
groups: ENTITY_GROUP_TEMPLATE.map(group => ({
|
|
73
|
+
label: group.label,
|
|
74
|
+
items: group.suffixes.map(suffix => `${base}${suffix}`)
|
|
75
|
+
}))
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0Lm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtaW1wb3J0L21vY2svY2MtaW1wb3J0Lm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFFSCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVc7SUFDakYsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRO0lBQzlFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztDQUM3RixDQUFDO0FBRUYsb0ZBQW9GO0FBQ3BGLE1BQU0scUJBQXFCLEdBQTRDO0lBQ25FLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN2QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDekMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO0lBQ3JGLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUN2QyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDeEMsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtDQUN2RixDQUFDO0FBRUY7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LEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztTQUMxRCxDQUFDLENBQUM7S0FDTixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRhY3RDZW50ZXIsIENvbnRhY3RDZW50ZXJDb21wYXRpYmlsaXR5U3RhdHVzLCBDb250YWN0Q2VudGVyRW50aXRpZXMgfSBmcm9tICcuLi90eXBlcy9jYy1pbXBvcnQnO1xyXG5cclxuLyoqXHJcbiAqIFN0YW5kLWluIGRhdGEgdXNlZCB3aGVuIGBDY0ltcG9ydFNlcnZpY2UudXNlTW9ja0RhdGFgIGlzIG9uLlxyXG4gKlxyXG4gKiBTaGFwZXMgaGVyZSBtaXJyb3IgZXhhY3RseSB3aGF0IGBDY0ltcG9ydFNlcnZpY2VgIHByb2R1Y2VzIGZyb20gdGhlIHJlYWwgYmFja2VuZCxcclxuICogc28gc3dpdGNoaW5nIG92ZXIgaXMgYSBtYXR0ZXIgb2YgZmxpcHBpbmcgYHVzZU1vY2tEYXRhYCB0byBmYWxzZS5cclxuICovXHJcblxyXG5jb25zdCBBUFBMSUNBVElPTl9OQU1FUyA9IFtcclxuICAgICdPcGVyYXRpb25zJywgJ1NhbGVzJywgJ1N1cHBvcnQnLCAnQmlsbGluZycsICdSZWNlcHRpb24nLCAnSGVscGRlc2snLCAnUmV0ZW50aW9uJyxcclxuICAgICdPbmJvYXJkaW5nJywgJ0VzY2FsYXRpb25zJywgJ0VtZXJnZW5jeScsICdQaGFybWFjeScsICdBcHBvaW50bWVudHMnLCAnQ2xhaW1zJyxcclxuICAgICdDb2xsZWN0aW9ucycsICdEaXNwYXRjaCcsICdGcm9udCBEZXNrJywgJ0lUIFNlcnZpY2UgRGVzaycsICdMb3lhbHR5JywgJ09yZGVycycsICdSZXR1cm5zJ1xyXG5dO1xyXG5cclxuLyoqIE9uZSB0YWIgcGVyIGdyb3VwIG9uIHRoZSB3aXphcmQncyBPdmVydmlldyBzdGVwLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc2hvd24uICovXHJcbmNvbnN0IEVOVElUWV9HUk9VUF9URU1QTEFURTogeyBsYWJlbDogc3RyaW5nOyBzdWZmaXhlczogc3RyaW5nW10gfVtdID0gW1xyXG4gICAgeyBsYWJlbDogJ0NoYW5uZWwnLCBzdWZmaXhlczogWydfQ0MnXSB9LFxyXG4gICAgeyBsYWJlbDogJ1F1ZXVlcycsIHN1ZmZpeGVzOiBbJ19RdWV1ZSddIH0sXHJcbiAgICB7IGxhYmVsOiAnQXVkaW8gZmlsZXMnLCBzdWZmaXhlczogWycgV2VsY29tZScsICcgTXVzaWMgT24gSG9sZCcsICcgQ2xvc2VkIE1lc3NhZ2UnXSB9LFxyXG4gICAgeyBsYWJlbDogJ0Zsb3dzJywgc3VmZml4ZXM6IFsnX0Zsb3cnXSB9LFxyXG4gICAgeyBsYWJlbDogJ1NraWxsJywgc3VmZml4ZXM6IFsnX1NraWxsJ10gfSxcclxuICAgIHsgbGFiZWw6ICdDb250YWN0IGNlbnRlciB1c2VycycsIHN1ZmZpeGVzOiBbJyBTdXBlcnZpc29yJywgJyBBZ2VudCAxJywgJyBBZ2VudCAyJ10gfVxyXG5dO1xyXG5cclxuLyoqXHJcbiAqIFRoZSB0ZW4gY29udGFjdCBjZW50ZXJzIHRoYXQgc3RpbGwgbmVlZCBhIGRlY2lzaW9uIC0gdGhlIG9ubHkgb25lcyB0aGUgd2l6YXJkXHJcbiAqIG9mZmVycywgc28gdGhlc2UgYXJlIGV4YWN0bHkgdGhlIHJvd3MgdGhlIHBpY2tlciBzaG93cywgaW4gdGhpcyBvcmRlci4gVGhlIGZsYWdnZWRcclxuICogdGhyZWUgYXJlIFwicmVxdWlyZXMgcmV2aWV3XCIgYW5kIGNhcnJ5IHRoZSBtYXJrZXIgcGx1cyB0aGUgYWR2aXNvcnkgbm90aWNlLlxyXG4gKi9cclxuY29uc3QgUkVWSUVXX0NPTlRBQ1RfQ0VOVEVSUzogeyBuYW1lOiBzdHJpbmc7IHJlcXVpcmVzUmV2aWV3PzogYm9vbGVhbiB9W10gPSBbXHJcbiAgICB7IG5hbWU6ICdPcGVyYXRpb25zJywgcmVxdWlyZXNSZXZpZXc6IHRydWUgfSxcclxuICAgIHsgbmFtZTogJ1NhbGVzX2lucXVpcnknIH0sXHJcbiAgICB7IG5hbWU6ICdUZWNoIFN1cHBvcnQnIH0sXHJcbiAgICB7IG5hbWU6ICdUZWNoX0luZm8nIH0sXHJcbiAgICB7IG5hbWU6ICdGaW5hbmNlJywgcmVxdWlyZXNSZXZpZXc6IHRydWUgfSxcclxuICAgIHsgbmFtZTogJ0lubm92YXRpb24nLCByZXF1aXJlc1JldmlldzogdHJ1ZSB9LFxyXG4gICAgeyBuYW1lOiAnTWFya2V0aW5nJyB9LFxyXG4gICAgeyBuYW1lOiAnR2VuX1N1cHBvcnQnIH0sXHJcbiAgICB7IG5hbWU6ICdMZWdhbCcgfSxcclxuICAgIHsgbmFtZTogJ1NhbGVzIFN1cHBvcnQnIH1cclxuXTtcclxuXHJcbi8qKiAxMDAgY29udGFjdCBjZW50ZXJzOiA3MCBtaWdyYXRhYmxlLCAyMCB1bnN1cHBvcnRlZCwgMTAgc3RpbGwgdG8gYmUgaW1wb3J0ZWQuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtb2NrQ29udGFjdENlbnRlcnMoKTogQ29udGFjdENlbnRlcltdIHtcclxuICAgIGNvbnN0IGNvbnRhY3RDZW50ZXJzOiBDb250YWN0Q2VudGVyW10gPSBbXTtcclxuXHJcbiAgICAvLyA5MCBhbHJlYWR5LWltcG9ydGVkIG9uZXMsIHNwbGl0IGFjcm9zcyB0aGUgdHdvIGRlc3RpbmF0aW9ucy5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTA7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBgJHtBUFBMSUNBVElPTl9OQU1FU1tpICUgQVBQTElDQVRJT05fTkFNRVMubGVuZ3RoXX1fJHtNYXRoLmZsb29yKGkgLyBBUFBMSUNBVElPTl9OQU1FUy5sZW5ndGgpICsgMX1gO1xyXG4gICAgICAgIGNvbnN0IGNvbXBhdGliaWxpdHlTdGF0dXM6IENvbnRhY3RDZW50ZXJDb21wYXRpYmlsaXR5U3RhdHVzID0gaSA8IDcwID8gJ21pZ3JhdGFibGUnIDogJ3Vuc3VwcG9ydGVkJztcclxuXHJcbiAgICAgICAgY29udGFjdENlbnRlcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uSWQ6IGBhcHAtJHtpICsgMX1gLFxyXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgIHNjcmlwdE5hbWU6IGAke25hbWV9X0FBX1F1ZXVlLmFlZmAsXHJcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlTdGF0dXMsXHJcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlTY29yZTogY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ21pZ3JhdGFibGUnID8gOTIgOiA0MSxcclxuICAgICAgICAgICAgbWlncmF0aW9uU3RhdGU6ICdtaWdyYXRlZCdcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBSRVZJRVdfQ09OVEFDVF9DRU5URVJTLmZvckVhY2goKGNvbnRhY3RDZW50ZXIsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjb21wYXRpYmlsaXR5U3RhdHVzOiBDb250YWN0Q2VudGVyQ29tcGF0aWJpbGl0eVN0YXR1cyA9XHJcbiAgICAgICAgICAgIGNvbnRhY3RDZW50ZXIucmVxdWlyZXNSZXZpZXcgPyAncmVxdWlyZXMtcmV2aWV3JyA6ICd1bnN1cHBvcnRlZCc7XHJcblxyXG4gICAgICAgIGNvbnRhY3RDZW50ZXJzLnB1c2goe1xyXG4gICAgICAgICAgICBhcHBsaWNhdGlvbklkOiBgYXBwLSR7OTEgKyBpfWAsXHJcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZTogY29udGFjdENlbnRlci5uYW1lLFxyXG4gICAgICAgICAgICBzY3JpcHROYW1lOiBgJHtjb250YWN0Q2VudGVyLm5hbWV9X0FBX1F1ZXVlLmFlZmAsXHJcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlTdGF0dXMsXHJcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlTY29yZTogY29udGFjdENlbnRlci5yZXF1aXJlc1JldmlldyA/IDY4IDogNDQsXHJcbiAgICAgICAgICAgIG1pZ3JhdGlvblN0YXRlOiAnbm90LW1pZ3JhdGVkJyxcclxuICAgICAgICAgICAgY3VzdG9tZXJBc3Npc3RDYXBhYmxlOiBjb21wYXRpYmlsaXR5U3RhdHVzID09PSAncmVxdWlyZXMtcmV2aWV3J1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRhY3RDZW50ZXJzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbW9ja0NvbnRhY3RDZW50ZXJFbnRpdGllcyhjb250YWN0Q2VudGVyOiBDb250YWN0Q2VudGVyKTogQ29udGFjdENlbnRlckVudGl0aWVzIHtcclxuICAgIGNvbnN0IGJhc2UgPSBjb250YWN0Q2VudGVyLmFwcGxpY2F0aW9uTmFtZTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGFwcGxpY2F0aW9uSWQ6IGNvbnRhY3RDZW50ZXIuYXBwbGljYXRpb25JZCxcclxuICAgICAgICBncm91cHM6IEVOVElUWV9HUk9VUF9URU1QTEFURS5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAgICAgbGFiZWw6IGdyb3VwLmxhYmVsLFxyXG4gICAgICAgICAgICBpdGVtczogZ3JvdXAuc3VmZml4ZXMubWFwKHN1ZmZpeCA9PiBgJHtiYXNlfSR7c3VmZml4fWApXHJcbiAgICAgICAgfSkpXHJcbiAgICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL2NvbnRhY3QtY2VudGVyL2NjLWltcG9ydC90eXBlcy9jYy1pbXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBIb3cgd2VsbCBhIGNvbnRhY3QgY2VudGVyJ3MgQUVGIHNjcmlwdCBtYXBzIG9udG8gQ3VzdG9tZXIgQXNzaXN0LCBmcm9tIHRoZVxyXG4gKiBjb21wYXRpYmlsaXR5IHNjb3JlOiA8NjAgdW5zdXBwb3J0ZWQsIDYwLTc5IHJlcXVpcmVzIHJldmlldywgODAtMTAwIG1pZ3JhdGFibGUuXHJcbiAqXHJcbiAqIGBudWxsYCBtZWFucyB0aGUgYmFja2VuZCBkaWQgbm90IHN1cHBseSBhIHNjb3JlLiBUaGUgQUVGIHNjb3JpbmcgQVBJIGRvZXMgbm90XHJcbiAqIGV4aXN0IHlldCAodGhlIHNjb3JpbmcgbWFwcGluZyBkb2N1bWVudCBpcyBzdGlsbCBhIHBlbmRpbmcgaW5wdXQgb24gdGhlIHRpY2tldCksXHJcbiAqIHNvIHRvZGF5IHRoaXMgaXMgYWx3YXlzIGZpbGxlZCBpbiBsb2NhbGx5IC0gc2VlIGBDY0ltcG9ydFNlcnZpY2VgLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgQ29udGFjdENlbnRlckNvbXBhdGliaWxpdHlTdGF0dXMgPSAnbWlncmF0YWJsZScgfCAncmVxdWlyZXMtcmV2aWV3JyB8ICd1bnN1cHBvcnRlZCc7XHJcblxyXG4vKiogV2hldGhlciBUdWtpIGhhcyBhbHJlYWR5IGltcG9ydGVkIHRoaXMgY29udGFjdCBjZW50ZXIuIERlcml2ZWQgZnJvbSByZWFsIGRhdGEuICovXHJcbmV4cG9ydCB0eXBlIENvbnRhY3RDZW50ZXJNaWdyYXRpb25TdGF0ZSA9ICdtaWdyYXRlZCcgfCAnbm90LW1pZ3JhdGVkJztcclxuXHJcbi8qKiBPbmUgVUNDWCBhcHBsaWNhdGlvbiAoY29udGFjdCBjZW50ZXIpIHRoYXQgVHVraSBjYW4gaW1wb3J0LiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RDZW50ZXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZGVudGl0eSBvZiB0aGUgY29udGFjdCBjZW50ZXIuIFVDQ1ggaGFzIG5vIGFwcGxpY2F0aW9uIGlkIG9mIGl0cyBvd24gLSB0aGVcclxuICAgICAqIGFwcGxpY2F0aW9uICpuYW1lKiBpcyB0aGUga2V5IGV2ZXJ5IGJhY2tlbmQgZW5kcG9pbnQgZmlsdGVycyBvbiAtIHNvIHRoaXNcclxuICAgICAqIGNhcnJpZXMgdGhlIG5hbWUgZm9yIHJlYWwgZGF0YS5cclxuICAgICAqL1xyXG4gICAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xyXG4gICAgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XHJcbiAgICAvKiogQUVGIGZpbGUgYmFja2luZyB0aGUgYXBwbGljYXRpb24sIGUuZy4gXCJPcGVyYXRpb25zX0FBX1F1ZXVlX0ZpeGVkLmFlZlwiLiAqL1xyXG4gICAgc2NyaXB0TmFtZTogc3RyaW5nO1xyXG4gICAgLyoqIFRoZSBVQ0NYIHNlcnZlciBpdCB3YXMgY29sbGVjdGVkIGZyb20sIG5lZWRlZCBieSB0aGUgcGVyLWFwcGxpY2F0aW9uIGVuZHBvaW50cy4gKi9cclxuICAgIHVjY3hJcD86IHN0cmluZztcclxuICAgIGNvbXBhdGliaWxpdHlTdGF0dXM6IENvbnRhY3RDZW50ZXJDb21wYXRpYmlsaXR5U3RhdHVzO1xyXG4gICAgLyoqIFRoZSAwLTEwMCBzY29yZSBiZWhpbmQgYGNvbXBhdGliaWxpdHlTdGF0dXNgLCB3aGVuIHRoZSBiYWNrZW5kIHN1cHBsaWVkIG9uZS4gKi9cclxuICAgIGNvbXBhdGliaWxpdHlTY29yZT86IG51bWJlcjtcclxuICAgIG1pZ3JhdGlvblN0YXRlOiBDb250YWN0Q2VudGVyTWlncmF0aW9uU3RhdGU7XHJcbiAgICAvKipcclxuICAgICAqIEFkdmlzb3J5IGZsYWc6IGEgXCJyZXF1aXJlcyByZXZpZXdcIiBjb250YWN0IGNlbnRlciBjYW4gZ28gdG8gQ3VzdG9tZXIgQXNzaXN0IGFzXHJcbiAgICAgKiB3ZWxsIGFzIHRvIFdlYmV4IENvbnRhY3QgQ2VudGVyLiBTdXJmYWNlZCBhcyBhIG1hcmtlciBpbiB0aGUgcGlja2VyIGFuZCBhIG5vdGljZVxyXG4gICAgICogb25jZSBzZWxlY3RlZCAtIGl0IGRvZXMgbm90IGJsb2NrIHRoZSBpbXBvcnQuXHJcbiAgICAgKi9cclxuICAgIGN1c3RvbWVyQXNzaXN0Q2FwYWJsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBPbmUgcm93IG9mIHRoZSBpbXBvcnQgXCJPdmVydmlld1wiIHN0ZXAsIGUuZy4geyBsYWJlbDogJ1F1ZXVlcycsIGl0ZW1zOiBbJ1NhbGVzX1F1ZXVlJ10gfS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2VudGVyRW50aXR5R3JvdXAge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIGl0ZW1zOiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFwcGxpY2F0aW9uLWNlbnRyaWMgZW50aXR5IGJyZWFrZG93bjogZXZlcnl0aGluZyBUdWtpIHdpbGwgY3JlYXRlIGZvciB0aGlzXHJcbiAqIGNvbnRhY3QgY2VudGVyLCBwYWNrYWdlZCBhcyBhIHNpbmdsZSBtaWdyYXRpb24gdW5pdC5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENlbnRlckVudGl0aWVzIHtcclxuICAgIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcclxuICAgIGdyb3VwczogQ29udGFjdENlbnRlckVudGl0eUdyb3VwW107XHJcbn1cclxuXHJcbi8qKiBEZWNsYXJhdGl2ZSBkZXNjcmlwdGlvbiBvZiBvbmUgcGllIHNsaWNlIC8gbGVnZW5kIHJvdyBvZiB0aGUgcGFuZWwuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UGFuZWxTbGljZSB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgY29sb3I6IHN0cmluZztcclxuICAgIHRvb2x0aXA6IHN0cmluZztcclxuICAgIC8qKiBXaGljaCBjb250YWN0IGNlbnRlcnMgZmFsbCBpbnRvIHRoaXMgc2xpY2UuICovXHJcbiAgICBtYXRjaDogKGNvbnRhY3RDZW50ZXI6IENvbnRhY3RDZW50ZXIpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBBIHNsaWNlIG9uY2UgaXQgaGFzIGJlZW4gcmVzb2x2ZWQgYWdhaW5zdCByZWFsIGRhdGEuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UGFuZWxTZWdtZW50IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBjb2xvcjogc3RyaW5nO1xyXG4gICAgdG9vbHRpcDogc3RyaW5nO1xyXG4gICAgY291bnQ6IG51bWJlcjtcclxuICAgIHBlcmNlbnRhZ2U6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXN1bHQge1xyXG4gICAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xyXG4gICAgYWNjZXB0ZWQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBYTFNYIG1pZ3JhdGlvbiB0cmFja2VyIHRoZSBiYWNrZW5kIGFuc3dlcnMgd2l0aC4gRXhlY3V0aW9uIGFuZCBwcm9ncmVzc1xyXG4gICAgICogdHJhY2tpbmcgYXJlIGRlZmluZWQgaW4gYSBzZXBhcmF0ZSB0aWNrZXQ7IHRoaXMgaXMgc2ltcGx5IHdoYXQgY2FtZSBiYWNrLlxyXG4gICAgICovXHJcbiAgICByZXBvcnQ/OiBCbG9iO1xyXG59XHJcbiJdfQ==
|