@almatar/smart-booking-dashboard 0.0.2-alpha.3 → 0.0.2-alpha.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.
Files changed (26) hide show
  1. package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +47 -28
  2. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +20 -28
  3. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary-skeleton/almatar-hotel-auto-cancellation-refund-summary-skeleton.component.mjs +16 -0
  4. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.mjs +207 -0
  5. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +3 -3
  6. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.mjs +3 -3
  7. package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +12 -5
  8. package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +23 -21
  9. package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +1 -30
  10. package/esm2022/lib/models/booking.types.mjs +8 -1
  11. package/fesm2022/almatar-smart-booking-dashboard.mjs +316 -112
  12. package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
  13. package/lib/components/action-dialog/action-dialog.component.d.ts +1 -1
  14. package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +1 -1
  15. package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +4 -3
  16. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +3 -4
  17. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary-skeleton/almatar-hotel-auto-cancellation-refund-summary-skeleton.component.d.ts +7 -0
  18. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.d.ts +46 -0
  19. package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +2 -1
  20. package/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.d.ts +1 -1
  21. package/lib/components/result-panel/result-panel.component.d.ts +1 -1
  22. package/lib/models/booking.types.d.ts +2 -0
  23. package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +1 -1
  24. package/package.json +1 -1
  25. package/esm2022/lib/shared/store/selectors/currency.selectors.mjs +0 -9
  26. package/lib/shared/store/selectors/currency.selectors.d.ts +0 -2
@@ -345,35 +345,6 @@ export class AlmatarHotelAutoCancellationEndpointsService {
345
345
  preferredPaymentMethod: refundOption
346
346
  };
347
347
  this._selectedPackageIds.set(uniquePackageIds);
348
- // return of({
349
- // data: {
350
- // error: '1',
351
- // message:
352
- // 'Cancel requested — supplier cancellation failed; ticket created',
353
- // bookingId: 144368,
354
- // preferredPaymentMethod: 'wallet',
355
- // cancel: {
356
- // status: 'failed',
357
- // packageIds: ['f03838bd-ea8d-4fe5-bfc8-dd31c9bdee95'],
358
- // },
359
- // refund: {
360
- // status: 'skipped',
361
- // bookingStatus: 'Cancelled',
362
- // amount: 1050,
363
- // currency: 'SAR',
364
- // breakdown: {
365
- // wallet: 750,
366
- // mokafa: 200,
367
- // qitaf: 100,
368
- // card: 0,
369
- // tabby: 0,
370
- // tamara: 0,
371
- // },
372
- // },
373
- // },
374
- // status: 200,
375
- // errors: null,
376
- // });
377
348
  return this.api
378
349
  .post({
379
350
  endpoint,
@@ -454,4 +425,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
454
425
  providedIn: 'root'
455
426
  }]
