@sumaris-net/ngx-components 2.2.8 → 2.2.9
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/esm2020/src/app/admin/admin-routing.module.mjs +5 -5
- package/esm2020/src/app/admin/admin.module.mjs +5 -5
- package/esm2020/src/app/admin/services/person.service.mjs +4 -4
- package/esm2020/src/app/admin/services/validator/person.validator.mjs +4 -4
- package/esm2020/src/app/admin/users/users.mjs +5 -5
- package/esm2020/src/app/admin/users/users.module.mjs +5 -5
- package/esm2020/src/app/core/about/about.modal.mjs +4 -4
- package/esm2020/src/app/core/about/about.module.mjs +5 -5
- package/esm2020/src/app/core/account/account.module.mjs +5 -5
- package/esm2020/src/app/core/account/account.page.mjs +4 -4
- package/esm2020/src/app/core/auth/auth.form.mjs +4 -4
- package/esm2020/src/app/core/auth/auth.modal.mjs +4 -4
- package/esm2020/src/app/core/auth/auth.module.mjs +5 -5
- package/esm2020/src/app/core/core.module.mjs +5 -5
- package/esm2020/src/app/core/core.testing.module.mjs +5 -5
- package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +5 -5
- package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
- package/esm2020/src/app/core/form/entity/editor.class.mjs +7 -7
- package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +4 -4
- package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +4 -4
- package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +4 -4
- package/esm2020/src/app/core/form/entity/entity.module.mjs +5 -5
- package/esm2020/src/app/core/form/form.class.mjs +4 -4
- package/esm2020/src/app/core/form/form.module.mjs +5 -5
- package/esm2020/src/app/core/form/list/list.form.mjs +4 -4
- package/esm2020/src/app/core/form/list/list.module.mjs +5 -5
- package/esm2020/src/app/core/form/properties/properties.form.mjs +5 -5
- package/esm2020/src/app/core/form/properties/properties.module.mjs +5 -5
- package/esm2020/src/app/core/form/properties/property.validator.mjs +4 -4
- package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +4 -4
- package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
- package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +4 -4
- package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
- package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +4 -4
- package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +4 -4
- package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +5 -5
- package/esm2020/src/app/core/graphql/graphql.module.mjs +5 -5
- package/esm2020/src/app/core/graphql/graphql.service.mjs +4 -4
- package/esm2020/src/app/core/home/home.mjs +4 -4
- package/esm2020/src/app/core/home/home.module.mjs +5 -5
- package/esm2020/src/app/core/icon/icon.component.mjs +4 -4
- package/esm2020/src/app/core/icon/icon.module.mjs +5 -5
- package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +4 -4
- package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +5 -5
- package/esm2020/src/app/core/menu/menu.component.mjs +4 -4
- package/esm2020/src/app/core/menu/menu.module.mjs +5 -5
- package/esm2020/src/app/core/menu/menu.service.mjs +4 -4
- package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +4 -4
- package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
- package/esm2020/src/app/core/peer/select-peer.modal.mjs +4 -4
- package/esm2020/src/app/core/peer/select-peer.module.mjs +5 -5
- package/esm2020/src/app/core/register/register-confirm.page.mjs +4 -4
- package/esm2020/src/app/core/register/register.form.mjs +4 -4
- package/esm2020/src/app/core/register/register.modal.mjs +4 -4
- package/esm2020/src/app/core/register/register.module.mjs +5 -5
- package/esm2020/src/app/core/services/account.service.mjs +4 -4
- package/esm2020/src/app/core/services/auth-guard.service.mjs +4 -4
- package/esm2020/src/app/core/services/base-entity-service.class.mjs +4 -4
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +4 -4
- package/esm2020/src/app/core/services/config.service.mjs +4 -4
- package/esm2020/src/app/core/services/crypto.service.mjs +4 -4
- package/esm2020/src/app/core/services/local-settings.service.mjs +4 -4
- package/esm2020/src/app/core/services/network.service.mjs +4 -4
- package/esm2020/src/app/core/services/pipes/account.pipes.mjs +9 -9
- package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
- package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
- package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
- package/esm2020/src/app/core/services/platform.service.mjs +4 -4
- package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +4 -4
- package/esm2020/src/app/core/services/testing/referential.validator.mjs +4 -4
- package/esm2020/src/app/core/services/validator/account.validator.mjs +4 -4
- package/esm2020/src/app/core/services/validator/base.validator.class.mjs +4 -4
- package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +4 -4
- package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +4 -4
- package/esm2020/src/app/core/settings/settings.module.mjs +5 -5
- package/esm2020/src/app/core/settings/settings.page.mjs +5 -5
- package/esm2020/src/app/core/table/actions-column.component.mjs +4 -4
- package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +4 -4
- package/esm2020/src/app/core/table/memory-table.class.mjs +4 -4
- package/esm2020/src/app/core/table/table-select-columns.component.mjs +4 -4
- package/esm2020/src/app/core/table/table.class.mjs +4 -4
- package/esm2020/src/app/core/table/table.module.mjs +5 -5
- package/esm2020/src/app/core/table/testing/table.testing.mjs +5 -5
- package/esm2020/src/app/core/table/testing/table.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/audio/audio.mjs +4 -4
- package/esm2020/src/app/shared/audio/audio.testing.mjs +4 -4
- package/esm2020/src/app/shared/audio/audio.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/capacitor/keyboard.mjs +4 -4
- package/esm2020/src/app/shared/debug/debug.component.mjs +4 -4
- package/esm2020/src/app/shared/debug/debug.module.mjs +5 -5
- package/esm2020/src/app/shared/directives/autofocus.directive.mjs +4 -4
- package/esm2020/src/app/shared/directives/autotitle.directive.mjs +4 -4
- package/esm2020/src/app/shared/directives/directives.module.mjs +5 -5
- package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
- package/esm2020/src/app/shared/directives/ng-var.directive.mjs +4 -4
- package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
- package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
- package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
- package/esm2020/src/app/shared/file/file.service.mjs +4 -4
- package/esm2020/src/app/shared/form/field.component.mjs +4 -4
- package/esm2020/src/app/shared/form/loading-spinner.mjs +4 -4
- package/esm2020/src/app/shared/gesture/gesture-config.mjs +4 -4
- package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +4 -4
- package/esm2020/src/app/shared/help/help.modal.mjs +4 -4
- package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +4 -4
- package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +4 -4
- package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
- package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +4 -4
- package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
- package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +4 -4
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +4 -4
- package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/image/image.module.mjs +5 -5
- package/esm2020/src/app/shared/image/image.service.mjs +4 -4
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +4 -4
- package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
- package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +4 -4
- package/esm2020/src/app/shared/material/badge/badge.directive.mjs +4 -4
- package/esm2020/src/app/shared/material/badge/badge.module.mjs +5 -5
- package/esm2020/src/app/shared/material/badge/badge.test.mjs +4 -4
- package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +5 -5
- package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +5 -5
- package/esm2020/src/app/shared/material/chips/chips.module.mjs +5 -5
- package/esm2020/src/app/shared/material/chips/material.chips.mjs +4 -4
- package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +4 -4
- package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +5 -5
- package/esm2020/src/app/shared/material/datetime/material.date.mjs +5 -5
- package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +4 -4
- package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +5 -5
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +4 -4
- package/esm2020/src/app/shared/material/duration/duration.module.mjs +5 -5
- package/esm2020/src/app/shared/material/duration/material.duration.mjs +4 -4
- package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +4 -4
- package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
- package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +4 -4
- package/esm2020/src/app/shared/material/material.module.mjs +5 -5
- package/esm2020/src/app/shared/material/material.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +4 -4
- package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +5 -5
- package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +4 -4
- package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +4 -4
- package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
- package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +4 -4
- package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +5 -5
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +4 -4
- package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +25 -25
- package/esm2020/src/app/shared/pipes/colors.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +5 -5
- package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +7 -7
- package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +5 -5
- package/esm2020/src/app/shared/pipes/duration.pipe.mjs +5 -5
- package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/form.pipes.mjs +19 -19
- package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +5 -5
- package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
- package/esm2020/src/app/shared/pipes/maps.pipe.mjs +13 -13
- package/esm2020/src/app/shared/pipes/math.pipes.mjs +13 -13
- package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
- package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +5 -5
- package/esm2020/src/app/shared/pipes/pipes.module.mjs +5 -5
- package/esm2020/src/app/shared/pipes/property.pipes.mjs +8 -8
- package/esm2020/src/app/shared/pipes/string.pipes.mjs +22 -22
- package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +9 -9
- package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +4 -4
- package/esm2020/src/app/shared/services/progress-bar.service.mjs +4 -4
- package/esm2020/src/app/shared/services/storage/storage.service.mjs +4 -4
- package/esm2020/src/app/shared/services/translate-context.service.mjs +4 -4
- package/esm2020/src/app/shared/shared-routing.module.mjs +8 -8
- package/esm2020/src/app/shared/shared.module.mjs +5 -5
- package/esm2020/src/app/shared/shared.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/testing/observable.test.mjs +4 -4
- package/esm2020/src/app/shared/testing/tests.page.mjs +4 -4
- package/esm2020/src/app/shared/toast/toast.testing.mjs +4 -4
- package/esm2020/src/app/shared/toast/toast.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +4 -4
- package/esm2020/src/app/shared/toolbar/toolbar.mjs +5 -5
- package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +5 -5
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +4 -4
- package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
- package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +4 -4
- package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +4 -4
- package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +4 -4
- package/esm2020/src/app/social/job/job.module.mjs +5 -5
- package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +4 -4
- package/esm2020/src/app/social/job/progression/job-progression.list.mjs +4 -4
- package/esm2020/src/app/social/job/progression/job-progression.service.mjs +4 -4
- package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +4 -4
- package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
- package/esm2020/src/app/social/job/testing/job.testing.module.mjs +5 -5
- package/esm2020/src/app/social/message/message.form.mjs +4 -4
- package/esm2020/src/app/social/message/message.modal.mjs +4 -4
- package/esm2020/src/app/social/message/message.module.mjs +5 -5
- package/esm2020/src/app/social/message/message.service.mjs +4 -4
- package/esm2020/src/app/social/social.module.mjs +5 -5
- package/esm2020/src/app/social/social.testing.module.mjs +5 -5
- package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +4 -4
- package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +4 -4
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +4 -4
- package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
- package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +4 -4
- package/esm2020/src/app/social/user-event/user-event.module.mjs +5 -5
- package/esm2020/src/app/social/user-event/user-event.service.mjs +4 -4
- package/fesm2015/sumaris-net.ngx-components.mjs +806 -806
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +806 -806
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -214,9 +214,9 @@ export class UserEventTestingPage {
|
|
|
214
214
|
return Alerts.showError(text, this.alertController, this.translateService);
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
UserEventTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
218
|
-
UserEventTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.
|
|
219
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
217
|
+
UserEventTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestingPage, deps: [{ token: APP_USER_EVENT_SERVICE }, { token: i1.Router }, { token: i2.AlertController }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
+
UserEventTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: UserEventTestingPage, selector: "job-progression-testing", viewQueries: [{ propertyName: "notification", first: true, predicate: ["notification"], descendants: true }], ngImport: i0, template: "<ion-toolbar color=\"primary\">\n <ion-title>User events</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-user-event-notification-icon #notification [debug]=\"true\"></app-user-event-notification-icon>\n\n <p>\n <ion-button (click)=\"addNotification()\">Add notification</ion-button>\n <ion-button (click)=\"addError()\">Add error</ion-button>\n <ion-button (click)=\"addWarning()\">Add warning</ion-button>\n <ion-button (click)=\"addDebug()\">Add debug</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addNotificationWithLink()\">Add notification with link</ion-button>\n <ion-button (click)=\"addNotificationWithAction()\">Add notification with action</ion-button>\n <ion-button (click)=\"addNotificationWithDefaultAction()\">Add notification with default action</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addMany()\">Add notifications (x20)</ion-button>\n </p>\n <p>\n <ion-button (click)=\"startTimer()\" *ngIf=\"!timerStarted\">Start timer</ion-button>\n <ion-button (click)=\"stopTimer()\" *ngIf=\"timerStarted\">Stop timer</ion-button>\n </p>\n</ion-content>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i5.UserEventNotificationIcon, selector: "app-user-event-notification-icon", inputs: ["debug", "titleI18n", "disabled", "filter", "autoHide"] }] });
|
|
219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestingPage, decorators: [{
|
|
220
220
|
type: Component,
|
|
221
221
|
args: [{ selector: 'job-progression-testing', template: "<ion-toolbar color=\"primary\">\n <ion-title>User events</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-user-event-notification-icon #notification [debug]=\"true\"></app-user-event-notification-icon>\n\n <p>\n <ion-button (click)=\"addNotification()\">Add notification</ion-button>\n <ion-button (click)=\"addError()\">Add error</ion-button>\n <ion-button (click)=\"addWarning()\">Add warning</ion-button>\n <ion-button (click)=\"addDebug()\">Add debug</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addNotificationWithLink()\">Add notification with link</ion-button>\n <ion-button (click)=\"addNotificationWithAction()\">Add notification with action</ion-button>\n <ion-button (click)=\"addNotificationWithDefaultAction()\">Add notification with default action</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addMany()\">Add notifications (x20)</ion-button>\n </p>\n <p>\n <ion-button (click)=\"startTimer()\" *ngIf=\"!timerStarted\">Start timer</ion-button>\n <ion-button (click)=\"stopTimer()\" *ngIf=\"timerStarted\">Stop timer</ion-button>\n </p>\n</ion-content>\n" }]
|
|
222
222
|
}], ctorParameters: function () { return [{ type: i6.UserEventTestService, decorators: [{
|
|
@@ -226,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
226
226
|
type: ViewChild,
|
|
227
227
|
args: ['notification']
|
|
228
228
|
}] } });
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdGVzdGluZy91c2VyLWV2ZW50LnRlc3RpbmcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHN0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSzlDLE9BQU8sRUFBZSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFBQyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFNL0UsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUM0QyxnQkFBc0MsRUFDdEUsTUFBYyxFQUNkLGVBQWdDLEVBQ2hDLGdCQUFrQztRQUhGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRzVDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLE1BQU0sRUFBRSxDQUFDLFNBQXdCLEVBQUUsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFBLENBQUMsQ0FBQztZQUNyRCxV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QUNoQyxPQUFPLEVBQUU7Z0JBQ1c7b0JBQ2hCLE9BQU8sRUFBRSxJQUFJO29CQUNiLElBQUksRUFBRSxTQUFTO29CQUNmLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7U0FDRixDQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBWTtRQUNoQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0UsQ0FBQzs7aUhBek9VLG9CQUFvQixrQkFXckIsc0JBQXNCO3FHQVhyQixvQkFBb0IsNktDbEJqQyx5bkNBMkJBOzJGRFRhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQWNoQyxNQUFNOzJCQUFDLHNCQUFzQjs4SEFQTCxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FQUF9VU0VSX0VWRU5UX1NFUlZJQ0V9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0lVc2VyRXZlbnRBY3Rpb259IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0c30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2FsZXJ0cyc7XG5pbXBvcnQge0FsZXJ0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7VXNlckV2ZW50VGVzdFNlcnZpY2V9IGZyb20gJy4vdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyRXZlbnROb3RpZmljYXRpb25JY29ufSBmcm9tICcuLi9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24uaWNvbic7XG5pbXBvcnQge1N1YnNjcmlwdGlvbiwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtVc2VyRXZlbnRUZXN0fSBmcm9tICcuL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbCc7XG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtEYXRlVXRpbHN9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7IGNvbnN0IG1vbWVudCA9IG1vbWVudEltcG9ydGVkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqb2ItcHJvZ3Jlc3Npb24tdGVzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAndXNlci1ldmVudC50ZXN0aW5nLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RpbmdQYWdlIGltcGxlbWVudHMgT25EZXN0cm95e1xuXG4gIHByaXZhdGUgX3RpbWVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZCgnbm90aWZpY2F0aW9uJykgbm90aWZpY2F0aW9uOiBVc2VyRXZlbnROb3RpZmljYXRpb25JY29uO1xuXG4gIGdldCB0aW1lclN0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fdGltZXJTdWJzY3JpcHRpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFQUF9VU0VSX0VWRU5UX1NFUlZJQ0UpIHByb3RlY3RlZCB1c2VyRXZlbnRTZXJ2aWNlOiBVc2VyRXZlbnRUZXN0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuXG4gICAgdXNlckV2ZW50U2VydmljZS5yZWdpc3Rlckxpc3RlbmVyKHtcbiAgICAgIGFjY2VwdDogKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkgPT4geyByZXR1cm4gdHJ1ZSB9LFxuICAgICAgb25SZWNlaXZlZDogKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbWl6ZSh1c2VyRXZlbnQpO1xuICAgICAgICByZXR1cm4gdXNlckV2ZW50XG4gICAgICB9XG4gICAgfSlcbiAgICB1c2VyRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyTGlzdGVuZXIoe1xuICAgICAgYWNjZXB0OiAodXNlckV2ZW50OiBVc2VyRXZlbnRUZXN0KSA9PiB7IHJldHVybiB1c2VyRXZlbnQubGV2ZWwgPT0gXCJERUJVR1wiIH0sXG4gICAgICBvblJlYWQ6ICh1c2VyRXZlbnQ6IFVzZXJFdmVudFRlc3QpID0+IHsgdGhpcy5zaG93TWVzc2FnZShcImRlYnVnIG1lc3NhZ2UgcmVhZCBcIil9XG4gICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VzdG9taXplKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkge1xuXG4gICAgLy8gQ2hvb3NlIGF2YXRhckljb25cbiAgICBzd2l0Y2ggKHVzZXJFdmVudC5sZXZlbCkge1xuICAgICAgY2FzZSAnRVJST1InOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ2Nsb3NlLW91dGxpbmUnLCBjb2xvcjogJ2RhbmdlcicgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXQVJOSU5HJzpcbiAgICAgICAgdXNlckV2ZW50LmF2YXRhckljb24gPSB7IGljb246ICd3YXJuaW5nLW91dGxpbmUnLCBjb2xvcjogJ3dhcm5pbmcnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5GTyc6XG4gICAgICAgIHVzZXJFdmVudC5hdmF0YXJJY29uID0geyBpY29uOiAnaW5mb3JtYXRpb24tY2lyY2xlLW91dGxpbmUnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREVCVUcnOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ2NvZycsIGNvbG9yOiBcIm1lZGl1bVwiIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIENob29zZSBpY29uXG4gICAgc3dpdGNoICh1c2VyRXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgIHVzZXJFdmVudC5pY29uID0geyBtYXRJY29uOiAnaW5ib3gnLCBjb2xvcjogJ2FjY2VudCcgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICB1c2VyRXZlbnQuaWNvbiA9IHsgbWF0SWNvbjogJ2ZpbGVfdXBsb2FkJyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd25sb2FkJzpcbiAgICAgICAgdXNlckV2ZW50Lmljb24gPSB7IG1hdEljb246ICdmaWxlX2Rvd25sb2FkJyB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudFRlc3QuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ21lc3NhZ2UnLFxuICAgICAgICBsZXZlbDogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCcsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogRGF0ZVV0aWxzLm1vbWVudCgpLFxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkRXJyb3IoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICd1cGxvYWQnLFxuICAgICAgICBsZXZlbDogJ0VSUk9SJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgZXJyb3InLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZFdhcm5pbmcoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIGxldmVsOiAnV0FSTklORycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdhcm5pbmcnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZERlYnVnKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnZGVidWcnLFxuICAgICAgICBsZXZlbDogJ0RFQlVHJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgREVCVUcnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnbWVzc2FnZScsXG4gICAgICAgIGxldmVsOiAnSU5GTycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdpdGggbGluaycsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogRGF0ZVV0aWxzLm1vbWVudCgpLFxuICAgICAgICBhY3Rpb25zOiBbPElVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgIG5hbWU6ICdjbGljayBoZXJlJyxcbiAgICAgICAgICBpY29uUmVmOiB7XG4gICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhlY3V0ZUFjdGlvbjogZXZlbnQgPT4geyB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJykgfVxuICAgICAgICB9XVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudFRlc3QuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ21lc3NhZ2UnLFxuICAgICAgICBsZXZlbDogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSB3aXRoIGFjdGlvbicsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogRGF0ZVV0aWxzLm1vbWVudCgpLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgPElVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrIGhlcmUnLFxuICAgICAgICAgICAgaWNvblJlZjoge1xuICAgICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd3YXJuaW5nJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDEnKSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8SVVzZXJFdmVudEFjdGlvbj57XG4gICAgICAgICAgICBuYW1lOiAnY2xpY2sgaGVyZSAyJyxcbiAgICAgICAgICAgIGljb25SZWY6IHtcbiAgICAgICAgICAgICAgbWF0SWNvbjogJ3NldHRpbmdzX2FwcGxpY2F0aW9ucycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDInKSB9XG4gICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTWFueShjb3VudD86IG51bWJlcikge1xuICAgIGNvdW50ID0gY291bnQgfHwgMjA7XG4gICAgZm9yIChsZXQgaT0wOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgdGhpcy5hZGRSYW5kb20oaSk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRUaW1lcihwZXJpb2Q/OiBudW1iZXIpIHtcbiAgICB0aGlzLl90aW1lclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHBlcmlvZCA9IHBlcmlvZCB8fCAxMDAwO1xuICAgIGxldCBjb3VudGVyID0gMDtcblxuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIocGVyaW9kLCBwZXJpb2QpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRSYW5kb20oY291bnRlcik7XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RvcFRpbWVyKCkge1xuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIGFkZFJhbmRvbSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh2YWx1ZSAlIDYpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpcy5hZGROb3RpZmljYXRpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuYWRkRXJyb3IoKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5hZGREZWJ1ZygpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHRoaXMuYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICB0aGlzLmFkZE5vdGlmaWNhdGlvbldpdGhEZWZhdWx0QWN0aW9uKClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aERlZmF1bHRBY3Rpb24oKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ugd2l0aCBhY3Rpb24nLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIDxJVXNlckV2ZW50QWN0aW9uPntcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICBleGVjdXRlQWN0aW9uOiBldmVudCA9PiB7IHRoaXMuc2hvd01lc3NhZ2UoJ2RlZmF1bHQgYWN0aW9uJykgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dNZXNzYWdlKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBBbGVydHMuc2hvd0Vycm9yKHRleHQsIHRoaXMuYWxlcnRDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpO1xuICB9XG59XG5cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgPGlvbi10aXRsZT5Vc2VyIGV2ZW50czwvaW9uLXRpdGxlPlxuPC9pb24tdG9vbGJhcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cblxuICA8YXBwLXVzZXItZXZlbnQtbm90aWZpY2F0aW9uLWljb24gI25vdGlmaWNhdGlvbiBbZGVidWddPVwidHJ1ZVwiPjwvYXBwLXVzZXItZXZlbnQtbm90aWZpY2F0aW9uLWljb24+XG5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbigpXCI+QWRkIG5vdGlmaWNhdGlvbjwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkRXJyb3IoKVwiPkFkZCBlcnJvcjwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkV2FybmluZygpXCI+QWRkIHdhcm5pbmc8L2lvbi1idXR0b24+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZERlYnVnKClcIj5BZGQgZGVidWc8L2lvbi1idXR0b24+XG4gIDwvcD5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKClcIj5BZGQgbm90aWZpY2F0aW9uIHdpdGggbGluazwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpXCI+QWRkIG5vdGlmaWNhdGlvbiB3aXRoIGFjdGlvbjwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTm90aWZpY2F0aW9uV2l0aERlZmF1bHRBY3Rpb24oKVwiPkFkZCBub3RpZmljYXRpb24gd2l0aCBkZWZhdWx0IGFjdGlvbjwvaW9uLWJ1dHRvbj5cbiAgPC9wPlxuICA8cD5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTWFueSgpXCI+QWRkIG5vdGlmaWNhdGlvbnMgKHgyMCk8L2lvbi1idXR0b24+XG4gIDwvcD5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInN0YXJ0VGltZXIoKVwiICpuZ0lmPVwiIXRpbWVyU3RhcnRlZFwiPlN0YXJ0IHRpbWVyPC9pb24tYnV0dG9uPlxuICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzdG9wVGltZXIoKVwiICpuZ0lmPVwidGltZXJTdGFydGVkXCI+U3RvcCB0aW1lcjwvaW9uLWJ1dHRvbj5cbiAgPC9wPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdGVzdGluZy91c2VyLWV2ZW50LnRlc3RpbmcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHN0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSzlDLE9BQU8sRUFBZSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFBQyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFNL0UsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUM0QyxnQkFBc0MsRUFDdEUsTUFBYyxFQUNkLGVBQWdDLEVBQ2hDLGdCQUFrQztRQUhGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRzVDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLE1BQU0sRUFBRSxDQUFDLFNBQXdCLEVBQUUsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFBLENBQUMsQ0FBQztZQUNyRCxV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QUNoQyxPQUFPLEVBQUU7Z0JBQ1c7b0JBQ2hCLE9BQU8sRUFBRSxJQUFJO29CQUNiLElBQUksRUFBRSxTQUFTO29CQUNmLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7U0FDRixDQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBWTtRQUNoQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0UsQ0FBQzs7a0hBek9VLG9CQUFvQixrQkFXckIsc0JBQXNCO3NHQVhyQixvQkFBb0IsNktDbEJqQyx5bkNBMkJBOzRGRFRhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQWNoQyxNQUFNOzJCQUFDLHNCQUFzQjs4SEFQTCxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FQUF9VU0VSX0VWRU5UX1NFUlZJQ0V9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0lVc2VyRXZlbnRBY3Rpb259IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0c30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2FsZXJ0cyc7XG5pbXBvcnQge0FsZXJ0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7VXNlckV2ZW50VGVzdFNlcnZpY2V9IGZyb20gJy4vdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyRXZlbnROb3RpZmljYXRpb25JY29ufSBmcm9tICcuLi9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24uaWNvbic7XG5pbXBvcnQge1N1YnNjcmlwdGlvbiwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtVc2VyRXZlbnRUZXN0fSBmcm9tICcuL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbCc7XG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtEYXRlVXRpbHN9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7IGNvbnN0IG1vbWVudCA9IG1vbWVudEltcG9ydGVkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqb2ItcHJvZ3Jlc3Npb24tdGVzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAndXNlci1ldmVudC50ZXN0aW5nLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RpbmdQYWdlIGltcGxlbWVudHMgT25EZXN0cm95e1xuXG4gIHByaXZhdGUgX3RpbWVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZCgnbm90aWZpY2F0aW9uJykgbm90aWZpY2F0aW9uOiBVc2VyRXZlbnROb3RpZmljYXRpb25JY29uO1xuXG4gIGdldCB0aW1lclN0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fdGltZXJTdWJzY3JpcHRpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEFQUF9VU0VSX0VWRU5UX1NFUlZJQ0UpIHByb3RlY3RlZCB1c2VyRXZlbnRTZXJ2aWNlOiBVc2VyRXZlbnRUZXN0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuXG4gICAgdXNlckV2ZW50U2VydmljZS5yZWdpc3Rlckxpc3RlbmVyKHtcbiAgICAgIGFjY2VwdDogKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkgPT4geyByZXR1cm4gdHJ1ZSB9LFxuICAgICAgb25SZWNlaXZlZDogKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbWl6ZSh1c2VyRXZlbnQpO1xuICAgICAgICByZXR1cm4gdXNlckV2ZW50XG4gICAgICB9XG4gICAgfSlcbiAgICB1c2VyRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyTGlzdGVuZXIoe1xuICAgICAgYWNjZXB0OiAodXNlckV2ZW50OiBVc2VyRXZlbnRUZXN0KSA9PiB7IHJldHVybiB1c2VyRXZlbnQubGV2ZWwgPT0gXCJERUJVR1wiIH0sXG4gICAgICBvblJlYWQ6ICh1c2VyRXZlbnQ6IFVzZXJFdmVudFRlc3QpID0+IHsgdGhpcy5zaG93TWVzc2FnZShcImRlYnVnIG1lc3NhZ2UgcmVhZCBcIil9XG4gICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VzdG9taXplKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkge1xuXG4gICAgLy8gQ2hvb3NlIGF2YXRhckljb25cbiAgICBzd2l0Y2ggKHVzZXJFdmVudC5sZXZlbCkge1xuICAgICAgY2FzZSAnRVJST1InOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ2Nsb3NlLW91dGxpbmUnLCBjb2xvcjogJ2RhbmdlcicgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXQVJOSU5HJzpcbiAgICAgICAgdXNlckV2ZW50LmF2YXRhckljb24gPSB7IGljb246ICd3YXJuaW5nLW91dGxpbmUnLCBjb2xvcjogJ3dhcm5pbmcnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5GTyc6XG4gICAgICAgIHVzZXJFdmVudC5hdmF0YXJJY29uID0geyBpY29uOiAnaW5mb3JtYXRpb24tY2lyY2xlLW91dGxpbmUnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREVCVUcnOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ2NvZycsIGNvbG9yOiBcIm1lZGl1bVwiIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIENob29zZSBpY29uXG4gICAgc3dpdGNoICh1c2VyRXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgIHVzZXJFdmVudC5pY29uID0geyBtYXRJY29uOiAnaW5ib3gnLCBjb2xvcjogJ2FjY2VudCcgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICB1c2VyRXZlbnQuaWNvbiA9IHsgbWF0SWNvbjogJ2ZpbGVfdXBsb2FkJyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd25sb2FkJzpcbiAgICAgICAgdXNlckV2ZW50Lmljb24gPSB7IG1hdEljb246ICdmaWxlX2Rvd25sb2FkJyB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudFRlc3QuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ21lc3NhZ2UnLFxuICAgICAgICBsZXZlbDogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCcsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogRGF0ZVV0aWxzLm1vbWVudCgpLFxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkRXJyb3IoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICd1cGxvYWQnLFxuICAgICAgICBsZXZlbDogJ0VSUk9SJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgZXJyb3InLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZFdhcm5pbmcoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIGxldmVsOiAnV0FSTklORycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdhcm5pbmcnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZERlYnVnKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnZGVidWcnLFxuICAgICAgICBsZXZlbDogJ0RFQlVHJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgREVCVUcnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnbWVzc2FnZScsXG4gICAgICAgIGxldmVsOiAnSU5GTycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdpdGggbGluaycsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogRGF0ZVV0aWxzLm1vbWVudCgpLFxuICAgICAgICBhY3Rpb25zOiBbPElVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgIG5hbWU6ICdjbGljayBoZXJlJyxcbiAgICAgICAgICBpY29uUmVmOiB7XG4gICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhlY3V0ZUFjdGlvbjogZXZlbnQgPT4geyB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJykgfVxuICAgICAgICB9XVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudFRlc3QuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ21lc3NhZ2UnLFxuICAgICAgICBsZXZlbDogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSB3aXRoIGFjdGlvbicsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogRGF0ZVV0aWxzLm1vbWVudCgpLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgPElVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrIGhlcmUnLFxuICAgICAgICAgICAgaWNvblJlZjoge1xuICAgICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd3YXJuaW5nJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDEnKSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8SVVzZXJFdmVudEFjdGlvbj57XG4gICAgICAgICAgICBuYW1lOiAnY2xpY2sgaGVyZSAyJyxcbiAgICAgICAgICAgIGljb25SZWY6IHtcbiAgICAgICAgICAgICAgbWF0SWNvbjogJ3NldHRpbmdzX2FwcGxpY2F0aW9ucycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDInKSB9XG4gICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTWFueShjb3VudD86IG51bWJlcikge1xuICAgIGNvdW50ID0gY291bnQgfHwgMjA7XG4gICAgZm9yIChsZXQgaT0wOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgdGhpcy5hZGRSYW5kb20oaSk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRUaW1lcihwZXJpb2Q/OiBudW1iZXIpIHtcbiAgICB0aGlzLl90aW1lclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHBlcmlvZCA9IHBlcmlvZCB8fCAxMDAwO1xuICAgIGxldCBjb3VudGVyID0gMDtcblxuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIocGVyaW9kLCBwZXJpb2QpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRSYW5kb20oY291bnRlcik7XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RvcFRpbWVyKCkge1xuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIGFkZFJhbmRvbSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh2YWx1ZSAlIDYpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpcy5hZGROb3RpZmljYXRpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuYWRkRXJyb3IoKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5hZGREZWJ1ZygpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHRoaXMuYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICB0aGlzLmFkZE5vdGlmaWNhdGlvbldpdGhEZWZhdWx0QWN0aW9uKClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aERlZmF1bHRBY3Rpb24oKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ugd2l0aCBhY3Rpb24nLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IERhdGVVdGlscy5tb21lbnQoKSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIDxJVXNlckV2ZW50QWN0aW9uPntcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICBleGVjdXRlQWN0aW9uOiBldmVudCA9PiB7IHRoaXMuc2hvd01lc3NhZ2UoJ2RlZmF1bHQgYWN0aW9uJykgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNob3dNZXNzYWdlKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBBbGVydHMuc2hvd0Vycm9yKHRleHQsIHRoaXMuYWxlcnRDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpO1xuICB9XG59XG5cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgPGlvbi10aXRsZT5Vc2VyIGV2ZW50czwvaW9uLXRpdGxlPlxuPC9pb24tdG9vbGJhcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cblxuICA8YXBwLXVzZXItZXZlbnQtbm90aWZpY2F0aW9uLWljb24gI25vdGlmaWNhdGlvbiBbZGVidWddPVwidHJ1ZVwiPjwvYXBwLXVzZXItZXZlbnQtbm90aWZpY2F0aW9uLWljb24+XG5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbigpXCI+QWRkIG5vdGlmaWNhdGlvbjwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkRXJyb3IoKVwiPkFkZCBlcnJvcjwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkV2FybmluZygpXCI+QWRkIHdhcm5pbmc8L2lvbi1idXR0b24+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZERlYnVnKClcIj5BZGQgZGVidWc8L2lvbi1idXR0b24+XG4gIDwvcD5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKClcIj5BZGQgbm90aWZpY2F0aW9uIHdpdGggbGluazwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpXCI+QWRkIG5vdGlmaWNhdGlvbiB3aXRoIGFjdGlvbjwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTm90aWZpY2F0aW9uV2l0aERlZmF1bHRBY3Rpb24oKVwiPkFkZCBub3RpZmljYXRpb24gd2l0aCBkZWZhdWx0IGFjdGlvbjwvaW9uLWJ1dHRvbj5cbiAgPC9wPlxuICA8cD5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkTWFueSgpXCI+QWRkIG5vdGlmaWNhdGlvbnMgKHgyMCk8L2lvbi1idXR0b24+XG4gIDwvcD5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInN0YXJ0VGltZXIoKVwiICpuZ0lmPVwiIXRpbWVyU3RhcnRlZFwiPlN0YXJ0IHRpbWVyPC9pb24tYnV0dG9uPlxuICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzdG9wVGltZXIoKVwiICpuZ0lmPVwidGltZXJTdGFydGVkXCI+U3RvcCB0aW1lcjwvaW9uLWJ1dHRvbj5cbiAgPC9wPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -8,14 +8,14 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
import * as i1 from "@ngx-translate/core";
|
|
9
9
|
export class UserEventTestingModule {
|
|
10
10
|
}
|
|
11
|
-
UserEventTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
12
|
-
UserEventTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.
|
|
11
|
+
UserEventTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
UserEventTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestingModule, declarations: [UserEventTestingPage], imports: [CommonModule, i1.TranslateModule, SharedModule,
|
|
13
13
|
UserEventModule], exports: [UserEventTestingPage] });
|
|
14
|
-
UserEventTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.
|
|
14
|
+
UserEventTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestingModule, imports: [CommonModule,
|
|
15
15
|
TranslateModule.forChild(),
|
|
16
16
|
SharedModule,
|
|
17
17
|
UserEventModule] });
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestingModule, decorators: [{
|
|
19
19
|
type: NgModule,
|
|
20
20
|
args: [{
|
|
21
21
|
imports: [
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
32
32
|
]
|
|
33
33
|
}]
|
|
34
34
|
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvdGVzdGluZy91c2VyLWV2ZW50LnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFnQjVELE1BQU0sT0FBTyxzQkFBc0I7O29IQUF0QixzQkFBc0I7cUhBQXRCLHNCQUFzQixpQkFOL0Isb0JBQW9CLGFBTnBCLFlBQVksc0JBRVosWUFBWTtRQUNaLGVBQWUsYUFNZixvQkFBb0I7cUhBR1gsc0JBQXNCLFlBWi9CLFlBQVk7UUFDWixlQUFlLENBQUMsUUFBUSxFQUFFO1FBQzFCLFlBQVk7UUFDWixlQUFlOzRGQVNOLHNCQUFzQjtrQkFkbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUMxQixZQUFZO3dCQUNaLGVBQWU7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDWixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IFVzZXJFdmVudE1vZHVsZSB9IGZyb20gJy4uL3VzZXItZXZlbnQubW9kdWxlJztcbmltcG9ydCB7IFVzZXJFdmVudFRlc3RpbmdQYWdlIH0gZnJvbSAnLi91c2VyLWV2ZW50LnRlc3RpbmcnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBVc2VyRXZlbnRNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVXNlckV2ZW50VGVzdGluZ1BhZ2VcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFVzZXJFdmVudFRlc3RpbmdQYWdlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVXNlckV2ZW50VGVzdGluZ01vZHVsZSB7fVxuIl19
|
|
@@ -100,12 +100,12 @@ export class UserEventTestService extends AbstractUserEventService {
|
|
|
100
100
|
return Promise.resolve(res);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
UserEventTestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
104
|
-
UserEventTestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
103
|
+
UserEventTestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestService, deps: [{ token: i1.GraphqlService }, { token: i2.AccountService }, { token: i3.NetworkService }, { token: i4.TranslateService }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
104
|
+
UserEventTestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestService });
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventTestService, decorators: [{
|
|
106
106
|
type: Injectable
|
|
107
107
|
}], ctorParameters: function () { return [{ type: i1.GraphqlService }, { type: i2.AccountService }, { type: i3.NetworkService }, { type: i4.TranslateService }, { type: i5.Environment, decorators: [{
|
|
108
108
|
type: Inject,
|
|
109
109
|
args: [ENVIRONMENT]
|
|
110
110
|
}] }]; } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLHdCQUF3QixFQUE4QyxNQUFNLHVCQUF1QixDQUFDO0FBQzVHLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSzFELE9BQU8sRUFBYyxXQUFXLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxhQUFhLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFHOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUE0RDtJQUtwRyxZQUNZLE9BQXVCLEVBQ3ZCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQ04sV0FBd0I7UUFFdkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNqRCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUk7Z0JBQ2Isa0JBQWtCLEVBQUUsSUFBSTthQUN6QjtZQUNELFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVTtTQUNwQyxDQUFDLENBQUM7UUFaTyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDTixnQkFB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QUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRWxELE1BQU0sR0FBRyxHQUE4QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUV2RCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVyRCxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDeEMsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUMxQixHQUFHLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQ2xGLEVBQUMsR0FBRyxJQUFJLEVBQUUsV0FBVyxFQUFlLFVBQVUsRUFBb0MsQ0FDbkYsQ0FBQztTQUNIO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7O2lIQTNIVSxvQkFBb0IsNElBVXJCLFdBQVc7cUhBVlYsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQVdOLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0VXNlckV2ZW50U2VydmljZSwgVXNlckV2ZW50TG9hZE9wdGlvbnMsIFVzZXJFdmVudFdhdGNoT3B0aW9uc30gZnJvbSAnLi4vdXNlci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7R3JhcGhxbFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtOZXR3b3JrU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RW52aXJvbm1lbnQsIEVOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtGZXRjaFBvbGljeX0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge0VudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgTG9hZFJlc3VsdH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7U29ydERpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge0VudGl0eVV0aWxzfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtVc2VyRXZlbnRUZXN0LCBVc2VyRXZlbnRUZXN0RmlsdGVyfSBmcm9tICcuL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRUZXN0U2VydmljZSBleHRlbmRzIEFic3RyYWN0VXNlckV2ZW50U2VydmljZTxVc2VyRXZlbnRUZXN0LCBVc2VyRXZlbnRUZXN0RmlsdGVyPiB7XG5cbiAgcHJpdmF0ZSAkdXNlckV2ZW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlckV2ZW50VGVzdFtdPihbXSk7XG4gIHByaXZhdGUgJG5ld1VzZXJFdmVudHMgPSBuZXcgU3ViamVjdDxVc2VyRXZlbnRUZXN0W10+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBhY2NvdW50U2VydmljZSwgbmV0d29yaywgdHJhbnNsYXRlLCB7XG4gICAgICBxdWVyaWVzOiB7XG4gICAgICAgIGxvYWRBbGw6IG51bGwsXG4gICAgICAgIGxvYWRBbGxXaXRoQ29udGVudDogbnVsbFxuICAgICAgfSxcbiAgICAgIHByb2R1Y3Rpb246IGVudmlyb25tZW50Py5wcm9kdWN0aW9uXG4gICAgfSk7XG4gIH1cblxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpOiBVc2VyRXZlbnRUZXN0IHtcbiAgICByZXR1cm4gVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gIH1cblxuICBhc3luYyBhZGQoZW50aXR5OiBVc2VyRXZlbnRUZXN0KTogUHJvbWlzZTxVc2VyRXZlbnRUZXN0PiB7XG4gICAgZW50aXR5ID0gYXdhaXQgdGhpcy5wcm9jZXNzVXNlckV2ZW50KGVudGl0eSk7XG4gICAgZW50aXR5LmlkID0gKHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwKSArIDE7XG4gICAgdGhpcy4kdXNlckV2ZW50cy5uZXh0KFtcbiAgICAgIGVudGl0eSxcbiAgICAgIC4uLnRoaXMuJHVzZXJFdmVudHMudmFsdWVcbiAgICBdKTtcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCgodGhpcy5fY291bnRTdWJqZWN0LnZhbHVlIHx8IDApICsgMSk7XG4gICAgdGhpcy4kbmV3VXNlckV2ZW50cy5uZXh0KFtlbnRpdHldKTtcbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXNGaWx0ZXIoZmlsdGVyOiBQYXJ0aWFsPGFueT4pOiBhbnkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb3VudChmaWx0ZXI6IGFueSwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwKTtcbiAgfVxuXG4gIGRlbGV0ZShlbnRpdHk6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgZGVsZXRlQWxsKGRhdGE6IGFueVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogYW55LCBvcHRpb25zPzogVXNlckV2ZW50V2F0Y2hPcHRpb25zICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLiRuZXdVc2VyRXZlbnRzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2F2ZShlbnRpdHk6IGFueSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG5cbiAgICBjb25zdCB0b1NhdmUgPSB0aGlzLiR1c2VyRXZlbnRzLnZhbHVlPy5maW5kKHZhbHVlID0+IHZhbHVlLmlkID09IGVudGl0eT8uaWQpO1xuICAgIE9iamVjdC5hc3NpZ24odG9TYXZlLCBlbnRpdHkpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiAoZGF0YSB8fCBbXSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZShlbnRpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiR1c2VyRXZlbnRzLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRSZWNpcGllbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkgPyB0aGlzLmFjY291bnRTZXJ2aWNlLnBlcnNvbi5wdWJrZXkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB3YXRjaEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sIG9wdHM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLiR1c2VyRXZlbnRzLnBpcGUoXG4gICAgICBtYXAodXNlckV2ZW50cyA9PiB7XG4gICAgICAgIGxldCBkYXRhID0gKHVzZXJFdmVudHMgfHwgW10pLnNsaWNlKG9mZnNldHx8MCwgb2Zmc2V0ICsgc2l6ZSk7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gdGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG5cbiAgICAgICAgY29uc3QgcmVzID0gPExvYWRSZXN1bHQ8VXNlckV2ZW50VGVzdD4+eyBkYXRhLCB0b3RhbCB9O1xuXG4gICAgICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5DaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgICAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgIC8vIEFkZCBmZXRjaCBtb3JlXG4gICAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSBvZmZzZXQgKyBkYXRhLmxlbmd0aDtcbiAgICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgICAgICByZXMuZmV0Y2hNb3JlID0gIChfKSA9PiB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsXG4gICAgICAgICAgICB7Li4ub3B0cywgZmV0Y2hQb2xpY3k6IDxGZXRjaFBvbGljeT4nbm8tY2FjaGUnfSBhcyB1bmtub3duIGFzIFVzZXJFdmVudExvYWRPcHRpb25zXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgIClcblxuICB9XG5cbiAgbG9hZEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sXG4gICAgICAgICAgb3B0cz86IFVzZXJFdmVudExvYWRPcHRpb25zKTogUHJvbWlzZTxMb2FkUmVzdWx0PGFueT4+IHtcbiAgICBsZXQgZGF0YSA9ICh0aGlzLiR1c2VyRXZlbnRzLnZhbHVlIHx8IFtdKS5zbGljZShvZmZzZXR8fDAsIG9mZnNldCArIHNpemUpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG5cbiAgICBjb25zdCByZXMgPSA8TG9hZFJlc3VsdDxVc2VyRXZlbnRUZXN0Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0ICsgZGF0YS5sZW5ndGg7XG4gICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gIH1cbn1cbiJdfQ==
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLHdCQUF3QixFQUE4QyxNQUFNLHVCQUF1QixDQUFDO0FBQzVHLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSzFELE9BQU8sRUFBYyxXQUFXLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxhQUFhLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFHOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUE0RDtJQUtwRyxZQUNZLE9BQXVCLEVBQ3ZCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQ04sV0FBd0I7UUFFdkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNqRCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUk7Z0JBQ2Isa0JBQWtCLEVBQUUsSUFBSTthQUN6QjtZQUNELFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVTtTQUNwQyxDQUFDLENBQUM7UUFaTyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDTixnQkFB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QUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRWxELE1BQU0sR0FBRyxHQUE4QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUV2RCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVyRCxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDeEMsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUMxQixHQUFHLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQ2xGLEVBQUMsR0FBRyxJQUFJLEVBQUUsV0FBVyxFQUFlLFVBQVUsRUFBb0MsQ0FDbkYsQ0FBQztTQUNIO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7O2tIQTNIVSxvQkFBb0IsNElBVXJCLFdBQVc7c0hBVlYsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQVdOLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0VXNlckV2ZW50U2VydmljZSwgVXNlckV2ZW50TG9hZE9wdGlvbnMsIFVzZXJFdmVudFdhdGNoT3B0aW9uc30gZnJvbSAnLi4vdXNlci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7R3JhcGhxbFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHtBY2NvdW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtOZXR3b3JrU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RW52aXJvbm1lbnQsIEVOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtGZXRjaFBvbGljeX0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge0VudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgTG9hZFJlc3VsdH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7U29ydERpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge0VudGl0eVV0aWxzfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtVc2VyRXZlbnRUZXN0LCBVc2VyRXZlbnRUZXN0RmlsdGVyfSBmcm9tICcuL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRUZXN0U2VydmljZSBleHRlbmRzIEFic3RyYWN0VXNlckV2ZW50U2VydmljZTxVc2VyRXZlbnRUZXN0LCBVc2VyRXZlbnRUZXN0RmlsdGVyPiB7XG5cbiAgcHJpdmF0ZSAkdXNlckV2ZW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlckV2ZW50VGVzdFtdPihbXSk7XG4gIHByaXZhdGUgJG5ld1VzZXJFdmVudHMgPSBuZXcgU3ViamVjdDxVc2VyRXZlbnRUZXN0W10+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBhY2NvdW50U2VydmljZSwgbmV0d29yaywgdHJhbnNsYXRlLCB7XG4gICAgICBxdWVyaWVzOiB7XG4gICAgICAgIGxvYWRBbGw6IG51bGwsXG4gICAgICAgIGxvYWRBbGxXaXRoQ29udGVudDogbnVsbFxuICAgICAgfSxcbiAgICAgIHByb2R1Y3Rpb246IGVudmlyb25tZW50Py5wcm9kdWN0aW9uXG4gICAgfSk7XG4gIH1cblxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpOiBVc2VyRXZlbnRUZXN0IHtcbiAgICByZXR1cm4gVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gIH1cblxuICBhc3luYyBhZGQoZW50aXR5OiBVc2VyRXZlbnRUZXN0KTogUHJvbWlzZTxVc2VyRXZlbnRUZXN0PiB7XG4gICAgZW50aXR5ID0gYXdhaXQgdGhpcy5wcm9jZXNzVXNlckV2ZW50KGVudGl0eSk7XG4gICAgZW50aXR5LmlkID0gKHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwKSArIDE7XG4gICAgdGhpcy4kdXNlckV2ZW50cy5uZXh0KFtcbiAgICAgIGVudGl0eSxcbiAgICAgIC4uLnRoaXMuJHVzZXJFdmVudHMudmFsdWVcbiAgICBdKTtcbiAgICB0aGlzLl9jb3VudFN1YmplY3QubmV4dCgodGhpcy5fY291bnRTdWJqZWN0LnZhbHVlIHx8IDApICsgMSk7XG4gICAgdGhpcy4kbmV3VXNlckV2ZW50cy5uZXh0KFtlbnRpdHldKTtcbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgYXNGaWx0ZXIoZmlsdGVyOiBQYXJ0aWFsPGFueT4pOiBhbnkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb3VudChmaWx0ZXI6IGFueSwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwKTtcbiAgfVxuXG4gIGRlbGV0ZShlbnRpdHk6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgZGVsZXRlQWxsKGRhdGE6IGFueVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogYW55LCBvcHRpb25zPzogVXNlckV2ZW50V2F0Y2hPcHRpb25zICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLiRuZXdVc2VyRXZlbnRzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2F2ZShlbnRpdHk6IGFueSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG5cbiAgICBjb25zdCB0b1NhdmUgPSB0aGlzLiR1c2VyRXZlbnRzLnZhbHVlPy5maW5kKHZhbHVlID0+IHZhbHVlLmlkID09IGVudGl0eT8uaWQpO1xuICAgIE9iamVjdC5hc3NpZ24odG9TYXZlLCBlbnRpdHkpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiAoZGF0YSB8fCBbXSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZShlbnRpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiR1c2VyRXZlbnRzLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRSZWNpcGllbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkgPyB0aGlzLmFjY291bnRTZXJ2aWNlLnBlcnNvbi5wdWJrZXkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB3YXRjaEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sIG9wdHM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLiR1c2VyRXZlbnRzLnBpcGUoXG4gICAgICBtYXAodXNlckV2ZW50cyA9PiB7XG4gICAgICAgIGxldCBkYXRhID0gKHVzZXJFdmVudHMgfHwgW10pLnNsaWNlKG9mZnNldHx8MCwgb2Zmc2V0ICsgc2l6ZSk7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gdGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG5cbiAgICAgICAgY29uc3QgcmVzID0gPExvYWRSZXN1bHQ8VXNlckV2ZW50VGVzdD4+eyBkYXRhLCB0b3RhbCB9O1xuXG4gICAgICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5DaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgICAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgIC8vIEFkZCBmZXRjaCBtb3JlXG4gICAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSBvZmZzZXQgKyBkYXRhLmxlbmd0aDtcbiAgICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgICAgICByZXMuZmV0Y2hNb3JlID0gIChfKSA9PiB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsXG4gICAgICAgICAgICB7Li4ub3B0cywgZmV0Y2hQb2xpY3k6IDxGZXRjaFBvbGljeT4nbm8tY2FjaGUnfSBhcyB1bmtub3duIGFzIFVzZXJFdmVudExvYWRPcHRpb25zXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgIClcblxuICB9XG5cbiAgbG9hZEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sXG4gICAgICAgICAgb3B0cz86IFVzZXJFdmVudExvYWRPcHRpb25zKTogUHJvbWlzZTxMb2FkUmVzdWx0PGFueT4+IHtcbiAgICBsZXQgZGF0YSA9ICh0aGlzLiR1c2VyRXZlbnRzLnZhbHVlIHx8IFtdKS5zbGljZShvZmZzZXR8fDAsIG9mZnNldCArIHNpemUpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG5cbiAgICBjb25zdCByZXMgPSA8TG9hZFJlc3VsdDxVc2VyRXZlbnRUZXN0Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0ICsgZGF0YS5sZW5ndGg7XG4gICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,17 +8,17 @@ import { NgxJdenticonModule } from 'ngx-jdenticon';
|
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class UserEventModule {
|
|
10
10
|
}
|
|
11
|
-
UserEventModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
12
|
-
UserEventModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.
|
|
11
|
+
UserEventModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
UserEventModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: UserEventModule, declarations: [UserEventNotificationIcon,
|
|
13
13
|
UserEventNotificationList], imports: [CommonModule,
|
|
14
14
|
SharedModule,
|
|
15
15
|
AppIconModule,
|
|
16
16
|
NgxJdenticonModule], exports: [UserEventNotificationIcon] });
|
|
17
|
-
UserEventModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.
|
|
17
|
+
UserEventModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventModule, imports: [CommonModule,
|
|
18
18
|
SharedModule,
|
|
19
19
|
AppIconModule,
|
|
20
20
|
NgxJdenticonModule] });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: UserEventModule, decorators: [{
|
|
22
22
|
type: NgModule,
|
|
23
23
|
args: [{
|
|
24
24
|
imports: [
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
36
36
|
]
|
|
37
37
|
}]
|
|
38
38
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3VzZXItZXZlbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDOztBQWlCakQsTUFBTSxPQUFPLGVBQWU7OzZHQUFmLGVBQWU7OEdBQWYsZUFBZSxpQkFQeEIseUJBQXlCO1FBQ3pCLHlCQUF5QixhQVB6QixZQUFZO1FBQ1osWUFBWTtRQUNaLGFBQWE7UUFDYixrQkFBa0IsYUFPbEIseUJBQXlCOzhHQUdoQixlQUFlLFlBYnhCLFlBQVk7UUFDWixZQUFZO1FBQ1osYUFBYTtRQUNiLGtCQUFrQjs0RkFVVCxlQUFlO2tCQWYzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixrQkFBa0I7cUJBQ25CO29CQUNELFlBQVksRUFBRTt3QkFDWix5QkFBeUI7d0JBQ3pCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHlCQUF5QjtxQkFDMUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGV9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7VXNlckV2ZW50Tm90aWZpY2F0aW9uSWNvbn0gZnJvbSAnLi9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24uaWNvbic7XG5pbXBvcnQge1VzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3R9IGZyb20gJy4vbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmxpc3QnO1xuaW1wb3J0IHtBcHBJY29uTW9kdWxlfSBmcm9tICcuLi8uLi9jb3JlL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHtOZ3hKZGVudGljb25Nb2R1bGV9IGZyb20gJ25neC1qZGVudGljb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBBcHBJY29uTW9kdWxlLFxuICAgIE5neEpkZW50aWNvbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBVc2VyRXZlbnROb3RpZmljYXRpb25JY29uLFxuICAgIFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3RcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFVzZXJFdmVudE5vdGlmaWNhdGlvbkljb25cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRNb2R1bGUge1xufVxuIl19
|
|
@@ -479,9 +479,9 @@ export class AbstractUserEventService extends BaseGraphqlService {
|
|
|
479
479
|
EntityUtils.copyIdAndUpdateDate(source, target);
|
|
480
480
|
}
|
|
481
481
|
}
|
|
482
|
-
AbstractUserEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.
|
|
483
|
-
AbstractUserEventService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.
|
|
484
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.
|
|
482
|
+
AbstractUserEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractUserEventService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
483
|
+
AbstractUserEventService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: AbstractUserEventService, usesInheritance: true, ngImport: i0 });
|
|
484
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractUserEventService, decorators: [{
|
|
485
485
|
type: Directive
|
|
486
486
|
}], ctorParameters: function () { return [{ type: i1.GraphqlService }, { type: i2.AccountService }, { type: i3.NetworkService }, { type: i4.TranslateService }, { type: undefined }]; } });
|
|
487
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsT0FBTyxFQUFDLGVBQWUsRUFBUyxLQUFLLEVBQWMsRUFBRSxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJakcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUkvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsa0JBQWtCLENBQUMsQ0FBQztBQTBFMUcsTUFBTSxPQUFnQix3QkFVcEIsU0FBUSxrQkFBNEI7SUFnQnBDLFlBQ1ksT0FBdUIsRUFDdkIsY0FBOEIsRUFDOUIsT0FBdUIsRUFDdkIsU0FBMkIsRUFDM0IsT0FBeUM7UUFFbkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5kLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixZQUFPLEdBQVAsT0FBTyxD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QyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFtQixDQUFDLENBQUM7UUFDN0YsT0FBTyxNQUFNO2FBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQztJQUVTLG1CQUFtQixDQUFDLE1BQVMsRUFBRSxNQUFTO1FBQ2hELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7cUhBdmtCbUIsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvY2lhbEVycm9yQ29kZXMgfSBmcm9tICcuLi9zb2NpYWwuZXJyb3JzJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElVc2VyRXZlbnQsIElVc2VyRXZlbnRGaWx0ZXIgfSBmcm9tICcuL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBJRW50aXRpZXNTZXJ2aWNlLCBMb2FkUmVzdWx0LCBQYWdlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCB0b051bWJlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlR3JhcGhxbFNlcnZpY2UsIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVudGl0eVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RhdGVzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBJU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBBUFBfVVNFUl9FVkVOVF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElVc2VyRXZlbnRTZXJ2aWNlPGFueSwgYW55Pj4oJ1VzZXJFdmVudFNlcnZpY2UnKTtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVzZXJFdmVudExvYWRPcHRpb25zIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFF1ZXJpZXMge1xuICBsb2FkQWxsOiBhbnk7XG4gIGxvYWRBbGxXaXRoQ29udGVudDogYW55O1xuICBjb3VudD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50TXV0YXRpb25zIHtcbiAgc2F2ZTogYW55O1xuICBtYXJrQXNSZWFkPzogYW55O1xuICBkZWxldGVCeUlkczogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zIHtcbiAgbGlzdGVuQWxsQ2hhbmdlczogYW55O1xuICBsaXN0ZW5Db3VudENoYW5nZXM/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPiwgSUQgPSBudW1iZXI+IHtcbiAgYWNjZXB0OiAoRSkgPT4gYm9vbGVhbjtcbiAgb25SZWNlaXZlZD86IChFKSA9PiBQcm9taXNlPEU+IHwgRSB8IHVuZGVmaW5lZDtcbiAgb25SZWFkPzogKEUpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFxuICBRIGV4dGVuZHMgSVVzZXJFdmVudFF1ZXJpZXMgPSBJVXNlckV2ZW50UXVlcmllcyxcbiAgTSBleHRlbmRzIElVc2VyRXZlbnRNdXRhdGlvbnMgPSBJVXNlckV2ZW50TXV0YXRpb25zLFxuICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9uc1xuICA+IGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlT3B0aW9ucyB7XG4gIHF1ZXJpZXM6IFE7XG4gIG11dGF0aW9ucz86IFBhcnRpYWw8TT47XG4gIHN1YnNjcmlwdGlvbnM/OiBQYXJ0aWFsPFM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRTZXJ2aWNlPFxuICBFIGV4dGVuZHMgSVVzZXJFdmVudDxFLCBJRD4sXG4gIEYgZXh0ZW5kcyBJVXNlckV2ZW50RmlsdGVyPEUsIElEPixcbiAgSUQgPSBudW1iZXIsXG4gIFdPIGV4dGVuZHMgVXNlckV2ZW50V2F0Y2hPcHRpb25zID0gVXNlckV2ZW50V2F0Y2hPcHRpb25zLFxuICBMTyBleHRlbmRzIFVzZXJFdmVudExvYWRPcHRpb25zID0gVXNlckV2ZW50TG9hZE9wdGlvbnNcbiAgPlxuICBleHRlbmRzIElFbnRpdGllc1NlcnZpY2U8RSwgRiwgV08+LCBJU3RhcnRhYmxlU2VydmljZSB7XG5cbiAgY291bnRTdWJqZWN0OiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgYWRkKGVudGl0eTogRSk6IFByb21pc2U8RT47XG5cbiAgbG9hZChpZDogSUQsIG9wdHM/OiBMTyk6IFByb21pc2U8RT47XG5cbiAgY291bnQoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogeyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5OyB9KTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3k7IH0pOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgbGlzdGVuQWxsQ2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3k7IH0pOiBPYnNlcnZhYmxlPEVbXT47XG5cbiAgc2F2ZShlbnRpdHk6IEUsIG9wdGlvbnM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPEU+O1xuXG4gIGRlbGV0ZShlbnRpdHk6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgbWFya0FsbEFzUmVhZChlbnRpdGllczogRVtdKTtcblxuICByZWdpc3Rlckxpc3RlbmVyKGxpc3RlbmVyOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+KTtcblxuICByZXNldENvdW50KCk7XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VXNlckV2ZW50U2VydmljZTxcbiAgRSBleHRlbmRzIElVc2VyRXZlbnQ8RSwgSUQsIGFueT4sXG4gIEYgZXh0ZW5kcyBJVXNlckV2ZW50RmlsdGVyPEUsIElELCBhbnk+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgVXNlckV2ZW50TG9hZE9wdGlvbnMgPSBVc2VyRXZlbnRMb2FkT3B0aW9ucyxcbiAgUSBleHRlbmRzIElVc2VyRXZlbnRRdWVyaWVzID0gSVVzZXJFdmVudFF1ZXJpZXMsXG4gIE0gZXh0ZW5kcyBJVXNlckV2ZW50TXV0YXRpb25zID0gSVVzZXJFdmVudE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zID0gSVVzZXJFdmVudFN1YnNjcmlwdGlvbnNcbiAgPlxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxFLCBGLCBJRD5cbiAgaW1wbGVtZW50cyBJVXNlckV2ZW50U2VydmljZTxFLCBGLCBJRCwgV08sIExPPiwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcmllczogUTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG11dGF0aW9uczogUGFydGlhbDxNPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnM6IFBhcnRpYWw8Uz47XG4gIHByb3RlY3RlZCByZWFkb25seSBfY291bnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgcmVzZXRDb3VudERhdGU6IE1vbWVudDtcbiAgcHJvdGVjdGVkIGxpc3RlbmVyczogSVVzZXJFdmVudExpc3RlbmVyPEUsIElEPltdID0gW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX2xpc3RlblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGdldCBjb3VudFN1YmplY3QoKTogU3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY291bnRTdWJqZWN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvcHRpb25zOiBVc2VyRXZlbnRTZXJ2aWNlT3B0aW9uczxRLCBNLCBTPlxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBvcHRpb25zKTtcbiAgICB0aGlzLnF1ZXJpZXMgPSBvcHRpb25zLnF1ZXJpZXM7XG4gICAgdGhpcy5tdXRhdGlvbnMgPSBvcHRpb25zLm11dGF0aW9ucyB8fCA8UGFydGlhbDxNPj57fTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBvcHRpb25zLnN1YnNjcmlwdGlvbnMgfHwgPFBhcnRpYWw8Uz4+e307XG4gICAgdGhpcy5fbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LXNlcnZpY2VdICc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgLy8gVXBkYXRlIGNvbXBvbmVudCB3aGVuIHJlZnJlc2ggaXMgbmVlZCAoPWxvZ2luIGV2ZW50cylcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG1lcmdlKFxuICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dvdXQsXG4gICAgICAgIHRpbWVyKDEwMDApIC8vIFN0YXJ0cyB3aXRoIC0gIGZpcnN0IGF0dGVtcHQgaWYgYWNjb3VudCBpcyByZWFkeVxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBXYWl0IGFjY291bnQgc2VydmljZSByZWFkeSAoY2FuIGJlIHJlc3RhcnRlZClcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCkpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUobG9naW4gPT4ge1xuICAgICAgICAgIGlmIChsb2dpbikge1xuICAgICAgICAgICAgdGhpcy5vbkxvZ2luKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25Mb2dvdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGFzRmlsdGVyKGZpbHRlcjogUGFydGlhbDxGPik6IEY7XG5cbiAgYWJzdHJhY3QgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IEU7XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgcmV0dXJuIHRoaXMud2F0Y2hQYWdlKDxQYWdlPnsgb2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24gfSwgZmlsdGVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHdhdGNoUGFnZShwYWdlOiBQYWdlLFxuICAgICAgICAgICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICAgICAgICAgIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxFPj4ge1xuXG4gICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIHVzZXIgZXZlbnRzLi4uYCwgZmlsdGVyKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIEZvcmNlIHJlY2lwaWVudCB0byBjdXJyZW50IGlzc3VlciwgaWYgbm90IGFkbWluIGFuZCBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXI/LnJlY2lwaWVudHMpIHx8ICF0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5kZWZhdWx0UmVjaXBpZW50KCk7XG4gICAgICBpZiAoIWZpbHRlcj8ucmVjaXBpZW50cz8uaW5jbHVkZXMocmVjaXBpZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2VyLWV2ZW50cy1zZXJ2aWNlXSBGb3JjZSB1c2VyIGV2ZW50IGZpbHRlci5yZWNpcGllbnQ9JyArIHJlY2lwaWVudCk7XG4gICAgICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3JlY2lwaWVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLm11dGFibGVXYXRjaFF1ZXJ5PExvYWRSZXN1bHQ8RT4sIHsgZmlsdGVyOiBhbnksIHBhZ2U6IFBhZ2UgfT4oe1xuICAgICAgcXVlcnlOYW1lOiB3aXRoQ29udGVudCA/ICdMb2FkQWxsV2l0aENvbnRlbnQnIDogJ0xvYWRBbGwnLFxuICAgICAgcXVlcnk6IHdpdGhDb250ZW50ID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCA6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICBzb3J0Qnk6ICdjcmVhdGlvbkRhdGUnLFxuICAgICAgICAgIC4uLnBhZ2UsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHNvcnREaXJlY3Rpb246IChwYWdlLnNvcnREaXJlY3Rpb24gfHwgJ2Rlc2MnKS50b1VwcGVyQ2FzZSgpXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpXG4gICAgICB9LFxuICAgICAgYXJyYXlGaWVsZE5hbWU6ICdkYXRhJyxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuTE9BRF9VU0VSX0VWRU5UU19FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5IHx8ICdjYWNoZS1maXJzdCcsXG4gICAgICBpbnNlcnRGaWx0ZXJGbjogZmlsdGVyICYmIGZpbHRlci5hc0ZpbHRlckZuKClcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCh2YWx1ZSA9PiB0aGlzLnByb2Nlc3NVc2VyRXZlbnQodmFsdWUpKSk7XG5cbiAgICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0ke2RhdGEubGVuZ3RofSB1c2VyIGV2ZW50cyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5BbGxDaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgICAgICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHBhZ2Uuc29ydEJ5LCBwYWdlLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHRvdGFsOiB0b051bWJlcihyZXM/LnRvdGFsLCBkYXRhLmxlbmd0aClcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gQWRkIGZldGNoIG1vcmUgY2FwYWJpbGl0eSwgaWYgdG90YWwgd2FzIGZldGNoZWRcbiAgICAgICAgICBpZiAoaXNOb3ROaWwocmVzLnRvdGFsKSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dE9mZnNldCA9IChwYWdlLm9mZnNldCB8fCAwKSArIGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXN1bHQudG90YWwpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9IChfKSA9PiB0aGlzLmxvYWRQYWdlKHsuLi5wYWdlLCBvZmZzZXQ6IG5leHRPZmZzZXR9LCBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBMT1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZFBhZ2UocGFnZTogUGFnZSxcbiAgICAgICAgICAgICAgICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICAgICAgICAgICAgICAgb3B0cz86IExPKTogUHJvbWlzZTxMb2FkUmVzdWx0PEU+PiB7XG5cbiAgICBjb25zdCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcblxuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgdXNlciBldmVudHMuLi5gLCBmaWx0ZXIpO1xuXG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgLy8gRm9yY2UgcmVjaXBpZW50IHRvIGN1cnJlbnQgaXNzdWVyLCBpZiBub3QgYWRtaW4gYW5kIG5vdCBzcGVjaWZpZWRcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlcj8ucmVjaXBpZW50cykgfHwgIXRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmRlZmF1bHRSZWNpcGllbnQoKTtcbiAgICAgIGlmICghZmlsdGVyPy5yZWNpcGllbnRzPy5pbmNsdWRlcyhyZWNpcGllbnQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3VzZXItZXZlbnRzLXNlcnZpY2VdIEZvcmNlIHVzZXIgZXZlbnQgZmlsdGVyLnJlY2lwaWVudD0nICsgcmVjaXBpZW50KTtcbiAgICAgICAgZmlsdGVyLnJlY2lwaWVudHMgPSBbcmVjaXBpZW50XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9IG9wdHM/LndpdGhDb250ZW50ID09PSB0cnVlO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8RT4+KHtcbiAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgc29ydEJ5OiAnY3JlYXRpb25EYXRlJyxcbiAgICAgICAgICAuLi5wYWdlLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKVxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuTE9BRF9VU0VSX0VWRU5UU19FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5XG4gICAgfSlcbiAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCh2YWx1ZSA9PiB0aGlzLnByb2Nlc3NVc2VyRXZlbnQodmFsdWUpKSk7XG5cbiAgICBpZiAobm93KSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0ke2RhdGEubGVuZ3RofSB1c2VyIGV2ZW50cyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQWxsQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBwYWdlLnNvcnRCeSwgcGFnZS5zb3J0RGlyZWN0aW9uKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IDxMb2FkUmVzdWx0PEU+PntcbiAgICAgIGRhdGEsXG4gICAgICB0b3RhbDogdG9OdW1iZXIocmVzPy50b3RhbCwgZGF0YS5sZW5ndGgpXG4gICAgfTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgaWYgKGlzTm90TmlsKHJlcy50b3RhbCkpIHtcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzdWx0LnRvdGFsKSB7XG4gICAgICAgIHJlc3VsdC5mZXRjaE1vcmUgPSAoXykgPT4gdGhpcy5sb2FkUGFnZSh7Li4ucGFnZSwgb2Zmc2V0OiBuZXh0T2Zmc2V0fSwgZmlsdGVyLCBvcHRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgbG9hZChpZDogSUQsIG9wdHM/OiBMTyk6IFByb21pc2U8RT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIGZpbHRlci5pbmNsdWRlZElkcyA9IFtpZF07XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmxvYWRQYWdlKHtvZmZzZXQ6IDAsIHNpemU6IDF9LCBmaWx0ZXIsIG9wdHMpO1xuICAgIHJldHVybiBkYXRhICYmIGRhdGFbMF07XG4gIH1cblxuICBhc3luYyBhZGQoZW50aXR5OiBFKTogUHJvbWlzZTxFPiB7XG5cblxuICAgIGVudGl0eSA9IGF3YWl0IHRoaXMucHJvY2Vzc1VzZXJFdmVudChlbnRpdHkpO1xuXG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gUmVqZWN0ZWRcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gISFlbnRpdHkuY29udGVudDtcblxuICAgIC8vIEFkZCB1c2VyIGV2ZW50IGxvY2FsbHlcbiAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhcbiAgICAgIHRoaXMuZ3JhcGhxbC5jYWNoZSxcbiAgICAgIHtcbiAgICAgICAgcXVlcnk6IHdpdGhDb250ZW50ID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCA6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgICBkYXRhOiBlbnRpdHlcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gVXBkYXRlIGNvdW50XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQodGhpcy5fY291bnRTdWJqZWN0LnZhbHVlICsgMSk7XG5cbiAgICAvLyBBZGQgaWRcbiAgICBjb25zb2xlLmxvZygnVE9ETzogYWRkIGFuIElEIHRvIHVzZXIgZXZlbnQgPycpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgfSk6IFByb21pc2U8bnVtYmVyPiB7XG5cbiAgICBpZiAoIXRoaXMucXVlcmllcz8uY291bnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9UXVlcnkgJ2NvdW50JyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICAvLyBBcHBseSBsYXN0IHJlc2V0IGRhdGUgYXMgc3RhcnQgZGF0ZVxuICAgIGZpbHRlci5zdGFydERhdGUgPSB0aGlzLnJlc2V0Q291bnREYXRlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Q291bnRpbmcgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXI7IH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMuY291bnQsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuQ09VTlRfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5DT1VOVF9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy50b3RhbDtcbiAgfVxuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucz8ubGlzdGVuQ291bnRDaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVN1YnNjcmlwdGlvbiBxdWVyeSAnbGlzdGVuQ291bnRDaGFuZ2VzJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgLy8gQXBwbHkgbGFzdCByZXNldCBkYXRlIGFzIHN0YXJ0IGRhdGVcbiAgICBmaWx0ZXIuc3RhcnREYXRlID0gdGhpcy5yZXNldENvdW50RGF0ZTtcbiAgICBmaWx0ZXIuZXhjbHVkZVJlYWQgPSB0cnVlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY291bnQgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHsgdG90YWw6IG51bWJlciB9LCB7IGZpbHRlcjogYW55LCBpbnRlcnZhbDogbnVtYmVyIH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQ291bnRDaGFuZ2VzLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5LFxuICAgICAgdmFyaWFibGVzOiB7IGZpbHRlcjogZmlsdGVyLmFzUG9kT2JqZWN0KCksIGludGVydmFsOiB0b051bWJlcihvcHRpb25zPy5pbnRlcnZhbCwgMTApIH0sXG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5TVUJTQ1JJQkVfVVNFUl9FVkVOVFNfRVJST1InXG4gICAgICB9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyB0b3RhbCB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRvdGFsICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHMgY291bnQ6YCwgdG90YWwpO1xuICAgICAgICAgIC8vIHVwZGF0ZSBjb3VudFxuICAgICAgICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRvdGFsKTtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuXG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0cz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgdG9FbnRpdHk/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEVbXT4ge1xuXG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnM/Lmxpc3RlbkFsbENoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9U3Vic2NyaXB0aW9uIHF1ZXJ5ICdsaXN0ZW5BbGxDaGFuZ2VzJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHsgZGF0YTogYW55W10gfSwgeyBmaWx0ZXI6IGFueSwgaW50ZXJ2YWw6IG51bWJlciB9Pih7XG4gICAgICBxdWVyeTogdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkFsbENoYW5nZXMsXG4gICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdHM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU1VCU0NSSUJFX1VTRVJfRVZFTlRTX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUidcbiAgICAgIH1cbiAgICB9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChkYXRhICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHM6YCwgZGF0YSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIGNhY2hlICh3aWxsIHVwZGF0ZSB3YXRjaEFsbCBxdWVyaWVzKVxuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMoXG4gICAgICAgICAgICB0aGlzLmdyYXBocWwuY2FjaGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIGVudGl0aWVzXG4gICAgICAgIGlmICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbCgoZGF0YSB8fCBbXSkubWFwKHZhbHVlID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICBhc3luYyBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIWVudGl0eSkgcmV0dXJuOyAvLyBza2lwXG4gICAgYXdhaXQgdGhpcy5kZWxldGVBbGwoW2VudGl0eV0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKGVudGl0aWVzOiBFW10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGlkcyA9IGVudGl0aWVzICYmIGVudGl0aWVzXG4gICAgICAubWFwKHQgPT4gdC5pZCk7XG4gICAgaWYgKGlzRW1wdHlBcnJheShpZHMpKSByZXR1cm47IC8vIHN0b3AsIGlmIG5vdGhpbmcgZWxzZSB0byBkb1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fURlbGV0aW5nIGV2ZW50cy4uLiBpZHM6YCwgaWRzKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuZGVsZXRlQnlJZHMsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWRzXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiAocHJveHkpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVzXG4gICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMocHJveHksIHtcbiAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgICAgaWRzXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKHByb3h5LCB7XG4gICAgICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQsXG4gICAgICAgICAgaWRzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RXZlbnRzIGRlbGV0ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlKGVudGl0eTogRSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8RT4ge1xuICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW50byBqc29uXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAhIWVudGl0eS5jb250ZW50O1xuICAgIGNvbnN0IGpzb24gPSBlbnRpdHkuYXNPYmplY3QoKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1TYXZpbmcgdXNlciBldmVudC4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHsgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5TQVZFX1VTRVJfRVZFTlRfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuU0FWRV9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgdXBkYXRlOiAocHJveHksIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIC8vIFVwZGF0ZSBlbnRpdHlcbiAgICAgICAgY29uc3Qgc2F2ZWRFbnRpdHkgPSBkYXRhICYmIGRhdGEuZGF0YTtcbiAgICAgICAgaWYgKHNhdmVkRW50aXR5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Vc2VyIGV2ZW50IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0eSk7XG4gICAgICAgICAgdGhpcy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNhdmVkRW50aXR5LCBlbnRpdHkpO1xuXG4gICAgICAgICAgLy8gQWRkIHRvIGNhY2hlXG4gICAgICAgICAgaWYgKHdpdGhDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCxcbiAgICAgICAgICAgICAgZGF0YTogc2F2ZWRFbnRpdHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAuLi5zYXZlZEVudGl0eSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IEVbXSwgb3B0cz86IGFueSk6IFByb21pc2U8RVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGVudGl0aWVzXG4gICAgICAubWFwKGVudGl0eSA9PiB0aGlzLnNhdmUoZW50aXR5LCBvcHRzKSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbWFya0FsbEFzUmVhZChlbnRpdGllczogRVtdKSB7XG5cbiAgICBjb25zdCB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVyczogRVtdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgKGVudGl0aWVzIHx8IFtdKSkge1xuICAgICAgLy8gR2V0IG9uUmVhZCBsaXN0ZW5lcnNcbiAgICAgIGNvbnN0IG9uUmVhZExpc3RlbmVycyA9ICh0aGlzLmxpc3RlbmVycyB8fCBbXSkuZmlsdGVyKGxpc3RlbmVyID0+ICEhbGlzdGVuZXIub25SZWFkKS5maWx0ZXIobGlzdGVuZXIgPT4gbGlzdGVuZXIuYWNjZXB0KGVudGl0eSkpO1xuICAgICAgaWYgKG9uUmVhZExpc3RlbmVycy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBvblJlYWRMaXN0ZW5lcnMpIHtcbiAgICAgICAgICBhd2FpdCBsaXN0ZW5lci5vblJlYWQoZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWRkIHRvIHRoaXMgbGlzdCBmb3IgZGVmYXVsdCBvcGVyYXRpb25cbiAgICAgICAgdXNlckV2ZW50V2l0aG91dFJlYWRMaXN0ZW5lcnMucHVzaChlbnRpdHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVzZSBkZWZhdWx0XG4gICAgYXdhaXQgdGhpcy5kZWZhdWx0TWFya0FzUmVhZCh1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVycyk7XG4gIH1cblxuICByZWdpc3Rlckxpc3RlbmVyKGxpc3RlbmVyOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+KSB7XG4gICAgaWYgKCF0aGlzLmxpc3RlbmVycykgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlc2V0Q291bnQoKSB7XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnJlc2V0Q291bnREYXRlID0gRGF0ZVV0aWxzLm1vbWVudCgpO1xuICAgIC8vIHJlc3RhcnQgbGlzdGVuaW5nIGNvdW50IGNoYW5nZXNcbiAgICB0aGlzLnN0YXJ0TGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvZ2luKCkge1xuICAgIC8vIEdldCBmaXJzdCBjb3VudFxuICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgdGhpcy5jb3VudCh1bmRlZmluZWQpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9UmVjZWl2aW5nIHVzZXIgZXZlbnRzIGNvdW50YCwgY291bnQpO1xuICAgIC8vIFVwZGF0ZSBjb3VudFxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KGNvdW50KTtcblxuICAgIC8vIFRoZW4gbGlzdGVuIGNoYW5nZXNcbiAgICB0aGlzLnN0YXJ0TGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Mb2dvdXQoKSB7XG4gICAgLy8gUmVzZXQgY291bnRlclxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KDApO1xuICAgIC8vIFN0b3AgbGlzdGVuaW5nXG4gICAgdGhpcy5zdG9wTGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKSB7XG4gICAgdGhpcy5zdG9wTGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fbGlzdGVuU3Vic2NyaXB0aW9uID0gdGhpcy5saXN0ZW5Db3VudENoYW5nZXModW5kZWZpbmVkKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9wTGlzdGVuQ291bnRDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2xpc3RlblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9saXN0ZW5TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJvY2Vzc1VzZXJFdmVudChzb3VyY2U6IGFueSk6IFByb21pc2U8RT4ge1xuXG4gICAgLy8gQ29udmVydCBqc29uIHNvdXJjZSB0byBJVXNlckV2ZW50XG4gICAgbGV0IHRhcmdldCA9IHRoaXMuZnJvbU9iamVjdChzb3VyY2UpO1xuXG4gICAgLy8gR2V0IGxpc3RlbmVyc1xuICAgIGNvbnN0IGxpc3RlbmVycyA9ICh0aGlzLmxpc3RlbmVycyB8fCBbXSlcbiAgICAgIC5maWx0ZXIobGlzdGVuZXIgPT4gISFsaXN0ZW5lci5vblJlY2VpdmVkKVxuICAgICAgLmZpbHRlcihsaXN0ZW5lciA9PiBsaXN0ZW5lci5hY2NlcHQodGFyZ2V0KSk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbGlzdGVuZXIub25SZWNlaXZlZCh0YXJnZXQpO1xuICAgICAgICB0YXJnZXQgPSAocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkgPyBhd2FpdCByZXMgOiByZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUV2ZW50IGhhcyBiZWVuIHJlamVjdGVkIGJ5IGEgbGlzdGVuZXJgLCBzb3VyY2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlZmF1bHRNYXJrQXNSZWFkKHVzZXJFdmVudHM6IEVbXSkge1xuICAgIGlmICghdXNlckV2ZW50cykgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1JbnZhbGlkIGV2ZW50IHRvIHNhdmVgKTtcbiAgICBpZiAoIXVzZXJFdmVudHMubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyBzZXQgcmVhZCBkYXRlXG4gICAgdXNlckV2ZW50cy5mb3JFYWNoKHVzZXJFdmVudCA9PiB1c2VyRXZlbnQucmVhZERhdGUgPSBEYXRlVXRpbHMubW9tZW50KCkpO1xuXG4gICAgLy8gc3BsaXQgbG9jYWwvcmVtb3RlIGVudGl0aWVzXG4gICAgY29uc3QgbG9jYWxFbnRpdGllcyA9IHVzZXJFdmVudHMuZmlsdGVyKEVudGl0eVV0aWxzLmlzTG9jYWwpO1xuICAgIGNvbnN0IHJlbW90ZUVudGl0aWVzID0gdXNlckV2ZW50cy5maWx0ZXIoRW50aXR5VXRpbHMuaXNSZW1vdGUpO1xuXG4gICAgLy8gc2F2ZSBsb2NhbCBlbnRpdGllc1xuICAgIGlmIChsb2NhbEVudGl0aWVzLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1TYXZlIGxvY2FsIHVzZXIgZXZlbnRgKTtcbiAgICAgIC8vIFRPRE8gISEhISEhISEhISEhIVxuICAgIH1cbiAgICAvLyBtYXJrIHJlbW90ZSBlbnRpdGllcyBhcyByZWFkXG4gICAgaWYgKHJlbW90ZUVudGl0aWVzLmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucz8ubWFya0FzUmVhZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fU11dGF0aW9uIHF1ZXJ5ICdtYXJrQXNSZWFkJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQ29sbGVjdCBpZHNcbiAgICAgIGNvbnN0IGlkcyA9IHJlbW90ZUVudGl0aWVzLm1hcCh2YWx1ZSA9PiB2YWx1ZS5pZCk7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1NYXJrIHVzZXIgZXZlbnRzIGFzIHJlYWQuLi5gLCBpZHMpO1xuXG4gICAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLm1hcmtBc1JlYWQsXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkc1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNBVkVfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5TQVZFX1VTRVJfRVZFTlRfRVJST1InIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Vc2VyIGV2ZW50cyBtYXJrZWQgYXMgcmVhZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBpZHMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBkZWZhdWx0RmlsdGVyKCk6IEYge1xuICAgIC8vIEJ5IGRlZmF1bHRcbiAgICByZXR1cm4gPEY+e1xuICAgICAgcmVjaXBpZW50czogW3RoaXMuZGVmYXVsdFJlY2lwaWVudCgpXVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVmYXVsdFJlY2lwaWVudCgpOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHk6IEUpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnJlYWRFdmVudHMoZXZlbnRzOiBFW10pOiBudW1iZXIge1xuICAgIC8vIGRlZmF1bHQgY2FsY3VsYXRpb24gb24gdW5yZWFkIGV2ZW50cyBmcm9tIGEgbGlzdFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZXZlbnRzKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYXN0UmVhZERhdGUgPSBldmVudHNcbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4gaXNOb3ROaWwoZXZlbnQucmVhZERhdGUpKVxuICAgICAgLnJlZHVjZSgobGFzdERhdGUsIGV2ZW50KSA9PiBEYXRlVXRpbHMubWF4KGxhc3REYXRlLCBldmVudC5yZWFkRGF0ZSksIHVuZGVmaW5lZCBhcyBNb21lbnQpO1xuICAgIHJldHVybiBldmVudHNcbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuY3JlYXRpb25EYXRlLmlzU2FtZU9yQWZ0ZXIobGFzdFJlYWREYXRlKSkubGVuZ3RoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlOiBFLCB0YXJnZXQ6IEUpIHtcbiAgICBFbnRpdHlVdGlscy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZSwgdGFyZ2V0KTtcbiAgfVxuXG59XG4iXX0=
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC91c2VyLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHcEQsT0FBTyxFQUFDLGVBQWUsRUFBUyxLQUFLLEVBQWMsRUFBRSxFQUFXLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJakcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLGdEQUFnRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUkvQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsa0JBQWtCLENBQUMsQ0FBQztBQTBFMUcsTUFBTSxPQUFnQix3QkFVcEIsU0FBUSxrQkFBNEI7SUFnQnBDLFlBQ1ksT0FBdUIsRUFDdkIsY0FBOEIsRUFDOUIsT0FBdUIsRUFDdkIsU0FBMkIsRUFDM0IsT0FBeUM7UUFFbkQsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5kLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixZQUFPLEdBQVAsT0FBTyxD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QyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFtQixDQUFDLENBQUM7UUFDN0YsT0FBTyxNQUFNO2FBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQztJQUVTLG1CQUFtQixDQUFDLE1BQVMsRUFBRSxNQUFTO1FBQ2hELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7c0hBdmtCbUIsd0JBQXdCOzBHQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hQb2xpY3kgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvY2lhbEVycm9yQ29kZXMgfSBmcm9tICcuLi9zb2NpYWwuZXJyb3JzJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBlbXB0eSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElVc2VyRXZlbnQsIElVc2VyRXZlbnRGaWx0ZXIgfSBmcm9tICcuL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBJRW50aXRpZXNTZXJ2aWNlLCBMb2FkUmVzdWx0LCBQYWdlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCB0b051bWJlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlR3JhcGhxbFNlcnZpY2UsIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVudGl0eVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RhdGVzJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBJU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBBUFBfVVNFUl9FVkVOVF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElVc2VyRXZlbnRTZXJ2aWNlPGFueSwgYW55Pj4oJ1VzZXJFdmVudFNlcnZpY2UnKTtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFVzZXJFdmVudExvYWRPcHRpb25zIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMge1xuICB3aXRoQ29udGVudD86IGJvb2xlYW47IC8vIERlZmF1bHQgdG8gZmFsc2Vcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudFF1ZXJpZXMge1xuICBsb2FkQWxsOiBhbnk7XG4gIGxvYWRBbGxXaXRoQ29udGVudDogYW55O1xuICBjb3VudD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlckV2ZW50TXV0YXRpb25zIHtcbiAgc2F2ZTogYW55O1xuICBtYXJrQXNSZWFkPzogYW55O1xuICBkZWxldGVCeUlkczogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zIHtcbiAgbGlzdGVuQWxsQ2hhbmdlczogYW55O1xuICBsaXN0ZW5Db3VudENoYW5nZXM/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBJVXNlckV2ZW50PEUsIElEPiwgSUQgPSBudW1iZXI+IHtcbiAgYWNjZXB0OiAoRSkgPT4gYm9vbGVhbjtcbiAgb25SZWNlaXZlZD86IChFKSA9PiBQcm9taXNlPEU+IHwgRSB8IHVuZGVmaW5lZDtcbiAgb25SZWFkPzogKEUpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudFNlcnZpY2VPcHRpb25zPFxuICBRIGV4dGVuZHMgSVVzZXJFdmVudFF1ZXJpZXMgPSBJVXNlckV2ZW50UXVlcmllcyxcbiAgTSBleHRlbmRzIElVc2VyRXZlbnRNdXRhdGlvbnMgPSBJVXNlckV2ZW50TXV0YXRpb25zLFxuICBTIGV4dGVuZHMgSVVzZXJFdmVudFN1YnNjcmlwdGlvbnMgPSBJVXNlckV2ZW50U3Vic2NyaXB0aW9uc1xuICA+IGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlT3B0aW9ucyB7XG4gIHF1ZXJpZXM6IFE7XG4gIG11dGF0aW9ucz86IFBhcnRpYWw8TT47XG4gIHN1YnNjcmlwdGlvbnM/OiBQYXJ0aWFsPFM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyRXZlbnRTZXJ2aWNlPFxuICBFIGV4dGVuZHMgSVVzZXJFdmVudDxFLCBJRD4sXG4gIEYgZXh0ZW5kcyBJVXNlckV2ZW50RmlsdGVyPEUsIElEPixcbiAgSUQgPSBudW1iZXIsXG4gIFdPIGV4dGVuZHMgVXNlckV2ZW50V2F0Y2hPcHRpb25zID0gVXNlckV2ZW50V2F0Y2hPcHRpb25zLFxuICBMTyBleHRlbmRzIFVzZXJFdmVudExvYWRPcHRpb25zID0gVXNlckV2ZW50TG9hZE9wdGlvbnNcbiAgPlxuICBleHRlbmRzIElFbnRpdGllc1NlcnZpY2U8RSwgRiwgV08+LCBJU3RhcnRhYmxlU2VydmljZSB7XG5cbiAgY291bnRTdWJqZWN0OiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgYWRkKGVudGl0eTogRSk6IFByb21pc2U8RT47XG5cbiAgbG9hZChpZDogSUQsIG9wdHM/OiBMTyk6IFByb21pc2U8RT47XG5cbiAgY291bnQoZmlsdGVyOiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogeyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5OyB9KTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3k7IH0pOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgbGlzdGVuQWxsQ2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3k7IH0pOiBPYnNlcnZhYmxlPEVbXT47XG5cbiAgc2F2ZShlbnRpdHk6IEUsIG9wdGlvbnM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPEU+O1xuXG4gIGRlbGV0ZShlbnRpdHk6IEUpOiBQcm9taXNlPGFueT47XG5cbiAgbWFya0FsbEFzUmVhZChlbnRpdGllczogRVtdKTtcblxuICByZWdpc3Rlckxpc3RlbmVyKGxpc3RlbmVyOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+KTtcblxuICByZXNldENvdW50KCk7XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VXNlckV2ZW50U2VydmljZTxcbiAgRSBleHRlbmRzIElVc2VyRXZlbnQ8RSwgSUQsIGFueT4sXG4gIEYgZXh0ZW5kcyBJVXNlckV2ZW50RmlsdGVyPEUsIElELCBhbnk+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgPSBVc2VyRXZlbnRXYXRjaE9wdGlvbnMsXG4gIExPIGV4dGVuZHMgVXNlckV2ZW50TG9hZE9wdGlvbnMgPSBVc2VyRXZlbnRMb2FkT3B0aW9ucyxcbiAgUSBleHRlbmRzIElVc2VyRXZlbnRRdWVyaWVzID0gSVVzZXJFdmVudFF1ZXJpZXMsXG4gIE0gZXh0ZW5kcyBJVXNlckV2ZW50TXV0YXRpb25zID0gSVVzZXJFdmVudE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIElVc2VyRXZlbnRTdWJzY3JpcHRpb25zID0gSVVzZXJFdmVudFN1YnNjcmlwdGlvbnNcbiAgPlxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxFLCBGLCBJRD5cbiAgaW1wbGVtZW50cyBJVXNlckV2ZW50U2VydmljZTxFLCBGLCBJRCwgV08sIExPPiwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcmllczogUTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG11dGF0aW9uczogUGFydGlhbDxNPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnM6IFBhcnRpYWw8Uz47XG4gIHByb3RlY3RlZCByZWFkb25seSBfY291bnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgcmVzZXRDb3VudERhdGU6IE1vbWVudDtcbiAgcHJvdGVjdGVkIGxpc3RlbmVyczogSVVzZXJFdmVudExpc3RlbmVyPEUsIElEPltdID0gW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX2xpc3RlblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGdldCBjb3VudFN1YmplY3QoKTogU3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY291bnRTdWJqZWN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvcHRpb25zOiBVc2VyRXZlbnRTZXJ2aWNlT3B0aW9uczxRLCBNLCBTPlxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBvcHRpb25zKTtcbiAgICB0aGlzLnF1ZXJpZXMgPSBvcHRpb25zLnF1ZXJpZXM7XG4gICAgdGhpcy5tdXRhdGlvbnMgPSBvcHRpb25zLm11dGF0aW9ucyB8fCA8UGFydGlhbDxNPj57fTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBvcHRpb25zLnN1YnNjcmlwdGlvbnMgfHwgPFBhcnRpYWw8Uz4+e307XG4gICAgdGhpcy5fbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LXNlcnZpY2VdICc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgLy8gVXBkYXRlIGNvbXBvbmVudCB3aGVuIHJlZnJlc2ggaXMgbmVlZCAoPWxvZ2luIGV2ZW50cylcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIG1lcmdlKFxuICAgICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2Uub25Mb2dvdXQsXG4gICAgICAgIHRpbWVyKDEwMDApIC8vIFN0YXJ0cyB3aXRoIC0gIGZpcnN0IGF0dGVtcHQgaWYgYWNjb3VudCBpcyByZWFkeVxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBXYWl0IGFjY291bnQgc2VydmljZSByZWFkeSAoY2FuIGJlIHJlc3RhcnRlZClcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCkpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUobG9naW4gPT4ge1xuICAgICAgICAgIGlmIChsb2dpbikge1xuICAgICAgICAgICAgdGhpcy5vbkxvZ2luKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25Mb2dvdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGFzRmlsdGVyKGZpbHRlcjogUGFydGlhbDxGPik6IEY7XG5cbiAgYWJzdHJhY3QgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IEU7XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyPzogUGFydGlhbDxGPiwgb3B0aW9ucz86IFdPKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEU+PiB7XG4gICAgcmV0dXJuIHRoaXMud2F0Y2hQYWdlKDxQYWdlPnsgb2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24gfSwgZmlsdGVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHdhdGNoUGFnZShwYWdlOiBQYWdlLFxuICAgICAgICAgICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICAgICAgICAgIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxFPj4ge1xuXG4gICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Mb2FkaW5nIHVzZXIgZXZlbnRzLi4uYCwgZmlsdGVyKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIEZvcmNlIHJlY2lwaWVudCB0byBjdXJyZW50IGlzc3VlciwgaWYgbm90IGFkbWluIGFuZCBub3Qgc3BlY2lmaWVkXG4gICAgaWYgKGlzRW1wdHlBcnJheShmaWx0ZXI/LnJlY2lwaWVudHMpIHx8ICF0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKSkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5kZWZhdWx0UmVjaXBpZW50KCk7XG4gICAgICBpZiAoIWZpbHRlcj8ucmVjaXBpZW50cz8uaW5jbHVkZXMocmVjaXBpZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1t1c2VyLWV2ZW50cy1zZXJ2aWNlXSBGb3JjZSB1c2VyIGV2ZW50IGZpbHRlci5yZWNpcGllbnQ9JyArIHJlY2lwaWVudCk7XG4gICAgICAgIGZpbHRlci5yZWNpcGllbnRzID0gW3JlY2lwaWVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLm11dGFibGVXYXRjaFF1ZXJ5PExvYWRSZXN1bHQ8RT4sIHsgZmlsdGVyOiBhbnksIHBhZ2U6IFBhZ2UgfT4oe1xuICAgICAgcXVlcnlOYW1lOiB3aXRoQ29udGVudCA/ICdMb2FkQWxsV2l0aENvbnRlbnQnIDogJ0xvYWRBbGwnLFxuICAgICAgcXVlcnk6IHdpdGhDb250ZW50ID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCA6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICBzb3J0Qnk6ICdjcmVhdGlvbkRhdGUnLFxuICAgICAgICAgIC4uLnBhZ2UsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHNvcnREaXJlY3Rpb246IChwYWdlLnNvcnREaXJlY3Rpb24gfHwgJ2Rlc2MnKS50b1VwcGVyQ2FzZSgpXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpXG4gICAgICB9LFxuICAgICAgYXJyYXlGaWVsZE5hbWU6ICdkYXRhJyxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuTE9BRF9VU0VSX0VWRU5UU19FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5IHx8ICdjYWNoZS1maXJzdCcsXG4gICAgICBpbnNlcnRGaWx0ZXJGbjogZmlsdGVyICYmIGZpbHRlci5hc0ZpbHRlckZuKClcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCh2YWx1ZSA9PiB0aGlzLnByb2Nlc3NVc2VyRXZlbnQodmFsdWUpKSk7XG5cbiAgICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0ke2RhdGEubGVuZ3RofSB1c2VyIGV2ZW50cyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE11c3QgcmUtb3JkZXIgYmVjYXVzZSBvZiBsaXN0ZW5BbGxDaGFuZ2VzIHJlc3VsdCB3aWxsIGFkZCBuZXcgZXZlbnQgYXQgdGhlIGVuZFxuICAgICAgICAgIGRhdGEgPSBFbnRpdHlVdGlscy5zb3J0KGRhdGEsIHBhZ2Uuc29ydEJ5LCBwYWdlLnNvcnREaXJlY3Rpb24pO1xuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gPExvYWRSZXN1bHQ8RT4+e1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHRvdGFsOiB0b051bWJlcihyZXM/LnRvdGFsLCBkYXRhLmxlbmd0aClcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gQWRkIGZldGNoIG1vcmUgY2FwYWJpbGl0eSwgaWYgdG90YWwgd2FzIGZldGNoZWRcbiAgICAgICAgICBpZiAoaXNOb3ROaWwocmVzLnRvdGFsKSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dE9mZnNldCA9IChwYWdlLm9mZnNldCB8fCAwKSArIGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXN1bHQudG90YWwpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9IChfKSA9PiB0aGlzLmxvYWRQYWdlKHsuLi5wYWdlLCBvZmZzZXQ6IG5leHRPZmZzZXR9LCBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBMT1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZFBhZ2UocGFnZTogUGFnZSxcbiAgICAgICAgICAgICAgICAgZmlsdGVyPzogUGFydGlhbDxGPixcbiAgICAgICAgICAgICAgICAgb3B0cz86IExPKTogUHJvbWlzZTxMb2FkUmVzdWx0PEU+PiB7XG5cbiAgICBjb25zdCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcblxuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgdXNlciBldmVudHMuLi5gLCBmaWx0ZXIpO1xuXG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgLy8gRm9yY2UgcmVjaXBpZW50IHRvIGN1cnJlbnQgaXNzdWVyLCBpZiBub3QgYWRtaW4gYW5kIG5vdCBzcGVjaWZpZWRcbiAgICBpZiAoaXNFbXB0eUFycmF5KGZpbHRlcj8ucmVjaXBpZW50cykgfHwgIXRoaXMuYWNjb3VudFNlcnZpY2UuaXNBZG1pbigpKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmRlZmF1bHRSZWNpcGllbnQoKTtcbiAgICAgIGlmICghZmlsdGVyPy5yZWNpcGllbnRzPy5pbmNsdWRlcyhyZWNpcGllbnQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignW3VzZXItZXZlbnRzLXNlcnZpY2VdIEZvcmNlIHVzZXIgZXZlbnQgZmlsdGVyLnJlY2lwaWVudD0nICsgcmVjaXBpZW50KTtcbiAgICAgICAgZmlsdGVyLnJlY2lwaWVudHMgPSBbcmVjaXBpZW50XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3aXRoQ29udGVudCA9IG9wdHM/LndpdGhDb250ZW50ID09PSB0cnVlO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8RT4+KHtcbiAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgc29ydEJ5OiAnY3JlYXRpb25EYXRlJyxcbiAgICAgICAgICAuLi5wYWdlLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBzb3J0RGlyZWN0aW9uOiAocGFnZS5zb3J0RGlyZWN0aW9uIHx8ICdkZXNjJykudG9VcHBlckNhc2UoKVxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuTE9BRF9VU0VSX0VWRU5UU19FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5MT0FEX1VTRVJfRVZFTlRTX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHM/LmZldGNoUG9saWN5XG4gICAgfSlcbiAgICBsZXQgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKChyZXM/LmRhdGEgfHwgW10pLm1hcCh2YWx1ZSA9PiB0aGlzLnByb2Nlc3NVc2VyRXZlbnQodmFsdWUpKSk7XG5cbiAgICBpZiAobm93KSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH0ke2RhdGEubGVuZ3RofSB1c2VyIGV2ZW50cyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQWxsQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBwYWdlLnNvcnRCeSwgcGFnZS5zb3J0RGlyZWN0aW9uKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IDxMb2FkUmVzdWx0PEU+PntcbiAgICAgIGRhdGEsXG4gICAgICB0b3RhbDogdG9OdW1iZXIocmVzPy50b3RhbCwgZGF0YS5sZW5ndGgpXG4gICAgfTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gICAgaWYgKGlzTm90TmlsKHJlcy50b3RhbCkpIHtcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAocGFnZS5vZmZzZXQgfHwgMCkgKyBkYXRhLmxlbmd0aDtcbiAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzdWx0LnRvdGFsKSB7XG4gICAgICAgIHJlc3VsdC5mZXRjaE1vcmUgPSAoXykgPT4gdGhpcy5sb2FkUGFnZSh7Li4ucGFnZSwgb2Zmc2V0OiBuZXh0T2Zmc2V0fSwgZmlsdGVyLCBvcHRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgbG9hZChpZDogSUQsIG9wdHM/OiBMTyk6IFByb21pc2U8RT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmYXVsdEZpbHRlcigpO1xuICAgIGZpbHRlci5pbmNsdWRlZElkcyA9IFtpZF07XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmxvYWRQYWdlKHtvZmZzZXQ6IDAsIHNpemU6IDF9LCBmaWx0ZXIsIG9wdHMpO1xuICAgIHJldHVybiBkYXRhICYmIGRhdGFbMF07XG4gIH1cblxuICBhc3luYyBhZGQoZW50aXR5OiBFKTogUHJvbWlzZTxFPiB7XG5cblxuICAgIGVudGl0eSA9IGF3YWl0IHRoaXMucHJvY2Vzc1VzZXJFdmVudChlbnRpdHkpO1xuXG4gICAgaWYgKCFlbnRpdHkpIHJldHVybjsgLy8gUmVqZWN0ZWRcblxuICAgIGNvbnN0IHdpdGhDb250ZW50ID0gISFlbnRpdHkuY29udGVudDtcblxuICAgIC8vIEFkZCB1c2VyIGV2ZW50IGxvY2FsbHlcbiAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhcbiAgICAgIHRoaXMuZ3JhcGhxbC5jYWNoZSxcbiAgICAgIHtcbiAgICAgICAgcXVlcnk6IHdpdGhDb250ZW50ID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCA6IHRoaXMucXVlcmllcy5sb2FkQWxsLFxuICAgICAgICBkYXRhOiBlbnRpdHlcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gVXBkYXRlIGNvdW50XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQodGhpcy5fY291bnRTdWJqZWN0LnZhbHVlICsgMSk7XG5cbiAgICAvLyBBZGQgaWRcbiAgICBjb25zb2xlLmxvZygnVE9ETzogYWRkIGFuIElEIHRvIHVzZXIgZXZlbnQgPycpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIGNvdW50KGZpbHRlcjogUGFydGlhbDxGPiwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgfSk6IFByb21pc2U8bnVtYmVyPiB7XG5cbiAgICBpZiAoIXRoaXMucXVlcmllcz8uY291bnQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9UXVlcnkgJ2NvdW50JyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghZmlsdGVyKSBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRGaWx0ZXIoKTtcbiAgICAvLyBBcHBseSBsYXN0IHJlc2V0IGRhdGUgYXMgc3RhcnQgZGF0ZVxuICAgIGZpbHRlci5zdGFydERhdGUgPSB0aGlzLnJlc2V0Q291bnREYXRlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Q291bnRpbmcgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXI7IH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnF1ZXJpZXMuY291bnQsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuQ09VTlRfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5DT1VOVF9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy50b3RhbDtcbiAgfVxuXG4gIGxpc3RlbkNvdW50Q2hhbmdlcyhmaWx0ZXI6IFBhcnRpYWw8Rj4sIG9wdGlvbnM/OiBXTyAmIHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucz8ubGlzdGVuQ291bnRDaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fVN1YnNjcmlwdGlvbiBxdWVyeSAnbGlzdGVuQ291bnRDaGFuZ2VzJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgLy8gQXBwbHkgbGFzdCByZXNldCBkYXRlIGFzIHN0YXJ0IGRhdGVcbiAgICBmaWx0ZXIuc3RhcnREYXRlID0gdGhpcy5yZXNldENvdW50RGF0ZTtcbiAgICBmaWx0ZXIuZXhjbHVkZVJlYWQgPSB0cnVlO1xuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY291bnQgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHsgdG90YWw6IG51bWJlciB9LCB7IGZpbHRlcjogYW55LCBpbnRlcnZhbDogbnVtYmVyIH0+KHtcbiAgICAgIHF1ZXJ5OiB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQ291bnRDaGFuZ2VzLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnM/LmZldGNoUG9saWN5LFxuICAgICAgdmFyaWFibGVzOiB7IGZpbHRlcjogZmlsdGVyLmFzUG9kT2JqZWN0KCksIGludGVydmFsOiB0b051bWJlcihvcHRpb25zPy5pbnRlcnZhbCwgMTApIH0sXG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5TVUJTQ1JJQkVfVVNFUl9FVkVOVFNfRVJST1InXG4gICAgICB9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyB0b3RhbCB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRvdGFsICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHMgY291bnQ6YCwgdG90YWwpO1xuICAgICAgICAgIC8vIHVwZGF0ZSBjb3VudFxuICAgICAgICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KHRvdGFsKTtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuXG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogUGFydGlhbDxGPiwgb3B0cz86IFdPICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeTsgdG9FbnRpdHk/OiBib29sZWFuIH0pOiBPYnNlcnZhYmxlPEVbXT4ge1xuXG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnM/Lmxpc3RlbkFsbENoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9U3Vic2NyaXB0aW9uIHF1ZXJ5ICdsaXN0ZW5BbGxDaGFuZ2VzJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbHRlcikgZmlsdGVyID0gdGhpcy5kZWZhdWx0RmlsdGVyKCk7XG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSBvcHRzPy53aXRoQ29udGVudCA9PT0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9W1dTXSBMaXN0ZW5pbmcgY2hhbmdlcyBmb3IgdXNlciBldmVudHMgd2l0aCBmaWx0ZXI6YCwgZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwuc3Vic2NyaWJlPHsgZGF0YTogYW55W10gfSwgeyBmaWx0ZXI6IGFueSwgaW50ZXJ2YWw6IG51bWJlciB9Pih7XG4gICAgICBxdWVyeTogdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkFsbENoYW5nZXMsXG4gICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgZmlsdGVyOiBmaWx0ZXIuYXNQb2RPYmplY3QoKSwgaW50ZXJ2YWw6IHRvTnVtYmVyKG9wdHM/LmludGVydmFsLCAxMCkgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFNvY2lhbEVycm9yQ29kZXMuU1VCU0NSSUJFX1VTRVJfRVZFTlRTX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUidcbiAgICAgIH1cbiAgICB9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChkYXRhICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBuZXcgdXNlciBldmVudHM6YCwgZGF0YSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIGNhY2hlICh3aWxsIHVwZGF0ZSB3YXRjaEFsbCBxdWVyaWVzKVxuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgdGhpcy5pbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJpZXMoXG4gICAgICAgICAgICB0aGlzLmdyYXBocWwuY2FjaGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHF1ZXJ5OiB3aXRoQ29udGVudCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCxcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIGVudGl0aWVzXG4gICAgICAgIGlmICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbCgoZGF0YSB8fCBbXSkubWFwKHZhbHVlID0+IHRoaXMucHJvY2Vzc1VzZXJFdmVudCh2YWx1ZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIH1cblxuICBhc3luYyBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIWVudGl0eSkgcmV0dXJuOyAvLyBza2lwXG4gICAgYXdhaXQgdGhpcy5kZWxldGVBbGwoW2VudGl0eV0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQWxsKGVudGl0aWVzOiBFW10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGlkcyA9IGVudGl0aWVzICYmIGVudGl0aWVzXG4gICAgICAubWFwKHQgPT4gdC5pZCk7XG4gICAgaWYgKGlzRW1wdHlBcnJheShpZHMpKSByZXR1cm47IC8vIHN0b3AsIGlmIG5vdGhpbmcgZWxzZSB0byBkb1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fURlbGV0aW5nIGV2ZW50cy4uLiBpZHM6YCwgaWRzKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuZGVsZXRlQnlJZHMsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWRzXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiAocHJveHkpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVzXG4gICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMocHJveHksIHtcbiAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgICAgaWRzXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKHByb3h5LCB7XG4gICAgICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aENvbnRlbnQsXG4gICAgICAgICAgaWRzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RXZlbnRzIGRlbGV0ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlKGVudGl0eTogRSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8RT4ge1xuICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gaW50byBqc29uXG4gICAgY29uc3Qgd2l0aENvbnRlbnQgPSAhIWVudGl0eS5jb250ZW50O1xuICAgIGNvbnN0IGpzb24gPSBlbnRpdHkuYXNPYmplY3QoKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1TYXZpbmcgdXNlciBldmVudC4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHsgY29kZTogU29jaWFsRXJyb3JDb2Rlcy5TQVZFX1VTRVJfRVZFTlRfRVJST1IsIG1lc3NhZ2U6ICdTT0NJQUwuRVJST1IuU0FWRV9VU0VSX0VWRU5UX0VSUk9SJyB9LFxuICAgICAgdXBkYXRlOiAocHJveHksIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIC8vIFVwZGF0ZSBlbnRpdHlcbiAgICAgICAgY29uc3Qgc2F2ZWRFbnRpdHkgPSBkYXRhICYmIGRhdGEuZGF0YTtcbiAgICAgICAgaWYgKHNhdmVkRW50aXR5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Vc2VyIGV2ZW50IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0eSk7XG4gICAgICAgICAgdGhpcy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNhdmVkRW50aXR5LCBlbnRpdHkpO1xuXG4gICAgICAgICAgLy8gQWRkIHRvIGNhY2hlXG4gICAgICAgICAgaWYgKHdpdGhDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoQ29udGVudCxcbiAgICAgICAgICAgICAgZGF0YTogc2F2ZWRFbnRpdHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICBxdWVyeTogdGhpcy5xdWVyaWVzLmxvYWRBbGwsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAuLi5zYXZlZEVudGl0eSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IEVbXSwgb3B0cz86IGFueSk6IFByb21pc2U8RVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGVudGl0aWVzXG4gICAgICAubWFwKGVudGl0eSA9PiB0aGlzLnNhdmUoZW50aXR5LCBvcHRzKSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbWFya0FsbEFzUmVhZChlbnRpdGllczogRVtdKSB7XG5cbiAgICBjb25zdCB1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVyczogRVtdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgKGVudGl0aWVzIHx8IFtdKSkge1xuICAgICAgLy8gR2V0IG9uUmVhZCBsaXN0ZW5lcnNcbiAgICAgIGNvbnN0IG9uUmVhZExpc3RlbmVycyA9ICh0aGlzLmxpc3RlbmVycyB8fCBbXSkuZmlsdGVyKGxpc3RlbmVyID0+ICEhbGlzdGVuZXIub25SZWFkKS5maWx0ZXIobGlzdGVuZXIgPT4gbGlzdGVuZXIuYWNjZXB0KGVudGl0eSkpO1xuICAgICAgaWYgKG9uUmVhZExpc3RlbmVycy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBvblJlYWRMaXN0ZW5lcnMpIHtcbiAgICAgICAgICBhd2FpdCBsaXN0ZW5lci5vblJlYWQoZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWRkIHRvIHRoaXMgbGlzdCBmb3IgZGVmYXVsdCBvcGVyYXRpb25cbiAgICAgICAgdXNlckV2ZW50V2l0aG91dFJlYWRMaXN0ZW5lcnMucHVzaChlbnRpdHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVzZSBkZWZhdWx0XG4gICAgYXdhaXQgdGhpcy5kZWZhdWx0TWFya0FzUmVhZCh1c2VyRXZlbnRXaXRob3V0UmVhZExpc3RlbmVycyk7XG4gIH1cblxuICByZWdpc3Rlckxpc3RlbmVyKGxpc3RlbmVyOiBJVXNlckV2ZW50TGlzdGVuZXI8RSwgSUQ+KSB7XG4gICAgaWYgKCF0aGlzLmxpc3RlbmVycykgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlc2V0Q291bnQoKSB7XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnJlc2V0Q291bnREYXRlID0gRGF0ZVV0aWxzLm1vbWVudCgpO1xuICAgIC8vIHJlc3RhcnQgbGlzdGVuaW5nIGNvdW50IGNoYW5nZXNcbiAgICB0aGlzLnN0YXJ0TGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvZ2luKCkge1xuICAgIC8vIEdldCBmaXJzdCBjb3VudFxuICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgdGhpcy5jb3VudCh1bmRlZmluZWQpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9UmVjZWl2aW5nIHVzZXIgZXZlbnRzIGNvdW50YCwgY291bnQpO1xuICAgIC8vIFVwZGF0ZSBjb3VudFxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KGNvdW50KTtcblxuICAgIC8vIFRoZW4gbGlzdGVuIGNoYW5nZXNcbiAgICB0aGlzLnN0YXJ0TGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Mb2dvdXQoKSB7XG4gICAgLy8gUmVzZXQgY291bnRlclxuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KDApO1xuICAgIC8vIFN0b3AgbGlzdGVuaW5nXG4gICAgdGhpcy5zdG9wTGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhcnRMaXN0ZW5Db3VudENoYW5nZXMoKSB7XG4gICAgdGhpcy5zdG9wTGlzdGVuQ291bnRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fbGlzdGVuU3Vic2NyaXB0aW9uID0gdGhpcy5saXN0ZW5Db3VudENoYW5nZXModW5kZWZpbmVkKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9wTGlzdGVuQ291bnRDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2xpc3RlblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9saXN0ZW5TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJvY2Vzc1VzZXJFdmVudChzb3VyY2U6IGFueSk6IFByb21pc2U8RT4ge1xuXG4gICAgLy8gQ29udmVydCBqc29uIHNvdXJjZSB0byBJVXNlckV2ZW50XG4gICAgbGV0IHRhcmdldCA9IHRoaXMuZnJvbU9iamVjdChzb3VyY2UpO1xuXG4gICAgLy8gR2V0IGxpc3RlbmVyc1xuICAgIGNvbnN0IGxpc3RlbmVycyA9ICh0aGlzLmxpc3RlbmVycyB8fCBbXSlcbiAgICAgIC5maWx0ZXIobGlzdGVuZXIgPT4gISFsaXN0ZW5lci5vblJlY2VpdmVkKVxuICAgICAgLmZpbHRlcihsaXN0ZW5lciA9PiBsaXN0ZW5lci5hY2NlcHQodGFyZ2V0KSk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbGlzdGVuZXIub25SZWNlaXZlZCh0YXJnZXQpO1xuICAgICAgICB0YXJnZXQgPSAocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkgPyBhd2FpdCByZXMgOiByZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUV2ZW50IGhhcyBiZWVuIHJlamVjdGVkIGJ5IGEgbGlzdGVuZXJgLCBzb3VyY2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlZmF1bHRNYXJrQXNSZWFkKHVzZXJFdmVudHM6IEVbXSkge1xuICAgIGlmICghdXNlckV2ZW50cykgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1JbnZhbGlkIGV2ZW50IHRvIHNhdmVgKTtcbiAgICBpZiAoIXVzZXJFdmVudHMubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyBzZXQgcmVhZCBkYXRlXG4gICAgdXNlckV2ZW50cy5mb3JFYWNoKHVzZXJFdmVudCA9PiB1c2VyRXZlbnQucmVhZERhdGUgPSBEYXRlVXRpbHMubW9tZW50KCkpO1xuXG4gICAgLy8gc3BsaXQgbG9jYWwvcmVtb3RlIGVudGl0aWVzXG4gICAgY29uc3QgbG9jYWxFbnRpdGllcyA9IHVzZXJFdmVudHMuZmlsdGVyKEVudGl0eVV0aWxzLmlzTG9jYWwpO1xuICAgIGNvbnN0IHJlbW90ZUVudGl0aWVzID0gdXNlckV2ZW50cy5maWx0ZXIoRW50aXR5VXRpbHMuaXNSZW1vdGUpO1xuXG4gICAgLy8gc2F2ZSBsb2NhbCBlbnRpdGllc1xuICAgIGlmIChsb2NhbEVudGl0aWVzLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1TYXZlIGxvY2FsIHVzZXIgZXZlbnRgKTtcbiAgICAgIC8vIFRPRE8gISEhISEhISEhISEhIVxuICAgIH1cbiAgICAvLyBtYXJrIHJlbW90ZSBlbnRpdGllcyBhcyByZWFkXG4gICAgaWYgKHJlbW90ZUVudGl0aWVzLmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucz8ubWFya0FzUmVhZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fU11dGF0aW9uIHF1ZXJ5ICdtYXJrQXNSZWFkJyBub3QgcHJvdmlkZWQsIHNraXAuYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQ29sbGVjdCBpZHNcbiAgICAgIGNvbnN0IGlkcyA9IHJlbW90ZUVudGl0aWVzLm1hcCh2YWx1ZSA9PiB2YWx1ZS5pZCk7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1NYXJrIHVzZXIgZXZlbnRzIGFzIHJlYWQuLi5gLCBpZHMpO1xuXG4gICAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLm1hcmtBc1JlYWQsXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkc1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogeyBjb2RlOiBTb2NpYWxFcnJvckNvZGVzLlNBVkVfVVNFUl9FVkVOVF9FUlJPUiwgbWVzc2FnZTogJ1NPQ0lBTC5FUlJPUi5TQVZFX1VTRVJfRVZFTlRfRVJST1InIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Vc2VyIGV2ZW50cyBtYXJrZWQgYXMgcmVhZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBpZHMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBkZWZhdWx0RmlsdGVyKCk6IEYge1xuICAgIC8vIEJ5IGRlZmF1bHRcbiAgICByZXR1cm4gPEY+e1xuICAgICAgcmVjaXBpZW50czogW3RoaXMuZGVmYXVsdFJlY2lwaWVudCgpXVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGVmYXVsdFJlY2lwaWVudCgpOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHk6IEUpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnJlYWRFdmVudHMoZXZlbnRzOiBFW10pOiBudW1iZXIge1xuICAgIC8vIGRlZmF1bHQgY2FsY3VsYXRpb24gb24gdW5yZWFkIGV2ZW50cyBmcm9tIGEgbGlzdFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZXZlbnRzKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYXN0UmVhZERhdGUgPSBldmVudHNcbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4gaXNOb3ROaWwoZXZlbnQucmVhZERhdGUpKVxuICAgICAgLnJlZHVjZSgobGFzdERhdGUsIGV2ZW50KSA9PiBEYXRlVXRpbHMubWF4KGxhc3REYXRlLCBldmVudC5yZWFkRGF0ZSksIHVuZGVmaW5lZCBhcyBNb21lbnQpO1xuICAgIHJldHVybiBldmVudHNcbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuY3JlYXRpb25EYXRlLmlzU2FtZU9yQWZ0ZXIobGFzdFJlYWREYXRlKSkubGVuZ3RoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlOiBFLCB0YXJnZXQ6IEUpIHtcbiAgICBFbnRpdHlVdGlscy5jb3B5SWRBbmRVcGRhdGVEYXRlKHNvdXJjZSwgdGFyZ2V0KTtcbiAgfVxuXG59XG4iXX0=
|