valtech-components 4.0.71 → 4.0.73

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 (46) hide show
  1. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +2 -4
  2. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +2 -4
  3. package/esm2022/lib/components/molecules/comment/comment.component.mjs +2 -4
  4. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +2 -4
  5. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +2 -4
  6. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +2 -4
  7. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +2 -4
  8. package/esm2022/lib/components/molecules/font-size-selector/font-size-selector.component.mjs +2 -4
  9. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +2 -4
  10. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +2 -4
  11. package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +2 -4
  12. package/esm2022/lib/components/molecules/rating/rating.component.mjs +2 -4
  13. package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +2 -4
  14. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +2 -4
  15. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +14 -8
  16. package/esm2022/lib/components/organisms/api-key-create-modal/api-key-create-modal.component.mjs +3 -7
  17. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +3 -7
  18. package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +2 -4
  19. package/esm2022/lib/components/organisms/auth-cta/auth-cta.component.mjs +2 -4
  20. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +2 -4
  21. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +2 -4
  22. package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.component.mjs +2 -4
  23. package/esm2022/lib/components/organisms/field-list/field-list.component.mjs +2 -4
  24. package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +2 -4
  25. package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +3 -7
  26. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +3 -7
  27. package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +2 -4
  28. package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +2 -4
  29. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +2 -4
  30. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +4 -6
  31. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +2 -4
  32. package/esm2022/lib/components/organisms/preferences-view/preferences-view.component.mjs +2 -4
  33. package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +2 -4
  34. package/esm2022/lib/components/organisms/qr-scanner/qr-scanner.component.mjs +2 -4
  35. package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +2 -4
  36. package/esm2022/lib/components/organisms/settings-hub/settings-hub.component.mjs +3 -7
  37. package/esm2022/lib/components/organisms/share-profile-modal/share-profile-modal.component.mjs +2 -4
  38. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +2 -4
  39. package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.mjs +3 -7
  40. package/esm2022/lib/services/i18n/i18n.service.mjs +21 -1
  41. package/esm2022/lib/version.mjs +2 -2
  42. package/fesm2022/valtech-components.mjs +80 -142
  43. package/fesm2022/valtech-components.mjs.map +1 -1
  44. package/lib/services/i18n/i18n.service.d.ts +7 -0
  45. package/lib/version.d.ts +1 -1
  46. package/package.json +1 -1
@@ -247,9 +247,7 @@ export class NotificationsViewComponent {
247
247
  state: this._loadingMore() ? ComponentStates.WORKING : ComponentStates.ENABLED,
248
248
  }));
249
249
  const ns = this.ns;
250
- if (!this.i18n.hasNamespace(ns)) {
251
- this.i18n.registerContent(ns, NOTIFICATIONS_VIEW_I18N);
252
- }
250
+ this.i18n.registerDefaults(ns, NOTIFICATIONS_VIEW_I18N);
253
251
  this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
254
252
  // Re-aplicar header en cambio de idioma.
255
253
  effect(() => {
@@ -733,4 +731,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
733
731
  }], ctorParameters: () => [], propDecorators: { config: [{
734
732
  type: Input
735
733
  }] } });
