@c8y/ngx-components 1018.0.120 → 1018.0.122

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.
@@ -37,7 +37,7 @@ export declare class PluginListComponent {
37
37
  private updateAppRemotes;
38
38
  private getAppsForUpdate;
39
39
  private isPluginInstalledInApp;
40
- private getInstalledPluginContextPathWithoutVersion;
40
+ private getPluginContextPathWithoutVersion;
41
41
  private handleRemotesUpdate;
42
42
  private getAllPluginsToRemove;
43
43
  private emitRemotes;
@@ -114,7 +114,7 @@ export class PluginListComponent {
114
114
  if (updateType === 'install') {
115
115
  this.appsDisabled.clear();
116
116
  for (const app of apps) {
117
- if (await this.isPluginInstalledInApp(plugin, app)) {
117
+ if (this.isPluginInstalledInApp(plugin, app)) {
118
118
  this.appsDisabled.add(app.id);
119
119
  }
120
120
  }
@@ -122,7 +122,7 @@ export class PluginListComponent {
122
122
  if (updateType === 'uninstall') {
123
123
  const installedApps = [];
124
124
  for (const app of apps) {
125
- if (await this.isPluginInstalledInApp(plugin, app)) {
125
+ if (this.isPluginInstalledInApp(plugin, app)) {
126
126
  installedApps.push(app);
127
127
  }
128
128
  }
@@ -130,11 +130,18 @@ export class PluginListComponent {
130
130
  }
131
131
  return apps;
132
132
  }
133
- async isPluginInstalledInApp(plugin, app) {
133
+ isPluginInstalledInApp(plugin, app) {
134
134
  const appRemotes = this.pluginsService.getMFRemotes(app) || {};
135
- return Object.keys(appRemotes).some(remote => this.getInstalledPluginContextPathWithoutVersion(remote) === plugin.contextPath);
135
+ for (const [remoteName, modules] of Object.entries(appRemotes)) {
136
+ const pluginFromThisPackageIsInstalled = this.getPluginContextPathWithoutVersion(remoteName) === plugin.contextPath;
137
+ const specificPluginModuleIsInstalled = modules.some(module => module === plugin.module);
138
+ if (pluginFromThisPackageIsInstalled && specificPluginModuleIsInstalled) {
139
+ return true;
140
+ }
141
+ }
142
+ return false;
136
143
  }
137
- getInstalledPluginContextPathWithoutVersion(remote) {
144
+ getPluginContextPathWithoutVersion(remote) {
138
145
  return remote.split('@')[0];
139
146
  }
140
147
  async handleRemotesUpdate(application, plugin, updateType) {
@@ -179,7 +186,8 @@ export class PluginListComponent {
179
186
  ariaDescribedby: 'modal-body',
180
187
  ariaLabelledBy: 'modal-title',
181
188
  initialState,
182
- ignoreBackdropClick: true
189
+ ignoreBackdropClick: true,
190
+ keyboard: false
183
191
  }).content.result;
184
192
  }
185
193
  catch (er) {
@@ -205,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
205
213
  }], selectedItems: [{
206
214
  type: Output
207
215
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTRCLGVBQWUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDdEYsT0FBTyxFQUNMLFlBQVksRUFFWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7QUFPL0YsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFDVSxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLGdCQUFrQztRQUxsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIs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LFVBQVUsQ0FDdEIsWUFHQztRQUVELElBQUk7WUFDRixPQUFPLE1BQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUU7Z0JBQzNELEtBQUssRUFBRSxVQUFVO2dCQUNqQixlQUFlLEVBQUUsWUFBWTtnQkFDN0IsY0FBYyxFQUFFLGFBQWE7Z0JBQzdCLFlBQVk7Z0JBQ1osbUJBQW1CLEVBQUUsSUFBSTthQUMxQixDQUFDLENBQUMsT0FDSixDQUFDLE1BQU0sQ0FBQztTQUNWO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPO1NBQ1I7SUFDSCxDQUFDOztnSEFyTlUsbUJBQW1CO29HQUFuQixtQkFBbUIsZ1BDcEJoQyx1d0RBOENBOzJGRDFCYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzBQQU1sQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucywgQXBwbGljYXRpb25UeXBlLCBJQXBwbGljYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFwcGxpY2F0aW9uUGx1Z2luLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBQbHVnaW5zU2VydmljZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UsIFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHBzLXRvLXVwZGF0ZS1yZW1vdGVzLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlVHlwZSB9IGZyb20gJy4vYXBwcy10by11cGRhdGUtcmVtb3Rlcy1zZWxlY3QubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGx1Z2luLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBsdWdpbkxpc3RDb21wb25lbnQge1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICBASW5wdXQoKSBwbHVnaW5zJDogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvblBsdWdpbltdPjtcbiAgQElucHV0KCkgZW1wdHlMaXN0VGV4dCA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogU2hvd3MgdGhlIGluc3RhbGwgYnV0dG9uIGZvciBlYWNoIHBsdWdpbiBzZXBhcmF0ZWx5LiBDdXJyZW50bHkgdXNlZCBpbiBwYWNrYWdlLWRldGFpbHMgdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIGluc3RhbGxhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhY2thZ2U6IElBcHBsaWNhdGlvbjtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXM6IEV2ZW50RW1pdHRlcjxBcHBsaWNhdGlvblBsdWdpbltdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcmVtb3RlUGx1Z2lucyQ6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHNlbGVjdGVkUGx1Z2luczogeyBba2V5OiBzdHJpbmddOiBBcHBsaWNhdGlvblBsdWdpbiB9ID0ge307XG4gIHVwZGF0aW5nUGx1Z2luSWQ6IFJlY29yZDxVcGRhdGVUeXBlLCBzdHJpbmc+ID0geyBpbnN0YWxsOiAnJywgdW5pbnN0YWxsOiAnJyB9O1xuICBhcHBzRGlzYWJsZWQ6IFNldDxJQXBwbGljYXRpb25bJ2lkJ10+ID0gbmV3IFNldDxJQXBwbGljYXRpb25bJ2lkJ10+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgdXBkYXRlU2VsZWN0ZWRJdGVtcyhzZWxlY3RlZDogYm9vbGVhbiwgcGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbikge1xuICAgIHRoaXMuc2VsZWN0ZWRQbHVnaW5zW3BsdWdpbi5pZF0gPSBzZWxlY3RlZCA/IHBsdWdpbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmx5SW5zdGFsbGVkUGx1Z2lucyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFBsdWdpbnMpLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChvbmx5SW5zdGFsbGVkUGx1Z2lucyk7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsUGx1Z2luKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcFJlbW90ZXMocGx1Z2luLCAnaW5zdGFsbCcpO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsUGx1Z2luKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfUExVR0lOUywge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUExVR0lOX0xJU1QsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5JTlNUQUxMX1BMVUdJTixcbiAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBSZW1vdGVzKHBsdWdpbiwgJ3VuaW5zdGFsbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBcHBSZW1vdGVzKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSBwbHVnaW4/LmlkO1xuICAgIGxldCBpbml0aWFsU3RhdGU6IFBpY2s8XG4gICAgICBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50LFxuICAgICAgJ2FwcHMnIHwgJ3VwZGF0ZVR5cGUnIHwgJ3BsdWdpbk5hbWUnIHwgJ2FwcHNEaXNhYmxlZCdcbiAgICA+O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5nZXRBcHBzRm9yVXBkYXRlKHBsdWdpbiwgdXBkYXRlVHlwZSk7XG4gICAgICBpbml0aWFsU3RhdGUgPSB7XG4gICAgICAgIGFwcHMsXG4gICAgICAgIHVwZGF0ZVR5cGUsXG4gICAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbi5uYW1lLFxuICAgICAgICBhcHBzRGlzYWJsZWQ6IHRoaXMuYXBwc0Rpc2FibGVkXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2VsZWN0ZWRBcHBzOiBJQXBwbGljYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgc2VsZWN0ZWRBcHBzID0gYXdhaXQgdGhpcy5zZWxlY3RBcHBzKGluaXRpYWxTdGF0ZSk7XG4gICAgICBpZiAoIXNlbGVjdGVkQXBwcykge1xuICAgICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gdW5yZWFjaGVkXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJykge1xuICAgICAgY29uc3QgbGljZW5zZXNWZXJpZmllZEJ5VXNlciA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlMaWNlbnNlcyhbcGx1Z2luXSk7XG4gICAgICBpZiAoIWxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGFwcCBvZiBzZWxlY3RlZEFwcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlUmVtb3Rlc1VwZGF0ZShhcHAsIHBsdWdpbiwgdXBkYXRlVHlwZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NUZXh0ID1cbiAgICAgICAgICB1cGRhdGVUeXBlID09PSAnaW5zdGFsbCdcbiAgICAgICAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnUGx1Z2luIGluc3RhbGxlZCB0byBhcHAgXCJ7eyBhcHBOYW1lIH19XCIuJyksIHtcbiAgICAgICAgICAgICAgICBhcHBOYW1lOiBhcHAubmFtZVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBnZXR0ZXh0KCdQbHVnaW4gdW5pbnN0YWxsZWQgZnJvbSBhcHAgXCJ7eyBhcHBOYW1lIH19XCIuJyksXG4gICAgICAgICAgICAgICAgeyBhcHBOYW1lOiBhcHAubmFtZSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3Moc3VjY2Vzc1RleHQpO1xuICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfUExVR0lOUywge1xuICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBMVUdJTl9MSVNULFxuICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlBMVUdJTl9JTlNUQUxMRUQsXG4gICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1BMVUdJTlMsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QTFVHSU5fTElTVCxcbiAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TRVJWRVJfRkFJTFVSRSxcbiAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFwcHNGb3JVcGRhdGUocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbiwgdXBkYXRlVHlwZTogVXBkYXRlVHlwZSkge1xuICAgIGxldCBhcHBzID0gKGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRXZWJBcHBsaWNhdGlvbnMoKSkuZmlsdGVyKFxuICAgICAgYXBwID0+IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc093bmVyKGFwcCkgJiYgYXBwLnR5cGUgIT09IEFwcGxpY2F0aW9uVHlwZS5FWFRFUk5BTFxuICAgICk7XG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2luc3RhbGwnKSB7XG4gICAgICB0aGlzLmFwcHNEaXNhYmxlZC5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5pc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbiwgYXBwKSkge1xuICAgICAgICAgIHRoaXMuYXBwc0Rpc2FibGVkLmFkZChhcHAuaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICd1bmluc3RhbGwnKSB7XG4gICAgICBjb25zdCBpbnN0YWxsZWRBcHBzOiBJQXBwbGljYXRpb25bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5pc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbiwgYXBwKSkge1xuICAgICAgICAgIGluc3RhbGxlZEFwcHMucHVzaChhcHApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhcHBzID0gaW5zdGFsbGVkQXBwcztcbiAgICB9XG4gICAgcmV0dXJuIGFwcHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGlzUGx1Z2luSW5zdGFsbGVkSW5BcHAoXG4gICAgcGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbixcbiAgICBhcHA6IElBcHBsaWNhdGlvblxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhcHBSZW1vdGVzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRlJlbW90ZXMoYXBwKSB8fCB7fTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXBwUmVtb3Rlcykuc29tZShcbiAgICAgIHJlbW90ZSA9PiB0aGlzLmdldEluc3RhbGxlZFBsdWdpbkNvbnRleHRQYXRoV2l0aG91dFZlcnNpb24ocmVtb3RlKSA9PT0gcGx1Z2luLmNvbnRleHRQYXRoXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5zdGFsbGVkUGx1Z2luQ29udGV4dFBhdGhXaXRob3V0VmVyc2lvbihyZW1vdGU6IHN0cmluZykge1xuICAgIHJldHVybiByZW1vdGUuc3BsaXQoJ0AnKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUmVtb3Rlc1VwZGF0ZShcbiAgICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uLFxuICAgIHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sXG4gICAgdXBkYXRlVHlwZTogVXBkYXRlVHlwZVxuICApIHtcbiAgICB0cnkge1xuICAgICAgLy8gV2hlbiByZW1vdGVzIG9iamVjdCBpcyBub3Qgc2V0IGluIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBvZiBhbiBhcHBsaWNhdGlvbi5cbiAgICAgIC8vIEZhbGxiYWNrIHRvIHNldEluaXRpYWxSZW1vdGVzIGlzIHRyaWdnZXJlZC5cbiAgICAgIGxldCB1cGRhdGVkUmVtb3RlcyA9IGF3YWl0ICh1cGRhdGVUeXBlID09PSAnaW5zdGFsbCdcbiAgICAgICAgPyB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFkZFJlbW90ZXMoYXBwbGljYXRpb24sIHBsdWdpbilcbiAgICAgICAgOiB0aGlzLnBsdWdpbnNTZXJ2aWNlLnJlbW92ZVJlbW90ZXMoYXBwbGljYXRpb24sIHRoaXMuZ2V0QWxsUGx1Z2luc1RvUmVtb3ZlKHBsdWdpbikpKTtcbiAgICAgIGlmICghdXBkYXRlZFJlbW90ZXMpIHtcbiAgICAgICAgLy8gVE9ETyBkaXNjdXNzIGlmIHdlIG5lZWQgdG8gaGFuZGxlIGl0IGxpa2UgdGhhdC5cbiAgICAgICAgLy8gUmlnaHQgbm93IHJlbW90ZXMgZnJvbSB0aGUgY3VtdWxvY2l0eS5qc29uIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiByZW1vdGVzIG9iamVjdCBpcyBtaXNzaW5nIGluIHRoZSBjb25maWd1cmF0aW9uLlxuICAgICAgICB1cGRhdGVkUmVtb3RlcyA9IGF3YWl0IHRoaXMucGx1Z2luc1NlcnZpY2Uuc2V0SW5pdGlhbFJlbW90ZXMoYXBwbGljYXRpb24pO1xuICAgICAgICAvLyBGcmVzaCBhcHBsaWNhdGlvbiBNTyBpcyBuZWVkZWQsIGFmdGVyIGluaXRpYWwgc3RhdGUgd2FzIHNldC5cbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFwcGxpY2F0aW9uKGFwcGxpY2F0aW9uLmlkKTtcbiAgICAgICAgdXBkYXRlZFJlbW90ZXMgPSBhd2FpdCB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFkZFJlbW90ZXMoYXBwLCBwbHVnaW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZW1pdFJlbW90ZXModXBkYXRlZFJlbW90ZXMpO1xuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFsbFBsdWdpbnNUb1JlbW92ZShwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZS5hcHBsaWNhdGlvblZlcnNpb25zLm1hcChhdiA9PiAoe1xuICAgICAgaWQ6IGAke3BsdWdpbi5jb250ZXh0UGF0aH1AJHthdi52ZXJzaW9ufS8ke3BsdWdpbi5tb2R1bGV9YCxcbiAgICAgIG1vZHVsZTogcGx1Z2luLm1vZHVsZSxcbiAgICAgIHBhdGg6IHBsdWdpbi5wYXRoXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMge1xuICAgIHRoaXMucmVtb3RlUGx1Z2lucyQubmV4dChyZW1vdGVzKTtcbiAgICByZXR1cm4geyAuLi50aGlzLnJlbW90ZVBsdWdpbnMkLnZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbGVjdEFwcHMoXG4gICAgaW5pdGlhbFN0YXRlOiBQaWNrPFxuICAgICAgQXBwc1RvVXBkYXRlUmVtb3Rlc1NlbGVjdENvbXBvbmVudCxcbiAgICAgICdhcHBzJyB8ICd1cGRhdGVUeXBlJyB8ICdwbHVnaW5OYW1lJyB8ICdhcHBzRGlzYWJsZWQnXG4gICAgPlxuICApOiBQcm9taXNlPElBcHBsaWNhdGlvbltdPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCAoXG4gICAgICAgIHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50LCB7XG4gICAgICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICAgICAgfSkuY29udGVudCBhcyBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50XG4gICAgICApLnJlc3VsdDtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwiYmctaW5oZXJpdFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHBsdWdpbnMkIHwgYXN5bmMpPy5sZW5ndGggIT09IDA7IGVsc2UgZW1wdHlMaXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGx1Z2luIG9mIHBsdWdpbnMkIHwgYXN5bmNcIj5cbiAgICAgIDxjOHktbGkgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogcGx1Z2luLmluc3RhbGxlZCB9XCIgY2xhc3M9XCJiZy1pbmhlcml0XCI+XG4gICAgICAgIDxjOHktcGx1Z2luLWxpc3QtaXRlbVxuICAgICAgICAgIChpc0l0ZW1TZWxlY3RlZCk9XCJ1cGRhdGVTZWxlY3RlZEl0ZW1zKCRldmVudCwgcGx1Z2luKVwiXG4gICAgICAgICAgW3BsdWdpbl09XCJwbHVnaW5cIlxuICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGVcIlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICAgICAgPjwvYzh5LXBsdWdpbi1saXN0LWl0ZW0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtNDAgbS10LTRcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImluc3RhbGxhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1bmluc3RhbGxQbHVnaW4ocGx1Z2luKVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IHBsdWdpbi5pZCA9PT0gdXBkYXRpbmdQbHVnaW5JZC51bmluc3RhbGwgfVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidXBkYXRpbmdQbHVnaW5JZC51bmluc3RhbGwgJiYgcGx1Z2luLmlkICE9PSB1cGRhdGluZ1BsdWdpbklkLnVuaW5zdGFsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSBtLWwtNFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdVbmluc3RhbGwgcGx1Z2luJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBVbmluc3RhbGwgcGx1Z2luXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5zdGFsbFBsdWdpbihwbHVnaW4pXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1wZW5kaW5nJzogcGx1Z2luLmlkID09PSB1cGRhdGluZ1BsdWdpbklkLmluc3RhbGwgfVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidXBkYXRpbmdQbHVnaW5JZC5pbnN0YWxsICYmIHBsdWdpbi5pZCAhPT0gdXBkYXRpbmdQbHVnaW5JZC5pbnN0YWxsXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBtLWwtOFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdJbnN0YWxsIHBsdWdpbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgSW5zdGFsbCBwbHVnaW5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2M4eS1saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2M4eS1saXN0LWdyb3VwPlxuPG5nLXRlbXBsYXRlICNlbXB0eUxpc3Q+XG4gIDxkaXYgY2xhc3M9XCJjOHktZW1wdHktc3RhdGUgdGV4dC1sZWZ0XCIgKm5nSWY9XCJlbXB0eUxpc3RUZXh0XCI+XG4gICAgPGgxIGM4eUljb249XCJwbHVnaW5cIj48L2gxPlxuICAgIDxwPlxuICAgICAge3sgZW1wdHlMaXN0VGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXBsdWdpbnMvcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTRCLGVBQWUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFDdEYsT0FBTyxFQUNMLFlBQVksRUFFWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7QUFPL0YsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFDVSxnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLGdCQUFrQztRQUxsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIs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O1NBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFpQztRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVSxDQUN0QixZQUdDO1FBRUQsSUFBSTtZQUNGLE9BQU8sTUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtnQkFDM0QsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLGVBQWUsRUFBRSxZQUFZO2dCQUM3QixjQUFjLEVBQUUsYUFBYTtnQkFDN0IsWUFBWTtnQkFDWixtQkFBbUIsRUFBRSxJQUFJO2dCQUN6QixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUMsT0FDSixDQUFDLE1BQU0sQ0FBQztTQUNWO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPO1NBQ1I7SUFDSCxDQUFDOztnSEExTlUsbUJBQW1CO29HQUFuQixtQkFBbUIsZ1BDcEJoQyx1d0RBOENBOzJGRDFCYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzBQQU1sQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucywgQXBwbGljYXRpb25UeXBlLCBJQXBwbGljYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEFwcGxpY2F0aW9uUGx1Z2luLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBQbHVnaW5zU2VydmljZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEVjb3N5c3RlbVNlcnZpY2UsIFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHBzLXRvLXVwZGF0ZS1yZW1vdGVzLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlVHlwZSB9IGZyb20gJy4vYXBwcy10by11cGRhdGUtcmVtb3Rlcy1zZWxlY3QubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGx1Z2luLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGx1Z2luLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBsdWdpbkxpc3RDb21wb25lbnQge1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICBASW5wdXQoKSBwbHVnaW5zJDogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvblBsdWdpbltdPjtcbiAgQElucHV0KCkgZW1wdHlMaXN0VGV4dCA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogU2hvd3MgdGhlIGluc3RhbGwgYnV0dG9uIGZvciBlYWNoIHBsdWdpbiBzZXBhcmF0ZWx5LiBDdXJyZW50bHkgdXNlZCBpbiBwYWNrYWdlLWRldGFpbHMgdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIGluc3RhbGxhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhY2thZ2U6IElBcHBsaWNhdGlvbjtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXM6IEV2ZW50RW1pdHRlcjxBcHBsaWNhdGlvblBsdWdpbltdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcmVtb3RlUGx1Z2lucyQ6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHNlbGVjdGVkUGx1Z2luczogeyBba2V5OiBzdHJpbmddOiBBcHBsaWNhdGlvblBsdWdpbiB9ID0ge307XG4gIHVwZGF0aW5nUGx1Z2luSWQ6IFJlY29yZDxVcGRhdGVUeXBlLCBzdHJpbmc+ID0geyBpbnN0YWxsOiAnJywgdW5pbnN0YWxsOiAnJyB9O1xuICBhcHBzRGlzYWJsZWQ6IFNldDxJQXBwbGljYXRpb25bJ2lkJ10+ID0gbmV3IFNldDxJQXBwbGljYXRpb25bJ2lkJ10+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgdXBkYXRlU2VsZWN0ZWRJdGVtcyhzZWxlY3RlZDogYm9vbGVhbiwgcGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbikge1xuICAgIHRoaXMuc2VsZWN0ZWRQbHVnaW5zW3BsdWdpbi5pZF0gPSBzZWxlY3RlZCA/IHBsdWdpbiA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmx5SW5zdGFsbGVkUGx1Z2lucyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFBsdWdpbnMpLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChvbmx5SW5zdGFsbGVkUGx1Z2lucyk7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsUGx1Z2luKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUFwcFJlbW90ZXMocGx1Z2luLCAnaW5zdGFsbCcpO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsUGx1Z2luKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfUExVR0lOUywge1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuUExVR0lOX0xJU1QsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQUNUSU9OUy5JTlNUQUxMX1BMVUdJTixcbiAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVBcHBSZW1vdGVzKHBsdWdpbiwgJ3VuaW5zdGFsbCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVBcHBSZW1vdGVzKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSBwbHVnaW4/LmlkO1xuICAgIGxldCBpbml0aWFsU3RhdGU6IFBpY2s8XG4gICAgICBBcHBzVG9VcGRhdGVSZW1vdGVzU2VsZWN0Q29tcG9uZW50LFxuICAgICAgJ2FwcHMnIHwgJ3VwZGF0ZVR5cGUnIHwgJ3BsdWdpbk5hbWUnIHwgJ2FwcHNEaXNhYmxlZCdcbiAgICA+O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5nZXRBcHBzRm9yVXBkYXRlKHBsdWdpbiwgdXBkYXRlVHlwZSk7XG4gICAgICBpbml0aWFsU3RhdGUgPSB7XG4gICAgICAgIGFwcHMsXG4gICAgICAgIHVwZGF0ZVR5cGUsXG4gICAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbi5uYW1lLFxuICAgICAgICBhcHBzRGlzYWJsZWQ6IHRoaXMuYXBwc0Rpc2FibGVkXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2VsZWN0ZWRBcHBzOiBJQXBwbGljYXRpb25bXTtcbiAgICB0cnkge1xuICAgICAgc2VsZWN0ZWRBcHBzID0gYXdhaXQgdGhpcy5zZWxlY3RBcHBzKGluaXRpYWxTdGF0ZSk7XG4gICAgICBpZiAoIXNlbGVjdGVkQXBwcykge1xuICAgICAgICB0aGlzLnVwZGF0aW5nUGx1Z2luSWRbdXBkYXRlVHlwZV0gPSAnJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gdW5yZWFjaGVkXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdpbnN0YWxsJykge1xuICAgICAgY29uc3QgbGljZW5zZXNWZXJpZmllZEJ5VXNlciA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlMaWNlbnNlcyhbcGx1Z2luXSk7XG4gICAgICBpZiAoIWxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGFwcCBvZiBzZWxlY3RlZEFwcHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlUmVtb3Rlc1VwZGF0ZShhcHAsIHBsdWdpbiwgdXBkYXRlVHlwZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NUZXh0ID1cbiAgICAgICAgICB1cGRhdGVUeXBlID09PSAnaW5zdGFsbCdcbiAgICAgICAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnUGx1Z2luIGluc3RhbGxlZCB0byBhcHAgXCJ7eyBhcHBOYW1lIH19XCIuJyksIHtcbiAgICAgICAgICAgICAgICBhcHBOYW1lOiBhcHAubmFtZVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBnZXR0ZXh0KCdQbHVnaW4gdW5pbnN0YWxsZWQgZnJvbSBhcHAgXCJ7eyBhcHBOYW1lIH19XCIuJyksXG4gICAgICAgICAgICAgICAgeyBhcHBOYW1lOiBhcHAubmFtZSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3Moc3VjY2Vzc1RleHQpO1xuICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuRVZFTlRTLlBBQ0tBR0VfUExVR0lOUywge1xuICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLlBMVUdJTl9MSVNULFxuICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlBMVUdJTl9JTlNUQUxMRUQsXG4gICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuQVBQTElDQVRJT05TLkVWRU5UUy5QQUNLQUdFX1BMVUdJTlMsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5QTFVHSU5fTElTVCxcbiAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BUFBMSUNBVElPTlMuUkVTVUxUUy5TRVJWRVJfRkFJTFVSRSxcbiAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGluZ1BsdWdpbklkW3VwZGF0ZVR5cGVdID0gJyc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFwcHNGb3JVcGRhdGUocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbiwgdXBkYXRlVHlwZTogVXBkYXRlVHlwZSkge1xuICAgIGxldCBhcHBzID0gKGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRXZWJBcHBsaWNhdGlvbnMoKSkuZmlsdGVyKFxuICAgICAgYXBwID0+IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc093bmVyKGFwcCkgJiYgYXBwLnR5cGUgIT09IEFwcGxpY2F0aW9uVHlwZS5FWFRFUk5BTFxuICAgICk7XG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2luc3RhbGwnKSB7XG4gICAgICB0aGlzLmFwcHNEaXNhYmxlZC5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuICAgICAgICBpZiAodGhpcy5pc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbiwgYXBwKSkge1xuICAgICAgICAgIHRoaXMuYXBwc0Rpc2FibGVkLmFkZChhcHAuaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICd1bmluc3RhbGwnKSB7XG4gICAgICBjb25zdCBpbnN0YWxsZWRBcHBzOiBJQXBwbGljYXRpb25bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBhcHAgb2YgYXBwcykge1xuICAgICAgICBpZiAodGhpcy5pc1BsdWdpbkluc3RhbGxlZEluQXBwKHBsdWdpbiwgYXBwKSkge1xuICAgICAgICAgIGluc3RhbGxlZEFwcHMucHVzaChhcHApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhcHBzID0gaW5zdGFsbGVkQXBwcztcbiAgICB9XG4gICAgcmV0dXJuIGFwcHM7XG4gIH1cblxuICBwcml2YXRlIGlzUGx1Z2luSW5zdGFsbGVkSW5BcHAocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbiwgYXBwOiBJQXBwbGljYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBhcHBSZW1vdGVzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRlJlbW90ZXMoYXBwKSB8fCB7fTtcblxuICAgIGZvciAoY29uc3QgW3JlbW90ZU5hbWUsIG1vZHVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKGFwcFJlbW90ZXMpKSB7XG4gICAgICBjb25zdCBwbHVnaW5Gcm9tVGhpc1BhY2thZ2VJc0luc3RhbGxlZCA9XG4gICAgICAgIHRoaXMuZ2V0UGx1Z2luQ29udGV4dFBhdGhXaXRob3V0VmVyc2lvbihyZW1vdGVOYW1lKSA9PT0gcGx1Z2luLmNvbnRleHRQYXRoO1xuICAgICAgY29uc3Qgc3BlY2lmaWNQbHVnaW5Nb2R1bGVJc0luc3RhbGxlZCA9IG1vZHVsZXMuc29tZShtb2R1bGUgPT4gbW9kdWxlID09PSBwbHVnaW4ubW9kdWxlKTtcbiAgICAgIGlmIChwbHVnaW5Gcm9tVGhpc1BhY2thZ2VJc0luc3RhbGxlZCAmJiBzcGVjaWZpY1BsdWdpbk1vZHVsZUlzSW5zdGFsbGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldFBsdWdpbkNvbnRleHRQYXRoV2l0aG91dFZlcnNpb24ocmVtb3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVtb3RlLnNwbGl0KCdAJylbMF07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVJlbW90ZXNVcGRhdGUoXG4gICAgYXBwbGljYXRpb246IElBcHBsaWNhdGlvbixcbiAgICBwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luLFxuICAgIHVwZGF0ZVR5cGU6IFVwZGF0ZVR5cGVcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFdoZW4gcmVtb3RlcyBvYmplY3QgaXMgbm90IHNldCBpbiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgb2YgYW4gYXBwbGljYXRpb24uXG4gICAgICAvLyBGYWxsYmFjayB0byBzZXRJbml0aWFsUmVtb3RlcyBpcyB0cmlnZ2VyZWQuXG4gICAgICBsZXQgdXBkYXRlZFJlbW90ZXMgPSBhd2FpdCAodXBkYXRlVHlwZSA9PT0gJ2luc3RhbGwnXG4gICAgICAgID8gdGhpcy5wbHVnaW5zU2VydmljZS5hZGRSZW1vdGVzKGFwcGxpY2F0aW9uLCBwbHVnaW4pXG4gICAgICAgIDogdGhpcy5wbHVnaW5zU2VydmljZS5yZW1vdmVSZW1vdGVzKGFwcGxpY2F0aW9uLCB0aGlzLmdldEFsbFBsdWdpbnNUb1JlbW92ZShwbHVnaW4pKSk7XG4gICAgICBpZiAoIXVwZGF0ZWRSZW1vdGVzKSB7XG4gICAgICAgIC8vIFRPRE8gZGlzY3VzcyBpZiB3ZSBuZWVkIHRvIGhhbmRsZSBpdCBsaWtlIHRoYXQuXG4gICAgICAgIC8vIFJpZ2h0IG5vdyByZW1vdGVzIGZyb20gdGhlIGN1bXVsb2NpdHkuanNvbiBhcmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gcmVtb3RlcyBvYmplY3QgaXMgbWlzc2luZyBpbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgdXBkYXRlZFJlbW90ZXMgPSBhd2FpdCB0aGlzLnBsdWdpbnNTZXJ2aWNlLnNldEluaXRpYWxSZW1vdGVzKGFwcGxpY2F0aW9uKTtcbiAgICAgICAgLy8gRnJlc2ggYXBwbGljYXRpb24gTU8gaXMgbmVlZGVkLCBhZnRlciBpbml0aWFsIHN0YXRlIHdhcyBzZXQuXG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBsaWNhdGlvbihhcHBsaWNhdGlvbi5pZCk7XG4gICAgICAgIHVwZGF0ZWRSZW1vdGVzID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5hZGRSZW1vdGVzKGFwcCwgcGx1Z2luKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmVtaXRSZW1vdGVzKHVwZGF0ZWRSZW1vdGVzKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxQbHVnaW5zVG9SZW1vdmUocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbik6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2UuYXBwbGljYXRpb25WZXJzaW9ucy5tYXAoYXYgPT4gKHtcbiAgICAgIGlkOiBgJHtwbHVnaW4uY29udGV4dFBhdGh9QCR7YXYudmVyc2lvbn0vJHtwbHVnaW4ubW9kdWxlfWAsXG4gICAgICBtb2R1bGU6IHBsdWdpbi5tb2R1bGUsXG4gICAgICBwYXRoOiBwbHVnaW4ucGF0aFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlbW90ZXMocmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICB0aGlzLnJlbW90ZVBsdWdpbnMkLm5leHQocmVtb3Rlcyk7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5yZW1vdGVQbHVnaW5zJC52YWx1ZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWxlY3RBcHBzKFxuICAgIGluaXRpYWxTdGF0ZTogUGljazxcbiAgICAgIEFwcHNUb1VwZGF0ZVJlbW90ZXNTZWxlY3RDb21wb25lbnQsXG4gICAgICAnYXBwcycgfCAndXBkYXRlVHlwZScgfCAncGx1Z2luTmFtZScgfCAnYXBwc0Rpc2FibGVkJ1xuICAgID5cbiAgKTogUHJvbWlzZTxJQXBwbGljYXRpb25bXT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgKFxuICAgICAgICB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3coQXBwc1RvVXBkYXRlUmVtb3Rlc1NlbGVjdENvbXBvbmVudCwge1xuICAgICAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgICAgIGtleWJvYXJkOiBmYWxzZVxuICAgICAgICB9KS5jb250ZW50IGFzIEFwcHNUb1VwZGF0ZVJlbW90ZXNTZWxlY3RDb21wb25lbnRcbiAgICAgICkucmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LWxpc3QtZ3JvdXAgY2xhc3M9XCJiZy1pbmhlcml0XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIocGx1Z2lucyQgfCBhc3luYyk/Lmxlbmd0aCAhPT0gMDsgZWxzZSBlbXB0eUxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwbHVnaW4gb2YgcGx1Z2lucyQgfCBhc3luY1wiPlxuICAgICAgPGM4eS1saSBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBwbHVnaW4uaW5zdGFsbGVkIH1cIiBjbGFzcz1cImJnLWluaGVyaXRcIj5cbiAgICAgICAgPGM4eS1wbHVnaW4tbGlzdC1pdGVtXG4gICAgICAgICAgKGlzSXRlbVNlbGVjdGVkKT1cInVwZGF0ZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBwbHVnaW4pXCJcbiAgICAgICAgICBbcGx1Z2luXT1cInBsdWdpblwiXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwic2VsZWN0YWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgICAgICA+PC9jOHktcGx1Z2luLWxpc3QtaXRlbT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtbC00MCBtLXQtNFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW5zdGFsbGFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVuaW5zdGFsbFBsdWdpbihwbHVnaW4pXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1wZW5kaW5nJzogcGx1Z2luLmlkID09PSB1cGRhdGluZ1BsdWdpbklkLnVuaW5zdGFsbCB9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1cGRhdGluZ1BsdWdpbklkLnVuaW5zdGFsbCAmJiBwbHVnaW4uaWQgIT09IHVwZGF0aW5nUGx1Z2luSWQudW5pbnN0YWxsXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXNtIG0tbC00XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1VuaW5zdGFsbCBwbHVnaW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIFVuaW5zdGFsbCBwbHVnaW5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImluc3RhbGxhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbnN0YWxsUGx1Z2luKHBsdWdpbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBwbHVnaW4uaWQgPT09IHVwZGF0aW5nUGx1Z2luSWQuaW5zdGFsbCB9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1cGRhdGluZ1BsdWdpbklkLmluc3RhbGwgJiYgcGx1Z2luLmlkICE9PSB1cGRhdGluZ1BsdWdpbklkLmluc3RhbGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIG0tbC04XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0luc3RhbGwgcGx1Z2luJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBJbnN0YWxsIHBsdWdpblxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYzh5LWxpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYzh5LWxpc3QtZ3JvdXA+XG48bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cbiAgPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZSB0ZXh0LWxlZnRcIiAqbmdJZj1cImVtcHR5TGlzdFRleHRcIj5cbiAgICA8aDEgYzh5SWNvbj1cInBsdWdpblwiPjwvaDE+XG4gICAgPHA+XG4gICAgICB7eyBlbXB0eUxpc3RUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -216,7 +216,7 @@ class PluginListComponent {
216
216
  if (updateType === 'install') {
217
217
  this.appsDisabled.clear();
218
218
  for (const app of apps) {
219
- if (yield this.isPluginInstalledInApp(plugin, app)) {
219
+ if (this.isPluginInstalledInApp(plugin, app)) {
220
220
  this.appsDisabled.add(app.id);
221
221
  }
222
222
  }
@@ -224,7 +224,7 @@ class PluginListComponent {
224
224
  if (updateType === 'uninstall') {
225
225
  const installedApps = [];
226
226
  for (const app of apps) {
227
- if (yield this.isPluginInstalledInApp(plugin, app)) {
227
+ if (this.isPluginInstalledInApp(plugin, app)) {
228
228
  installedApps.push(app);
229
229
  }
230
230
  }
@@ -234,12 +234,17 @@ class PluginListComponent {
234
234
  });
235
235
  }
236
236
  isPluginInstalledInApp(plugin, app) {
237
- return __awaiter(this, void 0, void 0, function* () {
238
- const appRemotes = this.pluginsService.getMFRemotes(app) || {};
239
- return Object.keys(appRemotes).some(remote => this.getInstalledPluginContextPathWithoutVersion(remote) === plugin.contextPath);
240
- });
237
+ const appRemotes = this.pluginsService.getMFRemotes(app) || {};
238
+ for (const [remoteName, modules] of Object.entries(appRemotes)) {
239
+ const pluginFromThisPackageIsInstalled = this.getPluginContextPathWithoutVersion(remoteName) === plugin.contextPath;
240
+ const specificPluginModuleIsInstalled = modules.some(module => module === plugin.module);
241
+ if (pluginFromThisPackageIsInstalled && specificPluginModuleIsInstalled) {
242
+ return true;
243
+ }
244
+ }
245
+ return false;
241
246
  }
242
- getInstalledPluginContextPathWithoutVersion(remote) {
247
+ getPluginContextPathWithoutVersion(remote) {
243
248
  return remote.split('@')[0];
244
249
  }
245
250
  handleRemotesUpdate(application, plugin, updateType) {
@@ -287,7 +292,8 @@ class PluginListComponent {
287
292
  ariaDescribedby: 'modal-body',
288
293
  ariaLabelledBy: 'modal-title',
289
294
  initialState,
290
- ignoreBackdropClick: true
295
+ ignoreBackdropClick: true,
296
+ keyboard: false
291
297
  }).content.result;
292
298
  }
293
299
  catch (er) {