456
427
  }], ctorParameters: () => [] });
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvc2VydmljZXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBTSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDcEgsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFRcEgsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBK0RoRSxNQUFNLE9BQU8sNENBQTRDO0lBb0J2RDtRQW5CaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNyQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLDhCQUF5QixHQUFHLE1BQU0sQ0FDakQseUJBQXlCLENBQzFCLENBQUM7UUFFZSxzQkFBaUIsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDdkMsd0JBQW1CLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLGlCQUFZLEdBQUcsTUFBTSxDQUNwQyxZQUFZLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FDL0IsQ0FBQztRQUVlLHdCQUFtQixHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUVuRCxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUM1RCx1QkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNoRSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUd6RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0I7YUFDaEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsb0JBQXlCLEVBQUUsRUFBRTtZQUN2QyxnRUFBZ0U7WUFDaEUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoRixDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsYUFBdUIsRUFBRTtRQUV6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUNuQyx5Q0FBeUMsQ0FBQyxnQkFBZ0IsQ0FDM0QsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUEwQjtZQUNyQyxTQUFTLEVBQUUsR0FDVCxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFNBQVM7Z0JBQ3BFLEVBQ0YsRUFBRTtZQUNGLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7U0FDbEUsQ0FBQztRQUVGLGNBQWM7UUFDZCxZQUFZO1FBQ1oseUJBQXlCO1FBQ3pCLHVCQUF1QjtRQUN2QixvQ0FBb0M7UUFDcEMseURBQXlEO1FBQ3pELGVBQWU7UUFDZiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLDBCQUEwQjtRQUMxQixTQUFTO1FBQ1QsbUJBQW1CO1FBQ25CLDZEQUE2RDtRQUM3RCxTQUFTO1FBQ1QsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQiwrQkFBK0I7UUFDL0Isd0JBQXdCO1FBQ3hCLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixTQUFTO1FBQ1Qsa0JBQWtCO1FBQ2xCLFVBQVU7UUFDViw2REFBNkQ7UUFDN0QscUNBQXFDO1FBQ3JDLG1EQUFtRDtRQUNuRCwyQkFBMkI7UUFDM0Isa0JBQWtCO1FBQ2xCLDRCQUE0QjtRQUM1QixVQUFVO1FBQ1YsU0FBUztRQUNULGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsWUFBWTtRQUNaLCtEQUErRDtRQUMvRCw0REFBNEQ7UUFDNUQseUNBQXlDO1FBQ3pDLG1DQUFtQztRQUNuQyxtQkFBbUI7UUFDbkIseUJBQXlCO1FBQ3pCLDJCQUEyQjtRQUMzQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLHVCQUF1QjtRQUN2Qiw2QkFBNkI7UUFDN0Isb0JBQW9CO1FBQ3BCLDRCQUE0QjtRQUM1Qiw2QkFBNkI7UUFDN0IsOEJBQThCO1FBQzlCLDBCQUEwQjtRQUMxQixhQUFhO1FBQ2IsWUFBWTtRQUNaLCtEQUErRDtRQUMvRCw0REFBNEQ7UUFDNUQseUNBQXlDO1FBQ3pDLG1DQUFtQztRQUNuQyxtQkFBbUI7UUFDbkIseUJBQXlCO1FBQ3pCLDJCQUEyQjtRQUMzQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLHVCQUF1QjtRQUN2Qiw0QkFBNEI7UUFDNUIsb0JBQW9CO1FBQ3BCLDRCQUE0QjtRQUM1Qiw0QkFBNEI7UUFDNUIsOEJBQThCO1FBQzlCLDBCQUEwQjtRQUMxQixZQUFZO1FBQ1osV0FBVztRQUNYLHlCQUF5QjtRQUN6QixnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4QixTQUFTO1FBQ1QsZ0JBQWdCO1FBQ2hCLGtDQUFrQztRQUNsQyx1QkFBdUI7UUFDdkIseUJBQXlCO1FBQ3pCLHNCQUFzQjtRQUN0QixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQix1QkFBdUI7UUFDdkIsOEJBQThCO1FBQzlCLG1CQUFtQjtRQUNuQixTQUFTO1FBQ1QsbUJBQW1CO1FBQ25CLFVBQVU7UUFDVix3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0IsNEJBQTRCO1FBQzVCLHdCQUF3QjtRQUN4QixXQUFXO1FBQ1gsVUFBVTtRQUNWLCtCQUErQjtRQUMvQixnQ0FBZ0M7UUFDaEMscUJBQXFCO1FBQ3JCLHFCQUFxQjtRQUNyQiw0QkFBNEI7UUFDNUIsVUFBVTtRQUNWLFNBQVM7UUFDVCxnQkFBZ0I7UUFDaEIsT0FBTztRQUNQLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsTUFBTTtRQUVOLE9BQU8sSUFBSSxDQUFDLEdBQUc7YUFDWixJQUFJLENBQTRCO1lBQy9CLFFBQVE7WUFDUixHQUFHLE9BQU87U0FDWCxDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLDhCQUE4QixDQUFDLENBQ3hELENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FDbkIsSUFBd0I7UUFFeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCw2QkFBNkIsQ0FDM0IsSUFBd0I7UUFFeEIsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO1lBQzlELFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDbkMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsOEJBQThCO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1lBQ25DLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLENBQUM7WUFDeEMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLENBQUM7WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxJQUFJLEtBQUs7WUFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRTtTQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FDWixJQUF3QjtRQUV4QixNQUFNLFFBQVEsR0FBaUQsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUd2QixDQUFDO1FBRUosMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTO3dCQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO3FCQUNwQixDQUFDLENBQUM7b0JBQ0gsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztvQkFDdkMsV0FBVyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDakMsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQzFCLEtBQUssRUFBRTs0QkFDTDtnQ0FDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUztnQ0FDckMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dDQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0NBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTs2QkFDcEI7eUJBQ0Y7d0JBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQzt3QkFDeEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDbEIsVUFBVSxFQUFFLENBQUM7d0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQzt3QkFDMUIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGVBQWUsRUFBRSxJQUFJO3dCQUNyQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVztxQkFDbkMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25ELElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNoRCxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3QkFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVM7d0JBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzt3QkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNO3dCQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRO3FCQUM3QixDQUFDLENBQUM7b0JBQ0gsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztvQkFDdkMsV0FBVyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDakMsV0FBVyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztvQkFDL0MsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztnQkFDekMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQzFCLEtBQUssRUFBRTs0QkFDTDtnQ0FDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUztnQ0FDckMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dDQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0NBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQ0FDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dDQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU07Z0NBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVE7NkJBQzdCO3lCQUNGO3dCQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7d0JBQ3hCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUM7d0JBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7d0JBQ3hCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO3dCQUNqQixlQUFlLEVBQUUsS0FBSzt3QkFDdEIsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7cUJBQzNDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBd0I7UUFDbEMsTUFBTSxRQUFRLEdBQXdDLEVBQUUsQ0FBQztRQUV6RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTTtvQkFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixZQUFZLEVBQUUsS0FBSztvQkFDbkIsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLGVBQWUsRUFBRSxJQUFJO29CQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ3ZCLGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRztvQkFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUMzQixtQkFBbUIsRUFBRSxLQUFLO29CQUMxQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVztvQkFDbEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztpQkFDekIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTTtvQkFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQzdCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ3ZCLGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRztvQkFDekIsZUFBZSxFQUFFLEtBQUs7b0JBQ3RCLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixnQkFBZ0IsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUU7b0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7aUJBQ3pCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCx1QkFBdUIsQ0FDckIsVUFBb0IsRUFDcEIsWUFBWSxHQUFHLHVCQUF1QjtRQUV0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUNuQyx5Q0FBeUMsQ0FBQyx1QkFBdUIsQ0FDbEUsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7UUFDL0UsTUFBTSxPQUFPLEdBQWdDO1lBQzNDLFNBQVMsRUFBRSxHQUNULElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUztnQkFDcEUsRUFDRixFQUFFO1lBQ0YsT0FBTyxFQUFFLFFBQVE7WUFDakIsVUFBVSxFQUFFLGdCQUFnQjtZQUM1QixzQkFBc0IsRUFBRSxZQUFZO1NBQ3JDLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFL0MsY0FBYztRQUNkLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLDJFQUEyRTtRQUMzRSx5QkFBeUI7UUFDekIsd0NBQXdDO1FBQ3hDLGdCQUFnQjtRQUNoQiwwQkFBMEI7UUFDMUIsOERBQThEO1FBQzlELFNBQVM7UUFDVCxnQkFBZ0I7UUFDaEIsMkJBQTJCO1FBQzNCLG9DQUFvQztRQUNwQyxzQkFBc0I7UUFDdEIseUJBQXlCO1FBQ3pCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLHNCQUFzQjtRQUN0QixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQixXQUFXO1FBQ1gsU0FBUztRQUNULE9BQU87UUFDUCxpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLE1BQU07UUFFTixPQUFPLElBQUksQ0FBQyxHQUFHO2FBQ1osSUFBSSxDQUFtQztZQUN0QyxRQUFRO1lBQ1IsR0FBRyxPQUFPO1NBQ1gsQ0FBQzthQUNELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsZ0NBQWdDLENBQUMsQ0FDMUQsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELGdDQUFnQyxDQUM5QixTQUFpQixFQUNqQixhQUFxQixFQUNyQixRQUFRLEdBQUcsSUFBSTtRQUVmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ25DLHlDQUF5QyxDQUFDLHVCQUF1QixDQUNsRSxDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQTZDO1lBQ3hELFNBQVMsRUFBRSxHQUNULElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUztnQkFDcEUsRUFDRixFQUFFO1lBQ0YsT0FBTyxFQUFFLFFBQVE7WUFDakIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLHNCQUFzQixFQUFFLHVCQUF1QjtZQUMvQyxhQUFhLEVBQUUsTUFBTTtZQUNyQixRQUFRO1lBQ1IsYUFBYTtTQUNkLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxHQUFHO2FBQ1osSUFBSSxDQUFtQztZQUN0QyxRQUFRO1lBQ1IsR0FBRyxPQUFPO1NBQ1gsQ0FBQzthQUNELElBQUksQ0FDSCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQUMsV0FBVyxDQUNkLEtBQUssRUFDTCwrQ0FBK0MsQ0FDaEQsQ0FDRixDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsMkJBQTJCLENBQ3pCLEtBQTBDO1FBRTFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFDdEMsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUztZQUNULFdBQVc7WUFDWCxLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEMsR0FBRyxJQUFJO2dCQUNQLG1CQUFtQixFQUFFLElBQUk7Z0JBQ3pCLGdCQUFnQixFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQzNDLENBQUMsQ0FBQztTQUNKLENBQUM7SUFDSixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYztRQUNwQixPQUFPLDhDQUE4QyxDQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFzQyxDQUMzRCxDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVLEVBQUUsT0FBZTtRQUM3QywrQkFBK0I7UUFDL0IsTUFBTSxZQUFZLEdBQ2hCLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLElBQUksT0FBTyxDQUFDO1FBQ3JELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0EvZ0JVLDRDQUE0QzttSEFBNUMsNENBQTRDLGNBRjNDLE1BQU07OzRGQUVQLDRDQUE0QztrQkFIeEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgY2F0Y2hFcnJvciwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0JEX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZy9kYXNoYm9hcmQuY29uZmlnJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGVudmlyb25tZW50cyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSG90ZWxNYW5hZ2VCb29raW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9ob3RlbC1tYW5hZ2UtYm9va2luZy9ob3RlbC1tYW5hZ2UtYm9va2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtIH0gZnJvbSAnLi4vZW51bXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuZW51bSc7XG5pbXBvcnQge1xuICBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJvb20sXG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUmVmdW5kU3VtbWFyeSxcbiAgSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRQYWNrYWdlLFxuICBJUmVmdW5kRGV0YWlsc0FwaVJlc3BvbnNlLFxuICBJUmVmdW5kRGV0YWlsc0RhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pLWFsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IHJlc29sdmVNeVRyaXBzVmlld2VkRW50cnlTb3VyY2VGcm9tUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvd2ViZW5nYWdlLXRyYWNraW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZWZ1bmREZXRhaWxzUmVxdWVzdCB7XG4gIGJvb2tpbmdJZDogc3RyaW5nO1xuICBwcm9kdWN0OiAnaG90ZWxzJztcbiAgcGFja2FnZUlkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2Nlc3NDYW5jZWxsYXRpb25SZXF1ZXN0IHtcbiAgYm9va2luZ0lkOiBzdHJpbmc7XG4gIHByb2R1Y3Q6ICdob3RlbHMnO1xuICBwYWNrYWdlSWRzOiBzdHJpbmdbXTtcbiAgcHJlZmVycmVkUGF5bWVudE1ldGhvZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJvY2Vzc05vblJlZnVuZGFibGVDYW5jZWxsYXRpb25SZXF1ZXN0IHtcbiAgYm9va2luZ0lkOiBzdHJpbmc7XG4gIHByb2R1Y3Q6ICdob3RlbHMnO1xuICBwYWNrYWdlSWRzOiBzdHJpbmdbXTtcbiAgcHJlZmVycmVkUGF5bWVudE1ldGhvZDogc3RyaW5nO1xuICBwcm9jZXNzZWRNb2RlOiAnYXV0byc7XG4gIGxhbmd1YWdlOiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRVcmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXV0b0NhbmNlbGxhdGlvblByb2Nlc3NSZXNwb25zZSB7XG4gIHN0YXR1czogbnVtYmVyO1xuICBkYXRhOiB7XG4gICAgZXJyb3I6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgYm9va2luZ0lkOiBudW1iZXI7XG4gICAgcHJlZmVycmVkUGF5bWVudE1ldGhvZDogc3RyaW5nO1xuICAgIGlzV2hhdHNBcHA/OiBib29sZWFuO1xuICAgIGNhbmNlbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBwYWNrYWdlSWRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIHJlZnVuZDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBib29raW5nU3RhdHVzOiBzdHJpbmc7XG4gICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICBicmVha2Rvd246IHtcbiAgICAgICAgd2FsbGV0OiBudW1iZXI7XG4gICAgICAgIG1va2FmYTogbnVtYmVyO1xuICAgICAgICBxaXRhZjogbnVtYmVyO1xuICAgICAgICBjYXJkOiBudW1iZXI7XG4gICAgICAgIHRhYmJ5OiBudW1iZXI7XG4gICAgICAgIHRhbWFyYTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBlcnJvcnM6IGFueTtcbn1cblxuaW50ZXJmYWNlIElFbnRyeVNvdXJjZURldmljZUJyYW5kIHtcbiAgZW50cnlTb3VyY2U6IHN0cmluZztcbiAgZGV2aWNlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGkgPSBpbmplY3QoQXBpU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpQmFzZSA9IGluamVjdChTQkRfQ09ORklHKS5hcGlCYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBob3RlbE1hbmFnZUJvb2tpbmdTZXJ2aWNlID0gaW5qZWN0KFxuICAgIEhvdGVsTWFuYWdlQm9va2luZ1NlcnZpY2VcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hbG1hdGFyQm9va2luZ0lkID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maXJtYXRpb25OdW1iZXIgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTnVzdWtGbG93ID0gc2lnbmFsPGJvb2xlYW4+KFxuICAgIGVudmlyb25tZW50cy5pc1RlbmFudCB8fCBmYWxzZVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkUGFja2FnZUlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGFsbWF0YXJCb29raW5nSWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9hbG1hdGFyQm9va2luZ0lkKCkpO1xuICByZWFkb25seSBjb25maXJtYXRpb25OdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jb25maXJtYXRpb25OdW1iZXIoKSk7XG4gIHJlYWRvbmx5IGlzTnVzdWtGbG93ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXNOdXN1a0Zsb3coKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQm9va2luZ0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJvb2tpbmdEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuaG90ZWxNYW5hZ2VCb29raW5nU2VydmljZS5zZWxlY3RlZEhvdGVsQm9va2luZ1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEhvdGVsQm9va2luZzogYW55KSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBIb3RlbCBCb29raW5nOicsIHNlbGVjdGVkSG90ZWxCb29raW5nKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSG90ZWxCb29raW5nKSB7XG4gICAgICAgICAgdGhpcy5fYWxtYXRhckJvb2tpbmdJZC5zZXQoc2VsZWN0ZWRIb3RlbEJvb2tpbmcuYm9va2luZ0lkIHx8ICcnKTtcbiAgICAgICAgICB0aGlzLl9jb25maXJtYXRpb25OdW1iZXIuc2V0KHNlbGVjdGVkSG90ZWxCb29raW5nLmJvb2tpbmdJZCB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bGwgVVJMIG9mIGFuIGVuZHBvaW50IGZyb20gdGhlIGVudW0uIFRoZSBlbnVtIHBhdGhzIHN0YXJ0IHdpdGggYC9hcGkvYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYGFwaUJhc2VgOyBhIGhvc3RcbiAgICogdGhhdCBzZXJ2ZXMgdGhlIEFQSSBzb21ld2hlcmUgZWxzZSAoSGVsaXg6IGl0cyBvd24gQVBJIG9yaWdpbikgc2V0cyBgYXBpQmFzZWAsIHNvIHRoYXQgcGFydCBpcyBzd2FwcGVkIGZvciBpdC5cbiAgICovXG4gIHJlc29sdmVFbmRwb2ludChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUJhc2UucmVwbGFjZSgvXFwvKyQvLCAnJyl9LyR7cGF0aC5yZXBsYWNlKC9eXFwvP2FwaVxcLy8sICcnKX1gO1xuICB9XG5cbiAgZ2V0UmVmdW5kRGV0YWlscyhcbiAgICBwYWNrYWdlSWRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IE9ic2VydmFibGU8SVJlZnVuZERldGFpbHNBcGlSZXNwb25zZT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5yZXNvbHZlRW5kcG9pbnQoXG4gICAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzRW51bS5nZXRSZWZ1bmREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IHBheWxvYWQ6IElSZWZ1bmREZXRhaWxzUmVxdWVzdCA9IHtcbiAgICAgIGJvb2tpbmdJZDogYCR7XG4gICAgICAgIHRoaXMuaG90ZWxNYW5hZ2VCb29raW5nU2VydmljZS5zZWxlY3RlZEhvdGVsQm9va2luZy52YWx1ZT8uYm9va2luZ0lkIHx8XG4gICAgICAgICcnXG4gICAgICB9YCxcbiAgICAgIHByb2R1Y3Q6ICdob3RlbHMnLFxuICAgICAgcGFja2FnZUlkczogWy4uLm5ldyBTZXQocGFja2FnZUlkcyldIC8vIEVuc3VyZSB1bmlxdWUgcGFja2FnZSBJRHNcbiAgICB9O1xuXG4gICAgLy8gcmV0dXJuIG9mKHtcbiAgICAvLyAgIGRhdGE6IHtcbiAgICAvLyAgICAgYm9va2luZ0lkOiAxNDQzNjgsXG4gICAgLy8gICAgIGN1cnJlbmN5OiAnU0FSJyxcbiAgICAvLyAgICAgc3RhdHVzOiAnUGFydGlhbGx5IHJlZnVuZGVkJyxcbiAgICAvLyAgICAgbWVzc2FnZTogJ1JlZnVuZCBkZXRhaWxzIGNhbGN1bGF0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAvLyAgICAgZmxhZ3M6IHtcbiAgICAvLyAgICAgICByZWZ1bmRhYmxlOiB0cnVlLFxuICAgIC8vICAgICAgIHBhcnRpYWw6IGZhbHNlLFxuICAgIC8vICAgICAgIGdvbGRlbkdpZnQ6IGZhbHNlXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHNlbGVjdGlvbjoge1xuICAgIC8vICAgICAgIHBhY2thZ2VJZHM6IFsnZjAzODM4YmQtZWE4ZC00ZmU1LWJmYzgtZGQzMWM5YmRlZTk1J11cbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgdG90YWxzOiB7XG4gICAgLy8gICAgICAgcGFpZDogNjg2NixcbiAgICAvLyAgICAgICBiZWZvcmVDb3Vwb246IDY4NjUuNjEsXG4gICAgLy8gICAgICAgcm9vbXNCb29rZWQ6IDQsXG4gICAgLy8gICAgICAgY291cG9uOiAwLFxuICAgIC8vICAgICAgIGdpZnRzOiAwLFxuICAgIC8vICAgICAgIHNlcnZpY2VGZWU6IDAsXG4gICAgLy8gICAgICAgd2FsbGV0OiAwLFxuICAgIC8vICAgICAgIGNhcmQ6IDAsXG4gICAgLy8gICAgICAgdGFiYnk6IDAsXG4gICAgLy8gICAgICAgdGFtYXJhOiAyMjAsXG4gICAgLy8gICAgICAgbW9rYWZhOiAwLFxuICAgIC8vICAgICAgIHFpdGFmOiAwLFxuICAgIC8vICAgICAgIHdhbGE6IDAsXG4gICAgLy8gICAgICAgaGFzc2FkOiAwLFxuICAgIC8vICAgICAgIGFuYjogMCxcbiAgICAvLyAgICAgICB5Z2c6IDBcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgcHJldmlvdXM6IFtcbiAgICAvLyAgICAgICB7XG4gICAgLy8gICAgICAgICBwYWNrYWdlSWQ6ICc1ZWIzM2Q1OS0yNjA3LTQwNTctOWQyNi00ZjdiZTc0NWY2N2YnLFxuICAgIC8vICAgICAgICAgcm9vbU5hbWU6ICdTdGFuZGFyZCBSb29tJyxcbiAgICAvLyAgICAgICAgIGNhbmNlbGxlZEF0OiAnMjAyNi0wOS0wMlQxMzo0Mjo1NC44NDhaJyxcbiAgICAvLyAgICAgICAgIGFtb3VudDogMjk5MC43OSxcbiAgICAvLyAgICAgICAgIGZlZTogMCxcbiAgICAvLyAgICAgICAgIHJlZnVuZGVkOiAyOTkwLjc5XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICBdLFxuICAgIC8vICAgICBjdXJyZW50OiB7XG4gICAgLy8gICAgICAgcm9vbXM6IFtcbiAgICAvLyAgICAgICAgIHtcbiAgICAvLyAgICAgICAgICAgcGFja2FnZUlkOiAnZjAzODM4YmQtZWE4ZC00ZmU1LWJmYzgtZGQzMWM5YmRlZTk1JyxcbiAgICAvLyAgICAgICAgICAgcm9vbUlkOiAnMDIyOWU2MjItYTg5YS00NjlkLWFkYjgtODYxNWRlYjk3MWNhJyxcbiAgICAvLyAgICAgICAgICAgcm9vbU5hbWU6ICdTY2VuZSBSb29tIFR3aW4nLFxuICAgIC8vICAgICAgICAgICBiYXNpczogJ1Jvb20gb25seSBSTycsXG4gICAgLy8gICAgICAgICAgIHBheDoge1xuICAgIC8vICAgICAgICAgICAgIGFkdWx0czogMixcbiAgICAvLyAgICAgICAgICAgICBjaGlsZHJlbjogMCxcbiAgICAvLyAgICAgICAgICAgICB0b3RhbDogMlxuICAgIC8vICAgICAgICAgICB9LFxuICAgIC8vICAgICAgICAgICBuaWdodHM6IDQsXG4gICAgLy8gICAgICAgICAgIGFtb3VudDogMTg4Ny42MSxcbiAgICAvLyAgICAgICAgICAgZmVlOiAwLFxuICAgIC8vICAgICAgICAgICBzZXJ2aWNlRmVlOiA1MCxcbiAgICAvLyAgICAgICAgICAgcmVmdW5kOiAxODg3LjYxLFxuICAgIC8vICAgICAgICAgICByZWZ1bmRhYmxlOiB0cnVlLFxuICAgIC8vICAgICAgICAgICByb3V0ZTogJ0FVVE8nXG4gICAgLy8gICAgICAgICB9LFxuICAgIC8vICAgICAgICAge1xuICAgIC8vICAgICAgICAgICBwYWNrYWdlSWQ6ICdmMDM4MzhiZC1lYThkLTRmZTUtYmZjOC1kZDMxYzliZGVlOTUnLFxuICAgIC8vICAgICAgICAgICByb29tSWQ6ICdiOGFlZDI2ZS1kOTFhLTQyMzQtYWUzNy05NGIyYzYyMzJkYmQnLFxuICAgIC8vICAgICAgICAgICByb29tTmFtZTogJ1NjZW5lIFJvb20gVHdpbicsXG4gICAgLy8gICAgICAgICAgIGJhc2lzOiAnUm9vbSBvbmx5IFJPJyxcbiAgICAvLyAgICAgICAgICAgcGF4OiB7XG4gICAgLy8gICAgICAgICAgICAgYWR1bHRzOiAyLFxuICAgIC8vICAgICAgICAgICAgIGNoaWxkcmVuOiAwLFxuICAgIC8vICAgICAgICAgICAgIHRvdGFsOiAyXG4gICAgLy8gICAgICAgICAgIH0sXG4gICAgLy8gICAgICAgICAgIG5pZ2h0czogNCxcbiAgICAvLyAgICAgICAgICAgYW1vdW50OiAxODg3LjYsXG4gICAgLy8gICAgICAgICAgIGZlZTogMCxcbiAgICAvLyAgICAgICAgICAgc2VydmljZUZlZTogNTAsXG4gICAgLy8gICAgICAgICAgIHJlZnVuZDogMTg4Ny42LFxuICAgIC8vICAgICAgICAgICByZWZ1bmRhYmxlOiB0cnVlLFxuICAgIC8vICAgICAgICAgICByb3V0ZTogJ0FVVE8nXG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgXSxcbiAgICAvLyAgICAgICBhbW91bnQ6IDM3NzUuMjEsXG4gICAgLy8gICAgICAgZmVlOiAwLFxuICAgIC8vICAgICAgIHN1cmNoYXJnZTogMCxcbiAgICAvLyAgICAgICByZWZ1bmQ6IDM3NzUuMjFcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgcGF5b3V0OiB7XG4gICAgLy8gICAgICAgYWxyZWFkeVJlZnVuZGVkOiAyOTkwLjc5LFxuICAgIC8vICAgICAgIGN1cnJlbnQ6IDE2MDAsXG4gICAgLy8gICAgICAgYWZ0ZXJUaGlzOiA2NzY2LFxuICAgIC8vICAgICAgIGZlZXNUb3RhbDogMCxcbiAgICAvLyAgICAgICB3YWxsZXQ6IDAsXG4gICAgLy8gICAgICAgY2FyZDogMCxcbiAgICAvLyAgICAgICB0YWJieTogMCxcbiAgICAvLyAgICAgICB0YW1hcmE6IDIwMCxcbiAgICAvLyAgICAgICBhbXdhbDogMCxcbiAgICAvLyAgICAgICBtaXM6IDAsXG4gICAgLy8gICAgICAgYm5wbE1hbnVhbDogMCxcbiAgICAvLyAgICAgICBsb3lhbHR5VG9XYWxsZXQ6IDYwMCxcbiAgICAvLyAgICAgICBub3RlOiBudWxsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN1bW1hcmllczogW1xuICAgIC8vICAgICAgIHtcbiAgICAvLyAgICAgICAgIGNvZGU6ICdDQVJEJyxcbiAgICAvLyAgICAgICAgIGxhYmVsOiAnQ2FyZCcsXG4gICAgLy8gICAgICAgICBwYWlkOiA2ODY2LFxuICAgIC8vICAgICAgICAgcmVmdW5kOiAzNzc1LjIxLFxuICAgIC8vICAgICAgICAgcmVmdW5kYWJsZTogdHJ1ZSxcbiAgICAvLyAgICAgICAgIGdhdGV3YXk6ICdDSCdcbiAgICAvLyAgICAgICB9LFxuICAgIC8vICAgICAgIHtcbiAgICAvLyAgICAgICAgIGNvZGU6ICdTRVJWSUNFX0ZFRScsXG4gICAgLy8gICAgICAgICBsYWJlbDogJ1NlcnZpY2UgRmVlJyxcbiAgICAvLyAgICAgICAgIHBhaWQ6IDEwMCxcbiAgICAvLyAgICAgICAgIHJlZnVuZDogMCxcbiAgICAvLyAgICAgICAgIHJlZnVuZGFibGU6IGZhbHNlXG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICBdLFxuICAgIC8vICAgICBnaWZ0czogW11cbiAgICAvLyAgIH0sXG4gICAgLy8gICBzdGF0dXM6IDIwMCxcbiAgICAvLyAgIGVycm9yczogbnVsbFxuICAgIC8vIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpXG4gICAgICAucG9zdDxJUmVmdW5kRGV0YWlsc0FwaVJlc3BvbnNlPih7XG4gICAgICAgIGVuZHBvaW50LFxuICAgICAgICAuLi5wYXlsb2FkXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsICdGYWlsZWQgdG8gZ2V0IHJlZnVuZCBkZXRhaWxzJylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIG1hcEFwaVJlc3BvbnNlVG9Sb29tcyhcbiAgICBkYXRhOiBJUmVmdW5kRGV0YWlsc0RhdGFcbiAgKTogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Sb29tW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbFJvb21zKGRhdGEpO1xuICB9XG5cbiAgbWFwQXBpUmVzcG9uc2VUb1JlZnVuZFN1bW1hcnkoXG4gICAgZGF0YTogSVJlZnVuZERldGFpbHNEYXRhXG4gICk6IElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUmVmdW5kU3VtbWFyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsUGFpZDogZGF0YS50b3RhbHM/LnBhaWQgfHwgMCxcbiAgICAgIHRvdGFsUmVmdW5kOiBkYXRhLmN1cnJlbnQ/LnJlZnVuZCB8fCBkYXRhLmN1cnJlbnQ/LnJlZnVuZCB8fCAwLFxuICAgICAgdG90YWxGZWVzOiBkYXRhLmN1cnJlbnQ/LmZlZSB8fCAwLFxuICAgICAgcm9vbXM6IHRoaXMuZ2V0QWxsUm9vbXMoZGF0YSksXG4gICAgICBwYWNrYWdlczogdGhpcy5nZXRBbGxQYWNrYWdlcyhkYXRhKSxcbiAgICAgIHN1bW1hcmllczogZGF0YS5zdW1tYXJpZXMsXG4gICAgICBwYXlvdXQ6IGRhdGEucGF5b3V0LFxuICAgICAgdG90YWxzOiBkYXRhLnRvdGFscyxcbiAgICAgIC8vIEFkZGl0aW9uYWwgYnJlYWtkb3duIGZpZWxkc1xuICAgICAgY291cG9uOiBkYXRhLnRvdGFscz8uY291cG9uIHx8IDAsXG4gICAgICBnaWZ0c1RvdGFsOiBkYXRhLnRvdGFscz8uZ2lmdHMgfHwgMCxcbiAgICAgIGdpZnRzRGV0YWlsczogZGF0YS5naWZ0cyB8fCBbXSxcbiAgICAgIHNlcnZpY2VGZWU6IGRhdGEudG90YWxzPy5zZXJ2aWNlRmVlIHx8IDAsXG4gICAgICBzdXJjaGFyZ2U6IGRhdGEuY3VycmVudD8uc3VyY2hhcmdlIHx8IDAsXG4gICAgICBnb2xkZW5HaWZ0OiBkYXRhLmZsYWdzPy5nb2xkZW5HaWZ0IHx8IGZhbHNlLFxuICAgICAgcHJldmlvdXNSb29tczogZGF0YS5wcmV2aW91cyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXRBbGxQYWNrYWdlcyhcbiAgICBkYXRhOiBJUmVmdW5kRGV0YWlsc0RhdGFcbiAgKTogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRQYWNrYWdlW10ge1xuICAgIGNvbnN0IHBhY2thZ2VzOiBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZFBhY2thZ2VbXSA9IFtdO1xuICAgIGNvbnN0IHBhY2thZ2VNYXAgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRQYWNrYWdlXG4gICAgPigpO1xuXG4gICAgLy8gUHJvY2VzcyBwcmV2aW91cyAoY2FuY2VsbGVkKSByb29tcyAtIGdyb3VwIGJ5IHBhY2thZ2VJZFxuICAgIGlmIChkYXRhLnByZXZpb3VzPy5sZW5ndGgpIHtcbiAgICAgIGRhdGEucHJldmlvdXMuZm9yRWFjaCgocm9vbTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUGtnID0gcGFja2FnZU1hcC5nZXQocm9vbS5wYWNrYWdlSWQpO1xuICAgICAgICBpZiAoZXhpc3RpbmdQa2cpIHtcbiAgICAgICAgICBleGlzdGluZ1BrZy5yb29tcy5wdXNoKHtcbiAgICAgICAgICAgIHJvb21JZDogcm9vbS5yb29tSWQgfHwgcm9vbS5wYWNrYWdlSWQsXG4gICAgICAgICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICAgIGJhc2lzOiByb29tLmJhc2lzLFxuICAgICAgICAgICAgbmlnaHRzOiByb29tLm5pZ2h0c1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLmFtb3VudCArPSByb29tLmFtb3VudCB8fCAwO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLmZlZSArPSByb29tLmZlZSB8fCAwO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLnJlZnVuZCArPSByb29tLnJlZnVuZGVkIHx8IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFja2FnZU1hcC5zZXQocm9vbS5wYWNrYWdlSWQsIHtcbiAgICAgICAgICAgIHBhY2thZ2VJZDogcm9vbS5wYWNrYWdlSWQsXG4gICAgICAgICAgICBwYWNrYWdlTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICAgIHJvb21zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb29tSWQ6IHJvb20ucm9vbUlkIHx8IHJvb20ucGFja2FnZUlkLFxuICAgICAgICAgICAgICAgIHJvb21OYW1lOiByb29tLnJvb21OYW1lLFxuICAgICAgICAgICAgICAgIGJhc2lzOiByb29tLmJhc2lzLFxuICAgICAgICAgICAgICAgIG5pZ2h0czogcm9vbS5uaWdodHNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFtb3VudDogcm9vbS5hbW91bnQgfHwgMCxcbiAgICAgICAgICAgIGZlZTogcm9vbS5mZWUgfHwgMCxcbiAgICAgICAgICAgIHNlcnZpY2VGZWU6IDAsXG4gICAgICAgICAgICByZWZ1bmQ6IHJvb20ucmVmdW5kZWQgfHwgMCxcbiAgICAgICAgICAgIHJlZnVuZGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY2FuY2VsbGVkQmVmb3JlOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uRGF0ZTogcm9vbS5jYW5jZWxsZWRBdFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGN1cnJlbnQgcm9vbXMgLSBncm91cCBieSBwYWNrYWdlSWRcbiAgICBpZiAoZGF0YS5jdXJyZW50Py5yb29tcz8ubGVuZ3RoKSB7XG4gICAgICBkYXRhLmN1cnJlbnQucm9vbXMuZm9yRWFjaCgocm9vbTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUGtnID0gcGFja2FnZU1hcC5nZXQocm9vbS5wYWNrYWdlSWQpO1xuICAgICAgICBpZiAoZXhpc3RpbmdQa2cgJiYgIWV4aXN0aW5nUGtnLmNhbmNlbGxlZEJlZm9yZSkge1xuICAgICAgICAgIGV4aXN0aW5nUGtnLnJvb21zLnB1c2goe1xuICAgICAgICAgICAgcm9vbUlkOiByb29tLnJvb21JZCB8fCByb29tLnBhY2thZ2VJZCxcbiAgICAgICAgICAgIHJvb21OYW1lOiByb29tLnJvb21OYW1lLFxuICAgICAgICAgICAgYmFzaXM6IHJvb20uYmFzaXMsXG4gICAgICAgICAgICBuaWdodHM6IHJvb20ubmlnaHRzLFxuICAgICAgICAgICAgcGF4OiByb29tLnBheCxcbiAgICAgICAgICAgIGFkdWx0czogcm9vbS5wYXg/LmFkdWx0cyxcbiAgICAgICAgICAgIGNoaWxkcmVuOiByb29tLnBheD8uY2hpbGRyZW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBleGlzdGluZ1BrZy5hbW91bnQgKz0gcm9vbS5hbW91bnQgfHwgMDtcbiAgICAgICAgICBleGlzdGluZ1BrZy5mZWUgKz0gcm9vbS5mZWUgfHwgMDtcbiAgICAgICAgICBleGlzdGluZ1BrZy5zZXJ2aWNlRmVlICs9IHJvb20uc2VydmljZUZlZSB8fCAwO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLnJlZnVuZCArPSByb29tLnJlZnVuZCB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhY2thZ2VNYXAuc2V0KHJvb20ucGFja2FnZUlkLCB7XG4gICAgICAgICAgICBwYWNrYWdlSWQ6IHJvb20ucGFja2FnZUlkLFxuICAgICAgICAgICAgcGFja2FnZU5hbWU6IHJvb20ucm9vbU5hbWUsXG4gICAgICAgICAgICByb29tczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm9vbUlkOiByb29tLnJvb21JZCB8fCByb29tLnBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICAgICAgICBiYXNpczogcm9vbS5iYXNpcyxcbiAgICAgICAgICAgICAgICBuaWdodHM6IHJvb20ubmlnaHRzLFxuICAgICAgICAgICAgICAgIHBheDogcm9vbS5wYXgsXG4gICAgICAgICAgICAgICAgYWR1bHRzOiByb29tLnBheD8uYWR1bHRzLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiByb29tLnBheD8uY2hpbGRyZW5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFtb3VudDogcm9vbS5hbW91bnQgfHwgMCxcbiAgICAgICAgICAgIGZlZTogcm9vbS5mZWUgfHwgMCxcbiAgICAgICAgICAgIHNlcnZpY2VGZWU6IHJvb20uc2VydmljZUZlZSB8fCAwLFxuICAgICAgICAgICAgcmVmdW5kOiByb29tLnJlZnVuZCB8fCAwLFxuICAgICAgICAgICAgcmVmdW5kYWJsZTogcm9vbS5yZWZ1bmRhYmxlLFxuICAgICAgICAgICAgcm91dGU6IHJvb20ucm91dGUsXG4gICAgICAgICAgICBjYW5jZWxsZWRCZWZvcmU6IGZhbHNlLFxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHBhY2thZ2VNYXAuZm9yRWFjaCgocGtnKSA9PiBwYWNrYWdlcy5wdXNoKHBrZykpO1xuICAgIHJldHVybiBwYWNrYWdlcztcbiAgfVxuXG4gIGdldEFsbFJvb21zKGRhdGE6IElSZWZ1bmREZXRhaWxzRGF0YSk6IElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUm9vbVtdIHtcbiAgICBjb25zdCBhbGxSb29tczogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Sb29tW10gPSBbXTtcblxuICAgIGlmIChkYXRhLnByZXZpb3VzPy5sZW5ndGgpIHtcbiAgICAgIGRhdGEucHJldmlvdXMuZm9yRWFjaCgocm9vbSkgPT4ge1xuICAgICAgICBhbGxSb29tcy5wdXNoKHtcbiAgICAgICAgICBwYWNrYWdlSWQ6IHJvb20ucGFja2FnZUlkLFxuICAgICAgICAgIHJvb21JZDogcm9vbT8ucm9vbUlkLFxuICAgICAgICAgIHJvb21OYW1lOiByb29tLnJvb21OYW1lLFxuICAgICAgICAgIGlzUmVmdW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgY2FuY2VsbGVkQmVmb3JlOiB0cnVlLFxuICAgICAgICAgIHJvb21BbW91bnQ6IHJvb20uYW1vdW50LFxuICAgICAgICAgIGNhbmNlbGxhdGlvbkZlZTogcm9vbS5mZWUsXG4gICAgICAgICAgcmVmdW5kQW1vdW50OiByb29tLnJlZnVuZGVkLFxuICAgICAgICAgIGN1cnJlbnRDYW5jZWxsYXRpb246IGZhbHNlLFxuICAgICAgICAgIGNhbmNlbGxhdGlvbkRhdGU6IHJvb20uY2FuY2VsbGVkQXQsXG4gICAgICAgICAgbmlnaHRzOiByb29tLm5pZ2h0cyA/PyAxXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY3VycmVudD8ucm9vbXM/Lmxlbmd0aCkge1xuICAgICAgZGF0YS5jdXJyZW50LnJvb21zLmZvckVhY2goKHJvb20pID0+IHtcbiAgICAgICAgYWxsUm9vbXMucHVzaCh7XG4gICAgICAgICAgcGFja2FnZUlkOiByb29tLnBhY2thZ2VJZCxcbiAgICAgICAgICByb29tSWQ6IHJvb20/LnJvb21JZCxcbiAgICAgICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICBpc1JlZnVuZGFibGU6IHJvb20ucmVmdW5kYWJsZSxcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICByb29tQW1vdW50OiByb29tLmFtb3VudCxcbiAgICAgICAgICBjYW5jZWxsYXRpb25GZWU6IHJvb20uZmVlLFxuICAgICAgICAgIGNhbmNlbGxlZEJlZm9yZTogZmFsc2UsXG4gICAgICAgICAgcmVmdW5kQW1vdW50OiByb29tLnJlZnVuZCxcbiAgICAgICAgICByb3V0ZTogcm9vbS5yb3V0ZSxcbiAgICAgICAgICBjdXJyZW50Q2FuY2VsbGF0aW9uOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGxhdGlvbkRhdGU6IGAke25ldyBEYXRlKCl9YCxcbiAgICAgICAgICBuaWdodHM6IHJvb20ubmlnaHRzID8/IDFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsUm9vbXM7XG4gIH1cblxuICBwcm9jZXNzQXV0b0NhbmNlbGxhdGlvbihcbiAgICBwYWNrYWdlSWRzOiBzdHJpbmdbXSxcbiAgICByZWZ1bmRPcHRpb24gPSAnb3JpZ2luYWxQYXltZW50TWV0aG9kJ1xuICApOiBPYnNlcnZhYmxlPElBdXRvQ2FuY2VsbGF0aW9uUHJvY2Vzc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLnJlc29sdmVFbmRwb2ludChcbiAgICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtLnByb2Nlc3NBdXRvQ2FuY2VsbGF0aW9uXG4gICAgKTtcblxuICAgIGNvbnN0IHVuaXF1ZVBhY2thZ2VJZHMgPSBbLi4ubmV3IFNldChwYWNrYWdlSWRzKV07IC8vIEVuc3VyZSB1bmlxdWUgcGFja2FnZSBJRHNcbiAgICBjb25zdCBwYXlsb2FkOiBJUHJvY2Vzc0NhbmNlbGxhdGlvblJlcXVlc3QgPSB7XG4gICAgICBib29raW5nSWQ6IGAke1xuICAgICAgICB0aGlzLmhvdGVsTWFuYWdlQm9va2luZ1NlcnZpY2Uuc2VsZWN0ZWRIb3RlbEJvb2tpbmcudmFsdWU/LmJvb2tpbmdJZCB8fFxuICAgICAgICAnJ1xuICAgICAgfWAsXG4gICAgICBwcm9kdWN0OiAnaG90ZWxzJyxcbiAgICAgIHBhY2thZ2VJZHM6IHVuaXF1ZVBhY2thZ2VJZHMsXG4gICAgICBwcmVmZXJyZWRQYXltZW50TWV0aG9kOiByZWZ1bmRPcHRpb25cbiAgICB9O1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRQYWNrYWdlSWRzLnNldCh1bmlxdWVQYWNrYWdlSWRzKTtcblxuICAgIC8vIHJldHVybiBvZih7XG4gICAgLy8gICBkYXRhOiB7XG4gICAgLy8gICAgIGVycm9yOiAnMScsXG4gICAgLy8gICAgIG1lc3NhZ2U6XG4gICAgLy8gICAgICAgJ0NhbmNlbCByZXF1ZXN0ZWQg4oCUIHN1cHBsaWVyIGNhbmNlbGxhdGlvbiBmYWlsZWQ7IHRpY2tldCBjcmVhdGVkJyxcbiAgICAvLyAgICAgYm9va2luZ0lkOiAxNDQzNjgsXG4gICAgLy8gICAgIHByZWZlcnJlZFBheW1lbnRNZXRob2Q6ICd3YWxsZXQnLFxuICAgIC8vICAgICBjYW5jZWw6IHtcbiAgICAvLyAgICAgICBzdGF0dXM6ICdmYWlsZWQnLFxuICAgIC8vICAgICAgIHBhY2thZ2VJZHM6IFsnZjAzODM4YmQtZWE4ZC00ZmU1LWJmYzgtZGQzMWM5YmRlZTk1J10sXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHJlZnVuZDoge1xuICAgIC8vICAgICAgIHN0YXR1czogJ3NraXBwZWQnLFxuICAgIC8vICAgICAgIGJvb2tpbmdTdGF0dXM6ICdDYW5jZWxsZWQnLFxuICAgIC8vICAgICAgIGFtb3VudDogMTA1MCxcbiAgICAvLyAgICAgICBjdXJyZW5jeTogJ1NBUicsXG4gICAgLy8gICAgICAgYnJlYWtkb3duOiB7XG4gICAgLy8gICAgICAgICB3YWxsZXQ6IDc1MCxcbiAgICAvLyAgICAgICAgIG1va2FmYTogMjAwLFxuICAgIC8vICAgICAgICAgcWl0YWY6IDEwMCxcbiAgICAvLyAgICAgICAgIGNhcmQ6IDAsXG4gICAgLy8gICAgICAgICB0YWJieTogMCxcbiAgICAvLyAgICAgICAgIHRhbWFyYTogMCxcbiAgICAvLyAgICAgICB9LFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0YXR1czogMjAwLFxuICAgIC8vICAgZXJyb3JzOiBudWxsLFxuICAgIC8vIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpXG4gICAgICAucG9zdDxJQXV0b0NhbmNlbGxhdGlvblByb2Nlc3NSZXNwb25zZT4oe1xuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgLi4ucGF5bG9hZFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYWNrYWdlSWRzLnNldChbXSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgJ0ZhaWxlZCB0byBwcm9jZXNzIGNhbmNlbGxhdGlvbicpXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBwcm9jZXNzTm9uUmVmdW5kYWJsZUNhbmNlbGxhdGlvbihcbiAgICBwYWNrYWdlSWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50VXJsOiBzdHJpbmcsXG4gICAgbGFuZ3VhZ2UgPSAnZW4nXG4gICk6IE9ic2VydmFibGU8SUF1dG9DYW5jZWxsYXRpb25Qcm9jZXNzUmVzcG9uc2U+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMucmVzb2x2ZUVuZHBvaW50KFxuICAgICAgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkVuZHBvaW50c0VudW0ucHJvY2Vzc0F1dG9DYW5jZWxsYXRpb25cbiAgICApO1xuXG4gICAgY29uc3QgcGF5bG9hZDogSVByb2Nlc3NOb25SZWZ1bmRhYmxlQ2FuY2VsbGF0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGJvb2tpbmdJZDogYCR7XG4gICAgICAgIHRoaXMuaG90ZWxNYW5hZ2VCb29raW5nU2VydmljZS5zZWxlY3RlZEhvdGVsQm9va2luZy52YWx1ZT8uYm9va2luZ0lkIHx8XG4gICAgICAgICcnXG4gICAgICB9YCxcbiAgICAgIHByb2R1Y3Q6ICdob3RlbHMnLFxuICAgICAgcGFja2FnZUlkczogW3BhY2thZ2VJZF0sXG4gICAgICBwcmVmZXJyZWRQYXltZW50TWV0aG9kOiAnb3JpZ2luYWxQYXltZW50TWV0aG9kJyxcbiAgICAgIHByb2Nlc3NlZE1vZGU6ICdhdXRvJyxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgYXR0YWNobWVudFVybFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5hcGlcbiAgICAgIC5wb3N0PElBdXRvQ2FuY2VsbGF0aW9uUHJvY2Vzc1Jlc3BvbnNlPih7XG4gICAgICAgIGVuZHBvaW50LFxuICAgICAgICAuLi5wYXlsb2FkXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICdGYWlsZWQgdG8gcHJvY2VzcyBub24tcmVmdW5kYWJsZSBjYW5jZWxsYXRpb24nXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlTG9jYWxSZWZ1bmRTdW1tYXJ5KFxuICAgIHJvb21zOiBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJvb21bXVxuICApOiBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZFN1bW1hcnkge1xuICAgIGNvbnN0IHNlbGVjdGVkUm9vbXMgPSByb29tcy5maWx0ZXIoKHJvb20pID0+IHJvb20uaXNTZWxlY3RlZCk7XG4gICAgY29uc3QgdG90YWxQYWlkID0gcm9vbXMucmVkdWNlKChzdW0sIHJvb20pID0+IHN1bSArIHJvb20ucm9vbUFtb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxSZWZ1bmQgPSBzZWxlY3RlZFJvb21zLnJlZHVjZShcbiAgICAgIChzdW0sIHJvb20pID0+IHN1bSArIHJvb20ucmVmdW5kQW1vdW50LFxuICAgICAgMFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxQYWlkLFxuICAgICAgdG90YWxSZWZ1bmQsXG4gICAgICByb29tczogc2VsZWN0ZWRSb29tcy5tYXAoKHJvb20pID0+ICh7XG4gICAgICAgIC4uLnJvb20sXG4gICAgICAgIGN1cnJlbnRDYW5jZWxsYXRpb246IHRydWUsXG4gICAgICAgIGNhbmNlbGxhdGlvbkRhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUGFja2FnZUlkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUGFja2FnZUlkcygpO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZFBhY2thZ2VJZHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWRQYWNrYWdlSWRzLnNldChbXSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudHJ5U291cmNlRGV2aWNlQnJhbmQoKTogSUVudHJ5U291cmNlRGV2aWNlQnJhbmQge1xuICAgIHJldHVybiB7XG4gICAgICBlbnRyeVNvdXJjZTogdGhpcy5nZXRFbnRyeVNvdXJjZSgpLFxuICAgICAgZGV2aWNlOiB0aGlzLmdldERldmljZSgpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50cnlTb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZU15VHJpcHNWaWV3ZWRFbnRyeVNvdXJjZUZyb21RdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXZpY2UoKTogc3RyaW5nIHtcbiAgICBsZXQgZGV2aWNlID0gJ3dlYic7XG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ21vYmlsZUF1dGgnXSkge1xuICAgICAgZGV2aWNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snZGV2aWNlJ10gfHwgJ21vYmlsZSc7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkZXZpY2VUeXBlJywgZGV2aWNlKTtcbiAgICByZXR1cm4gZGV2aWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBtZXNzYWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgLy8gY29uc29sZS5sb2cobWVzc2FnZSwgZXJyb3IpO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3I/Lm1lc3NhZ2UgfHwgbWVzc2FnZTtcbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKSk7XG4gIH1cbn1cbiJdfQ==
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvc2VydmljZXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBYyxHQUFHLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBTSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDcEgsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFRcEgsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBK0RoRSxNQUFNLE9BQU8sNENBQTRDO0lBb0J2RDtRQW5CaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNyQyxVQUFLLEdBQUcs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QUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7K0dBbGZVLDRDQUE0QzttSEFBNUMsNENBQTRDLGNBRjNDLE1BQU07OzRGQUVQLDRDQUE0QztrQkFIeEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgY2F0Y2hFcnJvciwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0JEX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZy9kYXNoYm9hcmQuY29uZmlnJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGVudmlyb25tZW50cyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSG90ZWxNYW5hZ2VCb29raW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9ob3RlbC1tYW5hZ2UtYm9va2luZy9ob3RlbC1tYW5hZ2UtYm9va2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtIH0gZnJvbSAnLi4vZW51bXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuZW51bSc7XG5pbXBvcnQge1xuICBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJvb20sXG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUmVmdW5kU3VtbWFyeSxcbiAgSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRQYWNrYWdlLFxuICBJUmVmdW5kRGV0YWlsc0FwaVJlc3BvbnNlLFxuICBJUmVmdW5kRGV0YWlsc0RhdGFcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pLWFsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IHJlc29sdmVNeVRyaXBzVmlld2VkRW50cnlTb3VyY2VGcm9tUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvd2ViZW5nYWdlLXRyYWNraW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZWZ1bmREZXRhaWxzUmVxdWVzdCB7XG4gIGJvb2tpbmdJZDogc3RyaW5nO1xuICBwcm9kdWN0OiAnaG90ZWxzJztcbiAgcGFja2FnZUlkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVByb2Nlc3NDYW5jZWxsYXRpb25SZXF1ZXN0IHtcbiAgYm9va2luZ0lkOiBzdHJpbmc7XG4gIHByb2R1Y3Q6ICdob3RlbHMnO1xuICBwYWNrYWdlSWRzOiBzdHJpbmdbXTtcbiAgcHJlZmVycmVkUGF5bWVudE1ldGhvZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUHJvY2Vzc05vblJlZnVuZGFibGVDYW5jZWxsYXRpb25SZXF1ZXN0IHtcbiAgYm9va2luZ0lkOiBzdHJpbmc7XG4gIHByb2R1Y3Q6ICdob3RlbHMnO1xuICBwYWNrYWdlSWRzOiBzdHJpbmdbXTtcbiAgcHJlZmVycmVkUGF5bWVudE1ldGhvZDogc3RyaW5nO1xuICBwcm9jZXNzZWRNb2RlOiAnYXV0byc7XG4gIGxhbmd1YWdlOiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRVcmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXV0b0NhbmNlbGxhdGlvblByb2Nlc3NSZXNwb25zZSB7XG4gIHN0YXR1czogbnVtYmVyO1xuICBkYXRhOiB7XG4gICAgZXJyb3I6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgYm9va2luZ0lkOiBudW1iZXI7XG4gICAgcHJlZmVycmVkUGF5bWVudE1ldGhvZDogc3RyaW5nO1xuICAgIGlzV2hhdHNBcHA/OiBib29sZWFuO1xuICAgIGNhbmNlbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBwYWNrYWdlSWRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIHJlZnVuZDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBib29raW5nU3RhdHVzOiBzdHJpbmc7XG4gICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgICBicmVha2Rvd246IHtcbiAgICAgICAgd2FsbGV0OiBudW1iZXI7XG4gICAgICAgIG1va2FmYTogbnVtYmVyO1xuICAgICAgICBxaXRhZjogbnVtYmVyO1xuICAgICAgICBjYXJkOiBudW1iZXI7XG4gICAgICAgIHRhYmJ5OiBudW1iZXI7XG4gICAgICAgIHRhbWFyYTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBlcnJvcnM6IGFueTtcbn1cblxuaW50ZXJmYWNlIElFbnRyeVNvdXJjZURldmljZUJyYW5kIHtcbiAgZW50cnlTb3VyY2U6IHN0cmluZztcbiAgZGV2aWNlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGkgPSBpbmplY3QoQXBpU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpQmFzZSA9IGluamVjdChTQkRfQ09ORklHKS5hcGlCYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBob3RlbE1hbmFnZUJvb2tpbmdTZXJ2aWNlID0gaW5qZWN0KFxuICAgIEhvdGVsTWFuYWdlQm9va2luZ1NlcnZpY2VcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hbG1hdGFyQm9va2luZ0lkID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maXJtYXRpb25OdW1iZXIgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTnVzdWtGbG93ID0gc2lnbmFsPGJvb2xlYW4+KFxuICAgIGVudmlyb25tZW50cy5pc1RlbmFudCB8fCBmYWxzZVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkUGFja2FnZUlkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGFsbWF0YXJCb29raW5nSWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9hbG1hdGFyQm9va2luZ0lkKCkpO1xuICByZWFkb25seSBjb25maXJtYXRpb25OdW1iZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jb25maXJtYXRpb25OdW1iZXIoKSk7XG4gIHJlYWRvbmx5IGlzTnVzdWtGbG93ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXNOdXN1a0Zsb3coKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQm9va2luZ0RhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJvb2tpbmdEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuaG90ZWxNYW5hZ2VCb29raW5nU2VydmljZS5zZWxlY3RlZEhvdGVsQm9va2luZ1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEhvdGVsQm9va2luZzogYW55KSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBIb3RlbCBCb29raW5nOicsIHNlbGVjdGVkSG90ZWxCb29raW5nKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSG90ZWxCb29raW5nKSB7XG4gICAgICAgICAgdGhpcy5fYWxtYXRhckJvb2tpbmdJZC5zZXQoc2VsZWN0ZWRIb3RlbEJvb2tpbmcuYm9va2luZ0lkIHx8ICcnKTtcbiAgICAgICAgICB0aGlzLl9jb25maXJtYXRpb25OdW1iZXIuc2V0KHNlbGVjdGVkSG90ZWxCb29raW5nLmJvb2tpbmdJZCB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bGwgVVJMIG9mIGFuIGVuZHBvaW50IGZyb20gdGhlIGVudW0uIFRoZSBlbnVtIHBhdGhzIHN0YXJ0IHdpdGggYC9hcGkvYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYGFwaUJhc2VgOyBhIGhvc3RcbiAgICogdGhhdCBzZXJ2ZXMgdGhlIEFQSSBzb21ld2hlcmUgZWxzZSAoSGVsaXg6IGl0cyBvd24gQVBJIG9yaWdpbikgc2V0cyBgYXBpQmFzZWAsIHNvIHRoYXQgcGFydCBpcyBzd2FwcGVkIGZvciBpdC5cbiAgICovXG4gIHJlc29sdmVFbmRwb2ludChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUJhc2UucmVwbGFjZSgvXFwvKyQvLCAnJyl9LyR7cGF0aC5yZXBsYWNlKC9eXFwvP2FwaVxcLy8sICcnKX1gO1xuICB9XG5cbiAgZ2V0UmVmdW5kRGV0YWlscyhcbiAgICBwYWNrYWdlSWRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IE9ic2VydmFibGU8SVJlZnVuZERldGFpbHNBcGlSZXNwb25zZT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5yZXNvbHZlRW5kcG9pbnQoXG4gICAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzRW51bS5nZXRSZWZ1bmREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IHBheWxvYWQ6IElSZWZ1bmREZXRhaWxzUmVxdWVzdCA9IHtcbiAgICAgIGJvb2tpbmdJZDogYCR7XG4gICAgICAgIHRoaXMuaG90ZWxNYW5hZ2VCb29raW5nU2VydmljZS5zZWxlY3RlZEhvdGVsQm9va2luZy52YWx1ZT8uYm9va2luZ0lkIHx8XG4gICAgICAgICcnXG4gICAgICB9YCxcbiAgICAgIHByb2R1Y3Q6ICdob3RlbHMnLFxuICAgICAgcGFja2FnZUlkczogWy4uLm5ldyBTZXQocGFja2FnZUlkcyldIC8vIEVuc3VyZSB1bmlxdWUgcGFja2FnZSBJRHNcbiAgICB9O1xuXG4gICAgLy8gcmV0dXJuIG9mKHtcbiAgICAvLyAgIGRhdGE6IHtcbiAgICAvLyAgICAgYm9va2luZ0lkOiAxNDQzNjgsXG4gICAgLy8gICAgIGN1cnJlbmN5OiAnU0FSJyxcbiAgICAvLyAgICAgc3RhdHVzOiAnUGFydGlhbGx5IHJlZnVuZGVkJyxcbiAgICAvLyAgICAgbWVzc2FnZTogJ1JlZnVuZCBkZXRhaWxzIGNhbGN1bGF0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAvLyAgICAgZmxhZ3M6IHtcbiAgICAvLyAgICAgICByZWZ1bmRhYmxlOiB0cnVlLFxuICAgIC8vICAgICAgIHBhcnRpYWw6IGZhbHNlLFxuICAgIC8vICAgICAgIGdvbGRlbkdpZnQ6IGZhbHNlXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHNlbGVjdGlvbjoge1xuICAgIC8vICAgICAgIHBhY2thZ2VJZHM6IFsnZjAzODM4YmQtZWE4ZC00ZmU1LWJmYzgtZGQzMWM5YmRlZTk1J11cbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgdG90YWxzOiB7XG4gICAgLy8gICAgICAgcGFpZDogNjg2NixcbiAgICAvLyAgICAgICBiZWZvcmVDb3Vwb246IDY4NjUuNjEsXG4gICAgLy8gICAgICAgcm9vbXNCb29rZWQ6IDQsXG4gICAgLy8gICAgICAgY291cG9uOiAwLFxuICAgIC8vICAgICAgIGdpZnRzOiAwLFxuICAgIC8vICAgICAgIHNlcnZpY2VGZWU6IDAsXG4gICAgLy8gICAgICAgd2FsbGV0OiAwLFxuICAgIC8vICAgICAgIGNhcmQ6IDAsXG4gICAgLy8gICAgICAgdGFiYnk6IDAsXG4gICAgLy8gICAgICAgdGFtYXJhOiAyMjAsXG4gICAgLy8gICAgICAgbW9rYWZhOiAwLFxuICAgIC8vICAgICAgIHFpdGFmOiAwLFxuICAgIC8vICAgICAgIHdhbGE6IDAsXG4gICAgLy8gICAgICAgaGFzc2FkOiAwLFxuICAgIC8vICAgICAgIGFuYjogMCxcbiAgICAvLyAgICAgICB5Z2c6IDBcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgcHJldmlvdXM6IFtcbiAgICAvLyAgICAgICB7XG4gICAgLy8gICAgICAgICBwYWNrYWdlSWQ6ICc1ZWIzM2Q1OS0yNjA3LTQwNTctOWQyNi00ZjdiZTc0NWY2N2YnLFxuICAgIC8vICAgICAgICAgcm9vbU5hbWU6ICdTdGFuZGFyZCBSb29tJyxcbiAgICAvLyAgICAgICAgIGNhbmNlbGxlZEF0OiAnMjAyNi0wOS0wMlQxMzo0Mjo1NC44NDhaJyxcbiAgICAvLyAgICAgICAgIGFtb3VudDogMjk5MC43OSxcbiAgICAvLyAgICAgICAgIGZlZTogMCxcbiAgICAvLyAgICAgICAgIHJlZnVuZGVkOiAyOTkwLjc5XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICBdLFxuICAgIC8vICAgICBjdXJyZW50OiB7XG4gICAgLy8gICAgICAgcm9vbXM6IFtcbiAgICAvLyAgICAgICAgIHtcbiAgICAvLyAgICAgICAgICAgcGFja2FnZUlkOiAnZjAzODM4YmQtZWE4ZC00ZmU1LWJmYzgtZGQzMWM5YmRlZTk1JyxcbiAgICAvLyAgICAgICAgICAgcm9vbUlkOiAnMDIyOWU2MjItYTg5YS00NjlkLWFkYjgtODYxNWRlYjk3MWNhJyxcbiAgICAvLyAgICAgICAgICAgcm9vbU5hbWU6ICdTY2VuZSBSb29tIFR3aW4nLFxuICAgIC8vICAgICAgICAgICBiYXNpczogJ1Jvb20gb25seSBSTycsXG4gICAgLy8gICAgICAgICAgIHBheDoge1xuICAgIC8vICAgICAgICAgICAgIGFkdWx0czogMixcbiAgICAvLyAgICAgICAgICAgICBjaGlsZHJlbjogMCxcbiAgICAvLyAgICAgICAgICAgICB0b3RhbDogMlxuICAgIC8vICAgICAgICAgICB9LFxuICAgIC8vICAgICAgICAgICBuaWdodHM6IDQsXG4gICAgLy8gICAgICAgICAgIGFtb3VudDogMTg4Ny42MSxcbiAgICAvLyAgICAgICAgICAgZmVlOiAwLFxuICAgIC8vICAgICAgICAgICBzZXJ2aWNlRmVlOiA1MCxcbiAgICAvLyAgICAgICAgICAgcmVmdW5kOiAxODg3LjYxLFxuICAgIC8vICAgICAgICAgICByZWZ1bmRhYmxlOiB0cnVlLFxuICAgIC8vICAgICAgICAgICByb3V0ZTogJ0FVVE8nXG4gICAgLy8gICAgICAgICB9LFxuICAgIC8vICAgICAgICAge1xuICAgIC8vICAgICAgICAgICBwYWNrYWdlSWQ6ICdmMDM4MzhiZC1lYThkLTRmZTUtYmZjOC1kZDMxYzliZGVlOTUnLFxuICAgIC8vICAgICAgICAgICByb29tSWQ6ICdiOGFlZDI2ZS1kOTFhLTQyMzQtYWUzNy05NGIyYzYyMzJkYmQnLFxuICAgIC8vICAgICAgICAgICByb29tTmFtZTogJ1NjZW5lIFJvb20gVHdpbicsXG4gICAgLy8gICAgICAgICAgIGJhc2lzOiAnUm9vbSBvbmx5IFJPJyxcbiAgICAvLyAgICAgICAgICAgcGF4OiB7XG4gICAgLy8gICAgICAgICAgICAgYWR1bHRzOiAyLFxuICAgIC8vICAgICAgICAgICAgIGNoaWxkcmVuOiAwLFxuICAgIC8vICAgICAgICAgICAgIHRvdGFsOiAyXG4gICAgLy8gICAgICAgICAgIH0sXG4gICAgLy8gICAgICAgICAgIG5pZ2h0czogNCxcbiAgICAvLyAgICAgICAgICAgYW1vdW50OiAxODg3LjYsXG4gICAgLy8gICAgICAgICAgIGZlZTogMCxcbiAgICAvLyAgICAgICAgICAgc2VydmljZUZlZTogNTAsXG4gICAgLy8gICAgICAgICAgIHJlZnVuZDogMTg4Ny42LFxuICAgIC8vICAgICAgICAgICByZWZ1bmRhYmxlOiB0cnVlLFxuICAgIC8vICAgICAgICAgICByb3V0ZTogJ0FVVE8nXG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgXSxcbiAgICAvLyAgICAgICBhbW91bnQ6IDM3NzUuMjEsXG4gICAgLy8gICAgICAgZmVlOiAwLFxuICAgIC8vICAgICAgIHN1cmNoYXJnZTogMCxcbiAgICAvLyAgICAgICByZWZ1bmQ6IDM3NzUuMjFcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgcGF5b3V0OiB7XG4gICAgLy8gICAgICAgYWxyZWFkeVJlZnVuZGVkOiAyOTkwLjc5LFxuICAgIC8vICAgICAgIGN1cnJlbnQ6IDE2MDAsXG4gICAgLy8gICAgICAgYWZ0ZXJUaGlzOiA2NzY2LFxuICAgIC8vICAgICAgIGZlZXNUb3RhbDogMCxcbiAgICAvLyAgICAgICB3YWxsZXQ6IDAsXG4gICAgLy8gICAgICAgY2FyZDogMCxcbiAgICAvLyAgICAgICB0YWJieTogMCxcbiAgICAvLyAgICAgICB0YW1hcmE6IDIwMCxcbiAgICAvLyAgICAgICBhbXdhbDogMCxcbiAgICAvLyAgICAgICBtaXM6IDAsXG4gICAgLy8gICAgICAgYm5wbE1hbnVhbDogMCxcbiAgICAvLyAgICAgICBsb3lhbHR5VG9XYWxsZXQ6IDYwMCxcbiAgICAvLyAgICAgICBub3RlOiBudWxsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN1bW1hcmllczogW1xuICAgIC8vICAgICAgIHtcbiAgICAvLyAgICAgICAgIGNvZGU6ICdDQVJEJyxcbiAgICAvLyAgICAgICAgIGxhYmVsOiAnQ2FyZCcsXG4gICAgLy8gICAgICAgICBwYWlkOiA2ODY2LFxuICAgIC8vICAgICAgICAgcmVmdW5kOiAzNzc1LjIxLFxuICAgIC8vICAgICAgICAgcmVmdW5kYWJsZTogdHJ1ZSxcbiAgICAvLyAgICAgICAgIGdhdGV3YXk6ICdDSCdcbiAgICAvLyAgICAgICB9LFxuICAgIC8vICAgICAgIHtcbiAgICAvLyAgICAgICAgIGNvZGU6ICdTRVJWSUNFX0ZFRScsXG4gICAgLy8gICAgICAgICBsYWJlbDogJ1NlcnZpY2UgRmVlJyxcbiAgICAvLyAgICAgICAgIHBhaWQ6IDEwMCxcbiAgICAvLyAgICAgICAgIHJlZnVuZDogMCxcbiAgICAvLyAgICAgICAgIHJlZnVuZGFibGU6IGZhbHNlXG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICBdLFxuICAgIC8vICAgICBnaWZ0czogW11cbiAgICAvLyAgIH0sXG4gICAgLy8gICBzdGF0dXM6IDIwMCxcbiAgICAvLyAgIGVycm9yczogbnVsbFxuICAgIC8vIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpXG4gICAgICAucG9zdDxJUmVmdW5kRGV0YWlsc0FwaVJlc3BvbnNlPih7XG4gICAgICAgIGVuZHBvaW50LFxuICAgICAgICAuLi5wYXlsb2FkXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsICdGYWlsZWQgdG8gZ2V0IHJlZnVuZCBkZXRhaWxzJylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIG1hcEFwaVJlc3BvbnNlVG9Sb29tcyhcbiAgICBkYXRhOiBJUmVmdW5kRGV0YWlsc0RhdGFcbiAgKTogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Sb29tW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbFJvb21zKGRhdGEpO1xuICB9XG5cbiAgbWFwQXBpUmVzcG9uc2VUb1JlZnVuZFN1bW1hcnkoXG4gICAgZGF0YTogSVJlZnVuZERldGFpbHNEYXRhXG4gICk6IElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUmVmdW5kU3VtbWFyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsUGFpZDogZGF0YS50b3RhbHM/LnBhaWQgfHwgMCxcbiAgICAgIHRvdGFsUmVmdW5kOiBkYXRhLmN1cnJlbnQ/LnJlZnVuZCB8fCBkYXRhLmN1cnJlbnQ/LnJlZnVuZCB8fCAwLFxuICAgICAgdG90YWxGZWVzOiBkYXRhLmN1cnJlbnQ/LmZlZSB8fCAwLFxuICAgICAgcm9vbXM6IHRoaXMuZ2V0QWxsUm9vbXMoZGF0YSksXG4gICAgICBwYWNrYWdlczogdGhpcy5nZXRBbGxQYWNrYWdlcyhkYXRhKSxcbiAgICAgIHN1bW1hcmllczogZGF0YS5zdW1tYXJpZXMsXG4gICAgICBwYXlvdXQ6IGRhdGEucGF5b3V0LFxuICAgICAgdG90YWxzOiBkYXRhLnRvdGFscyxcbiAgICAgIC8vIEFkZGl0aW9uYWwgYnJlYWtkb3duIGZpZWxkc1xuICAgICAgY291cG9uOiBkYXRhLnRvdGFscz8uY291cG9uIHx8IDAsXG4gICAgICBnaWZ0c1RvdGFsOiBkYXRhLnRvdGFscz8uZ2lmdHMgfHwgMCxcbiAgICAgIGdpZnRzRGV0YWlsczogZGF0YS5naWZ0cyB8fCBbXSxcbiAgICAgIHNlcnZpY2VGZWU6IGRhdGEudG90YWxzPy5zZXJ2aWNlRmVlIHx8IDAsXG4gICAgICBzdXJjaGFyZ2U6IGRhdGEuY3VycmVudD8uc3VyY2hhcmdlIHx8IDAsXG4gICAgICBnb2xkZW5HaWZ0OiBkYXRhLmZsYWdzPy5nb2xkZW5HaWZ0IHx8IGZhbHNlLFxuICAgICAgcHJldmlvdXNSb29tczogZGF0YS5wcmV2aW91cyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXRBbGxQYWNrYWdlcyhcbiAgICBkYXRhOiBJUmVmdW5kRGV0YWlsc0RhdGFcbiAgKTogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRQYWNrYWdlW10ge1xuICAgIGNvbnN0IHBhY2thZ2VzOiBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZFBhY2thZ2VbXSA9IFtdO1xuICAgIGNvbnN0IHBhY2thZ2VNYXAgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRQYWNrYWdlXG4gICAgPigpO1xuXG4gICAgLy8gUHJvY2VzcyBwcmV2aW91cyAoY2FuY2VsbGVkKSByb29tcyAtIGdyb3VwIGJ5IHBhY2thZ2VJZFxuICAgIGlmIChkYXRhLnByZXZpb3VzPy5sZW5ndGgpIHtcbiAgICAgIGRhdGEucHJldmlvdXMuZm9yRWFjaCgocm9vbTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUGtnID0gcGFja2FnZU1hcC5nZXQocm9vbS5wYWNrYWdlSWQpO1xuICAgICAgICBpZiAoZXhpc3RpbmdQa2cpIHtcbiAgICAgICAgICBleGlzdGluZ1BrZy5yb29tcy5wdXNoKHtcbiAgICAgICAgICAgIHJvb21JZDogcm9vbS5yb29tSWQgfHwgcm9vbS5wYWNrYWdlSWQsXG4gICAgICAgICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICAgIGJhc2lzOiByb29tLmJhc2lzLFxuICAgICAgICAgICAgbmlnaHRzOiByb29tLm5pZ2h0c1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLmFtb3VudCArPSByb29tLmFtb3VudCB8fCAwO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLmZlZSArPSByb29tLmZlZSB8fCAwO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLnJlZnVuZCArPSByb29tLnJlZnVuZGVkIHx8IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFja2FnZU1hcC5zZXQocm9vbS5wYWNrYWdlSWQsIHtcbiAgICAgICAgICAgIHBhY2thZ2VJZDogcm9vbS5wYWNrYWdlSWQsXG4gICAgICAgICAgICBwYWNrYWdlTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICAgIHJvb21zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb29tSWQ6IHJvb20ucm9vbUlkIHx8IHJvb20ucGFja2FnZUlkLFxuICAgICAgICAgICAgICAgIHJvb21OYW1lOiByb29tLnJvb21OYW1lLFxuICAgICAgICAgICAgICAgIGJhc2lzOiByb29tLmJhc2lzLFxuICAgICAgICAgICAgICAgIG5pZ2h0czogcm9vbS5uaWdodHNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFtb3VudDogcm9vbS5hbW91bnQgfHwgMCxcbiAgICAgICAgICAgIGZlZTogcm9vbS5mZWUgfHwgMCxcbiAgICAgICAgICAgIHNlcnZpY2VGZWU6IDAsXG4gICAgICAgICAgICByZWZ1bmQ6IHJvb20ucmVmdW5kZWQgfHwgMCxcbiAgICAgICAgICAgIHJlZnVuZGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgY2FuY2VsbGVkQmVmb3JlOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uRGF0ZTogcm9vbS5jYW5jZWxsZWRBdFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGN1cnJlbnQgcm9vbXMgLSBncm91cCBieSBwYWNrYWdlSWRcbiAgICBpZiAoZGF0YS5jdXJyZW50Py5yb29tcz8ubGVuZ3RoKSB7XG4gICAgICBkYXRhLmN1cnJlbnQucm9vbXMuZm9yRWFjaCgocm9vbTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUGtnID0gcGFja2FnZU1hcC5nZXQocm9vbS5wYWNrYWdlSWQpO1xuICAgICAgICBpZiAoZXhpc3RpbmdQa2cgJiYgIWV4aXN0aW5nUGtnLmNhbmNlbGxlZEJlZm9yZSkge1xuICAgICAgICAgIGV4aXN0aW5nUGtnLnJvb21zLnB1c2goe1xuICAgICAgICAgICAgcm9vbUlkOiByb29tLnJvb21JZCB8fCByb29tLnBhY2thZ2VJZCxcbiAgICAgICAgICAgIHJvb21OYW1lOiByb29tLnJvb21OYW1lLFxuICAgICAgICAgICAgYmFzaXM6IHJvb20uYmFzaXMsXG4gICAgICAgICAgICBuaWdodHM6IHJvb20ubmlnaHRzLFxuICAgICAgICAgICAgcGF4OiByb29tLnBheCxcbiAgICAgICAgICAgIGFkdWx0czogcm9vbS5wYXg/LmFkdWx0cyxcbiAgICAgICAgICAgIGNoaWxkcmVuOiByb29tLnBheD8uY2hpbGRyZW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBleGlzdGluZ1BrZy5hbW91bnQgKz0gcm9vbS5hbW91bnQgfHwgMDtcbiAgICAgICAgICBleGlzdGluZ1BrZy5mZWUgKz0gcm9vbS5mZWUgfHwgMDtcbiAgICAgICAgICBleGlzdGluZ1BrZy5zZXJ2aWNlRmVlICs9IHJvb20uc2VydmljZUZlZSB8fCAwO1xuICAgICAgICAgIGV4aXN0aW5nUGtnLnJlZnVuZCArPSByb29tLnJlZnVuZCB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhY2thZ2VNYXAuc2V0KHJvb20ucGFja2FnZUlkLCB7XG4gICAgICAgICAgICBwYWNrYWdlSWQ6IHJvb20ucGFja2FnZUlkLFxuICAgICAgICAgICAgcGFja2FnZU5hbWU6IHJvb20ucm9vbU5hbWUsXG4gICAgICAgICAgICByb29tczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm9vbUlkOiByb29tLnJvb21JZCB8fCByb29tLnBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICAgICAgICBiYXNpczogcm9vbS5iYXNpcyxcbiAgICAgICAgICAgICAgICBuaWdodHM6IHJvb20ubmlnaHRzLFxuICAgICAgICAgICAgICAgIHBheDogcm9vbS5wYXgsXG4gICAgICAgICAgICAgICAgYWR1bHRzOiByb29tLnBheD8uYWR1bHRzLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiByb29tLnBheD8uY2hpbGRyZW5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFtb3VudDogcm9vbS5hbW91bnQgfHwgMCxcbiAgICAgICAgICAgIGZlZTogcm9vbS5mZWUgfHwgMCxcbiAgICAgICAgICAgIHNlcnZpY2VGZWU6IHJvb20uc2VydmljZUZlZSB8fCAwLFxuICAgICAgICAgICAgcmVmdW5kOiByb29tLnJlZnVuZCB8fCAwLFxuICAgICAgICAgICAgcmVmdW5kYWJsZTogcm9vbS5yZWZ1bmRhYmxlLFxuICAgICAgICAgICAgcm91dGU6IHJvb20ucm91dGUsXG4gICAgICAgICAgICBjYW5jZWxsZWRCZWZvcmU6IGZhbHNlLFxuICAgICAgICAgICAgY2FuY2VsbGF0aW9uRGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHBhY2thZ2VNYXAuZm9yRWFjaCgocGtnKSA9PiBwYWNrYWdlcy5wdXNoKHBrZykpO1xuICAgIHJldHVybiBwYWNrYWdlcztcbiAgfVxuXG4gIGdldEFsbFJvb21zKGRhdGE6IElSZWZ1bmREZXRhaWxzRGF0YSk6IElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUm9vbVtdIHtcbiAgICBjb25zdCBhbGxSb29tczogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Sb29tW10gPSBbXTtcblxuICAgIGlmIChkYXRhLnByZXZpb3VzPy5sZW5ndGgpIHtcbiAgICAgIGRhdGEucHJldmlvdXMuZm9yRWFjaCgocm9vbSkgPT4ge1xuICAgICAgICBhbGxSb29tcy5wdXNoKHtcbiAgICAgICAgICBwYWNrYWdlSWQ6IHJvb20ucGFja2FnZUlkLFxuICAgICAgICAgIHJvb21JZDogcm9vbT8ucm9vbUlkLFxuICAgICAgICAgIHJvb21OYW1lOiByb29tLnJvb21OYW1lLFxuICAgICAgICAgIGlzUmVmdW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgY2FuY2VsbGVkQmVmb3JlOiB0cnVlLFxuICAgICAgICAgIHJvb21BbW91bnQ6IHJvb20uYW1vdW50LFxuICAgICAgICAgIGNhbmNlbGxhdGlvbkZlZTogcm9vbS5mZWUsXG4gICAgICAgICAgcmVmdW5kQW1vdW50OiByb29tLnJlZnVuZGVkLFxuICAgICAgICAgIGN1cnJlbnRDYW5jZWxsYXRpb246IGZhbHNlLFxuICAgICAgICAgIGNhbmNlbGxhdGlvbkRhdGU6IHJvb20uY2FuY2VsbGVkQXQsXG4gICAgICAgICAgbmlnaHRzOiByb29tLm5pZ2h0cyA/PyAxXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY3VycmVudD8ucm9vbXM/Lmxlbmd0aCkge1xuICAgICAgZGF0YS5jdXJyZW50LnJvb21zLmZvckVhY2goKHJvb20pID0+IHtcbiAgICAgICAgYWxsUm9vbXMucHVzaCh7XG4gICAgICAgICAgcGFja2FnZUlkOiByb29tLnBhY2thZ2VJZCxcbiAgICAgICAgICByb29tSWQ6IHJvb20/LnJvb21JZCxcbiAgICAgICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSxcbiAgICAgICAgICBpc1JlZnVuZGFibGU6IHJvb20ucmVmdW5kYWJsZSxcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICByb29tQW1vdW50OiByb29tLmFtb3VudCxcbiAgICAgICAgICBjYW5jZWxsYXRpb25GZWU6IHJvb20uZmVlLFxuICAgICAgICAgIGNhbmNlbGxlZEJlZm9yZTogZmFsc2UsXG4gICAgICAgICAgcmVmdW5kQW1vdW50OiByb29tLnJlZnVuZCxcbiAgICAgICAgICByb3V0ZTogcm9vbS5yb3V0ZSxcbiAgICAgICAgICBjdXJyZW50Q2FuY2VsbGF0aW9uOiB0cnVlLFxuICAgICAgICAgIGNhbmNlbGxhdGlvbkRhdGU6IGAke25ldyBEYXRlKCl9YCxcbiAgICAgICAgICBuaWdodHM6IHJvb20ubmlnaHRzID8/IDFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsUm9vbXM7XG4gIH1cblxuICBwcm9jZXNzQXV0b0NhbmNlbGxhdGlvbihcbiAgICBwYWNrYWdlSWRzOiBzdHJpbmdbXSxcbiAgICByZWZ1bmRPcHRpb24gPSAnb3JpZ2luYWxQYXltZW50TWV0aG9kJ1xuICApOiBPYnNlcnZhYmxlPElBdXRvQ2FuY2VsbGF0aW9uUHJvY2Vzc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLnJlc29sdmVFbmRwb2ludChcbiAgICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtLnByb2Nlc3NBdXRvQ2FuY2VsbGF0aW9uXG4gICAgKTtcblxuICAgIGNvbnN0IHVuaXF1ZVBhY2thZ2VJZHMgPSBbLi4ubmV3IFNldChwYWNrYWdlSWRzKV07IC8vIEVuc3VyZSB1bmlxdWUgcGFja2FnZSBJRHNcbiAgICBjb25zdCBwYXlsb2FkOiBJUHJvY2Vzc0NhbmNlbGxhdGlvblJlcXVlc3QgPSB7XG4gICAgICBib29raW5nSWQ6IGAke1xuICAgICAgICB0aGlzLmhvdGVsTWFuYWdlQm9va2luZ1NlcnZpY2Uuc2VsZWN0ZWRIb3RlbEJvb2tpbmcudmFsdWU/LmJvb2tpbmdJZCB8fFxuICAgICAgICAnJ1xuICAgICAgfWAsXG4gICAgICBwcm9kdWN0OiAnaG90ZWxzJyxcbiAgICAgIHBhY2thZ2VJZHM6IHVuaXF1ZVBhY2thZ2VJZHMsXG4gICAgICBwcmVmZXJyZWRQYXltZW50TWV0aG9kOiByZWZ1bmRPcHRpb25cbiAgICB9O1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRQYWNrYWdlSWRzLnNldCh1bmlxdWVQYWNrYWdlSWRzKTtcblxuXG4gICAgcmV0dXJuIHRoaXMuYXBpXG4gICAgICAucG9zdDxJQXV0b0NhbmNlbGxhdGlvblByb2Nlc3NSZXNwb25zZT4oe1xuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgLi4ucGF5bG9hZFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYWNrYWdlSWRzLnNldChbXSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgJ0ZhaWxlZCB0byBwcm9jZXNzIGNhbmNlbGxhdGlvbicpXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBwcm9jZXNzTm9uUmVmdW5kYWJsZUNhbmNlbGxhdGlvbihcbiAgICBwYWNrYWdlSWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50VXJsOiBzdHJpbmcsXG4gICAgbGFuZ3VhZ2UgPSAnZW4nXG4gICk6IE9ic2VydmFibGU8SUF1dG9DYW5jZWxsYXRpb25Qcm9jZXNzUmVzcG9uc2U+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMucmVzb2x2ZUVuZHBvaW50KFxuICAgICAgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkVuZHBvaW50c0VudW0ucHJvY2Vzc0F1dG9DYW5jZWxsYXRpb25cbiAgICApO1xuXG4gICAgY29uc3QgcGF5bG9hZDogSVByb2Nlc3NOb25SZWZ1bmRhYmxlQ2FuY2VsbGF0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGJvb2tpbmdJZDogYCR7XG4gICAgICAgIHRoaXMuaG90ZWxNYW5hZ2VCb29raW5nU2VydmljZS5zZWxlY3RlZEhvdGVsQm9va2luZy52YWx1ZT8uYm9va2luZ0lkIHx8XG4gICAgICAgICcnXG4gICAgICB9YCxcbiAgICAgIHByb2R1Y3Q6ICdob3RlbHMnLFxuICAgICAgcGFja2FnZUlkczogW3BhY2thZ2VJZF0sXG4gICAgICBwcmVmZXJyZWRQYXltZW50TWV0aG9kOiAnb3JpZ2luYWxQYXltZW50TWV0aG9kJyxcbiAgICAgIHByb2Nlc3NlZE1vZGU6ICdhdXRvJyxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgYXR0YWNobWVudFVybFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5hcGlcbiAgICAgIC5wb3N0PElBdXRvQ2FuY2VsbGF0aW9uUHJvY2Vzc1Jlc3BvbnNlPih7XG4gICAgICAgIGVuZHBvaW50LFxuICAgICAgICAuLi5wYXlsb2FkXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICdGYWlsZWQgdG8gcHJvY2VzcyBub24tcmVmdW5kYWJsZSBjYW5jZWxsYXRpb24nXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlTG9jYWxSZWZ1bmRTdW1tYXJ5KFxuICAgIHJvb21zOiBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJvb21bXVxuICApOiBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZFN1bW1hcnkge1xuICAgIGNvbnN0IHNlbGVjdGVkUm9vbXMgPSByb29tcy5maWx0ZXIoKHJvb20pID0+IHJvb20uaXNTZWxlY3RlZCk7XG4gICAgY29uc3QgdG90YWxQYWlkID0gcm9vbXMucmVkdWNlKChzdW0sIHJvb20pID0+IHN1bSArIHJvb20ucm9vbUFtb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxSZWZ1bmQgPSBzZWxlY3RlZFJvb21zLnJlZHVjZShcbiAgICAgIChzdW0sIHJvb20pID0+IHN1bSArIHJvb20ucmVmdW5kQW1vdW50LFxuICAgICAgMFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxQYWlkLFxuICAgICAgdG90YWxSZWZ1bmQsXG4gICAgICByb29tczogc2VsZWN0ZWRSb29tcy5tYXAoKHJvb20pID0+ICh7XG4gICAgICAgIC4uLnJvb20sXG4gICAgICAgIGN1cnJlbnRDYW5jZWxsYXRpb246IHRydWUsXG4gICAgICAgIGNhbmNlbGxhdGlvbkRhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkUGFja2FnZUlkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUGFja2FnZUlkcygpO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZFBhY2thZ2VJZHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWRQYWNrYWdlSWRzLnNldChbXSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVudHJ5U291cmNlRGV2aWNlQnJhbmQoKTogSUVudHJ5U291cmNlRGV2aWNlQnJhbmQge1xuICAgIHJldHVybiB7XG4gICAgICBlbnRyeVNvdXJjZTogdGhpcy5nZXRFbnRyeVNvdXJjZSgpLFxuICAgICAgZGV2aWNlOiB0aGlzLmdldERldmljZSgpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50cnlTb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZU15VHJpcHNWaWV3ZWRFbnRyeVNvdXJjZUZyb21RdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXZpY2UoKTogc3RyaW5nIHtcbiAgICBsZXQgZGV2aWNlID0gJ3dlYic7XG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ21vYmlsZUF1dGgnXSkge1xuICAgICAgZGV2aWNlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snZGV2aWNlJ10gfHwgJ21vYmlsZSc7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkZXZpY2VUeXBlJywgZGV2aWNlKTtcbiAgICByZXR1cm4gZGV2aWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBtZXNzYWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgLy8gY29uc29sZS5sb2cobWVzc2FnZSwgZXJyb3IpO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3I/Lm1lc3NhZ2UgfHwgbWVzc2FnZTtcbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKSk7XG4gIH1cbn1cbiJdfQ==
@@ -66,8 +66,15 @@ export function mapToHotelBookingData(apiResponse) {
66
66
  checkOutTime: hotelData.checkOutTime,
67
67
  // Pricing
68
68
  price: hotelData.customerPrice?.amountToBeCollected || hotelData.customerPrice?.amountWithMarkeup,
69
+ priceCurrency: hotelData.customerPrice?.currency,
69
70
  // Preserve raw data for accessing booking_info (notes, history, etc.)
70
71
  data: apiResponse,
72
+ currency: {
73
+ code: hotelData.customerPrice?.currency,
74
+ name: '',
75
+ symbol: '',
76
+ rate: 1
77
+ }
71
78
  };
