@xsolla/payment-client-core 0.5.4 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/payment/payment.service.mjs +2 -1
- package/esm2022/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +15 -14
- package/esm2022/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +2 -5
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/xsolla-payment-client-core.mjs +17 -18
- package/fesm2022/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.d.ts +1 -0
- package/lib/core/payment/three-ds/three-ds-20/three-ds20.service.d.ts +0 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -163,6 +163,7 @@ export class PaymentService {
|
|
|
163
163
|
this.fields = this.getFields();
|
|
164
164
|
this.form = this.formService.createForm(this.fields);
|
|
165
165
|
this.listenFormStatusChanges(this.form);
|
|
166
|
+
this.emitFormFieldsStatus(this.form);
|
|
166
167
|
this.syncService.setup(this.form, this.fields, this.config);
|
|
167
168
|
return nextAction;
|
|
168
169
|
}
|
|
@@ -576,4 +577,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
576
577
|
providedIn: 'root',
|
|
577
578
|
}]
|
|
578
579
|
}], ctorParameters: () => [{ type: i1.LoggerService }, { type: i2.InitializeService }, { type: i3.SubmitService }, { type: i4.SyncService }, { type: i5.FormService }, { type: i6.StatusService }, { type: i7.FinanceDetailsService }, { type: i8.CreditCardStateService }, { type: i9.NextActionService }, { type: i10.InitializeNextActionService }, { type: i11.ControlConfigService }, { type: i12.ThreeDsService }, { type: i13.FormMessagesService }, { type: i14.SettingsService }, { type: i15.CountryService }, { type: i16.CheckStatusActionCreator }, { type: i17.PrintInstructionService }, { type: i18.PaymentBehaviourService }, { type: i19.TranslateService }, { type: i20.UserBehaviourAnalyticsService }] });
|
|
579
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3BheW1lbnQvcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUVOLE9BQU8sRUFDUCxJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFCLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFjOUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDcEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBSW5ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBSWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBY2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUcvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFF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QzsrR0FqdkJVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBmaWx0ZXIsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFN0YXR1cywgRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3VibWl0UmVzcG9uc2UgfSBmcm9tICcuL3JlcXVlc3RzL3N1Ym1pdC9yZXNwb25zZS9zdWJtaXQtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0vZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEluaXRpYWxpemVSZXNwb25zZSB9IGZyb20gJy4vcmVxdWVzdHMvaW5pdGlhbGl6ZS9yZXNwb25zZS9pbml0aWFsaXplLXJlc3BvbnNlLmNsYXNzJztcbmltcG9ydCB7IEluaXRpYWxpemVTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0cy9pbml0aWFsaXplL2luaXRpYWxpemUuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuL3N0YXR1cy9zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1Ym1pdFNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3RzL3N1Ym1pdC9zdWJtaXQuc2VydmljZSc7XG5pbXBvcnQgeyBTeW5jU2VydmljZSB9IGZyb20gJy4vcmVxdWVzdHMvc3luYy9zeW5jLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzU2VydmljZSB9IGZyb20gJy4vc3RhdHVzL3N0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IE5leHRBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9hY3Rpb25zL25leHQtYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZU5leHRBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9pbml0aWFsaXplLWFjdGlvbnMvaW5pdGlhbGl6ZS1uZXh0LWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xDb25maWcgfSBmcm9tICcuL2Zvcm0vY29udHJvbHMvY29udHJvbC1jb25maWcnO1xuaW1wb3J0IHsgQ29udHJvbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2Zvcm0vY29udHJvbHMvY29udHJvbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaW5hbmNlRGV0YWlscyB9IGZyb20gJy4vZmluYW5jZS1kZXRhaWxzL2ZpbmFuY2UtZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmluYW5jZURldGFpbHNTZXJ2aWNlIH0gZnJvbSAnLi9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4vYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckJlaGF2aW91ckV2ZW50TmFtZSB9IGZyb20gJy4uL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1ldmVudC1uYW1lLmVudW0nO1xuaW1wb3J0IHsgdXNlckJlaGF2aW91ckV2ZW50VHlwZXMgfSBmcm9tICcuLi91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItZXZlbnQvdXNlci1iZWhhdmlvdXItZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgZXZlbnRDYXRlZ29yaWVzIH0gZnJvbSAnLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWV2ZW50L3VzZXItYmVoYXZpb3VyLWV2ZW50LWNhdGVnb3JpZXMnO1xuaW1wb3J0IHsgWHBzU3VtbWFyeSB9IGZyb20gJy4veHBzLXN1bW1hcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi9maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGF5bWVudENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3BheW1lbnQtY29uZmlndXJhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNTdWJtaXRSZXNwb25zZSB9IGZyb20gJy4vcmVxdWVzdHMvc3VibWl0L2lzLXN1Ym1pdC1yZXNwb25zZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBYcHNCb29sZWFuIH0gZnJvbSAnLi4veHBzLWJvb2xlYW4uZW51bSc7XG5pbXBvcnQgeyBTdGF0dXNSZXF1ZXN0UGFyYW1zIH0gZnJvbSAnLi9zdGF0dXMvc3RhdHVzLXJlcXVlc3Qvc3RhdHVzLXJlcXVlc3QtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi9mb3JtL3ZhbGlkYXRvcnMvdmFsaWRhdGlvbi1lcnJvcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElucHV0RXZlbnROYW1lIH0gZnJvbSAnLi9mb3JtL2lucHV0LWV2ZW50LmVudW0nO1xuaW1wb3J0IHsgRm9ybUZpZWxkc1N0YXR1cyB9IGZyb20gJy4vZm9ybS9mb3JtLWZpZWxkcy1zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRocmVlRHNTZXJ2aWNlIH0gZnJvbSAnLi90aHJlZS1kcy90aHJlZS1kcy5zZXJ2aWNlJztcbmltcG9ydCB7IFhwc0NvbW1hbmQgfSBmcm9tICcuL3hwcy1jb21hbmQuZW51bSc7XG5pbXBvcnQgeyBDcmVkaXRDYXJkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkaXQtY2FyZC1zdGF0ZS9jcmVkaXQtY2FyZC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkTmFtZXMgfSBmcm9tICcuL2ZpZWxkLW5hbWVzLmVudW0nO1xuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi9mb3JtL2Zvcm0tc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1NZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL2Zvcm0tbWVzc2FnZXMvZm9ybS1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFhwc01lc3NhZ2UgfSBmcm9tICcuL3hwcy1tZXNzYWdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENvdW50cnlTZXJ2aWNlIH0gZnJvbSAnLi4vY291bnRyeS9jb3VudHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrUGF5bWVudFN5c3RlbXNJbml0aWFsRGF0YSB9IGZyb20gJy4uL3Nkay1wYXltZW50LXN5c3RlbXMvc2RrLXBheW1lbnQtc3lzdGVtcy1pbml0aWFsLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1SZXNwb25zZSB9IGZyb20gJy4vZm9ybS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENvbnRyb2xTdGF0dXMgfSBmcm9tICcuL2Zvcm0vY29udHJvbC1zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEluaXRpYWxpemVkRm9ybSB9IGZyb20gJy4vaW5pdGlhbGl6ZWQtZm9ybS5pbnRlZmFjZSc7XG5pbXBvcnQgeyBDYXNoUGF5bWVudERhdGEgfSBmcm9tICcuL2Nhc2gtcGF5bWVudC1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcmludEluc3RydWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3hzb2xsYS1udW1iZXIvYXBpL3ByaW50LWluc3RydWN0aW9uL3ByaW50LWluc3RydWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3luY1Jlc3BvbnNlIH0gZnJvbSAnLi9yZXF1ZXN0cy9zeW5jL3Jlc3BvbnNlL3N5bmMtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgRXJyb3JUYWdzIH0gZnJvbSAnLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9lcnJvcnMvZWxrLWVycm9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgQmVoYXZpb3VyU3RyYXRlZ3kgfSBmcm9tICcuL3BheW1lbnQtYmVoYXZpb3VyL3N0cmF0ZWdpZXMvYmVoYXZpb3VyLXN0cmF0ZWd5LmFic3RyYWN0JztcbmltcG9ydCB7IFBheW1lbnRCZWhhdmlvdXJTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50LWJlaGF2aW91ci9wYXltZW50LWJlaGF2aW91ci5zZXJ2aWNlJztcbmltcG9ydCB7IGZpZWxkc0FsbG93ZWRUb092ZXJyaWRlIH0gZnJvbSAnLi9mb3JtL292ZXJyaWRlZC1maWVsZHMvZmllbGRzLWFsbG93ZWQtdG8tb3ZlcnJpZGUnO1xuaW1wb3J0IHsgb3ZlcnJpZGVGaWVsZENvbmZpZ3MgfSBmcm9tICcuL2Zvcm0vb3ZlcnJpZGVkLWZpZWxkcy9vdmVycmlkZS1maWVsZC1jb25maWcnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhZ2dlZEVycm9yIH0gZnJvbSAnLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9lcnJvcnMnO1xuaW1wb3J0IHsgdXBkYXRlQWZ0ZXJFcnJvclJ1bGVzIH0gZnJvbSAnLi91cGRhdGUtc3VibWl0LXJlc3BvbnNlL3VwZGF0ZS1hZnRlci1lcnJvci1ydWxlcy5jb25zdCc7XG5pbXBvcnQgeyBmaWVsZHNBbGxvd2VkVG9FeHRlcm5hbENoYW5nZSB9IGZyb20gJy4vZXh0ZXJuYWwtY2hhbmdlLWZpZWxkcy5jb25zdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpc0dvb2dsZVBheVNldHRpbmdzR3VhcmQgfSBmcm9tICcuL3BheW1lbnQtY29uZmlndXJhdGlvbnMvdHlwZXMvaXMtZ29vZ2xlLXBheS1zZXR0aW5ncy5ndWFyZCc7XG5pbXBvcnQgeyBpc0NyZWRpdENhcmRTZXR0aW5nc0d1YXJkIH0gZnJvbSAnLi9wYXltZW50LWNvbmZpZ3VyYXRpb25zL3R5cGVzL2lzLWNyZWRpdC1jYXJkLXNldHRpbmdzLmd1YXJkJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBheW1lbnRTZXJ2aWNlIHtcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IGZvcm1GaWVsZHNTdGF0dXMkKCk6IE9ic2VydmFibGU8Rm9ybUZpZWxkc1N0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1GaWVsZHNTdGF0dXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKEJvb2xlYW4pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGF5bWVudEZvcm0kKCk6IE9ic2VydmFibGU8Rm9ybUNvbnRyb2xTdGF0dXMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BheW1lbnRGb3JtJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVJlc3BvbnNlJCgpOiBPYnNlcnZhYmxlPEZvcm1SZXNwb25zZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybVJlc3BvbnNlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybVJlc3BvbnNlVmFsdWUoKTogRm9ybVJlc3BvbnNlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1SZXNwb25zZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0YTogSW5pdGlhbGl6ZVJlc3BvbnNlIHwgU3VibWl0UmVzcG9uc2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmaW5hbmNlRGV0YWlsczogRmluYW5jZURldGFpbHMgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmb2N1c0ZpZWxkTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZmllbGRzOiBGaWVsZFtdID0gW107XG4gIHByaXZhdGUgaXNTdWJtaXRBdHRlbXB0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0Zvcm1BdXRvU3VibWl0dGVkID0gZmFsc2U7XG4gIHByaXZhdGUgY29uZmlnITogUGF5bWVudENvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgZm9ybURlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGF5bWVudEZvcm0kID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1Db250cm9sU3RhdHVzIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybUZpZWxkc1N0YXR1c1N1YmplY3QgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUZpZWxkc1N0YXR1cyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtUmVzcG9uc2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtUmVzcG9uc2UgfCBudWxsPihcbiAgICBudWxsLFxuICApO1xuXG4gIHByaXZhdGUgaXNTYXZpbmdNZXRob2RNb2RlID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxpemVTZXJ2aWNlOiBJbml0aWFsaXplU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Ym1pdFNlcnZpY2U6IFN1Ym1pdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeW5jU2VydmljZTogU3luY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNTZXJ2aWNlOiBTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmluYW5jZURldGFpbHNTZXJ2aWNlOiBGaW5hbmNlRGV0YWlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmVkaXRDYXJkU3RhdGVTZXJ2aWNlOiBDcmVkaXRDYXJkU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmV4dEFjdGlvblNlcnZpY2U6IE5leHRBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbGl6ZU5leHRBY3Rpb25TZXJ2aWNlOiBJbml0aWFsaXplTmV4dEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sQ29uZmlnU2VydmljZTogQ29udHJvbENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aHJlZURzU2VydmljZTogVGhyZWVEc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtTWVzc2FnZXNTZXJ2aWNlOiBGb3JtTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3VudHJ5U2VydmljZTogQ291bnRyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja1N0YXR1c0FjdGlvbkNyZWF0b3I6IENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW50SW5zdHJ1Y3Rpb25TZXJ2aWNlOiBQcmludEluc3RydWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRCZWhhdmlvdXJTZXJ2aWNlOiBQYXltZW50QmVoYXZpb3VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZTogVXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICBjb25maWc6IFBheW1lbnRDb25maWd1cmF0aW9uLFxuICApOiBQcm9taXNlPEluaXRpYWxpemVkRm9ybT4ge1xuICAgIHRoaXMudGhyZWVEc1NlcnZpY2Uuc3RvcENoZWNraW5nKCk7XG4gICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnN0b3BXYWl0aW5nU3RhdHVzVXBkYXRlcygpO1xuXG4gICAgdGhpcy5kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy5mb3JtRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuaXNTdWJtaXRBdHRlbXB0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzRm9ybUF1dG9TdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMubGlzdGVuRmluYW5jZURldGFpbHMoKTtcblxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuXG4gICAgaWYgKGNvbmZpZy5jb3VudHJ5KSB7XG4gICAgICB0aGlzLmNvdW50cnlTZXJ2aWNlLnNldENvdW50cnkoY29uZmlnLmNvdW50cnkpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVNlcnZpY2UucmVxdWVzdChjb25maWcpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplQmVoYXZpb3VyU3RyYXRlZ2llcygpO1xuXG4gICAgdGhpcy5lbWl0Rm9ybVJlc3BvbnNlKHRoaXMuZGF0YSk7XG5cbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XG4gICAgdGhpcy5zZXR1cEluaXRpYWxGaWVsZFZhbHVlcygpO1xuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtU2VydmljZS5jcmVhdGVGb3JtKHRoaXMuZmllbGRzKTtcblxuICAgIHRoaXMudXBkYXRlUGlkQ29uZmlnKCk7XG4gICAgdGhpcy5zZXR1cFN5bmNTZXJ2aWNlKHRoaXMuZm9ybSwgdGhpcy5maWVsZHMsIGNvbmZpZyk7XG4gICAgdGhpcy5saXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlcyh0aGlzLmZvcm0pO1xuXG4gICAgY29uc3QgaXNOZWVkQXV0b1N1Ym1pdCA9IHRoaXMuY2FuQXV0b1N1Ym1pdCgpO1xuICAgIHRoaXMuaXNGb3JtQXV0b1N1Ym1pdHRlZCA9IGlzTmVlZEF1dG9TdWJtaXQ7XG5cbiAgICBpZiAoaXNOZWVkQXV0b1N1Ym1pdCkge1xuICAgICAgY29uc3QgbmV4dEFjdGlvbiA9IGF3YWl0IHRoaXMuc3VibWl0KCk7XG5cbiAgICAgIGlmIChuZXh0QWN0aW9uKSB7XG4gICAgICAgIHRoaXMubmV4dEFjdGlvblNlcnZpY2UuZW1pdEZsb3dVcGRhdGVzKG5leHRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHRoaXMuZGF0YS5wYXltZW50Rm9ybT8uc3VtbWFyeSk7XG4gICAgdGhpcy5lbWl0Rm9ybUZpZWxkc1N0YXR1cyh0aGlzLmZvcm0pO1xuXG4gICAgdGhpcy5lbWl0Rm9ybU1lc3NhZ2VzKHRoaXMuZ2V0SW5pdGlhbGl6ZU1lc3NhZ2VzKCkpO1xuXG4gICAgY29uc3QgZXhjbHVkZWRGaWVsZHMgPSBbXG4gICAgICBGaWVsZE5hbWVzLmtvcmVhTGltaXRzSW5zdHJ1Y3Rpb24sXG4gICAgICBGaWVsZE5hbWVzLmtvcmVhQ2FzaFJlY2VpcHRJbnN0cnVjdGlvbixcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczogdGhpcy5maWVsZHMuZmlsdGVyKFxuICAgICAgICAoZmllbGQ6IEZpZWxkKSA9PlxuICAgICAgICAgIGZpZWxkPy5pc1Zpc2libGUgPT09IFhwc0Jvb2xlYW4udHJ1ZSAmJlxuICAgICAgICAgICFleGNsdWRlZEZpZWxkcy5pbmNsdWRlcyhmaWVsZD8ubmFtZSBhcyBGaWVsZE5hbWVzKSxcbiAgICAgICksXG4gICAgICBpc0Zvcm1BdXRvU3VibWl0dGVkOiBpc05lZWRBdXRvU3VibWl0LFxuICAgICAgbmV4dEFjdGlvbjogdGhpcy5pbml0aWFsaXplTmV4dEFjdGlvblNlcnZpY2UuZ2V0TmV4dEFjdGlvbih0aGlzLmRhdGEpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3VibWl0KCk6IFByb21pc2U8TmV4dEFjdGlvbiB8IG51bGwgfCB2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmZvcm0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZm9ybSBpcyBlbXB0eSEnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5sb2dTdWJtaXRBdHRlbXB0KCk7XG4gICAgICB0aGlzLmlzU3VibWl0QXR0ZW1wdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKHRoaXMuZm9ybSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2dTdWJtaXQoKTtcblxuICAgIHRoaXMuaXNTYXZpbmdNZXRob2RNb2RlID0gdGhpcy5maWVsZHMuc29tZShcbiAgICAgICh7IG5hbWUsIHZhbHVlIH0pID0+XG4gICAgICAgIG5hbWUgPT09ICdzYXZlUHNBY2NvdW50T25seScgJiYgdmFsdWUgPT09IFhwc0Jvb2xlYW4udHJ1ZSxcbiAgICApO1xuICAgIGNvbnN0IHN1Ym1pdFJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRTZXJ2aWNlLnJlcXVlc3QoXG4gICAgICB0aGlzLmZpZWxkcyxcbiAgICAgIHRoaXMuZm9ybSxcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRsZVN1Ym1pdFdpdGhFcnJvcnMoc3VibWl0UmVzcG9uc2UpO1xuXG4gICAgdGhpcy5kYXRhID0gc3VibWl0UmVzcG9uc2U7XG4gICAgdGhpcy51cGRhdGVQaWRDb25maWcoKTtcbiAgICB0aGlzLmluaXRpYWxpemVCZWhhdmlvdXJTdHJhdGVnaWVzKCk7XG5cbiAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UodGhpcy5kYXRhKTtcblxuICAgIGlmICghdGhpcy5pc1NhdmluZ01ldGhvZE1vZGUpIHtcbiAgICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHN1Ym1pdFJlc3BvbnNlLnN1bW1hcnksIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Rm9ybU1lc3NhZ2VzKHN1Ym1pdFJlc3BvbnNlLm1lc3NhZ2VzKTtcblxuICAgIC8vIEhhbmRsZSAzZHMgZmxvd1xuICAgIGlmIChcbiAgICAgIHN1Ym1pdFJlc3BvbnNlLmN1cnJlbnRDb21tYW5kID09PSBYcHNDb21tYW5kLmNyZWF0ZSAmJlxuICAgICAgc3VibWl0UmVzcG9uc2UucGFyYW1ldGVycy50aHJlZURTRm9ybVxuICAgICkge1xuICAgICAgdGhpcy5ydW5UaHJlZURzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dEFjdGlvbiA9IHRoaXMubmV4dEFjdGlvblNlcnZpY2UuZ2V0TmV4dEFjdGlvbihzdWJtaXRSZXNwb25zZSk7XG5cbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtU2VydmljZS5jcmVhdGVGb3JtKHRoaXMuZmllbGRzKTtcblxuICAgIHRoaXMubGlzdGVuRm9ybVN0YXR1c0NoYW5nZXModGhpcy5mb3JtKTtcbiAgICB0aGlzLnN5bmNTZXJ2aWNlLnNldHVwKHRoaXMuZm9ybSwgdGhpcy5maWVsZHMsIHRoaXMuY29uZmlnKTtcblxuICAgIHJldHVybiBuZXh0QWN0aW9uO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN1Ym1pdFdpdGhGaWVsZHMoZmllbGRzPzogRmllbGRbXSk6IFByb21pc2U8e1xuICAgIHJlc3BvbnNlOiBTdWJtaXRSZXNwb25zZTtcbiAgICBuZXh0QWN0aW9uOiBOZXh0QWN0aW9uIHwgbnVsbCB8IHZvaWQ7XG4gIH0+IHtcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICBuZXcgVGFnZ2VkRXJyb3IoJ3N1Ym1pdCBlcnJvcjogdHJ5aW5nIHRvIHN1Ym1pdCB3aXRoIG5vIGZvcm0nLCBbXG4gICAgICAgICAgRXJyb3JUYWdzLkdPT0dMRVBBWSxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmb3JtIGlzIGVtcHR5IScpO1xuICAgIH1cblxuICAgIHRoaXMuaXNTYXZpbmdNZXRob2RNb2RlID0gdGhpcy5maWVsZHMuc29tZShcbiAgICAgICh7IG5hbWUsIHZhbHVlIH0pID0+XG4gICAgICAgIG5hbWUgPT09ICdzYXZlUHNBY2NvdW50T25seScgJiYgdmFsdWUgPT09IFhwc0Jvb2xlYW4udHJ1ZSxcbiAgICApO1xuICAgIGNvbnN0IHN1Ym1pdFJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRTZXJ2aWNlLnJlcXVlc3QoXG4gICAgICBmaWVsZHMgPz8gdGhpcy5maWVsZHMsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmNvbmZpZyxcbiAgICApO1xuXG4gICAgdGhpcy5kYXRhID0gc3VibWl0UmVzcG9uc2U7XG4gICAgdGhpcy51cGRhdGVQaWRDb25maWcoKTtcbiAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UodGhpcy5kYXRhKTtcblxuICAgIGlmICghdGhpcy5pc1NhdmluZ01ldGhvZE1vZGUpIHtcbiAgICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHN1Ym1pdFJlc3BvbnNlLnN1bW1hcnksIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Rm9ybU1lc3NhZ2VzKHN1Ym1pdFJlc3BvbnNlLm1lc3NhZ2VzKTtcblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy5zeW5jU2VydmljZS5zZXR1cCh0aGlzLmZvcm0sIHRoaXMuZmllbGRzLCB0aGlzLmNvbmZpZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVzcG9uc2U6IHN1Ym1pdFJlc3BvbnNlLFxuICAgICAgbmV4dEFjdGlvbjogdGhpcy5uZXh0QWN0aW9uU2VydmljZS5nZXROZXh0QWN0aW9uKHN1Ym1pdFJlc3BvbnNlKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNldHVwSW5pdGlhbEZpZWxkVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkc1RvT3ZlcnJpZGUgPSB0aGlzLmNvbmZpZy5vdmVycmlkZUZvcm1GaWVsZHM7XG4gICAgaWYgKCFmaWVsZHNUb092ZXJyaWRlKSByZXR1cm47XG5cbiAgICBjb25zdCBvdmVycmlkYWJsZU5hbWVzID0gbmV3IFNldChcbiAgICAgIE9iamVjdC5rZXlzKGZpZWxkc1RvT3ZlcnJpZGUpLmZpbHRlcigobmFtZSkgPT5cbiAgICAgICAgZmllbGRzQWxsb3dlZFRvT3ZlcnJpZGUuaGFzKG5hbWUgYXMgRmllbGROYW1lcyksXG4gICAgICApLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRzKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgaWYgKCFvdmVycmlkYWJsZU5hbWVzLmhhcyhmaWVsZE5hbWUpKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgY29uZmlnID0gb3ZlcnJpZGVGaWVsZENvbmZpZ3NbZmllbGROYW1lXTtcbiAgICAgIGlmICghY29uZmlnKSBjb250aW51ZTtcblxuICAgICAgY29uc3Qgb3ZlcnJpZGRlblZhbHVlID0gZmllbGRzVG9PdmVycmlkZVtmaWVsZE5hbWVdPy5pbml0aWFsVmFsdWU7XG5cbiAgICAgIGZpZWxkLnZhbHVlID0gU3RyaW5nKFxuICAgICAgICBjb25maWcudmFsaWRhdG9yKG92ZXJyaWRkZW5WYWx1ZSlcbiAgICAgICAgICA/IG92ZXJyaWRkZW5WYWx1ZVxuICAgICAgICAgIDogY29uZmlnLmRlZmF1bHRWYWx1ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZpZWxkcygpOiBGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzID8/IFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGE/LnBheW1lbnRGb3JtPy5maWVsZHMgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udHJvbFN0YXR1cyhuYW1lOiBGaWVsZE5hbWVzKTogQ29udHJvbFN0YXR1cyB8IG51bGwge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbml0aWFsRGF0YUZvclNka1BheW1lbnRTeXN0ZW1zKCk6IFByb21pc2U8U2RrUGF5bWVudFN5c3RlbXNJbml0aWFsRGF0YT4ge1xuICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNka1BheW1lbnREYXRhID0gdGhpcy5nZXRTZGtQYXltZW50RGF0YUZyb21SZXNwb25zZSh0aGlzLmRhdGEpO1xuXG4gICAgY29uc3Qgc2hvdWxkSGFuZGxlVXNlckJhY2tSZWRpcmVjdE9uU2RrU2lkZSA9IGlzR29vZ2xlUGF5U2V0dGluZ3NHdWFyZChcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgIClcbiAgICAgID8gISF0aGlzLmNvbmZpZy5wYXltZW50TWV0aG9kU2V0dGluZ3M/LnVzZVNka0hhbmRsZXJGb3JVc2VyQmFja1JlZGlyZWN0XG4gICAgICA6IGZhbHNlO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBkYXRhOiBzZGtQYXltZW50RGF0YS5jaGVja291dERhdGEsXG4gICAgICBzYW5kYm94OiB0aGlzLnNldHRpbmdzU2VydmljZS5pc1NhbmRib3hNb2RlKClcbiAgICAgICAgPyBYcHNCb29sZWFuLnRydWVcbiAgICAgICAgOiBYcHNCb29sZWFuLmZhbHNlLFxuICAgICAgY291bnRyeTogdGhpcy5jb3VudHJ5U2VydmljZS5nZXRDb3VudHJ5KCksXG4gICAgICBmaWVsZHM6IHNka1BheW1lbnREYXRhLmZpZWxkcyxcbiAgICAgIHN1Ym1pdFJlc3BvbnNlOiBpc1N1Ym1pdFJlc3BvbnNlKHRoaXMuZGF0YSkgPyB0aGlzLmRhdGEgOiBudWxsLFxuICAgICAgc3VtbWFyeTogc2RrUGF5bWVudERhdGEuc3VtbWFyeSxcbiAgICAgIGxvY2FsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEN1cnJlbnRMYW5nKCksXG4gICAgICBzaG91bGRIYW5kbGVVc2VyQmFja1JlZGlyZWN0T25TZGtTaWRlLFxuICAgICAgaXNUaHJlZURzSW5kZXBlbmRlbnRXaW5kb3dzOlxuICAgICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5pc190aHJlZV9kc19pbmRlcGVuZGVudF93aW5kb3dzID8/IGZhbHNlLFxuICAgICAgaXNGb3JtQXV0b1N1Ym1pdHRlZDogdGhpcy5pc0Zvcm1BdXRvU3VibWl0dGVkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFFyQ29kZSgpOiBzdHJpbmcge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5mb3JtLnFyLnRpdGxlO1xuICB9XG5cbiAgcHVibGljIGdldENhc2hQYXltZW50RGF0YSgpOiBDYXNoUGF5bWVudERhdGEge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2hJbnN0cnVjdGlvbkZpZWxkID0gdGhpcy5kYXRhLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAncGF5bWVudF9pbnN0cnVjdGlvbicsXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGlzQ2FzaFBheW1lbnRNZXRob2Q6ICEhY2FzaEluc3RydWN0aW9uRmllbGQsXG4gICAgICB4c29sbGFOdW1iZXI6IHRoaXMuZGF0YS54c29sbGFOdW1iZXIuYWNjb3VudFhzb2xsYSxcbiAgICAgIHBpZDogdGhpcy5kYXRhLnBhcmFtZXRlcnMucGlkLFxuICAgICAgcHVibGljSWQ6IHRoaXMuZGF0YS5wYXJhbWV0ZXJzLnB1YmxpY19pZCxcbiAgICAgIHRpdGxlOiB0aGlzLmRhdGEucGFyYW1ldGVycy50aXRsZSxcbiAgICAgIHByb2plY3ROYW1lOiB0aGlzLnNldHRpbmdzU2VydmljZS5wcm9qZWN0Lm5hbWUsXG4gICAgICBpbnN0cnVjdGlvbjogY2FzaEluc3RydWN0aW9uRmllbGQ/LnRpdGxlLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHByaW50VXJsOiB0aGlzLnByaW50SW5zdHJ1Y3Rpb25TZXJ2aWNlLmdldFByaW50SW5zdHJ1Y3Rpb25VcmwocGFyYW1zKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFBpZCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5waWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YSBpbnN0YW5jZW9mIEluaXRpYWxpemVSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5wYXltZW50Rm9ybT8ucGlkID8/IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3VibWl0QnV0dG9uVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5idXlEYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBJbml0aWFsaXplUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGF5bWVudEZvcm0/LmJ1eURhdGEudmFsdWUgPz8gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZShmaWVsZDogRmllbGQpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG4gICAgY29uc3Qgc3luY0Vycm9ycyA9IHRoaXMuc3luY1NlcnZpY2UuZ2V0U3luY1ZhbGlkYXRpb25FcnJvcnMoZmllbGQpO1xuXG4gICAgaWYgKHN5bmNFcnJvcnMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3luY0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2UudmFsaWRhdGUoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbGN1bGF0ZUZpZWxkKFxuICAgIGNoYW5nZWRGaWVsZDogRmllbGQsXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICApOiBQcm9taXNlPFN5bmNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLnJlcXVlc3QoY2hhbmdlZEZpZWxkLCBmaWVsZHMsIG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgfVxuXG4gIHB1YmxpYyBydW5UaHJlZURzKCk6IHZvaWQge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHRoaXMudGhyZWVEc1NlcnZpY2UuY2hlY2tUaHJlZURzKHRoaXMuZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmluYW5jZURldGFpbHMoKTogRmluYW5jZURldGFpbHMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5maW5hbmNlRGV0YWlscztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWU6IHN0cmluZywgZm9ybVN0YXRlOiBGb3JtU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZpZWxkRm9ybVN0YXRlKFxuICAgICAgICB0aGlzLmZvcm0sXG4gICAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGZvcm1TdGF0ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZTogRmllbGROYW1lcyk6IEZvcm1TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldEZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RhdHVzKCk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgaWYgKCFpc1N1Ym1pdFJlc3BvbnNlKHRoaXMuZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2hvdWxkIHN1Ym1pdCBmb3JtIGZpcnN0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zOiBTdGF0dXNSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgcGlkOiB0aGlzLmNvbmZpZy5wYXltZW50TWV0aG9kSWQsXG4gICAgICBpbnZvaWNlOiBwYXJzZUludCh0aGlzLmRhdGEuZml4SW52b2ljZSA/PyAnJyksXG4gICAgICBzaWduYXR1cmU6IHRoaXMuZGF0YS5zaWduYXR1cmUgPz8gJycsXG4gICAgICBsb2NhbGU6XG4gICAgICAgIHRoaXMuZGF0YS5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09ICdsb2NhbGUnKT8udmFsdWUgPz9cbiAgICAgICAgJ2VuJyxcbiAgICAgIGlzU2F2ZVBheW1lbnRBY2NvdW50OiB0aGlzLmlzU2F2aW5nTWV0aG9kTW9kZVxuICAgICAgICA/IFhwc0Jvb2xlYW4udHJ1ZVxuICAgICAgICA6IFhwc0Jvb2xlYW4uZmFsc2UsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNTZXJ2aWNlLmdldFN0YXR1cyhwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RlbkZpbmFsU3RhdHVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgaW52b2ljZSB9ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXMoKTtcblxuICAgIHRoaXMuc3RhdHVzU2VydmljZVxuICAgICAgLmxpc3RlbkZpbmFsU3RhdHVzKGludm9pY2UgYXMgdW5rbm93biBhcyBudW1iZXIpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEFjdGlvblNlcnZpY2UuZW1pdEZsb3dVcGRhdGVzKFxuICAgICAgICAgIHRoaXMuY2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yLmdldEFjdGlvbkRhdGEoKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZpZWxkQ29uZmlnKGZpZWxkOiBGaWVsZCk6IENvbnRyb2xDb25maWcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQ29uZmlnU2VydmljZS5nZXRDb25maWcoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUZpZWxkVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBmb3JtQ29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGV4dGVybmFsQ2hhbmdlRmllbGRWYWx1ZShuYW1lOiBGaWVsZE5hbWVzLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNGaWVsZEFsbG93ZWRGb3JFeHRlcm5hbENoYW5nZSA9XG4gICAgICBmaWVsZHNBbGxvd2VkVG9FeHRlcm5hbENoYW5nZS5oYXMobmFtZSk7XG5cbiAgICBjb25zdCBpc0V4dGVybmFsVmF1bHQgPVxuICAgICAgaXNDcmVkaXRDYXJkU2V0dGluZ3NHdWFyZCh0aGlzLmNvbmZpZykgJiZcbiAgICAgIHRoaXMuY29uZmlnLnBheW1lbnRNZXRob2RTZXR0aW5ncz8udXNlRXh0ZXJuYWxWYXVsdDtcblxuICAgIGlmICghaXNGaWVsZEFsbG93ZWRGb3JFeHRlcm5hbENoYW5nZSB8fCAhaXNFeHRlcm5hbFZhdWx0KSByZXR1cm47XG5cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KG5hbWUpO1xuICAgIGZvcm1Db250cm9sPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlRmllbGRTdGF0ZShuYW1lOiBzdHJpbmcsIHN0YXRlOiBJbnB1dEV2ZW50TmFtZSk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtPy5nZXQobmFtZSk7XG5cbiAgICBpZiAoIXRoaXMuZm9ybSB8fCAhZm9ybUNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIElucHV0RXZlbnROYW1lLmJsdXI6IHtcbiAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvY3VzRmllbGROYW1lID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIElucHV0RXZlbnROYW1lLmZvY3VzOiB7XG4gICAgICAgIGZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvY3VzRmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0Rm9ybUZpZWxkc1N0YXR1cyh0aGlzLmZvcm0pO1xuICB9XG5cbiAgcHVibGljIGFkZEV4dHJhRmllbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNIYXZlRmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09IG5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoaXNIYXZlRmllbGQpIHtcbiAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIGZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB0aXRsZTogJycsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBleGFtcGxlOiAnJyxcbiAgICAgIGlzTWFuZGF0b3J5OiBYcHNCb29sZWFuLnRydWUsXG4gICAgICBpc1Zpc2libGU6IFhwc0Jvb2xlYW4uZmFsc2UsXG4gICAgfSBhcyBGaWVsZDtcblxuICAgIHRoaXMuZmllbGRzLnB1c2goZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QmVoYXZpb3VyU3RyYXRlZ2llcyh0aGlzLmNvbmZpZyk7XG5cbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMuZmluYW5jZURldGFpbHMgPSBudWxsO1xuICAgIHRoaXMuZm9ybSA9IG51bGw7XG4gICAgdGhpcy5maWVsZHMgPSBbXTtcbiAgICB0aGlzLmZvcm1EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG5cbiAgICB0aGlzLnRocmVlRHNTZXJ2aWNlLnN0b3BDaGVja2luZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmluYW5jZURldGFpbHMoc3VtbWFyeT86IFhwc1N1bW1hcnksIG5lZWRMb2dDYXJ0ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmVtaXRXaXRoU3VtbWFyeShzdW1tYXJ5LCBuZWVkTG9nQ2FydCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDcmVkaXRDYXJkU3RhdGUoe1xuICAgIGlkQ2FyZFR5cGUsXG4gICAgY2FyZEJpbkNvdW50cnksXG4gIH06IHtcbiAgICBpZENhcmRUeXBlOiBzdHJpbmc7XG4gICAgY2FyZEJpbkNvdW50cnk/OiBzdHJpbmc7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmNyZWRpdENhcmRTdGF0ZVNlcnZpY2UuZW1pdCh7IGlkQ2FyZFR5cGUsIGNhcmRCaW5Db3VudHJ5IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Rm9ybUZpZWxkc1N0YXR1cyhmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUZpZWxkc1N0YXR1czogRm9ybUZpZWxkc1N0YXR1cyA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNbbmFtZV07XG4gICAgICBmb3JtRmllbGRzU3RhdHVzW25hbWVdID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWxpZGF0aW9uU3RhdHVzOiBjb250cm9sLnN0YXR1cyxcbiAgICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgICAgaXNGb2N1c2VkOiB0aGlzLmZvY3VzRmllbGROYW1lID09PSBuYW1lLFxuICAgICAgICBpc1RvdWNoZWQ6IGNvbnRyb2wudG91Y2hlZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm1GaWVsZHNTdGF0dXNTdWJqZWN0Lm5leHQoZm9ybUZpZWxkc1N0YXR1cyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtTWVzc2FnZXMobWVzc2FnZXM/OiBYcHNNZXNzYWdlW10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1NZXNzYWdlc1NlcnZpY2UuZW1pdE9uUmVzcG9uc2UobWVzc2FnZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN5bmNTZXJ2aWNlKFxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICAgIGNvbmZpZzogUGF5bWVudENvbmZpZ3VyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3luY1NlcnZpY2Uuc2V0dXAoZm9ybSwgZmllbGRzLCBjb25maWcpO1xuICAgIHRoaXMuc3luY1NlcnZpY2UuZGF0YSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHJlc3BvbnNlLnN1bW1hcnkpO1xuICAgICAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXMocmVzcG9uc2UubWVzc2FnZXMpO1xuICAgICAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN5bmNTZXJ2aWNlLmZpZWxkQXN5bmNWYWxpZGF0aW9uJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoZmllbGRBc3luY1ZhbGlkYXRpb24pID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWVsZEFzeW5jVmFsaWRhdGlvbi5maWVsZC5uYW1lKSB7XG4gICAgICAgICAgY2FzZSBGaWVsZE5hbWVzLmNhcmROdW1iZXI6XG4gICAgICAgICAgICB0aGlzLmVtaXRDcmVkaXRDYXJkU3RhdGUoe1xuICAgICAgICAgICAgICBpZENhcmRUeXBlOiBmaWVsZEFzeW5jVmFsaWRhdGlvbi5yZXNwb25zZS5wYXJhbWV0ZXJzLmlkQ2FyZFR5cGUsXG4gICAgICAgICAgICAgIGNhcmRCaW5Db3VudHJ5OlxuICAgICAgICAgICAgICAgIGZpZWxkQXN5bmNWYWxpZGF0aW9uLnJlc3BvbnNlLnBhcmFtZXRlcnMuY2FyZEJpbkNvdW50cnksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZpbmFuY2VEZXRhaWxzKCk6IHZvaWQge1xuICAgIHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmRhdGEkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChmaW5hbmNlRGV0YWlscykgPT4gKHRoaXMuZmluYW5jZURldGFpbHMgPSBmaW5hbmNlRGV0YWlscykpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlcyhmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5mb3JtRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBGb3JtQ29udHJvbFN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKGZvcm0pO1xuICAgICAgICB0aGlzLl9wYXltZW50Rm9ybSQubmV4dChzdGF0dXMpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW4gY2FzZSB0aGUgZm9ybSBwaWQgY2hhbmdlcyBkZXNwaXRlIHRoZSBvbmUgcGFzc2VkIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVQaWRDb25maWcoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBpZCA9IHRoaXMuZ2V0UGlkKCk7XG4gICAgaWYgKGN1cnJlbnRQaWQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnBheW1lbnRNZXRob2RJZCA9IGN1cnJlbnRQaWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Rm9ybVJlc3BvbnNlKGRhdGE6IEZvcm1SZXNwb25zZVsnZGF0YSddKTogdm9pZCB7XG4gICAgbGV0IHR5cGU6IEZvcm1SZXNwb25zZVsndHlwZSddO1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgSW5pdGlhbGl6ZVJlc3BvbnNlKSB7XG4gICAgICB0eXBlID0gJ2luaXRpYWxpemUnO1xuICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIFN1Ym1pdFJlc3BvbnNlKSB7XG4gICAgICB0eXBlID0gJ3N1Ym1pdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGUgPSAnc3luYyc7XG4gICAgfVxuICAgIHRoaXMuX2Zvcm1SZXNwb25zZSQubmV4dCh7XG4gICAgICB0eXBlLFxuICAgICAgZGF0YSxcbiAgICAgIHRva2VuOiB0aGlzLnNldHRpbmdzU2VydmljZS50b2tlbixcbiAgICAgIGlzU2FuZGJveDogdGhpcy5zZXR0aW5nc1NlcnZpY2UuaXNTYW5kYm94TW9kZSgpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbml0aWFsaXplTWVzc2FnZXMoKTogWHBzTWVzc2FnZVtdIHtcbiAgICBjb25zdCBtZXNzYWdlcyA9ICh0aGlzLmRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKS5wYXltZW50Rm9ybT8ubWVzc2FnZXM7XG5cbiAgICByZXR1cm4gbWVzc2FnZXMgPz8gW107XG4gIH1cblxuICBwcml2YXRlIGNhbkF1dG9TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlO1xuICAgIGlmICghcmVzcG9uc2UucGF5bWVudEZvcm0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1JlZGlyZWN0TWV0aG9kID0gcmVzcG9uc2UucGF5bWVudEZvcm0uaXNDaGVja291dDtcbiAgICBjb25zdCBjYW5Ta2lwRm9ybSA9IHJlc3BvbnNlLnBheW1lbnRGb3JtLnNraXBGb3JtO1xuXG4gICAgY29uc3QgaXNTdWl0YWJsZUJ5U3RyYXRlZ3kgPSB0aGlzLmF1dG9TdWJtaXRCZWhhdmlvdXJTdHJhdGVnaWVzKFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgKTtcblxuICAgIHJldHVybiAoIWlzUmVkaXJlY3RNZXRob2QgJiYgY2FuU2tpcEZvcm0pIHx8IGlzU3VpdGFibGVCeVN0cmF0ZWd5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZGtQYXltZW50RGF0YUZyb21SZXNwb25zZShcbiAgICBkYXRhOiBTdWJtaXRSZXNwb25zZSB8IEluaXRpYWxpemVSZXNwb25zZSxcbiAgKToge1xuICAgIGNoZWNrb3V0RGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICBmaWVsZHM6IEZpZWxkW107XG4gICAgc3VtbWFyeTogWHBzU3VtbWFyeSB8IG51bGw7XG4gIH0ge1xuICAgIGlmIChpc1N1Ym1pdFJlc3BvbnNlKGRhdGEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGVja291dERhdGE6IGRhdGEucGFyYW1ldGVycz8uY2hlY2tvdXQuZGF0YS5kYXRhLFxuICAgICAgICBmaWVsZHM6IGRhdGEuZmllbGRzLFxuICAgICAgICBzdW1tYXJ5OiBkYXRhLnN1bW1hcnksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjaGVja291dERhdGE6IG51bGwsXG4gICAgICBmaWVsZHM6IGRhdGEucGF5bWVudEZvcm0/LmZpZWxkcyA/PyBbXSxcbiAgICAgIHN1bW1hcnk6IGRhdGEucGF5bWVudEZvcm0/LnN1bW1hcnkgPz8gbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQmVoYXZpb3VyU3RyYXRlZ2llcygpOiB2b2lkIHtcbiAgICBjb25zdCBiZWhhdmlvdXJTdHJhdGVnaWVzID1cbiAgICAgIHRoaXMucGF5bWVudEJlaGF2aW91clNlcnZpY2UuZ2V0QXBwbGljYWJsZUJlaGF2aW91clN0cmF0ZWdpZXMoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICApO1xuXG4gICAgYmVoYXZpb3VyU3RyYXRlZ2llcy5mb3JFYWNoKChzdHJhdGVneTogQmVoYXZpb3VyU3RyYXRlZ3kpID0+IHtcbiAgICAgIHN0cmF0ZWd5Lm9uSW5pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QmVoYXZpb3VyU3RyYXRlZ2llcyhjb25maWc6IFBheW1lbnRDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgYmVoYXZpb3VyU3RyYXRlZ2llcyA9XG4gICAgICB0aGlzLnBheW1lbnRCZWhhdmlvdXJTZXJ2aWNlLmdldEFwcGxpY2FibGVCZWhhdmlvdXJTdHJhdGVnaWVzKFxuICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICk7XG5cbiAgICBiZWhhdmlvdXJTdHJhdGVnaWVzLmZvckVhY2goKHN0cmF0ZWd5OiBCZWhhdmlvdXJTdHJhdGVneSkgPT4ge1xuICAgICAgc3RyYXRlZ3kub25EZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGF1dG9TdWJtaXRCZWhhdmlvdXJTdHJhdGVnaWVzKGNvbmZpZzogUGF5bWVudENvbmZpZ3VyYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBiZWhhdmlvdXJTdHJhdGVnaWVzID1cbiAgICAgIHRoaXMucGF5bWVudEJlaGF2aW91clNlcnZpY2UuZ2V0QXBwbGljYWJsZUJlaGF2aW91clN0cmF0ZWdpZXMoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgKTtcblxuICAgIHJldHVybiBiZWhhdmlvdXJTdHJhdGVnaWVzLnNvbWUoKHN0cmF0ZWd5OiBCZWhhdmlvdXJTdHJhdGVneSkgPT4ge1xuICAgICAgcmV0dXJuIHN0cmF0ZWd5LmNhbkF1dG9TdWJtaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VibWl0V2l0aEVycm9ycyhzdWJtaXRSZXNwb25zZTogU3VibWl0UmVzcG9uc2UpOiB2b2lkIHtcbiAgICBpZiAoIXN1Ym1pdFJlc3BvbnNlLmVycm9ycz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWVsZHNNYXAgPSB0aGlzLmZpZWxkcy5yZWR1Y2UoKG1hcCwgZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5mb3JtPy5nZXQoZmllbGQubmFtZSk/LnZhbHVlID8/IGZpZWxkLnZhbHVlO1xuICAgICAgICBtYXAuc2V0KGZpZWxkLm5hbWUsIGZpZWxkVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LCBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpKTtcblxuICAgIHVwZGF0ZUFmdGVyRXJyb3JSdWxlcy5mb3JFYWNoKChydWxlKSA9PlxuICAgICAgcnVsZS5hcHBseShzdWJtaXRSZXNwb25zZSwgZmllbGRzTWFwKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dTdWJtaXRBdHRlbXB0KCk6IHZvaWQge1xuICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUuYXR0ZW1wdEJ1eU5vdyxcbiAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLmNsaWNrLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1N1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1N1Ym1pdEF0dGVtcHRlZCkge1xuICAgICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5zZW5kKFxuICAgICAgICBVc2VyQmVoYXZpb3VyRXZlbnROYW1lLmF0dGVtcHRDb250aW51ZSxcbiAgICAgICAgdXNlckJlaGF2aW91ckV2ZW50VHlwZXMuY2xpY2ssXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudENhdGVnb3J5OiBldmVudENhdGVnb3JpZXMud2l0aEludm9pY2UsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUuY2xpY2tCdG5QYXksXG4gICAgICB1c2VyQmVoYXZpb3VyRXZlbnRUeXBlcy5jbGljayxcbiAgICAgIHtcbiAgICAgICAgZXZlbnRDYXRlZ29yeTogZXZlbnRDYXRlZ29yaWVzLndpdGhJbnZvaWNlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
580
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3BheW1lbnQvcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUVOLE9BQU8sRUFDUCxJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFCLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFjOUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDcEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBSW5ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBSWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBY2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUcvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFF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QUNFLGFBQWEsRUFBRSxlQUFlLENBQUMsV0FBVztTQUMzQyxDQUNGLENBQUM7SUFDSixDQUFDOytHQWx2QlUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGZpbHRlcixcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sU3RhdHVzLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJtaXRSZXNwb25zZSB9IGZyb20gJy4vcmVxdWVzdHMvc3VibWl0L3Jlc3BvbnNlL3N1Ym1pdC1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS9mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZVJlc3BvbnNlIH0gZnJvbSAnLi9yZXF1ZXN0cy9pbml0aWFsaXplL3Jlc3BvbnNlL2luaXRpYWxpemUtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZVNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3RzL2luaXRpYWxpemUvaW5pdGlhbGl6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4vc3RhdHVzL3N0YXR1cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3VibWl0U2VydmljZSB9IGZyb20gJy4vcmVxdWVzdHMvc3VibWl0L3N1Ym1pdC5zZXJ2aWNlJztcbmltcG9ydCB7IFN5bmNTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0cy9zeW5jL3N5bmMuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi9zdGF0dXMvc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvblNlcnZpY2UgfSBmcm9tICcuL2FjdGlvbnMvbmV4dC1hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJbml0aWFsaXplTmV4dEFjdGlvblNlcnZpY2UgfSBmcm9tICcuL2luaXRpYWxpemUtYWN0aW9ucy9pbml0aWFsaXplLW5leHQtYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbENvbmZpZyB9IGZyb20gJy4vZm9ybS9jb250cm9scy9jb250cm9sLWNvbmZpZyc7XG5pbXBvcnQgeyBDb250cm9sQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZm9ybS9jb250cm9scy9jb250cm9sLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbmFuY2VEZXRhaWxzIH0gZnJvbSAnLi9maW5hbmNlLWRldGFpbHMvZmluYW5jZS1kZXRhaWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaW5hbmNlRGV0YWlsc1NlcnZpY2UgfSBmcm9tICcuL2ZpbmFuY2UtZGV0YWlscy9maW5hbmNlLWRldGFpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBOZXh0QWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL25leHQtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVc2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyQmVoYXZpb3VyRXZlbnROYW1lIH0gZnJvbSAnLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWV2ZW50LW5hbWUuZW51bSc7XG5pbXBvcnQgeyB1c2VyQmVoYXZpb3VyRXZlbnRUeXBlcyB9IGZyb20gJy4uL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1ldmVudC91c2VyLWJlaGF2aW91ci1ldmVudC10eXBlcyc7XG5pbXBvcnQgeyBldmVudENhdGVnb3JpZXMgfSBmcm9tICcuLi91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItZXZlbnQvdXNlci1iZWhhdmlvdXItZXZlbnQtY2F0ZWdvcmllcyc7XG5pbXBvcnQgeyBYcHNTdW1tYXJ5IH0gZnJvbSAnLi94cHMtc3VtbWFyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuL2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQYXltZW50Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vcGF5bWVudC1jb25maWd1cmF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBpc1N1Ym1pdFJlc3BvbnNlIH0gZnJvbSAnLi9yZXF1ZXN0cy9zdWJtaXQvaXMtc3VibWl0LXJlc3BvbnNlLmZ1bmN0aW9uJztcbmltcG9ydCB7IFhwc0Jvb2xlYW4gfSBmcm9tICcuLi94cHMtYm9vbGVhbi5lbnVtJztcbmltcG9ydCB7IFN0YXR1c1JlcXVlc3RQYXJhbXMgfSBmcm9tICcuL3N0YXR1cy9zdGF0dXMtcmVxdWVzdC9zdGF0dXMtcmVxdWVzdC1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICcuL2Zvcm0vdmFsaWRhdG9ycy92YWxpZGF0aW9uLWVycm9ycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5wdXRFdmVudE5hbWUgfSBmcm9tICcuL2Zvcm0vaW5wdXQtZXZlbnQuZW51bSc7XG5pbXBvcnQgeyBGb3JtRmllbGRzU3RhdHVzIH0gZnJvbSAnLi9mb3JtL2Zvcm0tZmllbGRzLXN0YXR1cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGhyZWVEc1NlcnZpY2UgfSBmcm9tICcuL3RocmVlLWRzL3RocmVlLWRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgWHBzQ29tbWFuZCB9IGZyb20gJy4veHBzLWNvbWFuZC5lbnVtJztcbmltcG9ydCB7IENyZWRpdENhcmRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NyZWRpdC1jYXJkLXN0YXRlL2NyZWRpdC1jYXJkLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4vZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuL2Zvcm0vZm9ybS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybU1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4vZm9ybS1tZXNzYWdlcy9mb3JtLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgWHBzTWVzc2FnZSB9IGZyb20gJy4veHBzLW1lc3NhZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NldHRpbmdzL3NldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ291bnRyeVNlcnZpY2UgfSBmcm9tICcuLi9jb3VudHJ5L2NvdW50cnkuc2VydmljZSc7XG5pbXBvcnQgeyBTZGtQYXltZW50U3lzdGVtc0luaXRpYWxEYXRhIH0gZnJvbSAnLi4vc2RrLXBheW1lbnQtc3lzdGVtcy9zZGstcGF5bWVudC1zeXN0ZW1zLWluaXRpYWwtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybVJlc3BvbnNlIH0gZnJvbSAnLi9mb3JtLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3IgfSBmcm9tICcuL2FjdGlvbnMvY2hlY2stc3RhdHVzL2NoZWNrLXN0YXR1cy5hY3Rpb24uY2xhc3MnO1xuaW1wb3J0IHsgQ29udHJvbFN0YXR1cyB9IGZyb20gJy4vZm9ybS9jb250cm9sLXN0YXR1cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZWRGb3JtIH0gZnJvbSAnLi9pbml0aWFsaXplZC1mb3JtLmludGVmYWNlJztcbmltcG9ydCB7IENhc2hQYXltZW50RGF0YSB9IGZyb20gJy4vY2FzaC1wYXltZW50LWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFByaW50SW5zdHJ1Y3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4veHNvbGxhLW51bWJlci9hcGkvcHJpbnQtaW5zdHJ1Y3Rpb24vcHJpbnQtaW5zdHJ1Y3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTeW5jUmVzcG9uc2UgfSBmcm9tICcuL3JlcXVlc3RzL3N5bmMvcmVzcG9uc2Uvc3luYy1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBFcnJvclRhZ3MgfSBmcm9tICcuLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9lbGstZXJyb3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBCZWhhdmlvdXJTdHJhdGVneSB9IGZyb20gJy4vcGF5bWVudC1iZWhhdmlvdXIvc3RyYXRlZ2llcy9iZWhhdmlvdXItc3RyYXRlZ3kuYWJzdHJhY3QnO1xuaW1wb3J0IHsgUGF5bWVudEJlaGF2aW91clNlcnZpY2UgfSBmcm9tICcuL3BheW1lbnQtYmVoYXZpb3VyL3BheW1lbnQtYmVoYXZpb3VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZmllbGRzQWxsb3dlZFRvT3ZlcnJpZGUgfSBmcm9tICcuL2Zvcm0vb3ZlcnJpZGVkLWZpZWxkcy9maWVsZHMtYWxsb3dlZC10by1vdmVycmlkZSc7XG5pbXBvcnQgeyBvdmVycmlkZUZpZWxkQ29uZmlncyB9IGZyb20gJy4vZm9ybS9vdmVycmlkZWQtZmllbGRzL292ZXJyaWRlLWZpZWxkLWNvbmZpZyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnZ2VkRXJyb3IgfSBmcm9tICcuLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycyc7XG5pbXBvcnQgeyB1cGRhdGVBZnRlckVycm9yUnVsZXMgfSBmcm9tICcuL3VwZGF0ZS1zdWJtaXQtcmVzcG9uc2UvdXBkYXRlLWFmdGVyLWVycm9yLXJ1bGVzLmNvbnN0JztcbmltcG9ydCB7IGZpZWxkc0FsbG93ZWRUb0V4dGVybmFsQ2hhbmdlIH0gZnJvbSAnLi9leHRlcm5hbC1jaGFuZ2UtZmllbGRzLmNvbnN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGlzR29vZ2xlUGF5U2V0dGluZ3NHdWFyZCB9IGZyb20gJy4vcGF5bWVudC1jb25maWd1cmF0aW9ucy90eXBlcy9pcy1nb29nbGUtcGF5LXNldHRpbmdzLmd1YXJkJztcbmltcG9ydCB7IGlzQ3JlZGl0Q2FyZFNldHRpbmdzR3VhcmQgfSBmcm9tICcuL3BheW1lbnQtY29uZmlndXJhdGlvbnMvdHlwZXMvaXMtY3JlZGl0LWNhcmQtc2V0dGluZ3MuZ3VhcmQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGF5bWVudFNlcnZpY2Uge1xuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgZm9ybUZpZWxkc1N0YXR1cyQoKTogT2JzZXJ2YWJsZTxGb3JtRmllbGRzU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkc1N0YXR1c1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoQm9vbGVhbikpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXltZW50Rm9ybSQoKTogT2JzZXJ2YWJsZTxGb3JtQ29udHJvbFN0YXR1cyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcGF5bWVudEZvcm0kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtUmVzcG9uc2UkKCk6IE9ic2VydmFibGU8Rm9ybVJlc3BvbnNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JtUmVzcG9uc2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtUmVzcG9uc2VWYWx1ZSgpOiBGb3JtUmVzcG9uc2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybVJlc3BvbnNlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRhOiBJbml0aWFsaXplUmVzcG9uc2UgfCBTdWJtaXRSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGZpbmFuY2VEZXRhaWxzOiBGaW5hbmNlRGV0YWlscyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGZvY3VzRmllbGROYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgcHJpdmF0ZSBpc1N1Ym1pdEF0dGVtcHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGlzRm9ybUF1dG9TdWJtaXR0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjb25maWchOiBQYXltZW50Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBmb3JtRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXltZW50Rm9ybSQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Rm9ybUNvbnRyb2xTdGF0dXMgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmllbGRzU3RhdHVzU3ViamVjdCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRmllbGRzU3RhdHVzIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1SZXNwb25zZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1SZXNwb25zZSB8IG51bGw+KFxuICAgIG51bGwsXG4gICk7XG5cbiAgcHJpdmF0ZSBpc1NhdmluZ01ldGhvZE1vZGUgPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbGl6ZVNlcnZpY2U6IEluaXRpYWxpemVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VibWl0U2VydmljZTogU3VibWl0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5bmNTZXJ2aWNlOiBTeW5jU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1NlcnZpY2U6IFN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaW5hbmNlRGV0YWlsc1NlcnZpY2U6IEZpbmFuY2VEZXRhaWxzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZWRpdENhcmRTdGF0ZVNlcnZpY2U6IENyZWRpdENhcmRTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZXh0QWN0aW9uU2VydmljZTogTmV4dEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsaXplTmV4dEFjdGlvblNlcnZpY2U6IEluaXRpYWxpemVOZXh0QWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb25maWdTZXJ2aWNlOiBDb250cm9sQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRocmVlRHNTZXJ2aWNlOiBUaHJlZURzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1NZXNzYWdlc1NlcnZpY2U6IEZvcm1NZXNzYWdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdW50cnlTZXJ2aWNlOiBDb3VudHJ5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcjogQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbnRJbnN0cnVjdGlvblNlcnZpY2U6IFByaW50SW5zdHJ1Y3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudEJlaGF2aW91clNlcnZpY2U6IFBheW1lbnRCZWhhdmlvdXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlOiBVc2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKFxuICAgIGNvbmZpZzogUGF5bWVudENvbmZpZ3VyYXRpb24sXG4gICk6IFByb21pc2U8SW5pdGlhbGl6ZWRGb3JtPiB7XG4gICAgdGhpcy50aHJlZURzU2VydmljZS5zdG9wQ2hlY2tpbmcoKTtcbiAgICB0aGlzLnN0YXR1c1NlcnZpY2Uuc3RvcFdhaXRpbmdTdGF0dXNVcGRhdGVzKCk7XG5cbiAgICB0aGlzLmRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmZvcm1EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy5pc1N1Ym1pdEF0dGVtcHRlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNGb3JtQXV0b1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5saXN0ZW5GaW5hbmNlRGV0YWlscygpO1xuXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG5cbiAgICBpZiAoY29uZmlnLmNvdW50cnkpIHtcbiAgICAgIHRoaXMuY291bnRyeVNlcnZpY2Uuc2V0Q291bnRyeShjb25maWcuY291bnRyeSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gYXdhaXQgdGhpcy5pbml0aWFsaXplU2VydmljZS5yZXF1ZXN0KGNvbmZpZyk7XG5cbiAgICB0aGlzLmluaXRpYWxpemVCZWhhdmlvdXJTdHJhdGVnaWVzKCk7XG5cbiAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UodGhpcy5kYXRhKTtcblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLnNldHVwSW5pdGlhbEZpZWxkVmFsdWVzKCk7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy51cGRhdGVQaWRDb25maWcoKTtcbiAgICB0aGlzLnNldHVwU3luY1NlcnZpY2UodGhpcy5mb3JtLCB0aGlzLmZpZWxkcywgY29uZmlnKTtcbiAgICB0aGlzLmxpc3RlbkZvcm1TdGF0dXNDaGFuZ2VzKHRoaXMuZm9ybSk7XG5cbiAgICBjb25zdCBpc05lZWRBdXRvU3VibWl0ID0gdGhpcy5jYW5BdXRvU3VibWl0KCk7XG4gICAgdGhpcy5pc0Zvcm1BdXRvU3VibWl0dGVkID0gaXNOZWVkQXV0b1N1Ym1pdDtcblxuICAgIGlmIChpc05lZWRBdXRvU3VibWl0KSB7XG4gICAgICBjb25zdCBuZXh0QWN0aW9uID0gYXdhaXQgdGhpcy5zdWJtaXQoKTtcblxuICAgICAgaWYgKG5leHRBY3Rpb24pIHtcbiAgICAgICAgdGhpcy5uZXh0QWN0aW9uU2VydmljZS5lbWl0Rmxvd1VwZGF0ZXMobmV4dEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0RmluYW5jZURldGFpbHModGhpcy5kYXRhLnBheW1lbnRGb3JtPy5zdW1tYXJ5KTtcbiAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKHRoaXMuZm9ybSk7XG5cbiAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXModGhpcy5nZXRJbml0aWFsaXplTWVzc2FnZXMoKSk7XG5cbiAgICBjb25zdCBleGNsdWRlZEZpZWxkcyA9IFtcbiAgICAgIEZpZWxkTmFtZXMua29yZWFMaW1pdHNJbnN0cnVjdGlvbixcbiAgICAgIEZpZWxkTmFtZXMua29yZWFDYXNoUmVjZWlwdEluc3RydWN0aW9uLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcy5maWx0ZXIoXG4gICAgICAgIChmaWVsZDogRmllbGQpID0+XG4gICAgICAgICAgZmllbGQ/LmlzVmlzaWJsZSA9PT0gWHBzQm9vbGVhbi50cnVlICYmXG4gICAgICAgICAgIWV4Y2x1ZGVkRmllbGRzLmluY2x1ZGVzKGZpZWxkPy5uYW1lIGFzIEZpZWxkTmFtZXMpLFxuICAgICAgKSxcbiAgICAgIGlzRm9ybUF1dG9TdWJtaXR0ZWQ6IGlzTmVlZEF1dG9TdWJtaXQsXG4gICAgICBuZXh0QWN0aW9uOiB0aGlzLmluaXRpYWxpemVOZXh0QWN0aW9uU2VydmljZS5nZXROZXh0QWN0aW9uKHRoaXMuZGF0YSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQoKTogUHJvbWlzZTxOZXh0QWN0aW9uIHwgbnVsbCB8IHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmb3JtIGlzIGVtcHR5IScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZ1N1Ym1pdEF0dGVtcHQoKTtcbiAgICAgIHRoaXMuaXNTdWJtaXRBdHRlbXB0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMuZW1pdEZvcm1GaWVsZHNTdGF0dXModGhpcy5mb3JtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ1N1Ym1pdCgpO1xuXG4gICAgdGhpcy5pc1NhdmluZ01ldGhvZE1vZGUgPSB0aGlzLmZpZWxkcy5zb21lKFxuICAgICAgKHsgbmFtZSwgdmFsdWUgfSkgPT5cbiAgICAgICAgbmFtZSA9PT0gJ3NhdmVQc0FjY291bnRPbmx5JyAmJiB2YWx1ZSA9PT0gWHBzQm9vbGVhbi50cnVlLFxuICAgICk7XG4gICAgY29uc3Qgc3VibWl0UmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdFNlcnZpY2UucmVxdWVzdChcbiAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgdGhpcy5mb3JtLFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgKTtcblxuICAgIHRoaXMuaGFuZGxlU3VibWl0V2l0aEVycm9ycyhzdWJtaXRSZXNwb25zZSk7XG5cbiAgICB0aGlzLmRhdGEgPSBzdWJtaXRSZXNwb25zZTtcbiAgICB0aGlzLnVwZGF0ZVBpZENvbmZpZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUJlaGF2aW91clN0cmF0ZWdpZXMoKTtcblxuICAgIHRoaXMuZW1pdEZvcm1SZXNwb25zZSh0aGlzLmRhdGEpO1xuXG4gICAgaWYgKCF0aGlzLmlzU2F2aW5nTWV0aG9kTW9kZSkge1xuICAgICAgdGhpcy5lbWl0RmluYW5jZURldGFpbHMoc3VibWl0UmVzcG9uc2Uuc3VtbWFyeSwgZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXMoc3VibWl0UmVzcG9uc2UubWVzc2FnZXMpO1xuXG4gICAgLy8gSGFuZGxlIDNkcyBmbG93XG4gICAgaWYgKFxuICAgICAgc3VibWl0UmVzcG9uc2UuY3VycmVudENvbW1hbmQgPT09IFhwc0NvbW1hbmQuY3JlYXRlICYmXG4gICAgICBzdWJtaXRSZXNwb25zZS5wYXJhbWV0ZXJzLnRocmVlRFNGb3JtXG4gICAgKSB7XG4gICAgICB0aGlzLnJ1blRocmVlRHMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0QWN0aW9uID0gdGhpcy5uZXh0QWN0aW9uU2VydmljZS5nZXROZXh0QWN0aW9uKHN1Ym1pdFJlc3BvbnNlKTtcblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy5saXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlcyh0aGlzLmZvcm0pO1xuICAgIHRoaXMuZW1pdEZvcm1GaWVsZHNTdGF0dXModGhpcy5mb3JtKTtcbiAgICB0aGlzLnN5bmNTZXJ2aWNlLnNldHVwKHRoaXMuZm9ybSwgdGhpcy5maWVsZHMsIHRoaXMuY29uZmlnKTtcblxuICAgIHJldHVybiBuZXh0QWN0aW9uO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN1Ym1pdFdpdGhGaWVsZHMoZmllbGRzPzogRmllbGRbXSk6IFByb21pc2U8e1xuICAgIHJlc3BvbnNlOiBTdWJtaXRSZXNwb25zZTtcbiAgICBuZXh0QWN0aW9uOiBOZXh0QWN0aW9uIHwgbnVsbCB8IHZvaWQ7XG4gIH0+IHtcbiAgICBpZiAoIXRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICBuZXcgVGFnZ2VkRXJyb3IoJ3N1Ym1pdCBlcnJvcjogdHJ5aW5nIHRvIHN1Ym1pdCB3aXRoIG5vIGZvcm0nLCBbXG4gICAgICAgICAgRXJyb3JUYWdzLkdPT0dMRVBBWSxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmb3JtIGlzIGVtcHR5IScpO1xuICAgIH1cblxuICAgIHRoaXMuaXNTYXZpbmdNZXRob2RNb2RlID0gdGhpcy5maWVsZHMuc29tZShcbiAgICAgICh7IG5hbWUsIHZhbHVlIH0pID0+XG4gICAgICAgIG5hbWUgPT09ICdzYXZlUHNBY2NvdW50T25seScgJiYgdmFsdWUgPT09IFhwc0Jvb2xlYW4udHJ1ZSxcbiAgICApO1xuICAgIGNvbnN0IHN1Ym1pdFJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRTZXJ2aWNlLnJlcXVlc3QoXG4gICAgICBmaWVsZHMgPz8gdGhpcy5maWVsZHMsXG4gICAgICB0aGlzLmZvcm0sXG4gICAgICB0aGlzLmNvbmZpZyxcbiAgICApO1xuXG4gICAgdGhpcy5kYXRhID0gc3VibWl0UmVzcG9uc2U7XG4gICAgdGhpcy51cGRhdGVQaWRDb25maWcoKTtcbiAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UodGhpcy5kYXRhKTtcblxuICAgIGlmICghdGhpcy5pc1NhdmluZ01ldGhvZE1vZGUpIHtcbiAgICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHN1Ym1pdFJlc3BvbnNlLnN1bW1hcnksIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Rm9ybU1lc3NhZ2VzKHN1Ym1pdFJlc3BvbnNlLm1lc3NhZ2VzKTtcblxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmNyZWF0ZUZvcm0odGhpcy5maWVsZHMpO1xuXG4gICAgdGhpcy5zeW5jU2VydmljZS5zZXR1cCh0aGlzLmZvcm0sIHRoaXMuZmllbGRzLCB0aGlzLmNvbmZpZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVzcG9uc2U6IHN1Ym1pdFJlc3BvbnNlLFxuICAgICAgbmV4dEFjdGlvbjogdGhpcy5uZXh0QWN0aW9uU2VydmljZS5nZXROZXh0QWN0aW9uKHN1Ym1pdFJlc3BvbnNlKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNldHVwSW5pdGlhbEZpZWxkVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkc1RvT3ZlcnJpZGUgPSB0aGlzLmNvbmZpZy5vdmVycmlkZUZvcm1GaWVsZHM7XG4gICAgaWYgKCFmaWVsZHNUb092ZXJyaWRlKSByZXR1cm47XG5cbiAgICBjb25zdCBvdmVycmlkYWJsZU5hbWVzID0gbmV3IFNldChcbiAgICAgIE9iamVjdC5rZXlzKGZpZWxkc1RvT3ZlcnJpZGUpLmZpbHRlcigobmFtZSkgPT5cbiAgICAgICAgZmllbGRzQWxsb3dlZFRvT3ZlcnJpZGUuaGFzKG5hbWUgYXMgRmllbGROYW1lcyksXG4gICAgICApLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRzKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgaWYgKCFvdmVycmlkYWJsZU5hbWVzLmhhcyhmaWVsZE5hbWUpKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgY29uZmlnID0gb3ZlcnJpZGVGaWVsZENvbmZpZ3NbZmllbGROYW1lXTtcbiAgICAgIGlmICghY29uZmlnKSBjb250aW51ZTtcblxuICAgICAgY29uc3Qgb3ZlcnJpZGRlblZhbHVlID0gZmllbGRzVG9PdmVycmlkZVtmaWVsZE5hbWVdPy5pbml0aWFsVmFsdWU7XG5cbiAgICAgIGZpZWxkLnZhbHVlID0gU3RyaW5nKFxuICAgICAgICBjb25maWcudmFsaWRhdG9yKG92ZXJyaWRkZW5WYWx1ZSlcbiAgICAgICAgICA/IG92ZXJyaWRkZW5WYWx1ZVxuICAgICAgICAgIDogY29uZmlnLmRlZmF1bHRWYWx1ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZpZWxkcygpOiBGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzID8/IFtdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGE/LnBheW1lbnRGb3JtPy5maWVsZHMgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udHJvbFN0YXR1cyhuYW1lOiBGaWVsZE5hbWVzKTogQ29udHJvbFN0YXR1cyB8IG51bGwge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgIHN0YXR1czogY29udHJvbC5zdGF0dXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJbml0aWFsRGF0YUZvclNka1BheW1lbnRTeXN0ZW1zKCk6IFByb21pc2U8U2RrUGF5bWVudFN5c3RlbXNJbml0aWFsRGF0YT4ge1xuICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNka1BheW1lbnREYXRhID0gdGhpcy5nZXRTZGtQYXltZW50RGF0YUZyb21SZXNwb25zZSh0aGlzLmRhdGEpO1xuXG4gICAgY29uc3Qgc2hvdWxkSGFuZGxlVXNlckJhY2tSZWRpcmVjdE9uU2RrU2lkZSA9IGlzR29vZ2xlUGF5U2V0dGluZ3NHdWFyZChcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgIClcbiAgICAgID8gISF0aGlzLmNvbmZpZy5wYXltZW50TWV0aG9kU2V0dGluZ3M/LnVzZVNka0hhbmRsZXJGb3JVc2VyQmFja1JlZGlyZWN0XG4gICAgICA6IGZhbHNlO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBkYXRhOiBzZGtQYXltZW50RGF0YS5jaGVja291dERhdGEsXG4gICAgICBzYW5kYm94OiB0aGlzLnNldHRpbmdzU2VydmljZS5pc1NhbmRib3hNb2RlKClcbiAgICAgICAgPyBYcHNCb29sZWFuLnRydWVcbiAgICAgICAgOiBYcHNCb29sZWFuLmZhbHNlLFxuICAgICAgY291bnRyeTogdGhpcy5jb3VudHJ5U2VydmljZS5nZXRDb3VudHJ5KCksXG4gICAgICBmaWVsZHM6IHNka1BheW1lbnREYXRhLmZpZWxkcyxcbiAgICAgIHN1Ym1pdFJlc3BvbnNlOiBpc1N1Ym1pdFJlc3BvbnNlKHRoaXMuZGF0YSkgPyB0aGlzLmRhdGEgOiBudWxsLFxuICAgICAgc3VtbWFyeTogc2RrUGF5bWVudERhdGEuc3VtbWFyeSxcbiAgICAgIGxvY2FsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEN1cnJlbnRMYW5nKCksXG4gICAgICBzaG91bGRIYW5kbGVVc2VyQmFja1JlZGlyZWN0T25TZGtTaWRlLFxuICAgICAgaXNUaHJlZURzSW5kZXBlbmRlbnRXaW5kb3dzOlxuICAgICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5pc190aHJlZV9kc19pbmRlcGVuZGVudF93aW5kb3dzID8/IGZhbHNlLFxuICAgICAgaXNGb3JtQXV0b1N1Ym1pdHRlZDogdGhpcy5pc0Zvcm1BdXRvU3VibWl0dGVkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFFyQ29kZSgpOiBzdHJpbmcge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5mb3JtLnFyLnRpdGxlO1xuICB9XG5cbiAgcHVibGljIGdldENhc2hQYXltZW50RGF0YSgpOiBDYXNoUGF5bWVudERhdGEge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2hJbnN0cnVjdGlvbkZpZWxkID0gdGhpcy5kYXRhLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSAncGF5bWVudF9pbnN0cnVjdGlvbicsXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGlzQ2FzaFBheW1lbnRNZXRob2Q6ICEhY2FzaEluc3RydWN0aW9uRmllbGQsXG4gICAgICB4c29sbGFOdW1iZXI6IHRoaXMuZGF0YS54c29sbGFOdW1iZXIuYWNjb3VudFhzb2xsYSxcbiAgICAgIHBpZDogdGhpcy5kYXRhLnBhcmFtZXRlcnMucGlkLFxuICAgICAgcHVibGljSWQ6IHRoaXMuZGF0YS5wYXJhbWV0ZXJzLnB1YmxpY19pZCxcbiAgICAgIHRpdGxlOiB0aGlzLmRhdGEucGFyYW1ldGVycy50aXRsZSxcbiAgICAgIHByb2plY3ROYW1lOiB0aGlzLnNldHRpbmdzU2VydmljZS5wcm9qZWN0Lm5hbWUsXG4gICAgICBpbnN0cnVjdGlvbjogY2FzaEluc3RydWN0aW9uRmllbGQ/LnRpdGxlLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHByaW50VXJsOiB0aGlzLnByaW50SW5zdHJ1Y3Rpb25TZXJ2aWNlLmdldFByaW50SW5zdHJ1Y3Rpb25VcmwocGFyYW1zKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFBpZCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5waWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YSBpbnN0YW5jZW9mIEluaXRpYWxpemVSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YS5wYXltZW50Rm9ybT8ucGlkID8/IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3VibWl0QnV0dG9uVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kYXRhIGluc3RhbmNlb2YgU3VibWl0UmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGFyYW1ldGVycy5idXlEYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEgaW5zdGFuY2VvZiBJbml0aWFsaXplUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEucGF5bWVudEZvcm0/LmJ1eURhdGEudmFsdWUgPz8gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZShmaWVsZDogRmllbGQpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB7XG4gICAgY29uc3Qgc3luY0Vycm9ycyA9IHRoaXMuc3luY1NlcnZpY2UuZ2V0U3luY1ZhbGlkYXRpb25FcnJvcnMoZmllbGQpO1xuXG4gICAgaWYgKHN5bmNFcnJvcnMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3luY0Vycm9ycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2UudmFsaWRhdGUoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbGN1bGF0ZUZpZWxkKFxuICAgIGNoYW5nZWRGaWVsZDogRmllbGQsXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICApOiBQcm9taXNlPFN5bmNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLnJlcXVlc3QoY2hhbmdlZEZpZWxkLCBmaWVsZHMsIG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgfVxuXG4gIHB1YmxpYyBydW5UaHJlZURzKCk6IHZvaWQge1xuICAgIGlmICghaXNTdWJtaXRSZXNwb25zZSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBzdWJtaXQgZm9ybSBmaXJzdCcpO1xuICAgIH1cblxuICAgIHRoaXMudGhyZWVEc1NlcnZpY2UuY2hlY2tUaHJlZURzKHRoaXMuZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmluYW5jZURldGFpbHMoKTogRmluYW5jZURldGFpbHMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5maW5hbmNlRGV0YWlscztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWVsZEZvcm1TdGF0ZShmaWVsZE5hbWU6IHN0cmluZywgZm9ybVN0YXRlOiBGb3JtU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZpZWxkRm9ybVN0YXRlKFxuICAgICAgICB0aGlzLmZvcm0sXG4gICAgICAgIHRoaXMuZmllbGRzLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGZvcm1TdGF0ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZTogRmllbGROYW1lcyk6IEZvcm1TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmZvcm1TZXJ2aWNlLmdldEZpZWxkRm9ybVN0YXRlKGZpZWxkTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RhdHVzKCk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgaWYgKCFpc1N1Ym1pdFJlc3BvbnNlKHRoaXMuZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2hvdWxkIHN1Ym1pdCBmb3JtIGZpcnN0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zOiBTdGF0dXNSZXF1ZXN0UGFyYW1zID0ge1xuICAgICAgcGlkOiB0aGlzLmNvbmZpZy5wYXltZW50TWV0aG9kSWQsXG4gICAgICBpbnZvaWNlOiBwYXJzZUludCh0aGlzLmRhdGEuZml4SW52b2ljZSA/PyAnJyksXG4gICAgICBzaWduYXR1cmU6IHRoaXMuZGF0YS5zaWduYXR1cmUgPz8gJycsXG4gICAgICBsb2NhbGU6XG4gICAgICAgIHRoaXMuZGF0YS5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09ICdsb2NhbGUnKT8udmFsdWUgPz9cbiAgICAgICAgJ2VuJyxcbiAgICAgIGlzU2F2ZVBheW1lbnRBY2NvdW50OiB0aGlzLmlzU2F2aW5nTWV0aG9kTW9kZVxuICAgICAgICA/IFhwc0Jvb2xlYW4udHJ1ZVxuICAgICAgICA6IFhwc0Jvb2xlYW4uZmFsc2UsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNTZXJ2aWNlLmdldFN0YXR1cyhwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RlbkZpbmFsU3RhdHVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgaW52b2ljZSB9ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXMoKTtcblxuICAgIHRoaXMuc3RhdHVzU2VydmljZVxuICAgICAgLmxpc3RlbkZpbmFsU3RhdHVzKGludm9pY2UgYXMgdW5rbm93biBhcyBudW1iZXIpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubmV4dEFjdGlvblNlcnZpY2UuZW1pdEZsb3dVcGRhdGVzKFxuICAgICAgICAgIHRoaXMuY2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yLmdldEFjdGlvbkRhdGEoKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZpZWxkQ29uZmlnKGZpZWxkOiBGaWVsZCk6IENvbnRyb2xDb25maWcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQ29uZmlnU2VydmljZS5nZXRDb25maWcoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUZpZWxkVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0/LmdldChuYW1lKTtcbiAgICBmb3JtQ29udHJvbD8uc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGV4dGVybmFsQ2hhbmdlRmllbGRWYWx1ZShuYW1lOiBGaWVsZE5hbWVzLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNGaWVsZEFsbG93ZWRGb3JFeHRlcm5hbENoYW5nZSA9XG4gICAgICBmaWVsZHNBbGxvd2VkVG9FeHRlcm5hbENoYW5nZS5oYXMobmFtZSk7XG5cbiAgICBjb25zdCBpc0V4dGVybmFsVmF1bHQgPVxuICAgICAgaXNDcmVkaXRDYXJkU2V0dGluZ3NHdWFyZCh0aGlzLmNvbmZpZykgJiZcbiAgICAgIHRoaXMuY29uZmlnLnBheW1lbnRNZXRob2RTZXR0aW5ncz8udXNlRXh0ZXJuYWxWYXVsdDtcblxuICAgIGlmICghaXNGaWVsZEFsbG93ZWRGb3JFeHRlcm5hbENoYW5nZSB8fCAhaXNFeHRlcm5hbFZhdWx0KSByZXR1cm47XG5cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KG5hbWUpO1xuICAgIGZvcm1Db250cm9sPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlRmllbGRTdGF0ZShuYW1lOiBzdHJpbmcsIHN0YXRlOiBJbnB1dEV2ZW50TmFtZSk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtPy5nZXQobmFtZSk7XG5cbiAgICBpZiAoIXRoaXMuZm9ybSB8fCAhZm9ybUNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIElucHV0RXZlbnROYW1lLmJsdXI6IHtcbiAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvY3VzRmllbGROYW1lID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIElucHV0RXZlbnROYW1lLmZvY3VzOiB7XG4gICAgICAgIGZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvY3VzRmllbGROYW1lID0gbmFtZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0Rm9ybUZpZWxkc1N0YXR1cyh0aGlzLmZvcm0pO1xuICB9XG5cbiAgcHVibGljIGFkZEV4dHJhRmllbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNIYXZlRmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09IG5hbWU7XG4gICAgfSk7XG5cbiAgICBpZiAoaXNIYXZlRmllbGQpIHtcbiAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIGZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB0aXRsZTogJycsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBleGFtcGxlOiAnJyxcbiAgICAgIGlzTWFuZGF0b3J5OiBYcHNCb29sZWFuLnRydWUsXG4gICAgICBpc1Zpc2libGU6IFhwc0Jvb2xlYW4uZmFsc2UsXG4gICAgfSBhcyBGaWVsZDtcblxuICAgIHRoaXMuZmllbGRzLnB1c2goZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95QmVoYXZpb3VyU3RyYXRlZ2llcyh0aGlzLmNvbmZpZyk7XG5cbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMuZmluYW5jZURldGFpbHMgPSBudWxsO1xuICAgIHRoaXMuZm9ybSA9IG51bGw7XG4gICAgdGhpcy5maWVsZHMgPSBbXTtcbiAgICB0aGlzLmZvcm1EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG5cbiAgICB0aGlzLnRocmVlRHNTZXJ2aWNlLnN0b3BDaGVja2luZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RmluYW5jZURldGFpbHMoc3VtbWFyeT86IFhwc1N1bW1hcnksIG5lZWRMb2dDYXJ0ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmVtaXRXaXRoU3VtbWFyeShzdW1tYXJ5LCBuZWVkTG9nQ2FydCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDcmVkaXRDYXJkU3RhdGUoe1xuICAgIGlkQ2FyZFR5cGUsXG4gICAgY2FyZEJpbkNvdW50cnksXG4gIH06IHtcbiAgICBpZENhcmRUeXBlOiBzdHJpbmc7XG4gICAgY2FyZEJpbkNvdW50cnk/OiBzdHJpbmc7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmNyZWRpdENhcmRTdGF0ZVNlcnZpY2UuZW1pdCh7IGlkQ2FyZFR5cGUsIGNhcmRCaW5Db3VudHJ5IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Rm9ybUZpZWxkc1N0YXR1cyhmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUZpZWxkc1N0YXR1czogRm9ybUZpZWxkc1N0YXR1cyA9IHt9O1xuXG4gICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNbbmFtZV07XG4gICAgICBmb3JtRmllbGRzU3RhdHVzW25hbWVdID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWxpZGF0aW9uU3RhdHVzOiBjb250cm9sLnN0YXR1cyxcbiAgICAgICAgZXJyb3JzOiBjb250cm9sLmVycm9ycyxcbiAgICAgICAgaXNGb2N1c2VkOiB0aGlzLmZvY3VzRmllbGROYW1lID09PSBuYW1lLFxuICAgICAgICBpc1RvdWNoZWQ6IGNvbnRyb2wudG91Y2hlZCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm1GaWVsZHNTdGF0dXNTdWJqZWN0Lm5leHQoZm9ybUZpZWxkc1N0YXR1cyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGb3JtTWVzc2FnZXMobWVzc2FnZXM/OiBYcHNNZXNzYWdlW10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1NZXNzYWdlc1NlcnZpY2UuZW1pdE9uUmVzcG9uc2UobWVzc2FnZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN5bmNTZXJ2aWNlKFxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICAgIGNvbmZpZzogUGF5bWVudENvbmZpZ3VyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3luY1NlcnZpY2Uuc2V0dXAoZm9ybSwgZmllbGRzLCBjb25maWcpO1xuICAgIHRoaXMuc3luY1NlcnZpY2UuZGF0YSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdEZpbmFuY2VEZXRhaWxzKHJlc3BvbnNlLnN1bW1hcnkpO1xuICAgICAgICB0aGlzLmVtaXRGb3JtTWVzc2FnZXMocmVzcG9uc2UubWVzc2FnZXMpO1xuICAgICAgICB0aGlzLmVtaXRGb3JtUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN5bmNTZXJ2aWNlLmZpZWxkQXN5bmNWYWxpZGF0aW9uJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoZmllbGRBc3luY1ZhbGlkYXRpb24pID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWVsZEFzeW5jVmFsaWRhdGlvbi5maWVsZC5uYW1lKSB7XG4gICAgICAgICAgY2FzZSBGaWVsZE5hbWVzLmNhcmROdW1iZXI6XG4gICAgICAgICAgICB0aGlzLmVtaXRDcmVkaXRDYXJkU3RhdGUoe1xuICAgICAgICAgICAgICBpZENhcmRUeXBlOiBmaWVsZEFzeW5jVmFsaWRhdGlvbi5yZXNwb25zZS5wYXJhbWV0ZXJzLmlkQ2FyZFR5cGUsXG4gICAgICAgICAgICAgIGNhcmRCaW5Db3VudHJ5OlxuICAgICAgICAgICAgICAgIGZpZWxkQXN5bmNWYWxpZGF0aW9uLnJlc3BvbnNlLnBhcmFtZXRlcnMuY2FyZEJpbkNvdW50cnksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZpbmFuY2VEZXRhaWxzKCk6IHZvaWQge1xuICAgIHRoaXMuZmluYW5jZURldGFpbHNTZXJ2aWNlLmRhdGEkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChmaW5hbmNlRGV0YWlscykgPT4gKHRoaXMuZmluYW5jZURldGFpbHMgPSBmaW5hbmNlRGV0YWlscykpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlcyhmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5mb3JtRGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBGb3JtQ29udHJvbFN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLmVtaXRGb3JtRmllbGRzU3RhdHVzKGZvcm0pO1xuICAgICAgICB0aGlzLl9wYXltZW50Rm9ybSQubmV4dChzdGF0dXMpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW4gY2FzZSB0aGUgZm9ybSBwaWQgY2hhbmdlcyBkZXNwaXRlIHRoZSBvbmUgcGFzc2VkIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVQaWRDb25maWcoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBpZCA9IHRoaXMuZ2V0UGlkKCk7XG4gICAgaWYgKGN1cnJlbnRQaWQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnBheW1lbnRNZXRob2RJZCA9IGN1cnJlbnRQaWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Rm9ybVJlc3BvbnNlKGRhdGE6IEZvcm1SZXNwb25zZVsnZGF0YSddKTogdm9pZCB7XG4gICAgbGV0IHR5cGU6IEZvcm1SZXNwb25zZVsndHlwZSddO1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgSW5pdGlhbGl6ZVJlc3BvbnNlKSB7XG4gICAgICB0eXBlID0gJ2luaXRpYWxpemUnO1xuICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIFN1Ym1pdFJlc3BvbnNlKSB7XG4gICAgICB0eXBlID0gJ3N1Ym1pdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGUgPSAnc3luYyc7XG4gICAgfVxuICAgIHRoaXMuX2Zvcm1SZXNwb25zZSQubmV4dCh7XG4gICAgICB0eXBlLFxuICAgICAgZGF0YSxcbiAgICAgIHRva2VuOiB0aGlzLnNldHRpbmdzU2VydmljZS50b2tlbixcbiAgICAgIGlzU2FuZGJveDogdGhpcy5zZXR0aW5nc1NlcnZpY2UuaXNTYW5kYm94TW9kZSgpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbml0aWFsaXplTWVzc2FnZXMoKTogWHBzTWVzc2FnZVtdIHtcbiAgICBjb25zdCBtZXNzYWdlcyA9ICh0aGlzLmRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKS5wYXltZW50Rm9ybT8ubWVzc2FnZXM7XG5cbiAgICByZXR1cm4gbWVzc2FnZXMgPz8gW107XG4gIH1cblxuICBwcml2YXRlIGNhbkF1dG9TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlO1xuICAgIGlmICghcmVzcG9uc2UucGF5bWVudEZvcm0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1JlZGlyZWN0TWV0aG9kID0gcmVzcG9uc2UucGF5bWVudEZvcm0uaXNDaGVja291dDtcbiAgICBjb25zdCBjYW5Ta2lwRm9ybSA9IHJlc3BvbnNlLnBheW1lbnRGb3JtLnNraXBGb3JtO1xuXG4gICAgY29uc3QgaXNTdWl0YWJsZUJ5U3RyYXRlZ3kgPSB0aGlzLmF1dG9TdWJtaXRCZWhhdmlvdXJTdHJhdGVnaWVzKFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgKTtcblxuICAgIHJldHVybiAoIWlzUmVkaXJlY3RNZXRob2QgJiYgY2FuU2tpcEZvcm0pIHx8IGlzU3VpdGFibGVCeVN0cmF0ZWd5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZGtQYXltZW50RGF0YUZyb21SZXNwb25zZShcbiAgICBkYXRhOiBTdWJtaXRSZXNwb25zZSB8IEluaXRpYWxpemVSZXNwb25zZSxcbiAgKToge1xuICAgIGNoZWNrb3V0RGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICBmaWVsZHM6IEZpZWxkW107XG4gICAgc3VtbWFyeTogWHBzU3VtbWFyeSB8IG51bGw7XG4gIH0ge1xuICAgIGlmIChpc1N1Ym1pdFJlc3BvbnNlKGRhdGEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjaGVja291dERhdGE6IGRhdGEucGFyYW1ldGVycz8uY2hlY2tvdXQuZGF0YS5kYXRhLFxuICAgICAgICBmaWVsZHM6IGRhdGEuZmllbGRzLFxuICAgICAgICBzdW1tYXJ5OiBkYXRhLnN1bW1hcnksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjaGVja291dERhdGE6IG51bGwsXG4gICAgICBmaWVsZHM6IGRhdGEucGF5bWVudEZvcm0/LmZpZWxkcyA/PyBbXSxcbiAgICAgIHN1bW1hcnk6IGRhdGEucGF5bWVudEZvcm0/LnN1bW1hcnkgPz8gbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQmVoYXZpb3VyU3RyYXRlZ2llcygpOiB2b2lkIHtcbiAgICBjb25zdCBiZWhhdmlvdXJTdHJhdGVnaWVzID1cbiAgICAgIHRoaXMucGF5bWVudEJlaGF2aW91clNlcnZpY2UuZ2V0QXBwbGljYWJsZUJlaGF2aW91clN0cmF0ZWdpZXMoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICApO1xuXG4gICAgYmVoYXZpb3VyU3RyYXRlZ2llcy5mb3JFYWNoKChzdHJhdGVneTogQmVoYXZpb3VyU3RyYXRlZ3kpID0+IHtcbiAgICAgIHN0cmF0ZWd5Lm9uSW5pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QmVoYXZpb3VyU3RyYXRlZ2llcyhjb25maWc6IFBheW1lbnRDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgYmVoYXZpb3VyU3RyYXRlZ2llcyA9XG4gICAgICB0aGlzLnBheW1lbnRCZWhhdmlvdXJTZXJ2aWNlLmdldEFwcGxpY2FibGVCZWhhdmlvdXJTdHJhdGVnaWVzKFxuICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICk7XG5cbiAgICBiZWhhdmlvdXJTdHJhdGVnaWVzLmZvckVhY2goKHN0cmF0ZWd5OiBCZWhhdmlvdXJTdHJhdGVneSkgPT4ge1xuICAgICAgc3RyYXRlZ3kub25EZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGF1dG9TdWJtaXRCZWhhdmlvdXJTdHJhdGVnaWVzKGNvbmZpZzogUGF5bWVudENvbmZpZ3VyYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBiZWhhdmlvdXJTdHJhdGVnaWVzID1cbiAgICAgIHRoaXMucGF5bWVudEJlaGF2aW91clNlcnZpY2UuZ2V0QXBwbGljYWJsZUJlaGF2aW91clN0cmF0ZWdpZXMoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgKTtcblxuICAgIHJldHVybiBiZWhhdmlvdXJTdHJhdGVnaWVzLnNvbWUoKHN0cmF0ZWd5OiBCZWhhdmlvdXJTdHJhdGVneSkgPT4ge1xuICAgICAgcmV0dXJuIHN0cmF0ZWd5LmNhbkF1dG9TdWJtaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VibWl0V2l0aEVycm9ycyhzdWJtaXRSZXNwb25zZTogU3VibWl0UmVzcG9uc2UpOiB2b2lkIHtcbiAgICBpZiAoIXN1Ym1pdFJlc3BvbnNlLmVycm9ycz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWVsZHNNYXAgPSB0aGlzLmZpZWxkcy5yZWR1Y2UoKG1hcCwgZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5mb3JtPy5nZXQoZmllbGQubmFtZSk/LnZhbHVlID8/IGZpZWxkLnZhbHVlO1xuICAgICAgICBtYXAuc2V0KGZpZWxkLm5hbWUsIGZpZWxkVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LCBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpKTtcblxuICAgIHVwZGF0ZUFmdGVyRXJyb3JSdWxlcy5mb3JFYWNoKChydWxlKSA9PlxuICAgICAgcnVsZS5hcHBseShzdWJtaXRSZXNwb25zZSwgZmllbGRzTWFwKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dTdWJtaXRBdHRlbXB0KCk6IHZvaWQge1xuICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUuYXR0ZW1wdEJ1eU5vdyxcbiAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLmNsaWNrLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1N1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1N1Ym1pdEF0dGVtcHRlZCkge1xuICAgICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5zZW5kKFxuICAgICAgICBVc2VyQmVoYXZpb3VyRXZlbnROYW1lLmF0dGVtcHRDb250aW51ZSxcbiAgICAgICAgdXNlckJlaGF2aW91ckV2ZW50VHlwZXMuY2xpY2ssXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudENhdGVnb3J5OiBldmVudENhdGVnb3JpZXMud2l0aEludm9pY2UsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUuY2xpY2tCdG5QYXksXG4gICAgICB1c2VyQmVoYXZpb3VyRXZlbnRUeXBlcy5jbGljayxcbiAgICAgIHtcbiAgICAgICAgZXZlbnRDYXRlZ29yeTogZXZlbnRDYXRlZ29yaWVzLndpdGhJbnZvaWNlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -10,29 +10,30 @@ export class DfpCollectService {
|
|
|
10
10
|
this.formName = 'formDFP';
|
|
11
11
|
}
|
|
12
12
|
collectDfpStatus(threeDsForm) {
|
|
13
|
-
this.window.document.getElementById(this.iframeName)?.remove();
|
|
14
|
-
this.window.document.getElementById(this.formName)?.remove();
|
|
15
|
-
/*
|
|
16
|
-
* With waitCallback (e.g. GPayments) the DFP URL is loaded directly into the
|
|
17
|
-
* iframe as its src, and the result is delivered back via the websocket
|
|
18
|
-
* callback instead of an onload notification. The legacy EMV 3DS Method flow
|
|
19
|
-
* posts threeDSMethodData to a blank iframe and notifies on load.
|
|
20
|
-
*/
|
|
21
13
|
if (threeDsForm.waitCallback) {
|
|
22
|
-
this.
|
|
23
|
-
return;
|
|
14
|
+
this.openIframeWithPostRequest(threeDsForm, false);
|
|
24
15
|
}
|
|
25
|
-
|
|
16
|
+
else {
|
|
17
|
+
this.openIframeWithPostRequest(threeDsForm, true);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/*
|
|
21
|
+
* This method create invisible iframe with required params and after that it submit form in iframe
|
|
22
|
+
* */
|
|
23
|
+
openIframeWithPostRequest(threeDsForm, isNeedNotifyAfterLoad) {
|
|
24
|
+
this.window.document.getElementById(this.iframeName)?.remove();
|
|
25
|
+
this.window.document.getElementById(this.formName)?.remove();
|
|
26
|
+
this.createIframe(isNeedNotifyAfterLoad, threeDsForm.threeDSTrXid);
|
|
26
27
|
this.postFormToIframe(threeDsForm.threeDSMethod, threeDsForm.threeDSMethodData);
|
|
27
28
|
}
|
|
28
29
|
/*
|
|
29
30
|
* isNeedNotifyAfterLoad is need to send notification of dft to server
|
|
30
31
|
* */
|
|
31
|
-
createIframe(isNeedNotifyAfterLoad, threeDsTrXid
|
|
32
|
+
createIframe(isNeedNotifyAfterLoad, threeDsTrXid) {
|
|
32
33
|
const attributes = {
|
|
33
34
|
name: this.iframeName,
|
|
34
35
|
id: this.iframeName,
|
|
35
|
-
src,
|
|
36
|
+
src: 'about:blank',
|
|
36
37
|
style: 'display:none',
|
|
37
38
|
};
|
|
38
39
|
const iFrame = this.window.document.createElement('iframe');
|
|
@@ -102,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
102
103
|
type: Inject,
|
|
103
104
|
args: [windowToken]
|
|
104
105
|
}] }, { type: i1.NotifyDfpStatusService }] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGZwLWNvbGxlY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9wYXltZW50L3RocmVlLWRzL2RmcC1jb2xsZWN0L2RmcC1jb2xsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFRcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUVtQixNQUFzQixFQUN0QixzQkFBOEM7UUFEOUMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQU5oRCxlQUFVLEdBQUcsV0FBVyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxTQUFTLENBQUM7SUFNbkMsQ0FBQztJQUVHLGdCQUFnQixDQUFDLFdBQXdCO1FBQzlDLElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7O1NBRUs7SUFDRyx5QkFBeUIsQ0FDL0IsV0FBd0IsRUFDeEIscUJBQThCO1FBRTlCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsWUFB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LENBQUM7SUFFRDs7U0FFSztJQUNHLGFBQWEsQ0FDbkIsT0FBb0IsRUFDcEIsVUFBcUM7UUFFckMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdkhVLGlCQUFpQixrQkFLbEIsV0FBVzttSEFMVixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTm90aWZ5RGZwU3RhdHVzU2VydmljZSB9IGZyb20gJy4uL2FwaS9ub3RpZnktZGZwLXN0YXR1cy9ub3RpZnktZGZwLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFRocmVlRHNGb3JtIH0gZnJvbSAnLi4vdGhyZWUtZHMtZm9ybS5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGZwQ29sbGVjdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGlmcmFtZU5hbWUgPSAnaWZyYW1lREZQJztcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtTmFtZSA9ICdmb3JtREZQJztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZnlEZnBTdGF0dXNTZXJ2aWNlOiBOb3RpZnlEZnBTdGF0dXNTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIGNvbGxlY3REZnBTdGF0dXModGhyZWVEc0Zvcm06IFRocmVlRHNGb3JtKTogdm9pZCB7XG4gICAgaWYgKHRocmVlRHNGb3JtLndhaXRDYWxsYmFjaykge1xuICAgICAgdGhpcy5vcGVuSWZyYW1lV2l0aFBvc3RSZXF1ZXN0KHRocmVlRHNGb3JtLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbklmcmFtZVdpdGhQb3N0UmVxdWVzdCh0aHJlZURzRm9ybSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlIGludmlzaWJsZSBpZnJhbWUgd2l0aCByZXF1aXJlZCBwYXJhbXMgYW5kIGFmdGVyIHRoYXQgaXQgc3VibWl0IGZvcm0gaW4gaWZyYW1lXG4gICAqICovXG4gIHByaXZhdGUgb3BlbklmcmFtZVdpdGhQb3N0UmVxdWVzdChcbiAgICB0aHJlZURzRm9ybTogVGhyZWVEc0Zvcm0sXG4gICAgaXNOZWVkTm90aWZ5QWZ0ZXJMb2FkOiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlmcmFtZU5hbWUpPy5yZW1vdmUoKTtcbiAgICB0aGlzLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZvcm1OYW1lKT8ucmVtb3ZlKCk7XG4gICAgdGhpcy5jcmVhdGVJZnJhbWUoaXNOZWVkTm90aWZ5QWZ0ZXJMb2FkLCB0aHJlZURzRm9ybS50aHJlZURTVHJYaWQpO1xuICAgIHRoaXMucG9zdEZvcm1Ub0lmcmFtZShcbiAgICAgIHRocmVlRHNGb3JtLnRocmVlRFNNZXRob2QsXG4gICAgICB0aHJlZURzRm9ybS50aHJlZURTTWV0aG9kRGF0YSxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICogaXNOZWVkTm90aWZ5QWZ0ZXJMb2FkIGlzIG5lZWQgdG8gc2VuZCBub3RpZmljYXRpb24gb2YgZGZ0IHRvIHNlcnZlclxuICAgKiAqL1xuICBwcml2YXRlIGNyZWF0ZUlmcmFtZShcbiAgICBpc05lZWROb3RpZnlBZnRlckxvYWQ6IGJvb2xlYW4sXG4gICAgdGhyZWVEc1RyWGlkOiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBuYW1lOiB0aGlzLmlmcmFtZU5hbWUsXG4gICAgICBpZDogdGhpcy5pZnJhbWVOYW1lLFxuICAgICAgc3JjOiAnYWJvdXQ6YmxhbmsnLFxuICAgICAgc3R5bGU6ICdkaXNwbGF5Om5vbmUnLFxuICAgIH07XG5cbiAgICBjb25zdCBpRnJhbWUgPSB0aGlzLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZXMoaUZyYW1lLCBhdHRyaWJ1dGVzKTtcbiAgICB0aGlzLndpbmRvdy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlGcmFtZSk7XG5cbiAgICAvLyBkeW5hbWljYWxseSBjcmVhdGVkIGlmcmFtZSB0cmlnZ2VycyBvbmxvYWQgZXZlbnQgdHdpY2VcbiAgICBsZXQgaXNBbHJlYWR5U2VudCA9IGZhbHNlO1xuXG4gICAgaWYgKGlzTmVlZE5vdGlmeUFmdGVyTG9hZCkge1xuICAgICAgKFxuICAgICAgICB0aGlzLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICB0aGlzLmlmcmFtZU5hbWUsXG4gICAgICAgICkgYXMgSFRNTElGcmFtZUVsZW1lbnRcbiAgICAgICkub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNBbHJlYWR5U2VudCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubm90aWZ5RGZwU3RhdHVzU2VydmljZS5yZXF1ZXN0KHRocmVlRHNUclhpZCwgdHJ1ZSk7XG4gICAgICAgIGlzQWxyZWFkeVNlbnQgPSB0cnVlO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHN1Ym1pdCBmb3JtIGluIG91ciBpZnJhbWVcbiAgICogKi9cbiAgcHJpdmF0ZSBwb3N0Rm9ybVRvSWZyYW1lKHVybDogc3RyaW5nLCB0aHJlZURzTWV0aG9kOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgdGhpcy53aW5kb3cuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTtcblxuICAgIGZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCB1cmwpO1xuICAgIGZvcm0uc2V0QXR0cmlidXRlKCd0YXJnZXQnLCB0aGlzLmlmcmFtZU5hbWUpO1xuICAgIGZvcm0uYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVJbnB1dCgndGhyZWVEU01ldGhvZERhdGEnLCB0aHJlZURzTWV0aG9kKSk7XG5cbiAgICBmb3JtLnN1Ym1pdCgpO1xuICB9XG5cbiAgLypcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBjcmVhdGUgaW52aXNpYmxlIGZvcm0gd2l0aCByZXF1aXJlZCBwYXJhbXNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpOiBIVE1MRm9ybUVsZW1lbnQge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7XG4gICAgY29uc3QgaW5pdEF0dHJpYnV0ZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBuYW1lOiB0aGlzLmZvcm1OYW1lLFxuICAgICAgaWQ6IHRoaXMuZm9ybU5hbWUsXG4gICAgICBzdHlsZTogJ2Rpc3BsYXk6bm9uZScsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGVuY3R5cGU6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgIH07XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZXMoZm9ybSwgaW5pdEF0dHJpYnV0ZXMpO1xuXG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUlucHV0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICBpbnB1dC50eXBlID0gJ2hpZGRlbic7XG4gICAgaW5wdXQubmFtZSA9IG5hbWU7XG4gICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICAvKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHNldCBhdHRyaWJ1dGVzIHRvIGZvcm0vaWZyYW1lXG4gICAqICovXG4gIHByaXZhdGUgc2V0QXR0cmlidXRlcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBhdHRyaWJ1dGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICApOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyaWJ1dGVzW25hbWVdKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -28,7 +28,6 @@ export class ThreeDs20Service {
|
|
|
28
28
|
this.latestDfpParameters = null;
|
|
29
29
|
this.notifyDfpTimerId = 'notify-dfp';
|
|
30
30
|
this.notifyDfpTimeoutMs = 10000;
|
|
31
|
-
this.waitCallbackNotifyDfpTimeoutMs = 20000;
|
|
32
31
|
this.statusThreeDsTimerId = 'status-three-ds';
|
|
33
32
|
this.statusThreeDsTimeoutMs = 180000;
|
|
34
33
|
}
|
|
@@ -39,9 +38,7 @@ export class ThreeDs20Service {
|
|
|
39
38
|
this.clearLatestDfpParameters();
|
|
40
39
|
this.reinsuranceCheckService.addTimer({
|
|
41
40
|
id: this.notifyDfpTimerId,
|
|
42
|
-
timeoutMs:
|
|
43
|
-
? this.waitCallbackNotifyDfpTimeoutMs
|
|
44
|
-
: this.notifyDfpTimeoutMs,
|
|
41
|
+
timeoutMs: this.notifyDfpTimeoutMs,
|
|
45
42
|
callback: () => {
|
|
46
43
|
const threeDsTransactionId = this.latestDfpParameters?.threeDSTrXid ?? threeDsForm.threeDSTrXid;
|
|
47
44
|
this.notifyDfpStatusService.request(threeDsTransactionId, false);
|
|
@@ -137,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
137
134
|
providedIn: 'root',
|
|
138
135
|
}]
|
|
139
136
|
}], ctorParameters: () => [{ type: i1.StatusThreeDsService }, { type: i2.NotifyDfpStatusService }, { type: i3.WebSocketFactory }, { type: i4.DfpCollectService }, { type: i5.ReinsuranceCheckService }, { type: i6.UserBehaviourAnalyticsService }] });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWUtZHMyMC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3BheW1lbnQvdGhyZWUtZHMvdGhyZWUtZHMtMjAvdGhyZWUtZHMyMC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFLekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFLOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUZBQW1GLENBQUM7QUFDNUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7Ozs7Ozs7O0FBSzFHLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBa0JELFlBQ21CLG9CQUEwQyxFQUMxQyxzQkFBOEMsRUFDOUMsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyx1QkFBZ0QsRUFDaEQsNkJBQTREO1FBTDVELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQStCO1FBcEJ2RSxvQkFBZSxHQUEyQixJQUFJLENBQUM7UUFFdEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUVyRCw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBQ3RELHdCQUFtQixHQUF1QixJQUFJLENBQUM7UUFFdEMscUJBQWdCLEdBQUcsWUFBWSxDQUFDO1FBQ2hDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixtQ0FBOEIsR0FBRyxLQUFLLENBQUM7UUFFdkMseUJBQW9CLEdBQUcsaUJBQWlCLENBQUM7UUFDekMsMkJBQXNCLEdBQUcsTUFBTSxDQUFDO0lBUzlDLENBQUM7SUFFRyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQStCO1FBQ3pELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7WUFDcEMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDekIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxZQUFZO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QjtnQkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixNQUFNLG9CQUFvQixHQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkUsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUNoRSxXQUFXLENBQUMsbUJBQW1CLEVBQy9CLFdBQVcsQ0FBQyxtQkFBbUIsQ0FDaEMsQ0FBQztRQUVGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzdCLFdBQVcsQ0FBQyxtQkFBbUIsRUFDL0IsV0FBVyxDQUFDLG1CQUFtQixDQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ25FLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDVixJQUFJLE9BQU8sS0FBSywyQkFBMkIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM5RCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsaUNBQWlDO1lBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsaUNBQWlDLENBQUMsR0FBRyxFQUFFO2dCQUMxRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7WUFDcEMsRUFBRSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDdEMsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUF3QjtRQUNuRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU8sb0JBQW9CLENBQUMsV0FBd0I7UUFDbkQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyx5QkFBeUI7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDOUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNuQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDaEUsQ0FBQztnQkFFRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzFELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUU5QixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUNyQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFDdkMsdUJBQXVCLENBQUMsTUFBTSxDQUMvQixDQUFDO29CQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUN0QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsSUFBSSxFQUFFOzRCQUNKLFNBQVMsRUFBRSxXQUFXLENBQUMsU0FBUzt5QkFDakM7cUJBQ0YsQ0FBQyxDQUFDO29CQUNILE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUNFLGFBQWEsQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsU0FBUztvQkFDckQsYUFBYSxDQUFDLFlBQVksRUFDMUIsQ0FBQztvQkFDRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFFOUIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FDckMsc0JBQXNCLENBQUMsaUJBQWlCLEVBQ3hDLHVCQUF1QixDQUFDLE1BQU0sQ0FDL0IsQ0FBQztvQkFFRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLElBQUksRUFBRSxhQUFhLENBQUMsWUFBWTtxQkFDakMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUMzRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQ3JDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxXQUFXLENBQ3hDLENBQUM7b0JBQ0YsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FDckMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQ3pDLHVCQUF1QixDQUFDLE1BQU0sQ0FDL0IsQ0FBQztnQkFDSixDQUFDO2dCQUVELElBQ0UsYUFBYSxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxRQUFRO29CQUNwRCxhQUFhLENBQUMsWUFBWSxFQUMxQixDQUFDO29CQUNELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUU5QixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUNyQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFDdkMsdUJBQXVCLENBQUMsTUFBTSxDQUMvQixDQUFDO29CQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUN0QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxZQUFZO3FCQUNqQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMseUJBQXlCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7K0dBaExVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2ViU29ja2V0RmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uL3dlYi1zb2NrZXQvd2ViLXNvY2tldC5mYWN0b3J5JztcbmltcG9ydCB7IFdlYlNvY2tldENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3dlYi1zb2NrZXQvd2ViLXNvY2tldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3RhdHVzVGhyZWVEc1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvc3RhdHVzLXRocmVlLWRzL3N0YXR1cy10aHJlZS1kcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmeURmcFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbm90aWZ5LWRmcC1zdGF0dXMvbm90aWZ5LWRmcC1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBUaHJlZURzU3RhdHVzV2ViU29ja2V0VHlwZXMgfSBmcm9tICcuLi90aHJlZS1kcy1zdGF0dXMtd2Vic29ja2V0LXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgVGhyZWVEc0Zvcm0gfSBmcm9tICcuLi90aHJlZS1kcy1mb3JtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUaHJlZURzU3RhdHVzVHlwZXMgfSBmcm9tICcuLi9hcGkvc3RhdHVzLXRocmVlLWRzL3N0YXR1cy10eXBlcy5lbnVtJztcbmltcG9ydCB7IERmcENvbGxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vZGZwLWNvbGxlY3QvZGZwLWNvbGxlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWluc3VyYW5jZUNoZWNrU2VydmljZSB9IGZyb20gJy4uL3JlaW5zdXJhbmNlLWNoZWNrL3JlaW5zdXJhbmNlLWNoZWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzVXBkYXRlIH0gZnJvbSAnLi9zdGF0dXMtdXBkYXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVc2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyB1c2VyQmVoYXZpb3VyRXZlbnRUeXBlcyB9IGZyb20gJy4uLy4uLy4uL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1ldmVudC91c2VyLWJlaGF2aW91ci1ldmVudC10eXBlcyc7XG5pbXBvcnQgeyBVc2VyQmVoYXZpb3VyRXZlbnROYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWV2ZW50LW5hbWUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUaHJlZURzMjBTZXJ2aWNlIHtcbiAgcHVibGljIGdldCBzdGF0dXNVcGRhdGVzJCgpOiBPYnNlcnZhYmxlPFN0YXR1c1VwZGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c1VwZGF0ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIHdlYlNvY2tldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHdlYlNvY2tldFJlY29ubmVjdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHdlYlNvY2tldENsaWVudDogV2ViU29ja2V0Q2xpZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNVcGRhdGVzID0gbmV3IFN1YmplY3Q8U3RhdHVzVXBkYXRlPigpO1xuXG4gIHByaXZhdGUgc3RhdHVzUmVxdWVzdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGF0ZXN0RGZwUGFyYW1ldGVyczogVGhyZWVEc0Zvcm0gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmeURmcFRpbWVySWQgPSAnbm90aWZ5LWRmcCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5RGZwVGltZW91dE1zID0gMTAwMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2FpdENhbGxiYWNrTm90aWZ5RGZwVGltZW91dE1zID0gMjAwMDA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNUaHJlZURzVGltZXJJZCA9ICdzdGF0dXMtdGhyZWUtZHMnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1RocmVlRHNUaW1lb3V0TXMgPSAxODAwMDA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzVGhyZWVEc1NlcnZpY2U6IFN0YXR1c1RocmVlRHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5RGZwU3RhdHVzU2VydmljZTogTm90aWZ5RGZwU3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdlYlNvY2tldEZhY3Rvcnk6IFdlYlNvY2tldEZhY3RvcnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZnBDb2xsZWN0U2VydmljZTogRGZwQ29sbGVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWluc3VyYW5jZUNoZWNrU2VydmljZTogUmVpbnN1cmFuY2VDaGVja1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZTogVXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tUaHJlZURzMjAodGhyZWVEc0Zvcm06IFRocmVlRHNGb3JtIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhyZWVEc0Zvcm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyTGF0ZXN0RGZwUGFyYW1ldGVycygpO1xuXG4gICAgdGhpcy5yZWluc3VyYW5jZUNoZWNrU2VydmljZS5hZGRUaW1lcih7XG4gICAgICBpZDogdGhpcy5ub3RpZnlEZnBUaW1lcklkLFxuICAgICAgdGltZW91dE1zOiB0aHJlZURzRm9ybS53YWl0Q2FsbGJhY2tcbiAgICAgICAgPyB0aGlzLndhaXRDYWxsYmFja05vdGlmeURmcFRpbWVvdXRNc1xuICAgICAgICA6IHRoaXMubm90aWZ5RGZwVGltZW91dE1zLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdGhyZWVEc1RyYW5zYWN0aW9uSWQgPVxuICAgICAgICAgIHRoaXMubGF0ZXN0RGZwUGFyYW1ldGVycz8udGhyZWVEU1RyWGlkID8/IHRocmVlRHNGb3JtLnRocmVlRFNUclhpZDtcbiAgICAgICAgdGhpcy5ub3RpZnlEZnBTdGF0dXNTZXJ2aWNlLnJlcXVlc3QodGhyZWVEc1RyYW5zYWN0aW9uSWQsIGZhbHNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLndlYlNvY2tldENsaWVudCA9IHRoaXMud2ViU29ja2V0RmFjdG9yeS5jcmVhdGVXZWJTb2NrZXRDbGllbnQoXG4gICAgICB0aHJlZURzRm9ybS53ZWJTb2NrZXRDaGFubmVsVXJsLFxuICAgICAgdGhyZWVEc0Zvcm0ud2ViU29ja2V0Q2xpZW50VHlwZSxcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy53ZWJTb2NrZXRDbGllbnQub3BlbihcbiAgICAgIHRocmVlRHNGb3JtLndlYlNvY2tldENoYW5uZWxVcmwsXG4gICAgICB0aHJlZURzRm9ybS53ZWJTb2NrZXRDbGllbnRUeXBlLFxuICAgICk7XG4gICAgdGhpcy53ZWJTb2NrZXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLndlYlNvY2tldFN1YnNjcmlwdGlvbiA9IHRoaXMud2ViU29ja2V0Q2xpZW50Lm1lc3NhZ2VzJC5zdWJzY3JpYmUoXG4gICAgICAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gVGhyZWVEc1N0YXR1c1dlYlNvY2tldFR5cGVzLnN0YXR1czNEU19jaGFuZ2VkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0VGhyZWVEc1N0YXR1cyh0aHJlZURzRm9ybSk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLndlYlNvY2tldFJlY29ubmVjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLndlYlNvY2tldFJlY29ubmVjdGlvblN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLndlYlNvY2tldENsaWVudC5zdWJzY3JpYmVPblN1Y2Nlc3NmdWxSZWNvbm5lY3Rpb24oKCkgPT4ge1xuICAgICAgICB0aGlzLnJlcXVlc3RUaHJlZURzU3RhdHVzKHRocmVlRHNGb3JtKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5oYW5kbGVUaHJlZURzVXBkYXRlcyh0aHJlZURzRm9ybSk7XG4gICAgdGhpcy5yZXF1ZXN0VGhyZWVEc1N0YXR1cyh0aHJlZURzRm9ybSk7XG5cbiAgICB0aGlzLnJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlLmFkZFRpbWVyKHtcbiAgICAgIGlkOiB0aGlzLnN0YXR1c1RocmVlRHNUaW1lcklkLFxuICAgICAgdGltZW91dE1zOiB0aGlzLnN0YXR1c1RocmVlRHNUaW1lb3V0TXMsXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlcXVlc3RUaHJlZURzU3RhdHVzKHRocmVlRHNGb3JtKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RUaHJlZURzU3RhdHVzKHRocmVlRHNGb3JtOiBUaHJlZURzRm9ybSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzVGhyZWVEc1NlcnZpY2UucmVxdWVzdCh0aGlzLmxhdGVzdERmcFBhcmFtZXRlcnMgPz8gdGhyZWVEc0Zvcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUaHJlZURzVXBkYXRlcyh0aHJlZURzRm9ybTogVGhyZWVEc0Zvcm0pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c1JlcXVlc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdGF0dXNSZXF1ZXN0U3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuc3RhdHVzVGhyZWVEc1NlcnZpY2UucmVzcG9uc2UkLnN1YnNjcmliZSgodGhyZWVEc1N0YXR1cykgPT4ge1xuICAgICAgICBpZiAoIXRocmVlRHNTdGF0dXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhyZWVEc1N0YXR1cy5jb2xsZWN0RGZwUGFyYW1ldGVycykge1xuICAgICAgICAgIHRoaXMubGF0ZXN0RGZwUGFyYW1ldGVycyA9IHRocmVlRHNTdGF0dXMuY29sbGVjdERmcFBhcmFtZXRlcnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhyZWVEc1N0YXR1cy5zdGF0dXMgPT09IFRocmVlRHNTdGF0dXNUeXBlcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICB0aGlzLnN0b3BSZWluc3VyYW5jZU1ldGhvZHMoKTtcblxuICAgICAgICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgICAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUudGhyZWVEczJjb21wbGV0ZSxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zdGF0dXNVcGRhdGVzLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NvbXBsZXRlJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgc3RhdHVzVXJsOiB0aHJlZURzRm9ybS5zdGF0dXNVcmwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aHJlZURzU3RhdHVzLnN0YXR1cyA9PT0gVGhyZWVEc1N0YXR1c1R5cGVzLmNoYWxsZW5nZSAmJlxuICAgICAgICAgIHRocmVlRHNTdGF0dXMuY2hlY2tvdXRGb3JtXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc3RvcFJlaW5zdXJhbmNlTWV0aG9kcygpO1xuXG4gICAgICAgICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5zZW5kKFxuICAgICAgICAgICAgVXNlckJlaGF2aW91ckV2ZW50TmFtZS50aHJlZURzMmNoYWxsZW5nZSxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zdGF0dXNVcGRhdGVzLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NoYWxsZW5nZScsXG4gICAgICAgICAgICBkYXRhOiB0aHJlZURzU3RhdHVzLmNoZWNrb3V0Rm9ybSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aHJlZURzU3RhdHVzLnN0YXR1cyA9PT0gVGhyZWVEc1N0YXR1c1R5cGVzLmNvbGxlY3REZnApIHtcbiAgICAgICAgICB0aGlzLmRmcENvbGxlY3RTZXJ2aWNlLmNvbGxlY3REZnBTdGF0dXMoXG4gICAgICAgICAgICB0aGlzLmxhdGVzdERmcFBhcmFtZXRlcnMgPz8gdGhyZWVEc0Zvcm0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlLnNlbmQoXG4gICAgICAgICAgICBVc2VyQmVoYXZpb3VyRXZlbnROYW1lLnRocmVlRHMyY29sbGVjdERmcCxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRocmVlRHNTdGF0dXMuc3RhdHVzID09PSBUaHJlZURzU3RhdHVzVHlwZXMuY2hlY2tvdXQgJiZcbiAgICAgICAgICB0aHJlZURzU3RhdHVzLmNoZWNrb3V0Rm9ybVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnN0b3BSZWluc3VyYW5jZU1ldGhvZHMoKTtcblxuICAgICAgICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgICAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUudGhyZWVEczJjaGVja291dCxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zdGF0dXNVcGRhdGVzLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NoZWNrb3V0JyxcbiAgICAgICAgICAgIGRhdGE6IHRocmVlRHNTdGF0dXMuY2hlY2tvdXRGb3JtLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFJlaW5zdXJhbmNlTWV0aG9kcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlLnJlbW92ZVRpbWVyKHRoaXMubm90aWZ5RGZwVGltZXJJZCk7XG4gICAgdGhpcy5yZWluc3VyYW5jZUNoZWNrU2VydmljZS5yZW1vdmVUaW1lcih0aGlzLnN0YXR1c1RocmVlRHNUaW1lcklkKTtcbiAgICB0aGlzLndlYlNvY2tldENsaWVudD8uY2xvc2UoKTtcbiAgICB0aGlzLnN0YXR1c1JlcXVlc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyTGF0ZXN0RGZwUGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmxhdGVzdERmcFBhcmFtZXRlcnMgPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWUtZHMyMC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3BheW1lbnQvdGhyZWUtZHMvdGhyZWUtZHMtMjAvdGhyZWUtZHMyMC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFLekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFLOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUZBQW1GLENBQUM7QUFDNUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7Ozs7Ozs7O0FBSzFHLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBaUJELFlBQ21CLG9CQUEwQyxFQUMxQyxzQkFBOEMsRUFDOUMsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyx1QkFBZ0QsRUFDaEQsNkJBQTREO1FBTDVELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQStCO1FBbkJ2RSxvQkFBZSxHQUEyQixJQUFJLENBQUM7UUFFdEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUVyRCw4QkFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXZWJTb2NrZXRGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vd2ViLXNvY2tldC93ZWItc29ja2V0LmZhY3RvcnknO1xuaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vd2ViLXNvY2tldC93ZWItc29ja2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdGF0dXNUaHJlZURzU2VydmljZSB9IGZyb20gJy4uL2FwaS9zdGF0dXMtdGhyZWUtZHMvc3RhdHVzLXRocmVlLWRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZ5RGZwU3RhdHVzU2VydmljZSB9IGZyb20gJy4uL2FwaS9ub3RpZnktZGZwLXN0YXR1cy9ub3RpZnktZGZwLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFRocmVlRHNTdGF0dXNXZWJTb2NrZXRUeXBlcyB9IGZyb20gJy4uL3RocmVlLWRzLXN0YXR1cy13ZWJzb2NrZXQtdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBUaHJlZURzRm9ybSB9IGZyb20gJy4uL3RocmVlLWRzLWZvcm0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFRocmVlRHNTdGF0dXNUeXBlcyB9IGZyb20gJy4uL2FwaS9zdGF0dXMtdGhyZWUtZHMvc3RhdHVzLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRGZwQ29sbGVjdFNlcnZpY2UgfSBmcm9tICcuLi9kZnAtY29sbGVjdC9kZnAtY29sbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlIH0gZnJvbSAnLi4vcmVpbnN1cmFuY2UtY2hlY2svcmVpbnN1cmFuY2UtY2hlY2suc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXNVcGRhdGUgfSBmcm9tICcuL3N0YXR1cy11cGRhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzL3VzZXItYmVoYXZpb3VyLWV2ZW50L3VzZXItYmVoYXZpb3VyLWV2ZW50LXR5cGVzJztcbmltcG9ydCB7IFVzZXJCZWhhdmlvdXJFdmVudE5hbWUgfSBmcm9tICcuLi8uLi8uLi91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItZXZlbnQtbmFtZS5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRocmVlRHMyMFNlcnZpY2Uge1xuICBwdWJsaWMgZ2V0IHN0YXR1c1VwZGF0ZXMkKCk6IE9ic2VydmFibGU8U3RhdHVzVXBkYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzVXBkYXRlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgd2ViU29ja2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgd2ViU29ja2V0UmVjb25uZWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgd2ViU29ja2V0Q2xpZW50OiBXZWJTb2NrZXRDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1VwZGF0ZXMgPSBuZXcgU3ViamVjdDxTdGF0dXNVcGRhdGU+KCk7XG5cbiAgcHJpdmF0ZSBzdGF0dXNSZXF1ZXN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXRlc3REZnBQYXJhbWV0ZXJzOiBUaHJlZURzRm9ybSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5RGZwVGltZXJJZCA9ICdub3RpZnktZGZwJztcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZnlEZnBUaW1lb3V0TXMgPSAxMDAwMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXR1c1RocmVlRHNUaW1lcklkID0gJ3N0YXR1cy10aHJlZS1kcyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzVGhyZWVEc1RpbWVvdXRNcyA9IDE4MDAwMDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNUaHJlZURzU2VydmljZTogU3RhdHVzVGhyZWVEc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZnlEZnBTdGF0dXNTZXJ2aWNlOiBOb3RpZnlEZnBTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2ViU29ja2V0RmFjdG9yeTogV2ViU29ja2V0RmFjdG9yeSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRmcENvbGxlY3RTZXJ2aWNlOiBEZnBDb2xsZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlOiBSZWluc3VyYW5jZUNoZWNrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlOiBVc2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja1RocmVlRHMyMCh0aHJlZURzRm9ybTogVGhyZWVEc0Zvcm0gfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aHJlZURzRm9ybSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJMYXRlc3REZnBQYXJhbWV0ZXJzKCk7XG5cbiAgICB0aGlzLnJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlLmFkZFRpbWVyKHtcbiAgICAgIGlkOiB0aGlzLm5vdGlmeURmcFRpbWVySWQsXG4gICAgICB0aW1lb3V0TXM6IHRoaXMubm90aWZ5RGZwVGltZW91dE1zLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdGhyZWVEc1RyYW5zYWN0aW9uSWQgPVxuICAgICAgICAgIHRoaXMubGF0ZXN0RGZwUGFyYW1ldGVycz8udGhyZWVEU1RyWGlkID8/IHRocmVlRHNGb3JtLnRocmVlRFNUclhpZDtcbiAgICAgICAgdGhpcy5ub3RpZnlEZnBTdGF0dXNTZXJ2aWNlLnJlcXVlc3QodGhyZWVEc1RyYW5zYWN0aW9uSWQsIGZhbHNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLndlYlNvY2tldENsaWVudCA9IHRoaXMud2ViU29ja2V0RmFjdG9yeS5jcmVhdGVXZWJTb2NrZXRDbGllbnQoXG4gICAgICB0aHJlZURzRm9ybS53ZWJTb2NrZXRDaGFubmVsVXJsLFxuICAgICAgdGhyZWVEc0Zvcm0ud2ViU29ja2V0Q2xpZW50VHlwZSxcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy53ZWJTb2NrZXRDbGllbnQub3BlbihcbiAgICAgIHRocmVlRHNGb3JtLndlYlNvY2tldENoYW5uZWxVcmwsXG4gICAgICB0aHJlZURzRm9ybS53ZWJTb2NrZXRDbGllbnRUeXBlLFxuICAgICk7XG4gICAgdGhpcy53ZWJTb2NrZXRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLndlYlNvY2tldFN1YnNjcmlwdGlvbiA9IHRoaXMud2ViU29ja2V0Q2xpZW50Lm1lc3NhZ2VzJC5zdWJzY3JpYmUoXG4gICAgICAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gVGhyZWVEc1N0YXR1c1dlYlNvY2tldFR5cGVzLnN0YXR1czNEU19jaGFuZ2VkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0VGhyZWVEc1N0YXR1cyh0aHJlZURzRm9ybSk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLndlYlNvY2tldFJlY29ubmVjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLndlYlNvY2tldFJlY29ubmVjdGlvblN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLndlYlNvY2tldENsaWVudC5zdWJzY3JpYmVPblN1Y2Nlc3NmdWxSZWNvbm5lY3Rpb24oKCkgPT4ge1xuICAgICAgICB0aGlzLnJlcXVlc3RUaHJlZURzU3RhdHVzKHRocmVlRHNGb3JtKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5oYW5kbGVUaHJlZURzVXBkYXRlcyh0aHJlZURzRm9ybSk7XG4gICAgdGhpcy5yZXF1ZXN0VGhyZWVEc1N0YXR1cyh0aHJlZURzRm9ybSk7XG5cbiAgICB0aGlzLnJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlLmFkZFRpbWVyKHtcbiAgICAgIGlkOiB0aGlzLnN0YXR1c1RocmVlRHNUaW1lcklkLFxuICAgICAgdGltZW91dE1zOiB0aGlzLnN0YXR1c1RocmVlRHNUaW1lb3V0TXMsXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlcXVlc3RUaHJlZURzU3RhdHVzKHRocmVlRHNGb3JtKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RUaHJlZURzU3RhdHVzKHRocmVlRHNGb3JtOiBUaHJlZURzRm9ybSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzVGhyZWVEc1NlcnZpY2UucmVxdWVzdCh0aGlzLmxhdGVzdERmcFBhcmFtZXRlcnMgPz8gdGhyZWVEc0Zvcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUaHJlZURzVXBkYXRlcyh0aHJlZURzRm9ybTogVGhyZWVEc0Zvcm0pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c1JlcXVlc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdGF0dXNSZXF1ZXN0U3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuc3RhdHVzVGhyZWVEc1NlcnZpY2UucmVzcG9uc2UkLnN1YnNjcmliZSgodGhyZWVEc1N0YXR1cykgPT4ge1xuICAgICAgICBpZiAoIXRocmVlRHNTdGF0dXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhyZWVEc1N0YXR1cy5jb2xsZWN0RGZwUGFyYW1ldGVycykge1xuICAgICAgICAgIHRoaXMubGF0ZXN0RGZwUGFyYW1ldGVycyA9IHRocmVlRHNTdGF0dXMuY29sbGVjdERmcFBhcmFtZXRlcnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhyZWVEc1N0YXR1cy5zdGF0dXMgPT09IFRocmVlRHNTdGF0dXNUeXBlcy5jb21wbGV0ZWQpIHtcbiAgICAgICAgICB0aGlzLnN0b3BSZWluc3VyYW5jZU1ldGhvZHMoKTtcblxuICAgICAgICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgICAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUudGhyZWVEczJjb21wbGV0ZSxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zdGF0dXNVcGRhdGVzLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NvbXBsZXRlJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgc3RhdHVzVXJsOiB0aHJlZURzRm9ybS5zdGF0dXNVcmwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aHJlZURzU3RhdHVzLnN0YXR1cyA9PT0gVGhyZWVEc1N0YXR1c1R5cGVzLmNoYWxsZW5nZSAmJlxuICAgICAgICAgIHRocmVlRHNTdGF0dXMuY2hlY2tvdXRGb3JtXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc3RvcFJlaW5zdXJhbmNlTWV0aG9kcygpO1xuXG4gICAgICAgICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5zZW5kKFxuICAgICAgICAgICAgVXNlckJlaGF2aW91ckV2ZW50TmFtZS50aHJlZURzMmNoYWxsZW5nZSxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zdGF0dXNVcGRhdGVzLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NoYWxsZW5nZScsXG4gICAgICAgICAgICBkYXRhOiB0aHJlZURzU3RhdHVzLmNoZWNrb3V0Rm9ybSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aHJlZURzU3RhdHVzLnN0YXR1cyA9PT0gVGhyZWVEc1N0YXR1c1R5cGVzLmNvbGxlY3REZnApIHtcbiAgICAgICAgICB0aGlzLmRmcENvbGxlY3RTZXJ2aWNlLmNvbGxlY3REZnBTdGF0dXMoXG4gICAgICAgICAgICB0aGlzLmxhdGVzdERmcFBhcmFtZXRlcnMgPz8gdGhyZWVEc0Zvcm0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlLnNlbmQoXG4gICAgICAgICAgICBVc2VyQmVoYXZpb3VyRXZlbnROYW1lLnRocmVlRHMyY29sbGVjdERmcCxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRocmVlRHNTdGF0dXMuc3RhdHVzID09PSBUaHJlZURzU3RhdHVzVHlwZXMuY2hlY2tvdXQgJiZcbiAgICAgICAgICB0aHJlZURzU3RhdHVzLmNoZWNrb3V0Rm9ybVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnN0b3BSZWluc3VyYW5jZU1ldGhvZHMoKTtcblxuICAgICAgICAgIHRoaXMudXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2Uuc2VuZChcbiAgICAgICAgICAgIFVzZXJCZWhhdmlvdXJFdmVudE5hbWUudGhyZWVEczJjaGVja291dCxcbiAgICAgICAgICAgIHVzZXJCZWhhdmlvdXJFdmVudFR5cGVzLm1hbnVhbCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zdGF0dXNVcGRhdGVzLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NoZWNrb3V0JyxcbiAgICAgICAgICAgIGRhdGE6IHRocmVlRHNTdGF0dXMuY2hlY2tvdXRGb3JtLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFJlaW5zdXJhbmNlTWV0aG9kcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlaW5zdXJhbmNlQ2hlY2tTZXJ2aWNlLnJlbW92ZVRpbWVyKHRoaXMubm90aWZ5RGZwVGltZXJJZCk7XG4gICAgdGhpcy5yZWluc3VyYW5jZUNoZWNrU2VydmljZS5yZW1vdmVUaW1lcih0aGlzLnN0YXR1c1RocmVlRHNUaW1lcklkKTtcbiAgICB0aGlzLndlYlNvY2tldENsaWVudD8uY2xvc2UoKTtcbiAgICB0aGlzLnN0YXR1c1JlcXVlc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyTGF0ZXN0RGZwUGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmxhdGVzdERmcFBhcmFtZXRlcnMgPSBudWxsO1xuICB9XG59XG4iXX0=
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
2
|
-
export const PAYMENT_CLIENT_CORE_VERSION = '0.5.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const PAYMENT_CLIENT_CORE_VERSION = '0.5.5';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFBBWU1FTlRfQ0xJRU5UX0NPUkVfVkVSU0lPTiA9ICcwLjUuNSc7XG4iXX0=
|
|
@@ -13,7 +13,7 @@ import { CommonModule } from '@angular/common';
|
|
|
13
13
|
import { provideTranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
14
14
|
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
16
|
-
const PAYMENT_CLIENT_CORE_VERSION = '0.5.
|
|
16
|
+
const PAYMENT_CLIENT_CORE_VERSION = '0.5.5';
|
|
17
17
|
|
|
18
18
|
class TranslateHelper {
|
|
19
19
|
static init(service) {
|
|
@@ -7434,29 +7434,30 @@ class DfpCollectService {
|
|
|
7434
7434
|
this.formName = 'formDFP';
|
|
7435
7435
|
}
|
|
7436
7436
|
collectDfpStatus(threeDsForm) {
|
|
7437
|
-
this.window.document.getElementById(this.iframeName)?.remove();
|
|
7438
|
-
this.window.document.getElementById(this.formName)?.remove();
|
|
7439
|
-
/*
|
|
7440
|
-
* With waitCallback (e.g. GPayments) the DFP URL is loaded directly into the
|
|
7441
|
-
* iframe as its src, and the result is delivered back via the websocket
|
|
7442
|
-
* callback instead of an onload notification. The legacy EMV 3DS Method flow
|
|
7443
|
-
* posts threeDSMethodData to a blank iframe and notifies on load.
|
|
7444
|
-
*/
|
|
7445
7437
|
if (threeDsForm.waitCallback) {
|
|
7446
|
-
this.
|
|
7447
|
-
|
|
7438
|
+
this.openIframeWithPostRequest(threeDsForm, false);
|
|
7439
|
+
}
|
|
7440
|
+
else {
|
|
7441
|
+
this.openIframeWithPostRequest(threeDsForm, true);
|
|
7448
7442
|
}
|
|
7449
|
-
|
|
7443
|
+
}
|
|
7444
|
+
/*
|
|
7445
|
+
* This method create invisible iframe with required params and after that it submit form in iframe
|
|
7446
|
+
* */
|
|
7447
|
+
openIframeWithPostRequest(threeDsForm, isNeedNotifyAfterLoad) {
|
|
7448
|
+
this.window.document.getElementById(this.iframeName)?.remove();
|
|
7449
|
+
this.window.document.getElementById(this.formName)?.remove();
|
|
7450
|
+
this.createIframe(isNeedNotifyAfterLoad, threeDsForm.threeDSTrXid);
|
|
7450
7451
|
this.postFormToIframe(threeDsForm.threeDSMethod, threeDsForm.threeDSMethodData);
|
|
7451
7452
|
}
|
|
7452
7453
|
/*
|
|
7453
7454
|
* isNeedNotifyAfterLoad is need to send notification of dft to server
|
|
7454
7455
|
* */
|
|
7455
|
-
createIframe(isNeedNotifyAfterLoad, threeDsTrXid
|
|
7456
|
+
createIframe(isNeedNotifyAfterLoad, threeDsTrXid) {
|
|
7456
7457
|
const attributes = {
|
|
7457
7458
|
name: this.iframeName,
|
|
7458
7459
|
id: this.iframeName,
|
|
7459
|
-
src,
|
|
7460
|
+
src: 'about:blank',
|
|
7460
7461
|
style: 'display:none',
|
|
7461
7462
|
};
|
|
7462
7463
|
const iFrame = this.window.document.createElement('iframe');
|
|
@@ -7582,7 +7583,6 @@ class ThreeDs20Service {
|
|
|
7582
7583
|
this.latestDfpParameters = null;
|
|
7583
7584
|
this.notifyDfpTimerId = 'notify-dfp';
|
|
7584
7585
|
this.notifyDfpTimeoutMs = 10000;
|
|
7585
|
-
this.waitCallbackNotifyDfpTimeoutMs = 20000;
|
|
7586
7586
|
this.statusThreeDsTimerId = 'status-three-ds';
|
|
7587
7587
|
this.statusThreeDsTimeoutMs = 180000;
|
|
7588
7588
|
}
|
|
@@ -7593,9 +7593,7 @@ class ThreeDs20Service {
|
|
|
7593
7593
|
this.clearLatestDfpParameters();
|
|
7594
7594
|
this.reinsuranceCheckService.addTimer({
|
|
7595
7595
|
id: this.notifyDfpTimerId,
|
|
7596
|
-
timeoutMs:
|
|
7597
|
-
? this.waitCallbackNotifyDfpTimeoutMs
|
|
7598
|
-
: this.notifyDfpTimeoutMs,
|
|
7596
|
+
timeoutMs: this.notifyDfpTimeoutMs,
|
|
7599
7597
|
callback: () => {
|
|
7600
7598
|
const threeDsTransactionId = this.latestDfpParameters?.threeDSTrXid ?? threeDsForm.threeDSTrXid;
|
|
7601
7599
|
this.notifyDfpStatusService.request(threeDsTransactionId, false);
|
|
@@ -8094,6 +8092,7 @@ class PaymentService {
|
|
|
8094
8092
|
this.fields = this.getFields();
|
|
8095
8093
|
this.form = this.formService.createForm(this.fields);
|
|
8096
8094
|
this.listenFormStatusChanges(this.form);
|
|
8095
|
+
this.emitFormFieldsStatus(this.form);
|
|
8097
8096
|
this.syncService.setup(this.form, this.fields, this.config);
|
|
8098
8097
|
return nextAction;
|
|
8099
8098
|
}
|