@sumaris-net/ngx-components 18.14.9 → 18.14.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/src/app/core/home/home.mjs +13 -11
  2. package/esm2022/src/app/core/peer/select-peer.modal.mjs +2 -1
  3. package/esm2022/src/app/social/feed/discourse/discourse-feed.service.mjs +4 -1
  4. package/esm2022/src/app/social/feed/feed.component.mjs +65 -18
  5. package/esm2022/src/app/social/feed/feed.module.mjs +5 -5
  6. package/esm2022/src/app/social/feed/feed.service.mjs +1 -1
  7. package/esm2022/src/app/social/feed/testing/feed.testing.mjs +66 -0
  8. package/esm2022/src/app/social/feed/testing/feed.testing.module.mjs +23 -0
  9. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +4 -1
  10. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +11 -8
  11. package/esm2022/src/app/social/social.testing.module.mjs +31 -5
  12. package/esm2022/src/environments/environment.mjs +2 -2
  13. package/fesm2022/sumaris-net.ngx-components.mjs +209 -59
  14. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  15. package/package.json +1 -1
  16. package/src/app/core/home/home.d.ts +3 -3
  17. package/src/app/core/install/install-upgrade-card.component.d.ts +1 -1
  18. package/src/app/shared/inputs.d.ts +1 -1
  19. package/src/app/social/feed/discourse/discourse-feed.service.d.ts +1 -0
  20. package/src/app/social/feed/feed.component.d.ts +16 -4
  21. package/src/app/social/feed/feed.module.d.ts +2 -2
  22. package/src/app/social/feed/feed.service.d.ts +1 -0
  23. package/src/app/social/feed/testing/feed.testing.d.ts +23 -0
  24. package/src/app/social/feed/testing/feed.testing.module.d.ts +12 -0
  25. package/src/app/social/job/progression/job-progression.component.d.ts +3 -2
  26. package/src/app/social/job/progression/job-progression.icon.d.ts +1 -1
  27. package/src/app/social/social.testing.module.d.ts +2 -1
  28. package/src/theme/_mixins.scss +23 -3
@@ -150,6 +150,7 @@ export class SelectPeerModal extends RxState {
150
150
  this.modalCtrl.dismiss();
151
151
  }
152
152
  ngOnDestroy() {
153
+ super.ngOnDestroy();
153
154
  this._subscription.unsubscribe();
154
155
  }
