@tiba-spark/client-shared-lib 26.2.0-157 → 26.2.0-161
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/guards/sub-module-guard.mjs +2 -2
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +15 -12
- package/esm2022/libraries/service-proxy/identity-service-proxies.mjs +1592 -11
- package/esm2022/libraries/services/smartpark.service.mjs +65 -7
- package/fesm2022/tiba-spark-client-shared-lib.mjs +1973 -332
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts +4 -3
- package/libraries/modules/smartparks/smartpark.state.d.ts.map +1 -1
- package/libraries/service-proxy/identity-service-proxies.d.ts +132 -3
- package/libraries/service-proxy/identity-service-proxies.d.ts.map +1 -1
- package/libraries/services/smartpark.service.d.ts +9 -2
- package/libraries/services/smartpark.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, catchError, combineLatest } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, catchError, combineLatest, EMPTY } from 'rxjs';
|
|
3
3
|
import { delay, map, startWith, tap } from 'rxjs/operators';
|
|
4
4
|
import { RestartLinkComponent } from '../components/restart-link/restart-link.component';
|
|
5
5
|
import { ONE_SECOND_IN_MILLISECONDS } from '../constants/global-constants';
|
|
6
6
|
import { ClearFacilityDictionaryAction, SetSmartparkBasicAllAction } from '../modules/facility/facility.actions';
|
|
7
7
|
import { ClearSmartparksBasicAction, SetSmartParkTableAction, SetSmartParkVersionsAction } from '../modules/smartparks/smartpark.actions';
|
|
8
|
-
import {
|
|
8
|
+
import { AppModule, SubModule } from '../service-proxy/cloud-service-proxies';
|
|
9
9
|
import { HttpStatusCode } from '../service-proxy/identity-service-proxies';
|
|
10
10
|
import { AppType } from '../enums/app-type.enum';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
@@ -29,8 +29,55 @@ export class SmartparkService {
|
|
|
29
29
|
this.messageBarService = messageBarService;
|
|
30
30
|
this.loading = new BehaviorSubject(false);
|
|
31
31
|
this.hasError = new BehaviorSubject(false);
|
|
32
|
+
this.facilitySubModuleFetchMethodsMapping = {
|
|
33
|
+
[SubModule.EValidation]: this.facilityIdentityServiceProxy.facilityAllValidationEValidation,
|
|
34
|
+
[SubModule.SelfValidation]: this.facilityIdentityServiceProxy.facilityAllValidationSelfValidation,
|
|
35
|
+
[SubModule.Coupons]: this.facilityIdentityServiceProxy.facilityAllValidationCoupons,
|
|
36
|
+
[SubModule.Stickers]: this.facilityIdentityServiceProxy.facilityAllValidationStickers,
|
|
37
|
+
[SubModule.Monthlies]: this.facilityIdentityServiceProxy.facilityAllMonthlies,
|
|
38
|
+
[SubModule.ImporterTool]: this.facilityIdentityServiceProxy.facilityAllMonthliesImporterTool,
|
|
39
|
+
[SubModule.Guests]: this.facilityIdentityServiceProxy.facilityAllGuests,
|
|
40
|
+
[SubModule.HotelGuests]: this.facilityIdentityServiceProxy.facilityAllGuestsHotelGuests,
|
|
41
|
+
[SubModule.HotelGuestsIO]: this.facilityIdentityServiceProxy.facilityAllGuestsHotelGuestsIO,
|
|
42
|
+
[SubModule.EVoucher]: this.facilityIdentityServiceProxy.facilityAllGuestsEVoucher,
|
|
43
|
+
[SubModule.Accounts]: this.facilityIdentityServiceProxy.facilityAllAccounts,
|
|
44
|
+
[SubModule.Rates]: this.facilityIdentityServiceProxy.facilityAllLotConfigurationRates,
|
|
45
|
+
[SubModule.Scheduler]: this.facilityIdentityServiceProxy.facilityAllLotConfigurationScheduler,
|
|
46
|
+
[SubModule.DynamicPricing]: this.facilityIdentityServiceProxy.facilityAllLotConfigurationDynamicPricing,
|
|
47
|
+
[SubModule.ValidationProfiles]: this.facilityIdentityServiceProxy.facilityAllLotConfigurationValidationProfiles,
|
|
48
|
+
[SubModule.AccessProfiles]: this.facilityIdentityServiceProxy.facilityAllLotConfigurationAccessProfiles,
|
|
49
|
+
[SubModule.CashiersManagement]: this.facilityIdentityServiceProxy.facilityAllLotConfigurationCashiersManagement,
|
|
50
|
+
[SubModule.UserManagement]: this.facilityIdentityServiceProxy.facilityAllManagementUserManagement,
|
|
51
|
+
[SubModule.Audit]: this.facilityIdentityServiceProxy.facilityAllManagementAudit,
|
|
52
|
+
[SubModule.DigitalReceipt]: this.facilityIdentityServiceProxy.facilityAllManagementDigitalReceipt,
|
|
53
|
+
[SubModule.EnforcementIntegration]: this.facilityIdentityServiceProxy.facilityAllManagementEnforcementIntegration,
|
|
54
|
+
[SubModule.Scan2Pay]: this.facilityIdentityServiceProxy.facilityAllScan2Pay,
|
|
55
|
+
[SubModule.Insights]: this.facilityIdentityServiceProxy.facilityAllInsights,
|
|
56
|
+
[SubModule.FacilitiesAndSmartparks]: null,
|
|
57
|
+
[SubModule.Logo]: null,
|
|
58
|
+
[SubModule.SmtpSettings]: null,
|
|
59
|
+
[SubModule.DefaultUserSettings]: null,
|
|
60
|
+
[SubModule.ECommerceMySite]: null,
|
|
61
|
+
[SubModule.ECommerceConfiguration]: null,
|
|
62
|
+
};
|
|
63
|
+
this.facilityAppModuleFetchMethodsMapping = {
|
|
64
|
+
[AppModule.Cc]: this.facilityIdentityServiceProxy.facilityAllCc,
|
|
65
|
+
[AppModule.Reports]: this.facilityIdentityServiceProxy.facilityAllReports,
|
|
66
|
+
[AppModule.ECommerceBackoffice]: this.facilityIdentityServiceProxy.facilityAllECommerceConfiguration,
|
|
67
|
+
[AppModule.Management]: null,
|
|
68
|
+
[AppModule.Settings]: null,
|
|
69
|
+
[AppModule.Validation]: null,
|
|
70
|
+
[AppModule.Guests]: null,
|
|
71
|
+
[AppModule.Monthlies]: null,
|
|
72
|
+
[AppModule.Backoffice]: null,
|
|
73
|
+
[AppModule.Pi]: this.facilityIdentityServiceProxy.facilityAllPi,
|
|
74
|
+
[AppModule.Accounts]: null,
|
|
75
|
+
[AppModule.LotConfiguration]: null,
|
|
76
|
+
[AppModule.Scan2Pay]: null,
|
|
77
|
+
[AppModule.Insights]: null,
|
|
78
|
+
};
|
|
32
79
|
}
|
|
33
|
-
getSmartparkBasicAll(appModule, setSmartparkBasic = true) {
|
|
80
|
+
getSmartparkBasicAll(appModule, subModule, setSmartparkBasic = true) {
|
|
34
81
|
this.hasError.next(false);
|
|
35
82
|
this.loading.next(true);
|
|
36
83
|
if (setSmartparkBasic) {
|
|
@@ -38,8 +85,13 @@ export class SmartparkService {
|
|
|
38
85
|
this.store.dispatch(new ClearSmartparksBasicAction());
|
|
39
86
|
this.store.dispatch(new ClearFacilityDictionaryAction());
|
|
40
87
|
}
|
|
41
|
-
|
|
42
|
-
|
|
88
|
+
const facilityAllFetchMethod = this.getFacilityAllFetchMethod(appModule, subModule);
|
|
89
|
+
if (!facilityAllFetchMethod) {
|
|
90
|
+
console.warn(`SmartparkService: no fetch method mapped for AppModule=${AppModule[appModule]} SubModule=${subModule != null ? SubModule[subModule] : 'none'} — skipping fetch`);
|
|
91
|
+
this.loading.next(false);
|
|
92
|
+
return EMPTY;
|
|
93
|
+
}
|
|
94
|
+
const response = facilityAllFetchMethod();
|
|
43
95
|
return response.pipe(tap(smartparkBasic => {
|
|
44
96
|
if (setSmartparkBasic) {
|
|
45
97
|
this.store.dispatch(new SetSmartParkVersionsAction(this.extractSparkVersions(smartparkBasic.data.smartParks)));
|
|
@@ -68,7 +120,9 @@ export class SmartparkService {
|
|
|
68
120
|
return this.createLoadingOverlayOptions(loading$, hasError$, noDataMessage);
|
|
69
121
|
}
|
|
70
122
|
getLoadingStream(actions) {
|
|
71
|
-
|
|
123
|
+
// Untyped state access to avoid a circular dependency with SmartparkState; keep in sync with the 'smartpark' state name/shape by hand.
|
|
124
|
+
const smartparks = this.store.selectSnapshot((state) => state.smartpark?.smartparks);
|
|
125
|
+
const isSmartparkDataLoaded = smartparks !== null && smartparks !== undefined;
|
|
72
126
|
const response$ = isSmartparkDataLoaded ? this.actionStatusService.actionsExecuting$(actions) :
|
|
73
127
|
(combineLatest([
|
|
74
128
|
this.loading$.pipe(delay(ONE_SECOND_IN_MILLISECONDS)),
|
|
@@ -96,10 +150,14 @@ export class SmartparkService {
|
|
|
96
150
|
}
|
|
97
151
|
return versions;
|
|
98
152
|
}
|
|
153
|
+
getFacilityAllFetchMethod(appModule, subModule) {
|
|
154
|
+
const fetchMethod = this.facilitySubModuleFetchMethodsMapping[subModule] ?? this.facilityAppModuleFetchMethodsMapping[appModule];
|
|
155
|
+
return fetchMethod ? fetchMethod.bind(this.facilityIdentityServiceProxy) : null;
|
|
156
|
+
}
|
|
99
157
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkService, deps: [{ token: i1.Store }, { token: i2.AppConfigService }, { token: i3.FacilityIdentityServiceProxy }, { token: i4.ActionStatusService }, { token: i5.MessageBarService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
100
158
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkService }); }
|
|
101
159
|
}
|
|
102
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartparkService, decorators: [{
|
|
103
161
|
type: Injectable
|
|
104
162
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.AppConfigService }, { type: i3.FacilityIdentityServiceProxy }, { type: i4.ActionStatusService }, { type: i5.MessageBarService }] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL3NlcnZpY2VzL3NtYXJ0cGFyay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsT0FBTyxFQUFnQyxjQUFjLEVBQTBELE1BQU0sMkNBQTJDLENBQUM7QUFJakssT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBR2pELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUtELFlBQW9CLEtBQVksRUFDdEIsU0FB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QUM7SUFDL0IsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFVBQXdDO1FBQ25FLE1BQU0sUUFBUSxHQUFzQixFQUFFLENBQUM7UUFFdkMsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0MsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDakQsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7K0dBM0dVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBtYXAsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUluZm8gfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzdGFydExpbmtDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3Jlc3RhcnQtbGluay9yZXN0YXJ0LWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9hZGluZ092ZXJsYXlPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2FkaW5nLW92ZXJsYXktb3B0aW9ucyc7XG5pbXBvcnQgeyBDbGVhckZhY2lsaXR5RGljdGlvbmFyeUFjdGlvbiwgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24sIFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uLCBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuYWN0aW9ucyc7XG5pbXBvcnQgeyBTbWFydHBhcmtTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuc3RhdGUnO1xuaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eSwgSHR0cFN0YXR1c0NvZGUsIFNtYXJ0cGFya0Jhc2ljRHRvLCBTbWFydFBhcmtXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IFN0cmluZ01hcCB9IGZyb20gJy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBBY3Rpb25TdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvbmd4cy9hY3Rpb24tc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNtYXJ0cGFya1NlcnZpY2Uge1xuXG4gIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGhhc0Vycm9yJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5oYXNFcnJvci5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgaGFzRXJyb3I6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eTogRmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGFjdGlvblN0YXR1c1NlcnZpY2U6IEFjdGlvblN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbWFydHBhcmtCYXNpY0FsbChhcHBNb2R1bGU6IEFwcE1vZHVsZSwgc2V0U21hcnRwYXJrQmFzaWMgPSB0cnVlKTogT2JzZXJ2YWJsZTxTbWFydFBhcmtXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHRoaXMuaGFzRXJyb3IubmV4dChmYWxzZSk7XG4gICAgdGhpcy5sb2FkaW5nLm5leHQodHJ1ZSk7XG5cbiAgICBpZiAoc2V0U21hcnRwYXJrQmFzaWMpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uKG51bGwpKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uKCkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ2xlYXJGYWNpbGl0eURpY3Rpb25hcnlBY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgLy8gdGhlIHN1Yk1vZHVsZSBzZW50IGluIHRoZSBoZWFkZXIgYnkgdGhlIENsb3VkQXV0aFRva2VuSW50ZXJjZXB0b3JcbiAgICBjb25zdCByZXNwb25zZTogT2JzZXJ2YWJsZTxTbWFydFBhcmtXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YT4gPSB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGwoYXBwTW9kdWxlKTtcbiAgICByZXR1cm4gcmVzcG9uc2UucGlwZShcbiAgICAgIHRhcChzbWFydHBhcmtCYXNpYyA9PiB7XG4gICAgICAgIGlmIChzZXRTbWFydHBhcmtCYXNpYykge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKHRoaXMuZXh0cmFjdFNwYXJrVmVyc2lvbnMoc21hcnRwYXJrQmFzaWMuZGF0YS5zbWFydFBhcmtzKSkpO1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFNtYXJ0cGFya0Jhc2ljQWxsQWN0aW9uKHNtYXJ0cGFya0Jhc2ljKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nLm5leHQoZmFsc2UpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICB0aGlzLmhhc0Vycm9yLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMubG9hZGluZy5uZXh0KGZhbHNlKTtcblxuICAgICAgICBjb25zdCBpc01vYmlsZUFwcE1vZGUgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICAgICAgaWYgKGUuc3RhdHVzICE9PSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0VGltZW91dCAmJiAhaXNNb2JpbGVBcHBNb2RlKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZUluZm86IE1lc3NhZ2VJbmZvID0ge1xuICAgICAgICAgICAgZHVyYXRpb246IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTICogMTUsXG4gICAgICAgICAgICBhY3Rpb246IHtcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBSZXN0YXJ0TGlua0NvbXBvbmVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uud2FybihcIlwiLCBtZXNzYWdlSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldExvYWRpbmdPdmVybGF5T3B0aW9ucyhhY3Rpb25zOiBBY3Rpb25UeXBlIHwgQWN0aW9uVHlwZVtdLCBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSBudWxsKTogTG9hZGluZ092ZXJsYXlPcHRpb25zIHtcbiAgICBjb25zdCBsb2FkaW5nJCA9IHRoaXMuZ2V0TG9hZGluZ1N0cmVhbShhY3Rpb25zKTtcbiAgICBjb25zdCBoYXNFcnJvciQgPSB0aGlzLmdldEVycm9yU3RyZWFtKGFjdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlTG9hZGluZ092ZXJsYXlPcHRpb25zKGxvYWRpbmckLCBoYXNFcnJvciQsIG5vRGF0YU1lc3NhZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2FkaW5nU3RyZWFtKGFjdGlvbnM6IEFjdGlvblR5cGUgfCBBY3Rpb25UeXBlW10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBpc1NtYXJ0cGFya0RhdGFMb2FkZWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNtYXJ0cGFya1N0YXRlLnNtYXJ0cGFya3MpICE9PSBudWxsO1xuICAgIGNvbnN0IHJlc3BvbnNlJCA9IGlzU21hcnRwYXJrRGF0YUxvYWRlZCA/IHRoaXMuYWN0aW9uU3RhdHVzU2VydmljZS5hY3Rpb25zRXhlY3V0aW5nJChhY3Rpb25zKSA6XG4gICAgICAoXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHRoaXMubG9hZGluZyQucGlwZShkZWxheShPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUykpLFxuICAgICAgICAgIHRoaXMuYWN0aW9uU3RhdHVzU2VydmljZS5hY3Rpb25zRXhlY3V0aW5nJChhY3Rpb25zKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgIG1hcCgoW3NtYXJ0cGFya3NMb2FkaW5nLCBhY3Rpb25Mb2FkaW5nXSkgPT4gc21hcnRwYXJrc0xvYWRpbmcgfHwgYWN0aW9uTG9hZGluZyksXG4gICAgICAgICAgc3RhcnRXaXRoKHRydWUpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlJDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JTdHJlYW0oYWN0aW9uczogQWN0aW9uVHlwZSB8IEFjdGlvblR5cGVbXSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvblN0YXR1c1NlcnZpY2UuYWN0aW9uc0Vycm9yZWQkKGFjdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMb2FkaW5nT3ZlcmxheU9wdGlvbnMobG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4sIGhhc0Vycm9yJDogT2JzZXJ2YWJsZTxib29sZWFuPiwgbm9EYXRhTWVzc2FnZTogc3RyaW5nKTogTG9hZGluZ092ZXJsYXlPcHRpb25zIHtcbiAgICBjb25zdCBsb2FkaW5nT3ZlcmxheU9wdGlvbnM6IExvYWRpbmdPdmVybGF5T3B0aW9ucyA9IHtcbiAgICAgIGxvYWRpbmckLFxuICAgICAgaGFzRXJyb3IkLFxuICAgIH07XG5cbiAgICBpZiAobm9EYXRhTWVzc2FnZSkge1xuICAgICAgbG9hZGluZ092ZXJsYXlPcHRpb25zLmVtcHR5UmVzdWx0c09wdGlvbnMgPSB7IG5vRGF0YU1lc3NhZ2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9hZGluZ092ZXJsYXlPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0U3BhcmtWZXJzaW9ucyhzbWFydHBhcmtzOiBTdHJpbmdNYXA8U21hcnRwYXJrQmFzaWNEdG8+KTogU3RyaW5nTWFwPHN0cmluZz4ge1xuICAgIGNvbnN0IHZlcnNpb25zOiBTdHJpbmdNYXA8c3RyaW5nPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBndWlkIG9mIE9iamVjdC5rZXlzKHNtYXJ0cGFya3MpKSB7XG4gICAgICB2ZXJzaW9uc1tndWlkXSA9IHNtYXJ0cGFya3NbZ3VpZF0uc3BhcmtWZXJzaW9uO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJzaW9ucztcbiAgfVxufVxuIl19
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL3NlcnZpY2VzL3NtYXJ0cGFyay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNyRixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDekYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUksT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQWdDLGNBQWMsRUFBMEQsTUFBTSwyQ0FBMkMsQ0FBQztBQUlqSyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFHakQsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBS0Qs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QkFBMkIsQ0FBQyxRQUE2QixFQUFFLFNBQThCLEVBQUUsYUFBcUI7UUFDdEgsTUFBTSxxQkFBcUIsR0FBMEI7WUFDbkQsUUFBUTtZQUNSLFNBQVM7U0FDVixDQUFDO1FBRUYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixxQkFBcUIsQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBQ2hFLENBQUM7UUFFRCxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxVQUF3QztRQUNuRSxNQUFNLFFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8seUJBQXlCLENBQUMsU0FBb0IsRUFBRSxTQUFxQjtRQUMzRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsb0NBQW9DLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLG9DQUFvQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEYsQ0FBQzsrR0F2SFUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25UeXBlLCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBtYXAsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUluZm8gfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzdGFydExpbmtDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3Jlc3RhcnQtbGluay9yZXN0YXJ0LWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9hZGluZ092ZXJsYXlPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2FkaW5nLW92ZXJsYXktb3B0aW9ucyc7XG5pbXBvcnQgeyBDbGVhckZhY2lsaXR5RGljdGlvbmFyeUFjdGlvbiwgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24sIFNldFNtYXJ0UGFya1RhYmxlQWN0aW9uLCBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIFN1Yk1vZHVsZSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHksIEh0dHBTdGF0dXNDb2RlLCBTbWFydHBhcmtCYXNpY0R0bywgU21hcnRQYXJrV3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGEgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBOdW1iZXJNYXAsIFN0cmluZ01hcCB9IGZyb20gJy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBBY3Rpb25TdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvbmd4cy9hY3Rpb24tc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNtYXJ0cGFya1NlcnZpY2Uge1xuXG4gIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGhhc0Vycm9yJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5oYXNFcnJvci5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgaGFzRXJyb3I6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eTogRmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIGFjdGlvblN0YXR1c1NlcnZpY2U6IEFjdGlvblN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbWFydHBhcmtCYXNpY0FsbChhcHBNb2R1bGU6IEFwcE1vZHVsZSwgc3ViTW9kdWxlPzogU3ViTW9kdWxlLCBzZXRTbWFydHBhcmtCYXNpYyA9IHRydWUpOiBPYnNlcnZhYmxlPFNtYXJ0UGFya1dyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgdGhpcy5oYXNFcnJvci5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmxvYWRpbmcubmV4dCh0cnVlKTtcblxuICAgIGlmIChzZXRTbWFydHBhcmtCYXNpYykge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRQYXJrVGFibGVBY3Rpb24obnVsbCkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24oKSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBDbGVhckZhY2lsaXR5RGljdGlvbmFyeUFjdGlvbigpKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWNpbGl0eUFsbEZldGNoTWV0aG9kID0gdGhpcy5nZXRGYWNpbGl0eUFsbEZldGNoTWV0aG9kKGFwcE1vZHVsZSwgc3ViTW9kdWxlKTtcbiAgICBpZiAoIWZhY2lsaXR5QWxsRmV0Y2hNZXRob2QpIHtcbiAgICAgIGNvbnNvbGUud2FybihgU21hcnRwYXJrU2VydmljZTogbm8gZmV0Y2ggbWV0aG9kIG1hcHBlZCBmb3IgQXBwTW9kdWxlPSR7QXBwTW9kdWxlW2FwcE1vZHVsZV19IFN1Yk1vZHVsZT0ke3N1Yk1vZHVsZSAhPSBudWxsID8gU3ViTW9kdWxlW3N1Yk1vZHVsZV0gOiAnbm9uZSd9IOKAlCBza2lwcGluZyBmZXRjaGApO1xuICAgICAgdGhpcy5sb2FkaW5nLm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cbiAgICBjb25zdCByZXNwb25zZTogT2JzZXJ2YWJsZTxTbWFydFBhcmtXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YT4gPSBmYWNpbGl0eUFsbEZldGNoTWV0aG9kKCk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnBpcGUoXG4gICAgICB0YXAoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgICBpZiAoc2V0U21hcnRwYXJrQmFzaWMpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbih0aGlzLmV4dHJhY3RTcGFya1ZlcnNpb25zKHNtYXJ0cGFya0Jhc2ljLmRhdGEuc21hcnRQYXJrcykpKTtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbihzbWFydHBhcmtCYXNpYykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZy5uZXh0KGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgdGhpcy5oYXNFcnJvci5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmxvYWRpbmcubmV4dChmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgICAgIGlmIChlLnN0YXR1cyAhPT0gSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQgJiYgIWlzTW9iaWxlQXBwTW9kZSkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VJbmZvOiBNZXNzYWdlSW5mbyA9IHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyAqIDE1LFxuICAgICAgICAgICAgYWN0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudDogUmVzdGFydExpbmtDb21wb25lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLndhcm4oXCJcIiwgbWVzc2FnZUluZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2FkaW5nT3ZlcmxheU9wdGlvbnMoYWN0aW9uczogQWN0aW9uVHlwZSB8IEFjdGlvblR5cGVbXSwgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gbnVsbCk6IExvYWRpbmdPdmVybGF5T3B0aW9ucyB7XG4gICAgY29uc3QgbG9hZGluZyQgPSB0aGlzLmdldExvYWRpbmdTdHJlYW0oYWN0aW9ucyk7XG4gICAgY29uc3QgaGFzRXJyb3IkID0gdGhpcy5nZXRFcnJvclN0cmVhbShhY3Rpb25zKTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUxvYWRpbmdPdmVybGF5T3B0aW9ucyhsb2FkaW5nJCwgaGFzRXJyb3IkLCBub0RhdGFNZXNzYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9hZGluZ1N0cmVhbShhY3Rpb25zOiBBY3Rpb25UeXBlIHwgQWN0aW9uVHlwZVtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgLy8gVW50eXBlZCBzdGF0ZSBhY2Nlc3MgdG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggU21hcnRwYXJrU3RhdGU7IGtlZXAgaW4gc3luYyB3aXRoIHRoZSAnc21hcnRwYXJrJyBzdGF0ZSBuYW1lL3NoYXBlIGJ5IGhhbmQuXG4gICAgY29uc3Qgc21hcnRwYXJrcyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoKHN0YXRlOiBhbnkpID0+IHN0YXRlLnNtYXJ0cGFyaz8uc21hcnRwYXJrcyk7XG4gICAgY29uc3QgaXNTbWFydHBhcmtEYXRhTG9hZGVkID0gc21hcnRwYXJrcyAhPT0gbnVsbCAmJiBzbWFydHBhcmtzICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzcG9uc2UkID0gaXNTbWFydHBhcmtEYXRhTG9hZGVkID8gdGhpcy5hY3Rpb25TdGF0dXNTZXJ2aWNlLmFjdGlvbnNFeGVjdXRpbmckKGFjdGlvbnMpIDpcbiAgICAgIChcbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5waXBlKGRlbGF5KE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTKSksXG4gICAgICAgICAgdGhpcy5hY3Rpb25TdGF0dXNTZXJ2aWNlLmFjdGlvbnNFeGVjdXRpbmckKGFjdGlvbnMpXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgbWFwKChbc21hcnRwYXJrc0xvYWRpbmcsIGFjdGlvbkxvYWRpbmddKSA9PiBzbWFydHBhcmtzTG9hZGluZyB8fCBhY3Rpb25Mb2FkaW5nKSxcbiAgICAgICAgICBzdGFydFdpdGgodHJ1ZSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvclN0cmVhbShhY3Rpb25zOiBBY3Rpb25UeXBlIHwgQWN0aW9uVHlwZVtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uU3RhdHVzU2VydmljZS5hY3Rpb25zRXJyb3JlZCQoYWN0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxvYWRpbmdPdmVybGF5T3B0aW9ucyhsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiwgaGFzRXJyb3IkOiBPYnNlcnZhYmxlPGJvb2xlYW4+LCBub0RhdGFNZXNzYWdlOiBzdHJpbmcpOiBMb2FkaW5nT3ZlcmxheU9wdGlvbnMge1xuICAgIGNvbnN0IGxvYWRpbmdPdmVybGF5T3B0aW9uczogTG9hZGluZ092ZXJsYXlPcHRpb25zID0ge1xuICAgICAgbG9hZGluZyQsXG4gICAgICBoYXNFcnJvciQsXG4gICAgfTtcblxuICAgIGlmIChub0RhdGFNZXNzYWdlKSB7XG4gICAgICBsb2FkaW5nT3ZlcmxheU9wdGlvbnMuZW1wdHlSZXN1bHRzT3B0aW9ucyA9IHsgbm9EYXRhTWVzc2FnZSB9O1xuICAgIH1cblxuICAgIHJldHVybiBsb2FkaW5nT3ZlcmxheU9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RTcGFya1ZlcnNpb25zKHNtYXJ0cGFya3M6IFN0cmluZ01hcDxTbWFydHBhcmtCYXNpY0R0bz4pOiBTdHJpbmdNYXA8c3RyaW5nPiB7XG4gICAgY29uc3QgdmVyc2lvbnM6IFN0cmluZ01hcDxzdHJpbmc+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGd1aWQgb2YgT2JqZWN0LmtleXMoc21hcnRwYXJrcykpIHtcbiAgICAgIHZlcnNpb25zW2d1aWRdID0gc21hcnRwYXJrc1tndWlkXS5zcGFya1ZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnNpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGYWNpbGl0eUFsbEZldGNoTWV0aG9kKGFwcE1vZHVsZTogQXBwTW9kdWxlLCBzdWJNb2R1bGU/OiBTdWJNb2R1bGUpOiBGYWNpbGl0eUZldGNoTWV0aG9kU2lnbmF0dXJlIHwgbnVsbCB7XG4gICAgY29uc3QgZmV0Y2hNZXRob2QgPSB0aGlzLmZhY2lsaXR5U3ViTW9kdWxlRmV0Y2hNZXRob2RzTWFwcGluZ1tzdWJNb2R1bGVdID8/IHRoaXMuZmFjaWxpdHlBcHBNb2R1bGVGZXRjaE1ldGhvZHNNYXBwaW5nW2FwcE1vZHVsZV07XG4gICAgcmV0dXJuIGZldGNoTWV0aG9kID8gZmV0Y2hNZXRob2QuYmluZCh0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkpIDogbnVsbDtcbiAgfVxuXG4gIGZhY2lsaXR5U3ViTW9kdWxlRmV0Y2hNZXRob2RzTWFwcGluZzogRmFjaWxpdHlGZXRjaE1ldGhvZHNNYXAgPSB7XG4gICAgW1N1Yk1vZHVsZS5FVmFsaWRhdGlvbl06IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbFZhbGlkYXRpb25FVmFsaWRhdGlvbixcbiAgICBbU3ViTW9kdWxlLlNlbGZWYWxpZGF0aW9uXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsVmFsaWRhdGlvblNlbGZWYWxpZGF0aW9uLFxuICAgIFtTdWJNb2R1bGUuQ291cG9uc106IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbFZhbGlkYXRpb25Db3Vwb25zLFxuICAgIFtTdWJNb2R1bGUuU3RpY2tlcnNdOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxWYWxpZGF0aW9uU3RpY2tlcnMsXG4gICAgW1N1Yk1vZHVsZS5Nb250aGxpZXNdOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxNb250aGxpZXMsXG4gICAgW1N1Yk1vZHVsZS5JbXBvcnRlclRvb2xdOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxNb250aGxpZXNJbXBvcnRlclRvb2wsXG4gICAgW1N1Yk1vZHVsZS5HdWVzdHNdOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxHdWVzdHMsXG4gICAgW1N1Yk1vZHVsZS5Ib3RlbEd1ZXN0c106IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbEd1ZXN0c0hvdGVsR3Vlc3RzLFxuICAgIFtTdWJNb2R1bGUuSG90ZWxHdWVzdHNJT106IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbEd1ZXN0c0hvdGVsR3Vlc3RzSU8sXG4gICAgW1N1Yk1vZHVsZS5FVm91Y2hlcl06IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbEd1ZXN0c0VWb3VjaGVyLFxuICAgIFtTdWJNb2R1bGUuQWNjb3VudHNdOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxBY2NvdW50cyxcbiAgICBbU3ViTW9kdWxlLlJhdGVzXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTG90Q29uZmlndXJhdGlvblJhdGVzLFxuICAgIFtTdWJNb2R1bGUuU2NoZWR1bGVyXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTG90Q29uZmlndXJhdGlvblNjaGVkdWxlcixcbiAgICBbU3ViTW9kdWxlLkR5bmFtaWNQcmljaW5nXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTG90Q29uZmlndXJhdGlvbkR5bmFtaWNQcmljaW5nLFxuICAgIFtTdWJNb2R1bGUuVmFsaWRhdGlvblByb2ZpbGVzXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTG90Q29uZmlndXJhdGlvblZhbGlkYXRpb25Qcm9maWxlcyxcbiAgICBbU3ViTW9kdWxlLkFjY2Vzc1Byb2ZpbGVzXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTG90Q29uZmlndXJhdGlvbkFjY2Vzc1Byb2ZpbGVzLFxuICAgIFtTdWJNb2R1bGUuQ2FzaGllcnNNYW5hZ2VtZW50XTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTG90Q29uZmlndXJhdGlvbkNhc2hpZXJzTWFuYWdlbWVudCxcbiAgICBbU3ViTW9kdWxlLlVzZXJNYW5hZ2VtZW50XTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsTWFuYWdlbWVudFVzZXJNYW5hZ2VtZW50LFxuICAgIFtTdWJNb2R1bGUuQXVkaXRdOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxNYW5hZ2VtZW50QXVkaXQsXG4gICAgW1N1Yk1vZHVsZS5EaWdpdGFsUmVjZWlwdF06IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbE1hbmFnZW1lbnREaWdpdGFsUmVjZWlwdCxcbiAgICBbU3ViTW9kdWxlLkVuZm9yY2VtZW50SW50ZWdyYXRpb25dOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxNYW5hZ2VtZW50RW5mb3JjZW1lbnRJbnRlZ3JhdGlvbixcbiAgICBbU3ViTW9kdWxlLlNjYW4yUGF5XTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsU2NhbjJQYXksXG4gICAgW1N1Yk1vZHVsZS5JbnNpZ2h0c106IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbEluc2lnaHRzLFxuICAgIFtTdWJNb2R1bGUuRmFjaWxpdGllc0FuZFNtYXJ0cGFya3NdOiBudWxsLFxuICAgIFtTdWJNb2R1bGUuTG9nb106IG51bGwsXG4gICAgW1N1Yk1vZHVsZS5TbXRwU2V0dGluZ3NdOiBudWxsLFxuICAgIFtTdWJNb2R1bGUuRGVmYXVsdFVzZXJTZXR0aW5nc106IG51bGwsXG4gICAgW1N1Yk1vZHVsZS5FQ29tbWVyY2VNeVNpdGVdOiBudWxsLFxuICAgIFtTdWJNb2R1bGUuRUNvbW1lcmNlQ29uZmlndXJhdGlvbl06IG51bGwsXG4gIH07XG4gIGZhY2lsaXR5QXBwTW9kdWxlRmV0Y2hNZXRob2RzTWFwcGluZzogRmFjaWxpdHlGZXRjaE1ldGhvZHNNYXAgPSB7XG4gICAgW0FwcE1vZHVsZS5DY106IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbENjLFxuICAgIFtBcHBNb2R1bGUuUmVwb3J0c106IHRoaXMuZmFjaWxpdHlJZGVudGl0eVNlcnZpY2VQcm94eS5mYWNpbGl0eUFsbFJlcG9ydHMsXG4gICAgW0FwcE1vZHVsZS5FQ29tbWVyY2VCYWNrb2ZmaWNlXTogdGhpcy5mYWNpbGl0eUlkZW50aXR5U2VydmljZVByb3h5LmZhY2lsaXR5QWxsRUNvbW1lcmNlQ29uZmlndXJhdGlvbixcbiAgICBbQXBwTW9kdWxlLk1hbmFnZW1lbnRdOiBudWxsLFxuICAgIFtBcHBNb2R1bGUuU2V0dGluZ3NdOiBudWxsLFxuICAgIFtBcHBNb2R1bGUuVmFsaWRhdGlvbl06IG51bGwsXG4gICAgW0FwcE1vZHVsZS5HdWVzdHNdOiBudWxsLFxuICAgIFtBcHBNb2R1bGUuTW9udGhsaWVzXTogbnVsbCxcbiAgICBbQXBwTW9kdWxlLkJhY2tvZmZpY2VdOiBudWxsLFxuICAgIFtBcHBNb2R1bGUuUGldOiB0aGlzLmZhY2lsaXR5SWRlbnRpdHlTZXJ2aWNlUHJveHkuZmFjaWxpdHlBbGxQaSxcbiAgICBbQXBwTW9kdWxlLkFjY291bnRzXTogbnVsbCxcbiAgICBbQXBwTW9kdWxlLkxvdENvbmZpZ3VyYXRpb25dOiBudWxsLFxuICAgIFtBcHBNb2R1bGUuU2NhbjJQYXldOiBudWxsLFxuICAgIFtBcHBNb2R1bGUuSW5zaWdodHNdOiBudWxsLFxuICB9O1xufVxuXG50eXBlIEZhY2lsaXR5RmV0Y2hNZXRob2RTaWduYXR1cmUgPSAoKSA9PiBPYnNlcnZhYmxlPFNtYXJ0UGFya1dyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhPjtcbnR5cGUgRmFjaWxpdHlGZXRjaE1ldGhvZHNNYXAgPSBOdW1iZXJNYXA8RmFjaWxpdHlGZXRjaE1ldGhvZFNpZ25hdHVyZT47XG4iXX0=
|