@tiba-spark/client-shared-lib 25.1.0-1142 → 25.1.0-1144
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/esm2022/libraries/components/notification/alert-notification/alert-notification.service.mjs +8 -5
- package/esm2022/libraries/modules/notifications/notifications.state.mjs +2 -2
- package/fesm2022/tiba-spark-client-shared-lib.mjs +9 -7
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/components/notification/alert-notification/alert-notification.service.d.ts +4 -2
- package/libraries/components/notification/alert-notification/alert-notification.service.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/libraries/components/notification/alert-notification/alert-notification.service.mjs
CHANGED
|
@@ -13,8 +13,9 @@ import * as i1 from "ngx-toastr";
|
|
|
13
13
|
import * as i2 from "../../../services/tenant.service";
|
|
14
14
|
import * as i3 from "@ngx-translate/core";
|
|
15
15
|
import * as i4 from "../../../services/app-settings.service";
|
|
16
|
+
import * as i5 from "../../../modules";
|
|
16
17
|
export class AlertNotificationService extends BaseNotificationService {
|
|
17
|
-
constructor(ngToastrService, appRef, tenantService, translateService, componentFactoryResolver, appSettingsService, injector) {
|
|
18
|
+
constructor(ngToastrService, appRef, tenantService, translateService, componentFactoryResolver, appSettingsService, notificationsService, injector) {
|
|
18
19
|
super(ngToastrService, appRef);
|
|
19
20
|
this.ngToastrService = ngToastrService;
|
|
20
21
|
this.appRef = appRef;
|
|
@@ -22,10 +23,11 @@ export class AlertNotificationService extends BaseNotificationService {
|
|
|
22
23
|
this.translateService = translateService;
|
|
23
24
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
24
25
|
this.appSettingsService = appSettingsService;
|
|
26
|
+
this.notificationsService = notificationsService;
|
|
25
27
|
this.injector = injector;
|
|
26
28
|
this.openAlertToastIds = [];
|
|
27
29
|
}
|
|
28
|
-
displayAlert(alert) {
|
|
30
|
+
displayAlert(alert, guid) {
|
|
29
31
|
const notificationSeverity = this.appSettingsService.alertMapping[PeripheralEquipmentError[alert.eventDescription]];
|
|
30
32
|
const alertTitleMessage = this.translateService.instant(PeripheralEquipmentError[alert.eventDescription]);
|
|
31
33
|
const alertSubTitleMessage = this.translateService.instant(Localization.alerts_message_sub_title, {
|
|
@@ -72,6 +74,7 @@ export class AlertNotificationService extends BaseNotificationService {
|
|
|
72
74
|
}
|
|
73
75
|
});
|
|
74
76
|
alertNotification.onTap.pipe(take(1)).subscribe(() => {
|
|
77
|
+
this.notificationsService.triggerAlertToastEvent(alert, guid);
|
|
75
78
|
this.ngToastrService.remove(alertNotification.toastId);
|
|
76
79
|
});
|
|
77
80
|
return alertNotification;
|
|
@@ -108,10 +111,10 @@ export class AlertNotificationService extends BaseNotificationService {
|
|
|
108
111
|
this.componentRef.destroy();
|
|
109
112
|
}
|
|
110
113
|
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService, deps: [{ token: i1.ToastrService }, { token: i0.ApplicationRef }, { token: i2.TenantService }, { token: i3.TranslateService }, { token: i0.ComponentFactoryResolver }, { token: i4.AppSettingsService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService, deps: [{ token: i1.ToastrService }, { token: i0.ApplicationRef }, { token: i2.TenantService }, { token: i3.TranslateService }, { token: i0.ComponentFactoryResolver }, { token: i4.AppSettingsService }, { token: i5.NotificationsService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
112
115
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService }); }
|
|
113
116
|
}
|
|
114
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService, decorators: [{
|
|
115
118
|
type: Injectable
|
|
116
|
-
}], ctorParameters: function () { return [{ type: i1.ToastrService }, { type: i0.ApplicationRef }, { type: i2.TenantService }, { type: i3.TranslateService }, { type: i0.ComponentFactoryResolver }, { type: i4.AppSettingsService }, { type: i0.Injector }]; } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtbm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2FsZXJ0LW5vdGlmaWNhdGlvbi9hbGVydC1ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUc5SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBWSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBR3hILE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxrQ0FBa0MsRUFBMkIsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2SyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBRzVFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx1QkFBdUI7SUFLbkUsWUFDWSxlQUE4QixFQUM5QixNQUFzQixFQUN4QixhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsd0JBQWtELEVBQ2xELGtCQUFzQyxFQUN0QyxRQUFrQjtRQUMxQixLQUFLLENB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LFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7K0dBbkhVLHdCQUF3QjttSEFBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgQ29tcG9uZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQUxFUlRfTk9USUZJQ0FUSU9OX0NPTlRBSU5FUiwgT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMsIFNZU1RFTV9BTEVSVF9WQUxVRSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9nbG9iYWwtY29uc3RhbnRzJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcbmltcG9ydCB7IEFsZXJ0RHRvLCBOb3RpZmljYXRpb25TZXZlcml0eSwgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVuYW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RlbmFudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNsb3NlQWxsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLWNsb3NlLWFsbC1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkNsYXNzLCBOb3RpZmljYXRpb25Db25maWcgfSBmcm9tICcuLi9ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IEJhc2VOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnROb3RpZmljYXRpb25Cb3JkZXJDbGFzcywgQWxlcnROb3RpZmljYXRpb25DbGFzc2lmaWNhdGlvbk1hcCwgQWxlcnROb3RpZmljYXRpb25Db25maWcsIE5vdGlmaWNhdGlvbkNsYXNzZmljYXRpb25UeXBlIH0gZnJvbSAnLi9hbGVydC1ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IEFsZXJ0Tm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hbGVydC1ub3RpZmljYXRpb24uY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZSBleHRlbmRzIEJhc2VOb3RpZmljYXRpb25TZXJ2aWNlIHtcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE5vdGlmaWNhdGlvbkNsb3NlQWxsQnV0dG9uQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBvcGVuQWxlcnRUb2FzdElkczogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbmdUb2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGFwcFNldHRpbmdzU2VydmljZTogQXBwU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIobmdUb2FzdHJTZXJ2aWNlLCBhcHBSZWYpO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlBbGVydChhbGVydDogQWxlcnREdG8pIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25TZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkgPSB0aGlzLmFwcFNldHRpbmdzU2VydmljZS5hbGVydE1hcHBpbmdbUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yW2FsZXJ0LmV2ZW50RGVzY3JpcHRpb25dXTtcbiAgICBjb25zdCBhbGVydFRpdGxlTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvclthbGVydC5ldmVudERlc2NyaXB0aW9uXSk7XG4gICAgY29uc3QgYWxlcnRTdWJUaXRsZU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWxlcnRzX21lc3NhZ2Vfc3ViX3RpdGxlLCB7XG4gICAgICBkZXZpY2VOYW1lOiBhbGVydC5kZXZpY2VOYW1lLFxuICAgICAgcmVhZGVySUQ6IGFsZXJ0LnJlYWRlcklELFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWxlcnRCb2R5TWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5hbGVydHNfbWVzc2FnZV9ib2R5LCB7XG4gICAgICBwYXJrTmFtZTogYWxlcnQucGFya05hbWUsXG4gICAgICBwYXJrWm9uZTogYWxlcnQucGFya1pvbmVOYW1lID8gJyB8ICcgKyBhbGVydC5wYXJrWm9uZU5hbWUgOiAnJyxcbiAgICB9KTtcblxuICAgIGxldCBkdXJhdGlvbjogbnVtYmVyO1xuICAgIGNvbnN0IGFsZXJ0c1R5cGU6IE5vdGlmaWNhdGlvbkNsYXNzZmljYXRpb25UeXBlID0gQWxlcnROb3RpZmljYXRpb25DbGFzc2lmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9uU2V2ZXJpdHkpO1xuICAgIHN3aXRjaCAoYWxlcnRzVHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25DbGFzc2ZpY2F0aW9uVHlwZS5NYWpvcjpcbiAgICAgICAgZHVyYXRpb24gPSB0aGlzLnRlbmFudFNlcnZpY2UubWFqb3JBbGVydD8uZGlzcGxheUluU2Vjb25kcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkNsYXNzZmljYXRpb25UeXBlLk1pbm9yOlxuICAgICAgICBkdXJhdGlvbiA9IHRoaXMudGVuYW50U2VydmljZS5taW5vckFsZXJ0Py5kaXNwbGF5SW5TZWNvbmRzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xhc3NmaWNhdGlvblR5cGUuTm9uZTpcbiAgICAgICAgZHVyYXRpb24gPSBudWxsXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGFsZXJ0Tm90aWZpY2F0aW9uQ29uZmlnOiBBbGVydE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIHNldmVyaXR5OiBub3RpZmljYXRpb25TZXZlcml0eSxcbiAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgIHsgdmFsdWU6IGAke2FsZXJ0VGl0bGVNZXNzYWdlfWAsIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy50aXRsZSB9LFxuICAgICAgICB7IHZhbHVlOiBgJHthbGVydFN1YlRpdGxlTWVzc2FnZX1gLCBjbGFzczogYWxlcnQucmVhZGVySUQgPT09IFNZU1RFTV9BTEVSVF9WQUxVRSA/IE5vdGlmaWNhdGlvbkNsYXNzLm5vbmUgOiBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSB9LFxuICAgICAgICB7IHZhbHVlOiBgJHthbGVydEJvZHlNZXNzYWdlfWAsIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5IH0sXG4gICAgICBdLFxuICAgICAgY2xhc3M6IEFsZXJ0Tm90aWZpY2F0aW9uQm9yZGVyQ2xhc3NbTm90aWZpY2F0aW9uU2V2ZXJpdHlbbm90aWZpY2F0aW9uU2V2ZXJpdHldXSxcbiAgICAgIG1heE9wZW5lZDogTm90aWZpY2F0aW9uQ29uZmlnLm1heFdpbmRvd0NhcGFjaXR5Tm90aWZpY2F0aW9ucyxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTLFxuICAgIH07XG5cbiAgICBjb25zdCBhbGVydE5vdGlmaWNhdGlvbiA9IHRoaXMuc2hvdyhhbGVydE5vdGlmaWNhdGlvbkNvbmZpZywgQWxlcnROb3RpZmljYXRpb25Db21wb25lbnQpO1xuXG4gICAgdGhpcy5vcGVuQWxlcnRUb2FzdElkcy5wdXNoKGFsZXJ0Tm90aWZpY2F0aW9uLnRvYXN0SWQpO1xuXG4gICAgaWYgKHRoaXMubm90aWZpY2F0aW9uTGVuZ3RoID09PSAyKSB7XG4gICAgICB0aGlzLmFkZENsb3NlQWxsQnV0dG9uKCk7XG4gICAgfVxuXG4gICAgYWxlcnROb3RpZmljYXRpb24ub25IaWRkZW4ucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vcGVuQWxlcnRUb2FzdElkcyA9IHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMuZmlsdGVyKHQgPT4gdCAhPT0gYWxlcnROb3RpZmljYXRpb24udG9hc3RJZCk7XG4gICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25MZW5ndGggPCAyKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xvc2VBbGxCdXR0b24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGFsZXJ0Tm90aWZpY2F0aW9uLm9uVGFwLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubmdUb2FzdHJTZXJ2aWNlLnJlbW92ZShhbGVydE5vdGlmaWNhdGlvbi50b2FzdElkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBhbGVydE5vdGlmaWNhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbm90aWZpY2F0aW9uTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMubGVuZ3RoIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbGxUb2FzdHMoKSB7XG4gICAgZm9yIChjb25zdCB0b2FzdElkIG9mIHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMpIHtcbiAgICAgIHRoaXMuY2xlYXJUb2FzdHModG9hc3RJZCk7XG4gICAgfVxuICAgIHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclRvYXN0cyh0b2FzdElkKSB7XG4gICAgdGhpcy5uZ1RvYXN0clNlcnZpY2UucmVtb3ZlKHRvYXN0SWQpO1xuICAgIHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMgPSB0aGlzLm9wZW5BbGVydFRvYXN0SWRzLmZpbHRlcih0ID0+IHQgIT09IHRvYXN0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbG9zZUFsbEJ1dHRvbigpIHtcbiAgICBjb25zdCBpc05vdGlmaWNhdGlvbkNsb3NlQWxsQnV0dG9uRXhpc3RzID0gISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKEFMRVJUX05PVElGSUNBVElPTl9DT05UQUlORVIpLnF1ZXJ5U2VsZWN0b3IoJ3RiLW5vdGlmaWNhdGlvbi1jbG9zZS1hbGwtYnV0dG9uJyk7XG4gICAgaWYgKGlzTm90aWZpY2F0aW9uQ2xvc2VBbGxCdXR0b25FeGlzdHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTm90aWZpY2F0aW9uQ2xvc2VBbGxCdXR0b25Db21wb25lbnQpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ob3N0VmlldyA9IGNvbXBvbmVudFJlZi5ob3N0VmlldztcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoQUxFUlRfTk9USUZJQ0FUSU9OX0NPTlRBSU5FUikuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDbG9zZUFsbEJ1dHRvbigpIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
119
|
+
}], ctorParameters: function () { return [{ type: i1.ToastrService }, { type: i0.ApplicationRef }, { type: i2.TenantService }, { type: i3.TranslateService }, { type: i0.ComponentFactoryResolver }, { type: i4.AppSettingsService }, { type: i5.NotificationsService }, { type: i0.Injector }]; } });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtbm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2FsZXJ0LW5vdGlmaWNhdGlvbi9hbGVydC1ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUc5SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBWSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBR3hILE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxrQ0FBa0MsRUFBMkIsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2SyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7OztBQUk1RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsdUJBQXVCO0lBS25FLFlBQ1ksZUFBOEIsRUFDOUIsTUFBc0IsRUFDeEIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLHdCQUFrRCxFQUNsRCxrQkFBc0MsRUFDdEMsb0JBQTBDLEVBQzFDLFFBQWtC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QW9CO1FBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDOytHQXJIVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFMRVJUX05PVElGSUNBVElPTl9DT05UQUlORVIsIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTLCBTWVNURU1fQUxFUlRfVkFMVUUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBBbGVydER0bywgTm90aWZpY2F0aW9uU2V2ZXJpdHksIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbmFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90ZW5hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbG9zZUFsbEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi1jbG9zZS1hbGwtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcywgTm90aWZpY2F0aW9uQ29uZmlnIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBCYXNlTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0Tm90aWZpY2F0aW9uQm9yZGVyQ2xhc3MsIEFsZXJ0Tm90aWZpY2F0aW9uQ2xhc3NpZmljYXRpb25NYXAsIEFsZXJ0Tm90aWZpY2F0aW9uQ29uZmlnLCBOb3RpZmljYXRpb25DbGFzc2ZpY2F0aW9uVHlwZSB9IGZyb20gJy4vYWxlcnQtbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBBbGVydE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQtbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL21vZHVsZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWxlcnROb3RpZmljYXRpb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU5vdGlmaWNhdGlvblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8Tm90aWZpY2F0aW9uQ2xvc2VBbGxCdXR0b25Db21wb25lbnQ+O1xuICBwcml2YXRlIG9wZW5BbGVydFRvYXN0SWRzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBuZ1RvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlOiBUZW5hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgYXBwU2V0dGluZ3NTZXJ2aWNlOiBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihuZ1RvYXN0clNlcnZpY2UsIGFwcFJlZik7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheUFsZXJ0KGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5ID0gdGhpcy5hcHBTZXR0aW5nc1NlcnZpY2UuYWxlcnRNYXBwaW5nW1BlcmlwaGVyYWxFcXVpcG1lbnRFcnJvclthbGVydC5ldmVudERlc2NyaXB0aW9uXV07XG4gICAgY29uc3QgYWxlcnRUaXRsZU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3JbYWxlcnQuZXZlbnREZXNjcmlwdGlvbl0pO1xuICAgIGNvbnN0IGFsZXJ0U3ViVGl0bGVNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmFsZXJ0c19tZXNzYWdlX3N1Yl90aXRsZSwge1xuICAgICAgZGV2aWNlTmFtZTogYWxlcnQuZGV2aWNlTmFtZSxcbiAgICAgIHJlYWRlcklEOiBhbGVydC5yZWFkZXJJRCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGFsZXJ0Qm9keU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uYWxlcnRzX21lc3NhZ2VfYm9keSwge1xuICAgICAgcGFya05hbWU6IGFsZXJ0LnBhcmtOYW1lLFxuICAgICAgcGFya1pvbmU6IGFsZXJ0LnBhcmtab25lTmFtZSA/ICcgfCAnICsgYWxlcnQucGFya1pvbmVOYW1lIDogJycsXG4gICAgfSk7XG5cbiAgICBsZXQgZHVyYXRpb246IG51bWJlcjtcbiAgICBjb25zdCBhbGVydHNUeXBlOiBOb3RpZmljYXRpb25DbGFzc2ZpY2F0aW9uVHlwZSA9IEFsZXJ0Tm90aWZpY2F0aW9uQ2xhc3NpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvblNldmVyaXR5KTtcbiAgICBzd2l0Y2ggKGFsZXJ0c1R5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uQ2xhc3NmaWNhdGlvblR5cGUuTWFqb3I6XG4gICAgICAgIGR1cmF0aW9uID0gdGhpcy50ZW5hbnRTZXJ2aWNlLm1ham9yQWxlcnQ/LmRpc3BsYXlJblNlY29uZHM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25DbGFzc2ZpY2F0aW9uVHlwZS5NaW5vcjpcbiAgICAgICAgZHVyYXRpb24gPSB0aGlzLnRlbmFudFNlcnZpY2UubWlub3JBbGVydD8uZGlzcGxheUluU2Vjb25kcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkNsYXNzZmljYXRpb25UeXBlLk5vbmU6XG4gICAgICAgIGR1cmF0aW9uID0gbnVsbFxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBhbGVydE5vdGlmaWNhdGlvbkNvbmZpZzogQWxlcnROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBzZXZlcml0eTogbm90aWZpY2F0aW9uU2V2ZXJpdHksXG4gICAgICBtZXNzYWdlczogW1xuICAgICAgICB7IHZhbHVlOiBgJHthbGVydFRpdGxlTWVzc2FnZX1gLCBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MudGl0bGUgfSxcbiAgICAgICAgeyB2YWx1ZTogYCR7YWxlcnRTdWJUaXRsZU1lc3NhZ2V9YCwgY2xhc3M6IGFsZXJ0LnJlYWRlcklEID09PSBTWVNURU1fQUxFUlRfVkFMVUUgPyBOb3RpZmljYXRpb25DbGFzcy5ub25lIDogTm90aWZpY2F0aW9uQ2xhc3Muc3ViVGl0bGUgfSxcbiAgICAgICAgeyB2YWx1ZTogYCR7YWxlcnRCb2R5TWVzc2FnZX1gLCBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MuYm9keSB9LFxuICAgICAgXSxcbiAgICAgIGNsYXNzOiBBbGVydE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzW05vdGlmaWNhdGlvblNldmVyaXR5W25vdGlmaWNhdGlvblNldmVyaXR5XV0sXG4gICAgICBtYXhPcGVuZWQ6IE5vdGlmaWNhdGlvbkNvbmZpZy5tYXhXaW5kb3dDYXBhY2l0eU5vdGlmaWNhdGlvbnMsXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWxlcnROb3RpZmljYXRpb24gPSB0aGlzLnNob3coYWxlcnROb3RpZmljYXRpb25Db25maWcsIEFsZXJ0Tm90aWZpY2F0aW9uQ29tcG9uZW50KTtcblxuICAgIHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMucHVzaChhbGVydE5vdGlmaWNhdGlvbi50b2FzdElkKTtcblxuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbkxlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5hZGRDbG9zZUFsbEJ1dHRvbigpO1xuICAgIH1cblxuICAgIGFsZXJ0Tm90aWZpY2F0aW9uLm9uSGlkZGVuLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMgPSB0aGlzLm9wZW5BbGVydFRvYXN0SWRzLmZpbHRlcih0ID0+IHQgIT09IGFsZXJ0Tm90aWZpY2F0aW9uLnRvYXN0SWQpO1xuICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uTGVuZ3RoIDwgMikge1xuICAgICAgICB0aGlzLnJlbW92ZUNsb3NlQWxsQnV0dG9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhbGVydE5vdGlmaWNhdGlvbi5vblRhcC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJBbGVydFRvYXN0RXZlbnQoYWxlcnQsIGd1aWQpO1xuICAgICAgdGhpcy5uZ1RvYXN0clNlcnZpY2UucmVtb3ZlKGFsZXJ0Tm90aWZpY2F0aW9uLnRvYXN0SWQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFsZXJ0Tm90aWZpY2F0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBub3RpZmljYXRpb25MZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuQWxlcnRUb2FzdElkcy5sZW5ndGggfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbFRvYXN0cygpIHtcbiAgICBmb3IgKGNvbnN0IHRvYXN0SWQgb2YgdGhpcy5vcGVuQWxlcnRUb2FzdElkcykge1xuICAgICAgdGhpcy5jbGVhclRvYXN0cyh0b2FzdElkKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuQWxlcnRUb2FzdElkcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGNsZWFyVG9hc3RzKHRvYXN0SWQpIHtcbiAgICB0aGlzLm5nVG9hc3RyU2VydmljZS5yZW1vdmUodG9hc3RJZCk7XG4gICAgdGhpcy5vcGVuQWxlcnRUb2FzdElkcyA9IHRoaXMub3BlbkFsZXJ0VG9hc3RJZHMuZmlsdGVyKHQgPT4gdCAhPT0gdG9hc3RJZCk7XG4gIH1cblxuICBwcml2YXRlIGFkZENsb3NlQWxsQnV0dG9uKCkge1xuICAgIGNvbnN0IGlzTm90aWZpY2F0aW9uQ2xvc2VBbGxCdXR0b25FeGlzdHMgPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoQUxFUlRfTk9USUZJQ0FUSU9OX0NPTlRBSU5FUikucXVlcnlTZWxlY3RvcigndGItbm90aWZpY2F0aW9uLWNsb3NlLWFsbC1idXR0b24nKTtcbiAgICBpZiAoaXNOb3RpZmljYXRpb25DbG9zZUFsbEJ1dHRvbkV4aXN0cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOb3RpZmljYXRpb25DbG9zZUFsbEJ1dHRvbkNvbXBvbmVudCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmhvc3RWaWV3ID0gY29tcG9uZW50UmVmLmhvc3RWaWV3O1xuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihBTEVSVF9OT1RJRklDQVRJT05fQ09OVEFJTkVSKS5hcHBlbmRDaGlsZChkb21FbGVtKTtcblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUNsb3NlQWxsQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -213,7 +213,7 @@ let NotificationsState = class NotificationsState {
|
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
displayAlert(ctx, alert, guid) {
|
|
216
|
-
const notification = this.alertNotificationService.displayAlert(alert);
|
|
216
|
+
const notification = this.alertNotificationService.displayAlert(alert, guid);
|
|
217
217
|
if (notification) {
|
|
218
218
|
const notificationsMap = { ...ctx.getState().notificationsMap };
|
|
219
219
|
const alertPK = this.alertPK(alert, guid);
|
|
@@ -551,4 +551,4 @@ export { NotificationsState };
|
|
|
551
551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsState, decorators: [{
|
|
552
552
|
type: Injectable
|
|
553
553
|
}], ctorParameters: function () { return [{ type: i1.ModalService }, { type: i2.TranslateService }, { type: i3.Store }, { type: i4.NotificationServiceProxy }, { type: i5.AlertNotificationService }, { type: i6.NotificationsService }, { type: i7.CommandNotificationService }, { type: i8.BaseFacilityCommandsService }, { type: i9.FacilityService }, { type: i10.ZoneServiceProxy }, { type: i10.RateServiceProxy }, { type: i11.AppConfigService }]; }, propDecorators: { onUpdateUserAlertsPreferencesAction: [], onLoadNotificationsAction: [], onClearNotificationsAction: [], onSetConfigAction: [], onHandleNotificationForClosing: [], onNotificationChangeAction: [], onHandleNotificationAction: [] } });
|
|
554
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFbkgsT0FBTyxFQUFFLDhCQUE4QixFQUE2Qix1QkFBdUIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3BMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBRWpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RJLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBeUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSwyQkFBMkIsRUFBRSwwQkFB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QUdEO0lBREMsTUFBTSxDQUFDLDRCQUE0QixDQUFDO3dFQUdwQztBQUdLO0lBREwsTUFBTSxDQUFDLHdCQUF3QixDQUFDO29FQWVoQztBQUdEO0lBREMsTUFBTSxDQUFDLHdCQUF3QixDQUFDO29FQU9oQztBQTdFTTtJQUROLFFBQVEsRUFBRTtzQ0FHVjtBQXBCVSxrQkFBa0I7SUFiOUIsS0FBSyxDQUFxQjtRQUN6QixJQUFJLEVBQUUsZUFBZTtRQUNyQixRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUU7Z0JBQ04sYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLDhCQUE4QixFQUFFLG9CQUFvQixDQUFDLEdBQUc7Z0JBQ3hELFVBQVUsRUFBRSxDQUFDO2dCQUNiLFlBQVksRUFBRSxLQUFLO2FBQ3BCO1lBQ0QsZ0JBQWdCLEVBQUUsRUFBRTtTQUNyQjtLQUNGLENBQUM7R0FFVyxrQkFBa0IsQ0EyakI5QjtTQTNqQlksa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7d2RBd0JULG1DQUFtQyxNQVVuQyx5QkFBeUIsTUFjekIsMEJBQTBCLE1BYTFCLGlCQUFpQixNQU9qQiw4QkFBOEIsTUFLeEIsMEJBQTBCLE1BaUJoQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9hbGVydC1ub3RpZmljYXRpb24vYWxlcnQtbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLCBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcywgTm90aWZpY2F0aW9uSFBvc2l0aW9ucywgTm90aWZpY2F0aW9uVlBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBWRVJTSU9OXzlfMl8wIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IERldmljZVR5cGVzQWxlcnRzTWFwcGluZyB9IGZyb20gJy4uLy4uL2VudW1zL2FsZXJ0cy1kZXZpY2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcbmltcG9ydCB7IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFsZXJ0RHRvLCBBbGVydFByZWZlcmVuY2VzU2V0dGluZ3NEdG8sIEFsZXJ0c0RldmljZVR5cGUsIEFwcE1vZHVsZSwgRGV2aWNlVHlwZSwgRHluYW1pY1ByaWNpbmdUcmlnZ2VyQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcywgSGFuZGxpbmdBbGVydER0bywgSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bywgTm90aWZpY2F0aW9uRHRvLCBOb3RpZmljYXRpb25TZXJ2aWNlUHJveHksIE5vdGlmaWNhdGlvblNldmVyaXR5LCBOb3RpZmljYXRpb25UeXBlLCBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IsIFBlcm1pc3Npb25UeXBlLCBTZXR0aW5nc0NhdGVnb3J5LCBTcGFya1NldHRpbmdzRHRvIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgUmF0ZVNlcnZpY2VQcm94eSwgWm9uZVNlcnZpY2VQcm94eSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQmFzZUZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE51bWJlck1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBpc1ZlcnNpb25HcmVhdGVyVGhhbkVxdWFsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3VwcG9ydC12ZXJzaW9uLnV0aWwnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlIH0gZnJvbSAnLi4vYXV0aC9zZXNzaW9uLnN0YXRlJztcbmltcG9ydCB7IEZhY2lsaXR5U2VydmljZSB9IGZyb20gJy4uL2ZhY2lsaXR5JztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrTWFuYWdlclN0YXRlIH0gZnJvbSAnLi4vcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5zdGF0ZSc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuc3RhdGUnO1xuaW1wb3J0IHsgVXBkYXRlVXNlclNldHRpbmdzQWN0aW9uIH0gZnJvbSAnLi4vdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2xlYXJOb3RpZmljYXRpb25zQWN0aW9uLCBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24sIEhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcsIExvYWROb3RpZmljYXRpb25zQWN0aW9uLFxuICBOb3RpZmljYXRpb25DaGFuZ2VBY3Rpb24sXG4gIFNldE5vdGlmaWNhdGlvbnNDb25maWdBY3Rpb24sIFVwZGF0ZVVzZXJBbGVydHNQcmVmZXJlbmNlc0FjdGlvblxufSBmcm9tICcuL25vdGlmaWNhdGlvbnMuYWN0aW9ucyc7XG5pbXBvcnQgeyBBbGVydHNQcmVmZXJlbmNlc01hcCwgQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXAsIEZhY2lsaXR5UHJlZmVyZW5jZXNNYXAsIE5vdGlmaWNhdGlvbnNDb25maWcgfSBmcm9tICcuL25vdGlmaWNhdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbnNNb2RlbCB7XG4gIGNvbmZpZzogTm90aWZpY2F0aW9uc0NvbmZpZztcbiAgbm90aWZpY2F0aW9uc01hcDogTnVtYmVyTWFwPG51bWJlcj47XG59XG5cbkBTdGF0ZTxOb3RpZmljYXRpb25zTW9kZWw+KHtcbiAgbmFtZTogJ25vdGlmaWNhdGlvbnMnLFxuICBkZWZhdWx0czoge1xuICAgIGNvbmZpZzoge1xuICAgICAgbm90aWZpY2F0aW9uczogW10sXG4gICAgICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LkxvdyxcbiAgICAgIGJhZGdlVmFsdWU6IDAsXG4gICAgICBkaXNwbGF5QmFkZ2U6IGZhbHNlLFxuICAgIH0sXG4gICAgbm90aWZpY2F0aW9uc01hcDoge30sXG4gIH0sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTdGF0ZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlUHJveHk6IE5vdGlmaWNhdGlvblNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZTogQWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2U6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2U6IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlDb21tYW5kc1NlcnZpY2U6IEJhc2VGYWNpbGl0eUNvbW1hbmRzU2VydmljZSxcbiAgICBwcml2YXRlIGZhY2lsaXR5U2VydmljZTogRmFjaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZVNlcnZpY2VQcm94eTogWm9uZVNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIHJhdGVTZXJ2aWNlUHJveHk6IFJhdGVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlKSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgY29uZmlnKHN0YXRlOiBOb3RpZmljYXRpb25zTW9kZWwpOiBOb3RpZmljYXRpb25zQ29uZmlnIHtcbiAgICByZXR1cm4gc3RhdGUuY29uZmlnO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb24pXG4gIG9uVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFjdGlvbjogVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKSB7XG4gICAgY29uc3Qgc2V0dGluZzogU3BhcmtTZXR0aW5nc0R0byA9IG5ldyBTcGFya1NldHRpbmdzRHRvKHtcbiAgICAgIGNhdGVnb3J5OiBTZXR0aW5nc0NhdGVnb3J5LkFsZXJ0c1ByZWZlcmVuY2VzLFxuICAgICAgc2V0dGluZ3NKc29uOiBKU09OLnN0cmluZ2lmeShhY3Rpb24udXNlck5vdGlmaWNhdGlvbnNQcmVmZXJlbmNlcyksXG4gICAgfSk7XG5cbiAgICBjdHguZGlzcGF0Y2gobmV3IFVwZGF0ZVVzZXJTZXR0aW5nc0FjdGlvbihzZXR0aW5nKSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWROb3RpZmljYXRpb25zQWN0aW9uKVxuICBvbkxvYWROb3RpZmljYXRpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgbWludXRlc0FnbyB9OiBMb2FkTm90aWZpY2F0aW9uc0FjdGlvbikge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMkID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlUHJveHkuZ2V0QWxsTm90aWZpY2F0aW9ucyhtaW51dGVzQWdvKTtcblxuICAgIHJldHVybiBub3RpZmljYXRpb25zJC5waXBlKHRhcChhc3luYyBub3RpZmljYXRpb25zID0+IHtcbiAgICAgIGNvbnN0IHBvcHVsYXRlTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uRHRvW10gPSBhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnBvcHVsYXRlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zLmRhdGEpO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uc0NvbmZpZzogTm90aWZpY2F0aW9uc0NvbmZpZyA9IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcocG9wdWxhdGVOb3RpZmljYXRpb25zKTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBjb25maWc6IG5vdGlmaWNhdGlvbnNDb25maWcsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyTm90aWZpY2F0aW9uc0FjdGlvbilcbiAgb25DbGVhck5vdGlmaWNhdGlvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWN0aW9uOiBDbGVhck5vdGlmaWNhdGlvbnNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgbm90aWZpY2F0aW9uczogW10sXG4gICAgICAgIGFnZ3JlZ2F0ZWROb3RpZmljYXRpb25TZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuTG93LFxuICAgICAgICBiYWRnZVZhbHVlOiAwLFxuICAgICAgICBkaXNwbGF5QmFkZ2U6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5vdGlmaWNhdGlvbnNNYXA6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTZXROb3RpZmljYXRpb25zQ29uZmlnQWN0aW9uKVxuICBvblNldENvbmZpZ0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IFNldE5vdGlmaWNhdGlvbnNDb25maWdBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBjb25maWc6IGFjdGlvbi5ub3RpZmljYXRpb25zQ29uZmlnLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihIYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKVxuICBvbkhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgeyBub3RpZmljYXRpb24sIGd1aWQgfTogSGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZykge1xuICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gIH1cblxuICBAQWN0aW9uKE5vdGlmaWNhdGlvbkNoYW5nZUFjdGlvbilcbiAgYXN5bmMgb25Ob3RpZmljYXRpb25DaGFuZ2VBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgeyBub3RpZmljYXRpb24sIGd1aWQgfTogTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uKSB7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb24udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkFsZXJ0OlxuICAgICAgICB0aGlzLm9uQWxlcnRDaGFuZ2UoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICB0aGlzLm9uRHlhbm1pY1ByaWNpbmdDb25kaXRpb25DaGFuZ2UoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coXCJ1bnN1cHBvcnRlZCBub3RpZmljYXRpb24gdHlwZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24pXG4gIG9uSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgbm90aWZpY2F0aW9uRHRvLCBndWlkIH06IEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbikge1xuICAgIGlmIChub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24/LmhhbmRsZWRCeVVzZXJJZCA+IDApIHtcbiAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHgsIG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2Vzc05vdGlmaWNhdGlvblVwZGF0ZShjdHgsIG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvY2Vzc05vdGlmaWNhdGlvblVwZGF0ZShjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvLCBndWlkKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgbm90aWZpY2F0aW9uIHdpdGggdGhlIGhhbmRsZSB1c2VyIC0gYW5kIHNhdmUgaW4gc3RhdGVcbiAgICBsZXQgZXhpc3ROb3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bztcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbkR0by50eXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICAgIGV4aXN0Tm90aWZpY2F0aW9uRHRvID0gbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbiA9PiB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvblBLKSk7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBkeW5hbWljLXByaWNpbmctY29uZmlybWF0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuQWxlcnQ6XG4gICAgICAgIGV4aXN0Tm90aWZpY2F0aW9uRHRvID0gbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbiA9PiB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvblBLKSAmJlxuICAgICAgICAgIHRoaXMuc3RhdGVNYXRjaGVzKG5vdGlmaWNhdGlvbi5hbGVydCwgbm90aWZpY2F0aW9uRHRvLmFsZXJ0LmV2ZW50U3RhdGUpKTtcblxuICAgICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbHByLW1pc21hdGNoLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBsb3N0LXRpY2tldC1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coXCJ1bnN1cHBvcnRlZCBub3RpZmljYXRpb24gdHlwZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGV4aXN0Tm90aWZpY2F0aW9uRHRvKSB7XG4gICAgICBleGlzdE5vdGlmaWNhdGlvbkR0by5oYW5kbGluZ0J5VXNlciA9IG5vdGlmaWNhdGlvbkR0by5oYW5kbGluZ0J5VXNlcjtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKG5vdGlmaWNhdGlvbnMpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgY3JpdGljYWwgYWxlcnQgbW9kYWxcbiAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Dcml0aWNhbEFsZXJ0RGlhbG9nKGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWxlcnRUeXBlTmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvclthbGVydC5ldmVudERlc2NyaXB0aW9uXSk7XG4gICAgY29uc3QgY2xvdWRDb25maXJtRGlhbG9nRGF0YTogQ2xvdWRDb25maXJtRGlhbG9nRGF0YSA9IHtcbiAgICAgIGNvbmZpcm1NZXNzYWdlczogW3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcml0aWNhbF9hbGVydF9tZXNzYWdlLCB7XG4gICAgICAgIGFsZXJ0VHlwZU5hbWVcbiAgICAgIH0pXSxcbiAgICAgIGNvbmZpcm1UaXRsZTogYWxlcnRUeXBlTmFtZSxcbiAgICAgIG9rVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnllcyksXG4gICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FuY2VsKSxcbiAgICAgIGRldmljZToge1xuICAgICAgICBjb21tSWQ6IGFsZXJ0LnJlYWRlcklELnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWU6IGFsZXJ0LmRldmljZU5hbWVcbiAgICAgIH0sXG4gICAgICBwYXJrTmFtZTogYWxlcnQucGFya05hbWUsXG4gICAgICB6b25lTmFtZTogYWxlcnQucGFya1pvbmVOYW1lLFxuICAgICAgbm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LkNyaXRpY2FsLFxuICAgICAgbm90aWZpY2F0aW9uU2V2ZXJpdHlJbnZlcnQ6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3QgYWxlcnRQSyA9IHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbjxib29sZWFuPihDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6IGB0Yi1jcml0aWNhbC1tb2RhbC0ke2FsZXJ0UEt9YCxcbiAgICAgIGRhdGE6IGNsb3VkQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICBpZDogYG5vdGlmaWNhdGlvbi1tb2RhbC0ke2FsZXJ0UEt9YCxcbiAgICAgIGVuYWJsZWRNaW5pbWl6ZWQ6IHRydWUsXG4gICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudXNlckluZm8pO1xuICAgICAgICBjb25zdCBoYW5kbGVBbGVydDogSGFuZGxpbmdBbGVydER0byA9IG5ldyBIYW5kbGluZ0FsZXJ0RHRvKHtcbiAgICAgICAgICBndWlkOiBndWlkLFxuICAgICAgICAgIHBhcmtJZDogYWxlcnQucGFya0lkLFxuICAgICAgICAgIHBhcmtOYW1lOiBhbGVydC5wYXJrTmFtZSxcbiAgICAgICAgICBkZXZpY2VJZDogYWxlcnQuZGV2aWNlSUQsXG4gICAgICAgICAgZXZlbnREZXNjcmlwdGlvbjogYWxlcnQuZXZlbnREZXNjcmlwdGlvbixcbiAgICAgICAgICB1c2VyRnVsbE5hbWU6IHVzZXJJbmZvLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIGlkOiBhbGVydC5pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZVByb3h5LmhhbmRsZUFsZXJ0Tm90aWZpY2F0aW9uKGhhbmRsZUFsZXJ0KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJBbGVydFRvYXN0RXZlbnQocmVzLmRhdGEgfHwgYWxlcnQsIGd1aWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uRGlhbG9nKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbG91ZENvbmZpcm1EaWFsb2dEYXRhOiBDbG91ZENvbmZpcm1EaWFsb2dEYXRhID0ge1xuICAgICAgY29uZmlybU1lc3NhZ2VzOiBbdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19hbGVydF9tZXNzYWdlKV0sXG4gICAgICBjb25maXJtVGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfYWxlcnRfdGl0bGUpLFxuICAgICAgY29uZmlybVN1YlRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX2FsZXJ0X3N1Yl90aXRsZSwgeyBjb25kaXRpb25OYW1lOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uY29uZGl0aW9uTmFtZSB9KSxcbiAgICAgIG9rVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnllcyksXG4gICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FuY2VsKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbjxib29sZWFuPihDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6IGB0Yi1keW5hbWljLXByaWNpbmctY29uZGl0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uLmlkfWAsXG4gICAgICBkYXRhOiBjbG91ZENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgaWQ6IGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gLFxuICAgICAgZW5hYmxlZE1pbmltaXplZDogdHJ1ZSxcbiAgICB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgdXNlckluZm8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS51c2VySW5mbyk7XG4gICAgICAgIGNvbnN0IGhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG86IEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8gPSBuZXcgSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0byh7XG4gICAgICAgICAgY2xvdWRQYXJrSWQ6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5jbG91ZFBhcmtJZCxcbiAgICAgICAgICB1c2VyRnVsbE5hbWU6IHVzZXJJbmZvLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIGlkOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2VQcm94eS5oYW5kbGVEeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbihoYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvKS5zdWJzY3JpYmUoYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICBjb25zdCBkcGMgPSByZXMuZGF0YSB8fCBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb247XG4gICAgICAgICAgY29uc3QgcmF0ZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmF0ZVNlcnZpY2VQcm94eS5nZXRSYXRlQnlJZChkcGMucmF0ZUlkLCBkcGMuZ3VpZCkpO1xuICAgICAgICAgIGRwYy5yYXRlTmFtZSA9IHJhdGU/LmRhdGE/Lm5hbWU7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS50cmlnZ2VyRHluYW1pY1ByaWNpbmdUb2FzdEV2ZW50KHJlcy5kYXRhIHx8IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5QWxlcnQoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5kaXNwbGF5QWxlcnQoYWxlcnQpO1xuICAgIGlmIChub3RpZmljYXRpb24pIHtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcbiAgICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnQsIGd1aWQpO1xuICAgICAgbm90aWZpY2F0aW9uc01hcFthbGVydFBLXSA9IG5vdGlmaWNhdGlvbi50b2FzdElkO1xuXG4gICAgICBub3RpZmljYXRpb24ub25UYXAucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJBbGVydFRvYXN0RXZlbnQoYWxlcnQsIGd1aWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9uc01hcCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VEaWFsb2dCeUlkKGRpYWxvZ0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBvcGVuRGlhbG9ncyA9IHRoaXMubW9kYWxTZXJ2aWNlLmdldE9wZW5EaWFsb2dzKCk7XG4gICAgY29uc3QgZGlhbG9nID0gb3BlbkRpYWxvZ3MuZmluZChkaWFsb2cgPT4gZGlhbG9nLmlkID09PSBkaWFsb2dJZCk7XG5cbiAgICBpZiAoZGlhbG9nKSB7XG4gICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFsZXJ0Rm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnREdG8sIGd1aWQpO1xuXG4gICAgLy8gV2hldGhlciB3ZSB3YW50IHRvIGNsb3NlIG9yIGhhdmUgYSBkdXBsaWNhdGUgYWxlcnRcbiAgICBjb25zdCBhbGVydEV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT5cbiAgICAgIHRoaXMucGtNYXRjaGVzKG5vdGlmaWNhdGlvbiwgYWxlcnRQSykgJiYgdGhpcy5zdGF0ZU1hdGNoZXMobm90aWZpY2F0aW9uLmFsZXJ0LCBhbGVydER0by5ldmVudFN0YXRlKVxuICAgICk7XG4gICAgaWYgKCFhbGVydER0by5ldmVudFN0YXRlIHx8IGFsZXJ0RXhpc3RzKSB7XG4gICAgICBjb25zdCB0b2FzdElkID0gbm90aWZpY2F0aW9uc01hcFthbGVydFBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS107XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiAhbm90aWZpY2F0aW9uLmFsZXJ0IHx8ICEodGhpcy5hbGVydFBLKG5vdGlmaWNhdGlvbi5hbGVydCwgbm90aWZpY2F0aW9uLmd1aWQpID09PSBhbGVydFBLKSk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhmaWx0ZXJlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENsb3NlIHJlbGV2YW50IG9wZW4gbW9kYWxzXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbm90aWZpY2F0aW9uLW1vZGFsLSR7YWxlcnRQS31gKTtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBscHItbWlzbWF0Y2gtbW9kYWwtJHthbGVydFBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxvc3QtdGlja2V0LW1vZGFsLSR7YWxlcnRQS31gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcblxuICAgIC8vIFdoZXRoZXIgd2Ugd2FudCB0byBjbG9zZSBvciBoYXZlIGEgZHVwbGljYXRlIGFsZXJ0XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uRXhpc3RzID0gbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbiA9PiBub3RpZmljYXRpb24uZ3VpZCA9PT0gbm90aWZpY2F0aW9uRHRvLmd1aWQgJiZcbiAgICAgIG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbj8uY2xvdWRQYXJrSWQgPT09IG5vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5jbG91ZFBhcmtJZCk7XG4gICAgaWYgKG5vdGlmaWNhdGlvbkV4aXN0cykge1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkV4aXN0cywgZ3VpZCk7XG4gICAgICBjb25zdCB0b2FzdElkID0gbm90aWZpY2F0aW9uc01hcFtub3RpZmljYXRpb25QS107XG4gICAgICB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5jbGVhclRvYXN0cyh0b2FzdElkKTtcbiAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcblxuICAgICAgY29uc3QgZmlsdGVyZWROb3RpZmljYXRpb25zID0gbm90aWZpY2F0aW9ucy5maWx0ZXIobm90aWZpY2F0aW9uID0+XG4gICAgICAgICEodGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbi5ndWlkKSA9PT0gbm90aWZpY2F0aW9uUEspKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9uc01hcCxcbiAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKGZpbHRlcmVkTm90aWZpY2F0aW9ucyksXG4gICAgICB9KTtcblxuICAgICAgLy8gQ2xvc2UgcmVsZXZhbnQgb3BlbiBtb2RhbHNcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBkeW5hbWljLXByaWNpbmctY29uZmlybWF0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcbiAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uLCBndWlkKTtcblxuICAgIC8vIFdoZXRoZXIgd2Ugd2FudCB0byBjbG9zZSBvciBoYXZlIGEgZHVwbGljYXRlIGFsZXJ0XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uRXhpc3RzID0gbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbiA9PiB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvblBLKSk7XG4gICAgaWYgKG5vdGlmaWNhdGlvbkV4aXN0cykge1xuICAgICAgY29uc3QgdG9hc3RJZCA9IG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuICAgICAgdGhpcy5hbGVydE5vdGlmaWNhdGlvblNlcnZpY2UuY2xlYXJUb2FzdHModG9hc3RJZCk7XG4gICAgICBkZWxldGUgbm90aWZpY2F0aW9uc01hcFtub3RpZmljYXRpb25QS107XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PlxuICAgICAgICAhKHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24uZ3VpZCkgPT09IG5vdGlmaWNhdGlvblBLKSk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhmaWx0ZXJlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENsb3NlIHJlbGV2YW50IG9wZW4gbW9kYWxzXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgZHluYW1pYy1wcmljaW5nLWNvbmZpcm1hdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxwci1taXNtYXRjaC1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxvc3QtdGlja2V0LW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9ucyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3QgcGFya0lkID0gbm90aWZpY2F0aW9uRHRvPy5keW5hbWljUHJpY2luZ0NvbmRpdGlvbj8ucGFya0lkO1xuXG4gICAgLy8gZmluZCBhbGwgdGhlIGR5bmFtaWMgcHJpY2luZyB0cmlnZ2VyZWQgY29uZGl0aW9ucyBvZiBzYW1lIGd1aWQgYW5kIHBhcmtJZCB0byBiZSBjbG9zZVxuICAgIGNvbnN0IGR5bmFtaWNQcmljaW5nTm90aWZpY2F0aW9uRXhpc3RzID0gbm90aWZpY2F0aW9ucy5maWx0ZXIobm90aWZpY2F0aW9uID0+ICEhbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uICYmXG4gICAgICBub3RpZmljYXRpb24uZ3VpZCA9PT0gZ3VpZCAmJiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24ucGFya0lkID09PSBwYXJrSWQpO1xuXG4gICAgaWYgKGR5bmFtaWNQcmljaW5nTm90aWZpY2F0aW9uRXhpc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZHAgb2YgZHluYW1pY1ByaWNpbmdOb3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKGRwLCBndWlkKTtcbiAgICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuXG4gICAgICAgIC8vIENsb3NlIHJlbGV2YW50IG9wZW4gbW9kYWxzXG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGR5bmFtaWMtcHJpY2luZy1jb25maXJtYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyZWROb3RpZmljYXRpb25zID0gbm90aWZpY2F0aW9ucy5maWx0ZXIobm90aWZpY2F0aW9uID0+ICFub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24gfHwgIShub3RpZmljYXRpb24uZ3VpZCA9PT0gZ3VpZCAmJiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24ucGFya0lkID09PSBwYXJrSWQpKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9uc01hcCxcbiAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKGZpbHRlcmVkTm90aWZpY2F0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dSYXRlQXV0b21hdGljU3dpdGNoVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvKSB7XG4gICAgY29uc3QgZHBjID0gbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHJhdGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJhdGVTZXJ2aWNlUHJveHkuZ2V0UmF0ZUJ5SWQoZHBjLnJhdGVJZCwgZHBjLmd1aWQpKTtcbiAgICBkcGMucmF0ZU5hbWUgPSByYXRlPy5kYXRhPy5uYW1lO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5mYWNpbGl0eUNvbW1hbmRzU2VydmljZS5nZXRDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnTWVzc2FnZXMoRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMuU2V0QWN0aXZlUmF0ZSwgbnVsbCwgZHBjKTtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlcyxcbiAgICAgIGNvbW1hbmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWNpbGl0eV9yZW1vdGVfY29tbWFuZF9zZXRfYWN0aXZlX3JhdGUpLFxuICAgICAgaFBvc2l0aW9uOiBOb3RpZmljYXRpb25IUG9zaXRpb25zLlJpZ2h0LFxuICAgICAgdlBvc2l0aW9uOiBOb3RpZmljYXRpb25WUG9zaXRpb25zLkJvdHRvbSxcbiAgICAgIGR1cmF0aW9uOiA3ICogT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICBjbGFzczogQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLlN1Y2Nlc3MsXG4gICAgICB0eXBlOiBDb21tYW5kTm90aWZpY2F0aW9uVHlwZS5TdWNjZXNzXG4gICAgfTtcblxuICAgIHRoaXMuY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyhjb25maWcsIENvbW1hbmROb3RpZmljYXRpb25Db21wb25lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93UmF0ZUZhbGxlbkJhY2tUb0RlZmF1bHRSYXRlVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvKSB7XG4gICAgY29uc3QgZHBjID0gbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19yZXZlcnRlZF90b19kZWZhdWx0X3JhdGUpO1xuICAgIGNvbnN0IHN1YlRpdGxlID0gYCR7ZHBjLnBhcmtpbmdMb3ROYW1lfSR7ZHBjLnpvbmU/Lm5hbWUgPyAnIHwgJyArIGRwYy56b25lPy5uYW1lIDogJyd9YDtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3tcbiAgICAgICAgdmFsdWU6IHRpdGxlLFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MudGl0bGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB2YWx1ZTogc3ViVGl0bGUsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSxcbiAgICAgIH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmZhY2lsaXR5X3JlbW90ZV9jb21tYW5kX3NldF9hY3RpdmVfcmF0ZSksXG4gICAgICBoUG9zaXRpb246IE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMuUmlnaHQsXG4gICAgICB2UG9zaXRpb246IE5vdGlmaWNhdGlvblZQb3NpdGlvbnMuQm90dG9tLFxuICAgICAgZHVyYXRpb246IDcgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyxcbiAgICAgIGNsYXNzOiBDb21tYW5kTm90aWZpY2F0aW9uQm9yZGVyQ2xhc3MuU3VjY2VzcyxcbiAgICAgIHR5cGU6IENvbW1hbmROb3RpZmljYXRpb25UeXBlLlN1Y2Nlc3NcbiAgICB9O1xuXG4gICAgdGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5zaG93KGNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCk7XG4gIH1cblxuICBwcml2YXRlIGlzQWxlcnRFbmFibGVkRm9yVXNlcihhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0FsZXJ0RW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBjb25zdCB1c2VyU2V0dGluZ3MgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS5tYXBwZWRVc2VyU2V0dGluZ3MpO1xuICAgIGNvbnN0IHVzZXJBbGVydHNQcmVmZXJlbmNlczogQWxlcnRQcmVmZXJlbmNlc1NldHRpbmdzRHRvID0gdXNlclNldHRpbmdzLmdldChTZXR0aW5nc0NhdGVnb3J5LkFsZXJ0c1ByZWZlcmVuY2VzKTtcblxuICAgIC8vIElmIHRoZXJlIGlzIG5vIHVzZXJBbGVydHNQcmVmZXJlbmNlcyB3ZSBkb24ndCBmaWx0ZXIgYXQgYWxsXG4gICAgaWYgKCEhdXNlckFsZXJ0c1ByZWZlcmVuY2VzKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciBlbmFibGVkIHRoZSBub3RpZmljYXRpb25zXG4gICAgICAvLyBFbHNlIHRoZSB1c2VyIGRpc2FibGVkIGFsbCB0aGUgbm90aWZpY2F0aW9uc1xuICAgICAgaWYgKHVzZXJBbGVydHNQcmVmZXJlbmNlcy5pc0VuYWJsZWQpIHtcbiAgICAgICAgY29uc3Qgc3BhcmtWZXJzaW9uID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdCgoeyBzbWFydHBhcms6IHsgdmVyc2lvbnMgfSB9KSA9PiB2ZXJzaW9uc1tndWlkXSk7XG4gICAgICAgIGNvbnN0IGlzQWxlcnRGaWx0ZXJWZXJzaW9uU3VwcG9ydGVkID0gaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbChzcGFya1ZlcnNpb24sIFZFUlNJT05fOV8yXzApO1xuXG4gICAgICAgIC8vIElmIHRoZSB2ZXJzaW9uIGlzIDkuMS4wIG9yIGJlbG93LCBhbGwgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZFxuICAgICAgICAvLyBJZiB0aGUgdmVyc2lvbiBpcyA5LjIuMCBhbmQgYWJvdmUsIHdlIGZpbHRlciBieSB0aGUgcHJlZmVyZW5jZXNcbiAgICAgICAgaXNBbGVydEVuYWJsZWQgPSAhaXNBbGVydEZpbHRlclZlcnNpb25TdXBwb3J0ZWQgfHwgdGhpcy5pc0FsZXJ0RW5hYmxlZEluUHJlZmVyZW5jZXMoYWxlcnQsIGd1aWQsIHVzZXJBbGVydHNQcmVmZXJlbmNlcy5wcmVmZXJlbmNlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc0FsZXJ0RW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0FsZXJ0RW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbGVydEVuYWJsZWRJblByZWZlcmVuY2VzKGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nLCB1c2VyQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXA6IEFsZXJ0c1ByZWZlcmVuY2VzTWFwKSB7XG4gICAgbGV0IGlzQWxlcnRFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8vIElmIHdlIGhhdmUgYW55IGZhY2lsaXR5IHNlbGVjdGVkLCB3ZSBjb250aW51ZSB0byBjaGVja1xuICAgIC8vIEVsc2Ugd2UgYWxsb3cgYWxsIHRvIHBhc3MgYXMgdGhlIHVzZXIgZGlkbid0IHNldCBwcmVmZXJlbmNlcyB5ZXRcbiAgICBpZiAoT2JqZWN0LmtleXModXNlckFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwKS5sZW5ndGgpIHtcbiAgICAgIGlzQWxlcnRFbmFibGVkID0gZmFsc2U7XG5cbiAgICAgIC8vIEdldHMgdGhlIHRyZWVJZCBvZiB0aGUgdGVuYW50IC0gSW4gY2FzZSB0aGUgdXNlciBzZWxlY3RlZCBcIkFsbCBUZW5hbnQgUGFya2luZyBMb3RzXCJcbiAgICAgIGNvbnN0IHRlbmFudFRyZWVJZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2Vzc2lvblN0YXRlLnRlbmFudEluZm8pPy50cmVlSWQ7XG5cbiAgICAgIC8vIEdldHMgdGhlIHRyZWUgcGFyayBJZCBvZiB0aGUgYWxlcnRcbiAgICAgIGNvbnN0IGFsZXJ0VHJlZVBhcmtJZCA9IHRoaXMuZ2V0Q2xvdWRQYXJrSWQoYWxlcnQsIGd1aWQpO1xuXG4gICAgICAvLyBXZSBHZXQgdGhlIHNldHRpbmcgb2YgdGhlIFBhcmssIFBhcmVudFBhcmsgb3IgUGFya3NUcmVlUm9vdFxuICAgICAgY29uc3QgZmFjaWxpdHlQcmVmZXJlbmNlc01hcDogRmFjaWxpdHlQcmVmZXJlbmNlc01hcCA9IHVzZXJBbGVydFR5cGVQcmVmZXJlbmNlc01hcFthbGVydFRyZWVQYXJrSWRdIHx8IHVzZXJBbGVydFR5cGVQcmVmZXJlbmNlc01hcFt0ZW5hbnRUcmVlSWRdO1xuXG4gICAgICAvLyBXZSBjaGVjayBpZiB0aGUgZmFjaWxpdHkgd2FzIHNlbGVjdGVkXG4gICAgICBpZiAoZmFjaWxpdHlQcmVmZXJlbmNlc01hcCkge1xuICAgICAgICBjb25zdCBhbGVydFR5cGVQcmVmZXJlbmNlc01hcDogQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXAgPSBmYWNpbGl0eVByZWZlcmVuY2VzTWFwW2FsZXJ0LmV2ZW50RGVzY3JpcHRpb25dO1xuXG4gICAgICAgIC8vIFdlIGNoZWNrIGlmIHRoZSBhbGVydCB0eXBlIHdhcyBzZWxlY3RlZFxuICAgICAgICBpZiAoYWxlcnRUeXBlUHJlZmVyZW5jZXNNYXApIHtcbiAgICAgICAgICBjb25zdCBhbGVydERldmljZVR5cGU6IEFsZXJ0c0RldmljZVR5cGUgPSB0aGlzLmdldEFsZXJ0c0RldmljZVR5cGUoYWxlcnQpO1xuXG4gICAgICAgICAgLy8gV2UgY2hlY2sgdGhlIGlmIHRoZSBkZXZpY2UgdHlwZSB3YXMgc2VsZWN0ZWRcbiAgICAgICAgICBpc0FsZXJ0RW5hYmxlZCA9IGFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwW2FsZXJ0RGV2aWNlVHlwZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNBbGVydEVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEFsZXJ0c0RldmljZVR5cGUoYWxlcnQ6IEFsZXJ0RHRvKTogQWxlcnRzRGV2aWNlVHlwZSB7XG4gICAgbGV0IGFsZXJ0RGV2aWNlVHlwZTogQWxlcnRzRGV2aWNlVHlwZTtcbiAgICBjb25zdCBhbGVydHNEZXZpY2VUeXBlOiBBbGVydHNEZXZpY2VUeXBlW10gPSBEZXZpY2VUeXBlc0FsZXJ0c01hcHBpbmcuZ2V0KGFsZXJ0LmRldmljZVR5cGUpO1xuXG4gICAgc3dpdGNoIChhbGVydC5kZXZpY2VUeXBlKSB7XG4gICAgICBjYXNlIERldmljZVR5cGUuQ2FzaDpcbiAgICAgICAgYWxlcnREZXZpY2VUeXBlID0gYWxlcnQucmVhZGVySUQgPT09IDAgPyBBbGVydHNEZXZpY2VUeXBlLk1hc3RlciA6IEFsZXJ0c0RldmljZVR5cGUuQ2FzaFJlZ2lzdGVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFsZXJ0RGV2aWNlVHlwZSA9IGFsZXJ0c0RldmljZVR5cGU/LlswXTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsZXJ0RGV2aWNlVHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgb25EeWFubWljUHJpY2luZ0NvbmRpdGlvbkNoYW5nZShjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICB0aGlzLmhhbmRsZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcblxuICAgIGlmIChub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaXNUcmlnZ2VyZWQpIHtcbiAgICAgIC8vIFdlIGRvIG5vdCBvcGVuIHRoZSBub3RpZmljYXRpb24gaWYgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb25cbiAgICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSB0aGlzLmZhY2lsaXR5U2VydmljZS5oYXNQZXJtaXNzaW9uVHlwZUJ5UGFyayhcbiAgICAgICAgUGVybWlzc2lvblR5cGUuTG90Q29uZmlndXJhdGlvbkR5bmFtaWNQcmljaW5nLCBub3RpZmljYXRpb24uZ3VpZCwgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtpbmdMb3RJZFxuICAgICAgKTtcblxuICAgICAgLy8gV2UgZG8gbm90IG9wZW4gdGhlIG5vdGlmaWNhdGlvbiBpbiBtb2JpbGUgbW9kZVxuICAgICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlO1xuICAgICAgY29uc3QgaXNDY01vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSkgPT09IEFwcE1vZHVsZS5DYztcbiAgICAgIGlmICghaXNNb2JpbGVBcHBNb2RlICYmIGlzQ2NNb2R1bGUgJiYgaGFzUGVybWlzc2lvbikge1xuICAgICAgICB0aGlzLm9wZW5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbkRpYWxvZyhub3RpZmljYXRpb24sIGd1aWQpO1xuXG4gICAgICAgIC8vIFB1c2ggdGhlIG5ldyBub3RpZmljYXRpb24gdG8gdGhlIGFycmF5IGFuZCBzYXZlIGluIHN0YXRlXG4gICAgICAgIG5vdGlmaWNhdGlvbi50aW1lQWdvSW5TZWNvbmRzID0gdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5nZXRUaW1lQWdvSW5TZWNvbmRzKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgICAgIG5vdGlmaWNhdGlvbnMudW5zaGlmdChub3RpZmljYXRpb24pO1xuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcobm90aWZpY2F0aW9ucyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlzQWN0aXZhdGVkKSB7XG4gICAgICAvLyBoYW5kbGUgbm90aWZpY2F0aW9uIGluZGljYXRpbmcgdGhlIHJhdGUgaGFzIGZhbGxlbiBiYWNrIHRvIHRoZSBkZWZhdWx0IHJhdGVcbiAgICAgIHRoaXMuc2hvd1JhdGVGYWxsZW5CYWNrVG9EZWZhdWx0UmF0ZVRvYXN0TWVzc2FnZShub3RpZmljYXRpb24pLnRoZW4oKTtcbiAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi50cmlnZ2VyQWN0aW9uID09PSBEeW5hbWljUHJpY2luZ1RyaWdnZXJBY3Rpb24uQXV0b21hdGljU3dpdGNoUmF0ZSkge1xuICAgICAgLy8gaGFuZGxlIG5vdGlmaWNhdGlvbiBpbmRpY2F0aW5nIHRoZSByYXRlIGhhcyBhdXRvbWF0aWMgc3dpdGNoXG4gICAgICB0aGlzLnNob3dSYXRlQXV0b21hdGljU3dpdGNoVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbikudGhlbigpO1xuICAgICAgdGhpcy5jbG9zZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9ucyhjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkFsZXJ0Q2hhbmdlKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbGVydCA9IG5vdGlmaWNhdGlvbj8uYWxlcnQ7XG4gICAgaWYgKGFsZXJ0ICYmIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuaXNBbGVydFR5cGVEZWZpbmVkKGFsZXJ0LmV2ZW50RGVzY3JpcHRpb24pKSB7XG4gICAgICB0aGlzLmhhbmRsZUFsZXJ0Rm9yQ2xvc2luZyhjdHgsIGFsZXJ0LCBndWlkKTtcblxuICAgICAgaWYgKGFsZXJ0LmV2ZW50U3RhdGUgJiYgdGhpcy5pc0FsZXJ0RW5hYmxlZEZvclVzZXIoYWxlcnQsIGd1aWQpKSB7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG5cbiAgICAgICAgaWYgKCFhbGVydC5kZXZpY2VOYW1lKSB7XG4gICAgICAgICAgY29uc3QgcGFya0RldmljZXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuZGV2aWNlcyk7XG4gICAgICAgICAgYWxlcnQuZGV2aWNlTmFtZSA9IHBhcmtEZXZpY2VzPy5maW5kKGQgPT4gZC5pZCA9PT0gYWxlcnQuZGV2aWNlSUQpPy5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhbGVydC5wYXJrTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGxvdHNNYXAgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KVtndWlkXTtcbiAgICAgICAgICBpZiAobG90c01hcCkge1xuICAgICAgICAgICAgYWxlcnQucGFya05hbWUgPSBsb3RzTWFwW2FsZXJ0LnBhcmtJZF0/Lm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWxlcnQucGFya1pvbmVOYW1lID0gXCJcIjtcblxuICAgICAgICAvLyBXZSBkbyBub3Qgb3BlbiB0aGUgbm90aWZpY2F0aW9uIGluIG1vYmlsZSBtb2RlXG4gICAgICAgIGNvbnN0IGlzTW9iaWxlQXBwTW9kZSA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICAgICAgY29uc3QgaXNDY01vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSkgPT09IEFwcE1vZHVsZS5DYztcbiAgICAgICAgaWYgKCFpc01vYmlsZUFwcE1vZGUgJiYgaXNDY01vZHVsZSkge1xuICAgICAgICAgIHN3aXRjaCAoYWxlcnQuZXZlbnREZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgY2FzZSBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IuTE9TVF9USUNLRVQ6XG4gICAgICAgICAgICBjYXNlIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvci5MUlBfTk9UX01BVENIOlxuICAgICAgICAgICAgICB0aGlzLm9wZW5Dcml0aWNhbEFsZXJ0RGlhbG9nKGFsZXJ0LCBndWlkKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlBbGVydChjdHgsIGFsZXJ0LCBndWlkKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHVzaCB0aGUgbmV3IGFsZXJ0IHRvIHRoZSBhcnJheSBhbmQgc2F2ZSBpbiBzdGF0ZVxuICAgICAgICBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyA9IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0VGltZUFnb0luU2Vjb25kcyhub3RpZmljYXRpb24pO1xuICAgICAgICBub3RpZmljYXRpb25zLnVuc2hpZnQobm90aWZpY2F0aW9uKTtcblxuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKG5vdGlmaWNhdGlvbnMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENsb3VkUGFya0lkKGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBhbGVydFBhcmtJZCA9IGFsZXJ0Lm11bHRpUGFya1BhcmVudElkID4gMCA/IGFsZXJ0Lm11bHRpUGFya1BhcmVudElkIDogYWxlcnQucGFya0lkO1xuICAgIGNvbnN0IGxvdHNNYXAgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KVtndWlkXTtcbiAgICByZXR1cm4gbG90c01hcFthbGVydFBhcmtJZF0/LmNsb3VkSWQ7XG4gIH1cblxuICBwcml2YXRlIHBrTWF0Y2hlcyA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgbm90aWZpY2F0aW9uUEs6IHN0cmluZykgPT4gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG8sIG5vdGlmaWNhdGlvbkR0by5ndWlkKSA9PT0gbm90aWZpY2F0aW9uUEs7XG4gIHByaXZhdGUgc3RhdGVNYXRjaGVzID0gKGFsZXJ0RHRvOiBBbGVydER0bywgZXZlbnRTdGF0ZTogYm9vbGVhbikgPT4gYWxlcnREdG8uZXZlbnRTdGF0ZSA9PT0gZXZlbnRTdGF0ZTtcbiAgcHJpdmF0ZSBhbGVydFBLID0gKGFsZXJ0RHRvOiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIGAke2d1aWR9XyR7YWxlcnREdG8ucGFya0lkfV8ke2FsZXJ0RHRvLnJlYWRlcklEfV8ke2FsZXJ0RHRvLmRldmljZUlEfV8ke2FsZXJ0RHRvLmV2ZW50RGVzY3JpcHRpb259YDtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgbGV0IGtleTogc3RyaW5nID0gJyc7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb25EdG8udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkFsZXJ0OlxuICAgICAgICBrZXkgPSB0aGlzLmFsZXJ0UEsobm90aWZpY2F0aW9uRHRvLmFsZXJ0LCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAga2V5ID0gYCR7Z3VpZH1fJHtub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaWR9YDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBrZXk7XG4gIH1cbn1cbiJdfQ==
|
|
554
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFbkgsT0FBTyxFQUFFLDhCQUE4QixFQUE2Qix1QkFBdUIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3BMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBRWpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RJLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBeUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSwyQkFBMkIsRUFBRSwwQkFB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QzsyREFLcEM7QUFHRDtJQURDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQzt3RUFHcEM7QUFHSztJQURMLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztvRUFlaEM7QUFHRDtJQURDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztvRUFPaEM7QUE3RU07SUFETixRQUFRLEVBQUU7c0NBR1Y7QUFwQlUsa0JBQWtCO0lBYjlCLEtBQUssQ0FBcUI7UUFDekIsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFO1lBQ1IsTUFBTSxFQUFFO2dCQUNOLGFBQWEsRUFBRSxFQUFFO2dCQUNqQiw4QkFBOEIsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHO2dCQUN4RCxVQUFVLEVBQUUsQ0FBQztnQkFDYixZQUFZLEVBQUUsS0FBSzthQUNwQjtZQUNELGdCQUFnQixFQUFFLEVBQUU7U0FDckI7S0FDRixDQUFDO0dBRVcsa0JBQWtCLENBMmpCOUI7U0EzakJZLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVO3dkQXdCVCxtQ0FBbUMsTUFVbkMseUJBQXlCLE1BY3pCLDBCQUEwQixNQWExQixpQkFBaUIsTUFPakIsOEJBQThCLE1BS3hCLDBCQUEwQixNQWlCaEMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jbG91ZC1jb25maXJtLWRpYWxvZy9jbG91ZC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vYWxlcnQtbm90aWZpY2F0aW9uL2FsZXJ0LW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ2xhc3MsIE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMsIE5vdGlmaWNhdGlvblZQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgVkVSU0lPTl85XzJfMCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBEZXZpY2VUeXBlc0FsZXJ0c01hcHBpbmcgfSBmcm9tICcuLi8uLi9lbnVtcy9hbGVydHMtZGV2aWNlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jbG91ZC1jb25maXJtLWRpYWxvZy1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBbGVydER0bywgQWxlcnRQcmVmZXJlbmNlc1NldHRpbmdzRHRvLCBBbGVydHNEZXZpY2VUeXBlLCBBcHBNb2R1bGUsIERldmljZVR5cGUsIER5bmFtaWNQcmljaW5nVHJpZ2dlckFjdGlvbiwgRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMsIEhhbmRsaW5nQWxlcnREdG8sIEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8sIE5vdGlmaWNhdGlvbkR0bywgTm90aWZpY2F0aW9uU2VydmljZVByb3h5LCBOb3RpZmljYXRpb25TZXZlcml0eSwgTm90aWZpY2F0aW9uVHlwZSwgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLCBQZXJtaXNzaW9uVHlwZSwgU2V0dGluZ3NDYXRlZ29yeSwgU3BhcmtTZXR0aW5nc0R0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFJhdGVTZXJ2aWNlUHJveHksIFpvbmVTZXJ2aWNlUHJveHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2VkZ2Utc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEJhc2VGYWNpbGl0eUNvbW1hbmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOdW1iZXJNYXAgfSBmcm9tICcuLi8uLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgaXNWZXJzaW9uR3JlYXRlclRoYW5FcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N1cHBvcnQtdmVyc2lvbi51dGlsJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZSB9IGZyb20gJy4uL2F1dGgvc2Vzc2lvbi5zdGF0ZSc7XG5pbXBvcnQgeyBGYWNpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9mYWNpbGl0eSc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgUGFya01hbmFnZXJTdGF0ZSB9IGZyb20gJy4uL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IFVwZGF0ZVVzZXJTZXR0aW5nc0FjdGlvbiB9IGZyb20gJy4uL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5hY3Rpb25zJztcbmltcG9ydCB7XG4gIENsZWFyTm90aWZpY2F0aW9uc0FjdGlvbiwgSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uLCBIYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nLCBMb2FkTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uLFxuICBTZXROb3RpZmljYXRpb25zQ29uZmlnQWN0aW9uLCBVcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb25cbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWxlcnRzUHJlZmVyZW5jZXNNYXAsIEFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwLCBGYWNpbGl0eVByZWZlcmVuY2VzTWFwLCBOb3RpZmljYXRpb25zQ29uZmlnIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25zTW9kZWwge1xuICBjb25maWc6IE5vdGlmaWNhdGlvbnNDb25maWc7XG4gIG5vdGlmaWNhdGlvbnNNYXA6IE51bWJlck1hcDxudW1iZXI+O1xufVxuXG5AU3RhdGU8Tm90aWZpY2F0aW9uc01vZGVsPih7XG4gIG5hbWU6ICdub3RpZmljYXRpb25zJyxcbiAgZGVmYXVsdHM6IHtcbiAgICBjb25maWc6IHtcbiAgICAgIG5vdGlmaWNhdGlvbnM6IFtdLFxuICAgICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Mb3csXG4gICAgICBiYWRnZVZhbHVlOiAwLFxuICAgICAgZGlzcGxheUJhZGdlOiBmYWxzZSxcbiAgICB9LFxuICAgIG5vdGlmaWNhdGlvbnNNYXA6IHt9LFxuICB9LFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZVByb3h5OiBOb3RpZmljYXRpb25TZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBhbGVydE5vdGlmaWNhdGlvblNlcnZpY2U6IEFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlOiBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZhY2lsaXR5Q29tbWFuZHNTZXJ2aWNlOiBCYXNlRmFjaWxpdHlDb21tYW5kc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWNpbGl0eVNlcnZpY2U6IEZhY2lsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlUHJveHk6IFpvbmVTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSByYXRlU2VydmljZVByb3h5OiBSYXRlU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGNvbmZpZyhzdGF0ZTogTm90aWZpY2F0aW9uc01vZGVsKTogTm90aWZpY2F0aW9uc0NvbmZpZyB7XG4gICAgcmV0dXJuIHN0YXRlLmNvbmZpZztcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKVxuICBvblVwZGF0ZVVzZXJBbGVydHNQcmVmZXJlbmNlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IFVwZGF0ZVVzZXJBbGVydHNQcmVmZXJlbmNlc0FjdGlvbikge1xuICAgIGNvbnN0IHNldHRpbmc6IFNwYXJrU2V0dGluZ3NEdG8gPSBuZXcgU3BhcmtTZXR0aW5nc0R0byh7XG4gICAgICBjYXRlZ29yeTogU2V0dGluZ3NDYXRlZ29yeS5BbGVydHNQcmVmZXJlbmNlcyxcbiAgICAgIHNldHRpbmdzSnNvbjogSlNPTi5zdHJpbmdpZnkoYWN0aW9uLnVzZXJOb3RpZmljYXRpb25zUHJlZmVyZW5jZXMpLFxuICAgIH0pO1xuXG4gICAgY3R4LmRpc3BhdGNoKG5ldyBVcGRhdGVVc2VyU2V0dGluZ3NBY3Rpb24oc2V0dGluZykpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkTm90aWZpY2F0aW9uc0FjdGlvbilcbiAgb25Mb2FkTm90aWZpY2F0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCB7IG1pbnV0ZXNBZ28gfTogTG9hZE5vdGlmaWNhdGlvbnNBY3Rpb24pIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zJCA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZVByb3h5LmdldEFsbE5vdGlmaWNhdGlvbnMobWludXRlc0Fnbyk7XG5cbiAgICByZXR1cm4gbm90aWZpY2F0aW9ucyQucGlwZSh0YXAoYXN5bmMgbm90aWZpY2F0aW9ucyA9PiB7XG4gICAgICBjb25zdCBwb3B1bGF0ZU5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdID0gYXdhaXQgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5wb3B1bGF0ZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9ucy5kYXRhKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNDb25maWc6IE5vdGlmaWNhdGlvbnNDb25maWcgPSB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKHBvcHVsYXRlTm90aWZpY2F0aW9ucyk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgY29uZmlnOiBub3RpZmljYXRpb25zQ29uZmlnLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhck5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uQ2xlYXJOb3RpZmljYXRpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFjdGlvbjogQ2xlYXJOb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IFtdLFxuICAgICAgICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LkxvdyxcbiAgICAgICAgYmFkZ2VWYWx1ZTogMCxcbiAgICAgICAgZGlzcGxheUJhZGdlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBub3RpZmljYXRpb25zTWFwOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0Tm90aWZpY2F0aW9uc0NvbmZpZ0FjdGlvbilcbiAgb25TZXRDb25maWdBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWN0aW9uOiBTZXROb3RpZmljYXRpb25zQ29uZmlnQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgY29uZmlnOiBhY3Rpb24ubm90aWZpY2F0aW9uc0NvbmZpZyxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZylcbiAgb25IYW5kbGVOb3RpZmljYXRpb25Gb3JDbG9zaW5nKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgbm90aWZpY2F0aW9uLCBndWlkIH06IEhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcpIHtcbiAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuICB9XG5cbiAgQEFjdGlvbihOb3RpZmljYXRpb25DaGFuZ2VBY3Rpb24pXG4gIGFzeW5jIG9uTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgbm90aWZpY2F0aW9uLCBndWlkIH06IE5vdGlmaWNhdGlvbkNoYW5nZUFjdGlvbikge1xuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5BbGVydDpcbiAgICAgICAgdGhpcy5vbkFsZXJ0Q2hhbmdlKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgdGhpcy5vbkR5YW5taWNQcmljaW5nQ29uZGl0aW9uQ2hhbmdlKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKVxuICBvbkhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCB7IG5vdGlmaWNhdGlvbkR0bywgZ3VpZCB9OiBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24pIHtcbiAgICBpZiAobm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uPy5oYW5kbGVkQnlVc2VySWQgPiAwKSB7XG4gICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkZvckNsb3NpbmcoY3R4LCBub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2Nlc3NOb3RpZmljYXRpb25VcGRhdGUoY3R4LCBub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NOb3RpZmljYXRpb25VcGRhdGUoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBoYW5kbGUgdXNlciAtIGFuZCBzYXZlIGluIHN0YXRlXG4gICAgbGV0IGV4aXN0Tm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG87XG4gICAgc3dpdGNoIChub3RpZmljYXRpb25EdG8udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICBleGlzdE5vdGlmaWNhdGlvbkR0byA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgZHluYW1pYy1wcmljaW5nLWNvbmZpcm1hdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkFsZXJ0OlxuICAgICAgICBleGlzdE5vdGlmaWNhdGlvbkR0byA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykgJiZcbiAgICAgICAgICB0aGlzLnN0YXRlTWF0Y2hlcyhub3RpZmljYXRpb24uYWxlcnQsIG5vdGlmaWNhdGlvbkR0by5hbGVydC5ldmVudFN0YXRlKSk7XG5cbiAgICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGxwci1taXNtYXRjaC1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbG9zdC10aWNrZXQtbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChleGlzdE5vdGlmaWNhdGlvbkR0bykge1xuICAgICAgZXhpc3ROb3RpZmljYXRpb25EdG8uaGFuZGxpbmdCeVVzZXIgPSBub3RpZmljYXRpb25EdG8uaGFuZGxpbmdCeVVzZXI7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhub3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENsb3NlIGNyaXRpY2FsIGFsZXJ0IG1vZGFsXG4gICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ3JpdGljYWxBbGVydERpYWxvZyhhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFsZXJ0VHlwZU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3JbYWxlcnQuZXZlbnREZXNjcmlwdGlvbl0pO1xuICAgIGNvbnN0IGNsb3VkQ29uZmlybURpYWxvZ0RhdGE6IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICBjb25maXJtTWVzc2FnZXM6IFt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY3JpdGljYWxfYWxlcnRfbWVzc2FnZSwge1xuICAgICAgICBhbGVydFR5cGVOYW1lXG4gICAgICB9KV0sXG4gICAgICBjb25maXJtVGl0bGU6IGFsZXJ0VHlwZU5hbWUsXG4gICAgICBva1RleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi55ZXMpLFxuICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhbmNlbCksXG4gICAgICBkZXZpY2U6IHtcbiAgICAgICAgY29tbUlkOiBhbGVydC5yZWFkZXJJRC50b1N0cmluZygpLFxuICAgICAgICBuYW1lOiBhbGVydC5kZXZpY2VOYW1lXG4gICAgICB9LFxuICAgICAgcGFya05hbWU6IGFsZXJ0LnBhcmtOYW1lLFxuICAgICAgem9uZU5hbWU6IGFsZXJ0LnBhcmtab25lTmFtZSxcbiAgICAgIG5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Dcml0aWNhbCxcbiAgICAgIG5vdGlmaWNhdGlvblNldmVyaXR5SW52ZXJ0OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnQsIGd1aWQpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW48Ym9vbGVhbj4oQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBwYW5lbENsYXNzOiBgdGItY3JpdGljYWwtbW9kYWwtJHthbGVydFBLfWAsXG4gICAgICBkYXRhOiBjbG91ZENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgaWQ6IGBub3RpZmljYXRpb24tbW9kYWwtJHthbGVydFBLfWAsXG4gICAgICBlbmFibGVkTWluaW1pemVkOiB0cnVlLFxuICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCB1c2VySW5mbyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2Vzc2lvblN0YXRlLnVzZXJJbmZvKTtcbiAgICAgICAgY29uc3QgaGFuZGxlQWxlcnQ6IEhhbmRsaW5nQWxlcnREdG8gPSBuZXcgSGFuZGxpbmdBbGVydER0byh7XG4gICAgICAgICAgZ3VpZDogZ3VpZCxcbiAgICAgICAgICBwYXJrSWQ6IGFsZXJ0LnBhcmtJZCxcbiAgICAgICAgICBwYXJrTmFtZTogYWxlcnQucGFya05hbWUsXG4gICAgICAgICAgZGV2aWNlSWQ6IGFsZXJ0LmRldmljZUlELFxuICAgICAgICAgIGV2ZW50RGVzY3JpcHRpb246IGFsZXJ0LmV2ZW50RGVzY3JpcHRpb24sXG4gICAgICAgICAgdXNlckZ1bGxOYW1lOiB1c2VySW5mby5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBpZDogYWxlcnQuaWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2VQcm94eS5oYW5kbGVBbGVydE5vdGlmaWNhdGlvbihoYW5kbGVBbGVydCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS50cmlnZ2VyQWxlcnRUb2FzdEV2ZW50KHJlcy5kYXRhIHx8IGFsZXJ0LCBndWlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbkRpYWxvZyhub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xvdWRDb25maXJtRGlhbG9nRGF0YTogQ2xvdWRDb25maXJtRGlhbG9nRGF0YSA9IHtcbiAgICAgIGNvbmZpcm1NZXNzYWdlczogW3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfYWxlcnRfbWVzc2FnZSldLFxuICAgICAgY29uZmlybVRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX2FsZXJ0X3RpdGxlKSxcbiAgICAgIGNvbmZpcm1TdWJUaXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19hbGVydF9zdWJfdGl0bGUsIHsgY29uZGl0aW9uTmFtZTogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmNvbmRpdGlvbk5hbWUgfSksXG4gICAgICBva1RleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi55ZXMpLFxuICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhbmNlbCksXG4gICAgfTtcblxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb24sIGd1aWQpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW48Ym9vbGVhbj4oQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBwYW5lbENsYXNzOiBgdGItZHluYW1pYy1wcmljaW5nLWNvbmRpdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvbi5pZH1gLFxuICAgICAgZGF0YTogY2xvdWRDb25maXJtRGlhbG9nRGF0YSxcbiAgICAgIGlkOiBgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCxcbiAgICAgIGVuYWJsZWRNaW5pbWl6ZWQ6IHRydWUsXG4gICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudXNlckluZm8pO1xuICAgICAgICBjb25zdCBoYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvOiBIYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvID0gbmV3IEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8oe1xuICAgICAgICAgIGNsb3VkUGFya0lkOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uY2xvdWRQYXJrSWQsXG4gICAgICAgICAgdXNlckZ1bGxOYW1lOiB1c2VySW5mby5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBpZDogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlUHJveHkuaGFuZGxlRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb24oaGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bykuc3Vic2NyaWJlKGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgY29uc3QgZHBjID0gcmVzLmRhdGEgfHwgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgICAgICAgIGNvbnN0IHJhdGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJhdGVTZXJ2aWNlUHJveHkuZ2V0UmF0ZUJ5SWQoZHBjLnJhdGVJZCwgZHBjLmd1aWQpKTtcbiAgICAgICAgICBkcGMucmF0ZU5hbWUgPSByYXRlPy5kYXRhPy5uYW1lO1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckR5bmFtaWNQcmljaW5nVG9hc3RFdmVudChyZXMuZGF0YSB8fCBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUFsZXJ0KGN0eDogU3RhdGVDb250ZXh0PE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5hbGVydE5vdGlmaWNhdGlvblNlcnZpY2UuZGlzcGxheUFsZXJ0KGFsZXJ0LCBndWlkKTtcbiAgICBpZiAobm90aWZpY2F0aW9uKSB7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgICBjb25zdCBhbGVydFBLID0gdGhpcy5hbGVydFBLKGFsZXJ0LCBndWlkKTtcbiAgICAgIG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS10gPSBub3RpZmljYXRpb24udG9hc3RJZDtcblxuICAgICAgbm90aWZpY2F0aW9uLm9uVGFwLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS50cmlnZ2VyQWxlcnRUb2FzdEV2ZW50KGFsZXJ0LCBndWlkKTtcbiAgICAgIH0pO1xuXG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRGlhbG9nQnlJZChkaWFsb2dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb3BlbkRpYWxvZ3MgPSB0aGlzLm1vZGFsU2VydmljZS5nZXRPcGVuRGlhbG9ncygpO1xuICAgIGNvbnN0IGRpYWxvZyA9IG9wZW5EaWFsb2dzLmZpbmQoZGlhbG9nID0+IGRpYWxvZy5pZCA9PT0gZGlhbG9nSWQpO1xuXG4gICAgaWYgKGRpYWxvZykge1xuICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBbGVydEZvckNsb3NpbmcoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcbiAgICBjb25zdCBhbGVydFBLID0gdGhpcy5hbGVydFBLKGFsZXJ0RHRvLCBndWlkKTtcblxuICAgIC8vIFdoZXRoZXIgd2Ugd2FudCB0byBjbG9zZSBvciBoYXZlIGEgZHVwbGljYXRlIGFsZXJ0XG4gICAgY29uc3QgYWxlcnRFeGlzdHMgPSBub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uID0+XG4gICAgICB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIGFsZXJ0UEspICYmIHRoaXMuc3RhdGVNYXRjaGVzKG5vdGlmaWNhdGlvbi5hbGVydCwgYWxlcnREdG8uZXZlbnRTdGF0ZSlcbiAgICApO1xuICAgIGlmICghYWxlcnREdG8uZXZlbnRTdGF0ZSB8fCBhbGVydEV4aXN0cykge1xuICAgICAgY29uc3QgdG9hc3RJZCA9IG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS107XG4gICAgICB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5jbGVhclRvYXN0cyh0b2FzdElkKTtcbiAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW2FsZXJ0UEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT4gIW5vdGlmaWNhdGlvbi5hbGVydCB8fCAhKHRoaXMuYWxlcnRQSyhub3RpZmljYXRpb24uYWxlcnQsIG5vdGlmaWNhdGlvbi5ndWlkKSA9PT0gYWxlcnRQSykpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcoZmlsdGVyZWROb3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDbG9zZSByZWxldmFudCBvcGVuIG1vZGFsc1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYG5vdGlmaWNhdGlvbi1tb2RhbC0ke2FsZXJ0UEt9YCk7XG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbHByLW1pc21hdGNoLW1vZGFsLSR7YWxlcnRQS31gKTtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBsb3N0LXRpY2tldC1tb2RhbC0ke2FsZXJ0UEt9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUcmlnZ2VyZWREeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbihjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gbm90aWZpY2F0aW9uLmd1aWQgPT09IG5vdGlmaWNhdGlvbkR0by5ndWlkICYmXG4gICAgICBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24/LmNsb3VkUGFya0lkID09PSBub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uY2xvdWRQYXJrSWQpO1xuICAgIGlmIChub3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25FeGlzdHMsIGd1aWQpO1xuICAgICAgY29uc3QgdG9hc3RJZCA9IG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuICAgICAgdGhpcy5hbGVydE5vdGlmaWNhdGlvblNlcnZpY2UuY2xlYXJUb2FzdHModG9hc3RJZCk7XG4gICAgICBkZWxldGUgbm90aWZpY2F0aW9uc01hcFtub3RpZmljYXRpb25QS107XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PlxuICAgICAgICAhKHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24uZ3VpZCkgPT09IG5vdGlmaWNhdGlvblBLKSk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhmaWx0ZXJlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENsb3NlIHJlbGV2YW50IG9wZW4gbW9kYWxzXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgZHluYW1pYy1wcmljaW5nLWNvbmZpcm1hdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHsgLi4uY3R4LmdldFN0YXRlKCkuY29uZmlnIH0ubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgIGlmIChub3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgIGNvbnN0IHRvYXN0SWQgPSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT5cbiAgICAgICAgISh0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmd1aWQpID09PSBub3RpZmljYXRpb25QSykpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBjb25maWc6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuY29udmVydE5vdGlmaWNhdGlvbnNUb05vdGlmaWNhdGlvbnNDb25maWcoZmlsdGVyZWROb3RpZmljYXRpb25zKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDbG9zZSByZWxldmFudCBvcGVuIG1vZGFsc1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGR5bmFtaWMtcHJpY2luZy1jb25maXJtYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBscHItbWlzbWF0Y2gtbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBsb3N0LXRpY2tldC1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VUcmlnZ2VyZWREeW5hbWljUHJpY2luZ0NvbmRpdGlvbnMoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLmNvbmZpZyB9Lm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IHBhcmtJZCA9IG5vdGlmaWNhdGlvbkR0bz8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24/LnBhcmtJZDtcblxuICAgIC8vIGZpbmQgYWxsIHRoZSBkeW5hbWljIHByaWNpbmcgdHJpZ2dlcmVkIGNvbmRpdGlvbnMgb2Ygc2FtZSBndWlkIGFuZCBwYXJrSWQgdG8gYmUgY2xvc2VcbiAgICBjb25zdCBkeW5hbWljUHJpY2luZ05vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiAhIW5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbiAmJlxuICAgICAgbm90aWZpY2F0aW9uLmd1aWQgPT09IGd1aWQgJiYgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtJZCA9PT0gcGFya0lkKTtcblxuICAgIGlmIChkeW5hbWljUHJpY2luZ05vdGlmaWNhdGlvbkV4aXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGRwIG9mIGR5bmFtaWNQcmljaW5nTm90aWZpY2F0aW9uRXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhkcCwgZ3VpZCk7XG4gICAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcblxuICAgICAgICAvLyBDbG9zZSByZWxldmFudCBvcGVuIG1vZGFsc1xuICAgICAgICB0aGlzLmNsb3NlRGlhbG9nQnlJZChgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBkeW5hbWljLXByaWNpbmctY29uZmlybWF0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiAhbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uIHx8ICEobm90aWZpY2F0aW9uLmd1aWQgPT09IGd1aWQgJiYgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtJZCA9PT0gcGFya0lkKSk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhmaWx0ZXJlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93UmF0ZUF1dG9tYXRpY1N3aXRjaFRvYXN0TWVzc2FnZShub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bykge1xuICAgIGNvbnN0IGRwYyA9IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICBjb25zdCByYXRlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yYXRlU2VydmljZVByb3h5LmdldFJhdGVCeUlkKGRwYy5yYXRlSWQsIGRwYy5ndWlkKSk7XG4gICAgZHBjLnJhdGVOYW1lID0gcmF0ZT8uZGF0YT8ubmFtZTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuZmFjaWxpdHlDb21tYW5kc1NlcnZpY2UuZ2V0Q29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZ01lc3NhZ2VzKEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlNldEFjdGl2ZVJhdGUsIG51bGwsIGRwYyk7XG4gICAgY29uc3QgY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnID0ge1xuICAgICAgbWVzc2FnZXMsXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFjaWxpdHlfcmVtb3RlX2NvbW1hbmRfc2V0X2FjdGl2ZV9yYXRlKSxcbiAgICAgIGhQb3NpdGlvbjogTm90aWZpY2F0aW9uSFBvc2l0aW9ucy5SaWdodCxcbiAgICAgIHZQb3NpdGlvbjogTm90aWZpY2F0aW9uVlBvc2l0aW9ucy5Cb3R0b20sXG4gICAgICBkdXJhdGlvbjogNyAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgY2xhc3M6IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcy5TdWNjZXNzLFxuICAgICAgdHlwZTogQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUuU3VjY2Vzc1xuICAgIH07XG5cbiAgICB0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLnNob3coY29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hvd1JhdGVGYWxsZW5CYWNrVG9EZWZhdWx0UmF0ZVRvYXN0TWVzc2FnZShub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bykge1xuICAgIGNvbnN0IGRwYyA9IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfcmV2ZXJ0ZWRfdG9fZGVmYXVsdF9yYXRlKTtcbiAgICBjb25zdCBzdWJUaXRsZSA9IGAke2RwYy5wYXJraW5nTG90TmFtZX0ke2RwYy56b25lPy5uYW1lID8gJyB8ICcgKyBkcGMuem9uZT8ubmFtZSA6ICcnfWA7XG4gICAgY29uc3QgY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnID0ge1xuICAgICAgbWVzc2FnZXM6IFt7XG4gICAgICAgIHZhbHVlOiB0aXRsZSxcbiAgICAgICAgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLnRpdGxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHN1YlRpdGxlLFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3Muc3ViVGl0bGUsXG4gICAgICB9XSxcbiAgICAgIGNvbW1hbmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWNpbGl0eV9yZW1vdGVfY29tbWFuZF9zZXRfYWN0aXZlX3JhdGUpLFxuICAgICAgaFBvc2l0aW9uOiBOb3RpZmljYXRpb25IUG9zaXRpb25zLlJpZ2h0LFxuICAgICAgdlBvc2l0aW9uOiBOb3RpZmljYXRpb25WUG9zaXRpb25zLkJvdHRvbSxcbiAgICAgIGR1cmF0aW9uOiA3ICogT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICBjbGFzczogQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLlN1Y2Nlc3MsXG4gICAgICB0eXBlOiBDb21tYW5kTm90aWZpY2F0aW9uVHlwZS5TdWNjZXNzXG4gICAgfTtcblxuICAgIHRoaXMuY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyhjb25maWcsIENvbW1hbmROb3RpZmljYXRpb25Db21wb25lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsZXJ0RW5hYmxlZEZvclVzZXIoYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaXNBbGVydEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgY29uc3QgdXNlclNldHRpbmdzID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUubWFwcGVkVXNlclNldHRpbmdzKTtcbiAgICBjb25zdCB1c2VyQWxlcnRzUHJlZmVyZW5jZXM6IEFsZXJ0UHJlZmVyZW5jZXNTZXR0aW5nc0R0byA9IHVzZXJTZXR0aW5ncy5nZXQoU2V0dGluZ3NDYXRlZ29yeS5BbGVydHNQcmVmZXJlbmNlcyk7XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBubyB1c2VyQWxlcnRzUHJlZmVyZW5jZXMgd2UgZG9uJ3QgZmlsdGVyIGF0IGFsbFxuICAgIGlmICghIXVzZXJBbGVydHNQcmVmZXJlbmNlcykge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgZW5hYmxlZCB0aGUgbm90aWZpY2F0aW9uc1xuICAgICAgLy8gRWxzZSB0aGUgdXNlciBkaXNhYmxlZCBhbGwgdGhlIG5vdGlmaWNhdGlvbnNcbiAgICAgIGlmICh1c2VyQWxlcnRzUHJlZmVyZW5jZXMuaXNFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHsgc21hcnRwYXJrOiB7IHZlcnNpb25zIH0gfSkgPT4gdmVyc2lvbnNbZ3VpZF0pO1xuICAgICAgICBjb25zdCBpc0FsZXJ0RmlsdGVyVmVyc2lvblN1cHBvcnRlZCA9IGlzVmVyc2lvbkdyZWF0ZXJUaGFuRXF1YWwoc3BhcmtWZXJzaW9uLCBWRVJTSU9OXzlfMl8wKTtcblxuICAgICAgICAvLyBJZiB0aGUgdmVyc2lvbiBpcyA5LjEuMCBvciBiZWxvdywgYWxsIG5vdGlmaWNhdGlvbnMgYXJlIGVuYWJsZWRcbiAgICAgICAgLy8gSWYgdGhlIHZlcnNpb24gaXMgOS4yLjAgYW5kIGFib3ZlLCB3ZSBmaWx0ZXIgYnkgdGhlIHByZWZlcmVuY2VzXG4gICAgICAgIGlzQWxlcnRFbmFibGVkID0gIWlzQWxlcnRGaWx0ZXJWZXJzaW9uU3VwcG9ydGVkIHx8IHRoaXMuaXNBbGVydEVuYWJsZWRJblByZWZlcmVuY2VzKGFsZXJ0LCBndWlkLCB1c2VyQWxlcnRzUHJlZmVyZW5jZXMucHJlZmVyZW5jZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNBbGVydEVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNBbGVydEVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzQWxlcnRFbmFibGVkSW5QcmVmZXJlbmNlcyhhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZywgdXNlckFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwOiBBbGVydHNQcmVmZXJlbmNlc01hcCkge1xuICAgIGxldCBpc0FsZXJ0RW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvLyBJZiB3ZSBoYXZlIGFueSBmYWNpbGl0eSBzZWxlY3RlZCwgd2UgY29udGludWUgdG8gY2hlY2tcbiAgICAvLyBFbHNlIHdlIGFsbG93IGFsbCB0byBwYXNzIGFzIHRoZSB1c2VyIGRpZG4ndCBzZXQgcHJlZmVyZW5jZXMgeWV0XG4gICAgaWYgKE9iamVjdC5rZXlzKHVzZXJBbGVydFR5cGVQcmVmZXJlbmNlc01hcCkubGVuZ3RoKSB7XG4gICAgICBpc0FsZXJ0RW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgICAvLyBHZXRzIHRoZSB0cmVlSWQgb2YgdGhlIHRlbmFudCAtIEluIGNhc2UgdGhlIHVzZXIgc2VsZWN0ZWQgXCJBbGwgVGVuYW50IFBhcmtpbmcgTG90c1wiXG4gICAgICBjb25zdCB0ZW5hbnRUcmVlSWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS50ZW5hbnRJbmZvKT8udHJlZUlkO1xuXG4gICAgICAvLyBHZXRzIHRoZSB0cmVlIHBhcmsgSWQgb2YgdGhlIGFsZXJ0XG4gICAgICBjb25zdCBhbGVydFRyZWVQYXJrSWQgPSB0aGlzLmdldENsb3VkUGFya0lkKGFsZXJ0LCBndWlkKTtcblxuICAgICAgLy8gV2UgR2V0IHRoZSBzZXR0aW5nIG9mIHRoZSBQYXJrLCBQYXJlbnRQYXJrIG9yIFBhcmtzVHJlZVJvb3RcbiAgICAgIGNvbnN0IGZhY2lsaXR5UHJlZmVyZW5jZXNNYXA6IEZhY2lsaXR5UHJlZmVyZW5jZXNNYXAgPSB1c2VyQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXBbYWxlcnRUcmVlUGFya0lkXSB8fCB1c2VyQWxlcnRUeXBlUHJlZmVyZW5jZXNNYXBbdGVuYW50VHJlZUlkXTtcblxuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGZhY2lsaXR5IHdhcyBzZWxlY3RlZFxuICAgICAgaWYgKGZhY2lsaXR5UHJlZmVyZW5jZXNNYXApIHtcbiAgICAgICAgY29uc3QgYWxlcnRUeXBlUHJlZmVyZW5jZXNNYXA6IEFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwID0gZmFjaWxpdHlQcmVmZXJlbmNlc01hcFthbGVydC5ldmVudERlc2NyaXB0aW9uXTtcblxuICAgICAgICAvLyBXZSBjaGVjayBpZiB0aGUgYWxlcnQgdHlwZSB3YXMgc2VsZWN0ZWRcbiAgICAgICAgaWYgKGFsZXJ0VHlwZVByZWZlcmVuY2VzTWFwKSB7XG4gICAgICAgICAgY29uc3QgYWxlcnREZXZpY2VUeXBlOiBBbGVydHNEZXZpY2VUeXBlID0gdGhpcy5nZXRBbGVydHNEZXZpY2VUeXBlKGFsZXJ0KTtcblxuICAgICAgICAgIC8vIFdlIGNoZWNrIHRoZSBpZiB0aGUgZGV2aWNlIHR5cGUgd2FzIHNlbGVjdGVkXG4gICAgICAgICAgaXNBbGVydEVuYWJsZWQgPSBhbGVydFR5cGVQcmVmZXJlbmNlc01hcFthbGVydERldmljZVR5cGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQWxlcnRFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGVydHNEZXZpY2VUeXBlKGFsZXJ0OiBBbGVydER0byk6IEFsZXJ0c0RldmljZVR5cGUge1xuICAgIGxldCBhbGVydERldmljZVR5cGU6IEFsZXJ0c0RldmljZVR5cGU7XG4gICAgY29uc3QgYWxlcnRzRGV2aWNlVHlwZTogQWxlcnRzRGV2aWNlVHlwZVtdID0gRGV2aWNlVHlwZXNBbGVydHNNYXBwaW5nLmdldChhbGVydC5kZXZpY2VUeXBlKTtcblxuICAgIHN3aXRjaCAoYWxlcnQuZGV2aWNlVHlwZSkge1xuICAgICAgY2FzZSBEZXZpY2VUeXBlLkNhc2g6XG4gICAgICAgIGFsZXJ0RGV2aWNlVHlwZSA9IGFsZXJ0LnJlYWRlcklEID09PSAwID8gQWxlcnRzRGV2aWNlVHlwZS5NYXN0ZXIgOiBBbGVydHNEZXZpY2VUeXBlLkNhc2hSZWdpc3RlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhbGVydERldmljZVR5cGUgPSBhbGVydHNEZXZpY2VUeXBlPy5bMF07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBhbGVydERldmljZVR5cGU7XG4gIH1cblxuICBwcml2YXRlIG9uRHlhbm1pY1ByaWNpbmdDb25kaXRpb25DaGFuZ2UoY3R4OiBTdGF0ZUNvbnRleHQ8Tm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uRm9yQ2xvc2luZyhjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgdGhpcy5oYW5kbGVUcmlnZ2VyZWREeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbihjdHgsIG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG5cbiAgICBpZiAobm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlzVHJpZ2dlcmVkKSB7XG4gICAgICAvLyBXZSBkbyBub3Qgb3BlbiB0aGUgbm90aWZpY2F0aW9uIGlmIHVzZXIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uXG4gICAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gdGhpcy5mYWNpbGl0eVNlcnZpY2UuaGFzUGVybWlzc2lvblR5cGVCeVBhcmsoXG4gICAgICAgIFBlcm1pc3Npb25UeXBlLkxvdENvbmZpZ3VyYXRpb25EeW5hbWljUHJpY2luZywgbm90aWZpY2F0aW9uLmd1aWQsIG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5wYXJraW5nTG90SWRcbiAgICAgICk7XG5cbiAgICAgIC8vIFdlIGRvIG5vdCBvcGVuIHRoZSBub3RpZmljYXRpb24gaW4gbW9iaWxlIG1vZGVcbiAgICAgIGNvbnN0IGlzTW9iaWxlQXBwTW9kZSA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICAgIGNvbnN0IGlzQ2NNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpID09PSBBcHBNb2R1bGUuQ2M7XG4gICAgICBpZiAoIWlzTW9iaWxlQXBwTW9kZSAmJiBpc0NjTW9kdWxlICYmIGhhc1Blcm1pc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcGVuRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb25EaWFsb2cobm90aWZpY2F0aW9uLCBndWlkKTtcblxuICAgICAgICAvLyBQdXNoIHRoZSBuZXcgbm90aWZpY2F0aW9uIHRvIHRoZSBhcnJheSBhbmQgc2F2ZSBpbiBzdGF0ZVxuICAgICAgICBub3RpZmljYXRpb24udGltZUFnb0luU2Vjb25kcyA9IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0VGltZUFnb0luU2Vjb25kcyhub3RpZmljYXRpb24pO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuICAgICAgICBub3RpZmljYXRpb25zLnVuc2hpZnQobm90aWZpY2F0aW9uKTtcblxuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgY29uZmlnOiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmNvbnZlcnROb3RpZmljYXRpb25zVG9Ob3RpZmljYXRpb25zQ29uZmlnKG5vdGlmaWNhdGlvbnMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5pc0FjdGl2YXRlZCkge1xuICAgICAgLy8gaGFuZGxlIG5vdGlmaWNhdGlvbiBpbmRpY2F0aW5nIHRoZSByYXRlIGhhcyBmYWxsZW4gYmFjayB0byB0aGUgZGVmYXVsdCByYXRlXG4gICAgICB0aGlzLnNob3dSYXRlRmFsbGVuQmFja1RvRGVmYXVsdFJhdGVUb2FzdE1lc3NhZ2Uobm90aWZpY2F0aW9uKS50aGVuKCk7XG4gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24udHJpZ2dlckFjdGlvbiA9PT0gRHluYW1pY1ByaWNpbmdUcmlnZ2VyQWN0aW9uLkF1dG9tYXRpY1N3aXRjaFJhdGUpIHtcbiAgICAgIC8vIGhhbmRsZSBub3RpZmljYXRpb24gaW5kaWNhdGluZyB0aGUgcmF0ZSBoYXMgYXV0b21hdGljIHN3aXRjaFxuICAgICAgdGhpcy5zaG93UmF0ZUF1dG9tYXRpY1N3aXRjaFRvYXN0TWVzc2FnZShub3RpZmljYXRpb24pLnRoZW4oKTtcbiAgICAgIHRoaXMuY2xvc2VUcmlnZ2VyZWREeW5hbWljUHJpY2luZ0NvbmRpdGlvbnMoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25BbGVydENoYW5nZShjdHg6IFN0YXRlQ29udGV4dDxOb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWxlcnQgPSBub3RpZmljYXRpb24/LmFsZXJ0O1xuICAgIGlmIChhbGVydCAmJiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmlzQWxlcnRUeXBlRGVmaW5lZChhbGVydC5ldmVudERlc2NyaXB0aW9uKSkge1xuICAgICAgdGhpcy5oYW5kbGVBbGVydEZvckNsb3NpbmcoY3R4LCBhbGVydCwgZ3VpZCk7XG5cbiAgICAgIGlmIChhbGVydC5ldmVudFN0YXRlICYmIHRoaXMuaXNBbGVydEVuYWJsZWRGb3JVc2VyKGFsZXJ0LCBndWlkKSkge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0geyAuLi5jdHguZ2V0U3RhdGUoKS5jb25maWcgfS5ub3RpZmljYXRpb25zO1xuXG4gICAgICAgIGlmICghYWxlcnQuZGV2aWNlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IHBhcmtEZXZpY2VzID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChQYXJrTWFuYWdlclN0YXRlLmRldmljZXMpO1xuICAgICAgICAgIGFsZXJ0LmRldmljZU5hbWUgPSBwYXJrRGV2aWNlcz8uZmluZChkID0+IGQuaWQgPT09IGFsZXJ0LmRldmljZUlEKT8ubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYWxlcnQucGFya05hbWUpIHtcbiAgICAgICAgICBjb25zdCBsb3RzTWFwID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSlbZ3VpZF07XG4gICAgICAgICAgaWYgKGxvdHNNYXApIHtcbiAgICAgICAgICAgIGFsZXJ0LnBhcmtOYW1lID0gbG90c01hcFthbGVydC5wYXJrSWRdPy5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFsZXJ0LnBhcmtab25lTmFtZSA9IFwiXCI7XG5cbiAgICAgICAgLy8gV2UgZG8gbm90IG9wZW4gdGhlIG5vdGlmaWNhdGlvbiBpbiBtb2JpbGUgbW9kZVxuICAgICAgICBjb25zdCBpc01vYmlsZUFwcE1vZGUgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgICAgIGNvbnN0IGlzQ2NNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpID09PSBBcHBNb2R1bGUuQ2M7XG4gICAgICAgIGlmICghaXNNb2JpbGVBcHBNb2RlICYmIGlzQ2NNb2R1bGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFsZXJ0LmV2ZW50RGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxPU1RfVElDS0VUOlxuICAgICAgICAgICAgY2FzZSBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IuTFJQX05PVF9NQVRDSDpcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQ3JpdGljYWxBbGVydERpYWxvZyhhbGVydCwgZ3VpZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5QWxlcnQoY3R4LCBhbGVydCwgZ3VpZCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFB1c2ggdGhlIG5ldyBhbGVydCB0byB0aGUgYXJyYXkgYW5kIHNhdmUgaW4gc3RhdGVcbiAgICAgICAgbm90aWZpY2F0aW9uLnRpbWVBZ29JblNlY29uZHMgPSB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldFRpbWVBZ29JblNlY29uZHMobm90aWZpY2F0aW9uKTtcbiAgICAgICAgbm90aWZpY2F0aW9ucy51bnNoaWZ0KG5vdGlmaWNhdGlvbik7XG5cbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIGNvbmZpZzogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5jb252ZXJ0Tm90aWZpY2F0aW9uc1RvTm90aWZpY2F0aW9uc0NvbmZpZyhub3RpZmljYXRpb25zKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbG91ZFBhcmtJZChhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgYWxlcnRQYXJrSWQgPSBhbGVydC5tdWx0aVBhcmtQYXJlbnRJZCA+IDAgPyBhbGVydC5tdWx0aVBhcmtQYXJlbnRJZCA6IGFsZXJ0LnBhcmtJZDtcbiAgICBjb25zdCBsb3RzTWFwID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSlbZ3VpZF07XG4gICAgcmV0dXJuIGxvdHNNYXBbYWxlcnRQYXJrSWRdPy5jbG91ZElkO1xuICB9XG5cbiAgcHJpdmF0ZSBwa01hdGNoZXMgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIG5vdGlmaWNhdGlvblBLOiBzdHJpbmcpID0+IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvLCBub3RpZmljYXRpb25EdG8uZ3VpZCkgPT09IG5vdGlmaWNhdGlvblBLO1xuICBwcml2YXRlIHN0YXRlTWF0Y2hlcyA9IChhbGVydER0bzogQWxlcnREdG8sIGV2ZW50U3RhdGU6IGJvb2xlYW4pID0+IGFsZXJ0RHRvLmV2ZW50U3RhdGUgPT09IGV2ZW50U3RhdGU7XG4gIHByaXZhdGUgYWxlcnRQSyA9IChhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBgJHtndWlkfV8ke2FsZXJ0RHRvLnBhcmtJZH1fJHthbGVydER0by5yZWFkZXJJRH1fJHthbGVydER0by5kZXZpY2VJRH1fJHthbGVydER0by5ldmVudERlc2NyaXB0aW9ufWA7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGxldCBrZXk6IHN0cmluZyA9ICcnO1xuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uRHRvLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5BbGVydDpcbiAgICAgICAga2V5ID0gdGhpcy5hbGVydFBLKG5vdGlmaWNhdGlvbkR0by5hbGVydCwgZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICAgIGtleSA9IGAke2d1aWR9XyR7bm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlkfWA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmxvZyhcInVuc3VwcG9ydGVkIG5vdGlmaWNhdGlvbiB0eXBlXCIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4ga2V5O1xuICB9XG59XG4iXX0=
|
|
@@ -39,10 +39,10 @@ import { saveAs } from 'file-saver';
|
|
|
39
39
|
import * as i4 from '@angular/material/legacy-tooltip';
|
|
40
40
|
import { MatLegacyTooltipModule } from '@angular/material/legacy-tooltip';
|
|
41
41
|
import * as mixpanel from 'mixpanel-browser';
|
|
42
|
+
import { PublicClientApplication, BrowserCacheLocation, LogLevel, InteractionType } from '@azure/msal-browser';
|
|
43
|
+
import CryptoJS from 'crypto-js';
|
|
42
44
|
import * as i4$1 from '@angular/material/core';
|
|
43
45
|
import { MatRippleModule } from '@angular/material/core';
|
|
44
|
-
import CryptoJS from 'crypto-js';
|
|
45
|
-
import { PublicClientApplication, BrowserCacheLocation, LogLevel, InteractionType } from '@azure/msal-browser';
|
|
46
46
|
import { MatDialogConfig } from '@angular/material/dialog';
|
|
47
47
|
|
|
48
48
|
class AutofocusDirective {
|
|
@@ -90447,7 +90447,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
90447
90447
|
}], ctorParameters: function () { return []; } });
|
|
90448
90448
|
|
|
90449
90449
|
class AlertNotificationService extends BaseNotificationService {
|
|
90450
|
-
constructor(ngToastrService, appRef, tenantService, translateService, componentFactoryResolver, appSettingsService, injector) {
|
|
90450
|
+
constructor(ngToastrService, appRef, tenantService, translateService, componentFactoryResolver, appSettingsService, notificationsService, injector) {
|
|
90451
90451
|
super(ngToastrService, appRef);
|
|
90452
90452
|
this.ngToastrService = ngToastrService;
|
|
90453
90453
|
this.appRef = appRef;
|
|
@@ -90455,10 +90455,11 @@ class AlertNotificationService extends BaseNotificationService {
|
|
|
90455
90455
|
this.translateService = translateService;
|
|
90456
90456
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
90457
90457
|
this.appSettingsService = appSettingsService;
|
|
90458
|
+
this.notificationsService = notificationsService;
|
|
90458
90459
|
this.injector = injector;
|
|
90459
90460
|
this.openAlertToastIds = [];
|
|
90460
90461
|
}
|
|
90461
|
-
displayAlert(alert) {
|
|
90462
|
+
displayAlert(alert, guid) {
|
|
90462
90463
|
const notificationSeverity = this.appSettingsService.alertMapping[PeripheralEquipmentError$1[alert.eventDescription]];
|
|
90463
90464
|
const alertTitleMessage = this.translateService.instant(PeripheralEquipmentError$1[alert.eventDescription]);
|
|
90464
90465
|
const alertSubTitleMessage = this.translateService.instant(Localization.alerts_message_sub_title, {
|
|
@@ -90505,6 +90506,7 @@ class AlertNotificationService extends BaseNotificationService {
|
|
|
90505
90506
|
}
|
|
90506
90507
|
});
|
|
90507
90508
|
alertNotification.onTap.pipe(take$1(1)).subscribe(() => {
|
|
90509
|
+
this.notificationsService.triggerAlertToastEvent(alert, guid);
|
|
90508
90510
|
this.ngToastrService.remove(alertNotification.toastId);
|
|
90509
90511
|
});
|
|
90510
90512
|
return alertNotification;
|
|
@@ -90541,12 +90543,12 @@ class AlertNotificationService extends BaseNotificationService {
|
|
|
90541
90543
|
this.componentRef.destroy();
|
|
90542
90544
|
}
|
|
90543
90545
|
}
|
|
90544
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService, deps: [{ token: i1$6.ToastrService }, { token: i0.ApplicationRef }, { token: TenantService }, { token: i1$4.TranslateService }, { token: i0.ComponentFactoryResolver }, { token: AppSettingsService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
90546
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService, deps: [{ token: i1$6.ToastrService }, { token: i0.ApplicationRef }, { token: TenantService }, { token: i1$4.TranslateService }, { token: i0.ComponentFactoryResolver }, { token: AppSettingsService }, { token: NotificationsService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
90545
90547
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService }); }
|
|
90546
90548
|
}
|
|
90547
90549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertNotificationService, decorators: [{
|
|
90548
90550
|
type: Injectable
|
|
90549
|
-
}], ctorParameters: function () { return [{ type: i1$6.ToastrService }, { type: i0.ApplicationRef }, { type: TenantService }, { type: i1$4.TranslateService }, { type: i0.ComponentFactoryResolver }, { type: AppSettingsService }, { type: i0.Injector }]; } });
|
|
90551
|
+
}], ctorParameters: function () { return [{ type: i1$6.ToastrService }, { type: i0.ApplicationRef }, { type: TenantService }, { type: i1$4.TranslateService }, { type: i0.ComponentFactoryResolver }, { type: AppSettingsService }, { type: NotificationsService }, { type: i0.Injector }]; } });
|
|
90550
90552
|
|
|
90551
90553
|
// Module
|
|
90552
90554
|
|
|
@@ -97469,7 +97471,7 @@ let NotificationsState = class NotificationsState {
|
|
|
97469
97471
|
});
|
|
97470
97472
|
}
|
|
97471
97473
|
displayAlert(ctx, alert, guid) {
|
|
97472
|
-
const notification = this.alertNotificationService.displayAlert(alert);
|
|
97474
|
+
const notification = this.alertNotificationService.displayAlert(alert, guid);
|
|
97473
97475
|
if (notification) {
|
|
97474
97476
|
const notificationsMap = { ...ctx.getState().notificationsMap };
|
|
97475
97477
|
const alertPK = this.alertPK(alert, guid);
|