736
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbm90aWZpY2F0aW9ucy12aWV3L25vdGlmaWNhdGlvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDcEYsT0FBTyxFQUF3QixvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUdyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFcEUsUUFBUSxDQUFDO0lBQ1AsWUFBWTtJQUNaLHNCQUFzQjtJQUN0QixpQkFBaUI7SUFDakIsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsVUFBVTtJQUNWLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsb0JBQW9CO0lBQ3BCLFdBQVc7SUFDWCxhQUFhO0NBQ2QsQ0FBQyxDQUFDO0FBRUgsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDMUMsTUFBTSxxQkFBcUIsR0FBRyw2QkFBNkIsQ0FBQztBQUM1RCxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQXFCNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBaVNILE1BQU0sT0FBTywwQkFBMEI7SUFxQ3JDLHNFQUFzRTtJQUN0RSxJQUFZLEVBQUU7UUFDWixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDN0MsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxJQUFZLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFxS0Q7UUFqTlEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RDLFdBQU0sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMzQyxVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakQsNEVBQTRFO1FBQzVFLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDbkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQVNsRCxtQkFBYyxHQUFHLFFBQVEsQ0FFaEMsR0FBRyxFQUFFO1lBQ0wsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQTRCLENBQUM7WUFDdEcsTUFBTSxNQUFNLEdBQTRCLEVBQUUsR0FBRyxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRixPQUFPO2dCQUNMLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxJQUFJLElBQUk7Z0JBQzdDLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLElBQUk7Z0JBQzNDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyx5QkFBeUIsSUFBSSxxQkFBcUI7Z0JBQ3BGLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLGlCQUFpQjtnQkFDeEQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksaUJBQWlCO2dCQUM5QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0I7Z0JBQzNDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7YUFDOUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBWWMsY0FBUyxHQUFHLE1BQU0sQ0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5Qzs7Ozs7V0FLRztRQUNNLGdCQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUV4Rjs7Ozs7Ozs7V0FRRztRQUNjLFlBQU8sR0FBRyx1QkFBdUIsQ0FDaEQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUN2RDtZQUNFLFFBQVEsRUFBRSxFQUFFO1lBQ1oseUVBQXlFO1lBQ3pFLCtEQUErRDtZQUMvRCxrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLHNFQUFzRTtZQUN0RSxxQ0FBcUM7WUFDckMsa0JBQWtCLEVBQUUsS0FBSztTQUMxQixDQUNGLENBQUM7UUFFRixnRkFBZ0Y7UUFDdkUsZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUVqQyxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFaEU7OztXQUdHO1FBQ00sY0FBUyxHQUFHLFFBQVEsQ0FBeUIsR0FBRyxFQUFFLENBQ3pELENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUN0RyxDQUFDO1FBQ08sWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFXLEdBQUcsUUFBUSxDQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDdEcsQ0FBQztRQUVGLG1EQUFtRDtRQUMxQyxXQUFNLEdBQUcsUUFBUSxDQUFzQixHQUFHLEVBQUU7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBNkM7Z0JBQ3hELEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxFQUFFO2FBQ1osQ0FBQztZQUNGLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQXdCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNQLEdBQUcsRUFBRSxXQUFXO29CQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDaEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2lCQUN6QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7UUFFTSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUV0RSxnRkFBZ0Y7UUFDdkUsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDakQsbUJBQWMsR0FBRyxRQUFRLENBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQzNCLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDLENBQUMsQ0FBQztRQUVKOzs7OztXQUtHO1FBQ00sZUFBVSxHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFO1lBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3RCLE9BQU8scUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDakM7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDL0IsS0FBSyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQy9EO2dCQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVIOzs7V0FHRztRQUNNLG9CQUFlLEdBQUcsUUFBUSxDQUFxQixHQUFHLEVBQUU7WUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPO2dCQUNMLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztnQkFDakMsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDMUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7aUJBQ3JDO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRU0sWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFN0MsdUJBQWtCLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4QixLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDdkQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU87U0FDNUUsQ0FBQyxDQUFDLENBQUM7UUFFSyx3QkFBbUIsR0FBRyxRQUFRLENBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdEUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztTQUMvRSxDQUFDLENBQUMsQ0FBQztRQUdGLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU1RCx5Q0FBeUM7UUFDekMsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsTUFBTTtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxxREFBcUQ7SUFDckQsOEVBQThFO0lBRTlFLGVBQWU7UUFDYixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7U0FDNUMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFVO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDOztZQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBd0I7UUFDN0IsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLENBQXVCO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQXlCLENBQUM7UUFDekQsSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QyxDQUFDO1lBQ0QseUVBQXlFO1lBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNWLEtBQUssVUFBVTtvQkFDYixPQUFPLDBCQUEwQixDQUFDO2dCQUNwQyxLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLFNBQVM7b0JBQ1osT0FBTyxvQkFBb0IsQ0FBQztnQkFDOUIsS0FBSyxTQUFTO29CQUNaLE9BQU8sMEJBQTBCLENBQUM7Z0JBQ3BDLEtBQUssVUFBVTtvQkFDYixPQUFPLGVBQWUsQ0FBQztnQkFDekIsS0FBSyxRQUFRO29CQUNYLE9BQU8sYUFBYSxDQUFDO2dCQUN2QixLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLFNBQVM7b0JBQ1osT0FBTyxnQkFBZ0IsQ0FBQztnQkFDMUIsS0FBSyxVQUFVO29CQUNiLE9BQU8sdUJBQXVCLENBQUM7Z0JBQ2pDO29CQUNFLE9BQU8sdUJBQXVCLENBQUM7WUFDbkMsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBdUI7UUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUF1QjtRQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsUUFBUSxDQUFDLENBQXVCO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBeUI7UUFDaEMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLDBCQUEwQixDQUFDO1FBQzlDLE9BQU8sbUJBQW1CLEtBQUssR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBdUI7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRCxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxpRkFBaUY7SUFDakYsaUJBQWlCLENBQUMsQ0FBdUI7UUFDdkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLFVBQVU7SUFDViw4RUFBOEU7SUFFOUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUF1QjtRQUNsQyxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxFQUFFLG9CQUFvQjtnQkFDN0IsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRTthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxNQUFNO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUN0QixPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxXQUFXLEVBQUUsZ0JBQWdCO2dCQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQUUsT0FBTztRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1Qix5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLG1CQUFtQjtJQUNuQiw4RUFBOEU7SUFFdEUsUUFBUSxDQUFDLENBQXVCLEVBQUUsR0FBUztRQUNqRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDekIsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzlHLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzdFLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sRUFBRSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBcGJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGdIQXBSM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0lULHNuRUF4SUMsT0FBTywySkFDUCxnQkFBZ0IsMkVBQ2hCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLHVCQUF1QixtRkFDdkIsbUJBQW1COzs0RkFzUlYsMEJBQTBCO2tCQWhTdEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSVQ7d0RBdUtRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGFybU91dGxpbmUsXG4gIGNoYXRib3hFbGxpcHNlc091dGxpbmUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICBjaGVja21hcmtEb25lT3V0bGluZSxcbiAgY2xvdWRPZmZsaW5lT3V0bGluZSxcbiAgY29nT3V0bGluZSxcbiAgZG9jdW1lbnRUZXh0T3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc09mZk91dGxpbmUsXG4gIG5vdGlmaWNhdGlvbnNPdXRsaW5lLFxuICBvcGVuT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgaW50ZXJwcmV0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvaW50ZXJwcmV0LWVycm9yJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRG9jdW1lbnQsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlyZWJhc2Uvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VSZWZyZXNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlZnJlc2hhYmxlLXN0cmVhbS9yZWZyZXNoYWJsZS1zdHJlYW0nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBOT1RJRklDQVRJT05TX1ZJRVdfSTE4TiB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy12aWV3LmkxOG4nO1xuXG5hZGRJY29ucyh7XG4gIGFsYXJtT3V0bGluZSxcbiAgY2hhdGJveEVsbGlwc2VzT3V0bGluZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gIGNoZWNrbWFya0RvbmVPdXRsaW5lLFxuICBjbG91ZE9mZmxpbmVPdXRsaW5lLFxuICBjb2dPdXRsaW5lLFxuICBkb2N1bWVudFRleHRPdXRsaW5lLFxuICBub3RpZmljYXRpb25zT2ZmT3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIG9wZW5PdXRsaW5lLFxuICBwZXJzb25PdXRsaW5lLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ05vdGlmaWNhdGlvbnMnO1xuY29uc3QgREVGQVVMVF9TRVRUSU5HU19QQVRIID0gJy9hcHAvc2V0dGluZ3Mvbm90aWZpY2F0aW9ucyc7XG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDEwO1xuY29uc3QgREVGQVVMVF9NQVhfTE9BRCA9IDUwO1xuXG50eXBlIEdyb3VwS2V5ID0gJ3RvZGF5JyB8ICd0aGlzTW9udGgnIHwgJ2VhcmxpZXInO1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uR3JvdXAge1xuICBrZXk6IEdyb3VwS2V5O1xuICBsYWJlbDogc3RyaW5nO1xuICBpdGVtczogTm90aWZpY2F0aW9uRG9jdW1lbnRbXTtcbn1cblxudHlwZSBSZXNvbHZlZEljb24gPVxuICB8IHsga2luZDogJ2lvbmljb24nOyBuYW1lOiBzdHJpbmc7IGNvbG9yPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdpbWFnZSc7IHNyYzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdhdmF0YXInOyBzcmM6IHN0cmluZyB9O1xuXG5pbnRlcmZhY2UgSWNvbkhpbnQge1xuICB0eXBlPzogJ2lvbmljb24nIHwgJ2ltYWdlJyB8ICdhdmF0YXInO1xuICB2YWx1ZT86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYHZhbC1ub3RpZmljYXRpb25zLXZpZXdgIOKAlCBpbmJveCBkZSBub3RpZmljYWNpb25lcyBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkb1xuICogKG9yZ2FuaXNtKS4gUHJvbW92aWRvIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKlxuICogU2VwYXJhZG8gZGUgYC9hcHAvc2V0dGluZ3Mvbm90aWZpY2F0aW9uc2AgKHF1ZSBjb250cm9sYSBwZXJtaXNvIEZDTSArIG1hc3RlclxuICogdG9nZ2xlKS4gQXF1w60gZWwgdXNlciBsZWUvYWJyZS9tYXJjYS1sZcOtZGFzIHN1cyBtZW5zYWplcy5cbiAqXG4gKiAtICoqU3RyZWFtIHJlYWwtdGltZSoqIHbDrWEgYE5vdGlmaWNhdGlvbnNTZXJ2aWNlLmdldEFsbChtYXhMb2FkKWAgZW52dWVsdG8gZW5cbiAqICAgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYCAoZ2F0ZWFkbyBwb3IgYGZpcmViYXNlQXV0aFJlYWR5YCwgcmV0cnkgY29ydG8sXG4gKiAgIGBmaXJzdEVtaXRUaW1lb3V0TXM6IDE1MDAwYCkuIEVzdGFkb3M6IGxvYWRpbmcgKHNrZWxldG9uKSwgZXJyb3JcbiAqICAgKGB2YWwtZW1wdHktc3RhdGVgICsgcmVpbnRlbnRhciksIGVtcHR5IChgdmFsLWVtcHR5LXN0YXRlYCArIENUQSksIGRhdGFcbiAqICAgKGxpc3RhIGFncnVwYWRhIEhveSAvIEVzdGUgbWVzIC8gQW50ZXJpb3JlcykuXG4gKiAtICoqQWJyaXIqKiB1bmEgbm90aWYg4oaSIGBOb3RpZmljYXRpb25BY3Rpb25TZXJ2aWNlLm9wZW4oKWAgKG1hcmtSZWFkICtcbiAqICAgc3dpdGNoLW9yZyArIG5hdmVnYXIvaGFuZG9mZiBjcm9zcy1hcHApLiBIb29rIGBvbk5vdGlmaWNhdGlvbk9wZW5gIG9wY2lvbmFsLlxuICogLSAqKk1hcmNhciB0b2RhcyBjb21vIGxlw61kYXMqKiAoZ2F0ZWFkbyBwb3IgYGVuYWJsZU1hcmtBbGxgKS5cbiAqIC0gKipDVEEgcHVzaC1vZmYqKiBjdWFuZG8gZWwgcGVybWlzbyBkZWwgbmF2ZWdhZG9yIG5vIGVzdMOhIGNvbmNlZGlkbyAoZ2F0ZWFkb1xuICogICBwb3IgYHNob3dQdXNoT2ZmQ3RhYCk7IG5hdmVnYSBhIGBzZXR0aW5nc05vdGlmaWNhdGlvbnNQYXRoYC5cbiAqIC0gKipQYWdpbmFjacOzbiBzb2Z0Kiog4oCUIHNsaWNlIGxvY2FsIChgcGFnZVNpemVgLCArYHBhZ2VTaXplYCBwb3IgY2xpY2spIHNvYnJlIGVsXG4gKiAgIGNhY2hlIGRlbCBzdHJlYW07IGVsIHRvcGUgZGUgZmV0Y2ggZXMgYG1heExvYWRgLlxuICogLSAqKmkxOG4gYXV0by1yZWdpc3RyYWRvKiogZXMvZW4gYmFqbyBgaTE4bk5hbWVzcGFjZWAgKGRlZmF1bHQgYE5vdGlmaWNhdGlvbnNgKS5cbiAqXG4gKiBOTyByZW5kZXJpemEgaW9uLWNvbnRlbnQg4oCUIHZpdmUgZGVudHJvIGRlIHZhbC1wYWdlLXdyYXBwZXIuIGBSb3V0ZXJgIHlcbiAqIGBBY3RpdmF0ZWRSb3V0ZWAgc2UgaW55ZWN0YW4gYHsgb3B0aW9uYWw6IHRydWUgfWAg4oaSIGZ1bmNpb25hIHNpbiByb3V0ZXJcbiAqIChlbWJlYmlkYSAvIFN0b3J5Ym9vaykuIEVsIGZvcndhcmQtY29tcGF0IGljb24gcmVzb2x2ZXIgbGVlIGBub3RpZi5wYXlsb2FkLmljb25gXG4gKiBzaSBleGlzdGUgKGB7IHR5cGUsIHZhbHVlLCBjb2xvcj8gfWApLCBjYWUgYSB1biBtYXBhIHBvciBgbm90aWYudHlwZWAsIGx1ZWdvIGFcbiAqIGBub3RpZmljYXRpb25zLW91dGxpbmVgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbm90aWZpY2F0aW9ucy12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkljb24sXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTa2VsZXRvbkxheW91dENvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHBhZ2VUaXRsZSgpIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICBjb250ZW50OiBwYWdlRGVzY3JpcHRpb24oKSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChzaG93TWFya0FsbCgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwibWFya0FsbEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25NYXJrQWxsKClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dQdXNoT2ZmQ3RhICYmICFwdXNoRW5hYmxlZCgpKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibm90aWYtY3RhXCI+XG4gICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwibm90aWYtY3RhX19pY29uXCIgbmFtZT1cIm5vdGlmaWNhdGlvbnMtb2ZmLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi1jdGFfX2JvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGN0YVRpdGxlKCksXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjdGFIaW50KCksXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiY3RhQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbkdvVG9TZXR0aW5ncygpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2xpc3QnLCByb3dzOiA2IH1cIiAvPlxuICAgICAgfSBAZWxzZSBpZiAoZXJyb3JTdGF0ZSgpKSB7XG4gICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVycm9yU3RhdGUoKSFcIiAvPlxuICAgICAgfSBAZWxzZSBpZiAoYWxsTm90aWZzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVtcHR5U3RhdGVQcm9wcygpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChncm91cCBvZiBncm91cHMoKTsgdHJhY2sgZ3JvdXAua2V5KSB7XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJncm91cFwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBncm91cC5sYWJlbCxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibm90aWYtbGlzdFwiPlxuICAgICAgICAgICAgICBAZm9yIChuIG9mIGdyb3VwLml0ZW1zOyB0cmFjayBuLmlkKSB7XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibm90aWZcIiBbY2xhc3Mubm90aWYtLXVucmVhZF09XCIhbi5pc1JlYWRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZl9faWNvblwiPlxuICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChyZXNvbHZlSWNvbihuKS5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdpb25pY29uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImlvbmljb25OYW1lKG4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImlvbkNvbG9yKGlvbmljb25Db2xvcihuKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdpbWFnZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVNyYyhuKVwiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdhdmF0YXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibm90aWZfX2F2YXRhclwiIFtzcmNdPVwiaW1hZ2VTcmMobilcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZl9faGVhZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogbi50aXRsZSB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZfX3RpbWVcIj57eyByZWxhdGl2ZVRpbWUobikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG4uYm9keSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibm90aWZfX3RleHRcIiBbY2xhc3Mubm90aWZfX3RleHQtLWNsYW1wZWRdPVwiIWlzRXhwYW5kZWQobi5pZCkgJiYgaXNMb25nKG4uYm9keSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG4uYm9keSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTG9uZyhuLmJvZHkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm90aWZfX2V4cGFuZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKG4uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzRXhwYW5kZWQobi5pZCkgPyBzZWVMZXNzKCkgOiBzZWVNb3JlKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dDcm9zc0FwcEJhZGdlKG4pOyBhcyBhcHBOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RpZl9fYXBwXCI+e3sgYXBwTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKG4uYWN0aW9uUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnMgcm93LWFjdGlvbnMtLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cIm9wZW5CdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uT3BlbihuKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChoYXNNb3JlKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnMgcm93LWFjdGlvbnMtLWNlbnRlclwiPlxuICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImxvYWRNb3JlQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbkxvYWRNb3JlKClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zLS1jZW50ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tZW5kIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubm90aWYtY3RhIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAvKiBTdGVwLSogbm8gaW52aWVydGUgZW4gZGFyaywgdGV4dG8gbGlnaHQgKyBiZyBsaWdodCA9IGludmlzaWJsZS5cbiAgICAgICAgICAgbGlnaHQvbGlnaHQtc2hhZGUgc2kgZmxpcHBhbiBjb24gZWwgcGFsZXR0ZSBkYXJrIGRlIElvbmljLiAqL1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbGlnaHQtc2hhZGUsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgfVxuICAgICAgLm5vdGlmLWN0YV9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi1jdGFfX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cblxuICAgICAgLmdyb3VwIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmdyb3VwICsgLmdyb3VwIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuXG4gICAgICAubm90aWYtbGlzdCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMTJweCAwIDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDRweCAxZnI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTIwbXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi0tdW5yZWFkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDQpKTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9faWNvbiB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICAubm90aWZfX2ljb24gaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICB9XG4gICAgICAubm90aWZfX2ljb24gaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICB9XG4gICAgICAubm90aWZfX2F2YXRhciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLm5vdGlmX19ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9faGVhZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fdGltZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fdGV4dCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICMxYTFhMWEpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RleHQtLWNsYW1wZWQge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19leHBhbmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fYXBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC40cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgbm90aWZzID0gaW5qZWN0KE5vdGlmaWNhdGlvbnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhY3Rpb24gPSBpbmplY3QoTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcGFnZVJlZnJlc2ggPSBpbmplY3QoUGFnZVJlZnJlc2hTZXJ2aWNlKTtcbiAgLy8gYEFjdGl2YXRlZFJvdXRlYCBvcGNpb25hbCDihpIgbGEgdmlzdGEgZnVuY2lvbmEgZW1iZWJpZGEgLyBlbiBTdG9yeWJvb2sgc2luXG4gIC8vIHJvdXRlciAoc29sbyBsbyB1c2EgcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnIGNvbW8gZmFsbGJhY2spLiBMYVxuICAvLyBuYXZlZ2FjacOzbiB2YSBwb3IgYE5hdmlnYXRpb25TZXJ2aWNlYCAod3JhcHBlciBvcGNpb25hbCBzb2JyZSBgUm91dGVyYCkuXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYG5vdGlmaWNhdGlvbnNDb25maWdgIChwb2JsYWRvIHBvciBgcHJvdmlkZVZhbHRlY2hOb3RpZmljYXRpb25zUm91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8XG4gICAgUmVxdWlyZWQ8T21pdDxOb3RpZmljYXRpb25zVmlld0NvbmZpZywgJ29uTm90aWZpY2F0aW9uT3Blbic+PiAmIFBpY2s8Tm90aWZpY2F0aW9uc1ZpZXdDb25maWcsICdvbk5vdGlmaWNhdGlvbk9wZW4nPlxuICA+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsnbm90aWZpY2F0aW9uc0NvbmZpZyddID8/IHt9KSBhcyBOb3RpZmljYXRpb25zVmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1B1c2hPZmZDdGE6IG1lcmdlZC5zaG93UHVzaE9mZkN0YSA/PyB0cnVlLFxuICAgICAgZW5hYmxlTWFya0FsbDogbWVyZ2VkLmVuYWJsZU1hcmtBbGwgPz8gdHJ1ZSxcbiAgICAgIHNldHRpbmdzTm90aWZpY2F0aW9uc1BhdGg6IG1lcmdlZC5zZXR0aW5nc05vdGlmaWNhdGlvbnNQYXRoID8/IERFRkFVTFRfU0VUVElOR1NfUEFUSCxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgcGFnZVNpemU6IG1lcmdlZC5wYWdlU2l6ZSA/PyBERUZBVUxUX1BBR0VfU0laRSxcbiAgICAgIG1heExvYWQ6IG1lcmdlZC5tYXhMb2FkID8/IERFRkFVTFRfTUFYX0xPQUQsXG4gICAgICBvbk5vdGlmaWNhdGlvbk9wZW46IG1lcmdlZC5vbk5vdGlmaWNhdGlvbk9wZW4sXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIHJlc3VlbHRvIChjYXB0dXJhZG8gcGFyYSBsbGFtYWRhcyBuby1yZWFjdGl2YXMpLiAqL1xuICBwcml2YXRlIGdldCBucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuaTE4bk5hbWVzcGFjZTtcbiAgfVxuXG4gIC8qKiBQYXNvIGRlIHBhZ2luYWNpw7NuIHNvZnQgKHJldmVsYSArTiBwb3IgXCJjYXJnYXIgbcOhc1wiKS4gKi9cbiAgcHJpdmF0ZSBnZXQgcGFnZVN0ZXAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnBhZ2VTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBzaWduYWw8U2V0PHN0cmluZz4+KG5ldyBTZXQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VTaXplID0gc2lnbmFsKHRoaXMucmVzb2x2ZWRDb25maWcoKS5wYWdlU2l6ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1bGtCdXN5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZ01vcmUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQdXNoIGFjdGl2YWRvID0gcGVybWlzbyBkZWwgbmF2ZWdhZG9yIGVuIGBncmFudGVkYC4gU2kgTk8gZXN0w6EgYWN0aXZhZG8sXG4gICAqIGVsIHVzZXIgcHVlZGUgbGVlciBlbCBpbmJveCAoRmlyZXN0b3JlKSBwZXJvIE5PIHJlY2liaXLDoSBwdXNoIGVuIHN1XG4gICAqIGRpc3Bvc2l0aXZvIOKGkiBtb3N0cmFtb3MgdW5hIGNhcmQgcXVlIGxvIGludml0YSBhIGlyIGEgY29uZmlndXJhY2nDs24uXG4gICAqIFNlIGV2YWzDumEgZW4gY2FkYSBtb250YWplIGRlIGxhIHZpc3RhLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVzaEVuYWJsZWQgPSBzaWduYWwodGhpcy5hdXRoLmdldE5vdGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSgpID09PSAnZ3JhbnRlZCcpO1xuXG4gIC8qKlxuICAgKiBTdHJlYW0gZmlyZXN0b3JlIHJlYWwtdGltZSB2w61hIGVsIGhlbHBlciBlc3TDoW5kYXIgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYFxuICAgKiAobW9kbyByZWFsLXRpbWU6IGZhY3RvcnkgZGV2dWVsdmUgdW4gbGlzdGVuZXIgdml2byBgbm90aWZzLmdldEFsbChtYXhMb2FkKWApLlxuICAgKlxuICAgKiBFbCBoZWxwZXIgZ2F0ZWEgbGEgcHJpbWVyYSBzdXNjcmlwY2nDs24gcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWAsIGFwbGljYSB1blxuICAgKiBgcmV0cnlgIGNvcnRvIGNvbiBiYWNrb2ZmIHksIHRyYXMgYWdvdGFyIHJlaW50ZW50b3MsIGVtaXRlIGVsIGZhbGxiYWNrIChgW11gKVxuICAgKiB5IG1hcmNhIGBlcnJvcmAg4oCUIGVzdGFkbyBkZSBlcnJvciBlbiBVSSwgbm8gc2tlbGV0b24gaW5maW5pdG8uIGByZWxvYWQoKWBcbiAgICogcmUtc3VzY3JpYmUgZWwgc3RyZWFtIGNvbXBsZXRvIChsbyB1c2EgZWwgcHVsbC10by1yZWZyZXNoKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbSA9IGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtPE5vdGlmaWNhdGlvbkRvY3VtZW50W10+KFxuICAgICgpID0+IHRoaXMubm90aWZzLmdldEFsbCh0aGlzLnJlc29sdmVkQ29uZmlnKCkubWF4TG9hZCksXG4gICAge1xuICAgICAgZmFsbGJhY2s6IFtdLFxuICAgICAgLy8gYG5vdGlmcy5nZXRBbGwoKWAgWUEgZ2F0ZWEgaW50ZXJuYW1lbnRlIHBvciBgZmlyZWJhc2VBdXRoUmVhZHlgLiBTaSBlbFxuICAgICAgLy8gc3RyZWFtIHRhbWJpw6luIGdhdGVhcmEsIHNlcsOtYW4gRE9TIGVzcGVyYXMgZGUgYXV0aCBhcGlsYWRhcy5cbiAgICAgIGdhdGVPbkZpcmViYXNlQXV0aDogZmFsc2UsXG4gICAgICAvLyBDb2xkIHN0YXJ0IGRlIFBXQSBlbiBpT1MgcHVlZGUgcGFzYXIgZGUgOHMgZW4gcmVkZXMgbGVudGFzOyBjb24gMTVzXG4gICAgICAvLyBldml0YW1vcyBlbCBmYWxzbyBlc3RhZG8gZGUgZXJyb3IuXG4gICAgICBmaXJzdEVtaXRUaW1lb3V0TXM6IDE1MDAwLFxuICAgIH1cbiAgKTtcblxuICAvKiogVHJ1ZSBzaSBlbCBzdHJlYW0gZmFsbMOzIHRyYXMgYWdvdGFyIHJlaW50ZW50b3Mg4oaSIG11ZXN0cmEgZXN0YWRvIGRlIGVycm9yLiAqL1xuICByZWFkb25seSBzdHJlYW1FcnJvciA9IHRoaXMuX3N0cmVhbS5lcnJvcjtcblxuICByZWFkb25seSBsb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RyZWFtLmRhdGEoKSA9PT0gbnVsbCk7XG5cbiAgLyoqXG4gICAqIE5vdGlmcyByZWFsZXMgbW9zdHJhZGFzLiBGaWx0cmFtb3MgZG9jcyBzaW4gdMOtdHVsbyBZIHNpbiBib2R5IOKAlCBzb24gcnVpZG9cbiAgICogKHTDrXBpY2FtZW50ZSBzZW50aW5lbC9zeXN0ZW0gd3JpdGVzIHByZS1zY2hlbWEgY29uIHRpdGxlL2JvZHkgb3BjaW9uYWxlcykuXG4gICAqL1xuICByZWFkb25seSBhbGxOb3RpZnMgPSBjb21wdXRlZDxOb3RpZmljYXRpb25Eb2N1bWVudFtdPigoKSA9PlxuICAgICh0aGlzLl9zdHJlYW0uZGF0YSgpID8/IFtdKS5maWx0ZXIobiA9PiAhIShuLnRpdGxlICYmIG4udGl0bGUudHJpbSgpKSB8fCAhIShuLmJvZHkgJiYgbi5ib2R5LnRyaW0oKSkpXG4gICk7XG4gIHJlYWRvbmx5IGhhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbE5vdGlmcygpLmxlbmd0aCA+IHRoaXMuX3BhZ2VTaXplKCkpO1xuICByZWFkb25seSBzaG93TWFya0FsbCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5lbmFibGVNYXJrQWxsICYmICF0aGlzLmxvYWRpbmcoKSAmJiB0aGlzLmFsbE5vdGlmcygpLnNvbWUobiA9PiAhbi5pc1JlYWQpXG4gICk7XG5cbiAgLyoqIFN1Yi1jb25qdW50byBwYWdpbmFkbywgYWdydXBhZG8gcG9yIHBlcsOtb2RvLiAqL1xuICByZWFkb25seSBncm91cHMgPSBjb21wdXRlZDxOb3RpZmljYXRpb25Hcm91cFtdPigoKSA9PiB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmFsbE5vdGlmcygpLnNsaWNlKDAsIHRoaXMuX3BhZ2VTaXplKCkpO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgYnVja2V0czogUmVjb3JkPEdyb3VwS2V5LCBOb3RpZmljYXRpb25Eb2N1bWVudFtdPiA9IHtcbiAgICAgIHRvZGF5OiBbXSxcbiAgICAgIHRoaXNNb250aDogW10sXG4gICAgICBlYXJsaWVyOiBbXSxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgbiBvZiBpdGVtcykge1xuICAgICAgYnVja2V0c1t0aGlzLmJ1Y2tldE9mKG4sIG5vdyldLnB1c2gobik7XG4gICAgfVxuICAgIGNvbnN0IG91dDogTm90aWZpY2F0aW9uR3JvdXBbXSA9IFtdO1xuICAgIGlmIChidWNrZXRzLnRvZGF5Lmxlbmd0aCkge1xuICAgICAgb3V0LnB1c2goeyBrZXk6ICd0b2RheScsIGxhYmVsOiB0aGlzLnR0KCdncm91cFRvZGF5JyksIGl0ZW1zOiBidWNrZXRzLnRvZGF5IH0pO1xuICAgIH1cbiAgICBpZiAoYnVja2V0cy50aGlzTW9udGgubGVuZ3RoKSB7XG4gICAgICBvdXQucHVzaCh7XG4gICAgICAgIGtleTogJ3RoaXNNb250aCcsXG4gICAgICAgIGxhYmVsOiB0aGlzLnR0KCdncm91cFRoaXNNb250aCcpLFxuICAgICAgICBpdGVtczogYnVja2V0cy50aGlzTW9udGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGJ1Y2tldHMuZWFybGllci5sZW5ndGgpIHtcbiAgICAgIG91dC5wdXNoKHsga2V5OiAnZWFybGllcicsIGxhYmVsOiB0aGlzLnR0KCdncm91cEVhcmxpZXInKSwgaXRlbXM6IGJ1Y2tldHMuZWFybGllciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGFnZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZVRpdGxlJykpO1xuICByZWFkb25seSBwYWdlRGVzY3JpcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlRGVzY3JpcHRpb24nKSk7XG5cbiAgLy8gQ1RBIFwiYWN0aXZhIGxhcyBub3RpZmljYWNpb25lcyBwdXNoXCIg4oCUIHZpc2libGUgY3VhbmRvIHB1c2hFbmFibGVkKCkgZXMgZmFsc2UuXG4gIHJlYWRvbmx5IGN0YVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncHVzaE9mZlRpdGxlJykpO1xuICByZWFkb25seSBjdGFIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncHVzaE9mZkhpbnQnKSk7XG4gIHJlYWRvbmx5IGN0YUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgncHVzaE9mZkN0YScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gIH0pKTtcblxuICAvKipcbiAgICogRXN0YWRvIGRlIGVycm9yIGRlIGNhcmdhOiBjb252aWVydGUgZWwgZXJyb3IgZGVsIHN0cmVhbSBlblxuICAgKiBgRW1wdHlTdGF0ZU1ldGFkYXRhYCB2aWEgZWwgaGVscGVyIGNhbsOzbmljbyBgY3JlYXRlRXJyb3JTdGF0ZVByb3BzYC5cbiAgICogRWwgaGVscGVyIGRlY2lkZSB2YXJpYW50ZSAoYG9mZmxpbmVgIHZzIGBlcnJvcmApIHBvciBgaXNOZXR3b3JrYC5cbiAgICogTnVsbCBjdWFuZG8gZWwgc3RyZWFtIG5vIGhhIGZhbGxhZG8uXG4gICAqL1xuICByZWFkb25seSBlcnJvclN0YXRlID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhIHwgbnVsbD4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgZXJyID0gdGhpcy5zdHJlYW1FcnJvcigpO1xuICAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlRXJyb3JTdGF0ZVByb3BzKGVyciwge1xuICAgICAgdGl0bGU6IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZVRpdGxlJyksXG4gICAgICAgIGVycm9yOiB0aGlzLnR0KCdsb2FkRXJyb3JUaXRsZScpLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVIaW50JyksXG4gICAgICAgIGVycm9yOiBpbnRlcnByZXRFcnJvcihlcnIpLm1lc3NhZ2UgfHwgdGhpcy50dCgnbG9hZEVycm9ySGludCcpLFxuICAgICAgfSxcbiAgICAgIHJldHJ5TGFiZWw6IHRoaXMudHQoJ3JldHJ5Q3RhJyksXG4gICAgICBvblJldHJ5OiAoKSA9PiB0aGlzLl9zdHJlYW0ucmVsb2FkKCksXG4gICAgICByZXRyeWluZzogdGhpcy5sb2FkaW5nKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFc3RhZG8gdmFjw61vIChsaXN0YSByZWFsID0gMCBub3RpZmljYWNpb25lcywgc2luIGVycm9yIGRlIGNhcmdhKS5cbiAgICogU2UgY29uc3RydXllIG1hbnVhbG1lbnRlIGNvbiBgdmFyaWFudDogJ2VtcHR5J2Ag4oCUIHNpbiBoZWxwZXIgZGUgZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBlbXB0eVN0YXRlUHJvcHMgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICB2YXJpYW50OiAnZW1wdHknLFxuICAgICAgaWNvbjogJ25vdGlmaWNhdGlvbnMtb2ZmLW91dGxpbmUnLFxuICAgICAgdGl0bGU6IHRoaXMudHQoJ2VtcHR5JyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgnZW1wdHlIaW50JyksXG4gICAgICBhY3Rpb246IHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHQoJ2VtcHR5Q3RhJyksXG4gICAgICAgIGhhbmRsZXI6ICgpID0+IHRoaXMub25Hb1RvU2V0dGluZ3MoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2VlTW9yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3NlZU1vcmUnKSk7XG4gIHJlYWRvbmx5IHNlZUxlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZWVMZXNzJykpO1xuXG4gIHJlYWRvbmx5IG1hcmtBbGxCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ21hcmtBbGwnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIGljb246IHsgbmFtZTogJ2NoZWNrbWFyay1kb25lLW91dGxpbmUnLCBzbG90OiAnc3RhcnQnIH0sXG4gICAgc3RhdGU6IHRoaXMuX2J1bGtCdXN5KCkgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgbG9hZE1vcmVCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2xvYWRNb3JlJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnY2xlYXInLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy5fbG9hZGluZ01vcmUoKSA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKG5zKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChucywgTk9USUZJQ0FUSU9OU19WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcblxuICAgIC8vIFJlLWFwbGljYXIgaGVhZGVyIGVuIGNhbWJpbyBkZSBpZGlvbWEuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgICAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCB0aGlzLm5zLCB7IHdpdGhNZW51OiB0cnVlIH0pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgZWwgcHVsbC10by1yZWZyZXNoIGVzdMOhbmRhci4gVXNhbW9zIGBuZ09uSW5pdGAvYG5nT25EZXN0cm95YFxuICAgKiAoTk8gYGlvblZpZXdXaWxsRW50ZXJgKSBwb3JxdWUgYHZhbC1wYWdlLXdyYXBwZXJgIHVzYSBgPHJvdXRlci1vdXRsZXQ+YFxuICAgKiBwbGFubyDigJQgbG9zIGhvb2tzIGBpb25WaWV3KmAgc29sbyBkaXNwYXJhbiBkZW50cm8gZGUgYDxpb24tcm91dGVyLW91dGxldD5gLlxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlUmVmcmVzaC5yZWdpc3RlcigoKSA9PiB0aGlzLnJlbG9hZCgpKTtcbiAgfVxuXG4gIC8qKiBRdWl0YSBlbCBoYW5kbGVyIGFsIGRlc3RydWlyIGxhIHZpc3RhIOKAlCBlbCByZWZyZXNoZXIgZGVzYXBhcmVjZS4gKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlUmVmcmVzaC51bnJlZ2lzdGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCBtYW51YWw6IHJlLXN1c2NyaWJlIGVsIHN0cmVhbSBGaXJlc3RvcmUgKGxpc3RlbmVyIG51ZXZvKSB2w61hIGVsXG4gICAqIGhlbHBlci4gUmVzdWVsdmUgdHJhcyB1biBtYXJnZW4gYnJldmUg4oCUIGVsIHN0cmVhbSBlcyByZWFsLXRpbWUgeSByZS1lbWl0ZVxuICAgKiBlbiBtaWxpc2VndW5kb3M7IGVsIGRlbGF5IHPDs2xvIG1hbnRpZW5lIGVsIHNwaW5uZXIgdmlzaWJsZSBsbyBqdXN0by5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3N0cmVhbS5yZWxvYWQoKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgNzAwKSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUGVyLWl0ZW0gaGVscGVycyAocHVyb3Mg4oCUIHVzYWJsZXMgZGVzZGUgdGVtcGxhdGUpLlxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBvcGVuQnV0dG9uUHJvcHMoKTogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiB0aGlzLnR0KCdvcGVuJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgZmlsbDogJ2NsZWFyJyxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgaWNvbjogeyBuYW1lOiAnb3Blbi1vdXRsaW5lJywgc2xvdDogJ2VuZCcgfSxcbiAgICB9O1xuICB9XG5cbiAgaXNFeHBhbmRlZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkKCkuaGFzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZUV4cGFuZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IG5ldyBTZXQodGhpcy5fZXhwYW5kZWQoKSk7XG4gICAgaWYgKG5leHQuaGFzKGlkKSkgbmV4dC5kZWxldGUoaWQpO1xuICAgIGVsc2UgbmV4dC5hZGQoaWQpO1xuICAgIHRoaXMuX2V4cGFuZGVkLnNldChuZXh0KTtcbiAgfVxuXG4gIGlzTG9uZyhib2R5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIWJvZHkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYm9keS5sZW5ndGggPiAxMTAgfHwgYm9keS5pbmNsdWRlcygnXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogSWNvbiByZXNvbHZlciBjb24gb3JkZW4gZGUgZmFsbGJhY2s6XG4gICAqIDEuIG5vdGlmLnBheWxvYWQuaWNvbiAoZm9yd2FyZC1jb21wYXQsIHNpbiBicmVha2luZyBjaGFuZ2UgZW4gc2NoZW1hKVxuICAgKiAyLiBtYXBhIHBvciBub3RpZi50eXBlXG4gICAqIDMuIGRlZmF1bHQgbm90aWZpY2F0aW9ucy1vdXRsaW5lXG4gICAqL1xuICByZXNvbHZlSWNvbihuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IFJlc29sdmVkSWNvbiB7XG4gICAgY29uc3QgaGludCA9IG4ucGF5bG9hZD8uWydpY29uJ10gYXMgSWNvbkhpbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGhpbnQ/LnZhbHVlKSB7XG4gICAgICBpZiAoaGludC50eXBlID09PSAnaW1hZ2UnIHx8IGhpbnQudHlwZSA9PT0gJ2F2YXRhcicpIHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogaGludC50eXBlLCBzcmM6IGhpbnQudmFsdWUgfTtcbiAgICAgIH1cbiAgICAgIC8vIElnbm9yYW1vcyBoaW50LmNvbG9yIOKAlCB0b2RvcyBsb3MgaWNvbm9zIHZhbiBlbiBkYXJrIHBvciBjb252ZW5jacOzbiBVWC5cbiAgICAgIHJldHVybiB7IGtpbmQ6ICdpb25pY29uJywgbmFtZTogaGludC52YWx1ZSwgY29sb3I6ICdkYXJrJyB9O1xuICAgIH1cbiAgICBjb25zdCB0ID0gbi50eXBlO1xuICAgIGNvbnN0IG5hbWUgPSAoKCkgPT4ge1xuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgJ2FwcHJvdmFsJzpcbiAgICAgICAgICByZXR1cm4gJ2NoZWNrbWFyay1jaXJjbGUtb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ2NoYXQnOlxuICAgICAgICBjYXNlICdjaGF0Ym90JzpcbiAgICAgICAgICByZXR1cm4gJ2NoYXRidWJibGUtb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgIHJldHVybiAnY2hhdGJveC1lbGxpcHNlcy1vdXRsaW5lJztcbiAgICAgICAgY2FzZSAncmVtaW5kZXInOlxuICAgICAgICAgIHJldHVybiAnYWxhcm0tb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ3N5c3RlbSc6XG4gICAgICAgICAgcmV0dXJuICdjb2ctb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICBjYXNlICdtZW50aW9uJzpcbiAgICAgICAgICByZXR1cm4gJ3BlcnNvbi1vdXRsaW5lJztcbiAgICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQtdGV4dC1vdXRsaW5lJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ25vdGlmaWNhdGlvbnMtb3V0bGluZSc7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICByZXR1cm4geyBraW5kOiAnaW9uaWNvbicsIG5hbWUsIGNvbG9yOiAnZGFyaycgfTtcbiAgfVxuXG4gIGlvbmljb25OYW1lKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCByID0gdGhpcy5yZXNvbHZlSWNvbihuKTtcbiAgICByZXR1cm4gci5raW5kID09PSAnaW9uaWNvbicgPyByLm5hbWUgOiAnJztcbiAgfVxuXG4gIGlvbmljb25Db2xvcihuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzb2x2ZUljb24obik7XG4gICAgcmV0dXJuIHIua2luZCA9PT0gJ2lvbmljb24nID8gci5jb2xvciA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGltYWdlU3JjKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCByID0gdGhpcy5yZXNvbHZlSWNvbihuKTtcbiAgICByZXR1cm4gci5raW5kID09PSAnaW1hZ2UnIHx8IHIua2luZCA9PT0gJ2F2YXRhcicgPyByLnNyYyA6ICcnO1xuICB9XG5cbiAgaW9uQ29sb3IodG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dG9rZW59KWA7XG4gIH1cblxuICByZWxhdGl2ZVRpbWUobjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGQgPSBuLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBuLmNyZWF0ZWRBdCA6IG51bGw7XG4gICAgaWYgKCFkKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZGlmZk1zID0gRGF0ZS5ub3coKSAtIGQuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG1pbiA9IE1hdGguZmxvb3IoZGlmZk1zIC8gNjAwMDApO1xuICAgIGlmIChtaW4gPCAxKSByZXR1cm4gdGhpcy50dCgndGltZU5vdycpO1xuICAgIGlmIChtaW4gPCA2MCkgcmV0dXJuIHRoaXMudHQoJ3RpbWVNaW51dGVzJykucmVwbGFjZSgne259JywgU3RyaW5nKG1pbikpO1xuICAgIGNvbnN0IGggPSBNYXRoLmZsb29yKG1pbiAvIDYwKTtcbiAgICBpZiAoaCA8IDI0KSByZXR1cm4gdGhpcy50dCgndGltZUhvdXJzJykucmVwbGFjZSgne259JywgU3RyaW5nKGgpKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihoIC8gMjQpO1xuICAgIHJldHVybiB0aGlzLnR0KCd0aW1lRGF5cycpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhkYXlzKSk7XG4gIH1cblxuICAvKiogRGV2dWVsdmUgbGFiZWwgXCJEZXNkZSB7YXBwTmFtZX1cIiBzaSBsYSBub3RpZiB2aWVuZSBkZSBvdHJhIGFwcCwgc2lubyBudWxsLiAqL1xuICBzaG93Q3Jvc3NBcHBCYWRnZShuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRBcHAgPSAnc2hvd2Nhc2UnO1xuICAgIGlmICghbi5hcHBJZCB8fCBuLmFwcElkID09PSBjdXJyZW50QXBwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy50dCgnY3Jvc3NBcHAnKS5yZXBsYWNlKCd7YXBwfScsIG4uYXBwSWQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEFjdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgYXN5bmMgb25PcGVuKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uLm9wZW4obik7XG4gICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Ob3RpZmljYXRpb25PcGVuPy4obiwgcmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ25vdGlmaWNhdGlvbnMub3BlbicsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnb3BlbkVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uTWFya0FsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fYnVsa0J1c3koKSkgcmV0dXJuO1xuICAgIHRoaXMuX2J1bGtCdXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5ub3RpZnMubWFya0FsbEFzUmVhZCgpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnbWFya2VkQWxsU3VjY2VzcycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdub3RpZmljYXRpb25zLm1hcmtBbGwnLFxuICAgICAgICBmYWxsYmFja0tleTogJ21hcmtlZEFsbEVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9idWxrQnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9hZE1vcmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvYWRpbmdNb3JlKCkpIHJldHVybjtcbiAgICB0aGlzLl9sb2FkaW5nTW9yZS5zZXQodHJ1ZSk7XG4gICAgLy8gU2xpY2UgdmllbmUgZGVsIGNhY2hlIGxvY2FsIOKAlCBubyBoYXkgZmV0Y2ggcmVhbCwgcGVybyB1biBicmV2ZSBzcGlubmVyXG4gICAgLy8gY29uZmlybWEgYWwgdXNlciBxdWUgZWwgY2xpY2sgcmVnaXN0csOzIHkgc3Vhdml6YSBsYSBhcGFyaWNpw7NuIGRlIGl0ZW1zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fcGFnZVNpemUudXBkYXRlKG4gPT4gbiArIHRoaXMucGFnZVN0ZXApO1xuICAgICAgdGhpcy5fbG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgb25Hb1RvU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVCeVVybCh0aGlzLnJlc29sdmVkQ29uZmlnKCkuc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gR3JvdXBpbmcgaGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGJ1Y2tldE9mKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50LCBub3c6IERhdGUpOiBHcm91cEtleSB7XG4gICAgY29uc3QgZCA9IG4uY3JlYXRlZEF0IGluc3RhbmNlb2YgRGF0ZSA/IG4uY3JlYXRlZEF0IDogbnVsbDtcbiAgICBpZiAoIWQpIHJldHVybiAnZWFybGllcic7XG4gICAgaWYgKGQuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiYgZC5nZXRNb250aCgpID09PSBub3cuZ2V0TW9udGgoKSAmJiBkLmdldERhdGUoKSA9PT0gbm93LmdldERhdGUoKSkge1xuICAgICAgcmV0dXJuICd0b2RheSc7XG4gICAgfVxuICAgIGlmIChkLmdldEZ1bGxZZWFyKCkgPT09IG5vdy5nZXRGdWxsWWVhcigpICYmIGQuZ2V0TW9udGgoKSA9PT0gbm93LmdldE1vbnRoKCkpIHtcbiAgICAgIHJldHVybiAndGhpc01vbnRoJztcbiAgICB9XG4gICAgcmV0dXJuICdlYXJsaWVyJztcbiAgfVxuXG4gIHByaXZhdGUgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG59XG4iXX0=
734
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbm90aWZpY2F0aW9ucy12aWV3L25vdGlmaWNhdGlvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0s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UjNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdJVCxzbkVBeElDLE9BQU8sMkpBQ1AsZ0JBQWdCLDJFQUNoQixjQUFjLHlFQUNkLGFBQWEsd0VBQ2IsZUFBZSwwR0FDZix1QkFBdUIsbUZBQ3ZCLG1CQUFtQjs7NEZBc1JWLDBCQUEwQjtrQkFoU3RDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsdUJBQXVCO3dCQUN2QixtQkFBbUI7cUJBQ3BCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0lUO3dEQXVLUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWxhcm1PdXRsaW5lLFxuICBjaGF0Ym94RWxsaXBzZXNPdXRsaW5lLFxuICBjaGF0YnViYmxlT3V0bGluZSxcbiAgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSxcbiAgY2hlY2ttYXJrRG9uZU91dGxpbmUsXG4gIGNsb3VkT2ZmbGluZU91dGxpbmUsXG4gIGNvZ091dGxpbmUsXG4gIGRvY3VtZW50VGV4dE91dGxpbmUsXG4gIG5vdGlmaWNhdGlvbnNPZmZPdXRsaW5lLFxuICBub3RpZmljYXRpb25zT3V0bGluZSxcbiAgb3Blbk91dGxpbmUsXG4gIHBlcnNvbk91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUVycm9yU3RhdGVQcm9wcyB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS9mYWN0b3J5JztcbmltcG9ydCB7IFNrZWxldG9uTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2tlbGV0b24tbGF5b3V0L3NrZWxldG9uLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25BY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9ub3RpZmljYXRpb24tYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IGludGVycHJldEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL2ludGVycHJldC1lcnJvcic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkRvY3VtZW50LCBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpcmViYXNlL25vdGlmaWNhdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBQYWdlUmVmcmVzaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgY3JlYXRlUmVmcmVzaGFibGVTdHJlYW0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZWZyZXNoYWJsZS1zdHJlYW0vcmVmcmVzaGFibGUtc3RyZWFtJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTk9USUZJQ0FUSU9OU19WSUVXX0kxOE4gfSBmcm9tICcuL25vdGlmaWNhdGlvbnMtdmlldy5pMThuJztcblxuYWRkSWNvbnMoe1xuICBhbGFybU91dGxpbmUsXG4gIGNoYXRib3hFbGxpcHNlc091dGxpbmUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICBjaGVja21hcmtEb25lT3V0bGluZSxcbiAgY2xvdWRPZmZsaW5lT3V0bGluZSxcbiAgY29nT3V0bGluZSxcbiAgZG9jdW1lbnRUZXh0T3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc09mZk91dGxpbmUsXG4gIG5vdGlmaWNhdGlvbnNPdXRsaW5lLFxuICBvcGVuT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbn0pO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdOb3RpZmljYXRpb25zJztcbmNvbnN0IERFRkFVTFRfU0VUVElOR1NfUEFUSCA9ICcvYXBwL3NldHRpbmdzL25vdGlmaWNhdGlvbnMnO1xuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAxMDtcbmNvbnN0IERFRkFVTFRfTUFYX0xPQUQgPSA1MDtcblxudHlwZSBHcm91cEtleSA9ICd0b2RheScgfCAndGhpc01vbnRoJyB8ICdlYXJsaWVyJztcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkdyb3VwIHtcbiAga2V5OiBHcm91cEtleTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaXRlbXM6IE5vdGlmaWNhdGlvbkRvY3VtZW50W107XG59XG5cbnR5cGUgUmVzb2x2ZWRJY29uID1cbiAgfCB7IGtpbmQ6ICdpb25pY29uJzsgbmFtZTogc3RyaW5nOyBjb2xvcj86IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnaW1hZ2UnOyBzcmM6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnYXZhdGFyJzsgc3JjOiBzdHJpbmcgfTtcblxuaW50ZXJmYWNlIEljb25IaW50IHtcbiAgdHlwZT86ICdpb25pY29uJyB8ICdpbWFnZScgfCAnYXZhdGFyJztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGB2YWwtbm90aWZpY2F0aW9ucy12aWV3YCDigJQgaW5ib3ggZGUgbm90aWZpY2FjaW9uZXMgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZG9cbiAqIChvcmdhbmlzbSkuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIFNlcGFyYWRvIGRlIGAvYXBwL3NldHRpbmdzL25vdGlmaWNhdGlvbnNgIChxdWUgY29udHJvbGEgcGVybWlzbyBGQ00gKyBtYXN0ZXJcbiAqIHRvZ2dsZSkuIEFxdcOtIGVsIHVzZXIgbGVlL2FicmUvbWFyY2EtbGXDrWRhcyBzdXMgbWVuc2FqZXMuXG4gKlxuICogLSAqKlN0cmVhbSByZWFsLXRpbWUqKiB2w61hIGBOb3RpZmljYXRpb25zU2VydmljZS5nZXRBbGwobWF4TG9hZClgIGVudnVlbHRvIGVuXG4gKiAgIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWAgKGdhdGVhZG8gcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWAsIHJldHJ5IGNvcnRvLFxuICogICBgZmlyc3RFbWl0VGltZW91dE1zOiAxNTAwMGApLiBFc3RhZG9zOiBsb2FkaW5nIChza2VsZXRvbiksIGVycm9yXG4gKiAgIChgdmFsLWVtcHR5LXN0YXRlYCArIHJlaW50ZW50YXIpLCBlbXB0eSAoYHZhbC1lbXB0eS1zdGF0ZWAgKyBDVEEpLCBkYXRhXG4gKiAgIChsaXN0YSBhZ3J1cGFkYSBIb3kgLyBFc3RlIG1lcyAvIEFudGVyaW9yZXMpLlxuICogLSAqKkFicmlyKiogdW5hIG5vdGlmIOKGkiBgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZS5vcGVuKClgIChtYXJrUmVhZCArXG4gKiAgIHN3aXRjaC1vcmcgKyBuYXZlZ2FyL2hhbmRvZmYgY3Jvc3MtYXBwKS4gSG9vayBgb25Ob3RpZmljYXRpb25PcGVuYCBvcGNpb25hbC5cbiAqIC0gKipNYXJjYXIgdG9kYXMgY29tbyBsZcOtZGFzKiogKGdhdGVhZG8gcG9yIGBlbmFibGVNYXJrQWxsYCkuXG4gKiAtICoqQ1RBIHB1c2gtb2ZmKiogY3VhbmRvIGVsIHBlcm1pc28gZGVsIG5hdmVnYWRvciBubyBlc3TDoSBjb25jZWRpZG8gKGdhdGVhZG9cbiAqICAgcG9yIGBzaG93UHVzaE9mZkN0YWApOyBuYXZlZ2EgYSBgc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aGAuXG4gKiAtICoqUGFnaW5hY2nDs24gc29mdCoqIOKAlCBzbGljZSBsb2NhbCAoYHBhZ2VTaXplYCwgK2BwYWdlU2l6ZWAgcG9yIGNsaWNrKSBzb2JyZSBlbFxuICogICBjYWNoZSBkZWwgc3RyZWFtOyBlbCB0b3BlIGRlIGZldGNoIGVzIGBtYXhMb2FkYC5cbiAqIC0gKippMThuIGF1dG8tcmVnaXN0cmFkbyoqIGVzL2VuIGJham8gYGkxOG5OYW1lc3BhY2VgIChkZWZhdWx0IGBOb3RpZmljYXRpb25zYCkuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgUm91dGVyYCB5XG4gKiBgQWN0aXZhdGVkUm91dGVgIHNlIGlueWVjdGFuIGB7IG9wdGlvbmFsOiB0cnVlIH1gIOKGkiBmdW5jaW9uYSBzaW4gcm91dGVyXG4gKiAoZW1iZWJpZGEgLyBTdG9yeWJvb2spLiBFbCBmb3J3YXJkLWNvbXBhdCBpY29uIHJlc29sdmVyIGxlZSBgbm90aWYucGF5bG9hZC5pY29uYFxuICogc2kgZXhpc3RlIChgeyB0eXBlLCB2YWx1ZSwgY29sb3I/IH1gKSwgY2FlIGEgdW4gbWFwYSBwb3IgYG5vdGlmLnR5cGVgLCBsdWVnbyBhXG4gKiBgbm90aWZpY2F0aW9ucy1vdXRsaW5lYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW5vdGlmaWNhdGlvbnMtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoc2hvd01hcmtBbGwoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cIm1hcmtBbGxCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uTWFya0FsbCgpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UHVzaE9mZkN0YSAmJiAhcHVzaEVuYWJsZWQoKSkge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm5vdGlmLWN0YVwiPlxuICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cIm5vdGlmLWN0YV9faWNvblwiIG5hbWU9XCJub3RpZmljYXRpb25zLW9mZi1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWYtY3RhX19ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjdGFUaXRsZSgpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgY29udGVudDogY3RhSGludCgpLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImN0YUJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25Hb1RvU2V0dGluZ3MoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogNiB9XCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGVycm9yU3RhdGUoKSkge1xuICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlcnJvclN0YXRlKCkhXCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGFsbE5vdGlmcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlbXB0eVN0YXRlUHJvcHMoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGZvciAoZ3JvdXAgb2YgZ3JvdXBzKCk7IHRyYWNrIGdyb3VwLmtleSkge1xuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogZ3JvdXAubGFiZWwsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5vdGlmLWxpc3RcIj5cbiAgICAgICAgICAgICAgQGZvciAobiBvZiBncm91cC5pdGVtczsgdHJhY2sgbi5pZCkge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5vdGlmXCIgW2NsYXNzLm5vdGlmLS11bnJlYWRdPVwiIW4uaXNSZWFkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZfX2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAocmVzb2x2ZUljb24obikua2luZCkge1xuICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW9uaWNvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpb25pY29uTmFtZShuKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJpb25Db2xvcihpb25pY29uQ29sb3IobikpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VTcmMobilcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYXZhdGFyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm5vdGlmX19hdmF0YXJcIiBbc3JjXT1cImltYWdlU3JjKG4pXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZl9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZfX2hlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG4udGl0bGUgfHwgJ+KAlCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGlmX190aW1lXCI+e3sgcmVsYXRpdmVUaW1lKG4pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChuLmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5vdGlmX190ZXh0XCIgW2NsYXNzLm5vdGlmX190ZXh0LS1jbGFtcGVkXT1cIiFpc0V4cGFuZGVkKG4uaWQpICYmIGlzTG9uZyhuLmJvZHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBuLmJvZHkgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xvbmcobi5ib2R5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vdGlmX19leHBhbmRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChuLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkKG4uaWQpID8gc2VlTGVzcygpIDogc2VlTW9yZSgpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93Q3Jvc3NBcHBCYWRnZShuKTsgYXMgYXBwTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZfX2FwcFwiPnt7IGFwcE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChuLmFjdGlvblJvdXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zIHJvdy1hY3Rpb25zLS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJvcGVuQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk9wZW4obilcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoaGFzTW9yZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zIHJvdy1hY3Rpb25zLS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJsb2FkTW9yZUJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25Mb2FkTW9yZSgpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAucGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tY2VudGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMtLWVuZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm5vdGlmLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgLyogU3RlcC0qIG5vIGludmllcnRlIGVuIGRhcmssIHRleHRvIGxpZ2h0ICsgYmcgbGlnaHQgPSBpbnZpc2libGUuXG4gICAgICAgICAgIGxpZ2h0L2xpZ2h0LXNoYWRlIHNpIGZsaXBwYW4gY29uIGVsIHBhbGV0dGUgZGFyayBkZSBJb25pYy4gKi9cbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXNoYWRlLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi1jdGFfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG4gICAgICAubm90aWYtY3RhX19ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG5cbiAgICAgIC5ncm91cCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICAgIH1cbiAgICAgIC5ncm91cCArIC5ncm91cCB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cblxuICAgICAgLm5vdGlmLWxpc3Qge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDEycHggMCAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAubm90aWYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQ0cHggMWZyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDEyMG1zIGVhc2U7XG4gICAgICB9XG4gICAgICAubm90aWYtLXVucmVhZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjA0KSk7XG4gICAgICB9XG4gICAgICAubm90aWZfX2ljb24ge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19pY29uIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuICAgICAgLm5vdGlmX19pY29uIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19hdmF0YXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5ub3RpZl9fYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAubm90aWZfX2hlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RpbWUge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RleHQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgfVxuICAgICAgLm5vdGlmX190ZXh0LS1jbGFtcGVkIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fZXhwYW5kIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgICAubm90aWZfX2FwcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG5vdGlmcyA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgYWN0aW9uID0gaW5qZWN0KE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHBhZ2VSZWZyZXNoID0gaW5qZWN0KFBhZ2VSZWZyZXNoU2VydmljZSk7XG4gIC8vIGBBY3RpdmF0ZWRSb3V0ZWAgb3BjaW9uYWwg4oaSIGxhIHZpc3RhIGZ1bmNpb25hIGVtYmViaWRhIC8gZW4gU3Rvcnlib29rIHNpblxuICAvLyByb3V0ZXIgKHNvbG8gbG8gdXNhIHBhcmEgbGVlciBlbCByb3V0ZSBkYXRhIGRlIGNvbmZpZyBjb21vIGZhbGxiYWNrKS4gTGFcbiAgLy8gbmF2ZWdhY2nDs24gdmEgcG9yIGBOYXZpZ2F0aW9uU2VydmljZWAgKHdyYXBwZXIgb3BjaW9uYWwgc29icmUgYFJvdXRlcmApLlxuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBub3RpZmljYXRpb25zQ29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoTm90aWZpY2F0aW9uc1JvdXRlc2ApLlxuICAgKiBgcmVzb2x2ZWRDb25maWdgIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzIOKAlCBgQElucHV0YCBnYW5hIHNvYnJlIHJvdXRlIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBOb3RpZmljYXRpb25zVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8Tm90aWZpY2F0aW9uc1ZpZXdDb25maWcsICdvbk5vdGlmaWNhdGlvbk9wZW4nPj4gJiBQaWNrPE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnLCAnb25Ob3RpZmljYXRpb25PcGVuJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ25vdGlmaWNhdGlvbnNDb25maWcnXSA/PyB7fSkgYXMgTm90aWZpY2F0aW9uc1ZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBOb3RpZmljYXRpb25zVmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dQdXNoT2ZmQ3RhOiBtZXJnZWQuc2hvd1B1c2hPZmZDdGEgPz8gdHJ1ZSxcbiAgICAgIGVuYWJsZU1hcmtBbGw6IG1lcmdlZC5lbmFibGVNYXJrQWxsID8/IHRydWUsXG4gICAgICBzZXR0aW5nc05vdGlmaWNhdGlvbnNQYXRoOiBtZXJnZWQuc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aCA/PyBERUZBVUxUX1NFVFRJTkdTX1BBVEgsXG4gICAgICBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAgIHBhZ2VTaXplOiBtZXJnZWQucGFnZVNpemUgPz8gREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgICBtYXhMb2FkOiBtZXJnZWQubWF4TG9hZCA/PyBERUZBVUxUX01BWF9MT0FELFxuICAgICAgb25Ob3RpZmljYXRpb25PcGVuOiBtZXJnZWQub25Ob3RpZmljYXRpb25PcGVuLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICAvKiogUGFzbyBkZSBwYWdpbmFjacOzbiBzb2Z0IChyZXZlbGEgK04gcG9yIFwiY2FyZ2FyIG3DoXNcIikuICovXG4gIHByaXZhdGUgZ2V0IHBhZ2VTdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5wYWdlU2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cGFuZGVkID0gc2lnbmFsPFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlU2l6ZSA9IHNpZ25hbCh0aGlzLnJlc29sdmVkQ29uZmlnKCkucGFnZVNpemUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9idWxrQnVzeSA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmdNb3JlID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogUHVzaCBhY3RpdmFkbyA9IHBlcm1pc28gZGVsIG5hdmVnYWRvciBlbiBgZ3JhbnRlZGAuIFNpIE5PIGVzdMOhIGFjdGl2YWRvLFxuICAgKiBlbCB1c2VyIHB1ZWRlIGxlZXIgZWwgaW5ib3ggKEZpcmVzdG9yZSkgcGVybyBOTyByZWNpYmlyw6EgcHVzaCBlbiBzdVxuICAgKiBkaXNwb3NpdGl2byDihpIgbW9zdHJhbW9zIHVuYSBjYXJkIHF1ZSBsbyBpbnZpdGEgYSBpciBhIGNvbmZpZ3VyYWNpw7NuLlxuICAgKiBTZSBldmFsw7phIGVuIGNhZGEgbW9udGFqZSBkZSBsYSB2aXN0YS5cbiAgICovXG4gIHJlYWRvbmx5IHB1c2hFbmFibGVkID0gc2lnbmFsKHRoaXMuYXV0aC5nZXROb3RpZmljYXRpb25QZXJtaXNzaW9uU3RhdGUoKSA9PT0gJ2dyYW50ZWQnKTtcblxuICAvKipcbiAgICogU3RyZWFtIGZpcmVzdG9yZSByZWFsLXRpbWUgdsOtYSBlbCBoZWxwZXIgZXN0w6FuZGFyIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWBcbiAgICogKG1vZG8gcmVhbC10aW1lOiBmYWN0b3J5IGRldnVlbHZlIHVuIGxpc3RlbmVyIHZpdm8gYG5vdGlmcy5nZXRBbGwobWF4TG9hZClgKS5cbiAgICpcbiAgICogRWwgaGVscGVyIGdhdGVhIGxhIHByaW1lcmEgc3VzY3JpcGNpw7NuIHBvciBgZmlyZWJhc2VBdXRoUmVhZHlgLCBhcGxpY2EgdW5cbiAgICogYHJldHJ5YCBjb3J0byBjb24gYmFja29mZiB5LCB0cmFzIGFnb3RhciByZWludGVudG9zLCBlbWl0ZSBlbCBmYWxsYmFjayAoYFtdYClcbiAgICogeSBtYXJjYSBgZXJyb3JgIOKAlCBlc3RhZG8gZGUgZXJyb3IgZW4gVUksIG5vIHNrZWxldG9uIGluZmluaXRvLiBgcmVsb2FkKClgXG4gICAqIHJlLXN1c2NyaWJlIGVsIHN0cmVhbSBjb21wbGV0byAobG8gdXNhIGVsIHB1bGwtdG8tcmVmcmVzaCkuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW0gPSBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbTxOb3RpZmljYXRpb25Eb2N1bWVudFtdPihcbiAgICAoKSA9PiB0aGlzLm5vdGlmcy5nZXRBbGwodGhpcy5yZXNvbHZlZENvbmZpZygpLm1heExvYWQpLFxuICAgIHtcbiAgICAgIGZhbGxiYWNrOiBbXSxcbiAgICAgIC8vIGBub3RpZnMuZ2V0QWxsKClgIFlBIGdhdGVhIGludGVybmFtZW50ZSBwb3IgYGZpcmViYXNlQXV0aFJlYWR5YC4gU2kgZWxcbiAgICAgIC8vIHN0cmVhbSB0YW1iacOpbiBnYXRlYXJhLCBzZXLDrWFuIERPUyBlc3BlcmFzIGRlIGF1dGggYXBpbGFkYXMuXG4gICAgICBnYXRlT25GaXJlYmFzZUF1dGg6IGZhbHNlLFxuICAgICAgLy8gQ29sZCBzdGFydCBkZSBQV0EgZW4gaU9TIHB1ZWRlIHBhc2FyIGRlIDhzIGVuIHJlZGVzIGxlbnRhczsgY29uIDE1c1xuICAgICAgLy8gZXZpdGFtb3MgZWwgZmFsc28gZXN0YWRvIGRlIGVycm9yLlxuICAgICAgZmlyc3RFbWl0VGltZW91dE1zOiAxNTAwMCxcbiAgICB9XG4gICk7XG5cbiAgLyoqIFRydWUgc2kgZWwgc3RyZWFtIGZhbGzDsyB0cmFzIGFnb3RhciByZWludGVudG9zIOKGkiBtdWVzdHJhIGVzdGFkbyBkZSBlcnJvci4gKi9cbiAgcmVhZG9ubHkgc3RyZWFtRXJyb3IgPSB0aGlzLl9zdHJlYW0uZXJyb3I7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0cmVhbS5kYXRhKCkgPT09IG51bGwpO1xuXG4gIC8qKlxuICAgKiBOb3RpZnMgcmVhbGVzIG1vc3RyYWRhcy4gRmlsdHJhbW9zIGRvY3Mgc2luIHTDrXR1bG8gWSBzaW4gYm9keSDigJQgc29uIHJ1aWRvXG4gICAqICh0w61waWNhbWVudGUgc2VudGluZWwvc3lzdGVtIHdyaXRlcyBwcmUtc2NoZW1hIGNvbiB0aXRsZS9ib2R5IG9wY2lvbmFsZXMpLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsTm90aWZzID0gY29tcHV0ZWQ8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4oKCkgPT5cbiAgICAodGhpcy5fc3RyZWFtLmRhdGEoKSA/PyBbXSkuZmlsdGVyKG4gPT4gISEobi50aXRsZSAmJiBuLnRpdGxlLnRyaW0oKSkgfHwgISEobi5ib2R5ICYmIG4uYm9keS50cmltKCkpKVxuICApO1xuICByZWFkb25seSBoYXNNb3JlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxOb3RpZnMoKS5sZW5ndGggPiB0aGlzLl9wYWdlU2l6ZSgpKTtcbiAgcmVhZG9ubHkgc2hvd01hcmtBbGwgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuZW5hYmxlTWFya0FsbCAmJiAhdGhpcy5sb2FkaW5nKCkgJiYgdGhpcy5hbGxOb3RpZnMoKS5zb21lKG4gPT4gIW4uaXNSZWFkKVxuICApO1xuXG4gIC8qKiBTdWItY29uanVudG8gcGFnaW5hZG8sIGFncnVwYWRvIHBvciBwZXLDrW9kby4gKi9cbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQ8Tm90aWZpY2F0aW9uR3JvdXBbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5hbGxOb3RpZnMoKS5zbGljZSgwLCB0aGlzLl9wYWdlU2l6ZSgpKTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGJ1Y2tldHM6IFJlY29yZDxHcm91cEtleSwgTm90aWZpY2F0aW9uRG9jdW1lbnRbXT4gPSB7XG4gICAgICB0b2RheTogW10sXG4gICAgICB0aGlzTW9udGg6IFtdLFxuICAgICAgZWFybGllcjogW10sXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IG4gb2YgaXRlbXMpIHtcbiAgICAgIGJ1Y2tldHNbdGhpcy5idWNrZXRPZihuLCBub3cpXS5wdXNoKG4pO1xuICAgIH1cbiAgICBjb25zdCBvdXQ6IE5vdGlmaWNhdGlvbkdyb3VwW10gPSBbXTtcbiAgICBpZiAoYnVja2V0cy50b2RheS5sZW5ndGgpIHtcbiAgICAgIG91dC5wdXNoKHsga2V5OiAndG9kYXknLCBsYWJlbDogdGhpcy50dCgnZ3JvdXBUb2RheScpLCBpdGVtczogYnVja2V0cy50b2RheSB9KTtcbiAgICB9XG4gICAgaWYgKGJ1Y2tldHMudGhpc01vbnRoLmxlbmd0aCkge1xuICAgICAgb3V0LnB1c2goe1xuICAgICAgICBrZXk6ICd0aGlzTW9udGgnLFxuICAgICAgICBsYWJlbDogdGhpcy50dCgnZ3JvdXBUaGlzTW9udGgnKSxcbiAgICAgICAgaXRlbXM6IGJ1Y2tldHMudGhpc01vbnRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChidWNrZXRzLmVhcmxpZXIubGVuZ3RoKSB7XG4gICAgICBvdXQucHVzaCh7IGtleTogJ2VhcmxpZXInLCBsYWJlbDogdGhpcy50dCgnZ3JvdXBFYXJsaWVyJyksIGl0ZW1zOiBidWNrZXRzLmVhcmxpZXIgfSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBhZ2VUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VUaXRsZScpKTtcbiAgcmVhZG9ubHkgcGFnZURlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZURlc2NyaXB0aW9uJykpO1xuXG4gIC8vIENUQSBcImFjdGl2YSBsYXMgbm90aWZpY2FjaW9uZXMgcHVzaFwiIOKAlCB2aXNpYmxlIGN1YW5kbyBwdXNoRW5hYmxlZCgpIGVzIGZhbHNlLlxuICByZWFkb25seSBjdGFUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3B1c2hPZmZUaXRsZScpKTtcbiAgcmVhZG9ubHkgY3RhSGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3B1c2hPZmZIaW50JykpO1xuICByZWFkb25seSBjdGFCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3B1c2hPZmZDdGEnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9KSk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSBlcnJvciBkZSBjYXJnYTogY29udmllcnRlIGVsIGVycm9yIGRlbCBzdHJlYW0gZW5cbiAgICogYEVtcHR5U3RhdGVNZXRhZGF0YWAgdmlhIGVsIGhlbHBlciBjYW7Ds25pY28gYGNyZWF0ZUVycm9yU3RhdGVQcm9wc2AuXG4gICAqIEVsIGhlbHBlciBkZWNpZGUgdmFyaWFudGUgKGBvZmZsaW5lYCB2cyBgZXJyb3JgKSBwb3IgYGlzTmV0d29ya2AuXG4gICAqIE51bGwgY3VhbmRvIGVsIHN0cmVhbSBubyBoYSBmYWxsYWRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMuc3RyZWFtRXJyb3IoKTtcbiAgICBpZiAoIWVycikgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGNyZWF0ZUVycm9yU3RhdGVQcm9wcyhlcnIsIHtcbiAgICAgIHRpdGxlOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVUaXRsZScpLFxuICAgICAgICBlcnJvcjogdGhpcy50dCgnbG9hZEVycm9yVGl0bGUnKSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICBvZmZsaW5lOiB0aGlzLnR0KCdvZmZsaW5lSGludCcpLFxuICAgICAgICBlcnJvcjogaW50ZXJwcmV0RXJyb3IoZXJyKS5tZXNzYWdlIHx8IHRoaXMudHQoJ2xvYWRFcnJvckhpbnQnKSxcbiAgICAgIH0sXG4gICAgICByZXRyeUxhYmVsOiB0aGlzLnR0KCdyZXRyeUN0YScpLFxuICAgICAgb25SZXRyeTogKCkgPT4gdGhpcy5fc3RyZWFtLnJlbG9hZCgpLFxuICAgICAgcmV0cnlpbmc6IHRoaXMubG9hZGluZygpLFxuICAgIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogRXN0YWRvIHZhY8OtbyAobGlzdGEgcmVhbCA9IDAgbm90aWZpY2FjaW9uZXMsIHNpbiBlcnJvciBkZSBjYXJnYSkuXG4gICAqIFNlIGNvbnN0cnV5ZSBtYW51YWxtZW50ZSBjb24gYHZhcmlhbnQ6ICdlbXB0eSdgIOKAlCBzaW4gaGVscGVyIGRlIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1wdHlTdGF0ZVByb3BzID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFudDogJ2VtcHR5JyxcbiAgICAgIGljb246ICdub3RpZmljYXRpb25zLW9mZi1vdXRsaW5lJyxcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdlbXB0eScpLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ2VtcHR5SGludCcpLFxuICAgICAgYWN0aW9uOiB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnR0KCdlbXB0eUN0YScpLFxuICAgICAgICBoYW5kbGVyOiAoKSA9PiB0aGlzLm9uR29Ub1NldHRpbmdzKCksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNlZU1vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZWVNb3JlJykpO1xuICByZWFkb25seSBzZWVMZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnc2VlTGVzcycpKTtcblxuICByZWFkb25seSBtYXJrQWxsQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdtYXJrQWxsJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBpY29uOiB7IG5hbWU6ICdjaGVja21hcmstZG9uZS1vdXRsaW5lJywgc2xvdDogJ3N0YXJ0JyB9LFxuICAgIHN0YXRlOiB0aGlzLl9idWxrQnVzeSgpID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGxvYWRNb3JlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdsb2FkTW9yZScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ2NsZWFyJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMuX2xvYWRpbmdNb3JlKCkgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSB0aGlzLm5zO1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKG5zLCBOT1RJRklDQVRJT05TX1ZJRVdfSTE4Tik7XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG5cbiAgICAvLyBSZS1hcGxpY2FyIGhlYWRlciBlbiBjYW1iaW8gZGUgaWRpb21hLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICAgICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgdGhpcy5ucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGVsIHB1bGwtdG8tcmVmcmVzaCBlc3TDoW5kYXIuIFVzYW1vcyBgbmdPbkluaXRgL2BuZ09uRGVzdHJveWBcbiAgICogKE5PIGBpb25WaWV3V2lsbEVudGVyYCkgcG9ycXVlIGB2YWwtcGFnZS13cmFwcGVyYCB1c2EgYDxyb3V0ZXItb3V0bGV0PmBcbiAgICogcGxhbm8g4oCUIGxvcyBob29rcyBgaW9uVmlldypgIHNvbG8gZGlzcGFyYW4gZGVudHJvIGRlIGA8aW9uLXJvdXRlci1vdXRsZXQ+YC5cbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVJlZnJlc2gucmVnaXN0ZXIoKCkgPT4gdGhpcy5yZWxvYWQoKSk7XG4gIH1cblxuICAvKiogUXVpdGEgZWwgaGFuZGxlciBhbCBkZXN0cnVpciBsYSB2aXN0YSDigJQgZWwgcmVmcmVzaGVyIGRlc2FwYXJlY2UuICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVJlZnJlc2gudW5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggbWFudWFsOiByZS1zdXNjcmliZSBlbCBzdHJlYW0gRmlyZXN0b3JlIChsaXN0ZW5lciBudWV2bykgdsOtYSBlbFxuICAgKiBoZWxwZXIuIFJlc3VlbHZlIHRyYXMgdW4gbWFyZ2VuIGJyZXZlIOKAlCBlbCBzdHJlYW0gZXMgcmVhbC10aW1lIHkgcmUtZW1pdGVcbiAgICogZW4gbWlsaXNlZ3VuZG9zOyBlbCBkZWxheSBzw7NsbyBtYW50aWVuZSBlbCBzcGlubmVyIHZpc2libGUgbG8ganVzdG8uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9zdHJlYW0ucmVsb2FkKCk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDcwMCkpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFBlci1pdGVtIGhlbHBlcnMgKHB1cm9zIOKAlCB1c2FibGVzIGRlc2RlIHRlbXBsYXRlKS5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgb3BlbkJ1dHRvblByb3BzKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy50dCgnb3BlbicpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGZpbGw6ICdjbGVhcicsXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIGljb246IHsgbmFtZTogJ29wZW4tb3V0bGluZScsIHNsb3Q6ICdlbmQnIH0sXG4gICAgfTtcbiAgfVxuXG4gIGlzRXhwYW5kZWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZCgpLmhhcyhpZCk7XG4gIH1cblxuICB0b2dnbGVFeHBhbmQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuX2V4cGFuZGVkKCkpO1xuICAgIGlmIChuZXh0LmhhcyhpZCkpIG5leHQuZGVsZXRlKGlkKTtcbiAgICBlbHNlIG5leHQuYWRkKGlkKTtcbiAgICB0aGlzLl9leHBhbmRlZC5zZXQobmV4dCk7XG4gIH1cblxuICBpc0xvbmcoYm9keTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFib2R5KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGJvZHkubGVuZ3RoID4gMTEwIHx8IGJvZHkuaW5jbHVkZXMoJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEljb24gcmVzb2x2ZXIgY29uIG9yZGVuIGRlIGZhbGxiYWNrOlxuICAgKiAxLiBub3RpZi5wYXlsb2FkLmljb24gKGZvcndhcmQtY29tcGF0LCBzaW4gYnJlYWtpbmcgY2hhbmdlIGVuIHNjaGVtYSlcbiAgICogMi4gbWFwYSBwb3Igbm90aWYudHlwZVxuICAgKiAzLiBkZWZhdWx0IG5vdGlmaWNhdGlvbnMtb3V0bGluZVxuICAgKi9cbiAgcmVzb2x2ZUljb24objogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBSZXNvbHZlZEljb24ge1xuICAgIGNvbnN0IGhpbnQgPSBuLnBheWxvYWQ/LlsnaWNvbiddIGFzIEljb25IaW50IHwgdW5kZWZpbmVkO1xuICAgIGlmIChoaW50Py52YWx1ZSkge1xuICAgICAgaWYgKGhpbnQudHlwZSA9PT0gJ2ltYWdlJyB8fCBoaW50LnR5cGUgPT09ICdhdmF0YXInKSB7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IGhpbnQudHlwZSwgc3JjOiBoaW50LnZhbHVlIH07XG4gICAgICB9XG4gICAgICAvLyBJZ25vcmFtb3MgaGludC5jb2xvciDigJQgdG9kb3MgbG9zIGljb25vcyB2YW4gZW4gZGFyayBwb3IgY29udmVuY2nDs24gVVguXG4gICAgICByZXR1cm4geyBraW5kOiAnaW9uaWNvbicsIG5hbWU6IGhpbnQudmFsdWUsIGNvbG9yOiAnZGFyaycgfTtcbiAgICB9XG4gICAgY29uc3QgdCA9IG4udHlwZTtcbiAgICBjb25zdCBuYW1lID0gKCgpID0+IHtcbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICBjYXNlICdhcHByb3ZhbCc6XG4gICAgICAgICAgcmV0dXJuICdjaGVja21hcmstY2lyY2xlLW91dGxpbmUnO1xuICAgICAgICBjYXNlICdjaGF0JzpcbiAgICAgICAgY2FzZSAnY2hhdGJvdCc6XG4gICAgICAgICAgcmV0dXJuICdjaGF0YnViYmxlLW91dGxpbmUnO1xuICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICByZXR1cm4gJ2NoYXRib3gtZWxsaXBzZXMtb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ3JlbWluZGVyJzpcbiAgICAgICAgICByZXR1cm4gJ2FsYXJtLW91dGxpbmUnO1xuICAgICAgICBjYXNlICdzeXN0ZW0nOlxuICAgICAgICAgIHJldHVybiAnY29nLW91dGxpbmUnO1xuICAgICAgICBjYXNlICd1c2VyJzpcbiAgICAgICAgY2FzZSAnbWVudGlvbic6XG4gICAgICAgICAgcmV0dXJuICdwZXJzb24tb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50LXRleHQtb3V0bGluZSc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdub3RpZmljYXRpb25zLW91dGxpbmUnO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgcmV0dXJuIHsga2luZDogJ2lvbmljb24nLCBuYW1lLCBjb2xvcjogJ2RhcmsnIH07XG4gIH1cblxuICBpb25pY29uTmFtZShuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzb2x2ZUljb24obik7XG4gICAgcmV0dXJuIHIua2luZCA9PT0gJ2lvbmljb24nID8gci5uYW1lIDogJyc7XG4gIH1cblxuICBpb25pY29uQ29sb3IobjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHIgPSB0aGlzLnJlc29sdmVJY29uKG4pO1xuICAgIHJldHVybiByLmtpbmQgPT09ICdpb25pY29uJyA/IHIuY29sb3IgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpbWFnZVNyYyhuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzb2x2ZUljb24obik7XG4gICAgcmV0dXJuIHIua2luZCA9PT0gJ2ltYWdlJyB8fCByLmtpbmQgPT09ICdhdmF0YXInID8gci5zcmMgOiAnJztcbiAgfVxuXG4gIGlvbkNvbG9yKHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghdG9rZW4pIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3Rva2VufSlgO1xuICB9XG5cbiAgcmVsYXRpdmVUaW1lKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBkID0gbi5jcmVhdGVkQXQgaW5zdGFuY2VvZiBEYXRlID8gbi5jcmVhdGVkQXQgOiBudWxsO1xuICAgIGlmICghZCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGRpZmZNcyA9IERhdGUubm93KCkgLSBkLmdldFRpbWUoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKGRpZmZNcyAvIDYwMDAwKTtcbiAgICBpZiAobWluIDwgMSkgcmV0dXJuIHRoaXMudHQoJ3RpbWVOb3cnKTtcbiAgICBpZiAobWluIDwgNjApIHJldHVybiB0aGlzLnR0KCd0aW1lTWludXRlcycpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhtaW4pKTtcbiAgICBjb25zdCBoID0gTWF0aC5mbG9vcihtaW4gLyA2MCk7XG4gICAgaWYgKGggPCAyNCkgcmV0dXJuIHRoaXMudHQoJ3RpbWVIb3VycycpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhoKSk7XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoaCAvIDI0KTtcbiAgICByZXR1cm4gdGhpcy50dCgndGltZURheXMnKS5yZXBsYWNlKCd7bn0nLCBTdHJpbmcoZGF5cykpO1xuICB9XG5cbiAgLyoqIERldnVlbHZlIGxhYmVsIFwiRGVzZGUge2FwcE5hbWV9XCIgc2kgbGEgbm90aWYgdmllbmUgZGUgb3RyYSBhcHAsIHNpbm8gbnVsbC4gKi9cbiAgc2hvd0Nyb3NzQXBwQmFkZ2UobjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50QXBwID0gJ3Nob3djYXNlJztcbiAgICBpZiAoIW4uYXBwSWQgfHwgbi5hcHBJZCA9PT0gY3VycmVudEFwcCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudHQoJ2Nyb3NzQXBwJykucmVwbGFjZSgne2FwcH0nLCBuLmFwcElkKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBBY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGFzeW5jIG9uT3BlbihuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbi5vcGVuKG4pO1xuICAgICAgdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uTm90aWZpY2F0aW9uT3Blbj8uKG4sIHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdub3RpZmljYXRpb25zLm9wZW4nLFxuICAgICAgICBmYWxsYmFja0tleTogJ29wZW5FcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvbk1hcmtBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2J1bGtCdXN5KCkpIHJldHVybjtcbiAgICB0aGlzLl9idWxrQnVzeS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubm90aWZzLm1hcmtBbGxBc1JlYWQoKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ21hcmtlZEFsbFN1Y2Nlc3MnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDI1MDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbm90aWZpY2F0aW9ucy5tYXJrQWxsJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdtYXJrZWRBbGxFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fYnVsa0J1c3kuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9sb2FkaW5nTW9yZSgpKSByZXR1cm47XG4gICAgdGhpcy5fbG9hZGluZ01vcmUuc2V0KHRydWUpO1xuICAgIC8vIFNsaWNlIHZpZW5lIGRlbCBjYWNoZSBsb2NhbCDigJQgbm8gaGF5IGZldGNoIHJlYWwsIHBlcm8gdW4gYnJldmUgc3Bpbm5lclxuICAgIC8vIGNvbmZpcm1hIGFsIHVzZXIgcXVlIGVsIGNsaWNrIHJlZ2lzdHLDsyB5IHN1YXZpemEgbGEgYXBhcmljacOzbiBkZSBpdGVtcy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX3BhZ2VTaXplLnVwZGF0ZShuID0+IG4gKyB0aGlzLnBhZ2VTdGVwKTtcbiAgICAgIHRoaXMuX2xvYWRpbmdNb3JlLnNldChmYWxzZSk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIG9uR29Ub1NldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlQnlVcmwodGhpcy5yZXNvbHZlZENvbmZpZygpLnNldHRpbmdzTm90aWZpY2F0aW9uc1BhdGgpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEdyb3VwaW5nIGhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBidWNrZXRPZihuOiBOb3RpZmljYXRpb25Eb2N1bWVudCwgbm93OiBEYXRlKTogR3JvdXBLZXkge1xuICAgIGNvbnN0IGQgPSBuLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBuLmNyZWF0ZWRBdCA6IG51bGw7XG4gICAgaWYgKCFkKSByZXR1cm4gJ2VhcmxpZXInO1xuICAgIGlmIChkLmdldEZ1bGxZZWFyKCkgPT09IG5vdy5nZXRGdWxsWWVhcigpICYmIGQuZ2V0TW9udGgoKSA9PT0gbm93LmdldE1vbnRoKCkgJiYgZC5nZXREYXRlKCkgPT09IG5vdy5nZXREYXRlKCkpIHtcbiAgICAgIHJldHVybiAndG9kYXknO1xuICAgIH1cbiAgICBpZiAoZC5nZXRGdWxsWWVhcigpID09PSBub3cuZ2V0RnVsbFllYXIoKSAmJiBkLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpKSB7XG4gICAgICByZXR1cm4gJ3RoaXNNb250aCc7XG4gICAgfVxuICAgIHJldHVybiAnZWFybGllcic7XG4gIH1cblxuICBwcml2YXRlIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
@@ -71,9 +71,7 @@ export class OrgInfoSheetComponent {
71
71
  ];
