@alfresco/aca-content 4.3.0 → 4.4.0-6803224597

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 (51) hide show
  1. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +2 -8
  2. package/esm2020/lib/components/common/location-link/location-link.component.mjs +6 -4
  3. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +2 -2
  4. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +2 -2
  5. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +4 -7
  6. package/esm2020/lib/components/context-menu/context-menu.service.mjs +1 -4
  7. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +2 -2
  8. package/esm2020/lib/components/favorites/favorites.component.mjs +3 -3
  9. package/esm2020/lib/components/files/files.component.mjs +17 -15
  10. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +3 -3
  11. package/esm2020/lib/components/libraries/libraries.component.mjs +2 -2
  12. package/esm2020/lib/components/recent-files/recent-files.component.mjs +5 -5
  13. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +4 -4
  14. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +3 -3
  15. package/esm2020/lib/components/search/search-results/search-results.component.mjs +2 -2
  16. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +2 -2
  17. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +3 -3
  18. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +2 -2
  19. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +2 -2
  20. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +2 -2
  21. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +3 -3
  22. package/esm2020/lib/services/content-management.service.mjs +13 -13
  23. package/esm2020/lib/services/node-actions.service.mjs +8 -8
  24. package/esm2020/lib/services/node-template.service.mjs +2 -2
  25. package/esm2020/lib/store/effects/library.effects.mjs +4 -4
  26. package/esm2020/lib/store/effects/node.effects.mjs +14 -14
  27. package/esm2020/lib/store/effects/upload.effects.mjs +3 -7
  28. package/esm2020/lib/store/effects/viewer.effects.mjs +3 -3
  29. package/esm2020/lib/store/reducers/app.reducer.mjs +2 -2
  30. package/esm2020/preview/lib/components/preview.component.mjs +8 -20
  31. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +9 -21
  32. package/fesm2015/alfresco-aca-content-folder-rules.mjs +1 -7
  33. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +1 -1
  34. package/fesm2015/alfresco-aca-content-preview.mjs +9 -19
  35. package/fesm2015/alfresco-aca-content-preview.mjs.map +1 -1
  36. package/fesm2015/alfresco-aca-content-viewer.mjs +12 -22
  37. package/fesm2015/alfresco-aca-content-viewer.mjs.map +1 -1
  38. package/fesm2015/alfresco-aca-content.mjs +128 -99
  39. package/fesm2015/alfresco-aca-content.mjs.map +1 -1
  40. package/fesm2020/alfresco-aca-content-folder-rules.mjs +1 -7
  41. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +1 -1
  42. package/fesm2020/alfresco-aca-content-preview.mjs +7 -19
  43. package/fesm2020/alfresco-aca-content-preview.mjs.map +1 -1
  44. package/fesm2020/alfresco-aca-content-viewer.mjs +8 -20
  45. package/fesm2020/alfresco-aca-content-viewer.mjs.map +1 -1
  46. package/fesm2020/alfresco-aca-content.mjs +91 -97
  47. package/fesm2020/alfresco-aca-content.mjs.map +1 -1
  48. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +0 -1
  49. package/lib/components/files/files.component.d.ts +1 -1
  50. package/lib/components/recent-files/recent-files.component.d.ts +0 -1
  51. package/package.json +1 -1
@@ -124,8 +124,8 @@ export class NodeActionsService {
124
124
  return observable;
125
125
  }
