@xsolla/payment-client-core 0.2.10 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/core/extended-window.interface.mjs +1 -1
- package/esm2020/lib/core/payment/field-names.enum.mjs +4 -1
- package/esm2020/lib/core/payment/form/control-status.interface.mjs +2 -0
- package/esm2020/lib/core/payment/form-response.interface.mjs +1 -1
- package/esm2020/lib/core/payment/initialize/initialize.service.mjs +17 -7
- package/esm2020/lib/core/payment/payment.interface.mjs +1 -1
- package/esm2020/lib/core/payment/payment.service.mjs +18 -2
- package/esm2020/lib/core/payment/status/listen-status/listen-status.service.mjs +16 -4
- package/esm2020/lib/core/payment/submit/submit.service.mjs +21 -4
- package/esm2020/lib/core/payment/sync/sync.service.mjs +14 -4
- package/esm2020/lib/core/payment/xps-api/xps-api.service.mjs +7 -5
- package/esm2020/lib/core/performance/performance.service.mjs +111 -0
- package/esm2020/lib/core/performance/xhr-action.interface.mjs +2 -0
- package/esm2020/lib/core/performance/xhr-action.service.mjs +114 -0
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +2 -1
- package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +13 -6
- package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +10 -10
- package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +3 -3
- package/esm2020/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +1 -1
- package/esm2020/lib/core/settings/configuration.interface.mjs +1 -1
- package/esm2020/lib/core/settings/settings.service.mjs +4 -6
- package/esm2020/lib/core/user-agent/user-agent.service.mjs +12 -1
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +144 -0
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.mjs +9 -0
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/invoice.interface.mjs +2 -0
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/purchase.type.mjs +2 -0
- package/esm2020/lib/core/user-behaviour-analytics/event-builder/user-behaviour-event.interface.mjs +2 -0
- package/esm2020/lib/core/user-behaviour-analytics/one-time-analytics-events.const.mjs +5 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-analytics.interface.mjs +2 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +158 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.mjs +5 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.mjs +8 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.mjs +8 -0
- package/esm2020/lib/core/user-behaviour-analytics/user-session-options.mjs +2 -0
- package/esm2020/lib/core-library.service.mjs +14 -21
- package/esm2020/public-api.mjs +6 -1
- package/fesm2015/xsolla-payment-client-core.mjs +6625 -6017
- package/fesm2015/xsolla-payment-client-core.mjs.map +1 -1
- package/fesm2020/xsolla-payment-client-core.mjs +6515 -5919
- package/fesm2020/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/extended-window.interface.d.ts +1 -0
- package/lib/core/payment/field-names.enum.d.ts +3 -0
- package/lib/core/payment/form/control-status.interface.d.ts +7 -0
- package/lib/core/payment/form-response.interface.d.ts +1 -0
- package/lib/core/payment/initialize/initialize.service.d.ts +3 -1
- package/lib/core/payment/payment.interface.d.ts +3 -0
- package/lib/core/payment/payment.service.d.ts +3 -0
- package/lib/core/payment/status/listen-status/listen-status.service.d.ts +3 -1
- package/lib/core/payment/submit/submit.service.d.ts +4 -1
- package/lib/core/payment/sync/sync.service.d.ts +3 -1
- package/lib/core/payment/xps-api/xps-api.service.d.ts +3 -1
- package/lib/core/performance/performance.service.d.ts +24 -0
- package/lib/core/performance/xhr-action.interface.d.ts +8 -0
- package/lib/core/performance/xhr-action.service.d.ts +25 -0
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.d.ts +1 -0
- package/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.d.ts +2 -1
- package/lib/core/sdk-payment-systems/google-pay/google-pay.service.d.ts +2 -2
- package/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.d.ts +1 -1
- package/lib/core/sdk-payment-systems/sdk-payment-systems.interface.d.ts +0 -16
- package/lib/core/settings/configuration.interface.d.ts +0 -1
- package/lib/core/settings/settings.service.d.ts +1 -2
- package/lib/core/user-agent/user-agent.service.d.ts +1 -0
- package/lib/core/user-behaviour-analytics/event-builder/event-builder.service.d.ts +22 -0
- package/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.d.ts +7 -0
- package/lib/core/user-behaviour-analytics/event-builder/invoice.interface.d.ts +14 -0
- package/lib/core/user-behaviour-analytics/event-builder/purchase.type.d.ts +1 -0
- package/lib/core/user-behaviour-analytics/event-builder/user-behaviour-event.interface.d.ts +52 -0
- package/lib/core/user-behaviour-analytics/one-time-analytics-events.const.d.ts +1 -0
- package/lib/core/user-behaviour-analytics/user-behaviour-analytics.interface.d.ts +36 -0
- package/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.d.ts +43 -0
- package/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.d.ts +4 -0
- package/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.d.ts +7 -0
- package/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.d.ts +6 -0
- package/lib/core/user-behaviour-analytics/user-session-options.d.ts +15 -0
- package/lib/core-library.service.d.ts +8 -5
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
- package/xsolla-payment-client-core-0.2.12.tgz +0 -0
- package/xsolla-payment-client-core-0.2.10.tgz +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Subject } from 'rxjs';
|
|
2
2
|
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { applePayVersion } from './apple-pay.const';
|
|
3
|
+
import { applePayVersion, safariVersionForIframeIntegration, } from './apple-pay.const';
|
|
4
4
|
import { agreementsGroup } from '../../agreementsGroup.const';
|
|
5
5
|
import { windowToken } from '../../window.token';
|
|
6
6
|
import { FieldNames } from '../../payment/field-names.enum';
|
|
7
7
|
import { ApplePayErrors } from './apple-pay.errors.enum';
|
|
8
8
|
import { pagesRoutes } from '../../payment/actions/redirect/ps4-pages/pages-routes.const';
|
|
9
9
|
import { applePayId } from '../../payment/actions/redirect/ps4-pages/pages-payment-methods-id.const';
|
|
10
|
+
import { payStation4Url, sandboxPayStationUrl, } from '../../payment/actions/redirect/pay-station4-url.const';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
import * as i1 from "../../user-agent/user-agent.service";
|
|
12
13
|
import * as i2 from "../../payment/finance-details/summary/summary-finance-details-adapter.service";
|
|
@@ -85,7 +86,7 @@ export class ApplePayService {
|
|
|
85
86
|
this.emitError(ApplePayErrors.deviceIsNotCapableError);
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
redirectToPaymentPage(parameters, token) {
|
|
89
|
+
redirectToPaymentPage(parameters, token, isSandbox) {
|
|
89
90
|
const route = pagesRoutes.get(applePayId);
|
|
90
91
|
if (!route) {
|
|
91
92
|
return;
|
|
@@ -100,8 +101,8 @@ export class ApplePayService {
|
|
|
100
101
|
if (this.order) {
|
|
101
102
|
query.append('order', this.order);
|
|
102
103
|
}
|
|
103
|
-
const
|
|
104
|
-
return
|
|
104
|
+
const payStationUrl = isSandbox ? sandboxPayStationUrl : payStation4Url;
|
|
105
|
+
return `${payStationUrl}/en${route}?${query.toString()}`;
|
|
105
106
|
}
|
|
106
107
|
setOrder(data) {
|
|
107
108
|
const summary = data?.paymentForm?.summary;
|
|
@@ -152,6 +153,7 @@ export class ApplePayService {
|
|
|
152
153
|
})
|
|
153
154
|
.catch((error) => {
|
|
154
155
|
console.error('apple pay: merchant validation error', error);
|
|
156
|
+
this.emitError(ApplePayErrors.paymentError);
|
|
155
157
|
session.abort();
|
|
156
158
|
});
|
|
157
159
|
};
|
|
@@ -167,6 +169,7 @@ export class ApplePayService {
|
|
|
167
169
|
})
|
|
168
170
|
.catch((error) => {
|
|
169
171
|
console.error('apple pay: payment authorization error', error);
|
|
172
|
+
this.emitError(ApplePayErrors.paymentError);
|
|
170
173
|
session.completePayment(this.window.ApplePaySession.STATUS_FAILURE);
|
|
171
174
|
});
|
|
172
175
|
};
|
|
@@ -239,7 +242,7 @@ export class ApplePayService {
|
|
|
239
242
|
}
|
|
240
243
|
emitIntegrationType() {
|
|
241
244
|
let integrationType;
|
|
242
|
-
if (this.paymentClient && this.isDeviceCapable()) {
|
|
245
|
+
if (this.paymentClient && this.isDeviceCapable() && this.canUseSdk()) {
|
|
243
246
|
integrationType = 'sdk';
|
|
244
247
|
}
|
|
245
248
|
else if (this.userAgentService.isSafari) {
|
|
@@ -250,6 +253,10 @@ export class ApplePayService {
|
|
|
250
253
|
}
|
|
251
254
|
this.integrationType.next(integrationType);
|
|
252
255
|
}
|
|
256
|
+
canUseSdk() {
|
|
257
|
+
return !!(this.userAgentService.safariVersion &&
|
|
258
|
+
this.userAgentService.safariVersion >= safariVersionForIframeIntegration);
|
|
259
|
+
}
|
|
253
260
|
}
|
|
254
261
|
ApplePayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: i1.UserAgentService }, { token: i2.SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
255
262
|
ApplePayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ApplePayService, providedIn: 'root' });
|
|
@@ -262,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
262
269
|
type: Inject,
|
|
263
270
|
args: [windowToken]
|
|
264
271
|
}] }, { type: i1.UserAgentService }, { type: i2.SummaryFinanceDetailsAdapterService }]; } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGUtcGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2FwcGxlLXBheS9hcHBsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7OztBQU9yRyxNQUFNLE9BQU8sZUFBZTtJQWUxQixJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENB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QUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NEdBNVRVLGVBQWUsa0JBK0JoQixXQUFXO2dIQS9CVixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0NJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxlUGF5LCBhcHBsZVBheSwgY2xpZW50IH0gZnJvbSAnYnJhaW50cmVlLXdlYic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFwcGxlUGF5VmVyc2lvbiB9IGZyb20gJy4vYXBwbGUtcGF5LmNvbnN0JztcbmltcG9ydCB7IGFncmVlbWVudHNHcm91cCB9IGZyb20gJy4uLy4uL2FncmVlbWVudHNHcm91cC5jb25zdCc7XG5pbXBvcnQgeyBBcHBsZVBheVBhcmFtcyB9IGZyb20gJy4vYXBwbGUtcGF5LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9wYXltZW50L2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgWHBzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L3hwcy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBBcHBsZVBheUVycm9ycyB9IGZyb20gJy4vYXBwbGUtcGF5LmVycm9ycy5lbnVtJztcbmltcG9ydCB7IFVzZXJBZ2VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWFnZW50L3VzZXItYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsZVBheUludGVncmF0aW9uIH0gZnJvbSAnLi9hcHBsZS1wYXktaW50ZWdyYXRpb24udHlwZSc7XG5pbXBvcnQgeyBwYWdlc1JvdXRlcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9yZWRpcmVjdC9wczQtcGFnZXMvcGFnZXMtcm91dGVzLmNvbnN0JztcbmltcG9ydCB7IGFwcGxlUGF5SWQgfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvcmVkaXJlY3QvcHM0LXBhZ2VzL3BhZ2VzLXBheW1lbnQtbWV0aG9kcy1pZC5jb25zdCc7XG5pbXBvcnQgeyBJbml0aWFsaXplUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L2luaXRpYWxpemUvcmVzcG9uc2UvaW5pdGlhbGl6ZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBTdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL3N1bW1hcnkvc3VtbWFyeS1maW5hbmNlLWRldGFpbHMtYWRhcHRlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxlUGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdyZWVtZW50RmllbGRzTmFtZXM6IHN0cmluZ1tdID0gYWdyZWVtZW50c0dyb3VwO1xuICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3I6IFN1YmplY3Q8QXBwbGVQYXlFcnJvcnM+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvblR5cGU6IFN1YmplY3Q8QXBwbGVQYXlJbnRlZ3JhdGlvbj4gPVxuICAgIG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBwYXltZW50Q2xpZW50OiBBcHBsZVBheSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpOiBQcm9taXNlPHtcbiAgICBhcHBsZVBheTogdHlwZW9mIGFwcGxlUGF5O1xuICAgIGNsaWVudDogdHlwZW9mIGNsaWVudDtcbiAgfT47XG4gIHByaXZhdGUgYXBwbGVQYXlQYXJhbXM6IEFwcGxlUGF5UGFyYW1zIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb3JkZXI/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGdldCBwYXltZW50UGFyYW1ldGVycygpOiBBcHBsZVBheVBhcmFtcyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFwcGxlUGF5UGFyYW1zO1xuICB9XG4gIHB1YmxpYyBnZXQgcGF5bWVudCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvciQoKTogT2JzZXJ2YWJsZTxBcHBsZVBheUVycm9ycz4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlZ3JhdGlvblR5cGUkKCk6IE9ic2VydmFibGU8QXBwbGVQYXlJbnRlZ3JhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmludGVncmF0aW9uVHlwZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQWdlbnRTZXJ2aWNlOiBVc2VyQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2U6IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXBpID0gdGhpcy5sb2FkQnJhaW50cmVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uZmllbGRzO1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcblxuICAgIGlmICghZm9ybUZpZWxkcyB8fCAhc3VtbWFyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSBmb3JtRmllbGRzLnJlZHVjZShcbiAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzLmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmXG4gICAgICAgICAgZmllbGQuaXNWaXNpYmxlID09PSAnMSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudGl0bGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IGFncmVlbWVudHMgPSB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzXG4gICAgICAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkc1tmaWVsZE5hbWUgYXMga2V5b2YgdHlwZW9mIGZpZWxkc10gYXMgc3RyaW5nKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHRoaXMuYXBwbGVQYXlQYXJhbXMgPSB7XG4gICAgICB0b2tlbktleTogdGhpcy5nZXRBcHBsZVRva2VuKGZvcm1GaWVsZHMpLFxuICAgICAgdG90YWxMYWJlbDogZmllbGRzWydsYWJlbF9hcHBsZVBheSddID8/ICcnLFxuICAgICAgdG90YWxBbW91bnQ6IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSksXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuZ2V0VG90YWxDdXJyZW5jeShzdW1tYXJ5KSxcbiAgICAgIGNvdW50cnlDb2RlOiBmaWVsZHNbJ2NvdW50cnlDb2RlJ10gPz8gJycsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogdGhpcy5nZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgJ21lcmNoYW50Q2FwYWJpbGl0aWVzJ1xuICAgICAgKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiB0aGlzLmdldEpzb25WYWx1ZUZyb21GaWVsZChcbiAgICAgICAgZmllbGRzLFxuICAgICAgICAnc3VwcG9ydGVkTmV0d29ya3MnXG4gICAgICApLFxuICAgICAgYWdyZWVtZW50czogYWdyZWVtZW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRMaWJyYXJ5KHRva2VuS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBpID0gYXdhaXQgdGhpcy5hcGk7XG4gICAgICBjb25zdCBjbGllbnRJbnN0YW5jZSA9IGF3YWl0IGFwaS5jbGllbnQuY3JlYXRlKHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogdG9rZW5LZXksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXltZW50Q2xpZW50ID0gYXdhaXQgYXBpLmFwcGxlUGF5LmNyZWF0ZSh7XG4gICAgICAgIGNsaWVudDogY2xpZW50SW5zdGFuY2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBpbml0aWFsaXplIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJbnRlZ3JhdGlvblR5cGUoKTtcblxuICAgIGlmIChcbiAgICAgICF0aGlzLnBheW1lbnRDbGllbnQgfHxcbiAgICAgICghdGhpcy5pc0RldmljZUNhcGFibGUoKSAmJiAhdGhpcy51c2VyQWdlbnRTZXJ2aWNlLmlzU2FmYXJpKVxuICAgICkge1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMuZGV2aWNlSXNOb3RDYXBhYmxlRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWRpcmVjdFRvUGF5bWVudFBhZ2UoXG4gICAgcGFyYW1ldGVyczogQXBwbGVQYXlQYXJhbXMsXG4gICAgdG9rZW46IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJvdXRlID0gcGFnZXNSb3V0ZXMuZ2V0KGFwcGxlUGF5SWQpO1xuICAgIGlmICghcm91dGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLnN1cHBvcnRlZE5ldHdvcmtzKSxcbiAgICAgIHRva2VuLFxuICAgICAgYWdyZWVtZW50czogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5hZ3JlZW1lbnRzKSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9yZGVyKSB7XG4gICAgICBxdWVyeS5hcHBlbmQoJ29yZGVyJywgdGhpcy5vcmRlcik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gYCR7cm91dGV9PyR7cXVlcnkudG9TdHJpbmcoKX1gO1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwdWJsaWMgc2V0T3JkZXIoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcbiAgICBpZiAoIXN1bW1hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmluYW5jZURldGFpbHMgPVxuICAgICAgdGhpcy5zdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZS5nZXRGaW5hbmNlRGV0YWlscyhzdW1tYXJ5KTtcblxuICAgIGlmIChmaW5hbmNlRGV0YWlscz8ucHVyY2hhc2UgJiYgZmluYW5jZURldGFpbHM/LmZpbmFuY2UpIHtcbiAgICAgIGNvbnN0IGNhcnRJdGVtcyA9IGZpbmFuY2VEZXRhaWxzLmNhcnRJdGVtcztcbiAgICAgIHRoaXMub3JkZXIgPSBjYXJ0SXRlbXM/LnJlZHVjZSgoY3VyciwgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoY3Vycikge1xuICAgICAgICAgIHJldHVybiBjdXJyICsgYDsgJHtpdGVtLnRpdGxlfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VyciArIGl0ZW0udGl0bGU7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb2NlZWRDaGVja291dChwYXJhbWV0ZXJzPzogQXBwbGVQYXlQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAoIXBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudENsaWVudCB8fCAhdGhpcy5pc0RldmljZUNhcGFibGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdhcHBsZSBwYXk6IGRldmljZSBpcyBub3QgY2FwYWJsZScsIHRoaXMucGF5bWVudENsaWVudCk7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5kZXZpY2VJc05vdENhcGFibGVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheW1lbnRSZXF1ZXN0ID0gdGhpcy5wYXltZW50Q2xpZW50LmNyZWF0ZVBheW1lbnRSZXF1ZXN0KHtcbiAgICAgICAgdG90YWw6IHtcbiAgICAgICAgICBsYWJlbDogcGFyYW1ldGVycy50b3RhbExhYmVsLFxuICAgICAgICAgIGFtb3VudDogcGFyYW1ldGVycy50b3RhbEFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVuY3lDb2RlOiBwYXJhbWV0ZXJzLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgY291bnRyeUNvZGU6IHBhcmFtZXRlcnMuY291bnRyeUNvZGUsXG4gICAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzLFxuICAgICAgICBzdXBwb3J0ZWROZXR3b3JrczogcGFyYW1ldGVycy5zdXBwb3J0ZWROZXR3b3JrcyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gbmV3IHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbihcbiAgICAgICAgYXBwbGVQYXlWZXJzaW9uLFxuICAgICAgICBwYXltZW50UmVxdWVzdFxuICAgICAgKTtcblxuICAgICAgc2Vzc2lvbi5vbnZhbGlkYXRlbWVyY2hhbnQgPSAoZXZlbnQ6IHsgdmFsaWRhdGlvblVSTDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IG1lcmNoYW50IHZhbGlkYXRpb24nLCBldmVudCk7XG4gICAgICAgIHRoaXMucGF5bWVudENsaWVudFxuICAgICAgICAgID8ucGVyZm9ybVZhbGlkYXRpb24oe1xuICAgICAgICAgICAgdmFsaWRhdGlvblVSTDogZXZlbnQudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBwYXJhbWV0ZXJzPy50b3RhbExhYmVsLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKG1lcmNoYW50U2Vzc2lvbikgPT4ge1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihtZXJjaGFudFNlc3Npb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBtZXJjaGFudCB2YWxpZGF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5vbnBheW1lbnRhdXRob3JpemVkID0gKGV2ZW50OiB7IHBheW1lbnQ6IHsgdG9rZW46IHN0cmluZyB9IH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IHBheW1lbnQgYXV0aG9yaXphdGlvbicsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYXltZW50Q2xpZW50XG4gICAgICAgICAgPy50b2tlbml6ZSh7XG4gICAgICAgICAgICB0b2tlbjogZXZlbnQucGF5bWVudC50b2tlbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChhdXRob3JpemF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGF5bWVudC5uZXh0KGF1dGhvcml6YXRpb25SZXNwb25zZT8ubm9uY2UgPz8gJycpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogcGF5bWVudCBhdXRob3JpemF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNlc3Npb24ub25jYW5jZWwgPSAoZXZlbnQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiB1c2VyIGNhbmNlbCBwYXltZW50JywgZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5iZWdpbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IGNoZWNrb3V0IGVycm9yJywgZXJyb3IpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEZXZpY2VDYXBhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgICAgdGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uPy5zdXBwb3J0c1ZlcnNpb24oYXBwbGVQYXlWZXJzaW9uKSAmJlxuICAgICAgICAgIHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbj8uY2FuTWFrZVBheW1lbnRzKClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW5Ob25jZUZpZWxkRGF0YSh0b2tlbk5vbmNlOiBzdHJpbmcpOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IG5hbWUgPSBGaWVsZE5hbWVzLnRva2VuQXBwbGVQYXk7XG4gICAgY29uc3QgdmFsdWUgPSBidG9hKHRva2VuTm9uY2UpO1xuICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBYcHNSZXNwb25zZSk/LnN1bW1hcnk7XG4gICAgaWYgKCF0aGlzLmFwcGxlUGF5UGFyYW1zIHx8ICFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy50b3RhbEFtb3VudCA9IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSk7XG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy5jdXJyZW5jeUNvZGUgPSB0aGlzLmdldFRvdGFsQ3VycmVuY3koc3VtbWFyeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRCcmFpbnRyZWUoKTogUHJvbWlzZTx7XG4gICAgYXBwbGVQYXk6IHR5cGVvZiBhcHBsZVBheTtcbiAgICBjbGllbnQ6IHR5cGVvZiBjbGllbnQ7XG4gIH0+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCBpbXBvcnQoJ2JyYWludHJlZS13ZWInKTtcblxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcGxlVG9rZW4oZm9ybUZpZWxkczogRmllbGRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwbGVUb2tlbkZpZWxkID0gZm9ybUZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09ICd0b2tlbl9rZXknO1xuICAgIH0pO1xuXG4gICAgaWYgKCFhcHBsZVRva2VuRmllbGQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbGVUb2tlbkZpZWxkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEFtb3VudChzdW1tYXJ5OiBYcHNSZXNwb25zZVsnc3VtbWFyeSddKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5hbmNlID0gc3VtbWFyeT8uZmluYW5jZTtcbiAgICBjb25zdCB0b3RhbCA9IGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5hbW91bnQgPz8gZmluYW5jZT8udG90YWwuYW1vdW50O1xuXG4gICAgcmV0dXJuIHRvdGFsPy50b1N0cmluZygpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEN1cnJlbmN5KHN1bW1hcnk6IFhwc1Jlc3BvbnNlWydzdW1tYXJ5J10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFuY2UgPSBzdW1tYXJ5Py5maW5hbmNlO1xuICAgIHJldHVybiBmaW5hbmNlPy5ncmFuZF90b3RhbD8uY3VycmVuY3kgPz8gZmluYW5jZT8udG90YWw/LmN1cnJlbmN5ID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgZmllbGRzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfSxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZmllbGQgPyAoSlNPTi5wYXJzZShmaWVsZCkgYXMgc3RyaW5nW10pIDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEVycm9yKGVycm9yOiBBcHBsZVBheUVycm9ycyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlZ3JhdGlvblR5cGUoKTogdm9pZCB7XG4gICAgbGV0IGludGVncmF0aW9uVHlwZTogQXBwbGVQYXlJbnRlZ3JhdGlvbjtcbiAgICBpZiAodGhpcy5wYXltZW50Q2xpZW50ICYmIHRoaXMuaXNEZXZpY2VDYXBhYmxlKCkpIHtcbiAgICAgIGludGVncmF0aW9uVHlwZSA9ICdzZGsnO1xuICAgIH0gZWxzZSBpZiAodGhpcy51c2VyQWdlbnRTZXJ2aWNlLmlzU2FmYXJpKSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAncmVkaXJlY3QnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAnbm9uZSc7XG4gICAgfVxuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlLm5leHQoaW50ZWdyYXRpb25UeXBlKTtcbiAgfVxufVxuIl19
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGUtcGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2FwcGxlLXBheS9hcHBsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUNBQWlDLEdBQ2xDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFHckcsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx1REFBdUQsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sZUFBZTtJQWUxQixJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lB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b0MsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwRSxlQUFlLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO1lBQ3pDLGVBQWUsR0FBRyxVQUFVLENBQUM7U0FDOUI7YUFBTTtZQUNMLGVBQWUsR0FBRyxNQUFNLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sU0FBUztRQUNmLE9BQU8sQ0FBQyxDQUFDLENBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWE7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxpQ0FBaUMsQ0FDekUsQ0FBQztJQUNKLENBQUM7OzRHQXRVVSxlQUFlLGtCQStCaEIsV0FBVztnSEEvQlYsZUFBZSxjQUZkLE1BQU07MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWdDSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsZVBheSwgYXBwbGVQYXksIGNsaWVudCB9IGZyb20gJ2JyYWludHJlZS13ZWInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhcHBsZVBheVZlcnNpb24sXG4gIHNhZmFyaVZlcnNpb25Gb3JJZnJhbWVJbnRlZ3JhdGlvbixcbn0gZnJvbSAnLi9hcHBsZS1wYXkuY29uc3QnO1xuaW1wb3J0IHsgYWdyZWVtZW50c0dyb3VwIH0gZnJvbSAnLi4vLi4vYWdyZWVtZW50c0dyb3VwLmNvbnN0JztcbmltcG9ydCB7IEFwcGxlUGF5UGFyYW1zIH0gZnJvbSAnLi9hcHBsZS1wYXktcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4dGVuZGVkV2luZG93IH0gZnJvbSAnLi4vLi4vZXh0ZW5kZWQtd2luZG93LmludGVyZmFjZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBYcHNSZXNwb25zZSB9IGZyb20gJy4uLy4uL3BheW1lbnQveHBzLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWVsZE5hbWVzIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9maWVsZC1uYW1lcy5lbnVtJztcbmltcG9ydCB7IEFwcGxlUGF5RXJyb3JzIH0gZnJvbSAnLi9hcHBsZS1wYXkuZXJyb3JzLmVudW0nO1xuaW1wb3J0IHsgVXNlckFnZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItYWdlbnQvdXNlci1hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxlUGF5SW50ZWdyYXRpb24gfSBmcm9tICcuL2FwcGxlLXBheS1pbnRlZ3JhdGlvbi50eXBlJztcbmltcG9ydCB7IHBhZ2VzUm91dGVzIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL3JlZGlyZWN0L3BzNC1wYWdlcy9wYWdlcy1yb3V0ZXMuY29uc3QnO1xuaW1wb3J0IHsgYXBwbGVQYXlJZCB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9yZWRpcmVjdC9wczQtcGFnZXMvcGFnZXMtcGF5bWVudC1tZXRob2RzLWlkLmNvbnN0JztcbmltcG9ydCB7IEluaXRpYWxpemVSZXNwb25zZSB9IGZyb20gJy4uLy4uL3BheW1lbnQvaW5pdGlhbGl6ZS9yZXNwb25zZS9pbml0aWFsaXplLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9maW5hbmNlLWRldGFpbHMvc3VtbWFyeS9zdW1tYXJ5LWZpbmFuY2UtZGV0YWlscy1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgcGF5U3RhdGlvbjRVcmwsXG4gIHNhbmRib3hQYXlTdGF0aW9uVXJsLFxufSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvcmVkaXJlY3QvcGF5LXN0YXRpb240LXVybC5jb25zdCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBsZVBheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGFncmVlbWVudEZpZWxkc05hbWVzOiBzdHJpbmdbXSA9IGFncmVlbWVudHNHcm91cDtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXltZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVycm9yOiBTdWJqZWN0PEFwcGxlUGF5RXJyb3JzPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZWdyYXRpb25UeXBlOiBTdWJqZWN0PEFwcGxlUGF5SW50ZWdyYXRpb24+ID1cbiAgICBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcGF5bWVudENsaWVudDogQXBwbGVQYXkgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFwaTogUHJvbWlzZTx7XG4gICAgYXBwbGVQYXk6IHR5cGVvZiBhcHBsZVBheTtcbiAgICBjbGllbnQ6IHR5cGVvZiBjbGllbnQ7XG4gIH0+O1xuICBwcml2YXRlIGFwcGxlUGF5UGFyYW1zOiBBcHBsZVBheVBhcmFtcyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9yZGVyPzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBnZXQgcGF5bWVudFBhcmFtZXRlcnMoKTogQXBwbGVQYXlQYXJhbXMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsZVBheVBhcmFtcztcbiAgfVxuICBwdWJsaWMgZ2V0IHBheW1lbnQkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucGF5bWVudC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXJyb3IkKCk6IE9ic2VydmFibGU8QXBwbGVQYXlFcnJvcnM+IHtcbiAgICByZXR1cm4gdGhpcy5lcnJvci5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW50ZWdyYXRpb25UeXBlJCgpOiBPYnNlcnZhYmxlPEFwcGxlUGF5SW50ZWdyYXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5pbnRlZ3JhdGlvblR5cGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbikgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlckFnZW50U2VydmljZTogVXNlckFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlOiBTdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmFwaSA9IHRoaXMubG9hZEJyYWludHJlZSgpO1xuICB9XG5cbiAgcHVibGljIHNldEFwcGxlUGF5UGFyYW1zKGRhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRmllbGRzID0gKGRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKT8ucGF5bWVudEZvcm0/LmZpZWxkcztcbiAgICBjb25zdCBzdW1tYXJ5ID0gKGRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKT8ucGF5bWVudEZvcm0/LnN1bW1hcnk7XG5cbiAgICBpZiAoIWZvcm1GaWVsZHMgfHwgIXN1bW1hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmllbGRzID0gZm9ybUZpZWxkcy5yZWR1Y2UoXG4gICAgICAoYWNjOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCBmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5hZ3JlZW1lbnRGaWVsZHNOYW1lcy5pbmNsdWRlcyhmaWVsZC5uYW1lKSAmJlxuICAgICAgICAgIGZpZWxkLmlzVmlzaWJsZSA9PT0gJzEnXG4gICAgICAgICkge1xuICAgICAgICAgIGFjY1tmaWVsZC5uYW1lXSA9IGZpZWxkLnRpdGxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjY1tmaWVsZC5uYW1lXSA9IGZpZWxkLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBjb25zdCBhZ3JlZW1lbnRzID0gdGhpcy5hZ3JlZW1lbnRGaWVsZHNOYW1lc1xuICAgICAgLm1hcCgoZmllbGROYW1lKSA9PiBmaWVsZHNbZmllbGROYW1lIGFzIGtleW9mIHR5cGVvZiBmaWVsZHNdIGFzIHN0cmluZylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICB0aGlzLmFwcGxlUGF5UGFyYW1zID0ge1xuICAgICAgdG9rZW5LZXk6IHRoaXMuZ2V0QXBwbGVUb2tlbihmb3JtRmllbGRzKSxcbiAgICAgIHRvdGFsTGFiZWw6IGZpZWxkc1snbGFiZWxfYXBwbGVQYXknXSA/PyAnJyxcbiAgICAgIHRvdGFsQW1vdW50OiB0aGlzLmdldFRvdGFsQW1vdW50KHN1bW1hcnkpLFxuICAgICAgY3VycmVuY3lDb2RlOiB0aGlzLmdldFRvdGFsQ3VycmVuY3koc3VtbWFyeSksXG4gICAgICBjb3VudHJ5Q29kZTogZmllbGRzWydjb3VudHJ5Q29kZSddID8/ICcnLFxuICAgICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IHRoaXMuZ2V0SnNvblZhbHVlRnJvbUZpZWxkKFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgICdtZXJjaGFudENhcGFiaWxpdGllcydcbiAgICAgICksXG4gICAgICBzdXBwb3J0ZWROZXR3b3JrczogdGhpcy5nZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgJ3N1cHBvcnRlZE5ldHdvcmtzJ1xuICAgICAgKSxcbiAgICAgIGFncmVlbWVudHM6IGFncmVlbWVudHMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0TGlicmFyeSh0b2tlbktleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwaSA9IGF3YWl0IHRoaXMuYXBpO1xuICAgICAgY29uc3QgY2xpZW50SW5zdGFuY2UgPSBhd2FpdCBhcGkuY2xpZW50LmNyZWF0ZSh7XG4gICAgICAgIGF1dGhvcml6YXRpb246IHRva2VuS2V5LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucGF5bWVudENsaWVudCA9IGF3YWl0IGFwaS5hcHBsZVBheS5jcmVhdGUoe1xuICAgICAgICBjbGllbnQ6IGNsaWVudEluc3RhbmNlLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogaW5pdGlhbGl6ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0SW50ZWdyYXRpb25UeXBlKCk7XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5wYXltZW50Q2xpZW50IHx8XG4gICAgICAoIXRoaXMuaXNEZXZpY2VDYXBhYmxlKCkgJiYgIXRoaXMudXNlckFnZW50U2VydmljZS5pc1NhZmFyaSlcbiAgICApIHtcbiAgICAgIHRoaXMuZW1pdEVycm9yKEFwcGxlUGF5RXJyb3JzLmRldmljZUlzTm90Q2FwYWJsZUVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVkaXJlY3RUb1BheW1lbnRQYWdlKFxuICAgIHBhcmFtZXRlcnM6IEFwcGxlUGF5UGFyYW1zLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgaXNTYW5kYm94PzogYm9vbGVhblxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJvdXRlID0gcGFnZXNSb3V0ZXMuZ2V0KGFwcGxlUGF5SWQpO1xuICAgIGlmICghcm91dGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzLnN1cHBvcnRlZE5ldHdvcmtzKSxcbiAgICAgIHRva2VuLFxuICAgICAgYWdyZWVtZW50czogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5hZ3JlZW1lbnRzKSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLm9yZGVyKSB7XG4gICAgICBxdWVyeS5hcHBlbmQoJ29yZGVyJywgdGhpcy5vcmRlcik7XG4gICAgfVxuXG4gICAgY29uc3QgcGF5U3RhdGlvblVybCA9IGlzU2FuZGJveCA/IHNhbmRib3hQYXlTdGF0aW9uVXJsIDogcGF5U3RhdGlvbjRVcmw7XG4gICAgcmV0dXJuIGAke3BheVN0YXRpb25Vcmx9L2VuJHtyb3V0ZX0/JHtxdWVyeS50b1N0cmluZygpfWA7XG4gIH1cblxuICBwdWJsaWMgc2V0T3JkZXIoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcbiAgICBpZiAoIXN1bW1hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmluYW5jZURldGFpbHMgPVxuICAgICAgdGhpcy5zdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZS5nZXRGaW5hbmNlRGV0YWlscyhzdW1tYXJ5KTtcblxuICAgIGlmIChmaW5hbmNlRGV0YWlscz8ucHVyY2hhc2UgJiYgZmluYW5jZURldGFpbHM/LmZpbmFuY2UpIHtcbiAgICAgIGNvbnN0IGNhcnRJdGVtcyA9IGZpbmFuY2VEZXRhaWxzLmNhcnRJdGVtcztcbiAgICAgIHRoaXMub3JkZXIgPSBjYXJ0SXRlbXM/LnJlZHVjZSgoY3VyciwgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoY3Vycikge1xuICAgICAgICAgIHJldHVybiBjdXJyICsgYDsgJHtpdGVtLnRpdGxlfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VyciArIGl0ZW0udGl0bGU7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb2NlZWRDaGVja291dChwYXJhbWV0ZXJzPzogQXBwbGVQYXlQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAoIXBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudENsaWVudCB8fCAhdGhpcy5pc0RldmljZUNhcGFibGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKCdhcHBsZSBwYXk6IGRldmljZSBpcyBub3QgY2FwYWJsZScsIHRoaXMucGF5bWVudENsaWVudCk7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5kZXZpY2VJc05vdENhcGFibGVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheW1lbnRSZXF1ZXN0ID0gdGhpcy5wYXltZW50Q2xpZW50LmNyZWF0ZVBheW1lbnRSZXF1ZXN0KHtcbiAgICAgICAgdG90YWw6IHtcbiAgICAgICAgICBsYWJlbDogcGFyYW1ldGVycy50b3RhbExhYmVsLFxuICAgICAgICAgIGFtb3VudDogcGFyYW1ldGVycy50b3RhbEFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVuY3lDb2RlOiBwYXJhbWV0ZXJzLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgY291bnRyeUNvZGU6IHBhcmFtZXRlcnMuY291bnRyeUNvZGUsXG4gICAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBwYXJhbWV0ZXJzLm1lcmNoYW50Q2FwYWJpbGl0aWVzLFxuICAgICAgICBzdXBwb3J0ZWROZXR3b3JrczogcGFyYW1ldGVycy5zdXBwb3J0ZWROZXR3b3JrcyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gbmV3IHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbihcbiAgICAgICAgYXBwbGVQYXlWZXJzaW9uLFxuICAgICAgICBwYXltZW50UmVxdWVzdFxuICAgICAgKTtcblxuICAgICAgc2Vzc2lvbi5vbnZhbGlkYXRlbWVyY2hhbnQgPSAoZXZlbnQ6IHsgdmFsaWRhdGlvblVSTDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdhcHBsZSBwYXk6IG1lcmNoYW50IHZhbGlkYXRpb24nLCBldmVudCk7XG4gICAgICAgIHRoaXMucGF5bWVudENsaWVudFxuICAgICAgICAgID8ucGVyZm9ybVZhbGlkYXRpb24oe1xuICAgICAgICAgICAgdmFsaWRhdGlvblVSTDogZXZlbnQudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBwYXJhbWV0ZXJzPy50b3RhbExhYmVsLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKG1lcmNoYW50U2Vzc2lvbikgPT4ge1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihtZXJjaGFudFNlc3Npb24pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBtZXJjaGFudCB2YWxpZGF0aW9uIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNlc3Npb24ub25wYXltZW50YXV0aG9yaXplZCA9IChldmVudDogeyBwYXltZW50OiB7IHRva2VuOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnYXBwbGUgcGF5OiBwYXltZW50IGF1dGhvcml6YXRpb24nLCBldmVudCk7XG4gICAgICAgIHRoaXMucGF5bWVudENsaWVudFxuICAgICAgICAgID8udG9rZW5pemUoe1xuICAgICAgICAgICAgdG9rZW46IGV2ZW50LnBheW1lbnQudG9rZW4sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigoYXV0aG9yaXphdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBheW1lbnQubmV4dChhdXRob3JpemF0aW9uUmVzcG9uc2U/Lm5vbmNlID8/ICcnKTtcbiAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVQYXltZW50KHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfU1VDQ0VTUyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IHBheW1lbnQgYXV0aG9yaXphdGlvbiBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKEFwcGxlUGF5RXJyb3JzLnBheW1lbnRFcnJvcik7XG4gICAgICAgICAgICBzZXNzaW9uLmNvbXBsZXRlUGF5bWVudCh0aGlzLndpbmRvdy5BcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5vbmNhbmNlbCA9IChldmVudDogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5wYXltZW50RXJyb3IpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IHVzZXIgY2FuY2VsIHBheW1lbnQnLCBldmVudCk7XG4gICAgICB9O1xuXG4gICAgICBzZXNzaW9uLmJlZ2luKCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogY2hlY2tvdXQgZXJyb3InLCBlcnJvcik7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5wYXltZW50RXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0RldmljZUNhcGFibGUoKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgICB0aGlzLndpbmRvdy5BcHBsZVBheVNlc3Npb24/LnN1cHBvcnRzVmVyc2lvbihhcHBsZVBheVZlcnNpb24pICYmXG4gICAgICAgICAgdGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uPy5jYW5NYWtlUGF5bWVudHMoKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUb2tlbk5vbmNlRmllbGREYXRhKHRva2VuTm9uY2U6IHN0cmluZyk6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgbmFtZSA9IEZpZWxkTmFtZXMudG9rZW5BcHBsZVBheTtcbiAgICBjb25zdCB2YWx1ZSA9IGJ0b2EodG9rZW5Ob25jZSk7XG4gICAgcmV0dXJuIHsgbmFtZSwgdmFsdWUgfTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBcHBsZVBheVBhcmFtcyhkYXRhOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3Qgc3VtbWFyeSA9IChkYXRhIGFzIFhwc1Jlc3BvbnNlKT8uc3VtbWFyeTtcbiAgICBpZiAoIXRoaXMuYXBwbGVQYXlQYXJhbXMgfHwgIXN1bW1hcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFwcGxlUGF5UGFyYW1zLnRvdGFsQW1vdW50ID0gdGhpcy5nZXRUb3RhbEFtb3VudChzdW1tYXJ5KTtcbiAgICB0aGlzLmFwcGxlUGF5UGFyYW1zLmN1cnJlbmN5Q29kZSA9IHRoaXMuZ2V0VG90YWxDdXJyZW5jeShzdW1tYXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEJyYWludHJlZSgpOiBQcm9taXNlPHtcbiAgICBhcHBsZVBheTogdHlwZW9mIGFwcGxlUGF5O1xuICAgIGNsaWVudDogdHlwZW9mIGNsaWVudDtcbiAgfT4ge1xuICAgIGNvbnN0IGFwaSA9IGF3YWl0IGltcG9ydCgnYnJhaW50cmVlLXdlYicpO1xuXG4gICAgcmV0dXJuIGFwaTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXBwbGVUb2tlbihmb3JtRmllbGRzOiBGaWVsZFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcHBsZVRva2VuRmllbGQgPSBmb3JtRmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGQubmFtZSA9PT0gJ3Rva2VuX2tleSc7XG4gICAgfSk7XG5cbiAgICBpZiAoIWFwcGxlVG9rZW5GaWVsZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBhcHBsZVRva2VuRmllbGQudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldFRvdGFsQW1vdW50KHN1bW1hcnk6IFhwc1Jlc3BvbnNlWydzdW1tYXJ5J10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFuY2UgPSBzdW1tYXJ5Py5maW5hbmNlO1xuICAgIGNvbnN0IHRvdGFsID0gZmluYW5jZT8uZ3JhbmRfdG90YWw/LmFtb3VudCA/PyBmaW5hbmNlPy50b3RhbC5hbW91bnQ7XG5cbiAgICByZXR1cm4gdG90YWw/LnRvU3RyaW5nKCkgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIGdldFRvdGFsQ3VycmVuY3koc3VtbWFyeTogWHBzUmVzcG9uc2VbJ3N1bW1hcnknXSk6IHN0cmluZyB7XG4gICAgY29uc3QgZmluYW5jZSA9IHN1bW1hcnk/LmZpbmFuY2U7XG4gICAgcmV0dXJuIGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5jdXJyZW5jeSA/PyBmaW5hbmNlPy50b3RhbD8uY3VycmVuY3kgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIGdldEpzb25WYWx1ZUZyb21GaWVsZChcbiAgICBmaWVsZHM6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgICB9LFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmaWVsZCA9IGZpZWxkc1tmaWVsZE5hbWVdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmaWVsZCA/IChKU09OLnBhcnNlKGZpZWxkKSBhcyBzdHJpbmdbXSkgOiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RXJyb3IoZXJyb3I6IEFwcGxlUGF5RXJyb3JzKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvci5uZXh0KGVycm9yKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEludGVncmF0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICBsZXQgaW50ZWdyYXRpb25UeXBlOiBBcHBsZVBheUludGVncmF0aW9uO1xuICAgIGlmICh0aGlzLnBheW1lbnRDbGllbnQgJiYgdGhpcy5pc0RldmljZUNhcGFibGUoKSAmJiB0aGlzLmNhblVzZVNkaygpKSB7XG4gICAgICBpbnRlZ3JhdGlvblR5cGUgPSAnc2RrJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudXNlckFnZW50U2VydmljZS5pc1NhZmFyaSkge1xuICAgICAgaW50ZWdyYXRpb25UeXBlID0gJ3JlZGlyZWN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZWdyYXRpb25UeXBlID0gJ25vbmUnO1xuICAgIH1cbiAgICB0aGlzLmludGVncmF0aW9uVHlwZS5uZXh0KGludGVncmF0aW9uVHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGNhblVzZVNkaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnVzZXJBZ2VudFNlcnZpY2Uuc2FmYXJpVmVyc2lvbiAmJlxuICAgICAgdGhpcy51c2VyQWdlbnRTZXJ2aWNlLnNhZmFyaVZlcnNpb24gPj0gc2FmYXJpVmVyc2lvbkZvcklmcmFtZUludGVncmF0aW9uXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -12,9 +12,9 @@ export class GooglePayService {
|
|
|
12
12
|
get googlePaymentClientWasInitialized() {
|
|
13
13
|
return !!this.googlePaymentClient;
|
|
14
14
|
}
|
|
15
|
-
constructor(window,
|
|
15
|
+
constructor(window, paymentSystemProcessingService, injector) {
|
|
16
16
|
this.window = window;
|
|
17
|
-
this.
|
|
17
|
+
this.paymentSystemProcessingService = paymentSystemProcessingService;
|
|
18
18
|
this.injector = injector;
|
|
19
19
|
this.googlePayScriptUrl = 'https://pay.google.com/gp/p/js/pay.js';
|
|
20
20
|
this.readyToPay = new BehaviorSubject(null);
|
|
@@ -37,14 +37,14 @@ export class GooglePayService {
|
|
|
37
37
|
this.setupGooglePayClient();
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
|
-
this.
|
|
40
|
+
this.paymentSystemProcessingService.loadScript(this.googlePayScriptUrl, this.onLoadScript.bind(this));
|
|
41
41
|
}
|
|
42
42
|
checkPaymentDevice(base64checkoutData) {
|
|
43
|
-
this.
|
|
43
|
+
this.paymentSystemProcessingService.initialize$
|
|
44
44
|
.pipe(filter(Boolean), take(1))
|
|
45
45
|
.subscribe(() => {
|
|
46
46
|
this.checkout =
|
|
47
|
-
this.
|
|
47
|
+
this.paymentSystemProcessingService.getDecodedCheckout(base64checkoutData);
|
|
48
48
|
if (!this.checkout || !this.googlePaymentClient) {
|
|
49
49
|
throw new AppError(`Google Pay: no checkout or google payment client, checkout - ${Boolean(this.checkout).toString()}, client - ${Boolean(this.googlePaymentClient).toString()}`);
|
|
50
50
|
}
|
|
@@ -100,7 +100,7 @@ export class GooglePayService {
|
|
|
100
100
|
let returnUrl = this.checkout.request.form.fields.returnSuccessUrl;
|
|
101
101
|
const data = this.checkout.request.form.fields;
|
|
102
102
|
returnUrl += `&cpf_number=${data.cpf_number}&descriptor=${data.descriptor}&paymentData=${JSON.stringify(paymentData)}`;
|
|
103
|
-
this.
|
|
103
|
+
this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
|
|
104
104
|
return checkStatusAction;
|
|
105
105
|
}
|
|
106
106
|
catch (error) {
|
|
@@ -114,7 +114,7 @@ export class GooglePayService {
|
|
|
114
114
|
return null;
|
|
115
115
|
}
|
|
116
116
|
const returnUrl = this.checkout.request.form.fields.returnFailUrl;
|
|
117
|
-
this.
|
|
117
|
+
this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
|
|
118
118
|
return checkStatusAction;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -149,14 +149,14 @@ export class GooglePayService {
|
|
|
149
149
|
const isAvailableGoogleClient = !!this.window.google;
|
|
150
150
|
if (isAvailableGoogleClient) {
|
|
151
151
|
this.setupGooglePayClient();
|
|
152
|
-
this.
|
|
152
|
+
this.paymentSystemProcessingService.emitInitialize(true);
|
|
153
153
|
}
|
|
154
154
|
}, retryTimeout);
|
|
155
155
|
throw new AppError('Google Pay: google library now is available');
|
|
156
156
|
}
|
|
157
157
|
else {
|
|
158
158
|
this.setupGooglePayClient();
|
|
159
|
-
this.
|
|
159
|
+
this.paymentSystemProcessingService.emitInitialize(true);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
isCancelledStatus(statusCode) {
|
|
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
174
174
|
type: Inject,
|
|
175
175
|
args: [windowToken]
|
|
176
176
|
}] }, { type: i1.PaymentSystemProcessingService }, { type: i0.Injector }]; } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9nb29nbGUtcGF5L2dvb2dsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQU03RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUc1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7O0FBTXhHLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsSUFBWSxxQkFBcUI7UUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVksaUNBQWlDO1FBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFDd0MsTUFBc0IsRUFDNUMsMEJBQTBELEVBQzFELFFBQWtCO1FBRkksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDNUMsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFnQztRQUMxRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBckJuQix1QkFBa0IsR0FBRyx1Q0FBdUMsQ0FBQztRQUU3RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBRWhFLGFBQVEsR0FBNkIsSUFBSSxDQUFDO1FBQzFDLHdCQUFtQixHQUEyQixJQUFJLENBQUM7SUFpQnhELENB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LFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztZQUUxQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUVyRCxJQUFJLHVCQUF1QixFQUFFO29CQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFFNUIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEQ7WUFDSCxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFakIsTUFBTSxJQUFJLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUU1QixJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFVBQWtCO1FBQzFDLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxLQUFLLFVBQVUsQ0FBQztJQUNqRCxDQUFDOzs2R0FqUFUsZ0JBQWdCLGtCQW9CakIsV0FBVztpSEFwQlYsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXQgfSBmcm9tICcuL2dvb2dsZS1wYXktY2hlY2tvdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEdvb2dsZVBheUNsaWVudCxcbiAgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcGF5bWVudC1zeXN0ZW1zL3BheW1lbnQtc3lzdGVtLXByb2Nlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9hcHAtZXJyb3IuY2xhc3MnO1xuaW1wb3J0IHsgR29vZ2xlUGF5SW5pdFBhcmFtcyB9IGZyb20gJy4vZ29vZ2xlLXBheS1pbml0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLnR5cGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR29vZ2xlUGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ29vZ2xlUGF5U2NyaXB0VXJsID0gJ2h0dHBzOi8vcGF5Lmdvb2dsZS5jb20vZ3AvcC9qcy9wYXkuanMnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVhZHlUb1BheSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgY2hlY2tvdXQ6IEdvb2dsZVBheUNoZWNrb3V0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZ29vZ2xlUGF5bWVudENsaWVudDogR29vZ2xlUGF5Q2xpZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBpc1NhbmRib3ghOiBib29sZWFuO1xuICBwcml2YXRlIGNvdW50cnkhOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBnZXQgbGlicmFyeVdhc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMud2luZG93Lmdvb2dsZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbikgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93LFxuICAgIHB1YmxpYyByZWFkb25seSBjb21tb25QYXlQcm9jZXNzaW5nU2VydmljZTogUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcmVhZHlUb1BheSQoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnJlYWR5VG9QYXkuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgaXNSZWFkeVRvUGF5KCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5LmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEdvb2dsZVBheUxpYnJhcnkoZGF0YTogR29vZ2xlUGF5SW5pdFBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMuaXNTYW5kYm94ID0gZGF0YS5pc1NhbmRib3g7XG4gICAgdGhpcy5jb3VudHJ5ID0gZGF0YS5jb3VudHJ5O1xuXG4gICAgaWYgKHRoaXMubGlicmFyeVdhc0luaXRpYWxpemVkICYmIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFdhc0luaXRpYWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGlicmFyeVdhc0luaXRpYWxpemVkICYmICF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5zZXR1cEdvb2dsZVBheUNsaWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29tbW9uUGF5UHJvY2Vzc2luZ1NlcnZpY2UubG9hZFNjcmlwdChcbiAgICAgIHRoaXMuZ29vZ2xlUGF5U2NyaXB0VXJsLFxuICAgICAgdGhpcy5vbkxvYWRTY3JpcHQuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tQYXltZW50RGV2aWNlKGJhc2U2NGNoZWNrb3V0RGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb21tb25QYXlQcm9jZXNzaW5nU2VydmljZS5pbml0aWFsaXplJFxuICAgICAgLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXQgPVxuICAgICAgICAgIHRoaXMuY29tbW9uUGF5UHJvY2Vzc2luZ1NlcnZpY2UuZ2V0RGVjb2RlZENoZWNrb3V0PEdvb2dsZVBheUNoZWNrb3V0PihcbiAgICAgICAgICAgIGJhc2U2NGNoZWNrb3V0RGF0YVxuICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0IHx8ICF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgICBgR29vZ2xlIFBheTogbm8gY2hlY2tvdXQgb3IgZ29vZ2xlIHBheW1lbnQgY2xpZW50LCBjaGVja291dCAtICR7Qm9vbGVhbihcbiAgICAgICAgICAgICAgdGhpcy5jaGVja291dFxuICAgICAgICAgICAgKS50b1N0cmluZygpfSwgY2xpZW50IC0gJHtCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAgICkudG9TdHJpbmcoKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoZWNrb3V0RGF0YSA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcztcbiAgICAgICAgY29uc3QgaXNSZWFkeVRvUGF5UmVxdWVzdCA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgY2hlY2tvdXREYXRhLmlzUmVhZHlUb1BheVJlcXVlc3RcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAuaXNSZWFkeVRvUGF5KGlzUmVhZHlUb1BheVJlcXVlc3QpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzdWx0ICYmIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQucHJlZmV0Y2hQYXltZW50RGF0YShcbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGNoZWNrb3V0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QpXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9QYXkubmV4dChmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ/LnRvU3RyaW5nKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBpc0hhdmVQYXltZW50Q2xpZW50ID0gQm9vbGVhbihcbiAgICAgICAgICAgICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50XG4gICAgICAgICAgICApLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYEdvb2dsZSBQYXk6IHBvc3NpYmx5IG5vIHJlc3BvbnNlLnJlc3VsdCBvciBnb29nbGVQYXltZW50Q2xpZW50IGlzIG1pc3NpbmcsIHJlc3VsdCAtICR7cmVzdWx0fSwgaXNIYXZlUGF5bWVudENsaWVudCAtICR7aXNIYXZlUGF5bWVudENsaWVudH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWFkeVRvUGF5Lm5leHQoZmFsc2UpO1xuXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IChlcnJvciBhcyBzdHJpbmcpID8/ICcnO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICAgICAgICBgR29vZ2xlIFBheTogZGV2aWNlIGlzIG5vdCByZWFkeSB0byBwYXksICR7bWVzc2FnZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJvY2VlZENoZWNrb3V0KCk6IFByb21pc2U8Q2hlY2tTdGF0dXNBY3Rpb24gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmNoZWNrb3V0IHx8ICF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgIGNvbnN0IGlzSGF2ZUNoZWNrb3V0ID0gISF0aGlzLmNoZWNrb3V0O1xuICAgICAgY29uc3QgaXNIYXZlQ2xpZW50ID0gISF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQ7XG5cbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgYEdvb2dsZSBQYXk6IG5vIGNoZWNrb3V0IG9yIGdvb2dsZSBwYXltZW50IGNsaWVudCwgY2hlY2tvdXQgLSAke2lzSGF2ZUNoZWNrb3V0LnRvU3RyaW5nKCl9LCBjbGllbnQgLSAke2lzSGF2ZUNsaWVudC50b1N0cmluZygpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tvdXREYXRhID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzO1xuXG4gICAgY29uc3QgcGF5bWVudERhdGFSZXF1ZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgIGNoZWNrb3V0RGF0YS5wYXltZW50RGF0YVJlcXVlc3RcbiAgICApIGFzIEdvb2dsZVBheVBheW1lbnRSZXF1ZXN0O1xuXG4gICAgcGF5bWVudERhdGFSZXF1ZXN0LnRyYW5zYWN0aW9uSW5mbyA9IHtcbiAgICAgIGN1cnJlbmN5Q29kZTogY2hlY2tvdXREYXRhLmN1cnJlbmN5LFxuICAgICAgdG90YWxQcmljZVN0YXR1czogJ0ZJTkFMJyxcbiAgICAgIHRvdGFsUHJpY2U6IGNoZWNrb3V0RGF0YS5zdW0sXG4gICAgICBjb3VudHJ5Q29kZTogdGhpcy5jb3VudHJ5LFxuICAgIH07XG5cbiAgICBjb25zdCBjaGVja1N0YXR1c0FjdGlvbjogTmV4dEFjdGlvbiA9IHRoaXMuaW5qZWN0b3JcbiAgICAgIC5nZXQ8Q2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yPihDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3IpXG4gICAgICAuZ2V0QWN0aW9uRGF0YSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheW1lbnREYXRhID0gYXdhaXQgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LmxvYWRQYXltZW50RGF0YShcbiAgICAgICAgcGF5bWVudERhdGFSZXF1ZXN0XG4gICAgICApO1xuXG4gICAgICBpZiAoIXBheW1lbnREYXRhPy5wYXltZW50TWV0aG9kRGF0YT8udG9rZW5pemF0aW9uRGF0YT8udG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiB0b2tlbiBpcyBtaXNzaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5jaGVja291dCkge1xuICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoJ0dvb2dsZSBQYXk6IG5vIGNoZWNrb3V0IGRhdGEgaW4gdGhlbicpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmV0dXJuVXJsID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzLnJldHVyblN1Y2Nlc3NVcmw7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG4gICAgICByZXR1cm5VcmwgKz0gYCZjcGZfbnVtYmVyPSR7ZGF0YS5jcGZfbnVtYmVyfSZkZXNjcmlwdG9yPSR7XG4gICAgICAgIGRhdGEuZGVzY3JpcHRvclxuICAgICAgfSZwYXltZW50RGF0YT0ke0pTT04uc3RyaW5naWZ5KHBheW1lbnREYXRhKX1gO1xuXG4gICAgICB0aGlzLmNvbW1vblBheVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRQYXltZW50KHJldHVyblVybCk7XG5cbiAgICAgIHJldHVybiBjaGVja1N0YXR1c0FjdGlvbjtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0KSB7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcihgR29vZ2xlIFBheTogbm8gY2hlY2tvdXQgZGF0YWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0dXNDb2RlID0gKGVycm9yIGFzIHVua25vd24gYXMgeyBzdGF0dXNDb2RlPzogc3RyaW5nIH0pXG4gICAgICAgID8uc3RhdHVzQ29kZTtcblxuICAgICAgY29uc3QgaXNTdGF0dXNDYW5jZWxlZCA9IHN0YXR1c0NvZGUgJiYgdGhpcy5pc0NhbmNlbGxlZFN0YXR1cyhzdGF0dXNDb2RlKTtcblxuICAgICAgaWYgKGlzU3RhdHVzQ2FuY2VsZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJldHVyblVybCA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcy5yZXR1cm5GYWlsVXJsO1xuXG4gICAgICB0aGlzLmNvbW1vblBheVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRQYXltZW50KHJldHVyblVybCk7XG5cbiAgICAgIHJldHVybiBjaGVja1N0YXR1c0FjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQnV0dG9uKG9uQ2xpY2tIYW5kbGVyOiAoKSA9PiB2b2lkKTogSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tvdXQgfHwgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tvdXREYXRhID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzO1xuICAgIGNvbnN0IHBheW1lbnREYXRhUmVxdWVzdCA9IEpTT04ucGFyc2UoXG4gICAgICBjaGVja291dERhdGEucGF5bWVudERhdGFSZXF1ZXN0XG4gICAgKSBhcyBHb29nbGVQYXlQYXltZW50UmVxdWVzdDtcblxuICAgIHJldHVybiB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQuY3JlYXRlQnV0dG9uKHtcbiAgICAgIG9uQ2xpY2s6IG9uQ2xpY2tIYW5kbGVyLFxuICAgICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBwYXltZW50RGF0YVJlcXVlc3QuYWxsb3dlZFBheW1lbnRNZXRob2RzLFxuICAgICAgYnV0dG9uU2l6ZU1vZGU6ICdmaWxsJyxcbiAgICAgIGJ1dHRvblR5cGU6ICdidXknLFxuICAgICAgYnV0dG9uQ29sb3I6ICd3aGl0ZScsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwR29vZ2xlUGF5Q2xpZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aW5kb3cuZ29vZ2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmlzU2FuZGJveCA/ICdURVNUJyA6ICdQUk9EVUNUSU9OJztcblxuICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCA9XG4gICAgICBuZXcgdGhpcy53aW5kb3cuZ29vZ2xlLnBheW1lbnRzLmFwaS5QYXltZW50c0NsaWVudCh7XG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZFNjcmlwdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2luZG93Lmdvb2dsZSkge1xuICAgICAgY29uc3QgcmV0cnlUaW1lb3V0ID0gMTAwMDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlR29vZ2xlQ2xpZW50ID0gISF0aGlzLndpbmRvdy5nb29nbGU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlR29vZ2xlQ2xpZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXR1cEdvb2dsZVBheUNsaWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5jb21tb25QYXlQcm9jZXNzaW5nU2VydmljZS5lbWl0SW5pdGlhbGl6ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgcmV0cnlUaW1lb3V0KTtcblxuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBnb29nbGUgbGlicmFyeSBub3cgaXMgYXZhaWxhYmxlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcblxuICAgICAgdGhpcy5jb21tb25QYXlQcm9jZXNzaW5nU2VydmljZS5lbWl0SW5pdGlhbGl6ZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQ2FuY2VsbGVkU3RhdHVzKHN0YXR1c0NvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0dXNDb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdjYW5jZWxlZCc7XG4gIH1cbn1cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9nb29nbGUtcGF5L2dvb2dsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQU03RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUc1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7O0FBTXhHLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsSUFBWSxxQkFBcUI7UUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVksaUNBQWlDO1FBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFDd0MsTUFBc0IsRUFDNUMsOEJBQThELEVBQzlELFFBQWtCO1FBRkksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDNUMsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQUM5RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBckJuQix1QkFBa0IsR0FBRyx1Q0FBdUMsQ0FBQztRQUU3RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBRWhFLGFBQVEsR0FBNkIsSUFBSSxDQUFDO1FBQzFDLHdCQUFtQixHQUEyQixJQUFJLENBQUM7SUFpQnhELENB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LFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztZQUUxQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUVyRCxJQUFJLHVCQUF1QixFQUFFO29CQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFFNUIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDMUQ7WUFDSCxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFakIsTUFBTSxJQUFJLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUU1QixJQUFJLENBQUMsOEJBQThCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFEO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFVBQWtCO1FBQzFDLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxLQUFLLFVBQVUsQ0FBQztJQUNqRCxDQUFDOzs2R0FqUFUsZ0JBQWdCLGtCQW9CakIsV0FBVztpSEFwQlYsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXQgfSBmcm9tICcuL2dvb2dsZS1wYXktY2hlY2tvdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEdvb2dsZVBheUNsaWVudCxcbiAgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcGF5bWVudC1zeXN0ZW1zL3BheW1lbnQtc3lzdGVtLXByb2Nlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9hcHAtZXJyb3IuY2xhc3MnO1xuaW1wb3J0IHsgR29vZ2xlUGF5SW5pdFBhcmFtcyB9IGZyb20gJy4vZ29vZ2xlLXBheS1pbml0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLnR5cGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR29vZ2xlUGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ29vZ2xlUGF5U2NyaXB0VXJsID0gJ2h0dHBzOi8vcGF5Lmdvb2dsZS5jb20vZ3AvcC9qcy9wYXkuanMnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVhZHlUb1BheSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgY2hlY2tvdXQ6IEdvb2dsZVBheUNoZWNrb3V0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZ29vZ2xlUGF5bWVudENsaWVudDogR29vZ2xlUGF5Q2xpZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBpc1NhbmRib3ghOiBib29sZWFuO1xuICBwcml2YXRlIGNvdW50cnkhOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBnZXQgbGlicmFyeVdhc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMud2luZG93Lmdvb2dsZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbikgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93LFxuICAgIHB1YmxpYyByZWFkb25seSBwYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2U6IFBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICBwdWJsaWMgZ2V0IHJlYWR5VG9QYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGlzUmVhZHlUb1BheSgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRHb29nbGVQYXlMaWJyYXJ5KGRhdGE6IEdvb2dsZVBheUluaXRQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2FuZGJveCA9IGRhdGEuaXNTYW5kYm94O1xuICAgIHRoaXMuY291bnRyeSA9IGRhdGEuY291bnRyeTtcblxuICAgIGlmICh0aGlzLmxpYnJhcnlXYXNJbml0aWFsaXplZCAmJiB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpYnJhcnlXYXNJbml0aWFsaXplZCAmJiAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5sb2FkU2NyaXB0KFxuICAgICAgdGhpcy5nb29nbGVQYXlTY3JpcHRVcmwsXG4gICAgICB0aGlzLm9uTG9hZFNjcmlwdC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1BheW1lbnREZXZpY2UoYmFzZTY0Y2hlY2tvdXREYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5pbml0aWFsaXplJFxuICAgICAgLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXQgPVxuICAgICAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmdldERlY29kZWRDaGVja291dDxHb29nbGVQYXlDaGVja291dD4oXG4gICAgICAgICAgICBiYXNlNjRjaGVja291dERhdGFcbiAgICAgICAgICApO1xuXG4gICAgICAgIGlmICghdGhpcy5jaGVja291dCB8fCAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICAgICAgYEdvb2dsZSBQYXk6IG5vIGNoZWNrb3V0IG9yIGdvb2dsZSBwYXltZW50IGNsaWVudCwgY2hlY2tvdXQgLSAke0Jvb2xlYW4oXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRcbiAgICAgICAgICAgICkudG9TdHJpbmcoKX0sIGNsaWVudCAtICR7Qm9vbGVhbihcbiAgICAgICAgICAgICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50XG4gICAgICAgICAgICApLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGVja291dERhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG4gICAgICAgIGNvbnN0IGlzUmVhZHlUb1BheVJlcXVlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgICAgIGNoZWNrb3V0RGF0YS5pc1JlYWR5VG9QYXlSZXF1ZXN0XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50XG4gICAgICAgICAgLmlzUmVhZHlUb1BheShpc1JlYWR5VG9QYXlSZXF1ZXN0KVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdCAmJiB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LnByZWZldGNoUGF5bWVudERhdGEoXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShjaGVja291dERhdGEucGF5bWVudERhdGFSZXF1ZXN0KVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWR5VG9QYXkubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZWFkeVRvUGF5Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0Py50b1N0cmluZygpID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgaXNIYXZlUGF5bWVudENsaWVudCA9IEJvb2xlYW4oXG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFxuICAgICAgICAgICAgKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBHb29nbGUgUGF5OiBwb3NzaWJseSBubyByZXNwb25zZS5yZXN1bHQgb3IgZ29vZ2xlUGF5bWVudENsaWVudCBpcyBtaXNzaW5nLCByZXN1bHQgLSAke3Jlc3VsdH0sIGlzSGF2ZVBheW1lbnRDbGllbnQgLSAke2lzSGF2ZVBheW1lbnRDbGllbnR9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1BheS5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAoZXJyb3IgYXMgc3RyaW5nKSA/PyAnJztcblxuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgICAgICAgYEdvb2dsZSBQYXk6IGRldmljZSBpcyBub3QgcmVhZHkgdG8gcGF5LCAke21lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByb2NlZWRDaGVja291dCgpOiBQcm9taXNlPENoZWNrU3RhdHVzQWN0aW9uIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5jaGVja291dCB8fCAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICBjb25zdCBpc0hhdmVDaGVja291dCA9ICEhdGhpcy5jaGVja291dDtcbiAgICAgIGNvbnN0IGlzSGF2ZUNsaWVudCA9ICEhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50O1xuXG4gICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgIGBHb29nbGUgUGF5OiBubyBjaGVja291dCBvciBnb29nbGUgcGF5bWVudCBjbGllbnQsIGNoZWNrb3V0IC0gJHtpc0hhdmVDaGVja291dC50b1N0cmluZygpfSwgY2xpZW50IC0gJHtpc0hhdmVDbGllbnQudG9TdHJpbmcoKX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrb3V0RGF0YSA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcztcblxuICAgIGNvbnN0IHBheW1lbnREYXRhUmVxdWVzdCA9IEpTT04ucGFyc2UoXG4gICAgICBjaGVja291dERhdGEucGF5bWVudERhdGFSZXF1ZXN0XG4gICAgKSBhcyBHb29nbGVQYXlQYXltZW50UmVxdWVzdDtcblxuICAgIHBheW1lbnREYXRhUmVxdWVzdC50cmFuc2FjdGlvbkluZm8gPSB7XG4gICAgICBjdXJyZW5jeUNvZGU6IGNoZWNrb3V0RGF0YS5jdXJyZW5jeSxcbiAgICAgIHRvdGFsUHJpY2VTdGF0dXM6ICdGSU5BTCcsXG4gICAgICB0b3RhbFByaWNlOiBjaGVja291dERhdGEuc3VtLFxuICAgICAgY291bnRyeUNvZGU6IHRoaXMuY291bnRyeSxcbiAgICB9O1xuXG4gICAgY29uc3QgY2hlY2tTdGF0dXNBY3Rpb246IE5leHRBY3Rpb24gPSB0aGlzLmluamVjdG9yXG4gICAgICAuZ2V0PENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcj4oQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yKVxuICAgICAgLmdldEFjdGlvbkRhdGEoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXltZW50RGF0YSA9IGF3YWl0IHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5sb2FkUGF5bWVudERhdGEoXG4gICAgICAgIHBheW1lbnREYXRhUmVxdWVzdFxuICAgICAgKTtcblxuICAgICAgaWYgKCFwYXltZW50RGF0YT8ucGF5bWVudE1ldGhvZERhdGE/LnRva2VuaXphdGlvbkRhdGE/LnRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogdG9rZW4gaXMgbWlzc2luZycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuY2hlY2tvdXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBubyBjaGVja291dCBkYXRhIGluIHRoZW4nKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJldHVyblVybCA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcy5yZXR1cm5TdWNjZXNzVXJsO1xuXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzO1xuICAgICAgcmV0dXJuVXJsICs9IGAmY3BmX251bWJlcj0ke2RhdGEuY3BmX251bWJlcn0mZGVzY3JpcHRvcj0ke1xuICAgICAgICBkYXRhLmRlc2NyaXB0b3JcbiAgICAgIH0mcGF5bWVudERhdGE9JHtKU09OLnN0cmluZ2lmeShwYXltZW50RGF0YSl9YDtcblxuICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdFN0YXR1c1VybChyZXR1cm5VcmwpO1xuXG4gICAgICByZXR1cm4gY2hlY2tTdGF0dXNBY3Rpb247XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGlmICghdGhpcy5jaGVja291dCkge1xuICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoYEdvb2dsZSBQYXk6IG5vIGNoZWNrb3V0IGRhdGFgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IChlcnJvciBhcyB1bmtub3duIGFzIHsgc3RhdHVzQ29kZT86IHN0cmluZyB9KVxuICAgICAgICA/LnN0YXR1c0NvZGU7XG5cbiAgICAgIGNvbnN0IGlzU3RhdHVzQ2FuY2VsZWQgPSBzdGF0dXNDb2RlICYmIHRoaXMuaXNDYW5jZWxsZWRTdGF0dXMoc3RhdHVzQ29kZSk7XG5cbiAgICAgIGlmIChpc1N0YXR1c0NhbmNlbGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXR1cm5VcmwgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHMucmV0dXJuRmFpbFVybDtcblxuICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdFN0YXR1c1VybChyZXR1cm5VcmwpO1xuXG4gICAgICByZXR1cm4gY2hlY2tTdGF0dXNBY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUJ1dHRvbihvbkNsaWNrSGFuZGxlcjogKCkgPT4gdm9pZCk6IEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmNoZWNrb3V0IHx8ICF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrb3V0RGF0YSA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcztcbiAgICBjb25zdCBwYXltZW50RGF0YVJlcXVlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgY2hlY2tvdXREYXRhLnBheW1lbnREYXRhUmVxdWVzdFxuICAgICkgYXMgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3Q7XG5cbiAgICByZXR1cm4gdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LmNyZWF0ZUJ1dHRvbih7XG4gICAgICBvbkNsaWNrOiBvbkNsaWNrSGFuZGxlcixcbiAgICAgIGFsbG93ZWRQYXltZW50TWV0aG9kczogcGF5bWVudERhdGFSZXF1ZXN0LmFsbG93ZWRQYXltZW50TWV0aG9kcyxcbiAgICAgIGJ1dHRvblNpemVNb2RlOiAnZmlsbCcsXG4gICAgICBidXR0b25UeXBlOiAnYnV5JyxcbiAgICAgIGJ1dHRvbkNvbG9yOiAnd2hpdGUnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEdvb2dsZVBheUNsaWVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2luZG93Lmdvb2dsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5pc1NhbmRib3ggPyAnVEVTVCcgOiAnUFJPRFVDVElPTic7XG5cbiAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQgPVxuICAgICAgbmV3IHRoaXMud2luZG93Lmdvb2dsZS5wYXltZW50cy5hcGkuUGF5bWVudHNDbGllbnQoe1xuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRTY3JpcHQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5nb29nbGUpIHtcbiAgICAgIGNvbnN0IHJldHJ5VGltZW91dCA9IDEwMDA7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZUdvb2dsZUNsaWVudCA9ICEhdGhpcy53aW5kb3cuZ29vZ2xlO1xuXG4gICAgICAgIGlmIChpc0F2YWlsYWJsZUdvb2dsZUNsaWVudCkge1xuICAgICAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcblxuICAgICAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRJbml0aWFsaXplKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LCByZXRyeVRpbWVvdXQpO1xuXG4gICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoJ0dvb2dsZSBQYXk6IGdvb2dsZSBsaWJyYXJ5IG5vdyBpcyBhdmFpbGFibGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXR1cEdvb2dsZVBheUNsaWVudCgpO1xuXG4gICAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5lbWl0SW5pdGlhbGl6ZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQ2FuY2VsbGVkU3RhdHVzKHN0YXR1c0NvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0dXNDb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdjYW5jZWxlZCc7XG4gIH1cbn1cbiJdfQ==
|
package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs
CHANGED
|
@@ -16,8 +16,8 @@ export class PaymentSystemProcessingService {
|
|
|
16
16
|
get status$() {
|
|
17
17
|
return this.statusUrl.asObservable().pipe(filter((status) => !!status));
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
this.statusUrl.next(
|
|
19
|
+
emitStatusUrl(statusUrl) {
|
|
20
|
+
this.statusUrl.next(statusUrl);
|
|
21
21
|
}
|
|
22
22
|
emitInitialize(isInitialized) {
|
|
23
23
|
this.initialize.next(isInitialized);
|
|
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
81
81
|
type: Inject,
|
|
82
82
|
args: [windowToken]
|
|
83
83
|
}] }]; } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1zeXN0ZW0tcHJvY2Vzc2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9wYXltZW50LXN5c3RlbXMvcGF5bWVudC1zeXN0ZW0tcHJvY2Vzc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBTzVFLE1BQU0sT0FBTyw4QkFBOEI7SUFLekMsWUFDd0MsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFMN0MsY0FBUyxHQUE0QixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxlQUFVLEdBQ3pCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBSW5DLENBQUM7SUFFSixJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBaUI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxhQUFzQjtRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0JBQWtCLENBQ3ZCLGtCQUEwQjtRQUUxQixJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFNLENBQUM7U0FDbEQ7UUFBQyxPQUFPLEtBQWMsRUFBRTtZQUN2QixNQUFNLElBQUksUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUNmLEdBQVcsRUFDWCxNQUFrQixFQUNsQix5QkFBNEU7UUFFNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxNQUFNLEdBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRWpCLElBQUkseUJBQXlCLEVBQUU7WUFDN0IsTUFBTSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixJQUFJO2dCQUNGLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7WUFBQyxPQUFPLEtBQWMsRUFBRTtnQkFDdkIsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUVwQixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7b0JBQzFCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2lCQUN6QjtnQkFDRCxNQUFNLElBQUksUUFBUSxDQUNoQiw4Q0FDRSxPQUNGLFdBQVcsR0FBRyxFQUFFLENBQ2pCLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FDZixLQUFxQixFQUNyQixNQUFlLEVBQ2YsTUFBZSxFQUNmLEtBQWMsRUFDZCxLQUFhLEVBQ2IsRUFBRTtZQUNGLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRWhELElBQUksWUFBWSxHQUFHLEtBQWUsQ0FBQztZQUVuQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDN0IsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEM7WUFFRCxNQUFNLElBQUksUUFBUSxDQUNoQjtnQkFDUSxHQUFHO2tCQUNELFlBQVk7bUJBQ1gsTUFBTSxJQUFJLEVBQUU7bUJBQ1osTUFBTSxJQUFJLEVBQUU7a0JBQ2IsS0FBSyxJQUFJLEVBQUU7a0JBQ1gsWUFBWSxFQUFFLENBQ3pCLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7MkhBbkdVLDhCQUE4QixrQkFNL0IsV0FBVzsrSEFOViw4QkFBOEIsY0FGN0IsTUFBTTsyRkFFUCw4QkFBOEI7a0JBSDFDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFPSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXQgfSBmcm9tICcuLi9nb29nbGUtcGF5L2dvb2dsZS1wYXktY2hlY2tvdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4dGVuZGVkV2luZG93IH0gZnJvbSAnLi4vLi4vZXh0ZW5kZWQtd2luZG93LmludGVyZmFjZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBBcHBFcnJvciB9IGZyb20gJy4uLy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzL2FwcC1lcnJvci5jbGFzcyc7XG5cbmV4cG9ydCB0eXBlIENvbW1vbkNoZWNrb3V0ID0gR29vZ2xlUGF5Q2hlY2tvdXQ7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1VybDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsaXplOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3dcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbGl6ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdHVzJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c1VybC5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcigoc3RhdHVzKSA9PiAhIXN0YXR1cykpO1xuICB9XG5cbiAgcHVibGljIGVtaXRTdGF0dXNVcmwoc3RhdHVzVXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c1VybC5uZXh0KHN0YXR1c1VybCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdEluaXRpYWxpemUoaXNJbml0aWFsaXplZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZS5uZXh0KGlzSW5pdGlhbGl6ZWQpO1xuICB9XG5cbiAgcHVibGljIGdldERlY29kZWRDaGVja291dDxUIGV4dGVuZHMgQ29tbW9uQ2hlY2tvdXQ+KFxuICAgIGJhc2U2NGNoZWNrb3V0RGF0YTogc3RyaW5nXG4gICk6IFQge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKGJhc2U2NGNoZWNrb3V0RGF0YSkpIGFzIFQ7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcignbG9hZCBzY3JpcHQgc2VydmljZTogZGVjb2RlIGVycm9yJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWRTY3JpcHQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb25Mb2FkOiAoKSA9PiB2b2lkLFxuICAgIGFkZFNjcmlwdEN1c3RvbUF0dHJpYnV0ZXM/OiAoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCkgPT4gSFRNTFNjcmlwdEVsZW1lbnRcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplLm5leHQoZmFsc2UpO1xuICAgIGxldCBzY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50ID1cbiAgICAgIHRoaXMud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuXG4gICAgaWYgKGFkZFNjcmlwdEN1c3RvbUF0dHJpYnV0ZXMpIHtcbiAgICAgIHNjcmlwdCA9IGFkZFNjcmlwdEN1c3RvbUF0dHJpYnV0ZXMoc2NyaXB0KTtcbiAgICB9XG5cbiAgICB0aGlzLndpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO1xuXG4gICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG9uTG9hZCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBlcnJvcjtcblxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgICBgUGFnZXM6IGVycm9yIGR1cmluZyBzY3JpcHQgb25sb2FkIGhhbmRsZXI6ICR7XG4gICAgICAgICAgICBtZXNzYWdlIGFzIHN0cmluZ1xuICAgICAgICAgIH0sIHVybCAtICR7dXJsfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoXG4gICAgICBldmVudDogRXZlbnQgfCBzdHJpbmcsXG4gICAgICBzb3VyY2U/OiBzdHJpbmcsXG4gICAgICBsaW5lbm8/OiBudW1iZXIsXG4gICAgICBjb2xubz86IG51bWJlcixcbiAgICAgIGVycm9yPzogRXJyb3JcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgICBsZXQgZXZlbnRNZXNzYWdlID0gZXZlbnQgYXMgc3RyaW5nO1xuXG4gICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBldmVudE1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShldmVudCk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgYFBhZ2VzOiBlcnJvciBkdXJpbmcgc2NyaXB0IG9uZXJyb3IgaGFuZGxlcjpcbiAgICAgICAgdXJsIC0gJHt1cmx9LFxuICAgICAgICBldmVudCAtICR7ZXZlbnRNZXNzYWdlfSxcbiAgICAgICAgc291cmNlIC0gJHtzb3VyY2UgPz8gJyd9LFxuICAgICAgICBsaW5lbm8gLSAke2xpbmVubyA/PyAnJ30sXG4gICAgICAgIGNvbG5vIC0gJHtjb2xubyA/PyAnJ30sXG4gICAgICAgIGVycm9yIC0gJHtlcnJvck1lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZS5nZXRWYWx1ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXBheW1lbnQtc3lzdGVtcy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL3Nkay1wYXltZW50LXN5c3RlbXMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZGtQYXltZW50U3lzdGVtc0luaXRpYWxEYXRhIH0gZnJvbSAnLi9zZGstcGF5bWVudC1zeXN0ZW1zLWluaXRpYWwtZGF0YS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNka1BheW1lbnRTeXN0ZW1zIHtcbiAgZ2V0SW5pdGlhbERhdGEoKTogU2RrUGF5bWVudFN5c3RlbXNJbml0aWFsRGF0YTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZXR0aW5ncy9jb25maWd1cmF0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJbml0Q29uZmlndXJhdGlvbiB7XG4gIHRva2VuOiBzdHJpbmc7XG4gIGlzV2Vidmlldz86IGJvb2xlYW47XG4gIHNhbmRib3g/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -41,15 +41,15 @@ export class SettingsService {
|
|
|
41
41
|
}
|
|
42
42
|
return this.response;
|
|
43
43
|
}
|
|
44
|
+
get unsafeUtilsResponse() {
|
|
45
|
+
return this.response ?? null;
|
|
46
|
+
}
|
|
44
47
|
get isEmpty() {
|
|
45
48
|
return !this.response;
|
|
46
49
|
}
|
|
47
50
|
get token() {
|
|
48
51
|
return this._token;
|
|
49
52
|
}
|
|
50
|
-
get isMobile() {
|
|
51
|
-
return this._isMobile;
|
|
52
|
-
}
|
|
53
53
|
get hasResponse() {
|
|
54
54
|
return !!this.response;
|
|
55
55
|
}
|
|
@@ -58,7 +58,6 @@ export class SettingsService {
|
|
|
58
58
|
this.isInitialized = false;
|
|
59
59
|
this._token = '';
|
|
60
60
|
this.sandboxMode = false;
|
|
61
|
-
this._isMobile = false;
|
|
62
61
|
}
|
|
63
62
|
async init(configuration) {
|
|
64
63
|
if (!configuration.token) {
|
|
@@ -66,7 +65,6 @@ export class SettingsService {
|
|
|
66
65
|
}
|
|
67
66
|
this._token = configuration.token;
|
|
68
67
|
this.sandboxMode = !!configuration.sandbox;
|
|
69
|
-
this._isMobile = configuration.isMobile;
|
|
70
68
|
await this.sendRequest(this.token);
|
|
71
69
|
this.isInitialized = true;
|
|
72
70
|
}
|
|
@@ -87,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
87
85
|
providedIn: 'root',
|
|
88
86
|
}]
|
|
89
87
|
}], ctorParameters: function () { return [{ type: i1.SecureApiClient }]; } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3NldHRpbmdzL3NldHRpbmdzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUlsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBVXZFLE1BQU0sT0FBTyxlQUFlO0lBQzFCLElBQVcsT0FBTztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2dCQUN6QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQjthQUN6RCxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFVRCxZQUFvQyxTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQVJ2RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUlyQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFcUMsQ0FBQztJQUUzRCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWdDO1FBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFFM0MsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQWdCLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQ3ZELENBQUM7SUFDSixDQUFDOzs0R0FuR1UsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2VjdXJlQXBpQ2xpZW50IH0gZnJvbSAnLi4vaHR0cC9zZWN1cmUtYXBpL3NlY3VyZS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBEZWVwUmVhZG9ubHkgfSBmcm9tICcuLi9kZWVwLXJlYWRvbmx5LnR5cGUnO1xuaW1wb3J0IHsgSW5pdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEVtcHR5VXRpbHNSZXNwb25zZUVycm9yIH0gZnJvbSAnLi9lbXB0eS11dGlscy1yZXNwb25zZS5lcnJvcic7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4vc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFB1cmNoYXNlIH0gZnJvbSAnLi9wdXJjaGFzZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4vcHJvamVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXRpbHNSZXNwb25zZSB9IGZyb20gJy4vdXRpbHMtcmVzcG9uc2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZSB7XG4gIHB1YmxpYyBnZXQgcHJvamVjdCgpOiBEZWVwUmVhZG9ubHk8UHJvamVjdD4ge1xuICAgIGlmICghdGhpcy5yZXNwb25zZSkge1xuICAgICAgdGhyb3cgbmV3IEVtcHR5VXRpbHNSZXNwb25zZUVycm9yKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHVyY2hhc2UoKTogRGVlcFJlYWRvbmx5PFB1cmNoYXNlPiB7XG4gICAgaWYgKCF0aGlzLnJlc3BvbnNlKSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlVdGlsc1Jlc3BvbnNlRXJyb3IoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZS5wdXJjaGFzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogRGVlcFJlYWRvbmx5PFNldHRpbmdzPiB7XG4gICAgaWYgKCF0aGlzLnJlc3BvbnNlKSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlVdGlsc1Jlc3BvbnNlRXJyb3IoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zZT8ucHVyY2hhc2VfZXh0ZXJuYWxfaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRoaXMucmVzcG9uc2Uuc2V0dGluZ3MsXG4gICAgICAgIHB1cmNoYXNlX2V4dGVybmFsX2lkOiB0aGlzLnJlc3BvbnNlLnB1cmNoYXNlX2V4dGVybmFsX2lkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZXIoKTogRGVlcFJlYWRvbmx5PFVzZXI+IHtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVV0aWxzUmVzcG9uc2VFcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHV0aWxzUmVzcG9uc2UoKTogRGVlcFJlYWRvbmx5PFV0aWxzUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2UpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVV0aWxzUmVzcG9uc2VFcnJvcigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGdldCB1bnNhZmVVdGlsc1Jlc3BvbnNlKCk6IERlZXBSZWFkb25seTxVdGlsc1Jlc3BvbnNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGdldCB0b2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90b2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzUmVzcG9uc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZXNwb25zZSE6IERlZXBSZWFkb25seTxVdGlsc1Jlc3BvbnNlPiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF90b2tlbiA9ICcnO1xuXG4gIHByaXZhdGUgc2FuZGJveE1vZGUgPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzZWN1cmVBcGk6IFNlY3VyZUFwaUNsaWVudCkge31cblxuICBwdWJsaWMgYXN5bmMgaW5pdChjb25maWd1cmF0aW9uOiBJbml0Q29uZmlndXJhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghY29uZmlndXJhdGlvbi50b2tlbikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCd0b2tlbiBpcyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdG9rZW4gPSBjb25maWd1cmF0aW9uLnRva2VuO1xuICAgIHRoaXMuc2FuZGJveE1vZGUgPSAhIWNvbmZpZ3VyYXRpb24uc2FuZGJveDtcblxuICAgIGF3YWl0IHRoaXMuc2VuZFJlcXVlc3QodGhpcy50b2tlbik7XG5cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzU2FuZGJveE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2FuZGJveE1vZGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRSZXF1ZXN0KHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnYWNjZXNzX3Rva2VuJywgdG9rZW4pO1xuXG4gICAgdGhpcy5zZWN1cmVBcGkuc2V0U2FuZGJveE1vZGUodGhpcy5pc1NhbmRib3hNb2RlKCkpO1xuXG4gICAgdGhpcy5yZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5zZWN1cmVBcGkuZ2V0PFV0aWxzUmVzcG9uc2U+KCd1dGlscycsIHsgcGFyYW1zIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -40,6 +40,17 @@ export class UserAgentService {
|
|
|
40
40
|
get isSafari() {
|
|
41
41
|
return this._browserName === 'Apple Safari';
|
|
42
42
|
}
|
|
43
|
+
get safariVersion() {
|
|
44
|
+
if (!this.isSafari) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const versionRegExp = new RegExp('(Version)\\/(.+)\\s');
|
|
48
|
+
const version = versionRegExp.exec(this.userAgent);
|
|
49
|
+
if (!version) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return Number(version[2].split('.')[0]);
|
|
53
|
+
}
|
|
43
54
|
get iOsVersion() {
|
|
44
55
|
if (this.osType !== 'ios') {
|
|
45
56
|
return null;
|
|
@@ -197,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
197
208
|
type: Inject,
|
|
198
209
|
args: [windowToken]
|
|
199
210
|
}] }]; } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hZ2VudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvdXNlci1hZ2VudC91c2VyLWFnZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBMkIsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTTlCLE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsWUFFbUIsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFSakMsaUJBQVksR0FBZ0IsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFlLElBQUksQ0FBQztRQUMvQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxRQUFHLEdBQWtCLElBQUksQ0FBQztRQU1oQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssWUFBWSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQjtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUczQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN2QjtRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxjQUFjLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FDakMsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixNQUFNLFdBQVcsR0FBZ0I7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLFlBQVksQ0FBQyxFQUFFLElBQUk7WUFDdEQsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzVCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUk7WUFDeEMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ2hFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNaLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixtQ0FBbUM7WUFDbkMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDL0M7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEQsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDekI7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDeEIsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDNUI7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHO1lBQ25CLFNBQVM7WUFDVCxPQUFPO1lBQ1AsUUFBUTtZQUNSLE1BQU07WUFDTixNQUFNO1lBQ04sWUFBWTtZQUNaLFVBQVU7WUFDVixZQUFZO1lBQ1osUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsVUFBVTtZQUNWLE1BQU07WUFDTixRQUFRO1lBQ1IsT0FBTztTQUNSLENBQUM7UUFDRixPQUFPLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sdUJBQXVCLEdBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FHYixFQUFFLGFBQWEsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FDWix1QkFBdUIsRUFBRSxRQUFRO1lBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVE7WUFDaEMsWUFBWSxDQUFDO1FBRWYsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtZQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUN2RSxNQUFNLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWxFLElBQUksc0JBQXNCLEtBQUssSUFBSSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakQsTUFBTTthQUNQO1lBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3QyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDbkIsTUFBTTthQUNQO1lBRUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsSUFBWSxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBWSxTQUFTO1FBQ25CLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBWSxNQUFNO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVksT0FBTztRQUNqQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFxQjtZQUMxQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7WUFDcEIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1lBQ3BCLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQztZQUM3QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7WUFDbkIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1lBQ2xCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUNuQixDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztTQUM1QixDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBWSxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFZLE1BQU07UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDeEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OzZHQTVPVSxnQkFBZ0Isa0JBUWpCLFdBQVc7aUhBUlYsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGJyb3dzZXJzLCBCcm93c2VyTmFtZSwgQnJvd3NlckFwcCwgdW5rbm93blZhbHVlIH0gZnJvbSAnLi9icm93c2Vycyc7XG5pbXBvcnQgeyBEZXZpY2UgfSBmcm9tICcuL2RldmljZS5lbnVtJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vd2luZG93LnRva2VuJztcbmltcG9ydCB7IEV4dGVuZGVkV2luZG93IH0gZnJvbSAnLi4vZXh0ZW5kZWQtd2luZG93LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCcm93c2VySW5mbyB9IGZyb20gJy4vYnJvd3NlckluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IG9zTGlzdCB9IGZyb20gJy4vb3MnO1xuaW1wb3J0IHsgVXNlckFnZW50RGF0YSB9IGZyb20gJy4vdXNlci1hZ2VudC1kYXRhLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyQWdlbnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfYnJvd3Nlck5hbWU6IEJyb3dzZXJOYW1lID0gbnVsbDtcbiAgcHJpdmF0ZSBfYnJvd3NlclZlcnNpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9icm93c2VyQXBwOiBCcm93c2VyQXBwID0gbnVsbDtcbiAgcHJpdmF0ZSBfcGxhdGZvcm06IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9vczogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93XG4gICkge1xuICAgIHRoaXMuZ2V0VXNlclBsYXRmb3JtKCk7XG4gICAgdGhpcy5nZXRCcm93c2VySW5mb3JtYXRpb24oKTtcbiAgICB0aGlzLmdldE9zSW5mb3JtYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJWZXJzaW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBicm93c2VyQXBwKCk6IEJyb3dzZXJBcHAge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyQXBwO1xuICB9XG5cbiAgcHVibGljIGdldCBwbGF0Zm9ybSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fcGxhdGZvcm0gPT09IHVua25vd25WYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMub3NUeXBlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wbGF0Zm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdXNlckFnZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJyb3dzZXJEZXNjcmlwdGlvbigpOlxuICAgIHwgdHlwZW9mIGJyb3dzZXJzW251bWJlcl1bJ3NlbnROYW1lJ11cbiAgICB8IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYnJvd3Nlck5hbWUgPT09IHVua25vd25WYWx1ZSB8fCB0aGlzLmJyb3dzZXJOYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy51c2VyQWdlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYnJvd3Nlck5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU2FmYXJpKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZSA9PT0gJ0FwcGxlIFNhZmFyaSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlPc1ZlcnNpb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMub3NUeXBlICE9PSAnaW9zJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdmVyc2lvbiA9IC9PUyAoXFxkKylfKFxcZCspXz8oXFxkKyk/Ly5leGVjKFxuICAgICAgdGhpcy53aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb25cbiAgICApO1xuXG4gICAgcmV0dXJuIHZlcnNpb24gPyBgJHt2ZXJzaW9uWzFdfS4ke3ZlcnNpb25bMl19LiR7dmVyc2lvblszXSA/PyAwfWAgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCBicm93c2VySW5mbygpOiBCcm93c2VySW5mbyB7XG4gICAgY29uc3QgYnJvd3NlckluZm86IEJyb3dzZXJJbmZvID0ge1xuICAgICAgbmFtZTogdGhpcy5icm93c2VyRGVzY3JpcHRpb24sXG4gICAgICBbdGhpcy5icm93c2VyQXBwPy50b0xvd2VyQ2FzZSgpID8/IHVua25vd25WYWx1ZV06IHRydWUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLmJyb3dzZXJWZXJzaW9uLFxuICAgICAgW3RoaXMuYnJvd3NlckVuZ2luZS50b0xvd2VyQ2FzZSgpXTogdHJ1ZSxcbiAgICAgIHVpX3ZlcnNpb246IHRoaXMuaXNNb2JpbGVEZXZpY2UgPyBEZXZpY2UubW9iaWxlIDogRGV2aWNlLmRlc2t0b3AsXG4gICAgICBvczogdGhpcy5vcyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaXNNb2JpbGVEZXZpY2UpIHtcbiAgICAgIGJyb3dzZXJJbmZvLm1vYmlsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3NUeXBlKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGluZGV4IGlzIHN0cmluZ1xuICAgICAgYnJvd3NlckluZm9bdGhpcy5vc1R5cGUudG9Mb3dlckNhc2UoKV0gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0/LmluY2x1ZGVzKCdpUGhvbmUnKSkge1xuICAgICAgYnJvd3NlckluZm8uaXBob25lID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtPy5pbmNsdWRlcygnaVBvZCcpKSB7XG4gICAgICBicm93c2VySW5mby5pcG9kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtPy5pbmNsdWRlcygnaVBhZCcpKSB7XG4gICAgICBicm93c2VySW5mby5pcGFkID0gdHJ1ZTtcbiAgICAgIGJyb3dzZXJJbmZvLnRhYmxldCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNBbmRyb2lkKSB7XG4gICAgICBicm93c2VySW5mby5hbmRyb2lkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3NlckluZm87XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTW9iaWxlRGV2aWNlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRldmljZUFnZW50cyA9IFtcbiAgICAgICdBbmRyb2lkJyxcbiAgICAgICd3ZWJPUycsXG4gICAgICAnaVBob25lJyxcbiAgICAgICdpUGFkJyxcbiAgICAgICdpUG9kJyxcbiAgICAgICdCbGFja0JlcnJ5JyxcbiAgICAgICdJRU1vYmlsZScsXG4gICAgICAnT3BlcmEgTWluaScsXG4gICAgICAnTW9iaWxlJyxcbiAgICAgICdUYWJsZXQnLFxuICAgICAgJ0tpbmRsZScsXG4gICAgICAnUGxheWJvb2snLFxuICAgICAgJ1NpbGsnLFxuICAgICAgJ1B1ZmZpbicsXG4gICAgICAnQ3JpT1MnLFxuICAgIF07XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoZGV2aWNlQWdlbnRzLmpvaW4oJ3wnKSwgJ2knKS50ZXN0KHRoaXMudXNlckFnZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJb3NBbmROb3RJcGFkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ2lQaG9uZScsICdpUG9kJ10uaW5jbHVkZXModGhpcy53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXNlclBsYXRmb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IGV4cGVyaW1lbnRhbFBsYXRmb3JtQXBpID0gKFxuICAgICAgdGhpcy53aW5kb3cubmF2aWdhdG9yIGFzIHVua25vd24gYXMge1xuICAgICAgICB1c2VyQWdlbnREYXRhOiBVc2VyQWdlbnREYXRhIHwgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICk/LnVzZXJBZ2VudERhdGE7XG5cbiAgICBjb25zdCBwbGF0Zm9ybSA9XG4gICAgICBleHBlcmltZW50YWxQbGF0Zm9ybUFwaT8ucGxhdGZvcm0gPz9cbiAgICAgIHRoaXMud2luZG93Py5uYXZpZ2F0b3I/LnBsYXRmb3JtID8/XG4gICAgICB1bmtub3duVmFsdWU7XG5cbiAgICB0aGlzLl9wbGF0Zm9ybSA9IHBsYXRmb3JtLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEJyb3dzZXJJbmZvcm1hdGlvbigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGJyb3dzZXIgb2YgYnJvd3NlcnMpIHtcbiAgICAgIGNvbnN0IGJyb3dzZXJSZWdFeHAgPSBuZXcgUmVnRXhwKGJyb3dzZXIucmVnZXhwQnJvd3Nlck5hbWVXaXRoVmVyc2lvbik7XG4gICAgICBjb25zdCBicm93c2VyTmFtZVdpdGhWZXJzaW9uID0gYnJvd3NlclJlZ0V4cC5leGVjKHRoaXMudXNlckFnZW50KTtcblxuICAgICAgaWYgKGJyb3dzZXJOYW1lV2l0aFZlcnNpb24gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYnJvd3Nlck5hbWUgPSBicm93c2VyLnNlbnROYW1lO1xuICAgICAgICB0aGlzLl9icm93c2VyQXBwID0gYnJvd3Nlci5zaG9ydE5hbWU7XG4gICAgICAgIHRoaXMuX2Jyb3dzZXJWZXJzaW9uID0gYnJvd3Nlck5hbWVXaXRoVmVyc2lvblsyXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2Jyb3dzZXJOYW1lID0gdW5rbm93blZhbHVlO1xuICAgICAgdGhpcy5fYnJvd3NlckFwcCA9IHVua25vd25WYWx1ZTtcbiAgICAgIHRoaXMuX2Jyb3dzZXJWZXJzaW9uID0gdW5rbm93blZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3NJbmZvcm1hdGlvbigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9zIG9mIG9zTGlzdCkge1xuICAgICAgY29uc3Qgb3NSZWdFeHAgPSBuZXcgUmVnRXhwKG9zLnJlZ0V4cCk7XG4gICAgICBjb25zdCBvc05hbWUgPSBvc1JlZ0V4cC5leGVjKHRoaXMudXNlckFnZW50KTtcblxuICAgICAgaWYgKG9zTmFtZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9vcyA9IG9zLm5hbWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9vcyA9IHVua25vd25WYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBicm93c2VyTmFtZSgpOiBCcm93c2VyTmFtZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvQW5kcm9pZFxccysoW1xcZC5dKykvLnRlc3QodGhpcy51c2VyQWdlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNYYm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAveGJveC9pLnRlc3QodGhpcy51c2VyQWdlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNMaW51eCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL2xpbnV4L2kudGVzdCh0aGlzLnVzZXJBZ2VudCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1dpbmRvd3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC93aW5kb3dzL2kudGVzdCh0aGlzLnVzZXJBZ2VudCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBicm93c2VyRW5naW5lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5naW5lcyA9IG5ldyBNYXA8QnJvd3NlckFwcCwgc3RyaW5nPihbXG4gICAgICBbJ0ZpcmVmb3gnLCAnR2Vja28nXSxcbiAgICAgIFsnU2FmYXJpJywgJ1dlYmtpdCddLFxuICAgICAgWydNU0VkZ2UtbGVnYWN5JywgJ0VkZ2VIVE1MJ10sXG4gICAgICBbJ0Nocm9tZScsICdCbGluayddLFxuICAgICAgWydPcGVyYScsICdCbGluayddLFxuICAgICAgWydNU0VkZ2UnLCAnQmxpbmsnXSxcbiAgICAgIFsnU2Ftc3VuZ0Jyb3dzZXInLCAnQmxpbmsnXSxcbiAgICBdKTtcblxuICAgIHJldHVybiBlbmdpbmVzLmdldCh0aGlzLmJyb3dzZXJBcHApID8/IHVua25vd25WYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG9zKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9vcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IG9zVHlwZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoWydpUGhvbmUnLCAnaVBvZCcsICdpUGFkJ10uaW5jbHVkZXModGhpcy53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKSkge1xuICAgICAgcmV0dXJuICdpb3MnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0/LmluY2x1ZGVzKCdNYWNJbnRlbCcpKSB7XG4gICAgICByZXR1cm4gJ21hYyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNYYm94KSB7XG4gICAgICByZXR1cm4gJ3hib3gnO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1dpbmRvd3MpIHtcbiAgICAgIHJldHVybiAnd2luZG93cyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNBbmRyb2lkKSB7XG4gICAgICByZXR1cm4gJ2FuZHJvaWQnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTGludXgpIHtcbiAgICAgIHJldHVybiAnbGludXgnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hZ2VudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvdXNlci1hZ2VudC91c2VyLWFnZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBMkIsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTTlCLE1BQU0sT0FBTyxnQkFBZ0I7SUFPM0IsWUFFbUIsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFSakMsaUJBQVksR0FBZ0IsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFlLElBQUksQ0FBQztRQUMvQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxRQUFHLEdBQWtCLElBQUksQ0FBQztRQU1oQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssWUFBWSxFQUFF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USxDQUFDLEVBQUU7WUFDdkUsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN4RCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7NkdBMVBVLGdCQUFnQixrQkFRakIsV0FBVztpSEFSVixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYnJvd3NlcnMsIEJyb3dzZXJOYW1lLCBCcm93c2VyQXBwLCB1bmtub3duVmFsdWUgfSBmcm9tICcuL2Jyb3dzZXJzJztcbmltcG9ydCB7IERldmljZSB9IGZyb20gJy4vZGV2aWNlLmVudW0nO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgRXh0ZW5kZWRXaW5kb3cgfSBmcm9tICcuLi9leHRlbmRlZC13aW5kb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJyb3dzZXJJbmZvIH0gZnJvbSAnLi9icm93c2VySW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgb3NMaXN0IH0gZnJvbSAnLi9vcyc7XG5pbXBvcnQgeyBVc2VyQWdlbnREYXRhIH0gZnJvbSAnLi91c2VyLWFnZW50LWRhdGEuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJBZ2VudFNlcnZpY2Uge1xuICBwcml2YXRlIF9icm93c2VyTmFtZTogQnJvd3Nlck5hbWUgPSBudWxsO1xuICBwcml2YXRlIF9icm93c2VyVmVyc2lvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Jyb3dzZXJBcHA6IEJyb3dzZXJBcHAgPSBudWxsO1xuICBwcml2YXRlIF9wbGF0Zm9ybTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29zOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3dcbiAgKSB7XG4gICAgdGhpcy5nZXRVc2VyUGxhdGZvcm0oKTtcbiAgICB0aGlzLmdldEJyb3dzZXJJbmZvcm1hdGlvbigpO1xuICAgIHRoaXMuZ2V0T3NJbmZvcm1hdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBicm93c2VyVmVyc2lvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3NlclZlcnNpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJyb3dzZXJBcHAoKTogQnJvd3NlckFwcCB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJBcHA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsYXRmb3JtKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLl9wbGF0Zm9ybSA9PT0gdW5rbm93blZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vc1R5cGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BsYXRmb3JtO1xuICB9XG5cbiAgcHVibGljIGdldCB1c2VyQWdlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnJvd3NlckRlc2NyaXB0aW9uKCk6XG4gICAgfCB0eXBlb2YgYnJvd3NlcnNbbnVtYmVyXVsnc2VudE5hbWUnXVxuICAgIHwgc3RyaW5nIHtcbiAgICBpZiAodGhpcy5icm93c2VyTmFtZSA9PT0gdW5rbm93blZhbHVlIHx8IHRoaXMuYnJvd3Nlck5hbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLnVzZXJBZ2VudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5icm93c2VyTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTYWZhcmkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lID09PSAnQXBwbGUgU2FmYXJpJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2FmYXJpVmVyc2lvbigpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuaXNTYWZhcmkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcnNpb25SZWdFeHAgPSBuZXcgUmVnRXhwKCcoVmVyc2lvbilcXFxcLyguKylcXFxccycpO1xuICAgIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uUmVnRXhwLmV4ZWModGhpcy51c2VyQWdlbnQpO1xuICAgIGlmICghdmVyc2lvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcih2ZXJzaW9uWzJdLnNwbGl0KCcuJylbMF0pO1xuICB9XG5cbiAgcHVibGljIGdldCBpT3NWZXJzaW9uKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLm9zVHlwZSAhPT0gJ2lvcycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcnNpb24gPSAvT1MgKFxcZCspXyhcXGQrKV8/KFxcZCspPy8uZXhlYyhcbiAgICAgIHRoaXMud2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uXG4gICAgKTtcblxuICAgIHJldHVybiB2ZXJzaW9uID8gYCR7dmVyc2lvblsxXX0uJHt2ZXJzaW9uWzJdfS4ke3ZlcnNpb25bM10gPz8gMH1gIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnJvd3NlckluZm8oKTogQnJvd3NlckluZm8ge1xuICAgIGNvbnN0IGJyb3dzZXJJbmZvOiBCcm93c2VySW5mbyA9IHtcbiAgICAgIG5hbWU6IHRoaXMuYnJvd3NlckRlc2NyaXB0aW9uLFxuICAgICAgW3RoaXMuYnJvd3NlckFwcD8udG9Mb3dlckNhc2UoKSA/PyB1bmtub3duVmFsdWVdOiB0cnVlLFxuICAgICAgdmVyc2lvbjogdGhpcy5icm93c2VyVmVyc2lvbixcbiAgICAgIFt0aGlzLmJyb3dzZXJFbmdpbmUudG9Mb3dlckNhc2UoKV06IHRydWUsXG4gICAgICB1aV92ZXJzaW9uOiB0aGlzLmlzTW9iaWxlRGV2aWNlID8gRGV2aWNlLm1vYmlsZSA6IERldmljZS5kZXNrdG9wLFxuICAgICAgb3M6IHRoaXMub3MsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmlzTW9iaWxlRGV2aWNlKSB7XG4gICAgICBicm93c2VySW5mby5tb2JpbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9zVHlwZSkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBpbmRleCBpcyBzdHJpbmdcbiAgICAgIGJyb3dzZXJJbmZvW3RoaXMub3NUeXBlLnRvTG93ZXJDYXNlKCldID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtPy5pbmNsdWRlcygnaVBob25lJykpIHtcbiAgICAgIGJyb3dzZXJJbmZvLmlwaG9uZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybT8uaW5jbHVkZXMoJ2lQb2QnKSkge1xuICAgICAgYnJvd3NlckluZm8uaXBvZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybT8uaW5jbHVkZXMoJ2lQYWQnKSkge1xuICAgICAgYnJvd3NlckluZm8uaXBhZCA9IHRydWU7XG4gICAgICBicm93c2VySW5mby50YWJsZXQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQW5kcm9pZCkge1xuICAgICAgYnJvd3NlckluZm8uYW5kcm9pZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJJbmZvO1xuICB9XG5cbiAgcHVibGljIGdldCBpc01vYmlsZURldmljZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZXZpY2VBZ2VudHMgPSBbXG4gICAgICAnQW5kcm9pZCcsXG4gICAgICAnd2ViT1MnLFxuICAgICAgJ2lQaG9uZScsXG4gICAgICAnaVBhZCcsXG4gICAgICAnaVBvZCcsXG4gICAgICAnQmxhY2tCZXJyeScsXG4gICAgICAnSUVNb2JpbGUnLFxuICAgICAgJ09wZXJhIE1pbmknLFxuICAgICAgJ01vYmlsZScsXG4gICAgICAnVGFibGV0JyxcbiAgICAgICdLaW5kbGUnLFxuICAgICAgJ1BsYXlib29rJyxcbiAgICAgICdTaWxrJyxcbiAgICAgICdQdWZmaW4nLFxuICAgICAgJ0NyaU9TJyxcbiAgICBdO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGRldmljZUFnZW50cy5qb2luKCd8JyksICdpJykudGVzdCh0aGlzLnVzZXJBZ2VudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzSW9zQW5kTm90SXBhZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydpUGhvbmUnLCAnaVBvZCddLmluY2x1ZGVzKHRoaXMud2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVzZXJQbGF0Zm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCBleHBlcmltZW50YWxQbGF0Zm9ybUFwaSA9IChcbiAgICAgIHRoaXMud2luZG93Lm5hdmlnYXRvciBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgdXNlckFnZW50RGF0YTogVXNlckFnZW50RGF0YSB8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICApPy51c2VyQWdlbnREYXRhO1xuXG4gICAgY29uc3QgcGxhdGZvcm0gPVxuICAgICAgZXhwZXJpbWVudGFsUGxhdGZvcm1BcGk/LnBsYXRmb3JtID8/XG4gICAgICB0aGlzLndpbmRvdz8ubmF2aWdhdG9yPy5wbGF0Zm9ybSA/P1xuICAgICAgdW5rbm93blZhbHVlO1xuXG4gICAgdGhpcy5fcGxhdGZvcm0gPSBwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCcm93c2VySW5mb3JtYXRpb24oKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBicm93c2VyIG9mIGJyb3dzZXJzKSB7XG4gICAgICBjb25zdCBicm93c2VyUmVnRXhwID0gbmV3IFJlZ0V4cChicm93c2VyLnJlZ2V4cEJyb3dzZXJOYW1lV2l0aFZlcnNpb24pO1xuICAgICAgY29uc3QgYnJvd3Nlck5hbWVXaXRoVmVyc2lvbiA9IGJyb3dzZXJSZWdFeHAuZXhlYyh0aGlzLnVzZXJBZ2VudCk7XG5cbiAgICAgIGlmIChicm93c2VyTmFtZVdpdGhWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2Jyb3dzZXJOYW1lID0gYnJvd3Nlci5zZW50TmFtZTtcbiAgICAgICAgdGhpcy5fYnJvd3NlckFwcCA9IGJyb3dzZXIuc2hvcnROYW1lO1xuICAgICAgICB0aGlzLl9icm93c2VyVmVyc2lvbiA9IGJyb3dzZXJOYW1lV2l0aFZlcnNpb25bMl07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9icm93c2VyTmFtZSA9IHVua25vd25WYWx1ZTtcbiAgICAgIHRoaXMuX2Jyb3dzZXJBcHAgPSB1bmtub3duVmFsdWU7XG4gICAgICB0aGlzLl9icm93c2VyVmVyc2lvbiA9IHVua25vd25WYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE9zSW5mb3JtYXRpb24oKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBvcyBvZiBvc0xpc3QpIHtcbiAgICAgIGNvbnN0IG9zUmVnRXhwID0gbmV3IFJlZ0V4cChvcy5yZWdFeHApO1xuICAgICAgY29uc3Qgb3NOYW1lID0gb3NSZWdFeHAuZXhlYyh0aGlzLnVzZXJBZ2VudCk7XG5cbiAgICAgIGlmIChvc05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fb3MgPSBvcy5uYW1lO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fb3MgPSB1bmtub3duVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYnJvd3Nlck5hbWUoKTogQnJvd3Nlck5hbWUge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL0FuZHJvaWRcXHMrKFtcXGQuXSspLy50ZXN0KHRoaXMudXNlckFnZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzWGJveCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL3hib3gvaS50ZXN0KHRoaXMudXNlckFnZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzTGludXgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9saW51eC9pLnRlc3QodGhpcy51c2VyQWdlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNXaW5kb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvd2luZG93cy9pLnRlc3QodGhpcy51c2VyQWdlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYnJvd3NlckVuZ2luZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuZ2luZXMgPSBuZXcgTWFwPEJyb3dzZXJBcHAsIHN0cmluZz4oW1xuICAgICAgWydGaXJlZm94JywgJ0dlY2tvJ10sXG4gICAgICBbJ1NhZmFyaScsICdXZWJraXQnXSxcbiAgICAgIFsnTVNFZGdlLWxlZ2FjeScsICdFZGdlSFRNTCddLFxuICAgICAgWydDaHJvbWUnLCAnQmxpbmsnXSxcbiAgICAgIFsnT3BlcmEnLCAnQmxpbmsnXSxcbiAgICAgIFsnTVNFZGdlJywgJ0JsaW5rJ10sXG4gICAgICBbJ1NhbXN1bmdCcm93c2VyJywgJ0JsaW5rJ10sXG4gICAgXSk7XG5cbiAgICByZXR1cm4gZW5naW5lcy5nZXQodGhpcy5icm93c2VyQXBwKSA/PyB1bmtub3duVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGdldCBvcygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fb3M7XG4gIH1cblxuICBwcml2YXRlIGdldCBvc1R5cGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKFsnaVBob25lJywgJ2lQb2QnLCAnaVBhZCddLmluY2x1ZGVzKHRoaXMud2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSkpIHtcbiAgICAgIHJldHVybiAnaW9zJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy53aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtPy5pbmNsdWRlcygnTWFjSW50ZWwnKSkge1xuICAgICAgcmV0dXJuICdtYWMnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzWGJveCkge1xuICAgICAgcmV0dXJuICd4Ym94JztcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNXaW5kb3dzKSB7XG4gICAgICByZXR1cm4gJ3dpbmRvd3MnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQW5kcm9pZCkge1xuICAgICAgcmV0dXJuICdhbmRyb2lkJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0xpbnV4KSB7XG4gICAgICByZXR1cm4gJ2xpbnV4JztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|