155
156
  selectPeer(peer) {
@@ -341,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
341
342
  type: ViewChild,
342
343
  args: ['searchbar', { static: true }]
343
344
  }] } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXBlZXIubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcGVlci9zZWxlY3QtcGVlci5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9wZWVyL3NlbGVjdC1wZWVyLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFFZixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFzQixNQUFNLDZDQUE2QyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7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QTFELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UscUJBQXFCO3NCQUE1RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLHlCQUF5QjtzQkFBakMsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSW9DLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvblNlYXJjaGJhciwgTW9kYWxDb250cm9sbGVyLCBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFBlZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9wZWVyLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmFkZUluQW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL21hdGVyaWFsLmFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE5ldHdvcmtVdGlscywgTm9kZUluZm8gfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnV0aWxzJztcbmltcG9ydCB7IFZlcnNpb25VdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC92ZXJzaW9uL3ZlcnNpb25zJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBUZXh0UG9wb3ZlciwgVGV4dFBvcG92ZXJPcHRpb25zIH0gZnJvbSAnLi4vZm9ybS90ZXh0LXBvcG92ZXIvdGV4dC1wb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybXMnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBFRVJfVVJMX1JFR0VYUCB9IGZyb20gJy4uL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBBUFBfTE9HR0lOR19TRVJWSUNFIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dpbmcvbG9nZ2luZy1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IElMb2dnZXIsIElMb2dnaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnaW5nL2xvZ2dlci5tb2RlbCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0IHsgc3VnZ2VzdEZyb21BcnJheSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IE5vZGVGZWF0dXJlIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvbm9kZS1mZWF0dXJlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBJU2VsZWN0UGVlck1vZGFsT3B0aW9ucyB7XG4gIGNhbkNhbmNlbDogYm9vbGVhbjtcbiAgYWxsb3dTZWxlY3REb3duUGVlcjogYm9vbGVhbjtcbiAgb25SZWZyZXNoOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xuICBzaG93U2V0TWFudWFsbHlCdXR0b246IGJvb2xlYW47XG4gIHNlbGVjdGVkUGVlcj86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlZmF1bHRQZWVyczogUGVlcltdO1xuICBzaG93U2VhcmNoQmFyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VsZWN0UGVlck1vZGFsU3RhdGUge1xuICBkZWZhdWx0UGVlcnM6IFBlZXJbXTtcbiAgcGVlcnM6IFBlZXJbXTtcbiAgZmlsdGVyZWRQZWVyczogUGVlcltdO1xuICBmaWx0ZXJlZFBlZXJzQnlGZWF0dXJlczogUGVlcltdO1xuICBmaWx0ZXJlZFBlZXJDb3VudDogbnVtYmVyO1xuICBmaWx0ZXJlZEZlYXR1cmVzQ291bnQ6IG51bWJlcjtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBzZWxlY3RlZFRhYkluZGV4OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlbGVjdC1wZWVyLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICdzZWxlY3QtcGVlci5tb2RhbC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXBlZXIubW9kYWwuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW2ZhZGVJbkFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFBlZXJNb2RhbCBleHRlbmRzIFJ4U3RhdGU8SVNlbGVjdFBlZXJNb2RhbFN0YXRlPiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgSVNlbGVjdFBlZXJNb2RhbE9wdGlvbnMge1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlcjtcblxuICBwcm90ZWN0ZWQgZGVmYXVsdFBlZXJzJCA9IHRoaXMuc2VsZWN0KCdkZWZhdWx0UGVlcnMnKTtcbiAgcHJvdGVjdGVkIHBlZXJzJCA9IHRoaXMuc2VsZWN0KCdwZWVycycpO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRQZWVycyQgPSB0aGlzLnNlbGVjdCgnZmlsdGVyZWRQZWVycycpO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRQZWVyc0J5RmVhdHVyZXMkID0gdGhpcy5zZWxlY3QoJ2ZpbHRlcmVkUGVlcnNCeUZlYXR1cmVzJyk7XG4gIHByb3RlY3RlZCBmaWx0ZXJlZFBlZXJDb3VudCQgPSB0aGlzLnNlbGVjdCgnZmlsdGVyZWRQZWVyQ291bnQnKTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkRmVhdHVyZXNDb3VudCQgPSB0aGlzLnNlbGVjdCgnZmlsdGVyZWRGZWF0dXJlc0NvdW50Jyk7XG5cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSB0cnVlO1xuICBwcm90ZWN0ZWQgbW9iaWxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgcGVlck1pblZlcnNpb246IHN0cmluZztcbiAgcHJvdGVjdGVkIHBlZXJEZWZhdWx0UHJlZml4OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBlbmFibGVTZWxlY3RQZWVyQnlGZWF0dXJlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgY29sbGFwc2VkUGVlcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgc2V0IHBlZXJzKHZhbHVlOiBQZWVyW10pIHtcbiAgICB0aGlzLnNldCgncGVlcnMnLCAoKSA9PiB2YWx1ZSk7XG4gIH1cbiAgZ2V0IHBlZXJzKCk6IFBlZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdwZWVycycpO1xuICB9XG4gIHNldCBzZWFyY2hUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldCgnc2VhcmNoVGV4dCcsICgpID0+IHZhbHVlKTtcbiAgfVxuICBnZXQgc2VhcmNoVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldCgnc2VhcmNoVGV4dCcpO1xuICB9XG4gIHNldCBmaWx0ZXJlZFBlZXJzKHZhbHVlOiBQZWVyW10pIHtcbiAgICB0aGlzLnNldCgnZmlsdGVyZWRQZWVycycsICgpID0+IHZhbHVlKTtcbiAgfVxuICBnZXQgZmlsdGVyZWRQZWVycygpOiBQZWVyW10ge1xuICAgIHJldHVybiB0aGlzLmdldCgnZmlsdGVyZWRQZWVycycpO1xuICB9XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2V0IHNlbGVjdGVkVGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuc2V0KCdzZWxlY3RlZFRhYkluZGV4JywgKCkgPT4gdmFsdWUpO1xuICB9XG4gIGdldCBzZWxlY3RlZFRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzZWxlY3RlZFRhYkluZGV4Jyk7XG4gIH1cblxuICBASW5wdXQoKSBzZWxlY3RlZFBlZXI6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUgPSAnTkVUV09SSy5QRUVSLlNFTEVDVF9NT0RBTC5USVRMRSc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjYW5DYW5jZWwgPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYWxsb3dTZWxlY3REb3duUGVlciA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U2V0TWFudWFsbHlCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd1NlYXJjaEJhcjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbjogJzIwMG1zJztcblxuICBASW5wdXQoKSBvblJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0UGVlcnModmFsdWU6IFBlZXJbXSkge1xuICAgIHRoaXMuc2V0KCdkZWZhdWx0UGVlcnMnLCAoKSA9PiB2YWx1ZSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdzZWFyY2hiYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hiYXI6IElvblNlYXJjaGJhcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxuICAgIHByaXZhdGUgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0xPR0dJTkdfU0VSVklDRSkgcHJvdGVjdGVkIGxvZ2dpbmdTZXJ2aWNlPzogSUxvZ2dpbmdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZXQoeyBzZWFyY2hUZXh0OiBudWxsLCBzZWxlY3RlZFRhYkluZGV4OiAwIH0pO1xuICAgIHRoaXMubW9iaWxlID0gaXNNb2JpbGUod2luZG93KTtcbiAgICB0aGlzLl9sb2dnZXIgPSBsb2dnaW5nU2VydmljZT8uZ2V0TG9nZ2VyKCduZXR3b3JrLW1vZGFsJyk7XG4gICAgdGhpcy5wZWVyTWluVmVyc2lvbiA9IGVudmlyb25tZW50LnBlZXJNaW5WZXJzaW9uO1xuICAgIHRoaXMucGVlckRlZmF1bHRQcmVmaXggPSBlbnZpcm9ubWVudC5wZWVyRGVmYXVsdFByZWZpeCB8fCAnaHR0cHM6Ly8nO1xuICAgIHRoaXMuZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZSA9IGVudmlyb25tZW50LmVuYWJsZVNlbGVjdFBlZXJCeUZlYXR1cmUgfHwgZmFsc2U7XG4gICAgdGhpcy5zaG93U2VhcmNoQmFyID0gdGhpcy5lbmFibGVTZWxlY3RQZWVyQnlGZWF0dXJlOyAvLyBTaG93IHNlYXJjaCBiYXIgYnkgZGVmYXVsdCwgaWYgdHdvIHRhYnNcblxuICAgIC8vIFJlZnJlc2hpbmcgcGVlcnNcbiAgICB0aGlzLmhvbGQodGhpcy5kZWZhdWx0UGVlcnMkLCAocmVzKSA9PiB0aGlzLnJlZnJlc2hQZWVycyhyZXMpKTtcblxuICAgIC8vIFNlYXJjaCBvbiBob3N0XG4gICAgdGhpcy5jb25uZWN0KFxuICAgICAgJ2ZpbHRlcmVkUGVlcnMnLFxuICAgICAgdGhpcy5zZWxlY3QoWydwZWVycycsICdzZWFyY2hUZXh0J10sIChyZXMpID0+IHJlcykucGlwZShcbiAgICAgICAgbWFwKCh7IHBlZXJzLCBzZWFyY2hUZXh0IH0pID0+IHtcbiAgICAgICAgICBpZiAoaXNOaWxPckJsYW5rKHNlYXJjaFRleHQpKSByZXR1cm4gcGVlcnM7IC8vIEFsbFxuXG4gICAgICAgICAgY29uc29sZS5kZWJ1ZygnW3NlbGVjdC1wZWVyLW1vZGFsXSBTZWFyY2hpbmcgb24gaG9zdHM6ICcgKyBzZWFyY2hUZXh0KTtcbiAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHN1Z2dlc3RGcm9tQXJyYXkocGVlcnMsIHNlYXJjaFRleHQsIHtcbiAgICAgICAgICAgIGFueVNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgIHNlYXJjaEF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnaG9zdEFuZFBvcnQnXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuY29ubmVjdCgnZmlsdGVyZWRQZWVyQ291bnQnLCB0aGlzLmZpbHRlcmVkUGVlcnMkLnBpcGUobWFwKChwZWVycykgPT4gcGVlcnM/Lmxlbmd0aCA/PyAwKSkpO1xuXG4gICAgLy8gU2VhcmNoIG9uIGZlYXR1cmVzXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZSkge1xuICAgICAgdGhpcy5jb25uZWN0KFxuICAgICAgICAnZmlsdGVyZWRQZWVyc0J5RmVhdHVyZXMnLFxuICAgICAgICB0aGlzLnNlbGVjdChbJ3BlZXJzJywgJ3NlYXJjaFRleHQnXSwgKHJlcykgPT4gcmVzKS5waXBlKFxuICAgICAgICAgIG1hcCgoeyBwZWVycywgc2VhcmNoVGV4dCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOaWxPckJsYW5rKHNlYXJjaFRleHQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAocGVlcnMgfHwgW10pLmZpbHRlcigocCkgPT4gaXNOb3RFbXB0eUFycmF5KHA/LmZlYXR1cmVzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1tzZWxlY3QtcGVlci1tb2RhbF0gU2VhcmNoaW5nIG9uIGZlYXR1cmVzOiAnICsgc2VhcmNoVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4gcGVlcnNcbiAgICAgICAgICAgICAgLm1hcCgocGVlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YTogZmVhdHVyZXMgfSA9IHN1Z2dlc3RGcm9tQXJyYXkocGVlci5mZWF0dXJlcyB8fCBbXSwgc2VhcmNoVGV4dCwge1xuICAgICAgICAgICAgICAgICAgYW55U2VhcmNoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoQXR0cmlidXRlczogWydsYWJlbCcsICduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShmZWF0dXJlcykpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUGVlciA9IHBlZXIuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUGVlci5mZWF0dXJlcyA9IGZlYXR1cmVzO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUGVlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLmNvbm5lY3QoJ2ZpbHRlcmVkRmVhdHVyZXNDb3VudCcsIHRoaXMuZmlsdGVyZWRQZWVyc0J5RmVhdHVyZXMkLnBpcGUobWFwKFBlZXIuY291bnRBbGxGZWF0dXJlcykpKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZWxlY3RQZWVyKHBlZXI6IFBlZXIpIHtcbiAgICBpZiAodGhpcy5hbGxvd1NlbGVjdERvd25QZWVyIHx8IChwZWVyLnJlYWNoYWJsZSAmJiB0aGlzLmlzQ29tcGF0aWJsZShwZWVyKSkpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtzZWxlY3QtcGVlci1tb2RhbF0gU2VsZWN0ZWQgcGVlcjoge3VybDogJyR7cGVlci51cmx9J31gKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQZWVyID0gcGVlci51cmw7XG4gICAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHBlZXIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnNob3dTZWFyY2hCYXIgPSAhdGhpcy5zaG93U2VhcmNoQmFyO1xuICAgIGlmICh0aGlzLnNob3dTZWFyY2hCYXIgJiYgdGhpcy5zZWFyY2hiYXIpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGJhci5zZXRGb2N1cygpO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVQZWVyRmVhdHVyZXMocGVlclVybDogc3RyaW5nKSB7XG4gICAgaWYgKCFwZWVyVXJsKSByZXR1cm47XG4gICAgdGhpcy5jb2xsYXBzZWRQZWVyc1twZWVyVXJsXSA9IGlzTm90TmlsKHRoaXMuY29sbGFwc2VkUGVlcnNbcGVlclVybF0pID8gIXRoaXMuY29sbGFwc2VkUGVlcnNbcGVlclVybF0gOiB0cnVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogIENoZWNrIHRoZSBtaW4gcG9kIHZlcnNpb24sIGRlZmluZWQgYnkgdGhlIGFwcFxuICAgKlxuICAgKiBAcGFyYW0gcGVlclxuICAgKi9cbiAgaXNDb21wYXRpYmxlKHBlZXI6IFBlZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucGVlck1pblZlcnNpb24gfHwgKHBlZXIgJiYgcGVlci5zb2Z0d2FyZVZlcnNpb24gJiYgVmVyc2lvblV0aWxzLmlzQ29tcGF0aWJsZSh0aGlzLnBlZXJNaW5WZXJzaW9uLCBwZWVyLnNvZnR3YXJlVmVyc2lvbikpO1xuICB9XG5cbiAgcmVmcmVzaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgYXN5bmMgY2xpY2tTZXRNYW51YWxseShldmVudD86IEV2ZW50KSB7XG4gICAgY29uc3QgcGVlclVybCA9IGF3YWl0IHRoaXMub3BlblBlZXJVcmxQb3BvdmVyKGV2ZW50KTtcbiAgICBpZiAocGVlclVybCkge1xuICAgICAgY29uc3QgcGVlciA9IFBlZXIucGFyc2VVcmwocGVlclVybCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQZWVyKHBlZXIpO1xuICAgICAgdGhpcy5zZWxlY3RQZWVyKHBlZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG4gIHByb3RlY3RlZCBjbGVhckxvZ28ocGVlcjogUGVlciB8IE5vZGVGZWF0dXJlKSB7XG4gICAgaWYgKHBlZXIgaW5zdGFuY2VvZiBQZWVyKSB7XG4gICAgICBwZWVyLmZhdmljb24gPSAnc2tpcCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZXIubG9nbyA9ICdza2lwJztcbiAgICB9XG4gIH1cbiAgYXN5bmMgcmVmcmVzaFBlZXJzKHBlZXJzOiBQZWVyW10pIHtcbiAgICBwZWVycyA9IHBlZXJzIHx8IFtdO1xuXG4gICAgY29uc3QgZGF0YTogUGVlcltdID0gW107XG4gICAgY29uc3Qgam9icyA9IFByb21pc2UuYWxsKFxuICAgICAgcGVlcnMubWFwKGFzeW5jIChwZWVyKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFBlZXIocGVlcik7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIHJldHVybjsgLy8gY29tcG9uZW50IGRlc3Ryb3llZFxuXG4gICAgICAgIGRhdGEucHVzaChwZWVyKTtcblxuICAgICAgICAvLyBTb3J0IChieSByZWFjaGFibGUsIHRoZW4gaG9zdClcbiAgICAgICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGEucmVhY2hhYmxlICYmICFiLnJlYWNoYWJsZSkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmICghYS5yZWFjaGFibGUgJiYgYi5yZWFjaGFibGUpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhLmhvc3RBbmRQb3J0IDwgYi5ob3N0QW5kUG9ydCkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhLmhvc3RBbmRQb3J0ID4gYi5ob3N0QW5kUG9ydCkgcmV0dXJuIDE7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucGVlcnMgPSBkYXRhLnNsaWNlKCk7IC8vIENvcHkgdG8gZm9yY2UgdXBkYXRlXG5cbiAgICAgICAgcmV0dXJuIHBlZXI7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgam9icztcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICghdGhpcy5fc3Vic2NyaXB0aW9uLmNsb3NlZCkgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlZnJlc2hQZWVyKHBlZXI6IFBlZXIpOiBQcm9taXNlPFBlZXI+IHtcbiAgICB0cnkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vYXdhaXQgc2xlZXAoTWF0aC5yYW5kb20oKSAqIDEwMCk7XG5cbiAgICAgIGNvbnN0IHN1bW1hcnk6IE5vZGVJbmZvID0gYXdhaXQgTmV0d29ya1V0aWxzLmdldE5vZGVJbmZvKHRoaXMuaHR0cCwgcGVlci51cmwpO1xuICAgICAgcGVlci5zdGF0dXMgPSAnVVAnO1xuICAgICAgcGVlci5zb2Z0d2FyZU5hbWUgPSBzdW1tYXJ5LnNvZnR3YXJlTmFtZTtcbiAgICAgIHBlZXIuc29mdHdhcmVWZXJzaW9uID0gc3VtbWFyeS5zb2Z0d2FyZVZlcnNpb247XG4gICAgICBwZWVyLmxhYmVsID0gc3VtbWFyeS5ub2RlTGFiZWw7XG4gICAgICBwZWVyLm5hbWUgPSBzdW1tYXJ5Lm5vZGVOYW1lO1xuICAgICAgcGVlci5mZWF0dXJlcyA9IHN1bW1hcnkuZmVhdHVyZXM/Lm1hcChOb2RlRmVhdHVyZS5mcm9tT2JqZWN0KSB8fCBbXTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIElmIG1vZGFsIHdhcyBub3QgY2xvc2VkIChlLmcuIHJlc3BvbnNlIGFycml2ZWQgdG9vIGxhdGUgPT4gaWdub3JlKVxuICAgICAgaWYgKCF0aGlzLl9zdWJzY3JpcHRpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtzZWxlY3QtcGVlcl0gRXJyb3Igd2hpbGUgY2FsbGluZyAnJHtwZWVyLnVybH0vYXBpL25vZGUvaW5mbyc6ICR7ZXJyPy5tZXNzYWdlIHx8IGVycn1gLCBlcnIpO1xuICAgICAgICB0aGlzLl9sb2dnZXI/LmVycm9yKCdyZWZyZXNoUGVlcicsIGBFcnJvciB3aGlsZSBjYWxsaW5nICcke3BlZXIudXJsfS9hcGkvbm9kZS9pbmZvJzogJHtlcnI/Lm1lc3NhZ2UgfHwgSlNPTi5zdHJpbmdpZnkoZXJyKX1gKTtcbiAgICAgIH1cbiAgICAgIHBlZXIuc3RhdHVzID0gJ0RPV04nO1xuICAgIH1cbiAgICByZXR1cm4gcGVlcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBvcGVuUGVlclVybFBvcG92ZXIoZXZlbnQ6IEV2ZW50LCBvcHRzPzogUGFydGlhbDxUZXh0UG9wb3Zlck9wdGlvbnM+KSB7XG4gICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLnBvcG92ZXJDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IFRleHRQb3BvdmVyLFxuICAgICAgY29tcG9uZW50UHJvcHM6IDxUZXh0UG9wb3Zlck9wdGlvbnM+e1xuICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnU0VUVElOR1MuUEVFUl9VUkwnKSxcbiAgICAgICAgbXVsdGlsaW5lOiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiAhdGhpcy5tb2JpbGUsXG4gICAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5wYXR0ZXJuKFBFRVJfVVJMX1JFR0VYUCksXG4gICAgICAgIG1heExlbmd0aDogbnVsbCxcbiAgICAgICAgdGV4dDogdGhpcy5zZWxlY3RlZFBlZXIgfHwgdGhpcy5wZWVyRGVmYXVsdFByZWZpeCxcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IGZhbHNlLFxuICAgICAga2V5Ym9hcmRDbG9zZTogZmFsc2UsXG4gICAgICBldmVudDogbnVsbCwgLy8gSU1QT1JUQU5UOiBudWxsIGV2ZW50IHdpbGwgY2VudGVyIHRoZSBwb3BvdmVyLCBhbmQgdGhpcyB3aWxsIGZpeCBrZXlib2FyZCBvdmVybGFwIG9uIG1vYmlsZVxuICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgICBjc3NDbGFzczogJ3BvcG92ZXItbGFyZ2UnLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgbW9kYWwucHJlc2VudCgpO1xuICAgIGNvbnN0IHsgZGF0YSwgcm9sZSB9ID0gYXdhaXQgbW9kYWwub25EaWREaXNtaXNzKCk7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgY29uc29sZS5pbmZvKCdQb3BvdmVyIHJlc3VsdDogJywgZGF0YSk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlRmlsdGVyZWRQZWVyKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBjb25zdCB0ZXN0ID0gdGhpcy5maWx0ZXJlZFBlZXJzJC5waXBlKFxuICAgICAgbWFwKChwZWVycykgPT4gcGVlcnMuZmlsdGVyKEVudGl0eVV0aWxzLnNlYXJjaFRleHRGaWx0ZXIoWydmZWF0dXJlcy5sYWJlbCcsICdmZWF0dXJlcy5uYW1lJywgJ2ZlYXR1cmVzLmRlc2NyaXB0aW9uJ10sIHZhbHVlKSkpXG4gICAgKTtcblxuICAgIGNvbnNvbGUubG9nKHRlc3QpO1xuICAgIC8vIChldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJsaWdodFwiIHN0eWxlPVwiei1pbmRleDogOTAwXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgQGlmIChjYW5DYW5jZWwpIHtcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgdmlzaWJsZS1tb2JpbGUgdmlzaWJsZS1zbSB2aXNpYmxlLXhzPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctYmFja1wiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgPC9pb24tYnV0dG9ucz5cblxuICAgIDxpb24tdGl0bGU+XG4gICAgICB7eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaW9uLXRpdGxlPlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDwhLS0gbG9hZGVyIC0tPlxuICAgICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gcmVmcmVzaCBidXR0b24gLS0+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2goJGV2ZW50KVwiXG4gICAgICAgICAgKm5nSWY9XCJvblJlZnJlc2gub2JzZXJ2ZWRcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidDT01NT04uQlROX1JFRlJFU0gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbiBzbG90PVwiaWNvbi1vbmx5XCI+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIH1cbiAgICAgIDwhLS0gc2VhcmNoIGJ1dHRvbiAtLT5cbiAgICAgIEBpZiAoIXNob3dTZWFyY2hCYXIpIHtcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEJhcigpXCI+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwic2VhcmNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfVxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG5cbiAgPCEtLSBzZWFyY2ggYmFyIC0tPlxuICA8aW9uLXRvb2xiYXIgKm5nSWY9XCJzaG93U2VhcmNoQmFyXCI+XG4gICAgPGlvbi1zZWFyY2hiYXJcbiAgICAgICNzZWFyY2hiYXJcbiAgICAgIGFuaW1hdGVkXG4gICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIiFzaG93U2VhcmNoQmFyXCJcbiAgICAgIHNob3ctY2xlYXItYnV0dG9uPVwiYWx3YXlzXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09NTU9OLkJUTl9TRUFSQ0gnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtjYW5jZWxCdXR0b25UZXh0XT1cIidDT01NT04uQlROX0NBTkNFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgIChpb25DYW5jZWwpPVwidG9nZ2xlU2VhcmNoQmFyKClcIlxuICAgID48L2lvbi1zZWFyY2hiYXI+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudD5cbiAgPG1hdC10YWItZ3JvdXBcbiAgICAjdGFiR3JvdXBcbiAgICBbKHNlbGVjdGVkSW5kZXgpXT1cInNlbGVjdGVkVGFiSW5kZXhcIlxuICAgIGNsYXNzPVwibWF0LW1kYy10YWItZGlzYWJsZWQtaGlkZGVuXCJcbiAgICBbY2xhc3MubWF0LW1kYy10YWItZ3JvdXAtaGVhZGVyLWhpZGRlbl09XCIhZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZVwiXG4gICAgW2R5bmFtaWNIZWlnaHRdPVwiZmFsc2VcIlxuICAgIFttYXQtc3RyZXRjaC10YWJzXT1cIm1vYmlsZVwiXG4gICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIm1vYmlsZSA/IHRhYkdyb3VwQW5pbWF0aW9uRHVyYXRpb24gOiAnMHMnXCJcbiAgPlxuICAgIDxtYXQtdGFiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWxcbiAgICAgICAgICBbbWF0QmFkZ2VdPVwiZmlsdGVyZWRQZWVyQ291bnQkIHwgYXN5bmMgfCBiYWRnZU51bWJlclwiXG4gICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cImZpbHRlcmVkUGVlckNvdW50JCB8IGFzeW5jIHwgaXNOaWxcIlxuICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihmaWx0ZXJlZFBlZXJDb3VudCQgfCBhc3luYykgPyAncHJpbWFyeScgOiAnYWNjZW50J1wiXG4gICAgICAgICAgbWF0QmFkZ2VPdmVybGFwPVwiZmFsc2VcIlxuICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFib3ZlIGFmdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLlRBQl9ORVRXT1JLJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8aW9uLWxpc3Q+XG4gICAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXAgaW9uLXBhZGRpbmctZW5kXCI+XG4gICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIidORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLk5FVFdPUktfSEVMUCcgfCB0cmFuc2xhdGVcIj48L3A+XG4gICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuXG4gICAgICAgIEBmb3IgKHBlZXIgb2YgZmlsdGVyZWRQZWVycyQgfCBhc3luYzsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGVlcihwZWVyKVwiXG4gICAgICAgICAgICBAZmFkZUluQW5pbWF0aW9uXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRQZWVyICYmIHNlbGVjdGVkUGVlciA9PT0gcGVlci51cmxcIlxuICAgICAgICAgICAgZGV0YWlsXG4gICAgICAgICAgICBtYXRSaXBwbGVcbiAgICAgICAgICAgIHRhcHBhYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBQZWVyIGlzIFVQIC0tPlxuICAgICAgICAgICAgQGlmIChwZWVyLnJlYWNoYWJsZSkge1xuICAgICAgICAgICAgICA8IS0tIGljb24gLS0+XG4gICAgICAgICAgICAgIEBpZiAocGVlci5mYXZpY29uICE9ICdza2lwJykge1xuICAgICAgICAgICAgICAgIDxpb24tYXZhdGFyIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pbWcgW3NyY109XCJwZWVyLmZhdmljb24gfHwgcGVlci51cmwgKyAnL2FwaS9mYXZpY29uJ1wiIChpb25FcnJvcik9XCJjbGVhckxvZ28ocGVlcilcIj48L2lvbi1pbWc+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNlcnZlclwiIGNsYXNzPVwiaWNvbi1zZWNvbmRhcnlcIiBzdHlsZT1cInRvcDogMTJweDsgbGVmdDogNDRweFwiIGNvbG9yPVwiZGFya1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInNlcnZlclwiIGNsYXNzPVwiaW9uLWljb24tYXZhdGFyXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGxldCB1cmwgPSBwZWVyLmhvc3RBbmRQb3J0ICsgcGVlci5wYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIFtpbm5lckhUTUxdPVwidXJsIHwgaGlnaGxpZ2h0OiBzZWFyY2hUZXh0XCI+PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBbaW5uZXJIVE1MXT1cInBlZXIubGFiZWwgfCBoaWdobGlnaHQ6IHNlYXJjaFRleHRcIj48L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZS1zbT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXAgaW9uLXRleHQtc20tY2VudGVyXCIgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGVlci5zb2Z0d2FyZU5hbWUgfX0mbmJzcDs8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyIGNsYXNzPVwiaGlkZGVuLXh4cyBoaWRkZW4teHNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb21wYXRpYmxlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghcGVlck1pblZlcnNpb24gfHwgaXNDb21wYXRpYmxlKHBlZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD52e3sgcGVlci5zb2Z0d2FyZVZlcnNpb24gfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSW5jb21wYXRpYmxlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTkVUV09SSy5QRUVSLlNFTEVDVF9NT0RBTC5OT1RfQ09NUEFUSUJMRV9IRUxQJyB8IHRyYW5zbGF0ZTogeyB2ZXJzaW9uOiBwZWVyTWluVmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImlvbi1jb2xvci1kYW5nZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ7eyBwZWVyLnNvZnR3YXJlVmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDwhLS0gUGVlciBpcyBET1dOIC0tPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInNlcnZlclwiIGNsYXNzPVwiZGlzYWJsZWQgaW9uLWljb24tYXZhdGFyXCI+PC9pb24taWNvbj5cblxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgPGgzPnt7IHBlZXIuaG9zdEFuZFBvcnQgfX17eyBwZWVyLnBhdGggfX08L2gzPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2l6ZT1cInNtYWxsXCIgbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuT0ZGTElORTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gbm8gcmVzdWx0IC0tPlxuICAgICAgICBAaWYgKChmaWx0ZXJlZFBlZXJDb3VudCQgfCBhc3luYykgPT09IDApIHtcbiAgICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInRleHQtaXRhbGljXCIgdHJhbnNsYXRlPkNPTU1PTi5OT19SRVNVTFQ8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWxpc3Q+XG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBTZWxlY3QgYnkgZmVhdHVyZXMgLS0+XG4gICAgPG1hdC10YWIgW2Rpc2FibGVkXT1cIiFlbmFibGVTZWxlY3RQZWVyQnlGZWF0dXJlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbFxuICAgICAgICAgIFttYXRCYWRnZV09XCJmaWx0ZXJlZEZlYXR1cmVzQ291bnQkIHwgYXN5bmMgfCBiYWRnZU51bWJlclwiXG4gICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cImZpbHRlcmVkRmVhdHVyZXNDb3VudCQgfCBhc3luYyB8IGlzTmlsXCJcbiAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoZmlsdGVyZWRGZWF0dXJlc0NvdW50JCB8IGFzeW5jKSA/ICdwcmltYXJ5JyA6ICdhY2NlbnQnXCJcbiAgICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJmYWxzZVwiXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxuICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnTkVUV09SSy5QRUVSLlNFTEVDVF9NT0RBTC5UQUJfRkVBVFVSRVMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxpb24tbGlzdD5cbiAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcCBpb24tcGFkZGluZy1lbmRcIj5cbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuRkVBVFVSRVNfSEVMUCcgfCB0cmFuc2xhdGVcIj48L3A+XG4gICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuXG4gICAgICAgIEBmb3IgKHBlZXIgb2YgZmlsdGVyZWRQZWVyc0J5RmVhdHVyZXMkIHwgYXN5bmM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIEBsZXQgcGVlclVybCA9IHBlZXIuaG9zdEFuZFBvcnQgKyBwZWVyLnBhdGg7XG4gICAgICAgICAgPCEtLSBQZWVyIGlzIFVQIC0tPlxuICAgICAgICAgIEBpZiAocGVlci5yZWFjaGFibGUgJiYgcGVlci5mZWF0dXJlcyB8IGlzTm90RW1wdHlBcnJheSkge1xuICAgICAgICAgICAgQGxldCBjb2xsYXBzZWQgPSBjb2xsYXBzZWRQZWVyc1twZWVyVXJsXTtcblxuICAgICAgICAgICAgPGlvbi1pdGVtLWRpdmlkZXIgKGNsaWNrKT1cInRvZ2dsZVBlZXJGZWF0dXJlcyhwZWVyVXJsKVwiIHRhcHBhYmxlIEBmYWRlSW5BbmltYXRpb24+XG4gICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNlcnZlclwiIGNvbG9yPVwibWVkaXVtXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBlZXIuaG9zdEFuZFBvcnQgfX17eyBwZWVyLnBhdGggfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGVlck1pblZlcnNpb24gJiYgIWlzQ29tcGF0aWJsZShwZWVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuTk9UX0NPTVBBVElCTEVfSEVMUCcgfCB0cmFuc2xhdGU6IHsgdmVyc2lvbjogcGVlck1pblZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJpb24tY29sb3ItZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnt7IHBlZXIuc29mdHdhcmVWZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCI0XCIgY2xhc3M9XCJpb24tdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInRleHQtaXRhbGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg0Pih7eyAnQ09NTU9OLlJFU1VMVF9DT1VOVCcgfCB0cmFuc2xhdGU6IHsgY291bnQ6IHBlZXIuZmVhdHVyZXMubGVuZ3RoIH0gfX0pPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgICAgICAgQGlmIChjb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgIHt7IG1vYmlsZSA/ICdhcnJvd19kcm9wX2Rvd24nIDogJ2tleWJvYXJkX2Fycm93X2Rvd24nIH19XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICB7eyBtb2JpbGUgPyAnYXJyb3dfZHJvcF91cCcgOiAna2V5Ym9hcmRfYXJyb3dfdXAnIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9pb24taXRlbS1kaXZpZGVyPlxuXG4gICAgICAgICAgICBAaWYgKCFjb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgQGZvciAoZmVhdHVyZSBvZiBwZWVyLmZlYXR1cmVzOyB0cmFjayBmZWF0dXJlLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pdGVtIChjbGljayk9XCJzZWxlY3RQZWVyKHBlZXIpXCIgdGFwcGFibGUgbWF0UmlwcGxlIGRldGFpbCBAZmFkZUluQW5pbWF0aW9uPlxuICAgICAgICAgICAgICAgICAgPCEtLSBpY29uIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChmZWF0dXJlLmxvZ28gJiYgZmVhdHVyZS5sb2dvICE9ICdza2lwJykge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLWF2YXRhciBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cImZlYXR1cmUubG9nb1wiIChpb25FcnJvcik9XCJjbGVhckxvZ28oZmVhdHVyZSlcIj48L2lvbi1pbWc+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHBlZXIuZmF2aWNvbiAhPSAnc2tpcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pbWcgW3NyY109XCJwZWVyLmZhdmljb24gfHwgcGVlci51cmwgKyAnL2FwaS9mYXZpY29uJ1wiIChpb25FcnJvcik9XCJjbGVhckxvZ28ocGVlcilcIj48L2lvbi1pbWc+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29udHJhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogMTJweDsgbGVmdDogNDRweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJjb250cmFjdFwiIGNsYXNzPVwiaW9uLWljb24tYXZhdGFyXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxoMyBbaW5uZXJIVE1MXT1cImZlYXR1cmUgfCByZWZlcmVudGlhbFRvU3RyaW5nIHwgaGlnaGxpZ2h0OiBzZWFyY2hUZXh0XCI+PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiZmVhdHVyZS5kZXNjcmlwdGlvbiB8IGhpZ2hsaWdodDogc2VhcmNoVGV4dFwiPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIG5vIHJlc3VsdCAtLT5cbiAgICAgICAgQGlmICgoZmlsdGVyZWRGZWF0dXJlc0NvdW50JCB8IGFzeW5jKSA9PT0gMCkge1xuICAgICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwidGV4dC1pdGFsaWNcIiB0cmFuc2xhdGU+Q09NTU9OLk5PX1JFU1VMVDwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9pb24tbGlzdD5cbiAgICA8L21hdC10YWI+XG4gIDwvbWF0LXRhYi1ncm91cD5cbjwvaW9uLWNvbnRlbnQ+XG5cbkBpZiAoKGNhbkNhbmNlbCAmJiAhbW9iaWxlKSB8fCBzaG93U2V0TWFudWFsbHlCdXR0b24pIHtcbiAgPGlvbi1mb290ZXI+XG4gICAgPGlvbi10b29sYmFyPlxuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgPGlvbi1jb2w+PC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gYnV0dG9ucyAtLT5cbiAgICAgICAgQGlmIChzaG93U2V0TWFudWFsbHlCdXR0b24pIHtcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cImNsaWNrU2V0TWFudWFsbHkoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLkJUTl9TRVRfTUFOVUFMTFk8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGNhbkNhbmNlbCkge1xuICAgICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCIgaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbW9iaWxlPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0FOQ0VMPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgPC9pb24tZm9vdGVyPlxufVxuIl19
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXBlZXIubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcGVlci9zZWxlY3QtcGVlci5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9wZWVyL3NlbGVjdC1wZWVyLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFFZixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFzQixNQUFNLDZDQUE2QyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7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QUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsbUJBQW1CO3NCQUExRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLHFCQUFxQjtzQkFBNUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxhQUFhO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3Qix5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlvQyxTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25TZWFyY2hiYXIsIE1vZGFsQ29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBQZWVyIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvcGVlci5tb2RlbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZhZGVJbkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbHMsIE5vZGVJbmZvIH0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay51dGlscyc7XG5pbXBvcnQgeyBWZXJzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdmVyc2lvbi92ZXJzaW9ucyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgVGV4dFBvcG92ZXIsIFRleHRQb3BvdmVyT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vdGV4dC1wb3BvdmVyL3RleHQtcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvcGxhdGZvcm1zJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQRUVSX1VSTF9SRUdFWFAgfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVBQX0xPR0dJTkdfU0VSVklDRSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnaW5nL2xvZ2dpbmctc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBJTG9nZ2VyLCBJTG9nZ2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2luZy9sb2dnZXIubW9kZWwnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IHN1Z2dlc3RGcm9tQXJyYXkgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMnO1xuaW1wb3J0IHsgaXNOaWxPckJsYW5rLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBOb2RlRmVhdHVyZSB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL25vZGUtZmVhdHVyZS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdFBlZXJNb2RhbE9wdGlvbnMge1xuICBjYW5DYW5jZWw6IGJvb2xlYW47XG4gIGFsbG93U2VsZWN0RG93blBlZXI6IGJvb2xlYW47XG4gIG9uUmVmcmVzaDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgc2hvd1NldE1hbnVhbGx5QnV0dG9uOiBib29sZWFuO1xuICBzZWxlY3RlZFBlZXI/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZWZhdWx0UGVlcnM6IFBlZXJbXTtcbiAgc2hvd1NlYXJjaEJhcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGVjdFBlZXJNb2RhbFN0YXRlIHtcbiAgZGVmYXVsdFBlZXJzOiBQZWVyW107XG4gIHBlZXJzOiBQZWVyW107XG4gIGZpbHRlcmVkUGVlcnM6IFBlZXJbXTtcbiAgZmlsdGVyZWRQZWVyc0J5RmVhdHVyZXM6IFBlZXJbXTtcbiAgZmlsdGVyZWRQZWVyQ291bnQ6IG51bWJlcjtcbiAgZmlsdGVyZWRGZWF0dXJlc0NvdW50OiBudW1iZXI7XG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgc2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWxlY3QtcGVlci1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnc2VsZWN0LXBlZXIubW9kYWwuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1wZWVyLm1vZGFsLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtmYWRlSW5BbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RQZWVyTW9kYWwgZXh0ZW5kcyBSeFN0YXRlPElTZWxlY3RQZWVyTW9kYWxTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIElTZWxlY3RQZWVyTW9kYWxPcHRpb25zIHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRQZWVycyQgPSB0aGlzLnNlbGVjdCgnZGVmYXVsdFBlZXJzJyk7XG4gIHByb3RlY3RlZCBwZWVycyQgPSB0aGlzLnNlbGVjdCgncGVlcnMnKTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkUGVlcnMkID0gdGhpcy5zZWxlY3QoJ2ZpbHRlcmVkUGVlcnMnKTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkUGVlcnNCeUZlYXR1cmVzJCA9IHRoaXMuc2VsZWN0KCdmaWx0ZXJlZFBlZXJzQnlGZWF0dXJlcycpO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRQZWVyQ291bnQkID0gdGhpcy5zZWxlY3QoJ2ZpbHRlcmVkUGVlckNvdW50Jyk7XG4gIHByb3RlY3RlZCBmaWx0ZXJlZEZlYXR1cmVzQ291bnQkID0gdGhpcy5zZWxlY3QoJ2ZpbHRlcmVkRmVhdHVyZXNDb3VudCcpO1xuXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIG1vYmlsZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHBlZXJNaW5WZXJzaW9uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwZWVyRGVmYXVsdFByZWZpeDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGNvbGxhcHNlZFBlZXJzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuXG4gIHNldCBwZWVycyh2YWx1ZTogUGVlcltdKSB7XG4gICAgdGhpcy5zZXQoJ3BlZXJzJywgKCkgPT4gdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHBlZXJzKCk6IFBlZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdwZWVycycpO1xuICB9XG5cbiAgc2V0IHNlYXJjaFRleHQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2V0KCdzZWFyY2hUZXh0JywgKCkgPT4gdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3NlYXJjaFRleHQnKTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJlZFBlZXJzKHZhbHVlOiBQZWVyW10pIHtcbiAgICB0aGlzLnNldCgnZmlsdGVyZWRQZWVycycsICgpID0+IHZhbHVlKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZFBlZXJzKCk6IFBlZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdmaWx0ZXJlZFBlZXJzJyk7XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgc2VsZWN0ZWRUYWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXQoJ3NlbGVjdGVkVGFiSW5kZXgnLCAoKSA9PiB2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRUYWJJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldCgnc2VsZWN0ZWRUYWJJbmRleCcpO1xuICB9XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRQZWVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlID0gJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuVElUTEUnO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2FuQ2FuY2VsID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93U2VsZWN0RG93blBlZXIgPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd1NldE1hbnVhbGx5QnV0dG9uID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dTZWFyY2hCYXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRhYkdyb3VwQW5pbWF0aW9uRHVyYXRpb246ICcyMDBtcyc7XG5cbiAgQElucHV0KCkgb25SZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBASW5wdXQoKSBzZXQgZGVmYXVsdFBlZXJzKHZhbHVlOiBQZWVyW10pIHtcbiAgICB0aGlzLnNldCgnZGVmYXVsdFBlZXJzJywgKCkgPT4gdmFsdWUpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoYmFyJywgeyBzdGF0aWM6IHRydWUgfSkgc2VhcmNoYmFyOiBJb25TZWFyY2hiYXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcml2YXRlIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9MT0dHSU5HX1NFUlZJQ0UpIHByb3RlY3RlZCBsb2dnaW5nU2VydmljZT86IElMb2dnaW5nU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2V0KHsgc2VhcmNoVGV4dDogbnVsbCwgc2VsZWN0ZWRUYWJJbmRleDogMCB9KTtcbiAgICB0aGlzLm1vYmlsZSA9IGlzTW9iaWxlKHdpbmRvdyk7XG4gICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2U/LmdldExvZ2dlcignbmV0d29yay1tb2RhbCcpO1xuICAgIHRoaXMucGVlck1pblZlcnNpb24gPSBlbnZpcm9ubWVudC5wZWVyTWluVmVyc2lvbjtcbiAgICB0aGlzLnBlZXJEZWZhdWx0UHJlZml4ID0gZW52aXJvbm1lbnQucGVlckRlZmF1bHRQcmVmaXggfHwgJ2h0dHBzOi8vJztcbiAgICB0aGlzLmVuYWJsZVNlbGVjdFBlZXJCeUZlYXR1cmUgPSBlbnZpcm9ubWVudC5lbmFibGVTZWxlY3RQZWVyQnlGZWF0dXJlIHx8IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlYXJjaEJhciA9IHRoaXMuZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZTsgLy8gU2hvdyBzZWFyY2ggYmFyIGJ5IGRlZmF1bHQsIGlmIHR3byB0YWJzXG5cbiAgICAvLyBSZWZyZXNoaW5nIHBlZXJzXG4gICAgdGhpcy5ob2xkKHRoaXMuZGVmYXVsdFBlZXJzJCwgKHJlcykgPT4gdGhpcy5yZWZyZXNoUGVlcnMocmVzKSk7XG5cbiAgICAvLyBTZWFyY2ggb24gaG9zdFxuICAgIHRoaXMuY29ubmVjdChcbiAgICAgICdmaWx0ZXJlZFBlZXJzJyxcbiAgICAgIHRoaXMuc2VsZWN0KFsncGVlcnMnLCAnc2VhcmNoVGV4dCddLCAocmVzKSA9PiByZXMpLnBpcGUoXG4gICAgICAgIG1hcCgoeyBwZWVycywgc2VhcmNoVGV4dCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhzZWFyY2hUZXh0KSkgcmV0dXJuIHBlZXJzOyAvLyBBbGxcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1tzZWxlY3QtcGVlci1tb2RhbF0gU2VhcmNoaW5nIG9uIGhvc3RzOiAnICsgc2VhcmNoVGV4dCk7XG4gICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBzdWdnZXN0RnJvbUFycmF5KHBlZXJzLCBzZWFyY2hUZXh0LCB7XG4gICAgICAgICAgICBhbnlTZWFyY2g6IHRydWUsXG4gICAgICAgICAgICBzZWFyY2hBdHRyaWJ1dGVzOiBbJ2xhYmVsJywgJ2hvc3RBbmRQb3J0J10sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLmNvbm5lY3QoJ2ZpbHRlcmVkUGVlckNvdW50JywgdGhpcy5maWx0ZXJlZFBlZXJzJC5waXBlKG1hcCgocGVlcnMpID0+IHBlZXJzPy5sZW5ndGggPz8gMCkpKTtcblxuICAgIC8vIFNlYXJjaCBvbiBmZWF0dXJlc1xuICAgIGlmICh0aGlzLmVuYWJsZVNlbGVjdFBlZXJCeUZlYXR1cmUpIHtcbiAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgJ2ZpbHRlcmVkUGVlcnNCeUZlYXR1cmVzJyxcbiAgICAgICAgdGhpcy5zZWxlY3QoWydwZWVycycsICdzZWFyY2hUZXh0J10sIChyZXMpID0+IHJlcykucGlwZShcbiAgICAgICAgICBtYXAoKHsgcGVlcnMsIHNlYXJjaFRleHQgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhzZWFyY2hUZXh0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gKHBlZXJzIHx8IFtdKS5maWx0ZXIoKHApID0+IGlzTm90RW1wdHlBcnJheShwPy5mZWF0dXJlcykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbc2VsZWN0LXBlZXItbW9kYWxdIFNlYXJjaGluZyBvbiBmZWF0dXJlczogJyArIHNlYXJjaFRleHQpO1xuICAgICAgICAgICAgcmV0dXJuIHBlZXJzXG4gICAgICAgICAgICAgIC5tYXAoKHBlZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGE6IGZlYXR1cmVzIH0gPSBzdWdnZXN0RnJvbUFycmF5KHBlZXIuZmVhdHVyZXMgfHwgW10sIHNlYXJjaFRleHQsIHtcbiAgICAgICAgICAgICAgICAgIGFueVNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZScsICdkZXNjcmlwdGlvbiddLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZmVhdHVyZXMpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFBlZXIgPSBwZWVyLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZFBlZXIuZmVhdHVyZXMgPSBmZWF0dXJlcztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZFBlZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5jb25uZWN0KCdmaWx0ZXJlZEZlYXR1cmVzQ291bnQnLCB0aGlzLmZpbHRlcmVkUGVlcnNCeUZlYXR1cmVzJC5waXBlKG1hcChQZWVyLmNvdW50QWxsRmVhdHVyZXMpKSk7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZWxlY3RQZWVyKHBlZXI6IFBlZXIpIHtcbiAgICBpZiAodGhpcy5hbGxvd1NlbGVjdERvd25QZWVyIHx8IChwZWVyLnJlYWNoYWJsZSAmJiB0aGlzLmlzQ29tcGF0aWJsZShwZWVyKSkpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtzZWxlY3QtcGVlci1tb2RhbF0gU2VsZWN0ZWQgcGVlcjoge3VybDogJyR7cGVlci51cmx9J31gKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQZWVyID0gcGVlci51cmw7XG4gICAgICB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHBlZXIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnNob3dTZWFyY2hCYXIgPSAhdGhpcy5zaG93U2VhcmNoQmFyO1xuICAgIGlmICh0aGlzLnNob3dTZWFyY2hCYXIgJiYgdGhpcy5zZWFyY2hiYXIpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGJhci5zZXRGb2N1cygpO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVQZWVyRmVhdHVyZXMocGVlclVybDogc3RyaW5nKSB7XG4gICAgaWYgKCFwZWVyVXJsKSByZXR1cm47XG4gICAgdGhpcy5jb2xsYXBzZWRQZWVyc1twZWVyVXJsXSA9IGlzTm90TmlsKHRoaXMuY29sbGFwc2VkUGVlcnNbcGVlclVybF0pID8gIXRoaXMuY29sbGFwc2VkUGVlcnNbcGVlclVybF0gOiB0cnVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogIENoZWNrIHRoZSBtaW4gcG9kIHZlcnNpb24sIGRlZmluZWQgYnkgdGhlIGFwcFxuICAgKlxuICAgKiBAcGFyYW0gcGVlclxuICAgKi9cbiAgaXNDb21wYXRpYmxlKHBlZXI6IFBlZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucGVlck1pblZlcnNpb24gfHwgKHBlZXIgJiYgcGVlci5zb2Z0d2FyZVZlcnNpb24gJiYgVmVyc2lvblV0aWxzLmlzQ29tcGF0aWJsZSh0aGlzLnBlZXJNaW5WZXJzaW9uLCBwZWVyLnNvZnR3YXJlVmVyc2lvbikpO1xuICB9XG5cbiAgcmVmcmVzaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgYXN5bmMgY2xpY2tTZXRNYW51YWxseShldmVudD86IEV2ZW50KSB7XG4gICAgY29uc3QgcGVlclVybCA9IGF3YWl0IHRoaXMub3BlblBlZXJVcmxQb3BvdmVyKGV2ZW50KTtcbiAgICBpZiAocGVlclVybCkge1xuICAgICAgY29uc3QgcGVlciA9IFBlZXIucGFyc2VVcmwocGVlclVybCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQZWVyKHBlZXIpO1xuICAgICAgdGhpcy5zZWxlY3RQZWVyKHBlZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG4gIHByb3RlY3RlZCBjbGVhckxvZ28ocGVlcjogUGVlciB8IE5vZGVGZWF0dXJlKSB7XG4gICAgaWYgKHBlZXIgaW5zdGFuY2VvZiBQZWVyKSB7XG4gICAgICBwZWVyLmZhdmljb24gPSAnc2tpcCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZXIubG9nbyA9ICdza2lwJztcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWZyZXNoUGVlcnMocGVlcnM6IFBlZXJbXSkge1xuICAgIHBlZXJzID0gcGVlcnMgfHwgW107XG5cbiAgICBjb25zdCBkYXRhOiBQZWVyW10gPSBbXTtcbiAgICBjb25zdCBqb2JzID0gUHJvbWlzZS5hbGwoXG4gICAgICBwZWVycy5tYXAoYXN5bmMgKHBlZXIpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoUGVlcihwZWVyKTtcblxuICAgICAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uLmNsb3NlZCkgcmV0dXJuOyAvLyBjb21wb25lbnQgZGVzdHJveWVkXG5cbiAgICAgICAgZGF0YS5wdXNoKHBlZXIpO1xuXG4gICAgICAgIC8vIFNvcnQgKGJ5IHJlYWNoYWJsZSwgdGhlbiBob3N0KVxuICAgICAgICBkYXRhLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAoYS5yZWFjaGFibGUgJiYgIWIucmVhY2hhYmxlKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYgKCFhLnJlYWNoYWJsZSAmJiBiLnJlYWNoYWJsZSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGEuaG9zdEFuZFBvcnQgPCBiLmhvc3RBbmRQb3J0KSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYgKGEuaG9zdEFuZFBvcnQgPiBiLmhvc3RBbmRQb3J0KSByZXR1cm4gMTtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wZWVycyA9IGRhdGEuc2xpY2UoKTsgLy8gQ29weSB0byBmb3JjZSB1cGRhdGVcblxuICAgICAgICByZXR1cm4gcGVlcjtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBqb2JzO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKCF0aGlzLl9zdWJzY3JpcHRpb24uY2xvc2VkKSBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaFBlZXIocGVlcjogUGVlcik6IFByb21pc2U8UGVlcj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9hd2FpdCBzbGVlcChNYXRoLnJhbmRvbSgpICogMTAwKTtcblxuICAgICAgY29uc3Qgc3VtbWFyeTogTm9kZUluZm8gPSBhd2FpdCBOZXR3b3JrVXRpbHMuZ2V0Tm9kZUluZm8odGhpcy5odHRwLCBwZWVyLnVybCk7XG4gICAgICBwZWVyLnN0YXR1cyA9ICdVUCc7XG4gICAgICBwZWVyLnNvZnR3YXJlTmFtZSA9IHN1bW1hcnkuc29mdHdhcmVOYW1lO1xuICAgICAgcGVlci5zb2Z0d2FyZVZlcnNpb24gPSBzdW1tYXJ5LnNvZnR3YXJlVmVyc2lvbjtcbiAgICAgIHBlZXIubGFiZWwgPSBzdW1tYXJ5Lm5vZGVMYWJlbDtcbiAgICAgIHBlZXIubmFtZSA9IHN1bW1hcnkubm9kZU5hbWU7XG4gICAgICBwZWVyLmZlYXR1cmVzID0gc3VtbWFyeS5mZWF0dXJlcz8ubWFwKE5vZGVGZWF0dXJlLmZyb21PYmplY3QpIHx8IFtdO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSWYgbW9kYWwgd2FzIG5vdCBjbG9zZWQgKGUuZy4gcmVzcG9uc2UgYXJyaXZlZCB0b28gbGF0ZSA9PiBpZ25vcmUpXG4gICAgICBpZiAoIXRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW3NlbGVjdC1wZWVyXSBFcnJvciB3aGlsZSBjYWxsaW5nICcke3BlZXIudXJsfS9hcGkvbm9kZS9pbmZvJzogJHtlcnI/Lm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIHRoaXMuX2xvZ2dlcj8uZXJyb3IoJ3JlZnJlc2hQZWVyJywgYEVycm9yIHdoaWxlIGNhbGxpbmcgJyR7cGVlci51cmx9L2FwaS9ub2RlL2luZm8nOiAke2Vycj8ubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnIpfWApO1xuICAgICAgfVxuICAgICAgcGVlci5zdGF0dXMgPSAnRE9XTic7XG4gICAgfVxuICAgIHJldHVybiBwZWVyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9wZW5QZWVyVXJsUG9wb3ZlcihldmVudDogRXZlbnQsIG9wdHM/OiBQYXJ0aWFsPFRleHRQb3BvdmVyT3B0aW9ucz4pIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogVGV4dFBvcG92ZXIsXG4gICAgICBjb21wb25lbnRQcm9wczogPFRleHRQb3BvdmVyT3B0aW9ucz57XG4gICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTRVRUSU5HUy5QRUVSX1VSTCcpLFxuICAgICAgICBtdWx0aWxpbmU6IGZhbHNlLFxuICAgICAgICBhdXRvZm9jdXM6ICF0aGlzLm1vYmlsZSxcbiAgICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLnBhdHRlcm4oUEVFUl9VUkxfUkVHRVhQKSxcbiAgICAgICAgbWF4TGVuZ3RoOiBudWxsLFxuICAgICAgICB0ZXh0OiB0aGlzLnNlbGVjdGVkUGVlciB8fCB0aGlzLnBlZXJEZWZhdWx0UHJlZml4LFxuICAgICAgICAuLi5vcHRzLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgICBrZXlib2FyZENsb3NlOiBmYWxzZSxcbiAgICAgIGV2ZW50OiBudWxsLCAvLyBJTVBPUlRBTlQ6IG51bGwgZXZlbnQgd2lsbCBjZW50ZXIgdGhlIHBvcG92ZXIsIGFuZCB0aGlzIHdpbGwgZml4IGtleWJvYXJkIG92ZXJsYXAgb24gbW9iaWxlXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZScsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gICAgY29uc3QgeyBkYXRhLCByb2xlIH0gPSBhd2FpdCBtb2RhbC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1BvcG92ZXIgcmVzdWx0OiAnLCBkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVGaWx0ZXJlZFBlZXIoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuICAgIGNvbnN0IHRlc3QgPSB0aGlzLmZpbHRlcmVkUGVlcnMkLnBpcGUoXG4gICAgICBtYXAoKHBlZXJzKSA9PiBwZWVycy5maWx0ZXIoRW50aXR5VXRpbHMuc2VhcmNoVGV4dEZpbHRlcihbJ2ZlYXR1cmVzLmxhYmVsJywgJ2ZlYXR1cmVzLm5hbWUnLCAnZmVhdHVyZXMuZGVzY3JpcHRpb24nXSwgdmFsdWUpKSlcbiAgICApO1xuXG4gICAgY29uc29sZS5sb2codGVzdCk7XG4gICAgLy8gKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImxpZ2h0XCIgc3R5bGU9XCJ6LWluZGV4OiA5MDBcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICBAaWYgKGNhbkNhbmNlbCkge1xuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIiB2aXNpYmxlLW1vYmlsZSB2aXNpYmxlLXNtIHZpc2libGUteHM+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhcnJvdy1iYWNrXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7IHRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tdGl0bGU+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgPCEtLSBsb2FkZXIgLS0+XG4gICAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPCEtLSByZWZyZXNoIGJ1dHRvbiAtLT5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgkZXZlbnQpXCJcbiAgICAgICAgICAqbmdJZj1cIm9uUmVmcmVzaC5vYnNlcnZlZFwiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0NPTU1PTi5CVE5fUkVGUkVTSCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfVxuICAgICAgPCEtLSBzZWFyY2ggYnV0dG9uIC0tPlxuICAgICAgQGlmICghc2hvd1NlYXJjaEJhcikge1xuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU2VhcmNoQmFyKClcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJzZWFyY2hcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cblxuICA8IS0tIHNlYXJjaCBiYXIgLS0+XG4gIDxpb24tdG9vbGJhciAqbmdJZj1cInNob3dTZWFyY2hCYXJcIj5cbiAgICA8aW9uLXNlYXJjaGJhclxuICAgICAgI3NlYXJjaGJhclxuICAgICAgYW5pbWF0ZWRcbiAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiIXNob3dTZWFyY2hCYXJcIlxuICAgICAgc2hvdy1jbGVhci1idXR0b249XCJhbHdheXNcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidDT01NT04uQlROX1NFQVJDSCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW2NhbmNlbEJ1dHRvblRleHRdPVwiJ0NPTU1PTi5CVE5fQ0FOQ0VMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgICAgKGlvbkNhbmNlbCk9XCJ0b2dnbGVTZWFyY2hCYXIoKVwiXG4gICAgPjwvaW9uLXNlYXJjaGJhcj5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50PlxuICA8bWF0LXRhYi1ncm91cFxuICAgICN0YWJHcm91cFxuICAgIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRUYWJJbmRleFwiXG4gICAgY2xhc3M9XCJtYXQtbWRjLXRhYi1kaXNhYmxlZC1oaWRkZW5cIlxuICAgIFtjbGFzcy5tYXQtbWRjLXRhYi1ncm91cC1oZWFkZXItaGlkZGVuXT1cIiFlbmFibGVTZWxlY3RQZWVyQnlGZWF0dXJlXCJcbiAgICBbZHluYW1pY0hlaWdodF09XCJmYWxzZVwiXG4gICAgW21hdC1zdHJldGNoLXRhYnNdPVwibW9iaWxlXCJcbiAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwibW9iaWxlID8gdGFiR3JvdXBBbmltYXRpb25EdXJhdGlvbiA6ICcwcydcIlxuICA+XG4gICAgPG1hdC10YWI+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbFxuICAgICAgICAgIFttYXRCYWRnZV09XCJmaWx0ZXJlZFBlZXJDb3VudCQgfCBhc3luYyB8IGJhZGdlTnVtYmVyXCJcbiAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiZmlsdGVyZWRQZWVyQ291bnQkIHwgYXN5bmMgfCBpc05pbFwiXG4gICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGZpbHRlcmVkUGVlckNvdW50JCB8IGFzeW5jKSA/ICdwcmltYXJ5JyA6ICdhY2NlbnQnXCJcbiAgICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJmYWxzZVwiXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWJvdmUgYWZ0ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuVEFCX05FVFdPUksnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxpb24tbGlzdD5cbiAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcCBpb24tcGFkZGluZy1lbmRcIj5cbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuTkVUV09SS19IRUxQJyB8IHRyYW5zbGF0ZVwiPjwvcD5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG5cbiAgICAgICAgQGZvciAocGVlciBvZiBmaWx0ZXJlZFBlZXJzJCB8IGFzeW5jOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQZWVyKHBlZXIpXCJcbiAgICAgICAgICAgIEBmYWRlSW5BbmltYXRpb25cbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZFBlZXIgJiYgc2VsZWN0ZWRQZWVyID09PSBwZWVyLnVybFwiXG4gICAgICAgICAgICBkZXRhaWxcbiAgICAgICAgICAgIG1hdFJpcHBsZVxuICAgICAgICAgICAgdGFwcGFibGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFBlZXIgaXMgVVAgLS0+XG4gICAgICAgICAgICBAaWYgKHBlZXIucmVhY2hhYmxlKSB7XG4gICAgICAgICAgICAgIDwhLS0gaWNvbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwZWVyLmZhdmljb24gIT0gJ3NraXAnKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cInBlZXIuZmF2aWNvbiB8fCBwZWVyLnVybCArICcvYXBpL2Zhdmljb24nXCIgKGlvbkVycm9yKT1cImNsZWFyTG9nbyhwZWVyKVwiPjwvaW9uLWltZz5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2VydmVyXCIgY2xhc3M9XCJpY29uLXNlY29uZGFyeVwiIHN0eWxlPVwidG9wOiAxMnB4OyBsZWZ0OiA0NHB4XCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwic2VydmVyXCIgY2xhc3M9XCJpb24taWNvbi1hdmF0YXJcIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IHVybCA9IHBlZXIuaG9zdEFuZFBvcnQgKyBwZWVyLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgW2lubmVySFRNTF09XCJ1cmwgfCBoaWdobGlnaHQ6IHNlYXJjaFRleHRcIj48L2gzPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IFtpbm5lckhUTUxdPVwicGVlci5sYWJlbCB8IGhpZ2hsaWdodDogc2VhcmNoVGV4dFwiPjwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplLXNtPVwiNFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcCBpb24tdGV4dC1zbS1jZW50ZXJcIiBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxoND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBwZWVyLnNvZnR3YXJlTmFtZSB9fSZuYnNwOzwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnIgY2xhc3M9XCJoaWRkZW4teHhzIGhpZGRlbi14c1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBhdGlibGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFwZWVyTWluVmVyc2lvbiB8fCBpc0NvbXBhdGlibGUocGVlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnZ7eyBwZWVyLnNvZnR3YXJlVmVyc2lvbiB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJbmNvbXBhdGlibGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLk5PVF9DT01QQVRJQkxFX0hFTFAnIHwgdHJhbnNsYXRlOiB7IHZlcnNpb246IHBlZXJNaW5WZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW9uLWNvbG9yLWRhbmdlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnt7IHBlZXIuc29mdHdhcmVWZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPCEtLSBQZWVyIGlzIERPV04gLS0+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwic2VydmVyXCIgY2xhc3M9XCJkaXNhYmxlZCBpb24taWNvbi1hdmF0YXJcIj48L2lvbi1pY29uPlxuXG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICA8aDM+e3sgcGVlci5ob3N0QW5kUG9ydCB9fXt7IHBlZXIucGF0aCB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxoND5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzaXplPVwic21hbGxcIiBuYW1lPVwiY2xvc2UtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPk5FVFdPUksuUEVFUi5PRkZMSU5FPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBubyByZXN1bHQgLS0+XG4gICAgICAgIEBpZiAoKGZpbHRlcmVkUGVlckNvdW50JCB8IGFzeW5jKSA9PT0gMCkge1xuICAgICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwidGV4dC1pdGFsaWNcIiB0cmFuc2xhdGU+Q09NTU9OLk5PX1JFU1VMVDwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9pb24tbGlzdD5cbiAgICA8L21hdC10YWI+XG5cbiAgICA8IS0tIFNlbGVjdCBieSBmZWF0dXJlcyAtLT5cbiAgICA8bWF0LXRhYiBbZGlzYWJsZWRdPVwiIWVuYWJsZVNlbGVjdFBlZXJCeUZlYXR1cmVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsXG4gICAgICAgICAgW21hdEJhZGdlXT1cImZpbHRlcmVkRmVhdHVyZXNDb3VudCQgfCBhc3luYyB8IGJhZGdlTnVtYmVyXCJcbiAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiZmlsdGVyZWRGZWF0dXJlc0NvdW50JCB8IGFzeW5jIHwgaXNOaWxcIlxuICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihmaWx0ZXJlZEZlYXR1cmVzQ291bnQkIHwgYXN5bmMpID8gJ3ByaW1hcnknIDogJ2FjY2VudCdcIlxuICAgICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cImZhbHNlXCJcbiAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFib3ZlIGFmdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLlRBQl9GRUFUVVJFUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGlvbi1saXN0PlxuICAgICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwIGlvbi1wYWRkaW5nLWVuZFwiPlxuICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCInTkVUV09SSy5QRUVSLlNFTEVDVF9NT0RBTC5GRUFUVVJFU19IRUxQJyB8IHRyYW5zbGF0ZVwiPjwvcD5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG5cbiAgICAgICAgQGZvciAocGVlciBvZiBmaWx0ZXJlZFBlZXJzQnlGZWF0dXJlcyQgfCBhc3luYzsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgQGxldCBwZWVyVXJsID0gcGVlci5ob3N0QW5kUG9ydCArIHBlZXIucGF0aDtcbiAgICAgICAgICA8IS0tIFBlZXIgaXMgVVAgLS0+XG4gICAgICAgICAgQGlmIChwZWVyLnJlYWNoYWJsZSAmJiBwZWVyLmZlYXR1cmVzIHwgaXNOb3RFbXB0eUFycmF5KSB7XG4gICAgICAgICAgICBAbGV0IGNvbGxhcHNlZCA9IGNvbGxhcHNlZFBlZXJzW3BlZXJVcmxdO1xuXG4gICAgICAgICAgICA8aW9uLWl0ZW0tZGl2aWRlciAoY2xpY2spPVwidG9nZ2xlUGVlckZlYXR1cmVzKHBlZXJVcmwpXCIgdGFwcGFibGUgQGZhZGVJbkFuaW1hdGlvbj5cbiAgICAgICAgICAgICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxoND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2VydmVyXCIgY29sb3I9XCJtZWRpdW1cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcGVlci5ob3N0QW5kUG9ydCB9fXt7IHBlZXIucGF0aCB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwZWVyTWluVmVyc2lvbiAmJiAhaXNDb21wYXRpYmxlKHBlZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTkVUV09SSy5QRUVSLlNFTEVDVF9NT0RBTC5OT1RfQ09NUEFUSUJMRV9IRUxQJyB8IHRyYW5zbGF0ZTogeyB2ZXJzaW9uOiBwZWVyTWluVmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImlvbi1jb2xvci1kYW5nZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+d2FybmluZzwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2e3sgcGVlci5zb2Z0d2FyZVZlcnNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIiBjbGFzcz1cImlvbi10ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidGV4dC1pdGFsaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDQ+KHt7ICdDT01NT04uUkVTVUxUX0NPVU5UJyB8IHRyYW5zbGF0ZTogeyBjb3VudDogcGVlci5mZWF0dXJlcy5sZW5ndGggfSB9fSk8L2g0PlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XG5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAge3sgbW9iaWxlID8gJ2Fycm93X2Ryb3BfZG93bicgOiAna2V5Ym9hcmRfYXJyb3dfZG93bicgfX1cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHt7IG1vYmlsZSA/ICdhcnJvd19kcm9wX3VwJyA6ICdrZXlib2FyZF9hcnJvd191cCcgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2lvbi1pdGVtLWRpdmlkZXI+XG5cbiAgICAgICAgICAgIEBpZiAoIWNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICBAZm9yIChmZWF0dXJlIG9mIHBlZXIuZmVhdHVyZXM7IHRyYWNrIGZlYXR1cmUubGFiZWwpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gKGNsaWNrKT1cInNlbGVjdFBlZXIocGVlcilcIiB0YXBwYWJsZSBtYXRSaXBwbGUgZGV0YWlsIEBmYWRlSW5BbmltYXRpb24+XG4gICAgICAgICAgICAgICAgICA8IS0tIGljb24gLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKGZlYXR1cmUubG9nbyAmJiBmZWF0dXJlLmxvZ28gIT0gJ3NraXAnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYXZhdGFyIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taW1nIFtzcmNdPVwiZmVhdHVyZS5sb2dvXCIgKGlvbkVycm9yKT1cImNsZWFyTG9nbyhmZWF0dXJlKVwiPjwvaW9uLWltZz5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocGVlci5mYXZpY29uICE9ICdza2lwJykge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLWF2YXRhciBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cInBlZXIuZmF2aWNvbiB8fCBwZWVyLnVybCArICcvYXBpL2Zhdmljb24nXCIgKGlvbkVycm9yKT1cImNsZWFyTG9nbyhwZWVyKVwiPjwvaW9uLWltZz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb250cmFjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAxMnB4OyBsZWZ0OiA0NHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImNvbnRyYWN0XCIgY2xhc3M9XCJpb24taWNvbi1hdmF0YXJcIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGgzIFtpbm5lckhUTUxdPVwiZmVhdHVyZSB8IHJlZmVyZW50aWFsVG9TdHJpbmcgfCBoaWdobGlnaHQ6IHNlYXJjaFRleHRcIj48L2gzPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJmZWF0dXJlLmRlc2NyaXB0aW9uIHwgaGlnaGxpZ2h0OiBzZWFyY2hUZXh0XCI+PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gbm8gcmVzdWx0IC0tPlxuICAgICAgICBAaWYgKChmaWx0ZXJlZEZlYXR1cmVzQ291bnQkIHwgYXN5bmMpID09PSAwKSB7XG4gICAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJ0ZXh0LWl0YWxpY1wiIHRyYW5zbGF0ZT5DT01NT04uTk9fUkVTVUxUPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1saXN0PlxuICAgIDwvbWF0LXRhYj5cbiAgPC9tYXQtdGFiLWdyb3VwPlxuPC9pb24tY29udGVudD5cblxuQGlmICgoY2FuQ2FuY2VsICYmICFtb2JpbGUpIHx8IHNob3dTZXRNYW51YWxseUJ1dHRvbikge1xuICA8aW9uLWZvb3Rlcj5cbiAgICA8aW9uLXRvb2xiYXI+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nIGlvbi10ZXh0LW5vd3JhcFwiPlxuICAgICAgICA8aW9uLWNvbD48L2lvbi1jb2w+XG5cbiAgICAgICAgPCEtLSBidXR0b25zIC0tPlxuICAgICAgICBAaWYgKHNob3dTZXRNYW51YWxseUJ1dHRvbikge1xuICAgICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiAoY2xpY2spPVwiY2xpY2tTZXRNYW51YWxseSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPk5FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuQlROX1NFVF9NQU5VQUxMWTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoY2FuQ2FuY2VsKSB7XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIiBoaWRkZW4teHMgaGlkZGVuLXNtIGhpZGRlbi1tb2JpbGU+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9DQU5DRUw8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLXJvdz5cbiAgICA8L2lvbi10b29sYmFyPlxuICA8L2lvbi1mb290ZXI+XG59XG4iXX0=
@@ -49,6 +49,9 @@ export class DiscourseFeedService extends StartableService {
49
49
  if (!this.started) {
50
50
  return from(this.start()).pipe(switchMap(() => this.watchAll(opts)));
51
51
  }
52
+ if (isNotEmptyArray(opts?.urls)) {
53
+ return this.locale$.pipe(mergeMap((locale) => this.loadAll(opts.urls, { locale, ...opts })));
54
+ }
52
55
  return this.feedUrls$.pipe(filter(isNotEmptyArray), mergeMap((urls) => this.loadAll(urls, opts)));
53
56
  }