72
72
  });
73
73
  addIcons({ peopleOutline, swapHorizontalOutline, mailOutline, codeSlashOutline, shieldCheckmarkOutline, warningOutline });
74
- if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
75
- this.i18n.registerContent(DEFAULT_NAMESPACE, ORG_INFO_SHEET_I18N);
76
- }
74
+ this.i18n.registerDefaults(DEFAULT_NAMESPACE, ORG_INFO_SHEET_I18N);
77
75
  }
78
76
  dismiss() {
79
77
  this._modalRef?.dismiss(null, 'cancel');
@@ -203,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
203
201
  }], _modalRef: [{
204
202
  type: Input
205
203
  }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUM7QUFFekM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFzSEgsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEM7UUFsQ1EsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuQyxpRkFB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LE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLEVBQUUsQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0FyRVUscUJBQXFCO21HQUFyQixxQkFBcUIsOFFBdEd0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1QscTRCQXZEQyxTQUFTLG9HQUNULFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULFVBQVUsd0tBQ1YsT0FBTywySkFDUCxlQUFlLDBHQUNmLGdCQUFnQiwyRUFDaEIsYUFBYSx3RUFDYixjQUFjOzs0RkF3R0wscUJBQXFCO2tCQXJIakMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGNBQWM7cUJBQ2YsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7d0RBOERRLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uSWNvbiwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjb2RlU2xhc2hPdXRsaW5lLCBtYWlsT3V0bGluZSwgcGVvcGxlT3V0bGluZSwgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSwgc3dhcEhvcml6b250YWxPdXRsaW5lLCB3YXJuaW5nT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbmltcG9ydCB7IE9SR19JTkZPX1NIRUVUX0kxOE4gfSBmcm9tICcuL29yZy1pbmZvLXNoZWV0LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdPcmdJbmZvU2hlZXQnO1xuXG4vKipcbiAqIGB2YWwtb3JnLWluZm8tc2hlZXRgIOKAlCBzaGVldCBpbmZvcm1hdGl2byBcIsK/UXXDqSBzb24gbGFzIG9yZ2FuaXphY2lvbmVzP1wiLlxuICogRXh0cmHDrWRvIGRlbCBgT3JnSW5mb1NoZWV0Q29tcG9uZW50YCBpbmxpbmUgZGUgYEFjY291bnRQYWdlYCBiYWpvIGVsIHByb2Nlc28gZGVcbiAqIEFEUi0wMjEuXG4gKlxuICogRWwgY29uc3VtZXIgcGFzYSBgdGl0bGVgL2BzdWJ0aXRsZWAvYGJvZHlgL2BjbG9zZUxhYmVsYCB5YSByZXN1ZWx0b3MgcG9yIHByb3BzXG4gKiAocGF0csOzbiBkZWwgcmVzdG8gZGUgbW9kYWxlcyBkZWwgZmFjdG9yeSkuIExvcyB0ZXh0b3MgZGUgbG9zIDMgZmVhdHVyZXNcbiAqIChDb2xhYm9yYWNpw7NuIC8gQ2FtYmlvIHLDoXBpZG8gLyBJbnZpdGFjaW9uZXMpLCBxdWUgZW4gbGEgdmVyc2nDs24gaW5saW5lIGVzdGFiYW5cbiAqIGhhcmRjb2RlZCwgYWhvcmEgc2UgYXV0by1yZXN1ZWx2ZW4gZGVzZGUgZWwgbmFtZXNwYWNlIGBPcmdJbmZvU2hlZXRgXG4gKiAoYXV0by1yZWdpc3RyYWRvIGVuIGVsIGNvbnN0cnVjdG9yKS5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYC4gSGVhZGVyXG4gKiBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyIHRleHRvIGVuIGBzbG90PWVuZGAsXG4gKiB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW9yZy1pbmZvLXNoZWV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSWNvbixcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHJlc29sdmVkQ2xvc2VMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJlc29sdmVkVGl0bGUoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cbiAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogcmVzb2x2ZWRTdWJ0aXRsZSgpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuXG4gICAgICBAaWYgKHJlc29sdmVkRmVhdHVyZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVzXCI+XG4gICAgICAgICAgQGZvciAoZiBvZiByZXNvbHZlZEZlYXR1cmVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZi5pY29uXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX3RpdGxlXCI+e3sgZi50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2Rlc2NcIj57eyBmLmRlc2MgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAZm9yIChwYXJhIG9mIHBhcmFncmFwaHMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhcmEsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaGVldC1mb290ZXJcIj5cbiAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInJlc29sdmVkQ2xvc2VQcm9wcygpXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBpb24tY29udGVudCB7XG4gICAgICAgIC8qIFBhZGRpbmcgZ2VuZXJvc28gcGFyYSBsbGVnYXIgYWwgZm9uZG86IGVsIHNoZWV0IHNjcm9sbGVhIGVuIHN1XG4gICAgICAgICAgIGJyZWFrcG9pbnQgbcOheGltbywgeSBlbCBib3TDs24gZGUgY2llcnJlIGRlbCBmb290ZXIgZGViZSBxdWVkYXIgcG9yXG4gICAgICAgICAgIGVuY2ltYSBkZWwgc2FmZS1hcmVhIC8gY3VhbHF1aWVyIG92ZXJsYXkgZmxvdGFudGUuICovXG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IGNhbGMoOTZweCArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5pbmZvLWZlYXR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmluZm8tZmVhdHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmluZm8tZmVhdHVyZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLmluZm8tZmVhdHVyZV9fdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLnNoZWV0LWZvb3RlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT3JnSW5mb1NoZWV0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKiogVMOtdHVsbyBwcmluY2lwYWwgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIC8qKiBTdWJ0w610dWxvIChyZXN1ZWx0byBwb3IgZWwgY29uc3VtZXIpLiBGYWxsYmFjayBhbCBuYW1lc3BhY2UgcHJvcGlvLiAqL1xuICBASW5wdXQoKSBzdWJ0aXRsZSA9ICcnO1xuICAvKiogQ3VlcnBvIGVuIHDDoXJyYWZvcyBzZXBhcmFkb3MgcG9yIGRvYmxlIHNhbHRvIGRlIGzDrW5lYSAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gKi9cbiAgQElucHV0KCkgYm9keSA9ICcnO1xuICAvKiogTGFiZWwgZGVsIGJvdMOzbiBjZXJyYXIgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWwgPSAnJztcblxuICAvKipcbiAgICogTXVlc3RyYSBsYXMgMyBmZWF0dXJlLWNhcmRzIGRlIG9yZ2FuaXphY2lvbmVzIChjb2xhYm9yYWNpw7NuIC8gY2FtYmlvIHLDoXBpZG8gL1xuICAgKiBpbnZpdGFjaW9uZXMpLiBgZmFsc2VgIOKGkiBzaGVldCBhcnRpY2xlLXN0eWxlIChzb2xvIHTDrXR1bG8gKyBzdWJ0w610dWxvICsgY3VlcnBvKSxcbiAgICogcmV1c2FibGUgY29tbyBleHBsYWluZXIgZ2Vuw6lyaWNvIChlai4gaW50ZWdyYWNpb25lcyAvIEFQSSBrZXlzKS4gRGVmYXVsdCBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKSBzaG93RmVhdHVyZXMgPSB0cnVlO1xuXG4gIC8qKiBDdXN0b20gZmVhdHVyZSBjYXJkcy4gV2hlbiBwcm92aWRlZCwgdGhlc2UgcmVwbGFjZSB0aGUgZGVmYXVsdCBvcmcgZmVhdHVyZXMgKHNob3dGZWF0dXJlcykuICovXG4gIEBJbnB1dCgpIGZlYXR1cmVzPzogQXJyYXk8eyBpY29uOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmc7IGRlc2M6IHN0cmluZyB9PjtcblxuICAvKiogUHJvcHMgZGVsIGJvdMOzbiBjZXJyYXIgZGVsIGZvb3RlciAoZWwgY29uc3VtZXIgcHVlZGUgcGFzYXIgY3VzdG9tKS4gKi9cbiAgQElucHV0KCkgY2xvc2VQcm9wczogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4gPSB7XG4gICAgdGV4dDogJ0NlcnJhcicsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgfTtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gIOKAlCByZWZlcmVuY2lhIHBhcmEgY2VycmFyIGRlc2RlIGRlbnRyby4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IHBlb3BsZU91dGxpbmUsIHN3YXBIb3Jpem9udGFsT3V0bGluZSwgbWFpbE91dGxpbmUsIGNvZGVTbGFzaE91dGxpbmUsIHNoaWVsZENoZWNrbWFya091dGxpbmUsIHdhcm5pbmdPdXRsaW5lIH0pO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIE9SR19JTkZPX1NIRUVUX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHJlc29sdmVkVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRpdGxlIHx8IHRoaXMudHQoJ3RpdGxlJykpO1xuICByZWFkb25seSByZXNvbHZlZFN1YnRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdWJ0aXRsZSB8fCB0aGlzLnR0KCdzdWJ0aXRsZScpKTtcbiAgcmVhZG9ubHkgcmVzb2x2ZWRDbG9zZUxhYmVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jbG9zZUxhYmVsIHx8IHRoaXMudHQoJ2Nsb3NlJykpO1xuXG4gIHJlYWRvbmx5IHBhcmFncmFwaHMgPSBjb21wdXRlZDxzdHJpbmdbXT4oKCkgPT4gdGhpcy5ib2R5LnNwbGl0KCdcXG5cXG4nKS5maWx0ZXIoQm9vbGVhbikpO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ2xvc2VQcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIC4uLnRoaXMuY2xvc2VQcm9wcyxcbiAgICB0ZXh0OiB0aGlzLmNsb3NlUHJvcHMudGV4dCB8fCB0aGlzLnJlc29sdmVkQ2xvc2VMYWJlbCgpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRGZWF0dXJlcyA9IGNvbXB1dGVkPEFycmF5PHsgaWNvbjogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBkZXNjOiBzdHJpbmcgfT4+KCgpID0+IHtcbiAgICBpZiAodGhpcy5mZWF0dXJlcz8ubGVuZ3RoKSByZXR1cm4gdGhpcy5mZWF0dXJlcztcbiAgICBpZiAoIXRoaXMuc2hvd0ZlYXR1cmVzKSByZXR1cm4gW107XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgaWNvbjogJ3Blb3BsZS1vdXRsaW5lJywgdGl0bGU6IHRoaXMudHQoJ2ZlYXR1cmVDb2xsYWJUaXRsZScpLCBkZXNjOiB0aGlzLnR0KCdmZWF0dXJlQ29sbGFiRGVzYycpIH0sXG4gICAgICB7IGljb246ICdzd2FwLWhvcml6b250YWwtb3V0bGluZScsIHRpdGxlOiB0aGlzLnR0KCdmZWF0dXJlU3dpdGNoVGl0bGUnKSwgZGVzYzogdGhpcy50dCgnZmVhdHVyZVN3aXRjaERlc2MnKSB9LFxuICAgICAgeyBpY29uOiAnbWFpbC1vdXRsaW5lJywgdGl0bGU6IHRoaXMudHQoJ2ZlYXR1cmVJbnZpdGVUaXRsZScpLCBkZXNjOiB0aGlzLnR0KCdmZWF0dXJlSW52aXRlRGVzYycpIH0sXG4gICAgXTtcbiAgfSk7XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIERFRkFVTFRfTkFNRVNQQUNFKTtcbiAgfVxufVxuIl19
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUM7QUFFekM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFzSEgsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEM7UUFsQ1EsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuQyxpRkFB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TyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDOytHQW5FVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw4UUF0R3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDVCxxNEJBdkRDLFNBQVMsb0dBQ1QsVUFBVSxtRkFDVixVQUFVLDhFQUNWLFNBQVMsb1BBQ1QsVUFBVSx3S0FDVixPQUFPLDJKQUNQLGVBQWUsMEdBQ2YsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGNBQWM7OzRGQXdHTCxxQkFBcUI7a0JBckhqQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYztxQkFDZixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDVDt3REE4RFEsS0FBSztzQkFBYixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uQnV0dG9ucywgSW9uQ29udGVudCwgSW9uSGVhZGVyLCBJb25JY29uLCBJb25Ub29sYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNvZGVTbGFzaE91dGxpbmUsIG1haWxPdXRsaW5lLCBwZW9wbGVPdXRsaW5lLCBzaGllbGRDaGVja21hcmtPdXRsaW5lLCBzd2FwSG9yaXpvbnRhbE91dGxpbmUsIHdhcm5pbmdPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcblxuaW1wb3J0IHsgT1JHX0lORk9fU0hFRVRfSTE4TiB9IGZyb20gJy4vb3JnLWluZm8tc2hlZXQuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ09yZ0luZm9TaGVldCc7XG5cbi8qKlxuICogYHZhbC1vcmctaW5mby1zaGVldGAg4oCUIHNoZWV0IGluZm9ybWF0aXZvIFwiwr9RdcOpIHNvbiBsYXMgb3JnYW5pemFjaW9uZXM/XCIuXG4gKiBFeHRyYcOtZG8gZGVsIGBPcmdJbmZvU2hlZXRDb21wb25lbnRgIGlubGluZSBkZSBgQWNjb3VudFBhZ2VgIGJham8gZWwgcHJvY2VzbyBkZVxuICogQURSLTAyMS5cbiAqXG4gKiBFbCBjb25zdW1lciBwYXNhIGB0aXRsZWAvYHN1YnRpdGxlYC9gYm9keWAvYGNsb3NlTGFiZWxgIHlhIHJlc3VlbHRvcyBwb3IgcHJvcHNcbiAqIChwYXRyw7NuIGRlbCByZXN0byBkZSBtb2RhbGVzIGRlbCBmYWN0b3J5KS4gTG9zIHRleHRvcyBkZSBsb3MgMyBmZWF0dXJlc1xuICogKENvbGFib3JhY2nDs24gLyBDYW1iaW8gcsOhcGlkbyAvIEludml0YWNpb25lcyksIHF1ZSBlbiBsYSB2ZXJzacOzbiBpbmxpbmUgZXN0YWJhblxuICogaGFyZGNvZGVkLCBhaG9yYSBzZSBhdXRvLXJlc3VlbHZlbiBkZXNkZSBlbCBuYW1lc3BhY2UgYE9yZ0luZm9TaGVldGBcbiAqIChhdXRvLXJlZ2lzdHJhZG8gZW4gZWwgY29uc3RydWN0b3IpLlxuICpcbiAqIEFiaWVydG8gdsOtYSBgTW9kYWxTZXJ2aWNlYCDigJQgcmVjaWJlIGBfbW9kYWxSZWZgIHBvciBgY29tcG9uZW50UHJvcHNgLiBIZWFkZXJcbiAqIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXIgdGV4dG8gZW4gYHNsb3Q9ZW5kYCxcbiAqIHTDrXR1bG8vc3VidMOtdHVsbyBlbiBlbCBib2R5IGNvbiBgdmFsLWRpc3BsYXlgL2B2YWwtdGl0bGVgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtb3JnLWluZm8tc2hlZXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25JY29uLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVzb2x2ZWRDbG9zZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cblxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogcmVzb2x2ZWRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiByZXNvbHZlZFN1YnRpdGxlKCksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRGZWF0dXJlcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZXNcIj5cbiAgICAgICAgICBAZm9yIChmIG9mIHJlc29sdmVkRmVhdHVyZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJmLmljb25cIiBjbGFzcz1cImluZm8tZmVhdHVyZV9faWNvblwiIC8+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fdGl0bGVcIj57eyBmLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fZGVzY1wiPnt7IGYuZGVzYyB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBmb3IgKHBhcmEgb2YgcGFyYWdyYXBocygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFyYSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInNoZWV0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmVzb2x2ZWRDbG9zZVByb3BzKClcIiAoY2xpY2spPVwiZGlzbWlzcygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGlvbi1jb250ZW50IHtcbiAgICAgICAgLyogUGFkZGluZyBnZW5lcm9zbyBwYXJhIGxsZWdhciBhbCBmb25kbzogZWwgc2hlZXQgc2Nyb2xsZWEgZW4gc3VcbiAgICAgICAgICAgYnJlYWtwb2ludCBtw6F4aW1vLCB5IGVsIGJvdMOzbiBkZSBjaWVycmUgZGVsIGZvb3RlciBkZWJlIHF1ZWRhciBwb3JcbiAgICAgICAgICAgZW5jaW1hIGRlbCBzYWZlLWFyZWEgLyBjdWFscXVpZXIgb3ZlcmxheSBmbG90YW50ZS4gKi9cbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogY2FsYyg5NnB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpO1xuICAgICAgfVxuICAgICAgdmFsLWRpc3BsYXkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgdmFsLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBtYXJnaW46IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLmluZm8tZmVhdHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuaW5mby1mZWF0dXJlLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuaW5mby1mZWF0dXJlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlX190aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmluZm8tZmVhdHVyZV9fZGVzYyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG4gICAgICAuc2hlZXQtZm9vdGVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBPcmdJbmZvU2hlZXRDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIC8qKiBUw610dWxvIHByaW5jaXBhbCAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gRmFsbGJhY2sgYWwgbmFtZXNwYWNlIHByb3Bpby4gKi9cbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgLyoqIFN1YnTDrXR1bG8gKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIHN1YnRpdGxlID0gJyc7XG4gIC8qKiBDdWVycG8gZW4gcMOhcnJhZm9zIHNlcGFyYWRvcyBwb3IgZG9ibGUgc2FsdG8gZGUgbMOtbmVhIChyZXN1ZWx0byBwb3IgZWwgY29uc3VtZXIpLiAqL1xuICBASW5wdXQoKSBib2R5ID0gJyc7XG4gIC8qKiBMYWJlbCBkZWwgYm90w7NuIGNlcnJhciAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gRmFsbGJhY2sgYWwgbmFtZXNwYWNlIHByb3Bpby4gKi9cbiAgQElucHV0KCkgY2xvc2VMYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBNdWVzdHJhIGxhcyAzIGZlYXR1cmUtY2FyZHMgZGUgb3JnYW5pemFjaW9uZXMgKGNvbGFib3JhY2nDs24gLyBjYW1iaW8gcsOhcGlkbyAvXG4gICAqIGludml0YWNpb25lcykuIGBmYWxzZWAg4oaSIHNoZWV0IGFydGljbGUtc3R5bGUgKHNvbG8gdMOtdHVsbyArIHN1YnTDrXR1bG8gKyBjdWVycG8pLFxuICAgKiByZXVzYWJsZSBjb21vIGV4cGxhaW5lciBnZW7DqXJpY28gKGVqLiBpbnRlZ3JhY2lvbmVzIC8gQVBJIGtleXMpLiBEZWZhdWx0IGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dGZWF0dXJlcyA9IHRydWU7XG5cbiAgLyoqIEN1c3RvbSBmZWF0dXJlIGNhcmRzLiBXaGVuIHByb3ZpZGVkLCB0aGVzZSByZXBsYWNlIHRoZSBkZWZhdWx0IG9yZyBmZWF0dXJlcyAoc2hvd0ZlYXR1cmVzKS4gKi9cbiAgQElucHV0KCkgZmVhdHVyZXM/OiBBcnJheTx7IGljb246IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgZGVzYzogc3RyaW5nIH0+O1xuXG4gIC8qKiBQcm9wcyBkZWwgYm90w7NuIGNlcnJhciBkZWwgZm9vdGVyIChlbCBjb25zdW1lciBwdWVkZSBwYXNhciBjdXN0b20pLiAqL1xuICBASW5wdXQoKSBjbG9zZVByb3BzOiBQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPiA9IHtcbiAgICB0ZXh0OiAnQ2VycmFyJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgZXhwYW5kOiAnYmxvY2snLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9O1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgcGVvcGxlT3V0bGluZSwgc3dhcEhvcml6b250YWxPdXRsaW5lLCBtYWlsT3V0bGluZSwgY29kZVNsYXNoT3V0bGluZSwgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSwgd2FybmluZ091dGxpbmUgfSk7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoREVGQVVMVF9OQU1FU1BBQ0UsIE9SR19JTkZPX1NIRUVUX0kxOE4pO1xuICB9XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGl0bGUgfHwgdGhpcy50dCgndGl0bGUnKSk7XG4gIHJlYWRvbmx5IHJlc29sdmVkU3VidGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN1YnRpdGxlIHx8IHRoaXMudHQoJ3N1YnRpdGxlJykpO1xuICByZWFkb25seSByZXNvbHZlZENsb3NlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNsb3NlTGFiZWwgfHwgdGhpcy50dCgnY2xvc2UnKSk7XG5cbiAgcmVhZG9ubHkgcGFyYWdyYXBocyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB0aGlzLmJvZHkuc3BsaXQoJ1xcblxcbicpLmZpbHRlcihCb29sZWFuKSk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDbG9zZVByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgLi4udGhpcy5jbG9zZVByb3BzLFxuICAgIHRleHQ6IHRoaXMuY2xvc2VQcm9wcy50ZXh0IHx8IHRoaXMucmVzb2x2ZWRDbG9zZUxhYmVsKCksXG4gIH0pKTtcblxuICByZWFkb25seSByZXNvbHZlZEZlYXR1cmVzID0gY29tcHV0ZWQ8QXJyYXk8eyBpY29uOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmc7IGRlc2M6IHN0cmluZyB9Pj4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmZlYXR1cmVzPy5sZW5ndGgpIHJldHVybiB0aGlzLmZlYXR1cmVzO1xuICAgIGlmICghdGhpcy5zaG93RmVhdHVyZXMpIHJldHVybiBbXTtcbiAgICByZXR1cm4gW1xuICAgICAgeyBpY29uOiAncGVvcGxlLW91dGxpbmUnLCB0aXRsZTogdGhpcy50dCgnZmVhdHVyZUNvbGxhYlRpdGxlJyksIGRlc2M6IHRoaXMudHQoJ2ZlYXR1cmVDb2xsYWJEZXNjJykgfSxcbiAgICAgIHsgaWNvbjogJ3N3YXAtaG9yaXpvbnRhbC1vdXRsaW5lJywgdGl0bGU6IHRoaXMudHQoJ2ZlYXR1cmVTd2l0Y2hUaXRsZScpLCBkZXNjOiB0aGlzLnR0KCdmZWF0dXJlU3dpdGNoRGVzYycpIH0sXG4gICAgICB7IGljb246ICdtYWlsLW91dGxpbmUnLCB0aXRsZTogdGhpcy50dCgnZmVhdHVyZUludml0ZVRpdGxlJyksIGRlc2M6IHRoaXMudHQoJ2ZlYXR1cmVJbnZpdGVEZXNjJykgfSxcbiAgICBdO1xuICB9KTtcblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgREVGQVVMVF9OQU1FU1BBQ0UpO1xuICB9XG59XG4iXX0=