application-sidebar 1.0.22 → 1.0.23

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.
@@ -19,6 +19,7 @@ export class ApplicationSidebarService {
19
19
  enableAllMenusByOrg = [30780];
20
20
  appDetails;
21
21
  isStructureApiSupport;
22
+ isManagedServiceAcc;
22
23
  SettingsMenuList;
23
24
  appNames;
24
25
  menulists;
@@ -113,7 +114,7 @@ export class ApplicationSidebarService {
113
114
  if (appName.id == 'ads_amazon_dsp') {
114
115
  if (list.children && list.children.length > 0) {
115
116
  for (let child of list.children) {
116
- if (!this.isStructureApiSupport && child.id == "ams_dsp_settings") {
117
+ if ((this.isManagedServiceAcc || !this.isStructureApiSupport) && child.id == "ams_dsp_settings") {
117
118
  child.children = child.children.filter(s_child => s_child.id !== 'ams_dsp_rules');
118
119
  }
119
120
  }
@@ -831,4 +832,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
831
832
  providedIn: 'root'
832
833
  }]
833
834
  }], ctorParameters: function () { return [{ type: i1.RestApiService }, { type: i2.ActivatedRoute }, { type: i3.TranslationService }, { type: i4.UrlContextService }]; } });
834
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUszRCxNQUFNLE9BQU8seUJBQXlCO0lBNEM1QjtJQUNBO0lBQ0E7SUFDQTtJQTdDVCxVQUFVLEdBQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSw4QkFBOEIsRUFBRSxzQ0FBc0MsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsd0JBQXdCLEVBQUMsZ0JBQWdCLEVBQUMsdUJBQXVCLEVBQUMsa0JBQWtCLEVBQUMseUJBQXlCLEVBQUMsZUFBZSxDQUFDLENBQUM7SUFDN3FCLFFBQVEsR0FBTSxFQUFFLENBQUM7SUFFakIsY0FBYyxHQUFLLEVBQUUsQ0FBQztJ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QUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckQsT0FBTyxtQ0FBbUMsQ0FBQztTQUMzQztJQUNGLENBQUM7MkhBdHpCVyx5QkFBeUI7K0hBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdEFwaVNlcnZpY2UgfSBmcm9tICcuL3Jlc3QtYXBpLnNlcnZpY2VzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXJsQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3VybC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRU5fTEFCRUxTIH0gZnJvbSAnLi4vdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy1lbic7XG5pbXBvcnQgeyBKQV9MQUJFTFMgfSBmcm9tICcuLi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLWphJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhclNlcnZpY2Uge1xuXG5cdGNvbmRpdGlvbnMgXHRcdFx0PSBbJ29yZ191c2VyX2N0cmwnLCAndmlzaWJpbGl0eV9yb2xlcycsICd2aXNpYmlsaXR5X3JvbGVzX25vdF9pbicsICdhY2NvdW50X2lkcycsICdjdXN0b21lcl90eXBlc19ub3RfaW4nLCdjdXN0b21lcl90eXBlcycsJ29yZ2FuaXphdGlvbl9pZHMnLCAnb3JnYW5pemF0aW9uX2lkc19ub3RfaW4nLCAnYWNjb3VudF90eXBlJywgJ2FjY291bnRfaWRzX25vdF9pbicsICdvcmdhbml6YXRpb25fc2V0dGluZycsICdvcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4nLCAnYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjaycsICdjYW1wYWlnbl90eXBlcycsICdpbmNvbnRleHRfY2FtcGFpZ25fdGFyZ2V0aW5nJywgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmdfd2FsbWFydCcsICdzdWJzY3JpcHRpb25fdHlwZXMnLCAnc2l0ZUlkcycsICdzaXRlTm90SWRzJywgJ25vdF9hY2NvdW50X3R5cGUnLCAnbm90X2FjY291bnRfbmFtZScsICdkaXNhYmxlX3JlYWRvbmx5X29yZycsICd1c2VyX2VtYWlscycsICdoaWRlX2Zvcl91c2VyJywgJ2FwcF9vcmdfc2V0dGluZycsJ2FwcF9vcmdfc2V0dGluZ19ub3RfaW4nLCduZ19hcHBfc2V0dGluZycsJ25nX2FwcF9zZXR0aW5nX25vdF9pbicsJ3RhcmdldHRpbmdfdHlwZXMnLCd0YXJnZXR0aW5nX3R5cGVzX25vdF9pbicsJ2hpZGVfZm9yX3VzZXInXTtcblx0TWVudUxpc3QgXHRcdFx0PSBbXTtcblxuXHRhcHBsaWNhdGlvbklkcyBcdFx0PSBbXTtcblx0ZW5hYmxlQWxsTWVudXNCeU9yZyA9IFszMDc4MF1cblx0XG5cdGFwcERldGFpbHM6XHRhbnk7XG5cdGlzU3RydWN0dXJlQXBpU3VwcG9ydDpcdGFueTtcblx0U2V0dGluZ3NNZW51TGlzdDogYW55W107XG5cdGFwcE5hbWVzOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBtZW51bGlzdHM6IGFueTtcblx0Y29udGVudEFwcFJvdXRlc1x0XHRcdD1bJ2NvbnRlbnQtaW5zaWdodCcsJ2NvbnRlbnQtYW5hbHl0aWNzJywnY29udGVudCcsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnXVxuXHRzb3ZBcHBSb3V0ZXNcdFx0XHRcdD1bJ2luc2lnaHRzJywnc2hhcmUtb2Ytdm9pY2UnLCdzb3YnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJ11cblx0c2VsbGVyQW5hbHl0aWNzQXBwUm91dGVzIFx0PVsnc2VsbGVyL2luc2lnaHRzJywncHJvZHVjdC1tZXRhLWRhdGEnLCdicmFuZC10ZXJtcy1zZXR0aW5ncycsJ2xhYmVscy1zZXR0aW5ncycsJ3N1Yi1icmFuZHMnLCdzdWItYnJhbmRzLW1hcHBpbmcnLCdzb3Ytc2V0dGluZ3MnICwnY29udGVudC1zZXR0aW5ncyddXG5cdHZlbmRvckFuYWx5dGljc0FwcFJvdXRlc1x0PVsndmVuZG9yL2luc2lnaHRzJywncHJvZHVjdC1tZXRhLWRhdGEnLCdicmFuZC10ZXJtcy1zZXR0aW5ncycsJ2xhYmVscy1zZXR0aW5ncycsJ3N1Yi1icmFuZHMnLCdzdWItYnJhbmRzLW1hcHBpbmcnLCdzb3Ytc2V0dGluZ3MnICwnY29udGVudC1zZXR0aW5ncyddXG5cdFxuXHR0eXBlU3RhdHVzQ29uZmlncyA9IHtcbiAgICAgICAgJ1NQT05TT1JFRF9LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9QUk9EVUNUX01BTlVBTF9UQVJHRVRJTkdfQklEUycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX1BST0RVQ1RfQVVUT19UQVJHRVRJTkdfQklEUycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX0tFWVdPUkRfQVVUTycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX0tFWVdPUkQnIDogdHJ1ZSxcbiAgICAgICAgJ1NQX0tFWVdPUkRTX0JJRF9HQVAnIDogZmFsc2UsXG4gICAgICAgICdTUF9QTEFDRU1FTlRfQklEJyA6IGZhbHNlLFxuICAgICAgICAnU1BfVEFSR0VUSU5HX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnU1BfTUFUQ0hfVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdTUF9TQl9LRVlXT1JEX1BBUklUWScgOiB0cnVlLFxuICAgICAgICAnSEVBRExJTkVfS0VZV09SRF9CSURTJyA6IHRydWUsXG4gICAgICAgICdTQl9LRVlXT1JEU19CSURfR0FQJyA6IGZhbHNlLFxuICAgICAgICAnU0JfTUFUQ0hfVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdTQl9TUF9LRVlXT1JEX1BBUklUWScgOiB0cnVlLFxuICAgICAgICAnTk9fS0VZV09SRF9CSURTJyA6IHRydWUsXG4gICAgICAgICdDQU1QQUlHTl9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ0FVVE9fVE9fTUFOVUFMX0FTSU5fUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdNQU5VQUxfVE9fQVVUT19BU0lOX1BBUklUWScgOiB0cnVlLFxuICAgICAgICAnQ09NUEVUSVRPUl9QUk9EVUNUJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfQlJBTkRfS0VZV09SRCc6IHRydWVcbiAgICB9XG5cblx0XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBSZXN0QXBpU2VydmljZTogUmVzdEFwaVNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTpBY3RpdmF0ZWRSb3V0ZSxcblx0XHRwcml2YXRlIHRyYW5zbGF0ZTpUcmFuc2xhdGlvblNlcnZpY2UsXG5cdFx0cHJpdmF0ZSB1cmxDb250ZXh0U2VydmljZTogVXJsQ29udGV4dFNlcnZpY2UpIHt9XG5cblx0Z2V0VHlwZVN0YXR1c0NvbmZpZ3MoKXtcblx0XHRyZXR1cm4gdGhpcy50eXBlU3RhdHVzQ29uZmlncztcblx0fVxuXHRjb25zdHJ1Y3RDaGlsZE1lbnVzKG1lbnVJdGVtcykge1xuICAgICAgICBpZiAodGhpcy5hcHBEZXRhaWxzLmxpc3RNZW51cykge1xuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBtZW51SXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcHBEZXRhaWxzLmFwcFNldCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZC5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMuYXBwbGljYXRpb25JZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxpc3RNZW51SXRlbSBvZiB0aGlzLmFwcERldGFpbHMubGlzdE1lbnVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT0gbGlzdE1lbnVJdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBsaXN0TWVudUl0ZW0uY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uaWQgPT0gdGhpcy5hcHBEZXRhaWxzLmFwcGxpY2F0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuYXBwRGV0YWlscy5saXN0TWVudXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW51SXRlbXM7XG4gICAgfVxuXG5cdGdldE1lbnVMaXN0KGFwcERldGFpbHMsIG1lbnVsaXN0cykge1xuICAgICAgICB0aGlzLmFwcERldGFpbHMgPSBhcHBEZXRhaWxzO1xuICAgICAgICB0aGlzLk1lbnVMaXN0ID0gW107XG4gICAgICAgIGxldCBhcHBlbmRDaGlsZE1lbnVzO1xuICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignaGVyb2t1YXBwJykgPiAtMSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdsb2NhbGhvc3QnKSA+IC0xKSB7XG4gICAgICAgICAgICBhcHBlbmRDaGlsZE1lbnVzID0gdGhpcy5jb25zdHJ1Y3RDaGlsZE1lbnVzKG1lbnVsaXN0cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhcHBlbmRDaGlsZE1lbnVzID0gbWVudWxpc3RzO1xuICAgICAgICB9XG4gICAgICAgIGFwcGVuZENoaWxkTWVudXMuZm9yRWFjaCgobWVudSkgPT4ge1xuICAgICAgICAgICAgbWVudS5uYW1lID0gdGhpcy50cmFuc2xhdGUudHJhbnNsYXRlTmFtZShtZW51Lm5hbWUpO1xuICAgICAgICAgICAgbWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkTWVudSkgPT4ge1xuICAgICAgICAgICAgICAgIGNoaWxkTWVudS5uYW1lID0gdGhpcy50cmFuc2xhdGUudHJhbnNsYXRlTmFtZShjaGlsZE1lbnUubmFtZSk7XG4gICAgICAgICAgICAgICAgY2hpbGRNZW51LmNoaWxkcmVuICYmIGNoaWxkTWVudS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZC5uYW1lID0gdGhpcy50cmFuc2xhdGUudHJhbnNsYXRlTmFtZShjaGlsZC5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tZW51bGlzdHMgPSBhcHBlbmRDaGlsZE1lbnVzLmZpbHRlcihsaXN0ID0+IGxpc3QuaWQgIT09ICdhcHBfZ2xvYmFsX3NldHRpbmdzJyk7XG4gICAgICAgIGxldCBzb3J0ZWRNZW51bGlzdHMgPSB0aGlzLm1lbnVsaXN0cy5zb3J0KChhLCBiKSA9PiAoYS5vcmRlciA+IGIub3JkZXIpID8gMSA6IC0xKTtcbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvbklkcyA9IHNvcnRlZE1lbnVsaXN0cy5tYXAoKGFwcElkKSA9PiBhcHBJZC5pZCk7XG4gICAgICAgIHRoaXMuYXBwTmFtZXMgPSB0aGlzLmFwcGxpY2F0aW9uSWRzO1xuICAgICAgICBpZigodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQgPT09IDEwMzkwIHx8XG4gICAgICAgICAgICB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCA9PT0gMTA1MzApICYmXG4gICAgICAgICAgICB0aGlzLmFwcERldGFpbHMudXNlckluZm8uZW1haWwgPT0gXCJzcmVlbmF0aEBpbnRlbnR3aXNlLmNvbVwiKSB7XG4gICAgICAgICAgICB0aGlzLmFwcE5hbWVzID0gdGhpcy5hcHBsaWNhdGlvbklkcy5maWx0ZXIoKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG5hbWUgIT0gJ2Fkc19hbWF6b25fY29udGVudF9zaGFyZV9vZl92b2ljZScgJiYgbmFtZSAhPSAnYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBhcHBOYW1lIG9mIHNvcnRlZE1lbnVsaXN0cykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwTmFtZXMuaW5kZXhPZihhcHBOYW1lLmlkKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3QgJiYgbGlzdC5jaGlsZHJlbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwcE5hbWUuaWQgPT0gJ2Fkc19hbWF6b25fZHNwJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3QuY2hpbGRyZW4gJiYgbGlzdC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbGlzdC5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTdHJ1Y3R1cmVBcGlTdXBwb3J0ICYmIGNoaWxkLmlkID09IFwiYW1zX2RzcF9zZXR0aW5nc1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IGNoaWxkLmNoaWxkcmVuLmZpbHRlcihzX2NoaWxkID0+IHNfY2hpbGQuaWQgIT09ICdhbXNfZHNwX3J1bGVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk1lbnVMaXN0LnB1c2gobGlzdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk1lbnVMaXN0LnB1c2gobGlzdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhcHBOYW1lLnR5cGUgIT0gJ2V4cGFuZGFibGUnKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3QgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuTWVudUxpc3Q7XG4gICAgfVxuXG5cdGdldEFwcGxpY2F0aW9uTWVudUl0ZW0oY3VycmVudE1lbnVJdGVtOmFueSk6IGFueSB7XG5cdFx0bGV0IG1lbnVJdGVtID0ge1xuXHRcdFx0Y2hpbGRyZW4gOiBbXVxuXHRcdH07XG5cblx0XHRpZihjdXJyZW50TWVudUl0ZW0udHlwZSAhPSAnZXhwYW5kYWJsZScpe1xuXHRcdFx0bGV0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0Y29uc3QgaGFzQ29uZGl0aW9uc3RvQ2hlY2sgPSB0aGlzLmNvbmRpdGlvbnMuc29tZShjb25kaXRpb24gPT4gYWxsS2V5cy5pbmNsdWRlcyhjb25kaXRpb24pKVxuXHRcdFx0aWYoaGFzQ29uZGl0aW9uc3RvQ2hlY2spe1xuXHRcdFx0XHRsZXQgaXNNZW51QWxsb3dlZCA9IHRoaXMuY2hlY2tBbGxDb25kaXRpb25zKGN1cnJlbnRNZW51SXRlbSwgdGhpcy5jb25kaXRpb25zLCBhbGxLZXlzKTtcblx0XHRcdFx0aWYoaXNNZW51QWxsb3dlZCl7XG5cdFx0XHRcdFx0bWVudUl0ZW0gPSBjdXJyZW50TWVudUl0ZW07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygncmV0dXJuIGVtcHR5Jyk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRtZW51SXRlbSA9IGN1cnJlbnRNZW51SXRlbTtcblx0XHRcdH1cblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdGxldCBhbGxLZXlzID0gT2JqZWN0LmtleXMoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdGNvbnN0IGhhc0NvbmRpdGlvbnN0b0NoZWNrID0gdGhpcy5jb25kaXRpb25zLnNvbWUoY29uZGl0aW9uID0+IGFsbEtleXMuaW5jbHVkZXMoY29uZGl0aW9uKSlcblx0XHRcdGlmKCFoYXNDb25kaXRpb25zdG9DaGVjayB8fCAoaGFzQ29uZGl0aW9uc3RvQ2hlY2sgJiYgdGhpcy5jaGVja0FsbENvbmRpdGlvbnMoY3VycmVudE1lbnVJdGVtLCB0aGlzLmNvbmRpdGlvbnMsIGFsbEtleXMpKSkge1xuXHRcdFx0XHRPYmplY3Qua2V5cyhjdXJyZW50TWVudUl0ZW0pLmZvckVhY2goKGtleSk9PnsgXG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBjdXJyZW50TWVudUl0ZW1ba2V5XSAhPSBcIm9iamVjdFwiICkge1xuXHRcdFx0XHRcdFx0bWVudUl0ZW1ba2V5XSA9IGN1cnJlbnRNZW51SXRlbVtrZXldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0bWVudUl0ZW0uY2hpbGRyZW4gPSBbXTtcblx0XHRcdFx0Zm9yKGxldCBjaGlsZCBvZiBjdXJyZW50TWVudUl0ZW0uY2hpbGRyZW4pe1xuXHRcdFx0XHRcdGxldCBuYXZfbWVudSA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShjaGlsZCk7XG5cdFx0XHRcdFx0aWYobmF2X21lbnUgIT0gbnVsbCl7IFxuXHRcdFx0XHRcdFx0aWYobmF2X21lbnUuY2hpbGRyZW4gIT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHRcdFx0aWYobmF2X21lbnUuY2hpbGRyZW4ubGVuZ3RoID4gMCl7XG5cdFx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uY2hpbGRyZW4ucHVzaChuYXZfbWVudSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdG1lbnVJdGVtLmNoaWxkcmVuLnB1c2gobmF2X21lbnUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cdFx0XHRcblx0XHR9XG5cdFx0cmV0dXJuIG1lbnVJdGVtO1xuXHR9XG5cblx0Z2V0R2xvYmFsU2V0dGluZ3NNZW51KGFwcERldGFpbHMgOiBhbnksIG1lbnVsaXN0cykge1xuXHRcdHRoaXMuYXBwRGV0YWlscyA9IGFwcERldGFpbHM7XHRcblx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QgPSBbXTtcblx0XHRsZXQgZ2xvYmFsU2V0dGluZ01lbnVzID0gbWVudWxpc3RzLmZpbHRlcihsaXN0PT4gbGlzdC5pZCA9PSAnYXBwX2dsb2JhbF9zZXR0aW5ncycpXG5cdFx0bGV0IEdMT0JBTF9TRVRUSU5HX0xJU1RfU09SVEVEID0gZ2xvYmFsU2V0dGluZ01lbnVzLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyID4gYi5vcmRlcikgPyAxIDogLTEpO1xuXHRcdGZvciAobGV0IGFwcE5hbWUgb2YgR0xPQkFMX1NFVFRJTkdfTElTVF9TT1JURUQpIHtcblx0XHRcdGlmKGFwcE5hbWUudHlwZSA9PSAnZXhwYW5kYWJsZScpe1xuXHRcdFx0XHRsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcblx0XHRcdFx0aWYobGlzdCAmJiBsaXN0LmNoaWxkcmVuICYmIGxpc3QuY2hpbGRyZW4ubGVuZ3RoID4gMCl7XG5cdFx0XHRcdFx0dGhpcy5TZXR0aW5nc01lbnVMaXN0LnB1c2gobGlzdCk7XG5cdFx0XHRcdH1cdFx0XHRcdFxuXHRcdFx0fWVsc2UgaWYoYXBwTmFtZS50eXBlICE9ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRcdGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuXHRcdFx0XHRpZihsaXN0ICE9IHVuZGVmaW5lZCl7XG5cdFx0XHRcdFx0dGhpcy5TZXR0aW5nc01lbnVMaXN0LnB1c2gobGlzdClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cdFx0XG5cdFx0cmV0dXJuIHRoaXMuU2V0dGluZ3NNZW51TGlzdDtcblx0fVxuXG5cdGNoZWNrQWxsQ29uZGl0aW9ucyhjdXJyZW50TWVudUl0ZW06IGFueSwgY29uZGl0aW9ucywgYWxsS2V5czogc3RyaW5nW10pOiBhbnkge1xuXHRcdGxldCBpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdGlmKCghdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIGN1cnJlbnRNZW51SXRlbS5pZCA9PSBcImFkc19vdmVydmlld1wiICYmIFxuXHRcdFx0IXRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uWydub0FjdGl2ZUFjY291bnRzJ10pKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIGlmKGN1cnJlbnRNZW51SXRlbS5pZCA9PT0gXCJhZHNfc2lnbnVwX292ZXJ2aWV3XCIpIHtcblx0XHRcdGlmKCF0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb25bJ25vQWN0aXZlQWNjb3VudHMnXSl7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IobGV0IGNvbmQgb2YgY29uZGl0aW9ucyl7XG5cdFx0XHRpZihjdXJyZW50TWVudUl0ZW1bY29uZF0gIT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0c3dpdGNoKGNvbmQpe1xuXHRcdFx0XHRcdGNhc2UgJ3Zpc2liaWxpdHlfcm9sZXMnOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yUm9sZXMoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICd2aXNpYmlsaXR5X3JvbGVzX25vdF9pbic6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ2Rpc2FibGVfcmVhZG9ubHlfb3JnJzp7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuZGlzYWJsZUZvck9yZ3dpdGhSZWFkT25seShjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25faWRzJyA6IHtcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKTtcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX2lkc19ub3RfaW4nIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCk7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ191c2VyX2N0cmwnOntcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnYWNjb3VudF9pZHMnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQuYW1zQWNjb3VudElkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnYWNjb3VudF9pZHNfbm90X2luJyA6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZEFjY291bnRJZHNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVx0XHRcdFx0XHRcblx0XHRcdFx0XHRjYXNlICdub3RfYWNjb3VudF9uYW1lJyA6IHtcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck5vdEFjY05hbWUoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdH1lbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X3R5cGUnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JBY2NUeXBlKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX3NldHRpbmcnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck9yZ1NldHRpbmdzKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1jYXNlICdhcHBfb3JnX3NldHRpbmcnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0Zvck9yZ0FwcFNldHRpbmdzKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhcHBfb3JnX3NldHRpbmdfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnQXBwU2V0dGluZ3NOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbicgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yTm90T3JnU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHQvLyBUT0RPIDogVGhpcyBpcyB0ZW1wb3Jlcnkgc29sdXRpb24gZm9yIEFtYyBzcGFjaWZpYyBvcmcgc2V0dGluZyBjaGVjay5cblx0XHRcdFx0XHRjYXNlICdhcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmFwcFNwZWNpZmljQ29uZmlnKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3NpdGVJZHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNpdGVJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdzaXRlTm90SWRzJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTaXRlTm90SWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnc3Vic2NyaXB0aW9uX3R5cGVzJyA6IHsgXG5cdFx0XHRcdFx0XHRpZihjdXJyZW50TWVudUl0ZW1bJ2FjY291bnRfdHlwZSddID09IHVuZGVmaW5lZCl7XG5cdFx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQuc3Vic2NyaXB0aW9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3Vic2NyaXB0aW9ucyhjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckFjY1R5cGUoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnY2FtcGFpZ25fdHlwZXMnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQ2FtcGFpZ25UeXBlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAndGFyZ2V0dGluZ190eXBlcyc6IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yVGFyZ2V0dGluZ1R5cGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICd0YXJnZXR0aW5nX3R5cGVzX25vdF9pbic6IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yTm90VGFyZ2V0dGluZ1R5cGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdpbmNvbnRleHRfY2FtcGFpZ25fdGFyZ2V0aW5nJyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JDYW1wYWlnblRhcmdldGluZyhjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmdfd2FsbWFydCcgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0d2FsbWFydCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nV2FsbWFydChjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3VzZXJfZW1haWxzJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuYXV0aGVudGljYXRlVXNlck1haWxNZW51KGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnaGlkZV9mb3JfdXNlcicgOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JIaWRkZW5Vc2VyUm9sZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnbmdfYXBwX3NldHRpbmcnOiB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDb250ZXh0U2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ25nX2FwcF9zZXR0aW5nX25vdF9pbic6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0NvbnRleHRTZXR0aW5nTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdjdXN0b21lcl90eXBlcyc6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0N1c3RvbWVyVHlwZUluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnY3VzdG9tZXJfdHlwZXNfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ3VzdG9tZXJUeXBlTm90SW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBkZWZhdWx0OiB7IFxuXHRcdFx0XHRcdC8vIC8vc3RhdGVtZW50czsgXG5cdFx0XHRcdFx0Ly8gYnJlYWs7IFxuXHRcdFx0XHRcdC8vIH0gXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWluY2x1ZGVNZW51KXtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cdFx0XHRcblx0XHRcdH1lbHNle1xuXHRcdFx0XHRpbmNsdWRlTWVudSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGluY2x1ZGVNZW51O1xuXHR9XG5cblx0Y2hlY2tGb3JOb3RBY2NOYW1lKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5uYW1lKSA9PSAtMSl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRjaGVja0ZvckNhbXBhaWduVHlwZShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCAmJiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dFswXS5kYXRhVHlwZSkgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tGb3JUYXJnZXR0aW5nVHlwZShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdHZhciBhbGxvdyA9IGZhbHNlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCAmJiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dFswXS50YXJnZXRpbmdUeXBlKSA+PSAwKXtcblx0XHRcdGFsbG93ID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yTm90VGFyZ2V0dGluZ1R5cGUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHR2YXIgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCAmJiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dFswXS50YXJnZXRpbmdUeXBlKSA+PSAwKXtcblx0XHRcdGFsbG93ID0gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXHRjaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLmNhbXBhaWduVGFyZ2V0aW5nKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmdXYWxtYXJ0KHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0d2FsbWFydCAmJiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dHdhbG1hcnRbMF0uY2FtcGFpZ25UYXJnZXRpbmcpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0YXV0aGVudGljYXRlVXNlck1haWxNZW51KHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5lbWFpbCk7XG5cdH1cblxuXHRjaGVja0ZvclN1YnNjcmlwdGlvbnMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW57XG5cdFx0Zm9yKGxldCBzZXR0aW5ncyBvZiB0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQuc3Vic2NyaXB0aW9uKXtcblx0XHRcdGlmKChwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHNldHRpbmdzLnR5cGUpID49IDApICYmIHNldHRpbmdzLnN0YXR1cyA9PSBcIkFDVElWRVwiKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGNoZWNrRm9yU2l0ZUlkcyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvICYmIHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQgJiYgcG9zc2libGVWYWx1ZXMuaW5jbHVkZXMoTnVtYmVyKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQpKSl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tGb3JTaXRlTm90SWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCAmJiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhOdW1iZXIodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCkpKXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRPRE8gOiBUaGlzIGlzIHRlbXBvcmVyeSBzb2x1dGlvbiBmb3IgQW1jIHNwYWNpZmljIG9yZyBzZXR0aW5nIGNoZWNrLlxuXHRhcHBTcGVjaWZpY0NvbmZpZyhwb3NzaWJsZVZhbHVlczogQXJyYXk8U3RyaW5nPik6IGJvb2xlYW4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCByb2xlID0gWydTVVBFUl9BRE1JTicsICdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcblx0XHRcdC8vIENoZWNrIHJvbGUgY29uZGl0aW9uIGFuZCBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGl0eVxuXHRcdFx0aWYgKCFyb2xlLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0bGV0IGFsbG93ID0gZmFsc2U7XG5cblx0XHRcdFx0Ly8gVG8gdmVyaWZ5IGlmIHRoZSBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGVcblx0XHRcdFx0XG5cdFx0XHRcdGxldCBrZXltYXRjaGVkID0gcG9zc2libGVWYWx1ZXMuc29tZSgoa2V5OiBTdHJpbmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoc2V0dGluZzogYW55KSB7IHJldHVybiBrZXkgPT0gc2V0dGluZy5zZXR0aW5nOyB9KSA+IC0xXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdC8vIFRvIHZlcmlmeSAgaWYgdGhlIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsZSBhbmQgZW5hYmxlZC9BY3RpdmVcblxuXHRcdFx0XHRsZXQgQWxsQWN0aXZlID0gcG9zc2libGVWYWx1ZXMuZXZlcnkoKGtleTogU3RyaW5nKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5maW5kSW5kZXgoZnVuY3Rpb24gKHNldHRpbmc6IGFueSkgeyByZXR1cm4ga2V5ID09IHNldHRpbmcuc2V0dGluZyAmJiBzZXR0aW5nLnZhbHVlID09IFwiQUNUSVZFXCI7IH0pID4gLTFcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gSWYgTm8gb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxlIE9SIHNldHRpbmcgaXMgYXZhaWxhYmxlIGJ1dCB3aXRoIGFjdGl2ZSBzdGF0dXNcblx0XHRcdFx0aWYgKCFrZXltYXRjaGVkIHx8IEFsbEFjdGl2ZSkge1xuXHRcdFx0XHRcdGFsbG93ID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjaGVja0Zvck9yZ1NldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR0cnl7XG5cdFx0XHR2YXIgYWxsb3cgPSBmYWxzZTtcblx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3Muc29tZShmdW5jdGlvbihvcmdTZXR0aW5nKXtcblx0XHRcdFx0XHRpZighb3JnU2V0dGluZy52YWx1ZSB8fCBvcmdTZXR0aW5nLnZhbHVlICYmIG9yZ1NldHRpbmcudmFsdWUgPT0gJ0FDVElWRScpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH1cblx0XHR9Y2F0Y2goZXJyb3Ipe1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcilcblx0XHR9XG5cdH1cblxuXHRjaGVja0Zvck9yZ0FwcFNldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3Mpe1xuXHRcdFx0Zm9yKGxldCBzZXR0aW5ncyBvZiB0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3Mpe1xuXHRcdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHNldHRpbmdzLnR5cGUpID49IDAgJiYgc2V0dGluZ3Muc3RhdHVzID09ICdBQ1RJVkUnKXtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1lbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0Zvck9yZ0FwcFNldHRpbmdzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHRyeXtcblx0XHRcdHZhciBhbGxvdyA9IHRydWU7XG5cdFx0XHRpZiAodGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzICYmIHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGFsbG93ID0gdGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzLnNvbWUoKG9yZ0FwcFNldHRpbmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gKCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdBcHBTZXR0aW5nLnR5cGUpIHx8IFxuXHRcdFx0XHRcdFx0XHQocG9zc2libGVWYWx1ZXMuaW5jbHVkZXMob3JnQXBwU2V0dGluZy50eXBlKSAmJiBcblx0XHRcdFx0XHRcdFx0b3JnQXBwU2V0dGluZy5zdGF0dXMgJiYgb3JnQXBwU2V0dGluZy5zdGF0dXMgPT0gJ0lOX0FDVElWRScpKVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fVxuXHRcdH1jYXRjaChlcnJvcil7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrQ3VzdG9tZXJUeXBlSW4ocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUgJiYgXG5cdFx0XHRwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrQ3VzdG9tZXJUeXBlTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmICghdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24uY3VzdG9tZXJUeXBlIHx8ICh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUgJiYgXG5cdFx0XHQhcG9zc2libGVWYWx1ZXMuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24uY3VzdG9tZXJUeXBlKSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0bGV0IGFsbG93ID0gdHJ1ZTtcblx0XHRpZih0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA+IDApe1xuXHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3Muc29tZShmdW5jdGlvbihvcmdTZXR0aW5nKXtcblx0XHRcdFx0cmV0dXJuICghcG9zc2libGVWYWx1ZXMuaW5jbHVkZXMob3JnU2V0dGluZy5zZXR0aW5nKSB8fCBcblx0XHRcdFx0XHQocG9zc2libGVWYWx1ZXMuaW5jbHVkZXMob3JnU2V0dGluZy5zZXR0aW5nKSAmJiBcblx0XHRcdFx0XHRvcmdTZXR0aW5nLnZhbHVlICYmIG9yZ1NldHRpbmcudmFsdWUgPT0gJ0lOX0FDVElWRScpKVxuXHRcdFx0XHQgICBcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdH1lbHNle1xuXHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdH1cblx0fVxuXHRcblx0Y2hlY2tDb250ZXh0U2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHZhciBhbGxvdyA9IGZhbHNlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzKXtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMubmdPcmdTZXR0aW5nc1tpdGVtXTtcblx0XHRcdFx0YWxsb3cgPSBhbGxvdyA9PSB1bmRlZmluZWQgPyB0cnVlIDogYWxsb3c7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXG5cdGNoZWNrQ29udGV4dFNldHRpbmdOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dmFyIGFsbG93ID0gdHJ1ZTtcblx0XHRpZih0aGlzLmFwcERldGFpbHMubmdPcmdTZXR0aW5ncyl7XG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHBvc3NpYmxlVmFsdWVzKSB7XG5cdFx0XHRcdGFsbG93ID0gIXRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzW2l0ZW1dO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblxuXHRjaGVja0ZvckFjY1R5cGUobWVudUl0ZW06IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKG1lbnVJdGVtWydhY2NvdW50X3R5cGUnXS5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0aWYobWVudUl0ZW1bJ3N1YnNjcmlwdGlvbl90eXBlcyddKXtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY2hlY2tGb3JTdWJzY3JpcHRpb25zKG1lbnVJdGVtWydzdWJzY3JpcHRpb25fdHlwZXMnXSlcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjaGVja0ZvclNwZWNpZmllZElkcyhwb3NzaWJsZVZhbHVlczogYW55ICwgY3VycmVudE1lbnVJdGVtOmFueSAsIGlkOm51bWJlcik6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzWzBdLmlkKXtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0aWYoIGl0ZW0uaWQgPT09IGlkICl7XG5cdFx0XHRcdFx0T2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaCgoa2V5KT0+eyBcblx0XHRcdFx0XHRcdGlmIChrZXkgIT0gJ2lkJykge1xuXHRcdFx0XHRcdFx0XHRjdXJyZW50TWVudUl0ZW1ba2V5XSA9IGl0ZW1ba2V5XTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdMaW5rIGNoYW5nZWQgdG8gJytjdXJyZW50TWVudUl0ZW0ubGluaysnIGFuZCByb3V0ZSBjaGFuZ2VkIHRvICcrY3VycmVudE1lbnVJdGVtLnJvdXRlKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPj0gMCl7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShwb3NzaWJsZVZhbHVlczogYW55ICwgY3VycmVudE1lbnVJdGVtOmFueSAsIGlkOm51bWJlcik6IGJvb2xlYW4ge1xuXHRcdGxldCBhbGxvdyA9IHRydWU7XG5cdFx0aWYgKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdHZhciBmbGFnQXJyYXkgPSBbXTtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0dmFyIGFsbEtleXMgPSBPYmplY3Qua2V5cyhpdGVtKTtcblx0XHRcdFx0dmFyIGZsYWcgPSB0aGlzLmNoZWNrQWxsQ29uZGl0aW9ucyhpdGVtLCBhbGxLZXlzLCBhbGxLZXlzKVxuXHRcdFx0XHRmbGFnQXJyYXkucHVzaChmbGFnKTtcblx0XHRcdH1cblx0XHRcdGFsbG93ID0gZmxhZ0FycmF5LmluY2x1ZGVzKHRydWUpID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdFx0XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXHRjaGVja0ZvclNwZWNpZmllZElkc05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YoaWQpIDwgMDtcblx0fVxuXG5cdGNoZWNrRm9yU3BlY2lmaWVkQWNjb3VudElkc05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YoaWQpIDwgMDtcblx0fVxuXG5cdGNoZWNrRm9yUm9sZXMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApe1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgPj0gMCl7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNoZWNrRm9ydmlzaWJpbGl0eVJvbGVzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApe1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgPj0gMCl7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRjaGVja0ZvckhpZGRlblVzZXJSb2xlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZihwb3NzaWJsZVZhbHVlcyAmJiBwb3NzaWJsZVZhbHVlcy5sZW5ndGggPiAwKXtcblx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpID49IDAgJiYgdGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLmlzSGlkZGVuVXNlcil7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyBkaXNhYmxlRm9yT3Jnd2l0aFJlYWRPbmx5KHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFue1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlID09PSAnUkVBRF9PTkxZJyAmJiBwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCkgPj0gMCl7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHJvdXRlICwgYXBwbGljYXRpb25JZD11bmRlZmluZWQpIHtcblx0XHRpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihyb3V0ZSkgPT0gLTEpIHtcblx0XHRcdHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG5cdFx0XHRcdGlmIChhcHBsaWNhdGlvbklkKSB7XG5cdFx0XHRcdFx0cGFyYW1zID0gey4uLnBhcmFtcywgLi4uYXBwbGljYXRpb25JZH07XHRcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChyb3V0ZS5pbmRleE9mKCc/JykgPiAtMSAmJiByb3V0ZS5pbmRleE9mKCd1c2VybWdtdCcpID4gLTEpe1xuXHRcdFx0XHRcdHJvdXRlID0gcm91dGUuc3BsaXQoJz8nKVswXTtcblx0XHRcdFx0XHRsZXQgbmV3UVBhcmFtID0geyB1c2VybWdtdCA6IHRydWV9XG5cdFx0XHRcdFx0cGFyYW1zID0geyAuLi5wYXJhbXMgLCAuLi5uZXdRUGFyYW19XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IHVybFRvTmF2aWdhdGUgPSB0aGlzLnVybENvbnRleHRTZXJ2aWNlLnByZXBhcmVVcmxXaXRoUXVlcnlQYXJhbXMocm91dGUsIHBhcmFtcyk7XG5cdFx0XHRcdHVybFRvTmF2aWdhdGUgPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufS8ke3VybFRvTmF2aWdhdGV9YFxuXHRcdFx0XHQvLyB1cmxUb05hdmlnYXRlID0gYGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8ke3VybFRvTmF2aWdhdGV9YFxuXHRcdFx0XHRjb25zb2xlLmxvZygnTmF2aWdhdGluZyB0byAtICcsdXJsVG9OYXZpZ2F0ZSk7XG5cdFx0XHRcdHdpbmRvdy5vcGVuKHVybFRvTmF2aWdhdGUsICdfc2VsZicpO1xuXHRcdFx0fSk7XG5cdFx0fVxuICAgIH1cblx0XG5cdHB1YmxpYyBmZXRjaEtleVZhbHVlKGtleTogc3RyaW5nKSB7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCkge1xuXHRcdFx0cmV0dXJuICh0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnRba2V5XSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRcblx0fVxuXG5cdHB1YmxpYyBzZXRBY3RpdmVSZWNvQ291bnQoY291bnQ6bnVtYmVyKXtcblx0XHR0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnRbJ2FjdGl2ZVJlY29tbWVuZGF0aW9uJ10gPSBjb3VudDtcblx0fVxuXHRcblx0cHVibGljIGlzSGF2aW5nQW55QWN0aXZlU3VicyhpZCxzdWJzLHR5cGUpe1xuICAgIGlmKGlkID09PSAnYWRzX2FtYXpvbl9hdHRyaWJ1dGlvbicgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQU1TX0FUVFJJQlVUSU9OJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZihpZCA9PT0gJ2Fkc19hbWF6b25fZHNwJyAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdEU1AnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmKChpZCA9PT0gJ2Fkc19hbWF6b25fY29udGVudCcpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0NPTlRFTlQnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmKChpZCA9PT0gJ2Fkc19pbnN0YWNhcnQnKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdJTlNUQUNBUlQnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfWVsc2UgaWYoKGlkID09PSAnYWRzX2NyaXRlbycpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0NSSVRFTycpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1lbHNlIGlmKChpZCA9PT0gJ2Fkc193YWxtYXJ0JykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnV0FMTUFSVCcpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1lbHNlIGlmKGlkID09PSAnYWRzX2RhdGFfcGxhdGZvcm0nfHwgaWQgPT09ICdhbWMtcGxhdGZvcm0td2ViJyB8fCBpZCA9PT0gJ2Fkc19hbWF6b25fc2VsbGVyJykge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9ZWxzZSBpZihpZCA9PT0gJ2Fkc19hbWF6b25fYWR2ZXJ0aXNpbmcnIHx8IGlkID09PSAnYWRzX3ZlbmRvcl9zYWxlcycgfHwgaWQgPT09ICdhZHNfc2VsbGVyX3NhbGVzJykge1xuICAgICAgZm9yKGxldCBzZXR0aW5ncyBvZiBzdWJzKXtcbiAgICAgICAgaWYoc2V0dGluZ3MudHlwZSAhPSB0eXBlICYmIHNldHRpbmdzLnN0YXR1cyA9PSBcIkFDVElWRVwiKXtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgXHR9XG5cblx0cHVibGljIGNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIGFjY1R5cGUgLHN1YlR5cGUpIHtcblx0XHRpZihzdWJUeXBlID09PSBhY2NUeXBlKXtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgY3VycmVudFR5cGVTdWIgPSBzdWJzLmZpbHRlcihzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnR5cGUgPT09IHN1YlR5cGUpO1xuXHRcdGlmKGN1cnJlbnRUeXBlU3ViLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKGN1cnJlbnRUeXBlU3ViWzBdLnN0YXR1cyA9PT0gJ0FDVElWRScgfHwgY3VycmVudFR5cGVTdWJbMF0udHlwZSA9PT0gYWNjVHlwZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0QXBwbGljYXRpb25JRCgpIHtcblx0XHRsZXQgdXJsQXJyYXkgPSB0aGlzLnVybENvbnRleHRTZXJ2aWNlLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcblx0XHRsZXQgY3VycmVudFJvdXRlID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG5cdFx0XG5cdFx0aWYodGhpcy5jb250ZW50QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSApIHtcblx0XHRcdHJldHVybiBcImFkc19hbWF6b25fY29udGVudF9jb250ZW50X2FuYWx5dGljc1wiO1xuXHRcdH0gZWxzZSBpZih0aGlzLnNvdkFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcblx0XHRcdHJldHVybiBcImFkc19hbWF6b25fY29udGVudF9zaGFyZV9vZl92b2ljZVwiO1xuXHRcdH1cblx0fVxufSJdfQ==
835
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwbGljYXRpb24tc2lkZWJhci9zcmMvbGliL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUszRCxNQUFNLE9BQU8seUJBQXlCO0lBNkM1QjtJQUNBO0lBQ0E7SUFDQTtJQTlDVCxVQUFVLEdBQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFDLGdCQUFnQixFQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxnQkFBZ0IsRUFBRSw4QkFBOEIsRUFBRSxzQ0FBc0MsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUMsd0JBQXdCLEVBQUMsZ0JBQWdCLEVBQUMsdUJBQXVCLEVBQUMsa0JBQWtCLEVBQUMseUJBQXlCLEVBQUMsZUFBZSxDQUFDLENBQUM7SUFDN3FCLFFBQVEsR0FBTSxFQUFFLENBQUM7SUFFakIsY0FBYyxHQUFLLEVBQUUsQ0FBQztJ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QUFDLENBQUMsRUFBRztZQUNuRCxPQUFPLHNDQUFzQyxDQUFDO1NBQzlDO2FBQU0sSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRCxPQUFPLG1DQUFtQyxDQUFDO1NBQzNDO0lBQ0YsQ0FBQzsySEF2ekJXLHlCQUF5QjsrSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4vcmVzdC1hcGkuc2VydmljZXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVcmxDb250ZXh0U2VydmljZSB9IGZyb20gJy4vdXJsLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBFTl9MQUJFTFMgfSBmcm9tICcuLi90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLWVuJztcbmltcG9ydCB7IEpBX0xBQkVMUyB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMtamEnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25TaWRlYmFyU2VydmljZSB7XG5cblx0Y29uZGl0aW9ucyBcdFx0XHQ9IFsnb3JnX3VzZXJfY3RybCcsICd2aXNpYmlsaXR5X3JvbGVzJywgJ3Zpc2liaWxpdHlfcm9sZXNfbm90X2luJywgJ2FjY291bnRfaWRzJywgJ2N1c3RvbWVyX3R5cGVzX25vdF9pbicsJ2N1c3RvbWVyX3R5cGVzJywnb3JnYW5pemF0aW9uX2lkcycsICdvcmdhbml6YXRpb25faWRzX25vdF9pbicsICdhY2NvdW50X3R5cGUnLCAnYWNjb3VudF9pZHNfbm90X2luJywgJ29yZ2FuaXphdGlvbl9zZXR0aW5nJywgJ29yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbicsICdhcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrJywgJ2NhbXBhaWduX3R5cGVzJywgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmcnLCAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZ193YWxtYXJ0JywgJ3N1YnNjcmlwdGlvbl90eXBlcycsICdzaXRlSWRzJywgJ3NpdGVOb3RJZHMnLCAnbm90X2FjY291bnRfdHlwZScsICdub3RfYWNjb3VudF9uYW1lJywgJ2Rpc2FibGVfcmVhZG9ubHlfb3JnJywgJ3VzZXJfZW1haWxzJywgJ2hpZGVfZm9yX3VzZXInLCAnYXBwX29yZ19zZXR0aW5nJywnYXBwX29yZ19zZXR0aW5nX25vdF9pbicsJ25nX2FwcF9zZXR0aW5nJywnbmdfYXBwX3NldHRpbmdfbm90X2luJywndGFyZ2V0dGluZ190eXBlcycsJ3RhcmdldHRpbmdfdHlwZXNfbm90X2luJywnaGlkZV9mb3JfdXNlciddO1xuXHRNZW51TGlzdCBcdFx0XHQ9IFtdO1xuXG5cdGFwcGxpY2F0aW9uSWRzIFx0XHQ9IFtdO1xuXHRlbmFibGVBbGxNZW51c0J5T3JnID0gWzMwNzgwXVxuXHRcblx0YXBwRGV0YWlsczpcdGFueTtcblx0aXNTdHJ1Y3R1cmVBcGlTdXBwb3J0Olx0YW55O1xuXHRpc01hbmFnZWRTZXJ2aWNlQWNjOiBib29sZWFuO1xuXHRTZXR0aW5nc01lbnVMaXN0OiBhbnlbXTtcblx0YXBwTmFtZXM6IHN0cmluZ1tdO1xuXHRwcml2YXRlIG1lbnVsaXN0czogYW55O1xuXHRjb250ZW50QXBwUm91dGVzXHRcdFx0PVsnY29udGVudC1pbnNpZ2h0JywnY29udGVudC1hbmFseXRpY3MnLCdjb250ZW50JywncHJvZHVjdC1tZXRhLWRhdGEnLCdicmFuZC10ZXJtcy1zZXR0aW5ncycsJ2xhYmVscy1zZXR0aW5ncycsJ3N1Yi1icmFuZHMnLCdzdWItYnJhbmRzLW1hcHBpbmcnLCdzb3Ytc2V0dGluZ3MnICwnY29udGVudC1zZXR0aW5ncyddXG5cdHNvdkFwcFJvdXRlc1x0XHRcdFx0PVsnaW5zaWdodHMnLCdzaGFyZS1vZi12b2ljZScsJ3NvdicsJ3Byb2R1Y3QtbWV0YS1kYXRhJywnYnJhbmQtdGVybXMtc2V0dGluZ3MnLCdsYWJlbHMtc2V0dGluZ3MnLCdzdWItYnJhbmRzJywnc3ViLWJyYW5kcy1tYXBwaW5nJywnc292LXNldHRpbmdzJyAsJ2NvbnRlbnQtc2V0dGluZ3MnXVxuXHRzZWxsZXJBbmFseXRpY3NBcHBSb3V0ZXMgXHQ9WydzZWxsZXIvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJ11cblx0dmVuZG9yQW5hbHl0aWNzQXBwUm91dGVzXHQ9Wyd2ZW5kb3IvaW5zaWdodHMnLCdwcm9kdWN0LW1ldGEtZGF0YScsJ2JyYW5kLXRlcm1zLXNldHRpbmdzJywnbGFiZWxzLXNldHRpbmdzJywnc3ViLWJyYW5kcycsJ3N1Yi1icmFuZHMtbWFwcGluZycsJ3Nvdi1zZXR0aW5ncycgLCdjb250ZW50LXNldHRpbmdzJ11cblx0XG5cdHR5cGVTdGF0dXNDb25maWdzID0ge1xuICAgICAgICAnU1BPTlNPUkVEX0tFWVdPUkRfQklEUycgOiB0cnVlLFxuICAgICAgICAnU1BPTlNPUkVEX1BST0RVQ1RfTUFOVUFMX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfUFJPRFVDVF9BVVRPX1RBUkdFVElOR19CSURTJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRF9BVVRPJyA6IHRydWUsXG4gICAgICAgICdTUE9OU09SRURfS0VZV09SRCcgOiB0cnVlLFxuICAgICAgICAnU1BfS0VZV09SRFNfQklEX0dBUCcgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1BMQUNFTUVOVF9CSUQnIDogZmFsc2UsXG4gICAgICAgICdTUF9UQVJHRVRJTkdfVFlQRV9CUkVBS0RPV04nIDogZmFsc2UsXG4gICAgICAgICdTUF9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NQX1NCX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdIRUFETElORV9LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ1NCX0tFWVdPUkRTX0JJRF9HQVAnIDogZmFsc2UsXG4gICAgICAgICdTQl9NQVRDSF9UWVBFX0JSRUFLRE9XTicgOiBmYWxzZSxcbiAgICAgICAgJ1NCX1NQX0tFWVdPUkRfUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdOT19LRVlXT1JEX0JJRFMnIDogdHJ1ZSxcbiAgICAgICAgJ0NBTVBBSUdOX1RZUEVfQlJFQUtET1dOJyA6IGZhbHNlLFxuICAgICAgICAnQVVUT19UT19NQU5VQUxfQVNJTl9QQVJJVFknIDogdHJ1ZSxcbiAgICAgICAgJ01BTlVBTF9UT19BVVRPX0FTSU5fUEFSSVRZJyA6IHRydWUsXG4gICAgICAgICdDT01QRVRJVE9SX1BST0RVQ1QnIDogdHJ1ZSxcbiAgICAgICAgJ1NQT05TT1JFRF9CUkFORF9LRVlXT1JEJzogdHJ1ZVxuICAgIH1cblxuXHRcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIFJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcblx0XHRwcml2YXRlIGFjdGl2YXRlZFJvdXRlOkFjdGl2YXRlZFJvdXRlLFxuXHRcdHByaXZhdGUgdHJhbnNsYXRlOlRyYW5zbGF0aW9uU2VydmljZSxcblx0XHRwcml2YXRlIHVybENvbnRleHRTZXJ2aWNlOiBVcmxDb250ZXh0U2VydmljZSkge31cblxuXHRnZXRUeXBlU3RhdHVzQ29uZmlncygpe1xuXHRcdHJldHVybiB0aGlzLnR5cGVTdGF0dXNDb25maWdzO1xuXHR9XG5cdGNvbnN0cnVjdENoaWxkTWVudXMobWVudUl0ZW1zKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMubGlzdE1lbnVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFwcERldGFpbHMuYXBwU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5hcHBsaWNhdGlvbklkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbGlzdE1lbnVJdGVtIG9mIHRoaXMuYXBwRGV0YWlscy5saXN0TWVudXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PSBsaXN0TWVudUl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGxpc3RNZW51SXRlbS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5pZCA9PSB0aGlzLmFwcERldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5hcHBEZXRhaWxzLmxpc3RNZW51cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgICB9XG5cblx0Z2V0TWVudUxpc3QoYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gICAgICAgIHRoaXMuYXBwRGV0YWlscyA9IGFwcERldGFpbHM7XG4gICAgICAgIHRoaXMuTWVudUxpc3QgPSBbXTtcbiAgICAgICAgbGV0IGFwcGVuZENoaWxkTWVudXM7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCdoZXJva3VhcHAnKSA+IC0xIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpID4gLTEpIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSB0aGlzLmNvbnN0cnVjdENoaWxkTWVudXMobWVudWxpc3RzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGVuZENoaWxkTWVudXMgPSBtZW51bGlzdHM7XG4gICAgICAgIH1cbiAgICAgICAgYXBwZW5kQ2hpbGRNZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICAgICAgICBtZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKG1lbnUubmFtZSk7XG4gICAgICAgICAgICBtZW51LmNoaWxkcmVuICYmIG1lbnUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRNZW51KSA9PiB7XG4gICAgICAgICAgICAgICAgY2hpbGRNZW51Lm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkTWVudS5uYW1lKTtcbiAgICAgICAgICAgICAgICBjaGlsZE1lbnUuY2hpbGRyZW4gJiYgY2hpbGRNZW51LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLm5hbWUgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2xhdGVOYW1lKGNoaWxkLm5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1lbnVsaXN0cyA9IGFwcGVuZENoaWxkTWVudXMuZmlsdGVyKGxpc3QgPT4gbGlzdC5pZCAhPT0gJ2FwcF9nbG9iYWxfc2V0dGluZ3MnKTtcbiAgICAgICAgbGV0IHNvcnRlZE1lbnVsaXN0cyA9IHRoaXMubWVudWxpc3RzLnNvcnQoKGEsIGIpID0+IChhLm9yZGVyID4gYi5vcmRlcikgPyAxIDogLTEpO1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSWRzID0gc29ydGVkTWVudWxpc3RzLm1hcCgoYXBwSWQpID0+IGFwcElkLmlkKTtcbiAgICAgICAgdGhpcy5hcHBOYW1lcyA9IHRoaXMuYXBwbGljYXRpb25JZHM7XG4gICAgICAgIGlmKCh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCA9PT0gMTAzOTAgfHxcbiAgICAgICAgICAgIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkID09PSAxMDUzMCkgJiZcbiAgICAgICAgICAgIHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5lbWFpbCA9PSBcInNyZWVuYXRoQGludGVudHdpc2UuY29tXCIpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwTmFtZXMgPSB0aGlzLmFwcGxpY2F0aW9uSWRzLmZpbHRlcigobmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAobmFtZSAhPSAnYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlJyAmJiBuYW1lICE9ICdhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3MnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGFwcE5hbWUgb2Ygc29ydGVkTWVudWxpc3RzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHBOYW1lcy5pbmRleE9mKGFwcE5hbWUuaWQpID49IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAmJiBsaXN0LmNoaWxkcmVuICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwTmFtZS5pZCA9PSAnYWRzX2FtYXpvbl9kc3AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5jaGlsZHJlbiAmJiBsaXN0LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBsaXN0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhpcy5pc01hbmFnZWRTZXJ2aWNlQWNjIHx8ICF0aGlzLmlzU3RydWN0dXJlQXBpU3VwcG9ydCkgJiYgY2hpbGQuaWQgPT0gXCJhbXNfZHNwX3NldHRpbmdzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNoaWxkcmVuID0gY2hpbGQuY2hpbGRyZW4uZmlsdGVyKHNfY2hpbGQgPT4gc19jaGlsZC5pZCAhPT0gJ2Ftc19kc3BfcnVsZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTWVudUxpc3QucHVzaChsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFwcE5hbWUudHlwZSAhPSAnZXhwYW5kYWJsZScpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRoaXMuZ2V0QXBwbGljYXRpb25NZW51SXRlbShhcHBOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5NZW51TGlzdC5wdXNoKGxpc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5NZW51TGlzdDtcbiAgICB9XG5cblx0Z2V0QXBwbGljYXRpb25NZW51SXRlbShjdXJyZW50TWVudUl0ZW06YW55KTogYW55IHtcblx0XHRsZXQgbWVudUl0ZW0gPSB7XG5cdFx0XHRjaGlsZHJlbiA6IFtdXG5cdFx0fTtcblxuXHRcdGlmKGN1cnJlbnRNZW51SXRlbS50eXBlICE9ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRsZXQgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSk7XG5cdFx0XHRjb25zdCBoYXNDb25kaXRpb25zdG9DaGVjayA9IHRoaXMuY29uZGl0aW9ucy5zb21lKGNvbmRpdGlvbiA9PiBhbGxLZXlzLmluY2x1ZGVzKGNvbmRpdGlvbikpXG5cdFx0XHRpZihoYXNDb25kaXRpb25zdG9DaGVjayl7XG5cdFx0XHRcdGxldCBpc01lbnVBbGxvd2VkID0gdGhpcy5jaGVja0FsbENvbmRpdGlvbnMoY3VycmVudE1lbnVJdGVtLCB0aGlzLmNvbmRpdGlvbnMsIGFsbEtleXMpO1xuXHRcdFx0XHRpZihpc01lbnVBbGxvd2VkKXtcblx0XHRcdFx0XHRtZW51SXRlbSA9IGN1cnJlbnRNZW51SXRlbTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNle1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdyZXR1cm4gZW1wdHknKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2V7XG5cdFx0XHRcdG1lbnVJdGVtID0gY3VycmVudE1lbnVJdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0bGV0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0Y29uc3QgaGFzQ29uZGl0aW9uc3RvQ2hlY2sgPSB0aGlzLmNvbmRpdGlvbnMuc29tZShjb25kaXRpb24gPT4gYWxsS2V5cy5pbmNsdWRlcyhjb25kaXRpb24pKVxuXHRcdFx0aWYoIWhhc0NvbmRpdGlvbnN0b0NoZWNrIHx8IChoYXNDb25kaXRpb25zdG9DaGVjayAmJiB0aGlzLmNoZWNrQWxsQ29uZGl0aW9ucyhjdXJyZW50TWVudUl0ZW0sIHRoaXMuY29uZGl0aW9ucywgYWxsS2V5cykpKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKGN1cnJlbnRNZW51SXRlbSkuZm9yRWFjaCgoa2V5KT0+eyBcblx0XHRcdFx0XHRpZiAodHlwZW9mIGN1cnJlbnRNZW51SXRlbVtrZXldICE9IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRcdFx0XHRtZW51SXRlbVtrZXldID0gY3VycmVudE1lbnVJdGVtW2tleV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0XHRmb3IobGV0IGNoaWxkIG9mIGN1cnJlbnRNZW51SXRlbS5jaGlsZHJlbil7XG5cdFx0XHRcdFx0bGV0IG5hdl9tZW51ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGNoaWxkKTtcblx0XHRcdFx0XHRpZihuYXZfbWVudSAhPSBudWxsKXsgXG5cdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbiAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRcdFx0XHRpZihuYXZfbWVudS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHRcdFx0XHRtZW51SXRlbS5jaGlsZHJlbi5wdXNoKG5hdl9tZW51KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0bWVudUl0ZW0uY2hpbGRyZW4ucHVzaChuYXZfbWVudSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cblx0XHRyZXR1cm4gbWVudUl0ZW07XG5cdH1cblxuXHRnZXRHbG9iYWxTZXR0aW5nc01lbnUoYXBwRGV0YWlscyA6IGFueSwgbWVudWxpc3RzKSB7XG5cdFx0dGhpcy5hcHBEZXRhaWxzID0gYXBwRGV0YWlscztcdFxuXHRcdHRoaXMuU2V0dGluZ3NNZW51TGlzdCA9IFtdO1xuXHRcdGxldCBnbG9iYWxTZXR0aW5nTWVudXMgPSBtZW51bGlzdHMuZmlsdGVyKGxpc3Q9PiBsaXN0LmlkID09ICdhcHBfZ2xvYmFsX3NldHRpbmdzJylcblx0XHRsZXQgR0xPQkFMX1NFVFRJTkdfTElTVF9TT1JURUQgPSBnbG9iYWxTZXR0aW5nTWVudXMuc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPiBiLm9yZGVyKSA/IDEgOiAtMSk7XG5cdFx0Zm9yIChsZXQgYXBwTmFtZSBvZiBHTE9CQUxfU0VUVElOR19MSVNUX1NPUlRFRCkge1xuXHRcdFx0aWYoYXBwTmFtZS50eXBlID09ICdleHBhbmRhYmxlJyl7XG5cdFx0XHRcdGxldCBsaXN0ID0gdGhpcy5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGFwcE5hbWUpO1xuXHRcdFx0XHRpZihsaXN0ICYmIGxpc3QuY2hpbGRyZW4gJiYgbGlzdC5jaGlsZHJlbi5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KTtcblx0XHRcdFx0fVx0XHRcdFx0XG5cdFx0XHR9ZWxzZSBpZihhcHBOYW1lLnR5cGUgIT0gJ2V4cGFuZGFibGUnKXtcblx0XHRcdFx0bGV0IGxpc3QgPSB0aGlzLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oYXBwTmFtZSk7XG5cdFx0XHRcdGlmKGxpc3QgIT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHR0aGlzLlNldHRpbmdzTWVudUxpc3QucHVzaChsaXN0KVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVx0XHRcblx0XHRyZXR1cm4gdGhpcy5TZXR0aW5nc01lbnVMaXN0O1xuXHR9XG5cblx0Y2hlY2tBbGxDb25kaXRpb25zKGN1cnJlbnRNZW51SXRlbTogYW55LCBjb25kaXRpb25zLCBhbGxLZXlzOiBzdHJpbmdbXSk6IGFueSB7XG5cdFx0bGV0IGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0aWYoKCF0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgY3VycmVudE1lbnVJdGVtLmlkID09IFwiYWRzX292ZXJ2aWV3XCIgJiYgXG5cdFx0XHQhdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb25bJ25vQWN0aXZlQWNjb3VudHMnXSkpe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2UgaWYoY3VycmVudE1lbnVJdGVtLmlkID09PSBcImFkc19zaWdudXBfb3ZlcnZpZXdcIikge1xuXHRcdFx0aWYoIXRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvblsnbm9BY3RpdmVBY2NvdW50cyddKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvcihsZXQgY29uZCBvZiBjb25kaXRpb25zKXtcblx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVtjb25kXSAhPSB1bmRlZmluZWQpe1xuXHRcdFx0XHRzd2l0Y2goY29uZCl7XG5cdFx0XHRcdFx0Y2FzZSAndmlzaWJpbGl0eV9yb2xlcyc6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JSb2xlcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3Zpc2liaWxpdHlfcm9sZXNfbm90X2luJzogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH0gXG5cdFx0XHRcdFx0Y2FzZSAnZGlzYWJsZV9yZWFkb25seV9vcmcnOntcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5kaXNhYmxlRm9yT3Jnd2l0aFJlYWRPbmx5KGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ29yZ2FuaXphdGlvbl9pZHMnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdLGN1cnJlbnRNZW51SXRlbSx0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25faWRzX25vdF9pbicgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY3VycmVudEFjY291bnQgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNwZWNpZmllZElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZih0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbiAmJiB0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTcGVjaWZpZWRJZHNOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0sY3VycmVudE1lbnVJdGVtLHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLm9yZ2FuaXphdGlvbklkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnX3VzZXJfY3RybCc6e1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24gJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkcycgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkSWRzKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdhY2NvdW50X2lkc19ub3RfaW4nIDoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU3BlY2lmaWVkQWNjb3VudElkc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSxjdXJyZW50TWVudUl0ZW0sdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGNhc2UgJ25vdF9hY2NvdW50X25hbWUnIDoge1xuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yTm90QWNjTmFtZShjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0fWVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FjY291bnRfdHlwZScgOiB7IFxuXHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckFjY1R5cGUoY3VycmVudE1lbnVJdGVtKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdvcmdhbml6YXRpb25fc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fWNhc2UgJ2FwcF9vcmdfc2V0dGluZycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yT3JnQXBwU2V0dGluZ3MoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9vcmdfc2V0dGluZ19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JPcmdBcHBTZXR0aW5nc05vdEluKGN1cnJlbnRNZW51SXRlbVtjb25kXSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnb3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luJyA6IHsgXG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdC8vIFRPRE8gOiBUaGlzIGlzIHRlbXBvcmVyeSBzb2x1dGlvbiBmb3IgQW1jIHNwYWNpZmljIG9yZyBzZXR0aW5nIGNoZWNrLlxuXHRcdFx0XHRcdGNhc2UgJ2FwcF9zcGFjaWZpY19jb25maWdfY2hlY2snOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuYXBwU3BlY2lmaWNDb25maWcoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnc2l0ZUlkcycgOiB7IFxuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yU2l0ZUlkcyhjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdGNhc2UgJ3NpdGVOb3RJZHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvclNpdGVOb3RJZHMoY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdzdWJzY3JpcHRpb25fdHlwZXMnIDogeyBcblx0XHRcdFx0XHRcdGlmKGN1cnJlbnRNZW51SXRlbVsnYWNjb3VudF90eXBlJ10gPT0gdW5kZWZpbmVkKXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JTdWJzY3JpcHRpb25zKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50ICYmIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC50eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQWNjVHlwZShjdXJyZW50TWVudUl0ZW0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhazsgXG5cdFx0XHRcdFx0fSBcblx0XHRcdFx0XHRjYXNlICdjYW1wYWlnbl90eXBlcycgOiB7XG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQpe1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JDYW1wYWlnblR5cGUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICd0YXJnZXR0aW5nX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHRpbmdfdHlwZXNfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2luY29udGV4dF9jYW1wYWlnbl90YXJnZXRpbmcnIDogeyBcblx0XHRcdFx0XHRcdGlmKHRoaXMuYXBwRGV0YWlscy5jYW1wYWlnbkluQ29udGV4dCl7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckNhbXBhaWduVGFyZ2V0aW5nKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnaW5jb250ZXh0X2NhbXBhaWduX3RhcmdldGluZ193YWxtYXJ0JyA6IHsgXG5cdFx0XHRcdFx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0KXtcblx0XHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmdXYWxtYXJ0KGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrOyBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAndXNlcl9lbWFpbHMnIDogeyBcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5hdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUoY3VycmVudE1lbnVJdGVtW2NvbmRdKVxuXHRcdFx0XHRcdFx0YnJlYWs7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdoaWRlX2Zvcl91c2VyJyA6IHtcblx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0ZvckhpZGRlblVzZXJSb2xlKGN1cnJlbnRNZW51SXRlbVtjb25kXSlcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICduZ19hcHBfc2V0dGluZyc6IHtcblx0XHRcdFx0XHRcdGlmICghdGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVNZW51ID0gdGhpcy5jaGVja0NvbnRleHRTZXR0aW5ncyhjdXJyZW50TWVudUl0ZW1bY29uZF0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSAnbmdfYXBwX3NldHRpbmdfbm90X2luJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ29udGV4dFNldHRpbmdOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgJ2N1c3RvbWVyX3R5cGVzJzoge1xuXHRcdFx0XHRcdFx0aW5jbHVkZU1lbnUgPSB0aGlzLmNoZWNrQ3VzdG9tZXJUeXBlSW4oY3VycmVudE1lbnVJdGVtW2NvbmRdKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlICdjdXN0b21lcl90eXBlc19ub3RfaW4nOiB7XG5cdFx0XHRcdFx0XHRpbmNsdWRlTWVudSA9IHRoaXMuY2hlY2tDdXN0b21lclR5cGVOb3RJbihjdXJyZW50TWVudUl0ZW1bY29uZF0pO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRlZmF1bHQ6IHsgXG5cdFx0XHRcdFx0Ly8gLy9zdGF0ZW1lbnRzOyBcblx0XHRcdFx0XHQvLyBicmVhazsgXG5cdFx0XHRcdFx0Ly8gfSBcblx0XHRcdFx0fVxuXHRcdFx0XHRpZighaW5jbHVkZU1lbnUpe1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVx0XHRcdFxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdGluY2x1ZGVNZW51ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gaW5jbHVkZU1lbnU7XG5cdH1cblxuXHRjaGVja0Zvck5vdEFjY05hbWUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm5hbWUpID09IC0xKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yQ2FtcGFpZ25UeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLmRhdGFUeXBlKSA+PSAwKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclRhcmdldHRpbmdUeXBlKHBvc3NpYmxlVmFsdWVzOiBhbnkpOmJvb2xlYW57XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gYWxsb3c7XG5cdH1cblx0Y2hlY2tGb3JOb3RUYXJnZXR0aW5nVHlwZShwb3NzaWJsZVZhbHVlczogYW55KTpib29sZWFue1xuXHRcdHZhciBhbGxvdyA9IHRydWU7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0WzBdLnRhcmdldGluZ1R5cGUpID49IDApe1xuXHRcdFx0YWxsb3cgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yQ2FtcGFpZ25UYXJnZXRpbmcocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHQgJiYgcG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHRbMF0uY2FtcGFpZ25UYXJnZXRpbmcpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tGb3JDYW1wYWlnblRhcmdldGluZ1dhbG1hcnQocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRpZih0aGlzLmFwcERldGFpbHMuY2FtcGFpZ25JbkNvbnRleHR3YWxtYXJ0ICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmNhbXBhaWduSW5Db250ZXh0d2FsbWFydFswXS5jYW1wYWlnblRhcmdldGluZykgPj0gMCl7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRhdXRoZW50aWNhdGVVc2VyTWFpbE1lbnUocG9zc2libGVWYWx1ZXM6IGFueSk6Ym9vbGVhbntcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLmVtYWlsKTtcblx0fVxuXG5cdGNoZWNrRm9yU3Vic2NyaXB0aW9ucyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbntcblx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24pe1xuXHRcdFx0aWYoKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCkgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y2hlY2tGb3JTaXRlSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCAmJiBwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhOdW1iZXIodGhpcy5hcHBEZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCkpKXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0ZvclNpdGVOb3RJZHMocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkICYmIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKE51bWJlcih0aGlzLmFwcERldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKSkpe1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRlbHNle1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVE9ETyA6IFRoaXMgaXMgdGVtcG9yZXJ5IHNvbHV0aW9uIGZvciBBbWMgc3BhY2lmaWMgb3JnIHNldHRpbmcgY2hlY2suXG5cdGFwcFNwZWNpZmljQ29uZmlnKHBvc3NpYmxlVmFsdWVzOiBBcnJheTxTdHJpbmc+KTogYm9vbGVhbiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuXHRcdFx0Ly8gQ2hlY2sgcm9sZSBjb25kaXRpb24gYW5kIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsaXR5XG5cdFx0XHRpZiAoIXJvbGUuaW5jbHVkZXModGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUpICYmIHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRsZXQgYWxsb3cgPSBmYWxzZTtcblxuXHRcdFx0XHQvLyBUbyB2ZXJpZnkgaWYgdGhlIG9yZyBzZXR0aW5nIGlzIGF2YWlsYWJsZVxuXHRcdFx0XHRcblx0XHRcdFx0bGV0IGtleW1hdGNoZWQgPSBwb3NzaWJsZVZhbHVlcy5zb21lKChrZXk6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MuZmluZEluZGV4KGZ1bmN0aW9uIChzZXR0aW5nOiBhbnkpIHsgcmV0dXJuIGtleSA9PSBzZXR0aW5nLnNldHRpbmc7IH0pID4gLTFcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gVG8gdmVyaWZ5ICBpZiB0aGUgb3JnIHNldHRpbmcgaXMgYXZhaWxhYmxlIGFuZCBlbmFibGVkL0FjdGl2ZVxuXG5cdFx0XHRcdGxldCBBbGxBY3RpdmUgPSBwb3NzaWJsZVZhbHVlcy5ldmVyeSgoa2V5OiBTdHJpbmcpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5hcHBEZXRhaWxzLm9yZ1NldHRpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoc2V0dGluZzogYW55KSB7IHJldHVybiBrZXkgPT0gc2V0dGluZy5zZXR0aW5nICYmIHNldHRpbmcudmFsdWUgPT0gXCJBQ1RJVkVcIjsgfSkgPiAtMVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBJZiBObyBvcmcgc2V0dGluZyBpcyBhdmFpbGFibGUgT1Igc2V0dGluZyBpcyBhdmFpbGFibGUgYnV0IHdpdGggYWN0aXZlIHN0YXR1c1xuXHRcdFx0XHRpZiAoIWtleW1hdGNoZWQgfHwgQWxsQWN0aXZlKSB7XG5cdFx0XHRcdFx0YWxsb3cgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhbGxvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHRyeXtcblx0XHRcdHZhciBhbGxvdyA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRcdGlmKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ1NldHRpbmcuc2V0dGluZyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGFsbG93O1xuXHRcdFx0fVxuXHRcdH1jYXRjaChlcnJvcil7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3MocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRmb3IobGV0IHNldHRpbmdzIG9mIHRoaXMuYXBwRGV0YWlscy5vcmdBcHBTZXR0aW5ncyl7XG5cdFx0XHRcdGlmKHBvc3NpYmxlVmFsdWVzLmluZGV4T2Yoc2V0dGluZ3MudHlwZSkgPj0gMCAmJiBzZXR0aW5ncy5zdGF0dXMgPT0gJ0FDVElWRScpe1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnQXBwU2V0dGluZ3NOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dHJ5e1xuXHRcdFx0dmFyIGFsbG93ID0gdHJ1ZTtcblx0XHRcdGlmICh0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3MgJiYgdGhpcy5hcHBEZXRhaWxzLm9yZ0FwcFNldHRpbmdzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YWxsb3cgPSB0aGlzLmFwcERldGFpbHMub3JnQXBwU2V0dGluZ3Muc29tZSgob3JnQXBwU2V0dGluZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoIXBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKG9yZ0FwcFNldHRpbmcudHlwZSkgfHwgXG5cdFx0XHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdBcHBTZXR0aW5nLnR5cGUpICYmIFxuXHRcdFx0XHRcdFx0XHRvcmdBcHBTZXR0aW5nLnN0YXR1cyAmJiBvcmdBcHBTZXR0aW5nLnN0YXR1cyA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0XHR9XG5cdFx0fWNhdGNoKGVycm9yKXtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cdFx0fVxuXHR9XG5cblx0Y2hlY2tDdXN0b21lclR5cGVJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdHBvc3NpYmxlVmFsdWVzLmluY2x1ZGVzKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0Y2hlY2tDdXN0b21lclR5cGVOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUgfHwgKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50T3JnYW5pemF0aW9uLmN1c3RvbWVyVHlwZSAmJiBcblx0XHRcdCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyh0aGlzLmFwcERldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5jdXN0b21lclR5cGUpKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjaGVja0Zvck5vdE9yZ1NldHRpbmdzKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHRsZXQgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcERldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCl7XG5cdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5vcmdTZXR0aW5ncy5zb21lKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuXHRcdFx0XHRyZXR1cm4gKCFwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpIHx8IFxuXHRcdFx0XHRcdChwb3NzaWJsZVZhbHVlcy5pbmNsdWRlcyhvcmdTZXR0aW5nLnNldHRpbmcpICYmIFxuXHRcdFx0XHRcdG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnSU5fQUNUSVZFJykpXG5cdFx0XHRcdCAgIFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fWVsc2V7XG5cdFx0XHRyZXR1cm4gYWxsb3c7XG5cdFx0fVxuXHR9XG5cdFxuXHRjaGVja0NvbnRleHRTZXR0aW5ncyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0dmFyIGFsbG93ID0gZmFsc2U7XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3Mpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRhbGxvdyA9IHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzW2l0ZW1dO1xuXHRcdFx0XHRhbGxvdyA9IGFsbG93ID09IHVuZGVmaW5lZCA/IHRydWUgOiBhbGxvdztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cblx0Y2hlY2tDb250ZXh0U2V0dGluZ05vdEluKHBvc3NpYmxlVmFsdWVzOiBhbnkpOiBib29sZWFuIHtcblx0XHR2YXIgYWxsb3cgPSB0cnVlO1xuXHRcdGlmKHRoaXMuYXBwRGV0YWlscy5uZ09yZ1NldHRpbmdzKXtcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgcG9zc2libGVWYWx1ZXMpIHtcblx0XHRcdFx0YWxsb3cgPSAhdGhpcy5hcHBEZXRhaWxzLm5nT3JnU2V0dGluZ3NbaXRlbV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhbGxvdztcblx0fVxuXG5cdGNoZWNrRm9yQWNjVHlwZShtZW51SXRlbTogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYobWVudUl0ZW1bJ2FjY291bnRfdHlwZSddLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpID49IDApe1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGVsc2V7XG5cdFx0XHRpZihtZW51SXRlbVsnc3Vic2NyaXB0aW9uX3R5cGVzJ10pe1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja0ZvclN1YnNjcmlwdGlvbnMobWVudUl0ZW1bJ3N1YnNjcmlwdGlvbl90eXBlcyddKVxuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXNbMF0uaWQpe1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHRpZiggaXRlbS5pZCA9PT0gaWQgKXtcblx0XHRcdFx0XHRPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKChrZXkpPT57IFxuXHRcdFx0XHRcdFx0aWYgKGtleSAhPSAnaWQnKSB7XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRNZW51SXRlbVtrZXldID0gaXRlbVtrZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmsgY2hhbmdlZCB0byAnK2N1cnJlbnRNZW51SXRlbS5saW5rKycgYW5kIHJvdXRlIGNoYW5nZWQgdG8gJytjdXJyZW50TWVudUl0ZW0ucm91dGUpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKGlkKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKHBvc3NpYmxlVmFsdWVzOiBhbnkgLCBjdXJyZW50TWVudUl0ZW06YW55ICwgaWQ6bnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0bGV0IGFsbG93ID0gdHJ1ZTtcblx0XHRpZiAocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFyIGZsYWdBcnJheSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaXRlbSBvZiBwb3NzaWJsZVZhbHVlcykge1xuXHRcdFx0XHR2YXIgYWxsS2V5cyA9IE9iamVjdC5rZXlzKGl0ZW0pO1xuXHRcdFx0XHR2YXIgZmxhZyA9IHRoaXMuY2hlY2tBbGxDb25kaXRpb25zKGl0ZW0sIGFsbEtleXMsIGFsbEtleXMpXG5cdFx0XHRcdGZsYWdBcnJheS5wdXNoKGZsYWcpO1xuXHRcdFx0fVxuXHRcdFx0YWxsb3cgPSBmbGFnQXJyYXkuaW5jbHVkZXModHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG5cdFx0XHRcblx0XHR9XG5cdFx0cmV0dXJuIGFsbG93O1xuXHR9XG5cdGNoZWNrRm9yU3BlY2lmaWVkSWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JTcGVjaWZpZWRBY2NvdW50SWRzTm90SW4ocG9zc2libGVWYWx1ZXM6IGFueSAsIGN1cnJlbnRNZW51SXRlbTphbnkgLCBpZDpudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gcG9zc2libGVWYWx1ZXMuaW5kZXhPZihpZCkgPCAwO1xuXHR9XG5cblx0Y2hlY2tGb3JSb2xlcyhwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRlbHNle1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihwb3NzaWJsZVZhbHVlczogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYocG9zc2libGVWYWx1ZXMgJiYgcG9zc2libGVWYWx1ZXMubGVuZ3RoID4gMCl7XG5cdFx0XHRpZihwb3NzaWJsZVZhbHVlcy5pbmRleE9mKHRoaXMuYXBwRGV0YWlscy51c2VySW5mby5yb2xlKSA+PSAwKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNoZWNrRm9ySGlkZGVuVXNlclJvbGUocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGlmKHBvc3NpYmxlVmFsdWVzICYmIHBvc3NpYmxlVmFsdWVzLmxlbmd0aCA+IDApe1xuXHRcdFx0aWYocG9zc2libGVWYWx1ZXMuaW5kZXhPZih0aGlzLmFwcERldGFpbHMudXNlckluZm8ucm9sZSkgPj0gMCAmJiB0aGlzLmFwcERldGFpbHMudXNlckluZm8uaXNIaWRkZW5Vc2VyKXtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZXtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGRpc2FibGVGb3JPcmd3aXRoUmVhZE9ubHkocG9zc2libGVWYWx1ZXM6IGFueSk6IGJvb2xlYW57XG5cdFx0aWYodGhpcy5hcHBEZXRhaWxzLnVzZXJJbmZvLnJvbGUgPT09ICdSRUFEX09OTFknICYmIHBvc3NpYmxlVmFsdWVzLmluZGV4T2YodGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkKSA+PSAwKXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0ZWxzZXtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUgLCBhcHBsaWNhdGlvbklkPXVuZGVmaW5lZCkge1xuXHRcdGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHJvdXRlKSA9PSAtMSkge1xuXHRcdFx0dGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcblx0XHRcdFx0aWYgKGFwcGxpY2F0aW9uSWQpIHtcblx0XHRcdFx0XHRwYXJhbXMgPSB7Li4ucGFyYW1zLCAuLi5hcHBsaWNhdGlvbklkfTtcdFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJvdXRlLmluZGV4T2YoJz8nKSA+IC0xICYmIHJvdXRlLmluZGV4T2YoJ3VzZXJtZ210JykgPiAtMSl7XG5cdFx0XHRcdFx0cm91dGUgPSByb3V0ZS5zcGxpdCgnPycpWzBdO1xuXHRcdFx0XHRcdGxldCBuZXdRUGFyYW0gPSB7IHVzZXJtZ210IDogdHJ1ZX1cblx0XHRcdFx0XHRwYXJhbXMgPSB7IC4uLnBhcmFtcyAsIC4uLm5ld1FQYXJhbX1cblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgdXJsVG9OYXZpZ2F0ZSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2UucHJlcGFyZVVybFdpdGhRdWVyeVBhcmFtcyhyb3V0ZSwgcGFyYW1zKTtcblx0XHRcdFx0dXJsVG9OYXZpZ2F0ZSA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdC8vIHVybFRvTmF2aWdhdGUgPSBgaHR0cDovL2xvY2FsaG9zdDozMDAwLyR7dXJsVG9OYXZpZ2F0ZX1gXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdOYXZpZ2F0aW5nIHRvIC0gJyx1cmxUb05hdmlnYXRlKTtcblx0XHRcdFx0d2luZG93Lm9wZW4odXJsVG9OYXZpZ2F0ZSwgJ19zZWxmJyk7XG5cdFx0XHR9KTtcblx0XHR9XG4gICAgfVxuXHRcblx0cHVibGljIGZldGNoS2V5VmFsdWUoa2V5OiBzdHJpbmcpIHtcblx0XHRpZih0aGlzLmFwcERldGFpbHMgJiYgdGhpcy5hcHBEZXRhaWxzLmN1cnJlbnRBY2NvdW50KSB7XG5cdFx0XHRyZXR1cm4gKHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFtrZXldKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdFxuXHR9XG5cblx0cHVibGljIHNldEFjdGl2ZVJlY29Db3VudChjb3VudDpudW1iZXIpe1xuXHRcdHRoaXMuYXBwRGV0YWlscy5jdXJyZW50QWNjb3VudFsnYWN0aXZlUmVjb21tZW5kYXRpb24nXSA9IGNvdW50O1xuXHR9XG5cdFxuXHRwdWJsaWMgaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGlkLHN1YnMsdHlwZSl7XG4gICAgaWYoaWQgPT09ICdhZHNfYW1hem9uX2F0dHJpYnV0aW9uJyAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdBTVNfQVRUUklCVVRJT04nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9kc3AnICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0RTUCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2FtYXpvbl9jb250ZW50JykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ09OVEVOVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYoKGlkID09PSAnYWRzX2luc3RhY2FydCcpICYmIHRoaXMuY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgdHlwZSwgJ0lOU1RBQ0FSVCcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9ZWxzZSBpZigoaWQgPT09ICdhZHNfY3JpdGVvJykgJiYgdGhpcy5jaGVja1N1YnNjcmlwdGlvbkFjdGl2ZShzdWJzLCB0eXBlLCAnQ1JJVEVPJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoKGlkID09PSAnYWRzX3dhbG1hcnQnKSAmJiB0aGlzLmNoZWNrU3Vic2NyaXB0aW9uQWN0aXZlKHN1YnMsIHR5cGUsICdXQUxNQVJUJykpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fWVsc2UgaWYoaWQgPT09ICdhZHNfZGF0YV9wbGF0Zm9ybSd8fCBpZCA9PT0gJ2FtYy1wbGF0Zm9ybS13ZWInIHx8IGlkID09PSAnYWRzX2FtYXpvbl9zZWxsZXInKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1lbHNlIGlmKGlkID09PSAnYWRzX2FtYXpvbl9hZHZlcnRpc2luZycgfHwgaWQgPT09ICdhZHNfdmVuZG9yX3NhbGVzJyB8fCBpZCA9PT0gJ2Fkc19zZWxsZXJfc2FsZXMnKSB7XG4gICAgICBmb3IobGV0IHNldHRpbmdzIG9mIHN1YnMpe1xuICAgICAgICBpZihzZXR0aW5ncy50eXBlICE9IHR5cGUgJiYgc2V0dGluZ3Muc3RhdHVzID09IFwiQUNUSVZFXCIpe1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICBcdH1cblxuXHRwdWJsaWMgY2hlY2tTdWJzY3JpcHRpb25BY3RpdmUoc3VicywgYWNjVHlwZSAsc3ViVHlwZSkge1xuXHRcdGlmKHN1YlR5cGUgPT09IGFjY1R5cGUpe1xuXHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBjdXJyZW50VHlwZVN1YiA9IHN1YnMuZmlsdGVyKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udHlwZSA9PT0gc3ViVHlwZSk7XG5cdFx0aWYoY3VycmVudFR5cGVTdWIubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoY3VycmVudFR5cGVTdWJbMF0uc3RhdHVzID09PSAnQUNUSVZFJyB8fCBjdXJyZW50VHlwZVN1YlswXS50eXBlID09PSBhY2NUeXBlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRBcHBsaWNhdGlvbklEKCkge1xuXHRcdGxldCB1cmxBcnJheSA9IHRoaXMudXJsQ29udGV4dFNlcnZpY2Uucm91dGVyLnVybC5zcGxpdCgnLycpO1xuXHRcdGxldCBjdXJyZW50Um91dGUgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcblx0XHRcblx0XHRpZih0aGlzLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCI7XG5cdFx0fSBlbHNlIGlmKHRoaXMuc292QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuXHRcdFx0cmV0dXJuIFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCI7XG5cdFx0fVxuXHR9XG59Il19
@@ -484,6 +484,7 @@ class ApplicationSidebarService {
484
484
  enableAllMenusByOrg = [30780];
485
485
  appDetails;
486
486
  isStructureApiSupport;
487
+ isManagedServiceAcc;
487
488
  SettingsMenuList;
488
489
  appNames;
489
490
  menulists;
@@ -578,7 +579,7 @@ class ApplicationSidebarService {
578
579
  if (appName.id == 'ads_amazon_dsp') {
579
580
  if (list.children && list.children.length > 0) {
580
581
  for (let child of list.children) {
581
- if (!this.isStructureApiSupport && child.id == "ams_dsp_settings") {
582
+ if ((this.isManagedServiceAcc || !this.isStructureApiSupport) && child.id == "ams_dsp_settings") {
582
583
  child.children = child.children.filter(s_child => s_child.id !== 'ams_dsp_rules');
583
584
  }
584
585
  }
@@ -1985,9 +1986,11 @@ class ApplicationSidebarComponent {
1985
1986
  try {
1986
1987
  this.RestApiService.getStructureAPISupportData(currentAccount.organizationId, currentAccount.businessGroupId, currentAccount.amsAccountId).subscribe((response) => {
1987
1988
  this.navigation.isStructureApiSupport = response ? response['structureApiSupport'] : undefined;
1989
+ this.navigation.isManagedServiceAcc = response ? response['isManagedAccount'] : undefined;
1988
1990
  this.createAppDetails(this.applicationDetails);
1989
1991
  }, (error) => {
1990
1992
  this.navigation.isStructureApiSupport = undefined;
1993
+ this.navigation.isManagedServiceAcc = undefined;
1991
1994
  this.createAppDetails(this.applicationDetails);
1992
1995
  });
1993
1996
  }