126
126
  isEntryEntitiesArray(contentEntities) {
127
- if (contentEntities && contentEntities.length) {
128
- const nonEntryNode = contentEntities.find((node) => !node || !node.entry || !(node.entry.nodeId || node.entry.id));
127
+ if (contentEntities?.length) {
128
+ const nonEntryNode = contentEntities.find((node) => !(node?.entry?.nodeId || node?.entry?.id));
129
129
  return !nonEntryNode;
130
130
  }
131
131
  return false;
@@ -139,7 +139,7 @@ export class NodeActionsService {
139
139
  if (nodeEntry.parentId) {
140
140
  entryParentId = nodeEntry.parentId;
141
141
  }
142
- else if (nodeEntry.path && nodeEntry.path.elements && nodeEntry.path.elements.length) {
142
+ else if (nodeEntry.path?.elements?.length) {
143
143
  entryParentId = nodeEntry.path.elements[nodeEntry.path.elements.length - 1].id;
144
144
  }
145
145
  return entryParentId;
@@ -218,7 +218,7 @@ export class NodeActionsService {
218
218
  }
219
219
  // todo: review this approach once 5.2.3 is out
220
220
  customizeBreadcrumb(node) {
221
- if (node && node.path && node.path.elements) {
221
+ if (node?.path?.elements) {
222
222
  const elements = node.path.elements;
223
223
  if (elements.length > 1) {
224
224
  if (elements[1].name === 'User Homes') {
@@ -275,7 +275,7 @@ export class NodeActionsService {
275
275
  }
276
276
  }
277
277
  isSiteContainer(node) {
278
- if (node && node.aspectNames && node.aspectNames.length > 0) {
278
+ if (node?.aspectNames?.length > 0) {
279
279
  return node.aspectNames.indexOf('st:siteContainer') >= 0;
280
280
  }
281
281
  return false;
@@ -553,7 +553,7 @@ export class NodeActionsService {
553
553
  const folderMoveResponseData = this.flatten(next);
554
554
  const foundError = folderMoveResponseData.find((node) => node instanceof Error);
555
555
  // data might contain also items of form: { itemMoved, initialParentId }
556
- const foundEntry = folderMoveResponseData.find((node) => (node.itemMoved && node.itemMoved.entry) || (node && node.entry));
556
+ const foundEntry = folderMoveResponseData.find((node) => node.itemMoved?.entry || node?.entry);
557
557
  if (!foundError) {
558
558
  // consider success if NONE of the items from the folder move response is an error
559
559
  acc.succeeded.push(next);
@@ -574,7 +574,7 @@ export class NodeActionsService {
574
574
  }, moveStatus);
575
575
  }
576
576
  else {
577
- if ((data.itemMoved && data.itemMoved.entry) || (data && data.entry)) {
577
+ if (data.itemMoved?.entry || data?.entry) {
578
578
  moveStatus.succeeded.push(data);
579
579
  }
580
580
  else {
@@ -597,4 +597,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
597
597
  providedIn: 'root'
598
598
  }]
599
599
  }], ctorParameters: function () { return [{ type: i1.ContentService }, { type: i2.ContentApiService }, { type: i3.MatDialog }, { type: i1.DocumentListService }, { type: i4.AlfrescoApiService }, { type: i4.TranslationService }, { type: i4.ThumbnailService }]; } });
600
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL3NlcnZpY2VzL25vZGUtYWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUU1Qix3QkFBd0IsRUFFeEIsVUFBVSxFQUNWLGNBQWMsRUFDZixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBbUIsVUFBVSxFQUF5RCxRQUFRLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFDdEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU8zRCxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1UsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsTUFBaUIsRUFDakIsbUJBQXdDLEVBQ3hDLFVBQThCLEVBQzlCLFdBQStCLEVBQy9CLGdCQUFrQztRQU5sQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQix3QkFB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Q0FBQzthQUNqQztpQkFBTTtnQkFDTCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QjtZQUVELE9BQU8sVUFBVSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxzQkFBOEI7UUFDcEQsSUFBSSxzQkFBc0IsRUFBRTtZQUMxQixRQUFRLENBQUMsYUFBYSxDQUFjLHNCQUFzQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDdEU7SUFDSCxDQUFDOzsrR0F2b0JVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHppcCwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UsIFRodW1ibmFpbFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRMaXN0U2VydmljZSxcbiAgQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudCxcbiAgQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEsXG4gIENvbnRlbnROb2RlRGlhbG9nU2VydmljZSxcbiAgU2hhcmVEYXRhUm93LFxuICBOb2RlQWN0aW9uLFxuICBDb250ZW50U2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgTm9kZUVudHJ5LCBOb2RlLCBTaXRlUGFnaW5nLCBOb2RlQ2hpbGRBc3NvY2lhdGlvblBhZ2luZywgTm9kZUNoaWxkQXNzb2NpYXRpb25FbnRyeSwgTm9kZXNBcGksIFNpdGUsIFNpdGVQYWdpbmdMaXN0IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb250ZW50QXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbnR5cGUgQmF0Y2hPcGVyYXRpb25UeXBlID0gRXh0cmFjdDxOb2RlQWN0aW9uLCBOb2RlQWN0aW9uLkNPUFkgfCBOb2RlQWN0aW9uLk1PVkU+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb2RlQWN0aW9uc1NlcnZpY2Uge1xuICBjb250ZW50Q29waWVkOiBTdWJqZWN0PE5vZGVFbnRyeVtdPiA9IG5ldyBTdWJqZWN0PE5vZGVFbnRyeVtdPigpO1xuICBjb250ZW50TW92ZWQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgbW92ZURlbGV0ZWRFbnRyaWVzOiBhbnlbXSA9IFtdO1xuICBpc1NpdGVzRGVzdGluYXRpb25BdmFpbGFibGUgPSBmYWxzZTtcblxuICBfbm9kZXNBcGk6IE5vZGVzQXBpO1xuICBnZXQgbm9kZXNBcGkoKTogTm9kZXNBcGkge1xuICAgIHRoaXMuX25vZGVzQXBpID0gdGhpcy5fbm9kZXNBcGkgPz8gbmV3IE5vZGVzQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fbm9kZXNBcGk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBkb2N1bWVudExpc3RTZXJ2aWNlOiBEb2N1bWVudExpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRodW1ibmFpbFNlcnZpY2U6IFRodW1ibmFpbFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDb3B5IG5vZGUgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gY29udGVudEVudGl0aWVzIG5vZGVzIHRvIGNvcHlcbiAgICogQHBhcmFtIHBlcm1pc3Npb24gcGVybWlzc2lvbiB3aGljaCBpcyBuZWVkZWQgdG8gYXBwbHkgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3IgZWxlbWVudCdzIHNlbGVjdG9yIHdoaWNoIHNob3VsZCBiZSBhdXRvZm9jdXNlZCBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAqL1xuICBjb3B5Tm9kZXMoY29udGVudEVudGl0aWVzOiBhbnlbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3I/OiBzdHJpbmcpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmRvQmF0Y2hPcGVyYXRpb24oTm9kZUFjdGlvbi5DT1BZLCBjb250ZW50RW50aXRpZXMsIHBlcm1pc3Npb24sIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIG5vZGUgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gY29udGVudEVudGl0aWVzIG5vZGVzIHRvIG1vdmVcbiAgICogQHBhcmFtIHBlcm1pc3Npb24gcGVybWlzc2lvbiB3aGljaCBpcyBuZWVkZWQgdG8gYXBwbHkgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3IgZWxlbWVudCdzIHNlbGVjdG9yIHdoaWNoIHNob3VsZCBiZSBhdXRvZm9jdXNlZCBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAqL1xuICBtb3ZlTm9kZXMoY29udGVudEVudGl0aWVzOiBhbnlbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3I/OiBzdHJpbmcpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmRvQmF0Y2hPcGVyYXRpb24oTm9kZUFjdGlvbi5NT1ZFLCBjb250ZW50RW50aXRpZXMsIHBlcm1pc3Npb24sIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmFsIG1ldGhvZCBmb3IgcGVyZm9ybWluZyB0aGUgZ2l2ZW4gb3BlcmF0aW9uIChjb3B5fG1vdmUpIHRvIG11bHRpcGxlIG5vZGVzXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb24gdGhlIGFjdGlvbiB0byBwZXJmb3JtIChjb3B5fG1vdmUpXG4gICAqIEBwYXJhbSBjb250ZW50RW50aXRpZXMgdGhlIGNvbnRlbnRFbnRpdGllcyB3aGljaCBoYXZlIHRvIGhhdmUgdGhlIGFjdGlvbiBwZXJmb3JtZWQgb25cbiAgICogQHBhcmFtIHBlcm1pc3Npb24gcGVybWlzc2lvbiB3aGljaCBpcyBuZWVkZWQgdG8gYXBwbHkgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3IgZWxlbWVudCdzIHNlbGVjdG9yIHdoaWNoIHNob3VsZCBiZSBhdXRvZm9jdXNlZCBhZnRlciBjbG9zaW5nIG1vZGFsXG4gICAqL1xuICBkb0JhdGNoT3BlcmF0aW9uKGFjdGlvbjogQmF0Y2hPcGVyYXRpb25UeXBlLCBjb250ZW50RW50aXRpZXM6IGFueVtdLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmb2N1c2VkRWxlbWVudE9uQ2xvc2VTZWxlY3Rvcj86IHN0cmluZyk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgY29uc3Qgb2JzZXJ2YWJsZTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgaWYgKCF0aGlzLmlzRW50cnlFbnRpdGllc0FycmF5KGNvbnRlbnRFbnRpdGllcykpIHtcbiAgICAgIG9ic2VydmFibGUuZXJyb3IobmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IHsgc3RhdHVzQ29kZTogNDAwIH0gfSkpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tQZXJtaXNzaW9uKGFjdGlvbiwgY29udGVudEVudGl0aWVzLCBwZXJtaXNzaW9uKSkge1xuICAgICAgY29uc3QgZGVzdGluYXRpb25TZWxlY3Rpb24gPSB0aGlzLmdldENvbnRlbnROb2RlU2VsZWN0aW9uKGFjdGlvbiwgY29udGVudEVudGl0aWVzLCBmb2N1c2VkRWxlbWVudE9uQ2xvc2VTZWxlY3Rvcik7XG4gICAgICBkZXN0aW5hdGlvblNlbGVjdGlvbi5zdWJzY3JpYmUoKHNlbGVjdGlvbnM6IE5vZGVbXSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50RW50cnkgPSBjb250ZW50RW50aXRpZXNbMF0uZW50cnk7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3Mgbm9kZUlkIGZvciBTaGFyZWQgRmlsZXNcbiAgICAgICAgY29uc3QgY29udGVudEVudHJ5SWQgPSBjb250ZW50RW50cnkubm9kZUlkIHx8IGNvbnRlbnRFbnRyeS5pZDtcbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRlbnRFbnRyeS5pc0ZvbGRlciA/ICdmb2xkZXInIDogJ2NvbnRlbnQnO1xuICAgICAgICBjb25zdCBiYXRjaDogYW55W10gPSBbXTtcblxuICAgICAgICAvLyBjb25zaWRlciBvbmx5IGZpcnN0IGl0ZW0gaW4gdGhlIHNlbGVjdGlvblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBzZWxlY3Rpb25zWzBdO1xuICAgICAgICBsZXQgYWN0aW9uJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgICAgIGlmIChhY3Rpb24gPT09IE5vZGVBY3Rpb24uTU9WRSAmJiBjb250ZW50RW50aXRpZXMubGVuZ3RoID09PSAxICYmIHR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgICAgIGFjdGlvbiQgPSB0aGlzLmRvY3VtZW50TGlzdFNlcnZpY2UubW92ZU5vZGUoY29udGVudEVudHJ5SWQsIHNlbGVjdGlvbi5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGVudEVudGl0aWVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIC8vIGJhdGNoLnB1c2godGhpcy5jb3B5Tm9kZUFjdGlvbihub2RlLmVudHJ5LCBzZWxlY3Rpb24uaWQpKTtcbiAgICAgICAgICAgIGJhdGNoLnB1c2godGhpc1tgJHthY3Rpb24udG9Mb3dlckNhc2UoKX1Ob2RlQWN0aW9uYF0obm9kZS5lbnRyeSwgc2VsZWN0aW9uLmlkKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYWN0aW9uJCA9IHppcCguLi5iYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICBhY3Rpb24kLnN1YnNjcmliZSgobmV3Q29udGVudCkgPT4ge1xuICAgICAgICAgIG9ic2VydmFibGUubmV4dChgT1BFUkFUSU9OLlNVQ0NFU1MuJHt0eXBlLnRvVXBwZXJDYXNlKCl9LiR7YWN0aW9uLnRvVXBwZXJDYXNlKCl9YCk7XG5cbiAgICAgICAgICBjb25zdCBwcm9jZXNzZWREYXRhID0gdGhpcy5wcm9jZXNzUmVzcG9uc2UobmV3Q29udGVudCk7XG4gICAgICAgICAgaWYgKGFjdGlvbiA9PT0gTm9kZUFjdGlvbi5DT1BZKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRDb3BpZWQubmV4dChwcm9jZXNzZWREYXRhLnN1Y2NlZWRlZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09IE5vZGVBY3Rpb24uTU9WRSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50TW92ZWQubmV4dChwcm9jZXNzZWREYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9ic2VydmFibGUuZXJyb3IuYmluZChvYnNlcnZhYmxlKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JzZXJ2YWJsZS5lcnJvcihuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogeyBzdGF0dXNDb2RlOiA0MDMgfSB9KSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICB9XG5cbiAgaXNFbnRyeUVudGl0aWVzQXJyYXkoY29udGVudEVudGl0aWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChjb250ZW50RW50aXRpZXMgJiYgY29udGVudEVudGl0aWVzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgbm9uRW50cnlOb2RlID0gY29udGVudEVudGl0aWVzLmZpbmQoKG5vZGUpID0+ICFub2RlIHx8ICFub2RlLmVudHJ5IHx8ICEobm9kZS5lbnRyeS5ub2RlSWQgfHwgbm9kZS5lbnRyeS5pZCkpO1xuICAgICAgcmV0dXJuICFub25FbnRyeU5vZGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrUGVybWlzc2lvbihhY3Rpb246IEJhdGNoT3BlcmF0aW9uVHlwZSwgY29udGVudEVudGl0aWVzOiBhbnlbXSwgcGVybWlzc2lvbj86IHN0cmluZykge1xuICAgIGNvbnN0IG5vdEFsbG93ZWROb2RlID0gY29udGVudEVudGl0aWVzLmZpbmQoKG5vZGUpID0+ICF0aGlzLmlzQWN0aW9uQWxsb3dlZChhY3Rpb24sIG5vZGUuZW50cnksIHBlcm1pc3Npb24pKTtcbiAgICByZXR1cm4gIW5vdEFsbG93ZWROb2RlO1xuICB9XG5cbiAgZ2V0RW50cnlQYXJlbnRJZChub2RlRW50cnk6IE5vZGUpIHtcbiAgICBsZXQgZW50cnlQYXJlbnRJZCA9ICcnO1xuXG4gICAgaWYgKG5vZGVFbnRyeS5wYXJlbnRJZCkge1xuICAgICAgZW50cnlQYXJlbnRJZCA9IG5vZGVFbnRyeS5wYXJlbnRJZDtcbiAgICB9IGVsc2UgaWYgKG5vZGVFbnRyeS5wYXRoICYmIG5vZGVFbnRyeS5wYXRoLmVsZW1lbnRzICYmIG5vZGVFbnRyeS5wYXRoLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgZW50cnlQYXJlbnRJZCA9IG5vZGVFbnRyeS5wYXRoLmVsZW1lbnRzW25vZGVFbnRyeS5wYXRoLmVsZW1lbnRzLmxlbmd0aCAtIDFdLmlkO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRyeVBhcmVudElkO1xuICB9XG5cbiAgZ2V0Q29udGVudE5vZGVTZWxlY3Rpb24oYWN0aW9uOiBOb2RlQWN0aW9uLCBjb250ZW50RW50aXRpZXM6IE5vZGVFbnRyeVtdLCBmb2N1c2VkRWxlbWVudE9uQ2xvc2VTZWxlY3Rvcj86IHN0cmluZyk6IFN1YmplY3Q8Tm9kZVtdPiB7XG4gICAgY29uc3QgY3VycmVudFBhcmVudEZvbGRlcklkID0gdGhpcy5nZXRFbnRyeVBhcmVudElkKGNvbnRlbnRFbnRpdGllc1swXS5lbnRyeSk7XG5cbiAgICBjb25zdCBjdXN0b21Ecm9wZG93biA9IG5ldyBTaXRlUGFnaW5nKHtcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZW50cmllczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVudHJ5OiB7XG4gICAgICAgICAgICAgIGd1aWQ6ICctbXktJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5QRVJTT05BTC5TSURFTkFWX0xJTksuTEFCRUwnKVxuICAgICAgICAgICAgfSBhcyBTaXRlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbnRyeToge1xuICAgICAgICAgICAgICBndWlkOiAnLW15c2l0ZXMtJyxcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5MSUJSQVJJRVMuTUVOVS5NWV9MSUJSQVJJRVMuU0lERU5BVl9MSU5LLkxBQkVMJylcbiAgICAgICAgICAgIH0gYXMgU2l0ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSBhcyBTaXRlUGFnaW5nTGlzdFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFRpdGxlVHJhbnNsYXRpb24oYWN0aW9uLCBjb250ZW50RW50aXRpZXMpO1xuXG4gICAgdGhpcy5pc1NpdGVzRGVzdGluYXRpb25BdmFpbGFibGUgPSBmYWxzZTtcbiAgICBjb25zdCBkYXRhOiBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnLFxuICAgICAgdGl0bGUsXG4gICAgICBjdXJyZW50Rm9sZGVySWQ6IGN1cnJlbnRQYXJlbnRGb2xkZXJJZCxcbiAgICAgIGFjdGlvbk5hbWU6IGFjdGlvbixcbiAgICAgIGRyb3Bkb3duSGlkZU15RmlsZXM6IHRydWUsXG4gICAgICBkcm9wZG93blNpdGVMaXN0OiBjdXN0b21Ecm9wZG93bixcbiAgICAgIHJvd0ZpbHRlcjogdGhpcy5yb3dGaWx0ZXIuYmluZCh0aGlzKSxcbiAgICAgIGltYWdlUmVzb2x2ZXI6IHRoaXMuaW1hZ2VSZXNvbHZlci5iaW5kKHRoaXMpLFxuICAgICAgaXNTZWxlY3Rpb25WYWxpZDogdGhpcy5jYW5Db3B5TW92ZUluc2lkZUl0LmJpbmQodGhpcyksXG4gICAgICBicmVhZGNydW1iVHJhbnNmb3JtOiB0aGlzLmN1c3RvbWl6ZUJyZWFkY3J1bWIuYmluZCh0aGlzKSxcbiAgICAgIHNlbGVjdDogbmV3IFN1YmplY3Q8Tm9kZVtdPigpLFxuICAgICAgZXhjbHVkZVNpdGVDb250ZW50OiBDb250ZW50Tm9kZURpYWxvZ1NlcnZpY2Uubm9uRG9jdW1lbnRTaXRlQ29udGVudFxuICAgIH07XG5cbiAgICB0aGlzLmRpYWxvZ1xuICAgICAgLm9wZW4oQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudCwge1xuICAgICAgICBkYXRhLFxuICAgICAgICBwYW5lbENsYXNzOiAnYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1kaWFsb2cnLFxuICAgICAgICB3aWR0aDogJzYzMHB4JyxcbiAgICAgICAgcm9sZTogJ2RpYWxvZydcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmZvY3VzQWZ0ZXJDbG9zZShmb2N1c2VkRWxlbWVudE9uQ2xvc2VTZWxlY3RvcikpO1xuXG4gICAgZGF0YS5zZWxlY3Quc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiB0aGlzLmNsb3NlLmJpbmQodGhpcylcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLnNlbGVjdDtcbiAgfVxuXG4gIGdldFRpdGxlVHJhbnNsYXRpb24oYWN0aW9uOiBzdHJpbmcsIG5vZGVzOiBOb2RlRW50cnlbXSA9IFtdKTogc3RyaW5nIHtcbiAgICBsZXQga2V5UHJlZml4ID0gJ0lURU1TJztcbiAgICBsZXQgbmFtZSA9ICcnO1xuXG4gICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSAmJiBub2Rlc1swXS5lbnRyeS5uYW1lKSB7XG4gICAgICBuYW1lID0gbm9kZXNbMF0uZW50cnkubmFtZTtcbiAgICAgIGtleVByZWZpeCA9ICdJVEVNJztcbiAgICB9XG5cbiAgICBjb25zdCBudW1iZXIgPSBub2Rlcy5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uaW5zdGFudChgTk9ERV9TRUxFQ1RPUi4ke2FjdGlvbi50b1VwcGVyQ2FzZSgpfV8ke2tleVByZWZpeH1gLCB7IG5hbWUsIG51bWJlciB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuQ29weU1vdmVJbnNpZGVJdChlbnRyeTogTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc0VudGl0eUNyZWF0ZVBlcm1pc3Npb24oZW50cnkpICYmICF0aGlzLmlzU2l0ZShlbnRyeSk7XG4gIH1cblxuICBwcml2YXRlIGhhc0VudGl0eUNyZWF0ZVBlcm1pc3Npb24oZW50cnk6IE5vZGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKGVudHJ5LCAnY3JlYXRlJyk7XG4gIH1cblxuICBwcml2YXRlIGlzU2l0ZShlbnRyeSkge1xuICAgIHJldHVybiAhIWVudHJ5Lmd1aWQgfHwgZW50cnkubm9kZVR5cGUgPT09ICdzdDpzaXRlJyB8fCBlbnRyeS5ub2RlVHlwZSA9PT0gJ3N0OnNpdGVzJztcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gIH1cblxuICAvLyB0b2RvOiByZXZpZXcgdGhpcyBhcHByb2FjaCBvbmNlIDUuMi4zIGlzIG91dFxuICBwcml2YXRlIGN1c3RvbWl6ZUJyZWFkY3J1bWIobm9kZTogTm9kZSkge1xuICAgIGlmIChub2RlICYmIG5vZGUucGF0aCAmJiBub2RlLnBhdGguZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBpZiAoZWxlbWVudHNbMV0ubmFtZSA9PT0gJ1VzZXIgSG9tZXMnKSB7XG4gICAgICAgICAgZWxlbWVudHMuc3BsaWNlKDAsIDIpO1xuXG4gICAgICAgICAgLy8gbWFrZSBzdXJlIGZpcnN0IGl0ZW0gaXMgJ1BlcnNvbmFsIEZpbGVzJ1xuICAgICAgICAgIGlmIChlbGVtZW50c1swXSkge1xuICAgICAgICAgICAgZWxlbWVudHNbMF0ubmFtZSA9IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5QRVJTT05BTC5USVRMRScpO1xuICAgICAgICAgICAgZWxlbWVudHNbMF0uaWQgPSAnLW15LSc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUubmFtZSA9IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5QRVJTT05BTC5USVRMRScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1sxXS5uYW1lID09PSAnU2l0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5ub3JtYWxpemVTaXRlUGF0aChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSA9PT0gJ1NpdGVzJykge1xuICAgICAgICAgIG5vZGUubmFtZSA9IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5MSUJSQVJJRVMuTUVOVS5NWV9MSUJSQVJJRVMuVElUTEUnKTtcbiAgICAgICAgICBlbGVtZW50cy5zcGxpY2UoMCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUgPT09IG51bGwgJiYgdGhpcy5pc1NpdGVzRGVzdGluYXRpb25BdmFpbGFibGUpIHtcbiAgICAgIG5vZGUgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5MSUJSQVJJRVMuTUVOVS5NWV9MSUJSQVJJRVMuVElUTEUnKSxcbiAgICAgICAgcGF0aDogeyBlbGVtZW50czogW10gfVxuICAgICAgfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICAvLyB0b2RvOiByZXZpZXcgdGhpcyBhcHByb2FjaCBvbmNlIDUuMi4zIGlzIG91dFxuICBwcml2YXRlIG5vcm1hbGl6ZVNpdGVQYXRoKG5vZGU6IE5vZGUpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IG5vZGUucGF0aC5lbGVtZW50cztcblxuICAgIC8vIHJlbW92ZSAnQ29tcGFueSBIb21lJ1xuICAgIGVsZW1lbnRzLnNwbGljZSgwLCAxKTtcblxuICAgIC8vIHJlcGxhY2UgZmlyc3QgaXRlbSB3aXRoICdGaWxlIExpYnJhcmllcydcbiAgICBlbGVtZW50c1swXS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdBUFAuQlJPV1NFLkxJQlJBUklFUy5NRU5VLk1ZX0xJQlJBUklFUy5USVRMRScpO1xuICAgIGVsZW1lbnRzWzBdLmlkID0gJy1teXNpdGVzLSc7XG5cbiAgICBpZiAodGhpcy5pc1NpdGVDb250YWluZXIobm9kZSkpIHtcbiAgICAgIC8vIHJlbmFtZSAnZG9jdW1lbnRMaWJyYXJ5JyBlbnRyeSB0byB0aGUgdGFyZ2V0IHNpdGUgZGlzcGxheSBuYW1lXG4gICAgICAvLyBjbGlja2luZyBvbiB0aGUgYnJlYWRjcnVtYiBlbnRyeSBsb2FkcyB0aGUgc2l0ZSBjb250ZW50XG4gICAgICBub2RlLm5hbWUgPSBlbGVtZW50c1sxXS5uYW1lO1xuXG4gICAgICAvLyByZW1vdmUgdGhlIHNpdGUgZW50cnlcbiAgICAgIGVsZW1lbnRzLnNwbGljZSgxLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlICdkb2N1bWVudExpYnJhcnknIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhdGhcbiAgICAgIGNvbnN0IGRvY0xpYiA9IGVsZW1lbnRzLmZpbmRJbmRleCgoZWwpID0+IGVsLm5hbWUgPT09ICdkb2N1bWVudExpYnJhcnknKTtcbiAgICAgIGlmIChkb2NMaWIgPiAtMSkge1xuICAgICAgICBlbGVtZW50cy5zcGxpY2UoZG9jTGliLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc1NpdGVDb250YWluZXIobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgIGlmIChub2RlICYmIG5vZGUuYXNwZWN0TmFtZXMgJiYgbm9kZS5hc3BlY3ROYW1lcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbm9kZS5hc3BlY3ROYW1lcy5pbmRleE9mKCdzdDpzaXRlQ29udGFpbmVyJykgPj0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29weU5vZGVBY3Rpb24obm9kZUVudHJ5OiBhbnksIHNlbGVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChub2RlRW50cnkuaXNGb2xkZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvcHlGb2xkZXJBY3Rpb24obm9kZUVudHJ5LCBzZWxlY3Rpb25JZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFueSBvdGhlciB0eXBlIGlzIHRyZWF0ZWQgYXMgJ2NvbnRlbnQnXG4gICAgICByZXR1cm4gdGhpcy5jb3B5Q29udGVudEFjdGlvbihub2RlRW50cnksIHNlbGVjdGlvbklkKTtcbiAgICB9XG4gIH1cblxuICBjb3B5Q29udGVudEFjdGlvbihjb250ZW50RW50cnk6IGFueSwgc2VsZWN0aW9uSWQ6IHN0cmluZywgb2xkTmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgX29sZE5hbWUgPSBvbGROYW1lIHx8IGNvbnRlbnRFbnRyeS5uYW1lO1xuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3Mgbm9kZUlkIGZvciBTaGFyZWQgRmlsZXNcbiAgICBjb25zdCBjb250ZW50RW50cnlJZCA9IGNvbnRlbnRFbnRyeS5ub2RlSWQgfHwgY29udGVudEVudHJ5LmlkO1xuXG4gICAgLy8gdXNlIGxvY2FsIG1ldGhvZCB1bnRpbCBuZXcgbmFtZSBwYXJhbWV0ZXIgaXMgYWRkZWQgb24gQURGIGNvcHlOb2RlXG4gICAgcmV0dXJuIHRoaXMuY29weU5vZGUoY29udGVudEVudHJ5SWQsIHNlbGVjdGlvbklkLCBfb2xkTmFtZSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICBsZXQgZXJyU3RhdHVzQ29kZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBlcnJvcjogeyBzdGF0dXNDb2RlIH1cbiAgICAgICAgICB9ID0gSlNPTi5wYXJzZShlcnIubWVzc2FnZSk7XG4gICAgICAgICAgZXJyU3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvL1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVyclN0YXR1c0NvZGUgJiYgZXJyU3RhdHVzQ29kZSA9PT0gNDA5KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29weUNvbnRlbnRBY3Rpb24oY29udGVudEVudHJ5LCBzZWxlY3Rpb25JZCwgdGhpcy5nZXROZXdOYW1lRnJvbShfb2xkTmFtZSwgY29udGVudEVudHJ5Lm5hbWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBkbyBub3QgdGhyb3cgZXJyb3IsIHRvIGJlIGFibGUgdG8gc2hvdyBtZXNzYWdlIGluIGNhc2Ugb2YgcGFydGlhbCBjb3B5IG9mIGZpbGVzXG4gICAgICAgICAgcmV0dXJuIG9mKGVyciB8fCAnU2VydmVyIGVycm9yJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNvcHlGb2xkZXJBY3Rpb24oY29udGVudEVudHJ5OiBhbnksIHNlbGVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3Mgbm9kZUlkIGZvciBTaGFyZWQgRmlsZXNcbiAgICBjb25zdCBjb250ZW50RW50cnlJZCA9IGNvbnRlbnRFbnRyeS5ub2RlSWQgfHwgY29udGVudEVudHJ5LmlkO1xuICAgIGxldCAkZGVzdGluYXRpb25Gb2xkZXI6IE9ic2VydmFibGU8YW55PjtcbiAgICBsZXQgJGNoaWxkcmVuVG9Db3B5OiBPYnNlcnZhYmxlPGFueT47XG4gICAgbGV0IG5ld0Rlc3RpbmF0aW9uRm9sZGVyO1xuXG4gICAgcmV0dXJuIHRoaXMuY29weU5vZGUoY29udGVudEVudHJ5SWQsIHNlbGVjdGlvbklkLCBjb250ZW50RW50cnkubmFtZSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICBsZXQgZXJyU3RhdHVzQ29kZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBlcnJvcjogeyBzdGF0dXNDb2RlIH1cbiAgICAgICAgICB9ID0gSlNPTi5wYXJzZShlcnIubWVzc2FnZSk7XG4gICAgICAgICAgZXJyU3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICBpZiAoZXJyU3RhdHVzQ29kZSAmJiBlcnJTdGF0dXNDb2RlID09PSA0MDkpIHtcbiAgICAgICAgICAkZGVzdGluYXRpb25Gb2xkZXIgPSB0aGlzLmdldENoaWxkQnlOYW1lKHNlbGVjdGlvbklkLCBjb250ZW50RW50cnkubmFtZSk7XG4gICAgICAgICAgJGNoaWxkcmVuVG9Db3B5ID0gdGhpcy5nZXROb2RlQ2hpbGRyZW4oY29udGVudEVudHJ5SWQpO1xuXG4gICAgICAgICAgcmV0dXJuICRkZXN0aW5hdGlvbkZvbGRlci5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKGRlc3RpbmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIG5ld0Rlc3RpbmF0aW9uRm9sZGVyID0gZGVzdGluYXRpb247XG4gICAgICAgICAgICAgIHJldHVybiAkY2hpbGRyZW5Ub0NvcHk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1lcmdlTWFwKChub2Rlc1RvQ29weSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBiYXRjaCA9IFtdO1xuICAgICAgICAgICAgICBub2Rlc1RvQ29weS5saXN0LmVudHJpZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICBiYXRjaC5wdXNoKHRoaXMuY29weUZvbGRlckFjdGlvbihub2RlLmVudHJ5LCBuZXdEZXN0aW5hdGlvbkZvbGRlci5lbnRyeS5pZCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBiYXRjaC5wdXNoKHRoaXMuY29weUNvbnRlbnRBY3Rpb24obm9kZS5lbnRyeSwgbmV3RGVzdGluYXRpb25Gb2xkZXIuZW50cnkuaWQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmICghYmF0Y2gubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gemlwKC4uLmJhdGNoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBkbyBub3QgdGhyb3cgZXJyb3IsIHRvIGJlIGFibGUgdG8gc2hvdyBtZXNzYWdlIGluIGNhc2Ugb2YgcGFydGlhbCBjb3B5IG9mIGZpbGVzXG4gICAgICAgICAgcmV0dXJuIG9mKGVyciB8fCAnU2VydmVyIGVycm9yJyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG1vdmVOb2RlQWN0aW9uKG5vZGVFbnRyeSwgc2VsZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5tb3ZlRGVsZXRlZEVudHJpZXMgPSBbXTtcblxuICAgIGlmIChub2RlRW50cnkuaXNGb2xkZXIpIHtcbiAgICAgIGNvbnN0IGluaXRpYWxQYXJlbnRJZCA9IG5vZGVFbnRyeS5wYXJlbnRJZDtcblxuICAgICAgcmV0dXJuIHRoaXMubW92ZUZvbGRlckFjdGlvbihub2RlRW50cnksIHNlbGVjdGlvbklkKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgobmV3Q29udGVudCkgPT4ge1xuICAgICAgICAgIC8vIHRha2Ugbm8gZXh0cmEgYWN0aW9uLCBpZiBmb2xkZXIgaXMgbW92ZWQgdG8gdGhlIHNhbWUgbG9jYXRpb25cbiAgICAgICAgICBpZiAoaW5pdGlhbFBhcmVudElkID09PSBzZWxlY3Rpb25JZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG5ld0NvbnRlbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGZsYXR0ZW5SZXNwb25zZSA9IHRoaXMuZmxhdHRlbihuZXdDb250ZW50KTtcbiAgICAgICAgICBjb25zdCBwcm9jZXNzZWREYXRhID0gdGhpcy5wcm9jZXNzUmVzcG9uc2UoZmxhdHRlblJlc3BvbnNlKTtcblxuICAgICAgICAgIC8vIGVsc2UsIGNoZWNrIGlmIG1vdmluZyB0aGlzIG5vZGVFbnRyeSBzdWNjZWVkZWQgZm9yIEFMTCBvZiBpdHMgbm9kZXNcbiAgICAgICAgICBpZiAocHJvY2Vzc2VkRGF0YS5mYWlsZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBjaGVjayBpZiBmb2xkZXIgc3RpbGwgZXhpc3RzIG9uIGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZEJ5TmFtZShpbml0aWFsUGFyZW50SWQsIG5vZGVFbnRyeS5uYW1lKS5waXBlKFxuICAgICAgICAgICAgICBtZXJnZU1hcCgoZm9sZGVyT25Jbml0aWFsTG9jYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVyT25Jbml0aWFsTG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3Mgbm9kZUlkIGZvciBTaGFyZWQgRmlsZXNcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVFbnRyeUlkID0gbm9kZUVudHJ5Lm5vZGVJZCB8fCBub2RlRW50cnkuaWQ7XG4gICAgICAgICAgICAgICAgICAvLyBkZWxldGUgaXQgZnJvbSBsb2NhdGlvblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEFwaS5kZWxldGVOb2RlKG5vZGVFbnRyeUlkKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlRGVsZXRlZEVudHJpZXMucHVzaChub2RlRW50cnkpO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihuZXdDb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvZihuZXdDb250ZW50KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvZihuZXdDb250ZW50KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFueSBvdGhlciB0eXBlIGlzIHRyZWF0ZWQgYXMgJ2NvbnRlbnQnXG4gICAgICByZXR1cm4gdGhpcy5tb3ZlQ29udGVudEFjdGlvbihub2RlRW50cnksIHNlbGVjdGlvbklkKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlRm9sZGVyQWN0aW9uKGNvbnRlbnRFbnRyeSwgc2VsZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBub2RlSWQgZm9yIFNoYXJlZCBGaWxlc1xuICAgIGNvbnN0IGNvbnRlbnRFbnRyeUlkID0gY29udGVudEVudHJ5Lm5vZGVJZCB8fCBjb250ZW50RW50cnkuaWQ7XG4gICAgY29uc3QgaW5pdGlhbFBhcmVudElkID0gdGhpcy5nZXRFbnRyeVBhcmVudElkKGNvbnRlbnRFbnRyeSk7XG4gICAgbGV0ICRkZXN0aW5hdGlvbkZvbGRlcjogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGxldCAkY2hpbGRyZW5Ub01vdmU6IE9ic2VydmFibGU8YW55PjtcbiAgICBsZXQgbmV3RGVzdGluYXRpb25Gb2xkZXI7XG5cbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudExpc3RTZXJ2aWNlLm1vdmVOb2RlKGNvbnRlbnRFbnRyeUlkLCBzZWxlY3Rpb25JZCkucGlwZShcbiAgICAgIG1hcCgoaXRlbU1vdmVkKSA9PiAoeyBpdGVtTW92ZWQsIGluaXRpYWxQYXJlbnRJZCB9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgbGV0IGVyclN0YXR1c0NvZGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZXJyb3I6IHsgc3RhdHVzQ29kZSB9XG4gICAgICAgICAgfSA9IEpTT04ucGFyc2UoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIGVyclN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy9cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJTdGF0dXNDb2RlICYmIGVyclN0YXR1c0NvZGUgPT09IDQwOSkge1xuICAgICAgICAgICRkZXN0aW5hdGlvbkZvbGRlciA9IHRoaXMuZ2V0Q2hpbGRCeU5hbWUoc2VsZWN0aW9uSWQsIGNvbnRlbnRFbnRyeS5uYW1lKTtcbiAgICAgICAgICAkY2hpbGRyZW5Ub01vdmUgPSB0aGlzLmdldE5vZGVDaGlsZHJlbihjb250ZW50RW50cnlJZCk7XG5cbiAgICAgICAgICByZXR1cm4gJGRlc3RpbmF0aW9uRm9sZGVyLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgoZGVzdGluYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgbmV3RGVzdGluYXRpb25Gb2xkZXIgPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgICAgICAgcmV0dXJuICRjaGlsZHJlblRvTW92ZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWVyZ2VNYXAoKGNoaWxkcmVuVG9Nb3ZlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGJhdGNoOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgICBjaGlsZHJlblRvTW92ZS5saXN0LmVudHJpZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICBiYXRjaC5wdXNoKHRoaXMubW92ZUZvbGRlckFjdGlvbihub2RlLmVudHJ5LCBuZXdEZXN0aW5hdGlvbkZvbGRlci5lbnRyeS5pZCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBiYXRjaC5wdXNoKHRoaXMubW92ZUNvbnRlbnRBY3Rpb24obm9kZS5lbnRyeSwgbmV3RGVzdGluYXRpb25Gb2xkZXIuZW50cnkuaWQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmICghYmF0Y2gubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGJhdGNoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gemlwKC4uLmJhdGNoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBkbyBub3QgdGhyb3cgZXJyb3IsIHRvIGJlIGFibGUgdG8gc2hvdyBtZXNzYWdlIGluIGNhc2Ugb2YgcGFydGlhbCBtb3ZlIG9mIGZpbGVzXG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG1vdmVDb250ZW50QWN0aW9uKGNvbnRlbnRFbnRyeTogYW55LCBzZWxlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBub2RlSWQgZm9yIFNoYXJlZCBGaWxlc1xuICAgIGNvbnN0IGNvbnRlbnRFbnRyeUlkID0gY29udGVudEVudHJ5Lm5vZGVJZCB8fCBjb250ZW50RW50cnkuaWQ7XG4gICAgY29uc3QgaW5pdGlhbFBhcmVudElkID0gdGhpcy5nZXRFbnRyeVBhcmVudElkKGNvbnRlbnRFbnRyeSk7XG5cbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudExpc3RTZXJ2aWNlLm1vdmVOb2RlKGNvbnRlbnRFbnRyeUlkLCBzZWxlY3Rpb25JZCkucGlwZShcbiAgICAgIG1hcCgoaXRlbU1vdmVkKSA9PiAoeyBpdGVtTW92ZWQsIGluaXRpYWxQYXJlbnRJZCB9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+XG4gICAgICAgIC8vIGRvIG5vdCB0aHJvdyBlcnJvciwgdG8gYmUgYWJsZSB0byBzaG93IG1lc3NhZ2UgaW4gY2FzZSBvZiBwYXJ0aWFsIG1vdmUgb2YgZmlsZXNcbiAgICAgICAgb2YoZXJyKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBnZXRDaGlsZEJ5TmFtZShwYXJlbnRJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBTdWJqZWN0PE5vZGVDaGlsZEFzc29jaWF0aW9uRW50cnk+IHtcbiAgICBjb25zdCBtYXRjaGVkTm9kZXMgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICB0aGlzLmdldE5vZGVDaGlsZHJlbihwYXJlbnRJZCkuc3Vic2NyaWJlKFxuICAgICAgKGNoaWxkcmVuTm9kZXM6IE5vZGVDaGlsZEFzc29jaWF0aW9uUGFnaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNoaWxkcmVuTm9kZXMubGlzdC5lbnRyaWVzLmZpbmQoKG5vZGUpID0+IG5vZGUuZW50cnkubmFtZSA9PT0gbmFtZSk7XG5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIG1hdGNoZWROb2Rlcy5uZXh0KHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWF0Y2hlZE5vZGVzLm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiBtYXRjaGVkTm9kZXMuZXJyb3IoZXJyKVxuICAgICk7XG4gICAgcmV0dXJuIG1hdGNoZWROb2RlcztcbiAgfVxuXG4gIHByaXZhdGUgaXNBY3Rpb25BbGxvd2VkKGFjdGlvbjogQmF0Y2hPcGVyYXRpb25UeXBlLCBub2RlOiBOb2RlLCBwZXJtaXNzaW9uPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gTm9kZUFjdGlvbi5DT1BZKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlLCBwZXJtaXNzaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93RmlsdGVyKHJvdzogU2hhcmVEYXRhUm93KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZTogTm9kZSA9IHJvdy5ub2RlLmVudHJ5O1xuXG4gICAgdGhpcy5pc1NpdGVzRGVzdGluYXRpb25BdmFpbGFibGUgPSAhIW5vZGVbJ2d1aWQnXTtcbiAgICByZXR1cm4gIW5vZGUuaXNGaWxlICYmIG5vZGUubm9kZVR5cGUgIT09ICdhcHA6Zm9sZGVybGluayc7XG4gIH1cblxuICBwcml2YXRlIGltYWdlUmVzb2x2ZXIocm93OiBTaGFyZURhdGFSb3cpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBlbnRyeTogTm9kZSA9IHJvdy5ub2RlLmVudHJ5O1xuICAgIGlmICghdGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKGVudHJ5LCAndXBkYXRlJykpIHtcbiAgICAgIHJldHVybiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKCdkaXNhYmxlL2ZvbGRlcicpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldE5ld05hbWVGcm9tKG5hbWU6IHN0cmluZywgYmFzZU5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBleHRlbnNpb25NYXRjaCA9IG5hbWUubWF0Y2goL1xcLlteLy5dKyQvKTtcblxuICAgIC8vIHJlbW92ZSBleHRlbnNpb24gaW4gY2FzZSB0aGVyZSBpcyBvbmVcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZXh0ZW5zaW9uTWF0Y2ggPyBleHRlbnNpb25NYXRjaFswXSA6ICcnO1xuICAgIGxldCBleHRlbnNpb25GcmVlID0gZXh0ZW5zaW9uTWF0Y2ggPyBuYW1lLnNsaWNlKDAsIGV4dGVuc2lvbk1hdGNoLmluZGV4KSA6IG5hbWU7XG5cbiAgICBsZXQgcHJlZml4TnVtYmVyID0gMTtcbiAgICBsZXQgYmFzZUV4dGVuc2lvbkZyZWU7XG5cbiAgICBpZiAoYmFzZU5hbWUpIHtcbiAgICAgIGNvbnN0IGJhc2VFeHRlbnNpb25NYXRjaCA9IGJhc2VOYW1lLm1hdGNoKC9cXC5bXi8uXSskLyk7XG5cbiAgICAgIC8vIHJlbW92ZSBleHRlbnNpb24gaW4gY2FzZSB0aGVyZSBpcyBvbmVcbiAgICAgIGJhc2VFeHRlbnNpb25GcmVlID0gYmFzZUV4dGVuc2lvbk1hdGNoID8gYmFzZU5hbWUuc2xpY2UoMCwgYmFzZUV4dGVuc2lvbk1hdGNoLmluZGV4KSA6IGJhc2VOYW1lO1xuICAgIH1cblxuICAgIGlmICghYmFzZUV4dGVuc2lvbkZyZWUgfHwgYmFzZUV4dGVuc2lvbkZyZWUgIT09IGV4dGVuc2lvbkZyZWUpIHtcbiAgICAgIC8vIGNoZWNrIGlmIG5hbWUgYWxyZWFkeSBoYXMgaW50ZWdlciBhcHBlbmRlZCBvbiBlbmQ6XG4gICAgICBjb25zdCBvbGRQcmVmaXggPSBleHRlbnNpb25GcmVlLm1hdGNoKCctWzAtOV0rJCcpO1xuICAgICAgaWYgKG9sZFByZWZpeCkge1xuICAgICAgICAvLyBpZiBzbywgdHJ5IHRvIGdldCB0aGUgbnVtYmVyIGF0IHRoZSBlbmRcbiAgICAgICAgY29uc3Qgb2xkUHJlZml4TnVtYmVyID0gcGFyc2VJbnQob2xkUHJlZml4WzBdLnNsaWNlKDEpLCAxMCk7XG4gICAgICAgIGlmIChvbGRQcmVmaXhOdW1iZXIudG9TdHJpbmcoKSA9PT0gb2xkUHJlZml4WzBdLnNsaWNlKDEpKSB7XG4gICAgICAgICAgZXh0ZW5zaW9uRnJlZSA9IGV4dGVuc2lvbkZyZWUuc2xpY2UoMCwgb2xkUHJlZml4LmluZGV4KTtcbiAgICAgICAgICBwcmVmaXhOdW1iZXIgPSBvbGRQcmVmaXhOdW1iZXIgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBleHRlbnNpb25GcmVlICsgJy0nICsgcHJlZml4TnVtYmVyICsgZmlsZUV4dGVuc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2hpbGRyZW4gbm9kZXMgb2YgZ2l2ZW4gcGFyZW50IG5vZGVcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCBUaGUgaWQgb2YgdGhlIHBhcmVudCBub2RlXG4gICAqIEBwYXJhbSBwYXJhbXMgb3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKi9cbiAgZ2V0Tm9kZUNoaWxkcmVuKG5vZGVJZDogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPE5vZGVDaGlsZEFzc29jaWF0aW9uUGFnaW5nPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5saXN0Tm9kZUNoaWxkcmVuKG5vZGVJZCwgcGFyYW1zKSk7XG4gIH1cblxuICAvLyBDb3BpZWQgZnJvbSBBREYgZG9jdW1lbnQtbGlzdC5zZXJ2aWNlLCBhbmQgYWRkZWQgdGhlIG5hbWUgcGFyYW1ldGVyXG4gIC8qKlxuICAgKiBDb3B5IGEgbm9kZSB0byBkZXN0aW5hdGlvbiBub2RlXG4gICAqXG4gICAqIEBwYXJhbSBub2RlSWQgVGhlIGlkIG9mIHRoZSBub2RlIHRvIGJlIGNvcGllZFxuICAgKiBAcGFyYW0gdGFyZ2V0UGFyZW50SWQgVGhlIGlkIG9mIHRoZSBmb2xkZXItbm9kZSB3aGVyZSB0aGUgbm9kZSBoYXZlIHRvIGJlIGNvcGllZCB0b1xuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmV3IG5hbWUgZm9yIHRoZSBjb3B5IHRoYXQgd291bGQgYmUgYWRkZWQgb24gdGhlIGRlc3RpbmF0aW9uIGZvbGRlclxuICAgKi9cbiAgY29weU5vZGUobm9kZUlkOiBzdHJpbmcsIHRhcmdldFBhcmVudElkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm5vZGVzQXBpLmNvcHlOb2RlKG5vZGVJZCwgeyB0YXJnZXRQYXJlbnRJZCwgbmFtZSB9KSk7XG4gIH1cblxuICBwdWJsaWMgZmxhdHRlbihuRGltQXJyYXk6IGFueVtdKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG5EaW1BcnJheSkpIHtcbiAgICAgIHJldHVybiBuRGltQXJyYXk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZVF1ZXVlID0gbkRpbUFycmF5LnNsaWNlKDApO1xuICAgIGNvbnN0IHJlc3VsdGluZ0FycmF5OiBhbnlbXSA9IFtdO1xuXG4gICAgZG8ge1xuICAgICAgbm9kZVF1ZXVlLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgICBub2RlUXVldWUucHVzaCguLi5ub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRpbmdBcnJheS5wdXNoKG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9kZUluZGV4ID0gbm9kZVF1ZXVlLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIG5vZGVRdWV1ZS5zcGxpY2Uobm9kZUluZGV4LCAxKTtcbiAgICAgIH0pO1xuICAgIH0gd2hpbGUgKG5vZGVRdWV1ZS5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIHJlc3VsdGluZ0FycmF5O1xuICB9XG5cbiAgcHJvY2Vzc1Jlc3BvbnNlKGRhdGE6IGFueSk6IGFueSB7XG4gICAgY29uc3QgbW92ZVN0YXR1cyA9IHtcbiAgICAgIHN1Y2NlZWRlZDogW10sXG4gICAgICBmYWlsZWQ6IFtdLFxuICAgICAgcGFydGlhbGx5U3VjY2VlZGVkOiBbXVxuICAgIH07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEucmVkdWNlKChhY2MsIG5leHQpID0+IHtcbiAgICAgICAgaWYgKG5leHQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGFjYy5mYWlsZWQucHVzaChuZXh0KTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7XG4gICAgICAgICAgLy8gaWYgY29udGVudCBvZiBhIGZvbGRlciB3YXMgbW92ZWRcblxuICAgICAgICAgIGNvbnN0IGZvbGRlck1vdmVSZXNwb25zZURhdGEgPSB0aGlzLmZsYXR0ZW4obmV4dCk7XG4gICAgICAgICAgY29uc3QgZm91bmRFcnJvciA9IGZvbGRlck1vdmVSZXNwb25zZURhdGEuZmluZCgobm9kZSkgPT4gbm9kZSBpbnN0YW5jZW9mIEVycm9yKTtcbiAgICAgICAgICAvLyBkYXRhIG1pZ2h0IGNvbnRhaW4gYWxzbyBpdGVtcyBvZiBmb3JtOiB7IGl0ZW1Nb3ZlZCwgaW5pdGlhbFBhcmVudElkIH1cbiAgICAgICAgICBjb25zdCBmb3VuZEVudHJ5ID0gZm9sZGVyTW92ZVJlc3BvbnNlRGF0YS5maW5kKChub2RlKSA9PiAobm9kZS5pdGVtTW92ZWQgJiYgbm9kZS5pdGVtTW92ZWQuZW50cnkpIHx8IChub2RlICYmIG5vZGUuZW50cnkpKTtcblxuICAgICAgICAgIGlmICghZm91bmRFcnJvcikge1xuICAgICAgICAgICAgLy8gY29uc2lkZXIgc3VjY2VzcyBpZiBOT05FIG9mIHRoZSBpdGVtcyBmcm9tIHRoZSBmb2xkZXIgbW92ZSByZXNwb25zZSBpcyBhbiBlcnJvclxuICAgICAgICAgICAgYWNjLnN1Y2NlZWRlZC5wdXNoKG5leHQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWZvdW5kRW50cnkpIHtcbiAgICAgICAgICAgIC8vIGNvbnNpZGVyIGZhaWxlZCBpZiBOT05FIG9mIHRoZSBpdGVtcyBoYXMgYW4gZW50cnlcbiAgICAgICAgICAgIGFjYy5mYWlsZWQucHVzaChuZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFydGlhbGx5IG1vdmUgZm9sZGVyXG4gICAgICAgICAgICBhY2MucGFydGlhbGx5U3VjY2VlZGVkLnB1c2gobmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjYy5zdWNjZWVkZWQucHVzaChuZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBtb3ZlU3RhdHVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKChkYXRhLml0ZW1Nb3ZlZCAmJiBkYXRhLml0ZW1Nb3ZlZC5lbnRyeSkgfHwgKGRhdGEgJiYgZGF0YS5lbnRyeSkpIHtcbiAgICAgICAgbW92ZVN0YXR1cy5zdWNjZWVkZWQucHVzaChkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vdmVTdGF0dXMuZmFpbGVkLnB1c2goZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb3ZlU3RhdHVzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNBZnRlckNsb3NlKGZvY3VzZWRFbGVtZW50U2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChmb2N1c2VkRWxlbWVudFNlbGVjdG9yKSB7XG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50Pihmb2N1c2VkRWxlbWVudFNlbGVjdG9yKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
600
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL3NlcnZpY2VzL25vZGUtYWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUU1Qix3QkFBd0IsRUFFeEIsVUFBVSxFQUNWLGNBQWMsRUFDZixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBbUIsVUFBVSxFQUF5RCxRQUFRLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFDdEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU8zRCxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1UsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsTUFBaUIsRUFDakIsbUJBQXdDLEVBQ3hDLFVBQThCLEVBQzlCLFdBQStCLEVBQy9CLGdCQUFrQztRQU5sQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQix3QkFB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QUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIG9mLCB6aXAsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSwgVHJhbnNsYXRpb25TZXJ2aWNlLCBUaHVtYm5haWxTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7XG4gIERvY3VtZW50TGlzdFNlcnZpY2UsXG4gIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsXG4gIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLFxuICBDb250ZW50Tm9kZURpYWxvZ1NlcnZpY2UsXG4gIFNoYXJlRGF0YVJvdyxcbiAgTm9kZUFjdGlvbixcbiAgQ29udGVudFNlcnZpY2Vcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE5vZGVFbnRyeSwgTm9kZSwgU2l0ZVBhZ2luZywgTm9kZUNoaWxkQXNzb2NpYXRpb25QYWdpbmcsIE5vZGVDaGlsZEFzc29jaWF0aW9uRW50cnksIE5vZGVzQXBpLCBTaXRlLCBTaXRlUGFnaW5nTGlzdCB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29udGVudEFwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG50eXBlIEJhdGNoT3BlcmF0aW9uVHlwZSA9IEV4dHJhY3Q8Tm9kZUFjdGlvbiwgTm9kZUFjdGlvbi5DT1BZIHwgTm9kZUFjdGlvbi5NT1ZFPjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTm9kZUFjdGlvbnNTZXJ2aWNlIHtcbiAgY29udGVudENvcGllZDogU3ViamVjdDxOb2RlRW50cnlbXT4gPSBuZXcgU3ViamVjdDxOb2RlRW50cnlbXT4oKTtcbiAgY29udGVudE1vdmVkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIG1vdmVEZWxldGVkRW50cmllczogYW55W10gPSBbXTtcbiAgaXNTaXRlc0Rlc3RpbmF0aW9uQXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgX25vZGVzQXBpOiBOb2Rlc0FwaTtcbiAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICB0aGlzLl9ub2Rlc0FwaSA9IHRoaXMuX25vZGVzQXBpID8/IG5ldyBOb2Rlc0FwaSh0aGlzLmFwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzQXBpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZW50QXBpOiBDb250ZW50QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZG9jdW1lbnRMaXN0U2VydmljZTogRG9jdW1lbnRMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlOiBUaHVtYm5haWxTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ29weSBub2RlIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnRFbnRpdGllcyBub2RlcyB0byBjb3B5XG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uIHBlcm1pc3Npb24gd2hpY2ggaXMgbmVlZGVkIHRvIGFwcGx5IHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yIGVsZW1lbnQncyBzZWxlY3RvciB3aGljaCBzaG91bGQgYmUgYXV0b2ZvY3VzZWQgYWZ0ZXIgY2xvc2luZyBtb2RhbFxuICAgKi9cbiAgY29weU5vZGVzKGNvbnRlbnRFbnRpdGllczogYW55W10sIHBlcm1pc3Npb24/OiBzdHJpbmcsIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yPzogc3RyaW5nKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5kb0JhdGNoT3BlcmF0aW9uKE5vZGVBY3Rpb24uQ09QWSwgY29udGVudEVudGl0aWVzLCBwZXJtaXNzaW9uLCBmb2N1c2VkRWxlbWVudE9uQ2xvc2VTZWxlY3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBub2RlIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnRFbnRpdGllcyBub2RlcyB0byBtb3ZlXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uIHBlcm1pc3Npb24gd2hpY2ggaXMgbmVlZGVkIHRvIGFwcGx5IHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yIGVsZW1lbnQncyBzZWxlY3RvciB3aGljaCBzaG91bGQgYmUgYXV0b2ZvY3VzZWQgYWZ0ZXIgY2xvc2luZyBtb2RhbFxuICAgKi9cbiAgbW92ZU5vZGVzKGNvbnRlbnRFbnRpdGllczogYW55W10sIHBlcm1pc3Npb24/OiBzdHJpbmcsIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yPzogc3RyaW5nKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5kb0JhdGNoT3BlcmF0aW9uKE5vZGVBY3Rpb24uTU9WRSwgY29udGVudEVudGl0aWVzLCBwZXJtaXNzaW9uLCBmb2N1c2VkRWxlbWVudE9uQ2xvc2VTZWxlY3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhbCBtZXRob2QgZm9yIHBlcmZvcm1pbmcgdGhlIGdpdmVuIG9wZXJhdGlvbiAoY29weXxtb3ZlKSB0byBtdWx0aXBsZSBub2Rlc1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSAoY29weXxtb3ZlKVxuICAgKiBAcGFyYW0gY29udGVudEVudGl0aWVzIHRoZSBjb250ZW50RW50aXRpZXMgd2hpY2ggaGF2ZSB0byBoYXZlIHRoZSBhY3Rpb24gcGVyZm9ybWVkIG9uXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uIHBlcm1pc3Npb24gd2hpY2ggaXMgbmVlZGVkIHRvIGFwcGx5IHRoZSBhY3Rpb25cbiAgICogQHBhcmFtIGZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yIGVsZW1lbnQncyBzZWxlY3RvciB3aGljaCBzaG91bGQgYmUgYXV0b2ZvY3VzZWQgYWZ0ZXIgY2xvc2luZyBtb2RhbFxuICAgKi9cbiAgZG9CYXRjaE9wZXJhdGlvbihhY3Rpb246IEJhdGNoT3BlcmF0aW9uVHlwZSwgY29udGVudEVudGl0aWVzOiBhbnlbXSwgcGVybWlzc2lvbj86IHN0cmluZywgZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3I/OiBzdHJpbmcpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIGNvbnN0IG9ic2VydmFibGU6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIGlmICghdGhpcy5pc0VudHJ5RW50aXRpZXNBcnJheShjb250ZW50RW50aXRpZXMpKSB7XG4gICAgICBvYnNlcnZhYmxlLmVycm9yKG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7IGVycm9yOiB7IHN0YXR1c0NvZGU6IDQwMCB9IH0pKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNoZWNrUGVybWlzc2lvbihhY3Rpb24sIGNvbnRlbnRFbnRpdGllcywgcGVybWlzc2lvbikpIHtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uU2VsZWN0aW9uID0gdGhpcy5nZXRDb250ZW50Tm9kZVNlbGVjdGlvbihhY3Rpb24sIGNvbnRlbnRFbnRpdGllcywgZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3IpO1xuICAgICAgZGVzdGluYXRpb25TZWxlY3Rpb24uc3Vic2NyaWJlKChzZWxlY3Rpb25zOiBOb2RlW10pID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudEVudHJ5ID0gY29udGVudEVudGl0aWVzWzBdLmVudHJ5O1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIG5vZGVJZCBmb3IgU2hhcmVkIEZpbGVzXG4gICAgICAgIGNvbnN0IGNvbnRlbnRFbnRyeUlkID0gY29udGVudEVudHJ5Lm5vZGVJZCB8fCBjb250ZW50RW50cnkuaWQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZW50RW50cnkuaXNGb2xkZXIgPyAnZm9sZGVyJyA6ICdjb250ZW50JztcbiAgICAgICAgY29uc3QgYmF0Y2g6IGFueVtdID0gW107XG5cbiAgICAgICAgLy8gY29uc2lkZXIgb25seSBmaXJzdCBpdGVtIGluIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gc2VsZWN0aW9uc1swXTtcbiAgICAgICAgbGV0IGFjdGlvbiQ6IE9ic2VydmFibGU8YW55PjtcblxuICAgICAgICBpZiAoYWN0aW9uID09PSBOb2RlQWN0aW9uLk1PVkUgJiYgY29udGVudEVudGl0aWVzLmxlbmd0aCA9PT0gMSAmJiB0eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgICBhY3Rpb24kID0gdGhpcy5kb2N1bWVudExpc3RTZXJ2aWNlLm1vdmVOb2RlKGNvbnRlbnRFbnRyeUlkLCBzZWxlY3Rpb24uaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRlbnRFbnRpdGllcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAvLyBiYXRjaC5wdXNoKHRoaXMuY29weU5vZGVBY3Rpb24obm9kZS5lbnRyeSwgc2VsZWN0aW9uLmlkKSk7XG4gICAgICAgICAgICBiYXRjaC5wdXNoKHRoaXNbYCR7YWN0aW9uLnRvTG93ZXJDYXNlKCl9Tm9kZUFjdGlvbmBdKG5vZGUuZW50cnksIHNlbGVjdGlvbi5pZCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFjdGlvbiQgPSB6aXAoLi4uYmF0Y2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgYWN0aW9uJC5zdWJzY3JpYmUoKG5ld0NvbnRlbnQpID0+IHtcbiAgICAgICAgICBvYnNlcnZhYmxlLm5leHQoYE9QRVJBVElPTi5TVUNDRVNTLiR7dHlwZS50b1VwcGVyQ2FzZSgpfS4ke2FjdGlvbi50b1VwcGVyQ2FzZSgpfWApO1xuXG4gICAgICAgICAgY29uc3QgcHJvY2Vzc2VkRGF0YSA9IHRoaXMucHJvY2Vzc1Jlc3BvbnNlKG5ld0NvbnRlbnQpO1xuICAgICAgICAgIGlmIChhY3Rpb24gPT09IE5vZGVBY3Rpb24uQ09QWSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Q29waWVkLm5leHQocHJvY2Vzc2VkRGF0YS5zdWNjZWVkZWQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSBOb2RlQWN0aW9uLk1PVkUpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudE1vdmVkLm5leHQocHJvY2Vzc2VkRGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBvYnNlcnZhYmxlLmVycm9yLmJpbmQob2JzZXJ2YWJsZSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ic2VydmFibGUuZXJyb3IobmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IHsgc3RhdHVzQ29kZTogNDAzIH0gfSkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgfVxuXG4gIGlzRW50cnlFbnRpdGllc0FycmF5KGNvbnRlbnRFbnRpdGllczogYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoY29udGVudEVudGl0aWVzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vbkVudHJ5Tm9kZSA9IGNvbnRlbnRFbnRpdGllcy5maW5kKChub2RlKSA9PiAhKG5vZGU/LmVudHJ5Py5ub2RlSWQgfHwgbm9kZT8uZW50cnk/LmlkKSk7XG4gICAgICByZXR1cm4gIW5vbkVudHJ5Tm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hlY2tQZXJtaXNzaW9uKGFjdGlvbjogQmF0Y2hPcGVyYXRpb25UeXBlLCBjb250ZW50RW50aXRpZXM6IGFueVtdLCBwZXJtaXNzaW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90QWxsb3dlZE5vZGUgPSBjb250ZW50RW50aXRpZXMuZmluZCgobm9kZSkgPT4gIXRoaXMuaXNBY3Rpb25BbGxvd2VkKGFjdGlvbiwgbm9kZS5lbnRyeSwgcGVybWlzc2lvbikpO1xuICAgIHJldHVybiAhbm90QWxsb3dlZE5vZGU7XG4gIH1cblxuICBnZXRFbnRyeVBhcmVudElkKG5vZGVFbnRyeTogTm9kZSkge1xuICAgIGxldCBlbnRyeVBhcmVudElkID0gJyc7XG5cbiAgICBpZiAobm9kZUVudHJ5LnBhcmVudElkKSB7XG4gICAgICBlbnRyeVBhcmVudElkID0gbm9kZUVudHJ5LnBhcmVudElkO1xuICAgIH0gZWxzZSBpZiAobm9kZUVudHJ5LnBhdGg/LmVsZW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgIGVudHJ5UGFyZW50SWQgPSBub2RlRW50cnkucGF0aC5lbGVtZW50c1tub2RlRW50cnkucGF0aC5lbGVtZW50cy5sZW5ndGggLSAxXS5pZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnlQYXJlbnRJZDtcbiAgfVxuXG4gIGdldENvbnRlbnROb2RlU2VsZWN0aW9uKGFjdGlvbjogTm9kZUFjdGlvbiwgY29udGVudEVudGl0aWVzOiBOb2RlRW50cnlbXSwgZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3I/OiBzdHJpbmcpOiBTdWJqZWN0PE5vZGVbXT4ge1xuICAgIGNvbnN0IGN1cnJlbnRQYXJlbnRGb2xkZXJJZCA9IHRoaXMuZ2V0RW50cnlQYXJlbnRJZChjb250ZW50RW50aXRpZXNbMF0uZW50cnkpO1xuXG4gICAgY29uc3QgY3VzdG9tRHJvcGRvd24gPSBuZXcgU2l0ZVBhZ2luZyh7XG4gICAgICBsaXN0OiB7XG4gICAgICAgIGVudHJpZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbnRyeToge1xuICAgICAgICAgICAgICBndWlkOiAnLW15LScsXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0aW9uLmluc3RhbnQoJ0FQUC5CUk9XU0UuUEVSU09OQUwuU0lERU5BVl9MSU5LLkxBQkVMJylcbiAgICAgICAgICAgIH0gYXMgU2l0ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW50cnk6IHtcbiAgICAgICAgICAgICAgZ3VpZDogJy1teXNpdGVzLScsXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0aW9uLmluc3RhbnQoJ0FQUC5CUk9XU0UuTElCUkFSSUVTLk1FTlUuTVlfTElCUkFSSUVTLlNJREVOQVZfTElOSy5MQUJFTCcpXG4gICAgICAgICAgICB9IGFzIFNpdGVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0gYXMgU2l0ZVBhZ2luZ0xpc3RcbiAgICB9KTtcblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRUaXRsZVRyYW5zbGF0aW9uKGFjdGlvbiwgY29udGVudEVudGl0aWVzKTtcblxuICAgIHRoaXMuaXNTaXRlc0Rlc3RpbmF0aW9uQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgY29uc3QgZGF0YTogQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEgPSB7XG4gICAgICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyxcbiAgICAgIHRpdGxlLFxuICAgICAgY3VycmVudEZvbGRlcklkOiBjdXJyZW50UGFyZW50Rm9sZGVySWQsXG4gICAgICBhY3Rpb25OYW1lOiBhY3Rpb24sXG4gICAgICBkcm9wZG93bkhpZGVNeUZpbGVzOiB0cnVlLFxuICAgICAgZHJvcGRvd25TaXRlTGlzdDogY3VzdG9tRHJvcGRvd24sXG4gICAgICByb3dGaWx0ZXI6IHRoaXMucm93RmlsdGVyLmJpbmQodGhpcyksXG4gICAgICBpbWFnZVJlc29sdmVyOiB0aGlzLmltYWdlUmVzb2x2ZXIuYmluZCh0aGlzKSxcbiAgICAgIGlzU2VsZWN0aW9uVmFsaWQ6IHRoaXMuY2FuQ29weU1vdmVJbnNpZGVJdC5iaW5kKHRoaXMpLFxuICAgICAgYnJlYWRjcnVtYlRyYW5zZm9ybTogdGhpcy5jdXN0b21pemVCcmVhZGNydW1iLmJpbmQodGhpcyksXG4gICAgICBzZWxlY3Q6IG5ldyBTdWJqZWN0PE5vZGVbXT4oKSxcbiAgICAgIGV4Y2x1ZGVTaXRlQ29udGVudDogQ29udGVudE5vZGVEaWFsb2dTZXJ2aWNlLm5vbkRvY3VtZW50U2l0ZUNvbnRlbnRcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgcGFuZWxDbGFzczogJ2FkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItZGlhbG9nJyxcbiAgICAgICAgd2lkdGg6ICc2MzBweCcsXG4gICAgICAgIHJvbGU6ICdkaWFsb2cnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5mb2N1c0FmdGVyQ2xvc2UoZm9jdXNlZEVsZW1lbnRPbkNsb3NlU2VsZWN0b3IpKTtcblxuICAgIGRhdGEuc2VsZWN0LnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YS5zZWxlY3Q7XG4gIH1cblxuICBnZXRUaXRsZVRyYW5zbGF0aW9uKGFjdGlvbjogc3RyaW5nLCBub2RlczogTm9kZUVudHJ5W10gPSBbXSk6IHN0cmluZyB7XG4gICAgbGV0IGtleVByZWZpeCA9ICdJVEVNUyc7XG4gICAgbGV0IG5hbWUgPSAnJztcblxuICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEgJiYgbm9kZXNbMF0uZW50cnkubmFtZSkge1xuICAgICAgbmFtZSA9IG5vZGVzWzBdLmVudHJ5Lm5hbWU7XG4gICAgICBrZXlQcmVmaXggPSAnSVRFTSc7XG4gICAgfVxuXG4gICAgY29uc3QgbnVtYmVyID0gbm9kZXMubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLmluc3RhbnQoYE5PREVfU0VMRUNUT1IuJHthY3Rpb24udG9VcHBlckNhc2UoKX1fJHtrZXlQcmVmaXh9YCwgeyBuYW1lLCBudW1iZXIgfSk7XG4gIH1cblxuICBwcml2YXRlIGNhbkNvcHlNb3ZlSW5zaWRlSXQoZW50cnk6IE5vZGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNFbnRpdHlDcmVhdGVQZXJtaXNzaW9uKGVudHJ5KSAmJiAhdGhpcy5pc1NpdGUoZW50cnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFbnRpdHlDcmVhdGVQZXJtaXNzaW9uKGVudHJ5OiBOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhlbnRyeSwgJ2NyZWF0ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NpdGUoZW50cnkpIHtcbiAgICByZXR1cm4gISFlbnRyeS5ndWlkIHx8IGVudHJ5Lm5vZGVUeXBlID09PSAnc3Q6c2l0ZScgfHwgZW50cnkubm9kZVR5cGUgPT09ICdzdDpzaXRlcyc7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICB9XG5cbiAgLy8gdG9kbzogcmV2aWV3IHRoaXMgYXBwcm9hY2ggb25jZSA1LjIuMyBpcyBvdXRcbiAgcHJpdmF0ZSBjdXN0b21pemVCcmVhZGNydW1iKG5vZGU6IE5vZGUpIHtcbiAgICBpZiAobm9kZT8ucGF0aD8uZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gbm9kZS5wYXRoLmVsZW1lbnRzO1xuXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBpZiAoZWxlbWVudHNbMV0ubmFtZSA9PT0gJ1VzZXIgSG9tZXMnKSB7XG4gICAgICAgICAgZWxlbWVudHMuc3BsaWNlKDAsIDIpO1xuXG4gICAgICAgICAgLy8gbWFrZSBzdXJlIGZpcnN0IGl0ZW0gaXMgJ1BlcnNvbmFsIEZpbGVzJ1xuICAgICAgICAgIGlmIChlbGVtZW50c1swXSkge1xuICAgICAgICAgICAgZWxlbWVudHNbMF0ubmFtZSA9IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5QRVJTT05BTC5USVRMRScpO1xuICAgICAgICAgICAgZWxlbWVudHNbMF0uaWQgPSAnLW15LSc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUubmFtZSA9IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5QRVJTT05BTC5USVRMRScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1sxXS5uYW1lID09PSAnU2l0ZXMnKSB7XG4gICAgICAgICAgdGhpcy5ub3JtYWxpemVTaXRlUGF0aChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSA9PT0gJ1NpdGVzJykge1xuICAgICAgICAgIG5vZGUubmFtZSA9IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5MSUJSQVJJRVMuTUVOVS5NWV9MSUJSQVJJRVMuVElUTEUnKTtcbiAgICAgICAgICBlbGVtZW50cy5zcGxpY2UoMCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUgPT09IG51bGwgJiYgdGhpcy5pc1NpdGVzRGVzdGluYXRpb25BdmFpbGFibGUpIHtcbiAgICAgIG5vZGUgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnQVBQLkJST1dTRS5MSUJSQVJJRVMuTUVOVS5NWV9MSUJSQVJJRVMuVElUTEUnKSxcbiAgICAgICAgcGF0aDogeyBlbGVtZW50czogW10gfVxuICAgICAgfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICAvLyB0b2RvOiByZXZpZXcgdGhpcyBhcHByb2FjaCBvbmNlIDUuMi4zIGlzIG91dFxuICBwcml2YXRlIG5vcm1hbGl6ZVNpdGVQYXRoKG5vZGU6IE5vZGUpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IG5vZGUucGF0aC5lbGVtZW50cztcblxuICAgIC8vIHJlbW92ZSAnQ29tcGFueSBIb21lJ1xuICAgIGVsZW1lbnRzLnNwbGljZSgwLCAxKTtcblxuICAgIC8vIHJlcGxhY2UgZmlyc3QgaXRlbSB3aXRoICdGaWxlIExpYnJhcmllcydcbiAgICBlbGVtZW50c1swXS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdBUFAuQlJPV1NFLkxJQlJBUklFUy5NRU5VLk1ZX0xJQlJBUklFUy5USVRMRScpO1xuICAgIGVsZW1lbnRzWzBdLmlkID0gJy1teXNpdGVzLSc7XG5cbiAgICBpZiAodGhpcy5pc1NpdGVDb250YWluZXIobm9kZSkpIHtcbiAgICAgIC8vIHJlbmFtZSAnZG9jdW1lbnRMaWJyYXJ5JyBlbnRyeSB0byB0aGUgdGFyZ2V0IHNpdGUgZGlzcGxheSBuYW1lXG4gICAgICAvLyBjbGlja2luZyBvbiB0aGUgYnJlYWRjcnVtYiBlbnRyeSBsb2FkcyB0aGUgc2l0ZSBjb250ZW50XG4gICAgICBub2RlLm5hbWUgPSBlbGVtZW50c1sxXS5uYW1lO1xuXG4gICAgICAvLyByZW1vdmUgdGhlIHNpdGUgZW50cnlcbiAgICAgIGVsZW1lbnRzLnNwbGljZSgxLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlICdkb2N1bWVudExpYnJhcnknIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhdGhcbiAgICAgIGNvbnN0IGRvY0xpYiA9IGVsZW1lbnRzLmZpbmRJbmRleCgoZWwpID0+IGVsLm5hbWUgPT09ICdkb2N1bWVudExpYnJhcnknKTtcbiAgICAgIGlmIChkb2NMaWIgPiAtMSkge1xuICAgICAgICBlbGVtZW50cy5zcGxpY2UoZG9jTGliLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc1NpdGVDb250YWluZXIobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgIGlmIChub2RlPy5hc3BlY3ROYW1lcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5vZGUuYXNwZWN0TmFtZXMuaW5kZXhPZignc3Q6c2l0ZUNvbnRhaW5lcicpID49IDA7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvcHlOb2RlQWN0aW9uKG5vZGVFbnRyeTogYW55LCBzZWxlY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAobm9kZUVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb3B5Rm9sZGVyQWN0aW9uKG5vZGVFbnRyeSwgc2VsZWN0aW9uSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhbnkgb3RoZXIgdHlwZSBpcyB0cmVhdGVkIGFzICdjb250ZW50J1xuICAgICAgcmV0dXJuIHRoaXMuY29weUNvbnRlbnRBY3Rpb24obm9kZUVudHJ5LCBzZWxlY3Rpb25JZCk7XG4gICAgfVxuICB9XG5cbiAgY29weUNvbnRlbnRBY3Rpb24oY29udGVudEVudHJ5OiBhbnksIHNlbGVjdGlvbklkOiBzdHJpbmcsIG9sZE5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IF9vbGROYW1lID0gb2xkTmFtZSB8fCBjb250ZW50RW50cnkubmFtZTtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIG5vZGVJZCBmb3IgU2hhcmVkIEZpbGVzXG4gICAgY29uc3QgY29udGVudEVudHJ5SWQgPSBjb250ZW50RW50cnkubm9kZUlkIHx8IGNvbnRlbnRFbnRyeS5pZDtcblxuICAgIC8vIHVzZSBsb2NhbCBtZXRob2QgdW50aWwgbmV3IG5hbWUgcGFyYW1ldGVyIGlzIGFkZGVkIG9uIEFERiBjb3B5Tm9kZVxuICAgIHJldHVybiB0aGlzLmNvcHlOb2RlKGNvbnRlbnRFbnRyeUlkLCBzZWxlY3Rpb25JZCwgX29sZE5hbWUpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgbGV0IGVyclN0YXR1c0NvZGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZXJyb3I6IHsgc3RhdHVzQ29kZSB9XG4gICAgICAgICAgfSA9IEpTT04ucGFyc2UoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIGVyclN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy9cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJTdGF0dXNDb2RlICYmIGVyclN0YXR1c0NvZGUgPT09IDQwOSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvcHlDb250ZW50QWN0aW9uKGNvbnRlbnRFbnRyeSwgc2VsZWN0aW9uSWQsIHRoaXMuZ2V0TmV3TmFtZUZyb20oX29sZE5hbWUsIGNvbnRlbnRFbnRyeS5uYW1lKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZG8gbm90IHRocm93IGVycm9yLCB0byBiZSBhYmxlIHRvIHNob3cgbWVzc2FnZSBpbiBjYXNlIG9mIHBhcnRpYWwgY29weSBvZiBmaWxlc1xuICAgICAgICAgIHJldHVybiBvZihlcnIgfHwgJ1NlcnZlciBlcnJvcicpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb3B5Rm9sZGVyQWN0aW9uKGNvbnRlbnRFbnRyeTogYW55LCBzZWxlY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIG5vZGVJZCBmb3IgU2hhcmVkIEZpbGVzXG4gICAgY29uc3QgY29udGVudEVudHJ5SWQgPSBjb250ZW50RW50cnkubm9kZUlkIHx8IGNvbnRlbnRFbnRyeS5pZDtcbiAgICBsZXQgJGRlc3RpbmF0aW9uRm9sZGVyOiBPYnNlcnZhYmxlPGFueT47XG4gICAgbGV0ICRjaGlsZHJlblRvQ29weTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGxldCBuZXdEZXN0aW5hdGlvbkZvbGRlcjtcblxuICAgIHJldHVybiB0aGlzLmNvcHlOb2RlKGNvbnRlbnRFbnRyeUlkLCBzZWxlY3Rpb25JZCwgY29udGVudEVudHJ5Lm5hbWUpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgbGV0IGVyclN0YXR1c0NvZGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZXJyb3I6IHsgc3RhdHVzQ29kZSB9XG4gICAgICAgICAgfSA9IEpTT04ucGFyc2UoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIGVyclN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgaWYgKGVyclN0YXR1c0NvZGUgJiYgZXJyU3RhdHVzQ29kZSA9PT0gNDA5KSB7XG4gICAgICAgICAgJGRlc3RpbmF0aW9uRm9sZGVyID0gdGhpcy5nZXRDaGlsZEJ5TmFtZShzZWxlY3Rpb25JZCwgY29udGVudEVudHJ5Lm5hbWUpO1xuICAgICAgICAgICRjaGlsZHJlblRvQ29weSA9IHRoaXMuZ2V0Tm9kZUNoaWxkcmVuKGNvbnRlbnRFbnRyeUlkKTtcblxuICAgICAgICAgIHJldHVybiAkZGVzdGluYXRpb25Gb2xkZXIucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKChkZXN0aW5hdGlvbikgPT4ge1xuICAgICAgICAgICAgICBuZXdEZXN0aW5hdGlvbkZvbGRlciA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgICByZXR1cm4gJGNoaWxkcmVuVG9Db3B5O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtZXJnZU1hcCgobm9kZXNUb0NvcHkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBbXTtcbiAgICAgICAgICAgICAgbm9kZXNUb0NvcHkubGlzdC5lbnRyaWVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5lbnRyeS5pc0ZvbGRlcikge1xuICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaCh0aGlzLmNvcHlGb2xkZXJBY3Rpb24obm9kZS5lbnRyeSwgbmV3RGVzdGluYXRpb25Gb2xkZXIuZW50cnkuaWQpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaCh0aGlzLmNvcHlDb250ZW50QWN0aW9uKG5vZGUuZW50cnksIG5ld0Rlc3RpbmF0aW9uRm9sZGVyLmVudHJ5LmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoIWJhdGNoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHppcCguLi5iYXRjaCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZG8gbm90IHRocm93IGVycm9yLCB0byBiZSBhYmxlIHRvIHNob3cgbWVzc2FnZSBpbiBjYXNlIG9mIHBhcnRpYWwgY29weSBvZiBmaWxlc1xuICAgICAgICAgIHJldHVybiBvZihlcnIgfHwgJ1NlcnZlciBlcnJvcicpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBtb3ZlTm9kZUFjdGlvbihub2RlRW50cnksIHNlbGVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMubW92ZURlbGV0ZWRFbnRyaWVzID0gW107XG5cbiAgICBpZiAobm9kZUVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICBjb25zdCBpbml0aWFsUGFyZW50SWQgPSBub2RlRW50cnkucGFyZW50SWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLm1vdmVGb2xkZXJBY3Rpb24obm9kZUVudHJ5LCBzZWxlY3Rpb25JZCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKG5ld0NvbnRlbnQpID0+IHtcbiAgICAgICAgICAvLyB0YWtlIG5vIGV4dHJhIGFjdGlvbiwgaWYgZm9sZGVyIGlzIG1vdmVkIHRvIHRoZSBzYW1lIGxvY2F0aW9uXG4gICAgICAgICAgaWYgKGluaXRpYWxQYXJlbnRJZCA9PT0gc2VsZWN0aW9uSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihuZXdDb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmbGF0dGVuUmVzcG9uc2UgPSB0aGlzLmZsYXR0ZW4obmV3Q29udGVudCk7XG4gICAgICAgICAgY29uc3QgcHJvY2Vzc2VkRGF0YSA9IHRoaXMucHJvY2Vzc1Jlc3BvbnNlKGZsYXR0ZW5SZXNwb25zZSk7XG5cbiAgICAgICAgICAvLyBlbHNlLCBjaGVjayBpZiBtb3ZpbmcgdGhpcyBub2RlRW50cnkgc3VjY2VlZGVkIGZvciBBTEwgb2YgaXRzIG5vZGVzXG4gICAgICAgICAgaWYgKHByb2Nlc3NlZERhdGEuZmFpbGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgZm9sZGVyIHN0aWxsIGV4aXN0cyBvbiBsb2NhdGlvblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRCeU5hbWUoaW5pdGlhbFBhcmVudElkLCBub2RlRW50cnkubmFtZSkucGlwZShcbiAgICAgICAgICAgICAgbWVyZ2VNYXAoKGZvbGRlck9uSW5pdGlhbExvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZvbGRlck9uSW5pdGlhbExvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIG5vZGVJZCBmb3IgU2hhcmVkIEZpbGVzXG4gICAgICAgICAgICAgICAgICBjb25zdCBub2RlRW50cnlJZCA9IG5vZGVFbnRyeS5ub2RlSWQgfHwgbm9kZUVudHJ5LmlkO1xuICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIGl0IGZyb20gbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRBcGkuZGVsZXRlTm9kZShub2RlRW50cnlJZCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZURlbGV0ZWRFbnRyaWVzLnB1c2gobm9kZUVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobmV3Q29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobmV3Q29udGVudCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb2YobmV3Q29udGVudCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhbnkgb3RoZXIgdHlwZSBpcyB0cmVhdGVkIGFzICdjb250ZW50J1xuICAgICAgcmV0dXJuIHRoaXMubW92ZUNvbnRlbnRBY3Rpb24obm9kZUVudHJ5LCBzZWxlY3Rpb25JZCk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUZvbGRlckFjdGlvbihjb250ZW50RW50cnksIHNlbGVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3Mgbm9kZUlkIGZvciBTaGFyZWQgRmlsZXNcbiAgICBjb25zdCBjb250ZW50RW50cnlJZCA9IGNvbnRlbnRFbnRyeS5ub2RlSWQgfHwgY29udGVudEVudHJ5LmlkO1xuICAgIGNvbnN0IGluaXRpYWxQYXJlbnRJZCA9IHRoaXMuZ2V0RW50cnlQYXJlbnRJZChjb250ZW50RW50cnkpO1xuICAgIGxldCAkZGVzdGluYXRpb25Gb2xkZXI6IE9ic2VydmFibGU8YW55PjtcbiAgICBsZXQgJGNoaWxkcmVuVG9Nb3ZlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgbGV0IG5ld0Rlc3RpbmF0aW9uRm9sZGVyO1xuXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5tb3ZlTm9kZShjb250ZW50RW50cnlJZCwgc2VsZWN0aW9uSWQpLnBpcGUoXG4gICAgICBtYXAoKGl0ZW1Nb3ZlZCkgPT4gKHsgaXRlbU1vdmVkLCBpbml0aWFsUGFyZW50SWQgfSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGxldCBlcnJTdGF0dXNDb2RlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGVycm9yOiB7IHN0YXR1c0NvZGUgfVxuICAgICAgICAgIH0gPSBKU09OLnBhcnNlKGVyci5tZXNzYWdlKTtcbiAgICAgICAgICBlcnJTdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyU3RhdHVzQ29kZSAmJiBlcnJTdGF0dXNDb2RlID09PSA0MDkpIHtcbiAgICAgICAgICAkZGVzdGluYXRpb25Gb2xkZXIgPSB0aGlzLmdldENoaWxkQnlOYW1lKHNlbGVjdGlvbklkLCBjb250ZW50RW50cnkubmFtZSk7XG4gICAgICAgICAgJGNoaWxkcmVuVG9Nb3ZlID0gdGhpcy5nZXROb2RlQ2hpbGRyZW4oY29udGVudEVudHJ5SWQpO1xuXG4gICAgICAgICAgcmV0dXJuICRkZXN0aW5hdGlvbkZvbGRlci5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKGRlc3RpbmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIG5ld0Rlc3RpbmF0aW9uRm9sZGVyID0gZGVzdGluYXRpb247XG4gICAgICAgICAgICAgIHJldHVybiAkY2hpbGRyZW5Ub01vdmU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1lcmdlTWFwKChjaGlsZHJlblRvTW92ZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBiYXRjaDogYW55W10gPSBbXTtcbiAgICAgICAgICAgICAgY2hpbGRyZW5Ub01vdmUubGlzdC5lbnRyaWVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5lbnRyeS5pc0ZvbGRlcikge1xuICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaCh0aGlzLm1vdmVGb2xkZXJBY3Rpb24obm9kZS5lbnRyeSwgbmV3RGVzdGluYXRpb25Gb2xkZXIuZW50cnkuaWQpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaCh0aGlzLm1vdmVDb250ZW50QWN0aW9uKG5vZGUuZW50cnksIG5ld0Rlc3RpbmF0aW9uRm9sZGVyLmVudHJ5LmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoIWJhdGNoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihiYXRjaCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHppcCguLi5iYXRjaCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZG8gbm90IHRocm93IGVycm9yLCB0byBiZSBhYmxlIHRvIHNob3cgbWVzc2FnZSBpbiBjYXNlIG9mIHBhcnRpYWwgbW92ZSBvZiBmaWxlc1xuICAgICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBtb3ZlQ29udGVudEFjdGlvbihjb250ZW50RW50cnk6IGFueSwgc2VsZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3Mgbm9kZUlkIGZvciBTaGFyZWQgRmlsZXNcbiAgICBjb25zdCBjb250ZW50RW50cnlJZCA9IGNvbnRlbnRFbnRyeS5ub2RlSWQgfHwgY29udGVudEVudHJ5LmlkO1xuICAgIGNvbnN0IGluaXRpYWxQYXJlbnRJZCA9IHRoaXMuZ2V0RW50cnlQYXJlbnRJZChjb250ZW50RW50cnkpO1xuXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRMaXN0U2VydmljZS5tb3ZlTm9kZShjb250ZW50RW50cnlJZCwgc2VsZWN0aW9uSWQpLnBpcGUoXG4gICAgICBtYXAoKGl0ZW1Nb3ZlZCkgPT4gKHsgaXRlbU1vdmVkLCBpbml0aWFsUGFyZW50SWQgfSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PlxuICAgICAgICAvLyBkbyBub3QgdGhyb3cgZXJyb3IsIHRvIGJlIGFibGUgdG8gc2hvdyBtZXNzYWdlIGluIGNhc2Ugb2YgcGFydGlhbCBtb3ZlIG9mIGZpbGVzXG4gICAgICAgIG9mKGVycilcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2hpbGRCeU5hbWUocGFyZW50SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogU3ViamVjdDxOb2RlQ2hpbGRBc3NvY2lhdGlvbkVudHJ5PiB7XG4gICAgY29uc3QgbWF0Y2hlZE5vZGVzID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgdGhpcy5nZXROb2RlQ2hpbGRyZW4ocGFyZW50SWQpLnN1YnNjcmliZShcbiAgICAgIChjaGlsZHJlbk5vZGVzOiBOb2RlQ2hpbGRBc3NvY2lhdGlvblBhZ2luZykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjaGlsZHJlbk5vZGVzLmxpc3QuZW50cmllcy5maW5kKChub2RlKSA9PiBub2RlLmVudHJ5Lm5hbWUgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBtYXRjaGVkTm9kZXMubmV4dChyZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hdGNoZWROb2Rlcy5uZXh0KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycikgPT4gbWF0Y2hlZE5vZGVzLmVycm9yKGVycilcbiAgICApO1xuICAgIHJldHVybiBtYXRjaGVkTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGlzQWN0aW9uQWxsb3dlZChhY3Rpb246IEJhdGNoT3BlcmF0aW9uVHlwZSwgbm9kZTogTm9kZSwgcGVybWlzc2lvbj86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChhY3Rpb24gPT09IE5vZGVBY3Rpb24uQ09QWSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnRlbnRTZXJ2aWNlLmhhc0FsbG93YWJsZU9wZXJhdGlvbnMobm9kZSwgcGVybWlzc2lvbik7XG4gIH1cblxuICBwcml2YXRlIHJvd0ZpbHRlcihyb3c6IFNoYXJlRGF0YVJvdyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vZGU6IE5vZGUgPSByb3cubm9kZS5lbnRyeTtcblxuICAgIHRoaXMuaXNTaXRlc0Rlc3RpbmF0aW9uQXZhaWxhYmxlID0gISFub2RlWydndWlkJ107XG4gICAgcmV0dXJuICFub2RlLmlzRmlsZSAmJiBub2RlLm5vZGVUeXBlICE9PSAnYXBwOmZvbGRlcmxpbmsnO1xuICB9XG5cbiAgcHJpdmF0ZSBpbWFnZVJlc29sdmVyKHJvdzogU2hhcmVEYXRhUm93KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZW50cnk6IE5vZGUgPSByb3cubm9kZS5lbnRyeTtcbiAgICBpZiAoIXRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhlbnRyeSwgJ3VwZGF0ZScpKSB7XG4gICAgICByZXR1cm4gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbignZGlzYWJsZS9mb2xkZXInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXdOYW1lRnJvbShuYW1lOiBzdHJpbmcsIGJhc2VOYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uTWF0Y2ggPSBuYW1lLm1hdGNoKC9cXC5bXi8uXSskLyk7XG5cbiAgICAvLyByZW1vdmUgZXh0ZW5zaW9uIGluIGNhc2UgdGhlcmUgaXMgb25lXG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGV4dGVuc2lvbk1hdGNoID8gZXh0ZW5zaW9uTWF0Y2hbMF0gOiAnJztcbiAgICBsZXQgZXh0ZW5zaW9uRnJlZSA9IGV4dGVuc2lvbk1hdGNoID8gbmFtZS5zbGljZSgwLCBleHRlbnNpb25NYXRjaC5pbmRleCkgOiBuYW1lO1xuXG4gICAgbGV0IHByZWZpeE51bWJlciA9IDE7XG4gICAgbGV0IGJhc2VFeHRlbnNpb25GcmVlO1xuXG4gICAgaWYgKGJhc2VOYW1lKSB7XG4gICAgICBjb25zdCBiYXNlRXh0ZW5zaW9uTWF0Y2ggPSBiYXNlTmFtZS5tYXRjaCgvXFwuW14vLl0rJC8pO1xuXG4gICAgICAvLyByZW1vdmUgZXh0ZW5zaW9uIGluIGNhc2UgdGhlcmUgaXMgb25lXG4gICAgICBiYXNlRXh0ZW5zaW9uRnJlZSA9IGJhc2VFeHRlbnNpb25NYXRjaCA/IGJhc2VOYW1lLnNsaWNlKDAsIGJhc2VFeHRlbnNpb25NYXRjaC5pbmRleCkgOiBiYXNlTmFtZTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2VFeHRlbnNpb25GcmVlIHx8IGJhc2VFeHRlbnNpb25GcmVlICE9PSBleHRlbnNpb25GcmVlKSB7XG4gICAgICAvLyBjaGVjayBpZiBuYW1lIGFscmVhZHkgaGFzIGludGVnZXIgYXBwZW5kZWQgb24gZW5kOlxuICAgICAgY29uc3Qgb2xkUHJlZml4ID0gZXh0ZW5zaW9uRnJlZS5tYXRjaCgnLVswLTldKyQnKTtcbiAgICAgIGlmIChvbGRQcmVmaXgpIHtcbiAgICAgICAgLy8gaWYgc28sIHRyeSB0byBnZXQgdGhlIG51bWJlciBhdCB0aGUgZW5kXG4gICAgICAgIGNvbnN0IG9sZFByZWZpeE51bWJlciA9IHBhcnNlSW50KG9sZFByZWZpeFswXS5zbGljZSgxKSwgMTApO1xuICAgICAgICBpZiAob2xkUHJlZml4TnVtYmVyLnRvU3RyaW5nKCkgPT09IG9sZFByZWZpeFswXS5zbGljZSgxKSkge1xuICAgICAgICAgIGV4dGVuc2lvbkZyZWUgPSBleHRlbnNpb25GcmVlLnNsaWNlKDAsIG9sZFByZWZpeC5pbmRleCk7XG4gICAgICAgICAgcHJlZml4TnVtYmVyID0gb2xkUHJlZml4TnVtYmVyICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0ZW5zaW9uRnJlZSArICctJyArIHByZWZpeE51bWJlciArIGZpbGVFeHRlbnNpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNoaWxkcmVuIG5vZGVzIG9mIGdpdmVuIHBhcmVudCBub2RlXG4gICAqXG4gICAqIEBwYXJhbSBub2RlSWQgVGhlIGlkIG9mIHRoZSBwYXJlbnQgbm9kZVxuICAgKiBAcGFyYW0gcGFyYW1zIG9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICovXG4gIGdldE5vZGVDaGlsZHJlbihub2RlSWQ6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxOb2RlQ2hpbGRBc3NvY2lhdGlvblBhZ2luZz4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkubGlzdE5vZGVDaGlsZHJlbihub2RlSWQsIHBhcmFtcykpO1xuICB9XG5cbiAgLy8gQ29waWVkIGZyb20gQURGIGRvY3VtZW50LWxpc3Quc2VydmljZSwgYW5kIGFkZGVkIHRoZSBuYW1lIHBhcmFtZXRlclxuICAvKipcbiAgICogQ29weSBhIG5vZGUgdG8gZGVzdGluYXRpb24gbm9kZVxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIFRoZSBpZCBvZiB0aGUgbm9kZSB0byBiZSBjb3BpZWRcbiAgICogQHBhcmFtIHRhcmdldFBhcmVudElkIFRoZSBpZCBvZiB0aGUgZm9sZGVyLW5vZGUgd2hlcmUgdGhlIG5vZGUgaGF2ZSB0byBiZSBjb3BpZWQgdG9cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5ldyBuYW1lIGZvciB0aGUgY29weSB0aGF0IHdvdWxkIGJlIGFkZGVkIG9uIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXJcbiAgICovXG4gIGNvcHlOb2RlKG5vZGVJZDogc3RyaW5nLCB0YXJnZXRQYXJlbnRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5jb3B5Tm9kZShub2RlSWQsIHsgdGFyZ2V0UGFyZW50SWQsIG5hbWUgfSkpO1xuICB9XG5cbiAgcHVibGljIGZsYXR0ZW4obkRpbUFycmF5OiBhbnlbXSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShuRGltQXJyYXkpKSB7XG4gICAgICByZXR1cm4gbkRpbUFycmF5O1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVRdWV1ZSA9IG5EaW1BcnJheS5zbGljZSgwKTtcbiAgICBjb25zdCByZXN1bHRpbmdBcnJheTogYW55W10gPSBbXTtcblxuICAgIGRvIHtcbiAgICAgIG5vZGVRdWV1ZS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgICAgbm9kZVF1ZXVlLnB1c2goLi4ubm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0aW5nQXJyYXkucHVzaChub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IG5vZGVRdWV1ZS5pbmRleE9mKG5vZGUpO1xuICAgICAgICBub2RlUXVldWUuc3BsaWNlKG5vZGVJbmRleCwgMSk7XG4gICAgICB9KTtcbiAgICB9IHdoaWxlIChub2RlUXVldWUubGVuZ3RoKTtcblxuICAgIHJldHVybiByZXN1bHRpbmdBcnJheTtcbiAgfVxuXG4gIHByb2Nlc3NSZXNwb25zZShkYXRhOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IG1vdmVTdGF0dXMgPSB7XG4gICAgICBzdWNjZWVkZWQ6IFtdLFxuICAgICAgZmFpbGVkOiBbXSxcbiAgICAgIHBhcnRpYWxseVN1Y2NlZWRlZDogW11cbiAgICB9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhLnJlZHVjZSgoYWNjLCBuZXh0KSA9PiB7XG4gICAgICAgIGlmIChuZXh0IGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBhY2MuZmFpbGVkLnB1c2gobmV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkge1xuICAgICAgICAgIC8vIGlmIGNvbnRlbnQgb2YgYSBmb2xkZXIgd2FzIG1vdmVkXG5cbiAgICAgICAgICBjb25zdCBmb2xkZXJNb3ZlUmVzcG9uc2VEYXRhID0gdGhpcy5mbGF0dGVuKG5leHQpO1xuICAgICAgICAgIGNvbnN0IGZvdW5kRXJyb3IgPSBmb2xkZXJNb3ZlUmVzcG9uc2VEYXRhLmZpbmQoKG5vZGUpID0+IG5vZGUgaW5zdGFuY2VvZiBFcnJvcik7XG4gICAgICAgICAgLy8gZGF0YSBtaWdodCBjb250YWluIGFsc28gaXRlbXMgb2YgZm9ybTogeyBpdGVtTW92ZWQsIGluaXRpYWxQYXJlbnRJZCB9XG4gICAgICAgICAgY29uc3QgZm91bmRFbnRyeSA9IGZvbGRlck1vdmVSZXNwb25zZURhdGEuZmluZCgobm9kZSkgPT4gbm9kZS5pdGVtTW92ZWQ/LmVudHJ5IHx8IG5vZGU/LmVudHJ5KTtcblxuICAgICAgICAgIGlmICghZm91bmRFcnJvcikge1xuICAgICAgICAgICAgLy8gY29uc2lkZXIgc3VjY2VzcyBpZiBOT05FIG9mIHRoZSBpdGVtcyBmcm9tIHRoZSBmb2xkZXIgbW92ZSByZXNwb25zZSBpcyBhbiBlcnJvclxuICAgICAgICAgICAgYWNjLnN1Y2NlZWRlZC5wdXNoKG5leHQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWZvdW5kRW50cnkpIHtcbiAgICAgICAgICAgIC8vIGNvbnNpZGVyIGZhaWxlZCBpZiBOT05FIG9mIHRoZSBpdGVtcyBoYXMgYW4gZW50cnlcbiAgICAgICAgICAgIGFjYy5mYWlsZWQucHVzaChuZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFydGlhbGx5IG1vdmUgZm9sZGVyXG4gICAgICAgICAgICBhY2MucGFydGlhbGx5U3VjY2VlZGVkLnB1c2gobmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjYy5zdWNjZWVkZWQucHVzaChuZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBtb3ZlU3RhdHVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRhdGEuaXRlbU1vdmVkPy5lbnRyeSB8fCBkYXRhPy5lbnRyeSkge1xuICAgICAgICBtb3ZlU3RhdHVzLnN1Y2NlZWRlZC5wdXNoKGRhdGEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW92ZVN0YXR1cy5mYWlsZWQucHVzaChkYXRhKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vdmVTdGF0dXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0FmdGVyQ2xvc2UoZm9jdXNlZEVsZW1lbnRTZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGZvY3VzZWRFbGVtZW50U2VsZWN0b3IpIHtcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50U2VsZWN0b3IpPy5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -103,7 +103,7 @@ export class NodeTemplateService {
103
103
  return dialog;
104
104
  }
105
105
  transformNode(node) {
106
- if (node && node.path && node.path && node.path.elements instanceof Array) {
106
+ if (node?.path?.elements instanceof Array) {
107
107
  node.path.elements = this.getPathElements(node);
108
108
  }
109
109
  return node;
@@ -146,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
146
146
  providedIn: 'root'
147
147
  }]
148
148
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.AlfrescoApiService }, { type: i2.TranslationService }, { type: i3.MatDialog }]; } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10ZW1wbGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9zZXJ2aWNlcy9ub2RlLXRlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDekcsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBaUMsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBWSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBa0QsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBVTFJLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFDVSxLQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsV0FBK0IsRUFDaEMsTUFBaUI7UUFIaEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWJsQiww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Q0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVPLFNBQVMsQ0FBQyxHQUFpQjtRQUNqQyxNQUFNLElBQUksR0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssY0FBYyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUM7SUFDaEYsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkosQ0FBQztJQUVPLE1BQU0sQ0FBQyxxQkFBcUI7UUFDbEMsUUFBUSxDQUFDLGFBQWEsQ0FBYyxrREFBa0QsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xHLENBQUM7O2dIQTlIVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ3JlYXRlRnJvbVRlbXBsYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9ncy9ub2RlLXRlbXBsYXRlL2NyZWF0ZS1mcm9tLXRlbXBsYXRlLmRpYWxvZyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm9kZSwgUmVzdWx0Tm9kZSwgUGF0aEVsZW1lbnQsIFNlYXJjaEFwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBcHBTdG9yZSwgU25hY2tiYXJFcnJvckFjdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLCBTaGFyZURhdGFSb3csIE5vZGVBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRGlhbG9nQ29uZmlnIHtcbiAgcHJpbWFyeVBhdGhOYW1lOiBzdHJpbmc7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTm9kZVRlbXBsYXRlU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudFRlbXBsYXRlQ29uZmlnOiBUZW1wbGF0ZURpYWxvZ0NvbmZpZyA9IG51bGw7XG4gIHByaXZhdGUgcm9vdE5vZGU6IFJlc3VsdE5vZGU7XG5cbiAgcHJpdmF0ZSBfc2VhcmNoQXBpOiBTZWFyY2hBcGk7XG4gIGdldCBzZWFyY2hBcGkoKTogU2VhcmNoQXBpIHtcbiAgICB0aGlzLl9zZWFyY2hBcGkgPSB0aGlzLl9zZWFyY2hBcGkgPz8gbmV3IFNlYXJjaEFwaSh0aGlzLmFsZnJlc2NvQXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQXBpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZ1xuICApIHt9XG5cbiAgc2VsZWN0VGVtcGxhdGVEaWFsb2coY29uZmlnOiBUZW1wbGF0ZURpYWxvZ0NvbmZpZyk6IFN1YmplY3Q8Tm9kZVtdPiB7XG4gICAgdGhpcy5jdXJyZW50VGVtcGxhdGVDb25maWcgPSBjb25maWc7XG5cbiAgICBjb25zdCBzZWxlY3QgPSBuZXcgU3ViamVjdDxOb2RlW10+KCk7XG4gICAgc2VsZWN0LnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhOiBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUoY29uZmlnLnNlbGVjdGlvblR5cGUpLFxuICAgICAgYWN0aW9uTmFtZTogTm9kZUFjdGlvbi5ORVhULFxuICAgICAgZHJvcGRvd25IaWRlTXlGaWxlczogdHJ1ZSxcbiAgICAgIGN1cnJlbnRGb2xkZXJJZDogbnVsbCxcbiAgICAgIGRyb3Bkb3duU2l0ZUxpc3Q6IG51bGwsXG4gICAgICBicmVhZGNydW1iVHJhbnNmb3JtOiB0aGlzLnRyYW5zZm9ybU5vZGUuYmluZCh0aGlzKSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNob3dTZWFyY2g6IGZhbHNlLFxuICAgICAgc2hvd0Ryb3Bkb3duU2l0ZUxpc3Q6IGZhbHNlLFxuICAgICAgaXNTZWxlY3Rpb25WYWxpZDogdGhpcy5pc1NlbGVjdGlvblZhbGlkLmJpbmQodGhpcyksXG4gICAgICByb3dGaWx0ZXI6IHRoaXMucm93RmlsdGVyLmJpbmQodGhpcylcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSB7XG4gICAgICBxdWVyeToge1xuICAgICAgICBxdWVyeTogYFBBVEg6XCIvLyR7Y29uZmlnLnByaW1hcnlQYXRoTmFtZX1cImAsXG4gICAgICAgIGxhbmd1YWdlOiAnYWZ0cydcbiAgICAgIH0sXG4gICAgICBpbmNsdWRlOiBbJ3BhdGgnLCAncHJvcGVydGllcycsICdhbGxvd2FibGVPcGVyYXRpb25zJywgJ3Blcm1pc3Npb25zJ11cbiAgICB9O1xuXG4gICAgZnJvbSh0aGlzLnNlYXJjaEFwaS5zZWFyY2gocXVlcnkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCBlbnRyeSA9IHJlc3BvbnNlLmxpc3QuZW50cmllc1swXS5lbnRyeTtcbiAgICAgICAgICB0aGlzLnJvb3ROb2RlID0gZW50cnk7XG4gICAgICAgICAgZGF0YS5jdXJyZW50Rm9sZGVySWQgPSBlbnRyeS5pZDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4oQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudCwge1xuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ2FkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItZGlhbG9nJywgJ2FjYS10ZW1wbGF0ZS1ub2RlLXNlbGVjdG9yLWRpYWxvZyddLFxuICAgICAgICAgICAgICB3aWR0aDogJzYzMHB4J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTbmFja2JhckVycm9yQWN0aW9uKCdBUFAuTUVTU0FHRVMuRVJST1JTLkdFTkVSSUMnKSk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoeyBuZXh0OiAoKSA9PiBzZWxlY3QuY29tcGxldGUoKSB9KTtcblxuICAgIHJldHVybiBzZWxlY3Q7XG4gIH1cblxuICBjcmVhdGVUZW1wbGF0ZURpYWxvZyhub2RlOiBOb2RlKTogTWF0RGlhbG9nUmVmPENyZWF0ZUZyb21UZW1wbGF0ZURpYWxvZ0NvbXBvbmVudD4ge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlRnJvbVRlbXBsYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBub2RlLFxuICAgICAgcGFuZWxDbGFzczogJ2FjYS1jcmVhdGUtZnJvbS10ZW1wbGF0ZS1kaWFsb2cnLFxuICAgICAgd2lkdGg6ICc2MzBweCdcbiAgICB9KTtcbiAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4gTm9kZVRlbXBsYXRlU2VydmljZS5mb2N1c0NyZWF0ZU1lbnVCdXR0b24oKSk7XG4gICAgcmV0dXJuIGRpYWxvZztcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtTm9kZShub2RlOiBOb2RlKTogTm9kZSB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXRoICYmIG5vZGUucGF0aCAmJiBub2RlLnBhdGguZWxlbWVudHMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgbm9kZS5wYXRoLmVsZW1lbnRzID0gdGhpcy5nZXRQYXRoRWxlbWVudHMobm9kZSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NlbGVjdGlvblZhbGlkKG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAoIW5vZGUucGF0aC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50VGVtcGxhdGVDb25maWcuc2VsZWN0aW9uVHlwZSA9PT0gJ2ZvbGRlcicpIHtcbiAgICAgIHJldHVybiBub2RlLmlzRm9sZGVyO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlLmlzRmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICBOb2RlVGVtcGxhdGVTZXJ2aWNlLmZvY3VzQ3JlYXRlTWVudUJ1dHRvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aXRsZShzZWxlY3Rpb25UeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdOT0RFX1NFTEVDVE9SLlNFTEVDVF9GSUxFX1RFTVBMQVRFX1RJVExFJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnTk9ERV9TRUxFQ1RPUi5TRUxFQ1RfRk9MREVSX1RFTVBMQVRFX1RJVExFJyk7XG4gIH1cblxuICBwcml2YXRlIHJvd0ZpbHRlcihyb3c6IFNoYXJlRGF0YVJvdyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vZGU6IE5vZGUgPSByb3cubm9kZS5lbnRyeTtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSAhPT0gJ2FwcDpmaWxlbGluaycgJiYgbm9kZS5ub2RlVHlwZSAhPT0gJ2FwcDpmb2xkZXJsaW5rJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF0aEVsZW1lbnRzKG5vZGU6IE5vZGUpOiBQYXRoRWxlbWVudFtdIHtcbiAgICByZXR1cm4gbm9kZS5wYXRoLmVsZW1lbnRzLmZpbHRlcigocGF0aEVsZW1lbnQpID0+ICF0aGlzLnJvb3ROb2RlLnBhdGguZWxlbWVudHMuc29tZSgocm9vdFBhdGhFbGVtZW50KSA9PiBwYXRoRWxlbWVudC5pZCA9PT0gcm9vdFBhdGhFbGVtZW50LmlkKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb2N1c0NyZWF0ZU1lbnVCdXR0b24oKTogdm9pZCB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ2FwcC10b29sYmFyLW1lbnUgYnV0dG9uW2lkPVwiYXBwLnRvb2xiYXIuY3JlYXRlXCJdJykuZm9jdXMoKTtcbiAgfVxufVxuIl19
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10ZW1wbGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9zZXJ2aWNlcy9ub2RlLXRlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDekcsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBaUMsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBWSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBa0QsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBVTFJLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFDVSxLQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsV0FBK0IsRUFDaEMsTUFBaUI7UUFIaEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWJsQiww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QUM7SUFFTyxTQUFTLENBQUMsR0FBaUI7UUFDakMsTUFBTSxJQUFJLEdBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDO0lBQ2hGLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBVTtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFTyxNQUFNLENBQUMscUJBQXFCO1FBQ2xDLFFBQVEsQ0FBQyxhQUFhLENBQWMsa0RBQWtELENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRyxDQUFDOztnSEE5SFUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENyZWF0ZUZyb21UZW1wbGF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3Mvbm9kZS10ZW1wbGF0ZS9jcmVhdGUtZnJvbS10ZW1wbGF0ZS5kaWFsb2cnO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGUsIFJlc3VsdE5vZGUsIFBhdGhFbGVtZW50LCBTZWFyY2hBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQXBwU3RvcmUsIFNuYWNrYmFyRXJyb3JBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50LCBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50RGF0YSwgU2hhcmVEYXRhUm93LCBOb2RlQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZURpYWxvZ0NvbmZpZyB7XG4gIHByaW1hcnlQYXRoTmFtZTogc3RyaW5nO1xuICBzZWxlY3Rpb25UeXBlOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVUZW1wbGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIGN1cnJlbnRUZW1wbGF0ZUNvbmZpZzogVGVtcGxhdGVEaWFsb2dDb25maWcgPSBudWxsO1xuICBwcml2YXRlIHJvb3ROb2RlOiBSZXN1bHROb2RlO1xuXG4gIHByaXZhdGUgX3NlYXJjaEFwaTogU2VhcmNoQXBpO1xuICBnZXQgc2VhcmNoQXBpKCk6IFNlYXJjaEFwaSB7XG4gICAgdGhpcy5fc2VhcmNoQXBpID0gdGhpcy5fc2VhcmNoQXBpID8/IG5ldyBTZWFyY2hBcGkodGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaEFwaTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIGFsZnJlc2NvQXBpU2VydmljZTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2dcbiAgKSB7fVxuXG4gIHNlbGVjdFRlbXBsYXRlRGlhbG9nKGNvbmZpZzogVGVtcGxhdGVEaWFsb2dDb25maWcpOiBTdWJqZWN0PE5vZGVbXT4ge1xuICAgIHRoaXMuY3VycmVudFRlbXBsYXRlQ29uZmlnID0gY29uZmlnO1xuXG4gICAgY29uc3Qgc2VsZWN0ID0gbmV3IFN1YmplY3Q8Tm9kZVtdPigpO1xuICAgIHNlbGVjdC5zdWJzY3JpYmUoe1xuICAgICAgY29tcGxldGU6IHRoaXMuY2xvc2UuYmluZCh0aGlzKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YTogQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEgPSB7XG4gICAgICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlKGNvbmZpZy5zZWxlY3Rpb25UeXBlKSxcbiAgICAgIGFjdGlvbk5hbWU6IE5vZGVBY3Rpb24uTkVYVCxcbiAgICAgIGRyb3Bkb3duSGlkZU15RmlsZXM6IHRydWUsXG4gICAgICBjdXJyZW50Rm9sZGVySWQ6IG51bGwsXG4gICAgICBkcm9wZG93blNpdGVMaXN0OiBudWxsLFxuICAgICAgYnJlYWRjcnVtYlRyYW5zZm9ybTogdGhpcy50cmFuc2Zvcm1Ob2RlLmJpbmQodGhpcyksXG4gICAgICBzZWxlY3QsXG4gICAgICBzaG93U2VhcmNoOiBmYWxzZSxcbiAgICAgIHNob3dEcm9wZG93blNpdGVMaXN0OiBmYWxzZSxcbiAgICAgIGlzU2VsZWN0aW9uVmFsaWQ6IHRoaXMuaXNTZWxlY3Rpb25WYWxpZC5iaW5kKHRoaXMpLFxuICAgICAgcm93RmlsdGVyOiB0aGlzLnJvd0ZpbHRlci5iaW5kKHRoaXMpXG4gICAgfTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgcXVlcnk6IGBQQVRIOlwiLy8ke2NvbmZpZy5wcmltYXJ5UGF0aE5hbWV9XCJgLFxuICAgICAgICBsYW5ndWFnZTogJ2FmdHMnXG4gICAgICB9LFxuICAgICAgaW5jbHVkZTogWydwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucycsICdwZXJtaXNzaW9ucyddXG4gICAgfTtcblxuICAgIGZyb20odGhpcy5zZWFyY2hBcGkuc2VhcmNoKHF1ZXJ5KSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSByZXNwb25zZS5saXN0LmVudHJpZXNbMF0uZW50cnk7XG4gICAgICAgICAgdGhpcy5yb290Tm9kZSA9IGVudHJ5O1xuICAgICAgICAgIGRhdGEuY3VycmVudEZvbGRlcklkID0gZW50cnkuaWQ7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWRpYWxvZycsICdhY2EtdGVtcGxhdGUtbm9kZS1zZWxlY3Rvci1kaWFsb2cnXSxcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MzBweCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLk1FU1NBR0VTLkVSUk9SUy5HRU5FUklDJykpO1xuICAgICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHsgbmV4dDogKCkgPT4gc2VsZWN0LmNvbXBsZXRlKCkgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0O1xuICB9XG5cbiAgY3JlYXRlVGVtcGxhdGVEaWFsb2cobm9kZTogTm9kZSk6IE1hdERpYWxvZ1JlZjxDcmVhdGVGcm9tVGVtcGxhdGVEaWFsb2dDb21wb25lbnQ+IHtcbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZUZyb21UZW1wbGF0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogbm9kZSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtY3JlYXRlLWZyb20tdGVtcGxhdGUtZGlhbG9nJyxcbiAgICAgIHdpZHRoOiAnNjMwcHgnXG4gICAgfSk7XG4gICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IE5vZGVUZW1wbGF0ZVNlcnZpY2UuZm9jdXNDcmVhdGVNZW51QnV0dG9uKCkpO1xuICAgIHJldHVybiBkaWFsb2c7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybU5vZGUobm9kZTogTm9kZSk6IE5vZGUge1xuICAgIGlmIChub2RlPy5wYXRoPy5lbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLnBhdGguZWxlbWVudHMgPSB0aGlzLmdldFBhdGhFbGVtZW50cyhub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0aW9uVmFsaWQobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgIGlmICghbm9kZS5wYXRoLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRUZW1wbGF0ZUNvbmZpZy5zZWxlY3Rpb25UeXBlID09PSAnZm9sZGVyJykge1xuICAgICAgcmV0dXJuIG5vZGUuaXNGb2xkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGUuaXNGaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgIE5vZGVUZW1wbGF0ZVNlcnZpY2UuZm9jdXNDcmVhdGVNZW51QnV0dG9uKCk7XG4gIH1cblxuICBwcml2YXRlIHRpdGxlKHNlbGVjdGlvblR5cGU6IHN0cmluZykge1xuICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSAnZmlsZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLmluc3RhbnQoJ05PREVfU0VMRUNUT1IuU0VMRUNUX0ZJTEVfVEVNUExBVEVfVElUTEUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdOT0RFX1NFTEVDVE9SLlNFTEVDVF9GT0xERVJfVEVNUExBVEVfVElUTEUnKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93RmlsdGVyKHJvdzogU2hhcmVEYXRhUm93KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZTogTm9kZSA9IHJvdy5ub2RlLmVudHJ5O1xuICAgIHJldHVybiBub2RlLm5vZGVUeXBlICE9PSAnYXBwOmZpbGVsaW5rJyAmJiBub2RlLm5vZGVUeXBlICE9PSAnYXBwOmZvbGRlcmxpbmsnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoRWxlbWVudHMobm9kZTogTm9kZSk6IFBhdGhFbGVtZW50W10ge1xuICAgIHJldHVybiBub2RlLnBhdGguZWxlbWVudHMuZmlsdGVyKChwYXRoRWxlbWVudCkgPT4gIXRoaXMucm9vdE5vZGUucGF0aC5lbGVtZW50cy5zb21lKChyb290UGF0aEVsZW1lbnQpID0+IHBhdGhFbGVtZW50LmlkID09PSByb290UGF0aEVsZW1lbnQuaWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvY3VzQ3JlYXRlTWVudUJ1dHRvbigpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignYXBwLXRvb2xiYXItbWVudSBidXR0b25baWQ9XCJhcHAudG9vbGJhci5jcmVhdGVcIl0nKS5mb2N1cygpO1xuICB9XG59XG4iXX0=
@@ -48,7 +48,7 @@ export class LibraryEffects {
48
48
  .select(getAppSelection)
49
49
  .pipe(take(1))
50
50
  .subscribe((selection) => {
51
- if (selection && selection.library) {
51
+ if (selection?.library) {
52
52
  this.content.deleteLibrary(selection.library.entry.id);
53
53
  }
54
54
  });
@@ -63,7 +63,7 @@ export class LibraryEffects {
63
63
  .select(getAppSelection)
64
64
  .pipe(take(1))
65
65
  .subscribe((selection) => {
66
- if (selection && selection.library) {
66
+ if (selection?.library) {
67
67
  this.content.leaveLibrary(selection.library.entry.id, action.configuration?.focusedElementOnCloseSelector);
68
68
  }
69
69
  });
@@ -89,7 +89,7 @@ export class LibraryEffects {
89
89
  .select(getAppSelection)
90
90
  .pipe(take(1))
91
91
  .subscribe((selection) => {
92
- if (selection && selection.library) {
92
+ if (selection?.library) {
93
93
  const { id } = selection.library.entry;
94
94
  const { title, description, visibility } = action.payload;
95
95
  const siteBody = {
@@ -108,4 +108,4 @@ LibraryEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: LibraryEffects, decorators: [{
109
109
  type: Injectable
110
110
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Actions }, { type: i3.ContentManagementService }, { type: i4.ContentApiService }]; } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2xpYnJhcnkuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFLTCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFFbkIsZUFBZSxFQUNoQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQUdyRixNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLEtBQXNCLEVBQ3RCLFFBQWlCLEVBQ2pCLE9BQWlDLEVBQ2pDLFVBQTZCO1FBSDdCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFHdkMsbUJBQWMsR0FBRyxZQUFZLENBQzNCLEdBQUcsRUFBRSxDQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQXNCLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUN0RCxH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Q0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUMxQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztJQTFHQyxDQUFDOzsyR0FOTyxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ3JlYXRlTGlicmFyeUFjdGlvbixcbiAgRGVsZXRlTGlicmFyeUFjdGlvbixcbiAgTGVhdmVMaWJyYXJ5QWN0aW9uLFxuICBMaWJyYXJ5QWN0aW9uVHlwZXMsXG4gIE5hdmlnYXRlTGlicmFyeUFjdGlvbixcbiAgTmF2aWdhdGVSb3V0ZUFjdGlvbixcbiAgU25hY2tiYXJFcnJvckFjdGlvbixcbiAgVXBkYXRlTGlicmFyeUFjdGlvbixcbiAgZ2V0QXBwU2VsZWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSwgY3JlYXRlRWZmZWN0IH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50QXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IENvbnRlbnRNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRlbnQtbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExpYnJhcnlFZmZlY3RzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBjb250ZW50OiBDb250ZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZW50QXBpOiBDb250ZW50QXBpU2VydmljZVxuICApIHt9XG5cbiAgZGVsZXRlTGlicmFyeSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlPERlbGV0ZUxpYnJhcnlBY3Rpb24+KExpYnJhcnlBY3Rpb25UeXBlcy5EZWxldGUpLFxuICAgICAgICBtYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50LmRlbGV0ZUxpYnJhcnkoYWN0aW9uLnBheWxvYWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAgIC5zZWxlY3QoZ2V0QXBwU2VsZWN0aW9uKVxuICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5saWJyYXJ5KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuZGVsZXRlTGlicmFyeShzZWxlY3Rpb24ubGlicmFyeS5lbnRyeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBsZWF2ZUxpYnJhcnkkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZTxMZWF2ZUxpYnJhcnlBY3Rpb24+KExpYnJhcnlBY3Rpb25UeXBlcy5MZWF2ZSksXG4gICAgICAgIG1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQubGVhdmVMaWJyYXJ5KGFjdGlvbi5wYXlsb2FkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ubGlicmFyeSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmxlYXZlTGlicmFyeShzZWxlY3Rpb24ubGlicmFyeS5lbnRyeS5pZCwgYWN0aW9uLmNvbmZpZ3VyYXRpb24/LmZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGNyZWF0ZUxpYnJhcnkkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZTxDcmVhdGVMaWJyYXJ5QWN0aW9uPihMaWJyYXJ5QWN0aW9uVHlwZXMuQ3JlYXRlKSxcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5jb250ZW50LmNyZWF0ZUxpYnJhcnkoKSksXG4gICAgICAgIG1hcCgobGlicmFyeUlkKSA9PiBuZXcgTmF2aWdhdGVMaWJyYXJ5QWN0aW9uKGxpYnJhcnlJZCkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IHRydWUgfVxuICApO1xuXG4gIG5hdmlnYXRlTGlicmFyeSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlPE5hdmlnYXRlTGlicmFyeUFjdGlvbj4oTGlicmFyeUFjdGlvblR5cGVzLk5hdmlnYXRlKSxcbiAgICAgICAgbWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBsaWJyYXJ5SWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICBpZiAobGlicmFyeUlkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgICAgICAgLmdldE5vZGUobGlicmFyeUlkLCB7IHJlbGF0aXZlUGF0aDogJy9kb2N1bWVudExpYnJhcnknIH0pXG4gICAgICAgICAgICAgIC5waXBlKG1hcCgobm9kZSkgPT4gbm9kZS5lbnRyeS5pZCkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IGFjdGlvbi5yb3V0ZSA/IGFjdGlvbi5yb3V0ZSA6ICdsaWJyYXJpZXMnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVSb3V0ZUFjdGlvbihbcm91dGUsIGlkXSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLk1FU1NBR0VTLkVSUk9SUy5NSVNTSU5HX0NPTlRFTlQnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHVwZGF0ZUxpYnJhcnkkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZTxVcGRhdGVMaWJyYXJ5QWN0aW9uPihMaWJyYXJ5QWN0aW9uVHlwZXMuVXBkYXRlKSxcbiAgICAgICAgbWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ubGlicmFyeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaWQgfSA9IHNlbGVjdGlvbi5saWJyYXJ5LmVudHJ5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGl0bGUsIGRlc2NyaXB0aW9uLCB2aXNpYmlsaXR5IH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNpdGVCb2R5ID0ge1xuICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnVwZGF0ZUxpYnJhcnkoaWQsIHNpdGVCb2R5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcbn1cbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2xpYnJhcnkuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFLTCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFFbkIsZUFBZSxFQUNoQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7OztBQUdyRixNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLEtBQXNCLEVBQ3RCLFFBQWlCLEVBQ2pCLE9BQWlDLEVBQ2pDLFVBQTZCO1FBSDdCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFHdkMsbUJBQWMsR0FBRyxZQUFZLENBQzNCLEdBQUcsRUFBRSxDQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQXNCLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUN0RCxH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Q0FBQyxDQUFDO2lCQUMxQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztJQTFHQyxDQUFDOzsyR0FOTyxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQge1xuICBBcHBTdG9yZSxcbiAgQ3JlYXRlTGlicmFyeUFjdGlvbixcbiAgRGVsZXRlTGlicmFyeUFjdGlvbixcbiAgTGVhdmVMaWJyYXJ5QWN0aW9uLFxuICBMaWJyYXJ5QWN0aW9uVHlwZXMsXG4gIE5hdmlnYXRlTGlicmFyeUFjdGlvbixcbiAgTmF2aWdhdGVSb3V0ZUFjdGlvbixcbiAgU25hY2tiYXJFcnJvckFjdGlvbixcbiAgVXBkYXRlTGlicmFyeUFjdGlvbixcbiAgZ2V0QXBwU2VsZWN0aW9uXG59IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSwgY3JlYXRlRWZmZWN0IH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50QXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IENvbnRlbnRNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRlbnQtbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExpYnJhcnlFZmZlY3RzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBjb250ZW50OiBDb250ZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZW50QXBpOiBDb250ZW50QXBpU2VydmljZVxuICApIHt9XG5cbiAgZGVsZXRlTGlicmFyeSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlPERlbGV0ZUxpYnJhcnlBY3Rpb24+KExpYnJhcnlBY3Rpb25UeXBlcy5EZWxldGUpLFxuICAgICAgICBtYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50LmRlbGV0ZUxpYnJhcnkoYWN0aW9uLnBheWxvYWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAgIC5zZWxlY3QoZ2V0QXBwU2VsZWN0aW9uKVxuICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uPy5saWJyYXJ5KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuZGVsZXRlTGlicmFyeShzZWxlY3Rpb24ubGlicmFyeS5lbnRyeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBsZWF2ZUxpYnJhcnkkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZTxMZWF2ZUxpYnJhcnlBY3Rpb24+KExpYnJhcnlBY3Rpb25UeXBlcy5MZWF2ZSksXG4gICAgICAgIG1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQubGVhdmVMaWJyYXJ5KGFjdGlvbi5wYXlsb2FkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAgICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbj8ubGlicmFyeSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmxlYXZlTGlicmFyeShzZWxlY3Rpb24ubGlicmFyeS5lbnRyeS5pZCwgYWN0aW9uLmNvbmZpZ3VyYXRpb24/LmZvY3VzZWRFbGVtZW50T25DbG9zZVNlbGVjdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGNyZWF0ZUxpYnJhcnkkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZTxDcmVhdGVMaWJyYXJ5QWN0aW9uPihMaWJyYXJ5QWN0aW9uVHlwZXMuQ3JlYXRlKSxcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5jb250ZW50LmNyZWF0ZUxpYnJhcnkoKSksXG4gICAgICAgIG1hcCgobGlicmFyeUlkKSA9PiBuZXcgTmF2aWdhdGVMaWJyYXJ5QWN0aW9uKGxpYnJhcnlJZCkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IHRydWUgfVxuICApO1xuXG4gIG5hdmlnYXRlTGlicmFyeSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlPE5hdmlnYXRlTGlicmFyeUFjdGlvbj4oTGlicmFyeUFjdGlvblR5cGVzLk5hdmlnYXRlKSxcbiAgICAgICAgbWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBsaWJyYXJ5SWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICBpZiAobGlicmFyeUlkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgICAgICAgLmdldE5vZGUobGlicmFyeUlkLCB7IHJlbGF0aXZlUGF0aDogJy9kb2N1bWVudExpYnJhcnknIH0pXG4gICAgICAgICAgICAgIC5waXBlKG1hcCgobm9kZSkgPT4gbm9kZS5lbnRyeS5pZCkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IGFjdGlvbi5yb3V0ZSA/IGFjdGlvbi5yb3V0ZSA6ICdsaWJyYXJpZXMnO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmF2aWdhdGVSb3V0ZUFjdGlvbihbcm91dGUsIGlkXSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLk1FU1NBR0VTLkVSUk9SUy5NSVNTSU5HX0NPTlRFTlQnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHVwZGF0ZUxpYnJhcnkkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZTxVcGRhdGVMaWJyYXJ5QWN0aW9uPihMaWJyYXJ5QWN0aW9uVHlwZXMuVXBkYXRlKSxcbiAgICAgICAgbWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAuc2VsZWN0KGdldEFwcFNlbGVjdGlvbilcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbj8ubGlicmFyeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaWQgfSA9IHNlbGVjdGlvbi5saWJyYXJ5LmVudHJ5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdGl0bGUsIGRlc2NyaXB0aW9uLCB2aXNpYmlsaXR5IH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNpdGVCb2R5ID0ge1xuICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnVwZGF0ZUxpYnJhcnkoaWQsIHNpdGVCb2R5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcbn1cbiJdfQ==