72
79
  }
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvbW9kZWxzL2Jvb2tpbmcudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNENBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxXQUFnQjtJQUNwRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBVSxFQUFFO1FBQ3BFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUYsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlFLDZDQUE2QztJQUM3QyxNQUFNLFFBQVEsR0FBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRixFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUU7WUFDOUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUMsQ0FBQztRQUNILG9CQUFvQixFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsSUFBSSxFQUFFO1FBQzVELFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxJQUFJLEtBQUs7UUFDdkMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRTtRQUMxQyxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsWUFBWTtRQUNwRCwyQkFBMkIsRUFBRSxHQUFHLENBQUMsMkJBQTJCO1FBQzVELFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztRQUM1QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLFlBQVk7S0FDakQsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0wsb0JBQW9CO1FBQ3BCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUc7UUFDbkIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1FBQzlCLFVBQVUsRUFBRSxTQUFTLENBQUMsY0FBYztRQUVwQywyQkFBMkI7UUFDM0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzNCLE1BQU0sRUFBRSxTQUFTLENBQUMsUUFBUTtRQUMxQixJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQy9ELEVBQUUsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFFL0QsMkJBQTJCO1FBQzNCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLEtBQUssRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTTtRQUV4RCxXQUFXO1FBQ1gsY0FBYyxFQUFFLGNBQWM7UUFDOUIsV0FBVyxFQUFFLGNBQWM7UUFFM0IsUUFBUTtRQUNSLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztRQUNsQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7UUFFcEMsVUFBVTtRQUNWLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLG1CQUFtQixJQUFJLFNBQVMsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1FBRWpHLHNFQUFzRTtRQUN0RSxJQUFJLEVBQUUsV0FBVztLQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCb29raW5nUGFja2FnZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2ludGVyZmFjZXMvaS1hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RUeXBlID0gJ2ZsaWdodCcgfCAnaG90ZWwnO1xuXG5leHBvcnQgdHlwZSBCb29raW5nU3RhdHVzID0gJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBCb29raW5nUmVzcG9uc2Uge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBkYXRhOiBhbnk7XG4gIGVsYXBzZWRNczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIb3RlbEJvb2tpbmdEYXRhIHtcbiAgLy8gSG90ZWwgSW5mb3JtYXRpb25cbiAgaG90ZWxJZD86IHN0cmluZyB8IG51bWJlcjtcbiAgYm9va2luZ0lkPzogc3RyaW5nIHwgbnVtYmVyO1xuICBob3RlbE5hbWU/OiBzdHJpbmc7XG4gIGNvdmVySW1hZ2U/OiBzdHJpbmc7XG5cbiAgLy8gQ2hlY2staW4vQ2hlY2stb3V0IGRhdGVzXG4gIGRhdGVGcm9tPzogc3RyaW5nO1xuICBkYXRlVG8/OiBzdHJpbmc7XG4gIGZyb20/OiB7IF9pPzogc3RyaW5nIH07ICAvLyBBbHRlcm5hdGl2ZSBkYXRlIGZvcm1hdFxuICB0bz86IHsgX2k/OiBzdHJpbmcgfTsgICAgLy8gQWx0ZXJuYXRpdmUgZGF0ZSBmb3JtYXRcblxuICAvLyBSb29tL1BhY2thZ2UgSW5mb3JtYXRpb25cbiAgcGFja2FnZXM/OiBJQm9va2luZ1BhY2thZ2VbXTtcbiAgcm9vbXM/OiBudW1iZXI7XG5cbiAgLy8gRHVyYXRpb25cbiAgbnVtYmVyT2ZOaWdodHM/OiBudW1iZXI7XG4gIG5pZ2h0TnVtYmVyPzogbnVtYmVyO1xuXG4gIC8vIFRpbWVzXG4gIGNoZWNrSW5UaW1lPzogc3RyaW5nO1xuICBjaGVja091dFRpbWU/OiBzdHJpbmc7XG5cbiAgLy8gUHJpY2luZ1xuICBwcmljZT86IG51bWJlcjtcblxuICAvLyBQcmVzZXJ2ZSByYXcgZGF0YSBmb3IgYWNjZXNzaW5nIGJvb2tpbmdfaW5mbyAobm90ZXMsIGhpc3RvcnksIGV0Yy4pXG4gIGRhdGE/OiBhbnk7XG59XG5cbi8qKlxuICogTWFwcyByYXcgQVBJIHJlc3BvbnNlIHRvIElIb3RlbEJvb2tpbmdEYXRhIGludGVyZmFjZVxuICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBhY3R1YWwgQVBJIHJlc3BvbnNlIGZvcm1hdCBmcm9tIHRoZSBib29raW5nIGVuZHBvaW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0hvdGVsQm9va2luZ0RhdGEoYXBpUmVzcG9uc2U6IGFueSk6IElIb3RlbEJvb2tpbmdEYXRhIHwgbnVsbCB7XG4gIGlmICghYXBpUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRoZSBhY3R1YWwgQVBJIHN0cnVjdHVyZSBoYXMgaG90ZWwgaW5mbyBpbiBkYXRhLmhvdGVsWzBdXG4gIGNvbnN0IGRhdGEgPSBhcGlSZXNwb25zZS5kYXRhIHx8IGFwaVJlc3BvbnNlO1xuICBjb25zdCBob3RlbERhdGEgPSBkYXRhLmhvdGVsPy5bMF07XG5cbiAgaWYgKCFob3RlbERhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBudW1iZXIgb2YgbmlnaHRzIGZyb20gY2hlY2staW4gYW5kIGNoZWNrLW91dCBkYXRlc1xuICBjb25zdCBjYWxjdWxhdGVOaWdodHMgPSAoY2hlY2tJbjogc3RyaW5nLCBjaGVja091dDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBpZiAoIWNoZWNrSW4gfHwgIWNoZWNrT3V0KSByZXR1cm4gMDtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGNoZWNrSW4pO1xuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKGNoZWNrT3V0KTtcbiAgICBjb25zdCBkaWZmVGltZSA9IE1hdGguYWJzKGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoZGlmZlRpbWUgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICB9O1xuXG4gIGNvbnN0IG51bWJlck9mTmlnaHRzID0gY2FsY3VsYXRlTmlnaHRzKGhvdGVsRGF0YS5jaGVja0luLCBob3RlbERhdGEuY2hlY2tPdXQpO1xuXG4gIC8vIE1hcCByb29tUGFja2FnZXMgdG8gSUJvb2tpbmdQYWNrYWdlIGZvcm1hdFxuICBjb25zdCBwYWNrYWdlczogSUJvb2tpbmdQYWNrYWdlW10gPSAoaG90ZWxEYXRhLnJvb21QYWNrYWdlcyB8fCBbXSkubWFwKChwa2c6IGFueSkgPT4gKHtcbiAgICBpZDogcGtnLl9pZCxcbiAgICByb29tczogKHBrZy5yb29tcyB8fCBbXSkubWFwKChyb29tOiBhbnkpID0+ICh7XG4gICAgICByb29tSWQ6IHJvb20uX2lkLFxuICAgICAgcm9vbU5hbWU6IHJvb20ucm9vbU5hbWUgfHwgcm9vbS5jbGFzcyB8fCAnJyxcbiAgICAgIHJvb21UeXBlOiByb29tLnR5cGUgfHwgcm9vbS5jbGFzcyB8fCAnJyxcbiAgICAgIHJvb21WaWV3OiByb29tLnJvb21WaWV3IHx8IHJvb20udmlld1R5cGUgfHwgJycsXG4gICAgICByb29tQmFzaXM6IHJvb20uYmFzaXMgfHwgJycsXG4gICAgICBiZWRUeXBlOiByb29tLmJlZFR5cGUgfHwgJycsXG4gICAgICBhZHVsdHNOdW06IHJvb20uYWR1bHROdW0sXG4gICAgICBjaGlsZHJlbk51bTogcm9vbS5jaGlsZHJlbk51bSxcbiAgICAgIHBhc3NlbmdlcnM6IHJvb20ucGFzc2VuZ2VycyxcbiAgICB9KSksXG4gICAgY2FuY2VsbGF0aW9uUG9saWNpZXM6IHBrZy5wYXlMYXRlckNhbmNlbGxhdGlvblBvbGljaWVzIHx8IFtdLFxuICAgIGlzUmVmdW5kYWJsZTogcGtnLmlzUmVmdW5kYWJsZSB8fCBmYWxzZSxcbiAgICByZWZ1bmRhYmxlVW50aWw6IHBrZy5yZWZ1bmRhYmxlVW50aWwgfHwgJycsXG4gICAgcmVmdW5kYWJpbGl0eTogcGtnLnJlZnVuZGFiaWxpdHkgfHwgcGtnLmlzUmVmdW5kYWJsZSxcbiAgICBjYW5jZWxsYXRpb25Qb2xpY2llc1JlbWFya3M6IHBrZy5jYW5jZWxsYXRpb25Qb2xpY2llc1JlbWFya3MsXG4gICAgaXNDYW5jZWxsZWQ6IHBrZy5pc0NhbmNlbGxlZCxcbiAgICBzdXBwbGllcjogcGtnLnN1cHBsaWVyPy5uYW1lIHx8IHBrZy5zdXBwbGllck5hbWUsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIC8vIEhvdGVsIEluZm9ybWF0aW9uXG4gICAgaG90ZWxJZDogaG90ZWxEYXRhLmhvdGVsSWQsXG4gICAgYm9va2luZ0lkOiBkYXRhLl9pZCxcbiAgICBob3RlbE5hbWU6IGhvdGVsRGF0YS5ob3RlbE5hbWUsXG4gICAgY292ZXJJbWFnZTogaG90ZWxEYXRhLmhvdGVsTWFpbkltYWdlLFxuXG4gICAgLy8gQ2hlY2staW4vQ2hlY2stb3V0IGRhdGVzXG4gICAgZGF0ZUZyb206IGhvdGVsRGF0YS5jaGVja0luLFxuICAgIGRhdGVUbzogaG90ZWxEYXRhLmNoZWNrT3V0LFxuICAgIGZyb206IGhvdGVsRGF0YS5jaGVja0luID8geyBfaTogaG90ZWxEYXRhLmNoZWNrSW4gfSA6IHVuZGVmaW5lZCxcbiAgICB0bzogaG90ZWxEYXRhLmNoZWNrT3V0ID8geyBfaTogaG90ZWxEYXRhLmNoZWNrT3V0IH0gOiB1bmRlZmluZWQsXG5cbiAgICAvLyBSb29tL1BhY2thZ2UgSW5mb3JtYXRpb25cbiAgICBwYWNrYWdlczogcGFja2FnZXMsXG4gICAgcm9vbXM6IGhvdGVsRGF0YS5yb29tUGFja2FnZXM/Lmxlbmd0aCB8fCBwYWNrYWdlcy5sZW5ndGgsXG5cbiAgICAvLyBEdXJhdGlvblxuICAgIG51bWJlck9mTmlnaHRzOiBudW1iZXJPZk5pZ2h0cyxcbiAgICBuaWdodE51bWJlcjogbnVtYmVyT2ZOaWdodHMsXG5cbiAgICAvLyBUaW1lc1xuICAgIGNoZWNrSW5UaW1lOiBob3RlbERhdGEuY2hlY2tJblRpbWUsXG4gICAgY2hlY2tPdXRUaW1lOiBob3RlbERhdGEuY2hlY2tPdXRUaW1lLFxuXG4gICAgLy8gUHJpY2luZ1xuICAgIHByaWNlOiBob3RlbERhdGEuY3VzdG9tZXJQcmljZT8uYW1vdW50VG9CZUNvbGxlY3RlZCB8fCBob3RlbERhdGEuY3VzdG9tZXJQcmljZT8uYW1vdW50V2l0aE1hcmtldXAsXG5cbiAgICAvLyBQcmVzZXJ2ZSByYXcgZGF0YSBmb3IgYWNjZXNzaW5nIGJvb2tpbmdfaW5mbyAobm90ZXMsIGhpc3RvcnksIGV0Yy4pXG4gICAgZGF0YTogYXBpUmVzcG9uc2UsXG4gIH07XG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvbW9kZWxzL2Jvb2tpbmcudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0NBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxXQUFnQjtJQUNwRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBVSxFQUFFO1FBQ3BFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUYs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QUFFLFFBQVE7UUFFaEQsc0VBQXNFO1FBQ3RFLElBQUksRUFBRSxXQUFXO1FBRWpCLFFBQVEsRUFBRztZQUNULElBQUksRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLFFBQVE7WUFDdkMsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxDQUFDO1NBQ1I7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCb29raW5nUGFja2FnZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2ludGVyZmFjZXMvaS1hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RUeXBlID0gJ2ZsaWdodCcgfCAnaG90ZWwnO1xuXG5leHBvcnQgdHlwZSBCb29raW5nU3RhdHVzID0gJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBCb29raW5nUmVzcG9uc2Uge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBkYXRhOiBhbnk7XG4gIGVsYXBzZWRNczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIb3RlbEJvb2tpbmdEYXRhIHtcbiAgLy8gSG90ZWwgSW5mb3JtYXRpb25cbiAgaG90ZWxJZD86IHN0cmluZyB8IG51bWJlcjtcbiAgYm9va2luZ0lkPzogc3RyaW5nIHwgbnVtYmVyO1xuICBob3RlbE5hbWU/OiBzdHJpbmc7XG4gIGNvdmVySW1hZ2U/OiBzdHJpbmc7XG5cbiAgLy8gQ2hlY2staW4vQ2hlY2stb3V0IGRhdGVzXG4gIGRhdGVGcm9tPzogc3RyaW5nO1xuICBkYXRlVG8/OiBzdHJpbmc7XG4gIGZyb20/OiB7IF9pPzogc3RyaW5nIH07ICAvLyBBbHRlcm5hdGl2ZSBkYXRlIGZvcm1hdFxuICB0bz86IHsgX2k/OiBzdHJpbmcgfTsgICAgLy8gQWx0ZXJuYXRpdmUgZGF0ZSBmb3JtYXRcblxuICAvLyBSb29tL1BhY2thZ2UgSW5mb3JtYXRpb25cbiAgcGFja2FnZXM/OiBJQm9va2luZ1BhY2thZ2VbXTtcbiAgcm9vbXM/OiBudW1iZXI7XG5cbiAgLy8gRHVyYXRpb25cbiAgbnVtYmVyT2ZOaWdodHM/OiBudW1iZXI7XG4gIG5pZ2h0TnVtYmVyPzogbnVtYmVyO1xuXG4gIC8vIFRpbWVzXG4gIGNoZWNrSW5UaW1lPzogc3RyaW5nO1xuICBjaGVja091dFRpbWU/OiBzdHJpbmc7XG5cbiAgLy8gUHJpY2luZ1xuICBwcmljZT86IG51bWJlcjtcbiAgcHJpY2VDdXJyZW5jeT86IHN0cmluZztcblxuICAvLyBQcmVzZXJ2ZSByYXcgZGF0YSBmb3IgYWNjZXNzaW5nIGJvb2tpbmdfaW5mbyAobm90ZXMsIGhpc3RvcnksIGV0Yy4pXG4gIGRhdGE/OiBhbnk7XG5cbiAgY3VycmVuY3k/OmFueTtcbn1cblxuLyoqXG4gKiBNYXBzIHJhdyBBUEkgcmVzcG9uc2UgdG8gSUhvdGVsQm9va2luZ0RhdGEgaW50ZXJmYWNlXG4gKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGFjdHVhbCBBUEkgcmVzcG9uc2UgZm9ybWF0IGZyb20gdGhlIGJvb2tpbmcgZW5kcG9pbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvSG90ZWxCb29raW5nRGF0YShhcGlSZXNwb25zZTogYW55KTogSUhvdGVsQm9va2luZ0RhdGEgfCBudWxsIHtcbiAgaWYgKCFhcGlSZXNwb25zZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gVGhlIGFjdHVhbCBBUEkgc3RydWN0dXJlIGhhcyBob3RlbCBpbmZvIGluIGRhdGEuaG90ZWxbMF1cbiAgY29uc3QgZGF0YSA9IGFwaVJlc3BvbnNlLmRhdGEgfHwgYXBpUmVzcG9uc2U7XG4gIGNvbnN0IGhvdGVsRGF0YSA9IGRhdGEuaG90ZWw/LlswXTtcblxuICBpZiAoIWhvdGVsRGF0YSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBuaWdodHMgZnJvbSBjaGVjay1pbiBhbmQgY2hlY2stb3V0IGRhdGVzXG4gIGNvbnN0IGNhbGN1bGF0ZU5pZ2h0cyA9IChjaGVja0luOiBzdHJpbmcsIGNoZWNrT3V0OiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICAgIGlmICghY2hlY2tJbiB8fCAhY2hlY2tPdXQpIHJldHVybiAwO1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoY2hlY2tJbik7XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoY2hlY2tPdXQpO1xuICAgIGNvbnN0IGRpZmZUaW1lID0gTWF0aC5hYnMoZW5kLmdldFRpbWUoKSAtIHN0YXJ0LmdldFRpbWUoKSk7XG4gICAgcmV0dXJuIE1hdGguY2VpbChkaWZmVGltZSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gIH07XG5cbiAgY29uc3QgbnVtYmVyT2ZOaWdodHMgPSBjYWxjdWxhdGVOaWdodHMoaG90ZWxEYXRhLmNoZWNrSW4sIGhvdGVsRGF0YS5jaGVja091dCk7XG5cbiAgLy8gTWFwIHJvb21QYWNrYWdlcyB0byBJQm9va2luZ1BhY2thZ2UgZm9ybWF0XG4gIGNvbnN0IHBhY2thZ2VzOiBJQm9va2luZ1BhY2thZ2VbXSA9IChob3RlbERhdGEucm9vbVBhY2thZ2VzIHx8IFtdKS5tYXAoKHBrZzogYW55KSA9PiAoe1xuICAgIGlkOiBwa2cuX2lkLFxuICAgIHJvb21zOiAocGtnLnJvb21zIHx8IFtdKS5tYXAoKHJvb206IGFueSkgPT4gKHtcbiAgICAgIHJvb21JZDogcm9vbS5faWQsXG4gICAgICByb29tTmFtZTogcm9vbS5yb29tTmFtZSB8fCByb29tLmNsYXNzIHx8ICcnLFxuICAgICAgcm9vbVR5cGU6IHJvb20udHlwZSB8fCByb29tLmNsYXNzIHx8ICcnLFxuICAgICAgcm9vbVZpZXc6IHJvb20ucm9vbVZpZXcgfHwgcm9vbS52aWV3VHlwZSB8fCAnJyxcbiAgICAgIHJvb21CYXNpczogcm9vbS5iYXNpcyB8fCAnJyxcbiAgICAgIGJlZFR5cGU6IHJvb20uYmVkVHlwZSB8fCAnJyxcbiAgICAgIGFkdWx0c051bTogcm9vbS5hZHVsdE51bSxcbiAgICAgIGNoaWxkcmVuTnVtOiByb29tLmNoaWxkcmVuTnVtLFxuICAgICAgcGFzc2VuZ2Vyczogcm9vbS5wYXNzZW5nZXJzLFxuICAgIH0pKSxcbiAgICBjYW5jZWxsYXRpb25Qb2xpY2llczogcGtnLnBheUxhdGVyQ2FuY2VsbGF0aW9uUG9saWNpZXMgfHwgW10sXG4gICAgaXNSZWZ1bmRhYmxlOiBwa2cuaXNSZWZ1bmRhYmxlIHx8IGZhbHNlLFxuICAgIHJlZnVuZGFibGVVbnRpbDogcGtnLnJlZnVuZGFibGVVbnRpbCB8fCAnJyxcbiAgICByZWZ1bmRhYmlsaXR5OiBwa2cucmVmdW5kYWJpbGl0eSB8fCBwa2cuaXNSZWZ1bmRhYmxlLFxuICAgIGNhbmNlbGxhdGlvblBvbGljaWVzUmVtYXJrczogcGtnLmNhbmNlbGxhdGlvblBvbGljaWVzUmVtYXJrcyxcbiAgICBpc0NhbmNlbGxlZDogcGtnLmlzQ2FuY2VsbGVkLFxuICAgIHN1cHBsaWVyOiBwa2cuc3VwcGxpZXI/Lm5hbWUgfHwgcGtnLnN1cHBsaWVyTmFtZSxcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgLy8gSG90ZWwgSW5mb3JtYXRpb25cbiAgICBob3RlbElkOiBob3RlbERhdGEuaG90ZWxJZCxcbiAgICBib29raW5nSWQ6IGRhdGEuX2lkLFxuICAgIGhvdGVsTmFtZTogaG90ZWxEYXRhLmhvdGVsTmFtZSxcbiAgICBjb3ZlckltYWdlOiBob3RlbERhdGEuaG90ZWxNYWluSW1hZ2UsXG5cbiAgICAvLyBDaGVjay1pbi9DaGVjay1vdXQgZGF0ZXNcbiAgICBkYXRlRnJvbTogaG90ZWxEYXRhLmNoZWNrSW4sXG4gICAgZGF0ZVRvOiBob3RlbERhdGEuY2hlY2tPdXQsXG4gICAgZnJvbTogaG90ZWxEYXRhLmNoZWNrSW4gPyB7IF9pOiBob3RlbERhdGEuY2hlY2tJbiB9IDogdW5kZWZpbmVkLFxuICAgIHRvOiBob3RlbERhdGEuY2hlY2tPdXQgPyB7IF9pOiBob3RlbERhdGEuY2hlY2tPdXQgfSA6IHVuZGVmaW5lZCxcblxuICAgIC8vIFJvb20vUGFja2FnZSBJbmZvcm1hdGlvblxuICAgIHBhY2thZ2VzOiBwYWNrYWdlcyxcbiAgICByb29tczogaG90ZWxEYXRhLnJvb21QYWNrYWdlcz8ubGVuZ3RoIHx8IHBhY2thZ2VzLmxlbmd0aCxcblxuICAgIC8vIER1cmF0aW9uXG4gICAgbnVtYmVyT2ZOaWdodHM6IG51bWJlck9mTmlnaHRzLFxuICAgIG5pZ2h0TnVtYmVyOiBudW1iZXJPZk5pZ2h0cyxcblxuICAgIC8vIFRpbWVzXG4gICAgY2hlY2tJblRpbWU6IGhvdGVsRGF0YS5jaGVja0luVGltZSxcbiAgICBjaGVja091dFRpbWU6IGhvdGVsRGF0YS5jaGVja091dFRpbWUsXG5cbiAgICAvLyBQcmljaW5nXG4gICAgcHJpY2U6IGhvdGVsRGF0YS5jdXN0b21lclByaWNlPy5hbW91bnRUb0JlQ29sbGVjdGVkIHx8IGhvdGVsRGF0YS5jdXN0b21lclByaWNlPy5hbW91bnRXaXRoTWFya2V1cCxcbiAgICBwcmljZUN1cnJlbmN5OiBob3RlbERhdGEuY3VzdG9tZXJQcmljZT8uY3VycmVuY3ksXG5cbiAgICAvLyBQcmVzZXJ2ZSByYXcgZGF0YSBmb3IgYWNjZXNzaW5nIGJvb2tpbmdfaW5mbyAobm90ZXMsIGhpc3RvcnksIGV0Yy4pXG4gICAgZGF0YTogYXBpUmVzcG9uc2UsXG5cbiAgICBjdXJyZW5jeSA6IHtcbiAgICAgIGNvZGU6IGhvdGVsRGF0YS5jdXN0b21lclByaWNlPy5jdXJyZW5jeSxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgc3ltYm9sOiAnJyxcbiAgICAgIHJhdGU6IDFcbiAgICB9XG4gIH07XG59XG4iXX0=