54
57
  getHomeUrl(feed) {
@@ -164,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
164
167
  type: Inject,
165
168
  args: [ENVIRONMENT]
166
169
  }] }] });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291cnNlLWZlZWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2ZlZWQvZGlzY291cnNlL2Rpc2NvdXJzZS1mZWVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sWUFBWSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQVksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsSUFBSSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV0RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFTMUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUEyQztJQWtCekU7SUFDbUM7SUFsQnJDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJ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Q0FBQyxZQUFZO2FBQ3JELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3dHQS9MVSxvQkFBb0Isc0RBbUJULFdBQVc7NEdBbkJ0QixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBb0I3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJvbWlzZSB9IGZyb20gJ0ByeC1hbmd1bGFyL2Nkay96b25lLWxlc3MvYnJvd3Nlcic7XG5pbXBvcnQgeyBEaXNjb3Vyc2VVdGlscyB9IGZyb20gJy4vZGlzY291cnNlLnV0aWxzJztcbmltcG9ydCBEaXNjb3Vyc2VBUEkgZnJvbSAnZGlzY291cnNlMic7XG5pbXBvcnQgeyBKc29uRmVlZCwgSnNvbkZlZWRVdGlscyB9IGZyb20gJy4uL2ZlZWQubW9kZWwnO1xuaW1wb3J0IHsgZmlyc3RBcnJheVZhbHVlLCBpc0VtcHR5QXJyYXksIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0YXJ0YWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQsIEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgVXJsVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZmlsZS91cmwudXRpbHMnO1xuaW1wb3J0IHsgSUZlZWRTZXJ2aWNlIH0gZnJvbSAnLi4vZmVlZC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBEaXNjb3Vyc2VGZWVkU2VydmljZVN0YXRlIHtcbiAgbG9jYWxlOiBzdHJpbmc7XG4gIGZlZWRVcmxzPzogc3RyaW5nW107XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGlzY291cnNlRmVlZFNlcnZpY2UgZXh0ZW5kcyBTdGFydGFibGVTZXJ2aWNlPERpc2NvdXJzZUZlZWRTZXJ2aWNlU3RhdGU+IGltcGxlbWVudHMgSUZlZWRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkaXNjb3Vyc2VBcGlzID0gbmV3IE1hcDxzdHJpbmcsIERpc2NvdXJzZUFQST4oKTtcbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1tkaXNjb3Vyc2UtZmVlZC1zZXJ2aWNlXSAnO1xuXG4gIHByaXZhdGUgX3N0YXRlID0gbmV3IFJ4U3RhdGU8RGlzY291cnNlRmVlZFNlcnZpY2VTdGF0ZT4oKTtcbiAgcHJpdmF0ZSBuZXR3b3JrID0gaW5qZWN0KE5ldHdvcmtTZXJ2aWNlKTtcblxuICBsb2NhbGUkID0gdGhpcy5fc3RhdGUuc2VsZWN0KCdsb2NhbGUnKTtcbiAgZmVlZFVybHMkID0gdGhpcy5fc3RhdGUuc2VsZWN0KCdmZWVkVXJscycpO1xuXG4gIGdldCBmZWVkVXJscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldCgnZmVlZFVybHMnKTtcbiAgfVxuICBzZXQgZmVlZFVybHModXJsczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zdGF0ZS5zZXQoJ2ZlZWRVcmxzJywgKCkgPT4gdXJscyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKHNldHRpbmdzKTtcblxuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZGlzY291cnNlLWZlZWQtc2VydmljZV0gQ3JlYXRpbmcgc2VydmljZScpO1xuXG4gICAgdGhpcy5fc3RhdGUuY29ubmVjdCgnbG9jYWxlJywgdGhpcy5zZXR0aW5ncy5sb2NhbGUkKTtcblxuICAgIHRoaXMuX3N0YXRlLmNvbm5lY3QoXG4gICAgICAnZmVlZFVybHMnLFxuICAgICAgdGhpcy5sb2NhbGUkLnBpcGUoXG4gICAgICAgIGZpbHRlcihpc05vdE5pbE9yQmxhbmspLFxuICAgICAgICBtYXAoKGxvY2FsZSkgPT4gKGxvY2FsZSAmJiBlbnZpcm9ubWVudC5mZWVkPy5qc29uRmVlZD8uW2xvY2FsZV0pID8/IFtdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8RGlzY291cnNlRmVlZFNlcnZpY2VTdGF0ZT4ge1xuICAgIGF3YWl0IHRoaXMuc2V0dGluZ3MucmVhZHkoKTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiB0aGlzLnNldHRpbmdzLmxvY2FsZSxcbiAgICB9O1xuICB9XG5cbiAgd2F0Y2hBbGwob3B0cz86IHsgbWF4QWdlSW5Nb250aHM/OiBudW1iZXI7IG1heENvbnRlbnRMZW5ndGg/OiBudW1iZXIgfSk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxKc29uRmVlZD4+IHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkge1xuICAgICAgcmV0dXJuIGZyb20odGhpcy5zdGFydCgpKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLndhdGNoQWxsKG9wdHMpKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZlZWRVcmxzJC5waXBlKFxuICAgICAgZmlsdGVyKGlzTm90RW1wdHlBcnJheSksXG4gICAgICBtZXJnZU1hcCgodXJscykgPT4gdGhpcy5sb2FkQWxsKHVybHMsIG9wdHMpKVxuICAgICk7XG4gIH1cblxuICBnZXRIb21lVXJsKGZlZWQ/OiBKc29uRmVlZCkge1xuICAgIGNvbnN0IGZlZWRVcmwgPSBmZWVkPy5mZWVkX3VybCA/PyBmaXJzdEFycmF5VmFsdWUodGhpcy5mZWVkVXJscyk7XG4gICAgcmV0dXJuIGZlZWRVcmwgPyBVcmxVdGlscy5nZXRSb290VXJsKGZlZWRVcmwpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0VGFnVXJsKGZlZWQ6IEpzb25GZWVkLCB0YWc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFmZWVkIHx8ICF0YWcpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgJ2ZlZWQnIG9yICd0YWcnIGFyZ3VtZW50XCIpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEhvbWVVcmwoZmVlZCk7XG4gICAgcmV0dXJuIGZlZWQudGFnX3RlbXBsYXRlPy5yZXBsYWNlKCd7dGFnfScsIHRhZykgPz8gYmFzZVVybCArICcvdGFnLycgKyB0YWc7XG4gIH1cblxuICBhc3luYyBsb2FkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdHM/OiB7XG4gICAgICBsb2NhbGU/OiBzdHJpbmc7XG4gICAgICBtYXhBZ2VJbk1vbnRocz86IG51bWJlcjtcbiAgICAgIG1heENvbnRlbnRMZW5ndGg/OiBudW1iZXI7XG4gICAgICAvLyBJbnRlcm5hbCBvcHRpb25zIChmb3IgcmVjdXJzaXZlIGNhbGxzKVxuICAgICAgY2xvc2VBcGlzPzogYm9vbGVhbjtcbiAgICAgIGRlcHRoPzogbnVtYmVyO1xuICAgIH1cbiAgKTogUHJvbWlzZTxKc29uRmVlZD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5sb2FkQWxsKFt1cmxdLCBvcHRzKTtcbiAgICByZXR1cm4gZGF0YT8uWzBdO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChcbiAgICB1cmxzPzogc3RyaW5nW10sXG4gICAgb3B0cz86IHtcbiAgICAgIGxvY2FsZT86IHN0cmluZztcbiAgICAgIG1heEFnZUluTW9udGhzPzogbnVtYmVyO1xuICAgICAgbWF4Q29udGVudExlbmd0aD86IG51bWJlcjtcbiAgICAgIC8vIEludGVybmFsIG9wdGlvbnMgKGZvciByZWN1cnNpdmUgY2FsbHMpXG4gICAgICBjbG9zZUFwaXM/OiBib29sZWFuO1xuICAgICAgZGVwdGg/OiBudW1iZXI7XG4gICAgfVxuICApOiBQcm9taXNlPExvYWRSZXN1bHQ8SnNvbkZlZWQ+PiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHVybHMgPSB1cmxzID8/IHRoaXMuZmVlZFVybHM7XG4gICAgb3B0cyA9IHtcbiAgICAgIG1heEFnZUluTW9udGhzOiBvcHRzPy5tYXhBZ2VJbk1vbnRocyA/PyB0aGlzLmVudmlyb25tZW50LmZlZWQ/Lm1heEFnZUluTW9udGhzLFxuICAgICAgbWF4Q29udGVudExlbmd0aDogb3B0cz8ubWF4Q29udGVudExlbmd0aCA/PyB0aGlzLmVudmlyb25tZW50LmZlZWQ/Lm1heENvbnRlbnRMZW5ndGgsXG4gICAgICBsb2NhbGU6IHRoaXMuc2V0dGluZ3MubG9jYWxlLFxuICAgICAgZGVwdGg6IDAsXG4gICAgICBjbG9zZUFwaXM6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG4gICAgY29uc3QgZmVlZHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICh1cmxzIHx8IFtdKS5tYXAoYXN5bmMgKHVybCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEdldCBKU09OXG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHRoaXMubmV0d29yay5mZXRjaCh1cmwpO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRlZCBKU09OIGZyb20gJHt1cmx9YCwganNvbik7XG4gICAgICAgICAgaWYgKEpzb25GZWVkVXRpbHMuaXNKc29uRmVlZChqc29uKSkge1xuICAgICAgICAgICAgLy8gTWlncmF0ZSBvbGQgdmVyc2lvblxuICAgICAgICAgICAgbGV0IGZlZWQgPSBKc29uRmVlZFV0aWxzLm1pZ3JhdGVGZWVkKGpzb24pO1xuXG4gICAgICAgICAgICAvLyBSZXNvbHZlIGl0ZW1zIChlLmcuIHVzaW5nIGZlZWQubmV4dF91cmwpXG4gICAgICAgICAgICBmZWVkID0gYXdhaXQgdGhpcy5yZXNvbHZlRmVlZEl0ZW1zKGZlZWQsIHsgLi4ub3B0cywgZGVwdGg6IG9wdHM/LmRlcHRoID8/IDAgfSk7XG5cbiAgICAgICAgICAgIC8vIFRydW5jYXRlIGh0bWxcbiAgICAgICAgICAgIEpzb25GZWVkVXRpbHMudHJ1bmNhdGVGZWVkSXRlbXNIdG1sKGZlZWQsIG9wdHMpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNOb3RFbXB0eUFycmF5KGZlZWQ/Lml0ZW1zKSA/IFtmZWVkXSA6IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdldCBkaXNjb3Vyc2VcbiAgICAgICAgICBpZiAoRGlzY291cnNlVXRpbHMuaXNEaXNjb3Vyc2VPYmplY3QoanNvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuZ2V0T3JDcmVhdGVEaXNjb3Vyc2VBcGkodXJsKTtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBEaXNjb3Vyc2VVdGlscy5nZXRGZWVkc0J5VXJsKHVybCwgeyAuLi5vcHRzLCBhcGkgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycj8uc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fSBFcnJvciB3aGlsZSBmZXRjaGluZyBmZWVkIGF0ICR7dXJsfS4gNDA0IChOb3QgZm91bmQpYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fSBFcnJvciB3aGlsZSBmZXRjaGluZyBmZWVkIGF0ICR7dXJsfWAsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAob3B0cz8uY2xvc2VBcGlzICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5jbG9zZUFwaXMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gZmVlZHMuZmxhdCgpO1xuXG4gICAgcmV0dXJuIHsgZGF0YSwgdG90YWw6IGRhdGEubGVuZ3RoIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T3JDcmVhdGVEaXNjb3Vyc2VBcGkodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gRGlzY291cnNlVXRpbHMuZ2V0RGlzY291cnNlQmFzZVVybCh1cmwpO1xuICAgIGxldCBhcGkgPSB0aGlzLmRpc2NvdXJzZUFwaXMuZ2V0KGJhc2VVcmwpO1xuICAgIGlmICghYXBpKSB7XG4gICAgICBhcGkgPSBuZXcgRGlzY291cnNlQVBJKGJhc2VVcmwpO1xuICAgICAgdGhpcy5kaXNjb3Vyc2VBcGlzLnNldChiYXNlVXJsLCBhcGkpO1xuICAgIH1cbiAgICByZXR1cm4gYXBpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlQXBpcygpIHtcbiAgICB0aGlzLmRpc2NvdXJzZUFwaXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZXNvbHZlRmVlZEl0ZW1zKGpzb246IEpzb25GZWVkLCBvcHRzPzogeyBtYXhDb250ZW50TGVuZ3RoPzogbnVtYmVyOyBkZXB0aD86IG51bWJlciB9KTogUHJvbWlzZTxKc29uRmVlZD4ge1xuICAgIGlmICghanNvbikgcmV0dXJuIGpzb247XG5cbiAgICAvLyBMb2FkIGl0ZW1zXG4gICAgaWYgKGlzRW1wdHlBcnJheShqc29uLml0ZW1zKSAmJiBpc05vdE5pbE9yQmxhbmsoanNvbi5uZXh0X3VybCkpIHtcbiAgICAgIGNvbnN0IGRlcHRoID0gb3B0cz8uZGVwdGggPz8gMDtcbiAgICAgIGlmIChkZXB0aCA+PSAzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9TWF4IGRlcHRoIHJlYWNoZWQgKCR7ZGVwdGh9KSBmb3IgJHtqc29uLmZlZWRfdXJsfWApO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH1cblxuICAgICAgLy8gTG9hZCBpdGVtc1xuICAgICAgY29uc3QgZmVlZCA9IGF3YWl0IHRoaXMubG9hZChqc29uLm5leHRfdXJsLCB7IC4uLm9wdHMsIGNsb3NlQXBpczogZmFsc2UsIGRlcHRoOiBkZXB0aCArIDEgfSk7XG5cbiAgICAgIGlmIChpc0VtcHR5QXJyYXkoZmVlZD8uaXRlbXMpKSB7XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgICAgfVxuXG4gICAgICAvLyBNZXJnZSB3aXRoIHRoZSBpbnB1dCBqc29uXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5qc29uLFxuICAgICAgICB0aXRsZToganNvbi50aXRsZSA/PyBmZWVkLnRpdGxlLFxuICAgICAgICBob21lX3BhZ2VfdXJsOiBqc29uLmhvbWVfcGFnZV91cmwgPz8gZmVlZC5ob21lX3BhZ2VfdXJsLFxuICAgICAgICBhdXRob3JzOiBpc05vdEVtcHR5QXJyYXkoanNvbi5hdXRob3JzKSA/IGpzb24uYXV0aG9ycyA6IGZlZWQuYXV0aG9ycyxcbiAgICAgICAgaXRlbXM6IGZlZWQuaXRlbXMsXG4gICAgICAgIHRhZ190ZW1wbGF0ZToganNvbi50YWdfdGVtcGxhdGUgPz8gZmVlZC50YWdfdGVtcGxhdGUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG59XG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291cnNlLWZlZWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2ZlZWQvZGlzY291cnNlL2Rpc2NvdXJzZS1mZWVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sWUFBWSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQVksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsSUFBSSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV0RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFTMUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGdCQUEyQztJQW1CekU7SUFDbUM7SUFuQnJDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJ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YUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWE7Z0JBQ3ZELE9BQU8sRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDcEUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWTthQUNyRCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0F6TVUsb0JBQW9CLHNEQW9CVCxXQUFXOzRHQXBCdEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFCN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb21pc2UgfSBmcm9tICdAcngtYW5ndWxhci9jZGsvem9uZS1sZXNzL2Jyb3dzZXInO1xuaW1wb3J0IHsgRGlzY291cnNlVXRpbHMgfSBmcm9tICcuL2Rpc2NvdXJzZS51dGlscyc7XG5pbXBvcnQgRGlzY291cnNlQVBJIGZyb20gJ2Rpc2NvdXJzZTInO1xuaW1wb3J0IHsgSnNvbkZlZWQsIEpzb25GZWVkVXRpbHMgfSBmcm9tICcuLi9mZWVkLm1vZGVsJztcbmltcG9ydCB7IGZpcnN0QXJyYXlWYWx1ZSwgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnhTdGF0ZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlJztcbmltcG9ydCB7IEVOVklST05NRU5ULCBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IFVybFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ZpbGUvdXJsLnV0aWxzJztcbmltcG9ydCB7IElGZWVkU2VydmljZSB9IGZyb20gJy4uL2ZlZWQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzY291cnNlRmVlZFNlcnZpY2VTdGF0ZSB7XG4gIGxvY2FsZTogc3RyaW5nO1xuICBmZWVkVXJscz86IHN0cmluZ1tdO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERpc2NvdXJzZUZlZWRTZXJ2aWNlIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZTxEaXNjb3Vyc2VGZWVkU2VydmljZVN0YXRlPiBpbXBsZW1lbnRzIElGZWVkU2VydmljZSB7XG4gIHByaXZhdGUgZGlzY291cnNlQXBpcyA9IG5ldyBNYXA8c3RyaW5nLCBEaXNjb3Vyc2VBUEk+KCk7XG4gIHByaXZhdGUgX2xvZ1ByZWZpeCA9ICdbZGlzY291cnNlLWZlZWQtc2VydmljZV0gJztcblxuICBwcml2YXRlIF9zdGF0ZSA9IG5ldyBSeFN0YXRlPERpc2NvdXJzZUZlZWRTZXJ2aWNlU3RhdGU+KCk7XG4gIHByaXZhdGUgbmV0d29yayA9IGluamVjdChOZXR3b3JrU2VydmljZSk7XG5cbiAgbG9jYWxlJCA9IHRoaXMuX3N0YXRlLnNlbGVjdCgnbG9jYWxlJyk7XG4gIGZlZWRVcmxzJCA9IHRoaXMuX3N0YXRlLnNlbGVjdCgnZmVlZFVybHMnKTtcblxuICBnZXQgZmVlZFVybHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5nZXQoJ2ZlZWRVcmxzJyk7XG4gIH1cblxuICBzZXQgZmVlZFVybHModXJsczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zdGF0ZS5zZXQoJ2ZlZWRVcmxzJywgKCkgPT4gdXJscyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKHNldHRpbmdzKTtcblxuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZGlzY291cnNlLWZlZWQtc2VydmljZV0gQ3JlYXRpbmcgc2VydmljZScpO1xuXG4gICAgdGhpcy5fc3RhdGUuY29ubmVjdCgnbG9jYWxlJywgdGhpcy5zZXR0aW5ncy5sb2NhbGUkKTtcblxuICAgIHRoaXMuX3N0YXRlLmNvbm5lY3QoXG4gICAgICAnZmVlZFVybHMnLFxuICAgICAgdGhpcy5sb2NhbGUkLnBpcGUoXG4gICAgICAgIGZpbHRlcihpc05vdE5pbE9yQmxhbmspLFxuICAgICAgICBtYXAoKGxvY2FsZSkgPT4gKGxvY2FsZSAmJiBlbnZpcm9ubWVudC5mZWVkPy5qc29uRmVlZD8uW2xvY2FsZV0pID8/IFtdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8RGlzY291cnNlRmVlZFNlcnZpY2VTdGF0ZT4ge1xuICAgIGF3YWl0IHRoaXMuc2V0dGluZ3MucmVhZHkoKTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxlOiB0aGlzLnNldHRpbmdzLmxvY2FsZSxcbiAgICB9O1xuICB9XG5cbiAgd2F0Y2hBbGwob3B0cz86IHsgdXJscz86IHN0cmluZ1tdOyBtYXhBZ2VJbk1vbnRocz86IG51bWJlcjsgbWF4Q29udGVudExlbmd0aD86IG51bWJlciB9KTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PEpzb25GZWVkPj4ge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLnN0YXJ0KCkpLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMud2F0Y2hBbGwob3B0cykpKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheShvcHRzPy51cmxzKSkge1xuICAgICAgcmV0dXJuIHRoaXMubG9jYWxlJC5waXBlKG1lcmdlTWFwKChsb2NhbGUpID0+IHRoaXMubG9hZEFsbChvcHRzLnVybHMsIHsgbG9jYWxlLCAuLi5vcHRzIH0pKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZlZWRVcmxzJC5waXBlKFxuICAgICAgZmlsdGVyKGlzTm90RW1wdHlBcnJheSksXG4gICAgICBtZXJnZU1hcCgodXJscykgPT4gdGhpcy5sb2FkQWxsKHVybHMsIG9wdHMpKVxuICAgICk7XG4gIH1cblxuICBnZXRIb21lVXJsKGZlZWQ/OiBKc29uRmVlZCkge1xuICAgIGNvbnN0IGZlZWRVcmwgPSBmZWVkPy5mZWVkX3VybCA/PyBmaXJzdEFycmF5VmFsdWUodGhpcy5mZWVkVXJscyk7XG4gICAgcmV0dXJuIGZlZWRVcmwgPyBVcmxVdGlscy5nZXRSb290VXJsKGZlZWRVcmwpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0VGFnVXJsKGZlZWQ6IEpzb25GZWVkLCB0YWc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFmZWVkIHx8ICF0YWcpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgJ2ZlZWQnIG9yICd0YWcnIGFyZ3VtZW50XCIpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEhvbWVVcmwoZmVlZCk7XG4gICAgcmV0dXJuIGZlZWQudGFnX3RlbXBsYXRlPy5yZXBsYWNlKCd7dGFnfScsIHRhZykgPz8gYmFzZVVybCArICcvdGFnLycgKyB0YWc7XG4gIH1cblxuICBhc3luYyBsb2FkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdHM/OiB7XG4gICAgICBsb2NhbGU/OiBzdHJpbmc7XG4gICAgICBtYXhBZ2VJbk1vbnRocz86IG51bWJlcjtcbiAgICAgIG1heENvbnRlbnRMZW5ndGg/OiBudW1iZXI7XG4gICAgICAvLyBJbnRlcm5hbCBvcHRpb25zIChmb3IgcmVjdXJzaXZlIGNhbGxzKVxuICAgICAgY2xvc2VBcGlzPzogYm9vbGVhbjtcbiAgICAgIGRlcHRoPzogbnVtYmVyO1xuICAgIH1cbiAgKTogUHJvbWlzZTxKc29uRmVlZD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5sb2FkQWxsKFt1cmxdLCBvcHRzKTtcbiAgICByZXR1cm4gZGF0YT8uWzBdO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChcbiAgICB1cmxzPzogc3RyaW5nW10sXG4gICAgb3B0cz86IHtcbiAgICAgIGxvY2FsZT86IHN0cmluZztcbiAgICAgIG1heEFnZUluTW9udGhzPzogbnVtYmVyO1xuICAgICAgbWF4Q29udGVudExlbmd0aD86IG51bWJlcjtcbiAgICAgIC8vIEludGVybmFsIG9wdGlvbnMgKGZvciByZWN1cnNpdmUgY2FsbHMpXG4gICAgICBjbG9zZUFwaXM/OiBib29sZWFuO1xuICAgICAgZGVwdGg/OiBudW1iZXI7XG4gICAgfVxuICApOiBQcm9taXNlPExvYWRSZXN1bHQ8SnNvbkZlZWQ+PiB7XG4gICAgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIHVybHMgPSB1cmxzID8/IHRoaXMuZmVlZFVybHM7XG4gICAgb3B0cyA9IHtcbiAgICAgIG1heEFnZUluTW9udGhzOiBvcHRzPy5tYXhBZ2VJbk1vbnRocyA/PyB0aGlzLmVudmlyb25tZW50LmZlZWQ/Lm1heEFnZUluTW9udGhzLFxuICAgICAgbWF4Q29udGVudExlbmd0aDogb3B0cz8ubWF4Q29udGVudExlbmd0aCA/PyB0aGlzLmVudmlyb25tZW50LmZlZWQ/Lm1heENvbnRlbnRMZW5ndGgsXG4gICAgICBsb2NhbGU6IHRoaXMuc2V0dGluZ3MubG9jYWxlLFxuICAgICAgZGVwdGg6IDAsXG4gICAgICBjbG9zZUFwaXM6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG4gICAgY29uc3QgZmVlZHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICh1cmxzIHx8IFtdKS5tYXAoYXN5bmMgKHVybCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEdldCBKU09OXG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHRoaXMubmV0d29yay5mZXRjaCh1cmwpO1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRlZCBKU09OIGZyb20gJHt1cmx9YCwganNvbik7XG4gICAgICAgICAgaWYgKEpzb25GZWVkVXRpbHMuaXNKc29uRmVlZChqc29uKSkge1xuICAgICAgICAgICAgLy8gTWlncmF0ZSBvbGQgdmVyc2lvblxuICAgICAgICAgICAgbGV0IGZlZWQgPSBKc29uRmVlZFV0aWxzLm1pZ3JhdGVGZWVkKGpzb24pO1xuXG4gICAgICAgICAgICAvLyBSZXNvbHZlIGl0ZW1zIChlLmcuIHVzaW5nIGZlZWQubmV4dF91cmwpXG4gICAgICAgICAgICBmZWVkID0gYXdhaXQgdGhpcy5yZXNvbHZlRmVlZEl0ZW1zKGZlZWQsIHsgLi4ub3B0cywgZGVwdGg6IG9wdHM/LmRlcHRoID8/IDAgfSk7XG5cbiAgICAgICAgICAgIC8vIFRydW5jYXRlIGh0bWxcbiAgICAgICAgICAgIEpzb25GZWVkVXRpbHMudHJ1bmNhdGVGZWVkSXRlbXNIdG1sKGZlZWQsIG9wdHMpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNOb3RFbXB0eUFycmF5KGZlZWQ/Lml0ZW1zKSA/IFtmZWVkXSA6IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdldCBkaXNjb3Vyc2VcbiAgICAgICAgICBpZiAoRGlzY291cnNlVXRpbHMuaXNEaXNjb3Vyc2VPYmplY3QoanNvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuZ2V0T3JDcmVhdGVEaXNjb3Vyc2VBcGkodXJsKTtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBEaXNjb3Vyc2VVdGlscy5nZXRGZWVkc0J5VXJsKHVybCwgeyAuLi5vcHRzLCBhcGkgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycj8uc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fSBFcnJvciB3aGlsZSBmZXRjaGluZyBmZWVkIGF0ICR7dXJsfS4gNDA0IChOb3QgZm91bmQpYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fSBFcnJvciB3aGlsZSBmZXRjaGluZyBmZWVkIGF0ICR7dXJsfWAsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAob3B0cz8uY2xvc2VBcGlzICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5jbG9zZUFwaXMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gZmVlZHMuZmxhdCgpO1xuXG4gICAgcmV0dXJuIHsgZGF0YSwgdG90YWw6IGRhdGEubGVuZ3RoIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T3JDcmVhdGVEaXNjb3Vyc2VBcGkodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gRGlzY291cnNlVXRpbHMuZ2V0RGlzY291cnNlQmFzZVVybCh1cmwpO1xuICAgIGxldCBhcGkgPSB0aGlzLmRpc2NvdXJzZUFwaXMuZ2V0KGJhc2VVcmwpO1xuICAgIGlmICghYXBpKSB7XG4gICAgICBhcGkgPSBuZXcgRGlzY291cnNlQVBJKGJhc2VVcmwpO1xuICAgICAgdGhpcy5kaXNjb3Vyc2VBcGlzLnNldChiYXNlVXJsLCBhcGkpO1xuICAgIH1cbiAgICByZXR1cm4gYXBpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlQXBpcygpIHtcbiAgICB0aGlzLmRpc2NvdXJzZUFwaXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZXNvbHZlRmVlZEl0ZW1zKFxuICAgIGpzb246IEpzb25GZWVkLFxuICAgIG9wdHM/OiB7XG4gICAgICBtYXhDb250ZW50TGVuZ3RoPzogbnVtYmVyO1xuICAgICAgZGVwdGg/OiBudW1iZXI7XG4gICAgfVxuICApOiBQcm9taXNlPEpzb25GZWVkPiB7XG4gICAgaWYgKCFqc29uKSByZXR1cm4ganNvbjtcblxuICAgIC8vIExvYWQgaXRlbXNcbiAgICBpZiAoaXNFbXB0eUFycmF5KGpzb24uaXRlbXMpICYmIGlzTm90TmlsT3JCbGFuayhqc29uLm5leHRfdXJsKSkge1xuICAgICAgY29uc3QgZGVwdGggPSBvcHRzPy5kZXB0aCA/PyAwO1xuICAgICAgaWYgKGRlcHRoID49IDMpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1NYXggZGVwdGggcmVhY2hlZCAoJHtkZXB0aH0pIGZvciAke2pzb24uZmVlZF91cmx9YCk7XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIGl0ZW1zXG4gICAgICBjb25zdCBmZWVkID0gYXdhaXQgdGhpcy5sb2FkKGpzb24ubmV4dF91cmwsIHsgLi4ub3B0cywgY2xvc2VBcGlzOiBmYWxzZSwgZGVwdGg6IGRlcHRoICsgMSB9KTtcblxuICAgICAgaWYgKGlzRW1wdHlBcnJheShmZWVkPy5pdGVtcykpIHtcbiAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICB9XG5cbiAgICAgIC8vIE1lcmdlIHdpdGggdGhlIGlucHV0IGpzb25cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmpzb24sXG4gICAgICAgIHRpdGxlOiBqc29uLnRpdGxlID8/IGZlZWQudGl0bGUsXG4gICAgICAgIGhvbWVfcGFnZV91cmw6IGpzb24uaG9tZV9wYWdlX3VybCA/PyBmZWVkLmhvbWVfcGFnZV91cmwsXG4gICAgICAgIGF1dGhvcnM6IGlzTm90RW1wdHlBcnJheShqc29uLmF1dGhvcnMpID8ganNvbi5hdXRob3JzIDogZmVlZC5hdXRob3JzLFxuICAgICAgICBpdGVtczogZmVlZC5pdGVtcyxcbiAgICAgICAgdGFnX3RlbXBsYXRlOiBqc29uLnRhZ190ZW1wbGF0ZSA/PyBmZWVkLnRhZ190ZW1wbGF0ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cbiJdfQ==