@valtimo/components 12.29.0 → 12.31.0

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.
@@ -124,6 +124,7 @@ export class CarbonListComponent {
124
124
  this.rowClicked = new EventEmitter();
125
125
  this.paginationClicked = new EventEmitter();
126
126
  this.paginationSet = new EventEmitter();
127
+ // eslint-disable-next-line @angular-eslint/no-output-native
127
128
  this.search = new EventEmitter();
128
129
  this.sortChanged = new EventEmitter();
129
130
  this.moveRow = new EventEmitter();
@@ -600,4 +601,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
600
601
  }], itemsReordered: [{
601
602
  type: Output
602
603
  }] } });
603
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYXJib24tbGlzdC9jYXJib24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhcmJvbi1saXN0L2NhcmJvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2xGLE9BQU8sRUFLTCxLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLEdBQUcsRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FB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QUMsaUJBQWlCO2dCQUNGLE1BQU07c0JBQS9CLFNBQVM7dUJBQUMsS0FBSztnQkFjSCxLQUFLO3NCQUFqQixLQUFLO2dCQVFPLE1BQU07c0JBQWxCLEtBQUs7Z0JBUU8saUJBQWlCO3NCQUE3QixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0ssVUFBVTtzQkFEcEIsS0FBSztnQkF1QkcsT0FBTztzQkFBZixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRU8sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQU9PLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBSUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QXJyb3dEb3duMTYsIEFycm93VXAxNiwgRHJhZ2dhYmxlMTYsIFNldHRpbmdzVmlldzE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1NvcnRTdGF0ZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtcbiAgSWNvblNlcnZpY2UsXG4gIE92ZXJmbG93TWVudSxcbiAgUGFnaW5hdGlvbk1vZGVsLFxuICBQYWdpbmF0aW9uVHJhbnNsYXRpb25zLFxuICBUYWJsZSxcbiAgVGFibGVIZWFkZXJJdGVtLFxuICBUYWJsZUl0ZW0sXG4gIFRhYmxlTW9kZWwsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtnZXQgYXMgX2dldCwgaXNBcnJheX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtCT09MRUFOX0NPTlZFUlRFUl9WQUxVRVMsIENBU0VTX1dJVEhPVVRfU1RBVFVTX0tFWX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RCYXRjaFRleHQsXG4gIENhcmJvbkxpc3RJdGVtLFxuICBDYXJib25MaXN0VHJhbnNsYXRpb25zLFxuICBDYXJib25QYWdpbmF0b3JDb25maWcsXG4gIENhcmJvblRhZyxcbiAgQ29sdW1uQ29uZmlnLFxuICBERUZBVUxUX0xJU1RfVFJBTlNMQVRJT05TLFxuICBERUZBVUxUX1BBR0lOQVRJT04sXG4gIERFRkFVTFRfUEFHSU5BVE9SX0NPTkZJRyxcbiAgTW92ZVJvd0RpcmVjdGlvbixcbiAgTW92ZVJvd0V2ZW50LFxuICBQYWdpbmF0aW9uLFxuICBUQUdfRUxMSVBTSVNfTElNSVQsXG4gIFZpZXdUeXBlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtFbGxpcHNpc1BpcGV9IGZyb20gJy4uLy4uL3BpcGVzJztcbmltcG9ydCB7S2V5U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9rZXktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdDb250ZW50U2VydmljZX0gZnJvbSAnLi4vdmlldy1jb250ZW50L3ZpZXctY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7Q2FyYm9uTGlzdEZpbHRlclBpcGV9IGZyb20gJy4vQ2FyYm9uTGlzdEZpbHRlclBpcGUuZGlyZWN0aXZlJztcbmltcG9ydCB7Q2FyYm9uTGlzdERyYWdBbmREcm9wU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tY2FyYm9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyYm9uLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJib24tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbQ2FyYm9uTGlzdEZpbHRlclBpcGUsIENhcmJvbkxpc3REcmFnQW5kRHJvcFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJib25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdhY3Rpb25zTWVudVRlbXBsYXRlJykgYWN0aW9uc01lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8T3ZlcmZsb3dNZW51PjtcbiAgQFZpZXdDaGlsZCgnYWN0aW9uVGVtcGxhdGUnKSBhY3Rpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnYm9vbGVhblRlbXBsYXRlJykgYm9vbGVhblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb3ZlUm93c1RlbXBsYXRlJykgbW92ZVJvd3NUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnZHJhZ0FuZERyb3BUZW1wbGF0ZScpIGRyYWdBbmREcm9wVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3Jvd0Rpc2FibGVkJykgcm93RGlzYWJsZWQ6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RhZ1RlbXBsYXRlJykgdGFnVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRUZW1wbGF0ZScpIGRlZmF1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZChUYWJsZSkgcHJpdmF0ZSBfdGFibGU6IFRhYmxlO1xuXG4gIHByaXZhdGUgX2NvbXBsZXRlRGF0YVNvdXJjZTogVGFibGVJdGVtW11bXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcmJvbkxpc3RJdGVtW10+KFtdKTtcblxuICBwcml2YXRlIGdldCBfaXRlbXMoKTogQ2FyYm9uTGlzdEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtcygpOiBDYXJib25MaXN0SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IENhcmJvbkxpc3RJdGVtW10pIHtcbiAgICB0aGlzLl9pdGVtcyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY3VycmVudE9wZW5BY3Rpb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmllbGRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29sdW1uQ29uZmlnW10+KFtdKTtcblxuICBASW5wdXQoKSBzZXQgZmllbGRzKHZhbHVlOiBDb2x1bW5Db25maWdbXSkge1xuICAgIHRoaXMuX2ZpZWxkcyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF90YWJsZVRyYW5zbGF0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0VHJhbnNsYXRpb25zPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXG4gICAgREVGQVVMVF9MSVNUX1RSQU5TTEFUSU9OU1xuICApO1xuXG4gIEBJbnB1dCgpIHNldCB0YWJsZVRyYW5zbGF0aW9ucyh2YWx1ZTogUGFydGlhbDxDYXJib25MaXN0VHJhbnNsYXRpb25zPikge1xuICAgIHRoaXMuX3RhYmxlVHJhbnNsYXRpb25zJC5uZXh0KHsuLi5ERUZBVUxUX0xJU1RfVFJBTlNMQVRJT05TLCAuLi52YWx1ZX0pO1xuICB9XG5cbiAgQElucHV0KCkgcGFnaW5hdG9yQ29uZmlnOiBDYXJib25QYWdpbmF0b3JDb25maWcgPSBERUZBVUxUX1BBR0lOQVRPUl9DT05GSUc7XG4gIHByaXZhdGUgX3BhZ2luYXRpb246IFBhZ2luYXRpb247XG4gIHByaXZhdGUgX2lzUGFnaW5hdGlvbkluaXQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhZ2luYXRpb24odmFsdWU6IFBhcnRpYWw8UGFnaW5hdGlvbj4gfCBmYWxzZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3BhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMuX3BhZ2luYXRpb24gPSB7Li4uREVGQVVMVF9QQUdJTkFUSU9OLCAuLi52YWx1ZX07XG4gICAgfVxuXG4gICAgdGhpcy5fcGFnaW5hdGlvbiA9IHsuLi50aGlzLl9wYWdpbmF0aW9uLCAuLi52YWx1ZX07XG4gICAgdGhpcy5idWlsZFBhZ2luYXRpb25Nb2RlbCgpO1xuXG4gICAgaWYgKHRoaXMuX2lzUGFnaW5hdGlvbkluaXQgfHwgIXZhbHVlLnNpemUpIHJldHVybjtcblxuICAgIHRoaXMuc2V0UGFnaW5hdGlvblNpemUodmFsdWUuc2l6ZS50b1N0cmluZygpKTtcbiAgICB0aGlzLl9pc1BhZ2luYXRpb25Jbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnaW5hdGlvbigpOiBQYWdpbmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnaW5hdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBhY3Rpb25zIGZpZWxkIGlzIGRlcHJlY2F0ZWQuIEFjdGlvbnMgY2FuIGJlIGFkZGVkIHRocm91Z2ggdGhlICoqQElucHV0IGZpZWxkKiouXG4gICAqL1xuICBASW5wdXQoKSBhY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdO1xuICBASW5wdXQoKSBoZWFkZXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpZGVDb2x1bW5IZWFkZXI6IGJvb2xlYW47XG4gIHByaXZhdGUgX2lzU29ydEluaXQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IGluaXRpYWxTb3J0U3RhdGUodmFsdWU6IFNvcnRTdGF0ZSkge1xuICAgIGlmICghdmFsdWUgfHwgdGhpcy5faXNTb3J0SW5pdCkgcmV0dXJuO1xuXG4gICAgdGhpcy5faXNTb3J0SW5pdCA9IHRydWU7XG4gICAgdGhpcy5zb3J0JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzb3J0U3RhdGUodmFsdWU6IFNvcnRTdGF0ZSkge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICB0aGlzLnNvcnQkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCkgaXNTZWFyY2hhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZVNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhlIGxhc3RDb2x1bW5UZW1wbGF0ZSBmaWVsZCBpcyBkZXByZWNhdGVkLiBBbnkgdGVtcGxhdGUgY29sdW1uIGNhbiBiZSBhZGRlZCB0aHJvdWdoIHRoZSAqKkBJbnB1dCBmaWVsZCoqLlxuICAgKi9cbiAgQElucHV0KCkgbGFzdENvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBwYWdpbmF0aW9uSWRlbnRpZmllcjogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93U2VsZWN0aW9uQ29sdW1uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0cmlwZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZVRvb2xiYXIgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9ja2VkVG9vbHRpcFRyYW5zbGF0aW9uS2V5ID0gJyc7XG4gIEBJbnB1dCgpIG1vdmluZ1Jvd3NFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBkcmFnQW5kRHJvcCA9IGZhbHNlO1xuICBASW5wdXQoKSBkcmFnQW5kRHJvcERpc2FibGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHJvd0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRpb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uU2V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0U3RhdGU+KCk7XG4gIEBPdXRwdXQoKSBtb3ZlUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3ZlUm93RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBpdGVtc1Jlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyYm9uTGlzdEl0ZW1bXT4oKTtcblxuICBwdWJsaWMgYmF0Y2hUZXh0JDogT2JzZXJ2YWJsZTxDYXJib25MaXN0QmF0Y2hUZXh0PiA9IHRoaXMuX3RhYmxlVHJhbnNsYXRpb25zJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodHJhbnNsYXRpb25zOiBDYXJib25MaXN0VHJhbnNsYXRpb25zKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0odHJhbnNsYXRpb25zLnNlbGVjdC5zaW5nbGUpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKHRyYW5zbGF0aW9ucy5zZWxlY3QubXVsdGlwbGUpLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRyYW5zbGF0aW9ucy5zZWxlY3Quc2luZ2xlKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0cmFuc2xhdGlvbnMuc2VsZWN0Lm11bHRpcGxlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBtYXAoKFtTSU5HTEUsIE1VTFRJUExFXSkgPT4gKHtTSU5HTEUsIE1VTFRJUExFfSkpXG4gICk7XG5cbiAgcHVibGljIHBhZ2luYXRpb25UcmFuc2xhdGlvbnMkOiBPYnNlcnZhYmxlPFBhcnRpYWw8UGFnaW5hdGlvblRyYW5zbGF0aW9ucz4+ID1cbiAgICB0aGlzLl90YWJsZVRyYW5zbGF0aW9ucyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodHJhbnNsYXRpb25zOiBDYXJib25MaXN0VHJhbnNsYXRpb25zKSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKHRyYW5zbGF0aW9ucy5wYWdpbmF0aW9uLml0ZW1zUGVyUGFnZSksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSh0cmFuc2xhdGlvbnMucGFnaW5hdGlvbi50b3RhbEl0ZW0pLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0odHJhbnNsYXRpb25zLnBhZ2luYXRpb24udG90YWxJdGVtcyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnaW50ZXJmYWNlLmxpc3Qub2ZMYXN0UGFnZScpLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2ludGVyZmFjZS5saXN0Lm9mTGFzdFBhZ2VzJyksXG4gICAgICAgIF0pXG4gICAgICApLFxuICAgICAgbWFwKChbSVRFTVNfUEVSX1BBR0UsIFRPVEFMX0lURU0sIFRPVEFMX0lURU1TLCBPRl9MQVNUX1BBR0UsIE9GX0xBU1RfUEFHRVNdKSA9PiAoe1xuICAgICAgICBJVEVNU19QRVJfUEFHRSxcbiAgICAgICAgVE9UQUxfSVRFTSxcbiAgICAgICAgVE9UQUxfSVRFTVMsXG4gICAgICAgIE9GX0xBU1RfUEFHRSxcbiAgICAgICAgT0ZfTEFTVF9QQUdFUyxcbiAgICAgIH0pKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNvcnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTb3J0U3RhdGU+KHtcbiAgICBzdGF0ZToge25hbWU6ICcnLCBkaXJlY3Rpb246ICdERVNDJ30sXG4gICAgaXNTb3J0aW5nOiBmYWxzZSxcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSB0YWdNb2RhbE9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSB0YWdNb2RhbERhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25UYWdbXT4oW10pO1xuXG4gIHB1YmxpYyByZWFkb25seSBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVkgPSBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVk7XG4gIHB1YmxpYyByZWFkb25seSBWaWV3VHlwZSA9IFZpZXdUeXBlO1xuICBwdWJsaWMgc2tlbGV0b25Nb2RlbCA9IFRhYmxlLnNrZWxldG9uTW9kZWwoNSwgNSk7XG4gIHB1YmxpYyBwYWdpbmF0aW9uTW9kZWw6IFBhZ2luYXRpb25Nb2RlbDtcbiAgcHVibGljIHNlYXJjaEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBQQUdJTkFUSU9OX1NJWkUgPSAnUGFnaW5hdGlvblNpemUnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtcygpOiBDYXJib25MaXN0SXRlbVtdIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuX3RhYmxlLm1vZGVsO1xuXG4gICAgcmV0dXJuIG1vZGVsLmRhdGEucmVkdWNlKFxuICAgICAgKGl0ZW1zOiBDYXJib25MaXN0SXRlbVtdLCBfLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICBtb2RlbC5pc1Jvd1NlbGVjdGVkKGluZGV4KSA/IFsuLi5pdGVtcywgdGhpcy5pdGVtc1tpbmRleF1dIDogWy4uLml0ZW1zXSxcbiAgICAgIFtdXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdJbml0aWFsaXplZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgZ2V0IHZpZXdJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdJbml0aWFsaXplZCQucGlwZShmaWx0ZXIoaW5pdGlhbGl6ZWQgPT4gaW5pdGlhbGl6ZWQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZWwoKTogVGFibGVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlLm1vZGVsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGxpcHNpc1BpcGU6IEVsbGlwc2lzUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclBpcGU6IENhcmJvbkxpc3RGaWx0ZXJQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRlbnRTZXJ2aWNlOiBWaWV3Q29udGVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlTdGF0ZVNlcnZpY2U6IEtleVN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWdBbmREcm9wU2VydmljZTogQ2FyYm9uTGlzdERyYWdBbmREcm9wU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbQXJyb3dEb3duMTYsIEFycm93VXAxNiwgU2V0dGluZ3NWaWV3MTYsIERyYWdnYWJsZTE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5sb2FkUGFnaW5hdGlvblNpemUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApKVxuICAgICAgICAuc3Vic2NyaWJlKChzZWFyY2hTdHJpbmc6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2gub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoLmVtaXQoc2VhcmNoU3RyaW5nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXNlYXJjaFN0cmluZykge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRJdGVtcyQubmV4dChudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zJC5uZXh0KFxuICAgICAgICAgICAgdGhpcy5maWx0ZXJQaXBlLnRyYW5zZm9ybSh0aGlzLl9jb21wbGV0ZURhdGFTb3VyY2UsIHNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdJbml0aWFsaXplZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLm9wZW5EcmFnQW5kRHJvcFN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRHJhZ0FuZERyb3BTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmRyYWdBbmREcm9wU2VydmljZS5kcmFnQW5kRHJvcEV2ZW50cyQuc3Vic2NyaWJlKGRyYWdBbmREcm9wRXZlbnQgPT4ge1xuICAgICAgICBjb25zdCByZW9yZGVyZWRJdGVtcyA9IHRoaXMuc3dhcEl0ZW1zKFxuICAgICAgICAgIHRoaXMuX2l0ZW1zLFxuICAgICAgICAgIGRyYWdBbmREcm9wRXZlbnQuc3RhcnRJbmRleCxcbiAgICAgICAgICBkcmFnQW5kRHJvcEV2ZW50Lm5ld0luZGV4XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXRlbXNSZW9yZGVyZWQuZW1pdChyZW9yZGVyZWRJdGVtcyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dDbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgcm93RGF0YSA9IHRoaXMuX3RhYmxlLm1vZGVsLmRhdGFbaW5kZXhdO1xuICAgIGNvbnN0IGZpcnN0SXRlbVdpdGhEYXRhID0gcm93RGF0YS5maW5kKGl0ZW0gPT4gISFpdGVtWydpdGVtJ10pO1xuICAgIGNvbnN0IGZpcnN0SXRlbSA9IGZpcnN0SXRlbVdpdGhEYXRhPy5bJ2l0ZW0nXTtcblxuICAgIGlmIChmaXJzdEl0ZW0pIGZpcnN0SXRlbS5jdHJsQ2xpY2sgPSB0aGlzLmtleVN0YXRlU2VydmljZS5nZXRDdHJsT3JDbWRTdGF0ZSgpO1xuXG4gICAgaWYgKCFmaXJzdEl0ZW0gfHwgZmlyc3RJdGVtPy5sb2NrZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yb3dDbGlja2VkLmVtaXQoZmlyc3RJdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdFBhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBhZ2luYXRpb25Nb2RlbC5wYWdlTGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbi5zaXplICE9PSB0aGlzLnBhZ2luYXRpb25Nb2RlbC5wYWdlTGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplKHRoaXMucGFnaW5hdGlvbk1vZGVsLnBhZ2VMZW5ndGgudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYWdpbmF0aW9uQ2xpY2tlZC5lbWl0KHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIG9uU29ydChoZWFkZXJJdGVtOiBUYWJsZUhlYWRlckl0ZW0gJiB7a2V5OiBzdHJpbmd9KTogdm9pZCB7XG4gICAgY29uc3Qge2tleSwgc29ydGFibGV9ID0gaGVhZGVySXRlbTtcbiAgICBpZiAoIXNvcnRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzb3J0ID0+IHtcbiAgICAgIGxldCBuZXdTdGF0ZTogU29ydFN0YXRlO1xuXG4gICAgICBpZiAoc29ydC5zdGF0ZS5uYW1lID09PSBrZXkpIHtcbiAgICAgICAgaWYgKCFzb3J0LmlzU29ydGluZykge1xuICAgICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiAnREVTQyd9LCBpc1NvcnRpbmc6IHRydWV9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzb3J0LnN0YXRlLmRpcmVjdGlvbiA9PT0gJ0RFU0MnKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHsuLi5zb3J0LCBzdGF0ZTogey4uLnNvcnQuc3RhdGUsIGRpcmVjdGlvbjogJ0FTQyd9fTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246ICdERVNDJ30sIGlzU29ydGluZzogZmFsc2V9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHtuYW1lOiBrZXksIGRpcmVjdGlvbjogJ0RFU0MnfSwgaXNTb3J0aW5nOiB0cnVlfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zb3J0JC5uZXh0KG5ld1N0YXRlKTtcbiAgICAgIHRoaXMuc29ydENoYW5nZWQuZW1pdChuZXdTdGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25EcmFnU3RhcnQoXG4gICAgbW91c2VFdmVudDogTW91c2VFdmVudCxcbiAgICBjYXJib25FdmVudDoge2luZGV4OiBudW1iZXI7IGl0ZW06IENhcmJvbkxpc3RJdGVtOyBsZW5ndGg6IG51bWJlcn1cbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5kcmFnQW5kRHJvcFNlcnZpY2Uuc2V0Q2FyYm9uTGlzdEVsZW1lbnRSZWYodGhpcy5lbGVtZW50UmVmKTtcbiAgICB0aGlzLmRyYWdBbmREcm9wU2VydmljZS5zdGFydERyYWcobW91c2VFdmVudC55LCBjYXJib25FdmVudC5pbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGFnaW5hdGlvbk1vZGVsKCk6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdGlvbk1vZGVsID0ge1xuICAgICAgY3VycmVudFBhZ2U6IHRoaXMucGFnaW5hdGlvbi5wYWdlLFxuICAgICAgdG90YWxEYXRhTGVuZ3RoOiArdGhpcy5wYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplLFxuICAgICAgcGFnZUxlbmd0aDogdGhpcy5wYWdpbmF0aW9uLnNpemUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zbGF0ZWRGaWVsZHMkOiBPYnNlcnZhYmxlPENvbHVtbkNvbmZpZ1tdPiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2ZpZWxkcyQpLFxuICAgIGZpbHRlcigoZmllbGRzOiBDb2x1bW5Db25maWdbXSkgPT4gISFmaWVsZHMpLFxuICAgIG1hcCgoZmllbGRzOiBDb2x1bW5Db25maWdbXSkgPT5cbiAgICAgIGZpZWxkcy5tYXAoKGZpZWxkOiBDb2x1bW5Db25maWcpID0+ICh7XG4gICAgICAgIC4uLmZpZWxkLFxuICAgICAgICBsYWJlbDogIWZpZWxkLmxhYmVsID8gJycgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmaWVsZC5sYWJlbCksXG4gICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSBfaGVhZGVySXRlbXMkOiBPYnNlcnZhYmxlPFRhYmxlSGVhZGVySXRlbVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3RyYW5zbGF0ZWRGaWVsZHMkLFxuICAgIHRoaXMuc29ydCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbdHJhbnNsYXRlZEZpZWxkcywgc29ydFN0YXRlXSkgPT5cbiAgICAgIHRyYW5zbGF0ZWRGaWVsZHMubWFwKFxuICAgICAgICAoZmllbGQ6IENvbHVtbkNvbmZpZykgPT5cbiAgICAgICAgICBuZXcgVGFibGVIZWFkZXJJdGVtKHtcbiAgICAgICAgICAgIGRhdGE6IGZpZWxkLmxhYmVsLFxuICAgICAgICAgICAgc29ydGFibGU6IGZpZWxkLnNvcnRhYmxlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBmaWVsZC5jbGFzc05hbWUsXG4gICAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICAgIHNvcnRlZDogc29ydFN0YXRlLmlzU29ydGluZyAmJiBmaWVsZC5rZXkgPT09IHNvcnRTdGF0ZS5zdGF0ZS5uYW1lLFxuICAgICAgICAgICAgYXNjZW5kaW5nOiBmaWVsZC5rZXkgPT09IHNvcnRTdGF0ZS5zdGF0ZS5uYW1lICYmIHNvcnRTdGF0ZS5zdGF0ZS5kaXJlY3Rpb24gPT09ICdBU0MnLFxuICAgICAgICAgIH0pXG4gICAgICApXG4gICAgKSxcbiAgICBtYXAoKGhlYWRlcjogVGFibGVIZWFkZXJJdGVtW10pID0+IFtcbiAgICAgIC4uLnRoaXMuZHJhZ0FuZERyb3BIZWFkZXJDb2x1bW5zLFxuICAgICAgLi4uaGVhZGVyLFxuICAgICAgLi4udGhpcy5leHRyYUNvbHVtbnMsXG4gICAgXSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZUl0ZW1zJDogT2JzZXJ2YWJsZTxUYWJsZUl0ZW1bXVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2ZpZWxkcyQsXG4gICAgdGhpcy5faXRlbXMkLFxuICAgIHRoaXMuX3ZpZXdJbml0aWFsaXplZCQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbZmllbGRzLCBpdGVtcywgdmlld0luaXRpYWxpemVkXSkgPT4gISFmaWVsZHMgJiYgISFpdGVtcyAmJiB2aWV3SW5pdGlhbGl6ZWQpLFxuICAgIG1hcCgoW2ZpZWxkcywgaXRlbXNdKSA9PlxuICAgICAgaXRlbXMubWFwKChpdGVtOiBDYXJib25MaXN0SXRlbSwgaW5kZXg6IG51bWJlcikgPT4gW1xuICAgICAgICAuLi50aGlzLmdldERyYWdBbmREcm9wSXRlbXNJdGVtcyhpdGVtLCBpbmRleCwgaXRlbXMubGVuZ3RoKSxcbiAgICAgICAgLi4uZmllbGRzLm1hcCgoZmllbGQ6IENvbHVtbkNvbmZpZykgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQudmlld1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVmlld1R5cGUuVEVNUExBVEU6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7aXRlbSwgaW5kZXgsIGxlbmd0aDogaXRlbXMubGVuZ3RoLCAuLi5maWVsZC50ZW1wbGF0ZURhdGF9LFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiBmaWVsZC50ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlIFZpZXdUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5yZXNvbHZlT2JqZWN0KGZpZWxkLCBpdGVtKTtcbiAgICAgICAgICAgICAgZGF0YSA9ICFCT09MRUFOX0NPTlZFUlRFUl9WQUxVRVMuaW5jbHVkZXMoZGF0YSlcbiAgICAgICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgICAgICA6IGAkeyd2aWV3VHlwZUNvbnZlcnRlci4nICsgZGF0YX1gO1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IFRhYmxlSXRlbSh7XG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5ib29sZWFuVGVtcGxhdGUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2FzZSBWaWV3VHlwZS5UQUdTOiB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICB0YWdzOiB0aGlzLnJlc29sdmVUYWdPYmplY3QoaXRlbSwgZmllbGQua2V5KSxcbiAgICAgICAgICAgICAgICAgIHRhZ0Ftb3VudDogZmllbGQ/LnRhZ0Ftb3VudCB8fCAxLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMudGFnVGVtcGxhdGUsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRPYmplY3Q6IHN0cmluZyA9IHRoaXMucmVzb2x2ZU9iamVjdChmaWVsZCwgaXRlbSk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVzb2x2ZWRPYmplY3QgPz8gJy0nLFxuICAgICAgICAgICAgICAgIGRhdGE6XG4gICAgICAgICAgICAgICAgICAoZmllbGQudG9vbHRpcENoYXJMaW1pdFxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZWxsaXBzaXNQaXBlLnRyYW5zZm9ybShyZXNvbHZlZE9iamVjdCwgZmllbGQudG9vbHRpcENoYXJMaW1pdClcbiAgICAgICAgICAgICAgICAgICAgOiByZXNvbHZlZE9iamVjdCkgPz8gJy0nLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLmRlZmF1bHRUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICAuLi50aGlzLmdldEV4dHJhSXRlbXMoaXRlbSwgaW5kZXgsIGl0ZW1zLmxlbmd0aCksXG4gICAgICBdKVxuICAgICksXG4gICAgdGFwKChkYXRhOiBUYWJsZUl0ZW1bXVtdKSA9PiB7XG4gICAgICB0aGlzLl9jb21wbGV0ZURhdGFTb3VyY2UgPSBkYXRhO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyZWRJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlSXRlbVtdW10gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW9kZWwkOiBPYnNlcnZhYmxlPFRhYmxlTW9kZWw+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5faGVhZGVySXRlbXMkLFxuICAgIHRoaXMuX3RhYmxlSXRlbXMkLFxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2hlYWRlciwgZGF0YSwgZmlsdGVyZWREYXRhXSkgPT4ge1xuICAgICAgY29uc3QgbW9kZWwgPSBuZXcgVGFibGVNb2RlbCgpO1xuICAgICAgbW9kZWwuaGVhZGVyID0gaGVhZGVyO1xuICAgICAgbW9kZWwuZGF0YSA9IGZpbHRlcmVkRGF0YSA/PyBkYXRhO1xuICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH0pLFxuICAgIHN0YXJ0V2l0aChuZXcgVGFibGVNb2RlbCgpKVxuICApO1xuXG4gIHByaXZhdGUgZ2V0IGRyYWdBbmREcm9wSGVhZGVyQ29sdW1ucygpOiBUYWJsZUhlYWRlckl0ZW1bXSB7XG4gICAgY29uc3QgZW1wdHlIZWFkZXIgPSBuZXcgVGFibGVIZWFkZXJJdGVtKCk7XG5cbiAgICBlbXB0eUhlYWRlci5zb3J0YWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLih0aGlzLmRyYWdBbmREcm9wXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFRhYmxlSGVhZGVySXRlbSh7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhbHRpbW8tY2FyYm9uLWxpc3RfX2FjdGlvbnMnLFxuICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdldCBleHRyYUNvbHVtbnMoKTogVGFibGVIZWFkZXJJdGVtW10ge1xuICAgIGNvbnN0IGVtcHR5SGVhZGVyID0gbmV3IFRhYmxlSGVhZGVySXRlbSgpO1xuXG4gICAgZW1wdHlIZWFkZXIuc29ydGFibGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBbXG4gICAgICAuLi4odGhpcy5tb3ZpbmdSb3dzRW5hYmxlZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBUYWJsZUhlYWRlckl0ZW0oe1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YWx0aW1vLWNhcmJvbi1saXN0X19hY3Rpb25zJyxcbiAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLighIXRoaXMuYWN0aW9uc1xuICAgICAgICA/IHRoaXMuYWN0aW9ucy5tYXAoXG4gICAgICAgICAgICBhY3Rpb24gPT5cbiAgICAgICAgICAgICAgbmV3IFRhYmxlSGVhZGVySXRlbSh7XG4gICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uLmNvbHVtbk5hbWUsXG4gICAgICAgICAgICAgICAga2V5OiBhY3Rpb24uY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLighIXRoaXMubGFzdENvbHVtblRlbXBsYXRlID8gW2VtcHR5SGVhZGVyXSA6IFtdKSxcbiAgICAgIC4uLih0aGlzLl9pdGVtcz8uc29tZShpdGVtID0+IGl0ZW0ubG9ja2VkKSA/IFtlbXB0eUhlYWRlcl0gOiBbXSksXG4gICAgICAuLi4oISF0aGlzLmFjdGlvbkl0ZW1zXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFRhYmxlSGVhZGVySXRlbSh7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhbHRpbW8tY2FyYm9uLWxpc3RfX2FjdGlvbnMnLFxuICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgb25Nb3ZlRG93bkNsaWNrKFxuICAgIGV2ZW50OiBFdmVudCxcbiAgICBkYXRhOiB7aW5kZXg6IG51bWJlcjsgaXRlbTogQ2FyYm9uTGlzdEl0ZW07IGxlbmd0aDogbnVtYmVyfVxuICApOiB2b2lkIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IG1vdmVSb3dFdmVudCA9IHtcbiAgICAgIGRpcmVjdGlvbjogTW92ZVJvd0RpcmVjdGlvbi5ET1dOLFxuICAgICAgaW5kZXg6IGRhdGEuaW5kZXgsXG4gICAgfTtcbiAgICBjb25zdCBvcmRlcmVkSXRlbXMgPSB0aGlzLnN3YXBJdGVtcyh0aGlzLl9pdGVtcywgbW92ZVJvd0V2ZW50LmluZGV4LCBtb3ZlUm93RXZlbnQuaW5kZXggKyAxKTtcblxuICAgIHRoaXMubW92ZVJvdy5lbWl0KG1vdmVSb3dFdmVudCk7XG4gICAgdGhpcy5pdGVtc1Jlb3JkZXJlZC5lbWl0KG9yZGVyZWRJdGVtcyk7XG4gIH1cblxuICBwdWJsaWMgb25Nb3ZlVXBDbGljayhcbiAgICBldmVudDogRXZlbnQsXG4gICAgZGF0YToge2luZGV4OiBudW1iZXI7IGl0ZW06IENhcmJvbkxpc3RJdGVtOyBsZW5ndGg6IG51bWJlcn1cbiAgKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCBtb3ZlUm93RXZlbnQgPSB7XG4gICAgICBkaXJlY3Rpb246IE1vdmVSb3dEaXJlY3Rpb24uVVAsXG4gICAgICBpbmRleDogZGF0YS5pbmRleCxcbiAgICB9O1xuICAgIGNvbnN0IG9yZGVyZWRJdGVtcyA9IHRoaXMuc3dhcEl0ZW1zKHRoaXMuX2l0ZW1zLCBtb3ZlUm93RXZlbnQuaW5kZXggLSAxLCBtb3ZlUm93RXZlbnQuaW5kZXgpO1xuXG4gICAgdGhpcy5tb3ZlUm93LmVtaXQobW92ZVJvd0V2ZW50KTtcbiAgICB0aGlzLml0ZW1zUmVvcmRlcmVkLmVtaXQob3JkZXJlZEl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhZ0NsaWNrKGV2ZW50OiBFdmVudCwgdGFnczogQ2FyYm9uVGFnW10pOiB2b2lkIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRhZ01vZGFsT3BlbiQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnRhZ01vZGFsRGF0YSQubmV4dCh0YWdzKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy50YWdNb2RhbE9wZW4kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUFjdGlvbk9wZW5DaGFuZ2UoYWN0aW9uSWQ6IHN0cmluZywgaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzT3Blbikge1xuICAgICAgdGhpcy5jdXJyZW50T3BlbkFjdGlvbklkID0gYWN0aW9uSWQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRPcGVuQWN0aW9uSWQgPT09IGFjdGlvbklkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRPcGVuQWN0aW9uSWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHJhZ0FuZERyb3BJdGVtc0l0ZW1zKFxuICAgIGl0ZW06IENhcmJvbkxpc3RJdGVtLFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgbGVuZ3RoOiBudW1iZXJcbiAgKTogVGFibGVJdGVtW10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi4oISF0aGlzLmRyYWdBbmREcm9wXG4gICAgICAgID8gW25ldyBUYWJsZUl0ZW0oe2RhdGE6IHtpdGVtLCBpbmRleCwgbGVuZ3RofSwgdGVtcGxhdGU6IHRoaXMuZHJhZ0FuZERyb3BUZW1wbGF0ZX0pXVxuICAgICAgICA6IFtdKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHRyYUl0ZW1zKGl0ZW06IENhcmJvbkxpc3RJdGVtLCBpbmRleDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IFRhYmxlSXRlbVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uKCEhdGhpcy5hY3Rpb25zXG4gICAgICAgID8gdGhpcy5hY3Rpb25zLm1hcChcbiAgICAgICAgICAgIGFjdGlvbiA9PlxuICAgICAgICAgICAgICBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7aXRlbSwgY2FsbGJhY2s6IGFjdGlvbi5jYWxsYmFjaywgaWNvbkNsYXNzOiBhY3Rpb24uaWNvbkNsYXNzfSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5hY3Rpb25UZW1wbGF0ZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuX2l0ZW1zPy5zb21lKHRhYmxlSXRlbSA9PiB0YWJsZUl0ZW0ubG9ja2VkKVxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICBkYXRhOiB7bG9ja2VkOiBpdGVtLmxvY2tlZH0sXG4gICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLnJvd0Rpc2FibGVkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLighIXRoaXMubGFzdENvbHVtblRlbXBsYXRlXG4gICAgICAgID8gW25ldyBUYWJsZUl0ZW0oe2RhdGE6IHtpdGVtLCBpbmRleCwgbGVuZ3RofSwgdGVtcGxhdGU6IHRoaXMubGFzdENvbHVtblRlbXBsYXRlfSldXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMubW92aW5nUm93c0VuYWJsZWRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgZGF0YToge2l0ZW0sIGluZGV4LCBsZW5ndGh9LFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5tb3ZlUm93c1RlbXBsYXRlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLighIXRoaXMuYWN0aW9uSXRlbXNcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFsdGltby1jYXJib24tbGlzdF9fYWN0aW9ucycsXG4gICAgICAgICAgICAgIGRhdGE6IHthY3Rpb25zOiB0aGlzLmFjdGlvbkl0ZW1zLCBpdGVtfSxcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuYWN0aW9uc01lbnVUZW1wbGF0ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBhZ2luYXRpb25TaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgIGAke3RoaXMucGFnaW5hdGlvbklkZW50aWZpZXJ9JHtDYXJib25MaXN0Q29tcG9uZW50LlBBR0lOQVRJT05fU0laRX1gXG4gICAgKTtcbiAgICBpZiAoZW50cmllcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge3NpemU6ICtlbnRyaWVzfTtcbiAgICAgIHRoaXMucGFnaW5hdGlvblNldC5lbWl0KCtlbnRyaWVzKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdQYWdpbmF0aW9uIGxvYWRlZCBmcm9tIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdC4gQ3VycmVudDogJywgZW50cmllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAnUGFnaW5hdGlvbiBkb2VzIE5PVCBleGlzdCBpbiBsb2NhbCBzdG9yYWdlIGZvciB0aGlzIGxpc3QuIFdpbGwgdXNlIGRlZmF1bHQuIENoYW5nZSBpdCB0byBjcmVhdGUgYW4gZW50cnkuJ1xuICAgICAgKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvblNldC5lbWl0KDEwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFBhZ2luYXRpb25TaXplKG51bWJlck9mRW50cmllczogc3RyaW5nKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBgJHt0aGlzLnBhZ2luYXRpb25JZGVudGlmaWVyfSR7Q2FyYm9uTGlzdENvbXBvbmVudC5QQUdJTkFUSU9OX1NJWkV9YCxcbiAgICAgIG51bWJlck9mRW50cmllc1xuICAgICk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2luYXRpb24gc2V0IGluIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdDogJywgbnVtYmVyT2ZFbnRyaWVzKTtcbiAgICB0aGlzLnBhZ2luYXRpb25TZXQuZW1pdChudW1iZXJPZkVudHJpZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlT2JqZWN0KGRlZmluaXRpb246IGFueSwgb2JqOiBhbnkpIHtcbiAgICBjb25zdCBkZWZpbml0aW9uS2V5ID0gZGVmaW5pdGlvbi5rZXk7XG4gICAgY29uc3QgY3VzdG9tUHJvcFN0cmluZyA9ICckLic7XG4gICAgY29uc3Qga2V5ID0gZGVmaW5pdGlvbktleS5pbmNsdWRlcyhjdXN0b21Qcm9wU3RyaW5nKVxuICAgICAgPyBkZWZpbml0aW9uS2V5LnNwbGl0KGN1c3RvbVByb3BTdHJpbmcpWzFdXG4gICAgICA6IGRlZmluaXRpb25LZXk7XG4gICAgY29uc3QgcmVzb2x2ZWRPYmpWYWx1ZSA9IF9nZXQob2JqLCBrZXksIG51bGwpO1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZW50U2VydmljZS5nZXQocmVzb2x2ZWRPYmpWYWx1ZSwgZGVmaW5pdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHN3YXBJdGVtcyhpdGVtczogQ2FyYm9uTGlzdEl0ZW1bXSwgaW5kZXgxOiBudW1iZXIsIGluZGV4MjogbnVtYmVyKTogQ2FyYm9uTGlzdEl0ZW1bXSB7XG4gICAgY29uc3QgaXRlbVRvSW5zZXJ0ID0gaXRlbXNbaW5kZXgxXTtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IGluZGV4MSk7XG4gICAgZmlsdGVyZWRJdGVtcy5zcGxpY2UoaW5kZXgyLCAwLCBpdGVtVG9JbnNlcnQpO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkSXRlbXM7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUYWdPYmplY3QoaXRlbTogQ2FyYm9uTGlzdEl0ZW0sIGtleTogc3RyaW5nKTogQ2FyYm9uVGFnW10gfCBudWxsIHtcbiAgICBjb25zdCBvYmplY3Q6IHN0cmluZyB8IHN0cmluZ1tdIHwgQ2FyYm9uVGFnIHwgQ2FyYm9uVGFnW10gPSBpdGVtW2tleV07XG5cbiAgICBpZiAoIW9iamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAoaXNBcnJheShvYmplY3QpICYmIHR5cGVvZiBvYmplY3RbMF0gIT09ICdzdHJpbmcnKSByZXR1cm4gb2JqZWN0IGFzIENhcmJvblRhZ1tdO1xuXG4gICAgaWYgKCFpc0FycmF5KG9iamVjdCkgJiYgdHlwZW9mIG9iamVjdCAhPT0gJ3N0cmluZycpIHJldHVybiBbb2JqZWN0IGFzIENhcmJvblRhZ107XG5cbiAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpXG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgY29udGVudDogb2JqZWN0LFxuICAgICAgICAgIHR5cGU6ICdibHVlJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICByZXR1cm4gKG9iamVjdCBhcyBzdHJpbmdbXSkubWFwKChjb250ZW50OiBzdHJpbmcpID0+ICh7XG4gICAgICBjb250ZW50LFxuICAgICAgdHlwZTogJ2JsdWUnLFxuICAgIH0pKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGNkcy10YWJsZS1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgc29ydDogc29ydCQgfCBhc3luYyxcbiAgICBtb2RlbDogbW9kZWwkIHwgYXN5bmMsXG4gICAgdmlld0luaXRpYWxpemVkOiB2aWV3SW5pdGlhbGl6ZWQkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbiAgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0XCJcbj5cbiAgPGNkcy10YWJsZS1oZWFkZXIgKm5nSWY9XCJoZWFkZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9jZHMtdGFibGUtaGVhZGVyPlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJzXVwiPjwvbmctY29udGVudD5cblxuICA8Y2RzLXRhYmxlLXRvb2xiYXJcbiAgICAqbmdJZj1cIiFoaWRlVG9vbGJhclwiXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X190b29sYmFyXCJcbiAgICBbbW9kZWxdPVwib2JzLm1vZGVsXCJcbiAgICBbYmF0Y2hUZXh0XT1cImJhdGNoVGV4dCQgfCBhc3luY1wiXG4gID5cbiAgICA8Y2RzLXRhYmxlLXRvb2xiYXItYWN0aW9ucz5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjYXJib25Ub29sYmFyQWN0aW9uc11cIj4gPC9uZy1jb250ZW50PlxuICAgIDwvY2RzLXRhYmxlLXRvb2xiYXItYWN0aW9ucz5cblxuICAgIDxjZHMtdGFibGUtdG9vbGJhci1jb250ZW50PlxuICAgICAgPGNkcy10YWJsZS10b29sYmFyLXNlYXJjaFxuICAgICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZVwiXG4gICAgICAgIFtleHBhbmRhYmxlXT1cInRydWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRm9ybUNvbnRyb2xcIlxuICAgICAgPjwvY2RzLXRhYmxlLXRvb2xiYXItc2VhcmNoPlxuXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2FyYm9uVG9vbGJhckNvbnRlbnRdXCI+IDwvbmctY29udGVudD5cbiAgICA8L2Nkcy10YWJsZS10b29sYmFyLWNvbnRlbnQ+XG4gIDwvY2RzLXRhYmxlLXRvb2xiYXI+XG5cbiAgPGNkcy10YWJsZVxuICAgICpuZ0lmPVwiISFvYnMuc29ydFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3ZhbHRpbW8tY2FyYm9uLWxpc3RfX2hlYWRlci0taGlkZGVuJzogaGlkZUNvbHVtbkhlYWRlcixcbiAgICAgICd2YWx0aW1vLWNhcmJvbi1saXN0LS11bmNsaWNrYWJsZSc6ICF0aGlzLnJvd0NsaWNrZWQub2JzZXJ2ZWQsXG4gICAgfVwiXG4gICAgW2VuYWJsZVNpbmdsZVNlbGVjdF09XCJlbmFibGVTaW5nbGVTZWxlY3RcIlxuICAgIFttb2RlbF09XCJsb2FkaW5nIHx8ICFvYnMudmlld0luaXRpYWxpemVkID8gc2tlbGV0b25Nb2RlbCA6IG9icy5tb2RlbFwiXG4gICAgW3Nob3dTZWxlY3Rpb25Db2x1bW5dPVwic2hvd1NlbGVjdGlvbkNvbHVtblwiXG4gICAgW3NrZWxldG9uXT1cImxvYWRpbmdcIlxuICAgIFtzdHJpcGVkXT1cInN0cmlwZWRcIlxuICAgIChzb3J0KT1cIm9uU29ydChvYnMubW9kZWwuaGVhZGVyWyRldmVudF0pXCJcbiAgICAocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcbiAgPlxuICAgIDx0Ym9keSBjZHNUYWJsZUJvZHk+XG4gICAgICA8dHIgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X19uby1yZXN1bHRzXCI+XG4gICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cIm9icy5tb2RlbC5oZWFkZXIubGVuZ3RoICsgKHNob3dTZWxlY3Rpb25Db2x1bW4gPyAxIDogMClcIj5cbiAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvdGQ+XG5cbiAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwib2JzLm1vZGVsLmhlYWRlci5sZW5ndGggKyAoc2hvd1NlbGVjdGlvbkNvbHVtbiA/IDEgOiAwKVwiPlxuICAgICAgICAgIHt7ICdsaXN0Lm5vUmVzdWx0cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC9jZHMtdGFibGU+XG5cbiAgPGNkcy1wYWdpbmF0aW9uXG4gICAgKm5nSWY9XCJwYWdpbmF0aW9uTW9kZWwgJiYgaXRlbXM/Lmxlbmd0aFwiXG4gICAgW2l0ZW1zUGVyUGFnZU9wdGlvbnNdPVwicGFnaW5hdG9yQ29uZmlnLml0ZW1zUGVyUGFnZU9wdGlvbnNcIlxuICAgIFttb2RlbF09XCJwYWdpbmF0aW9uTW9kZWxcIlxuICAgIFtzaG93UGFnZUlucHV0XT1cInBhZ2luYXRvckNvbmZpZy5zaG93UGFnZUlucHV0XCJcbiAgICBbc2tlbGV0b25dPVwibG9hZGluZ1wiXG4gICAgW3RyYW5zbGF0aW9uc109XCJwYWdpbmF0aW9uVHJhbnNsYXRpb25zJCB8IGFzeW5jXCJcbiAgICAoc2VsZWN0UGFnZSk9XCJvblNlbGVjdFBhZ2UoJGV2ZW50KVwiXG4gID48L2Nkcy1wYWdpbmF0aW9uPlxuPC9jZHMtdGFibGUtY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2FjdGlvblRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICA8aVxuICAgIGNsYXNzPVwiY2xpY2thYmxlXCJcbiAgICBbbmdDbGFzc109XCJkYXRhLmljb25DbGFzc1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZGF0YS5jYWxsYmFjayhkYXRhLml0ZW0pXCJcbiAgPjwvaT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9vbGVhblRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICB7eyBkYXRhIHwgdHJhbnNsYXRlIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FjdGlvbnNNZW51VGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxjZHMtb3ZlcmZsb3ctbWVudVxuICAgIFtvcGVuXT1cImN1cnJlbnRPcGVuQWN0aW9uSWQgPT09IGRhdGEuaXRlbVwiXG4gICAgKG9wZW5DaGFuZ2UpPVwiaGFuZGxlQWN0aW9uT3BlbkNoYW5nZShkYXRhLml0ZW0sICRldmVudClcIlxuICAgIFtmbGlwXT1cInRydWVcIlxuICAgIFtvZmZzZXRdPVwie3g6IDAsIHk6IDUwfVwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgPlxuICAgIEBmb3IgKGFjdGlvbiBvZiBkYXRhLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi5sYWJlbCkge1xuICAgICAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkQ2FsbGJhY2sgPyBhY3Rpb24uZGlzYWJsZWRDYWxsYmFjayhkYXRhLml0ZW0pIDogZmFsc2VcIlxuICAgICAgICBbdHlwZV09XCJhY3Rpb24udHlwZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJhY3Rpb24uY2FsbGJhY2soZGF0YS5pdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDxpICpuZ0lmPVwiISFhY3Rpb24uaWNvbkNsYXNzXCIgW25nQ2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiPjwvaT5cblxuICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICAgIH1cbiAgPC9jZHMtb3ZlcmZsb3ctbWVudT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcm93RGlzYWJsZWQgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgKm5nSWY9XCJkYXRhLmxvY2tlZFwiIGNsYXNzPVwibG9ja2VkXCI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZmxvYXQtcmlnaHQgYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnkgYmctZ3JleVwiXG4gICAgICBuZ2JUb29sdGlwPVwie3sgbG9ja2VkVG9vbHRpcFRyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlIH19XCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1sb2NrXCI+PC9pPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vdmVSb3dzVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X19tb3ZlLXJvd3NcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJ0ZXJ0aWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGF0YS5pbmRleCA9PT0gMFwiXG4gICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgKGNsaWNrKT1cIm9uTW92ZVVwQ2xpY2soJGV2ZW50LCBkYXRhKVwiXG4gICAgPlxuICAgICAgPHN2ZyBjZHNJY29uPVwiYXJyb3ctLXVwXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgY2RzQnV0dG9uPVwidGVydGlhcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhdGEuaW5kZXggPT09IGRhdGEubGVuZ3RoIC0gMVwiXG4gICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgKGNsaWNrKT1cIm9uTW92ZURvd25DbGljaygkZXZlbnQsIGRhdGEpXCJcbiAgICA+XG4gICAgICA8c3ZnIGNkc0ljb249XCJhcnJvdy0tZG93blwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RyYWdBbmREcm9wVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X19kcmFnZ2FibGVcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZHJhZ0FuZERyb3BEaXNhYmxlZFwiXG4gICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgKG1vdXNlZG93bik9XCJvbkRyYWdTdGFydCgkZXZlbnQsIGRhdGEpXCJcbiAgICA+XG4gICAgICA8c3ZnIGNkc0ljb249XCJkcmFnZ2FibGVcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWdUZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgQGlmICghZGF0YS50YWdzKSB7XG4gICAgLVxuICB9IEBlbHNlIHtcbiAgICA8ZGl2IGNsYXNzPVwidGFnLXRlbXBsYXRlXCI+XG4gICAgICBAaWYgKGRhdGEudGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBmb3IgKHRhZyBvZiBkYXRhLnRhZ3Muc2xpY2UoMCwgZGF0YS50YWdBbW91bnQpOyB0cmFjayB0YWcpIHtcbiAgICAgICAgICA8Y2RzLXRhZyBjbGFzcz1cImNkcy10YWctLW5vLW1hcmdpblwiIFt0eXBlXT1cInRhZy50eXBlXCI+XG4gICAgICAgICAgICB7eyB0YWcuZWxsaXBzaXNDb250ZW50ID8/IHRhZy5jb250ZW50IH19XG4gICAgICAgICAgPC9jZHMtdGFnPlxuICAgICAgICB9XG5cbiAgICAgICAgPGNkcy10YWdcbiAgICAgICAgICAqbmdJZj1cImRhdGEudGFncy5sZW5ndGggPiBkYXRhLnRhZ0Ftb3VudFwiXG4gICAgICAgICAgY2xhc3M9XCJjZHMtdGFnLS1uby1tYXJnaW4gdmFsdGltby1jYXJib24tbGlzdF9fZXhwYW5kLXRhZ1wiXG4gICAgICAgICAgdHlwZT1cImhpZ2gtY29udHJhc3RcIlxuICAgICAgICAgIChjbGljayk9XCJvblRhZ0NsaWNrKCRldmVudCwgZGF0YS50YWdzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkYXRhLnRhZ3MubGVuZ3RoIC0gZGF0YS50YWdBbW91bnQgfX0gPHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgIDwvY2RzLXRhZz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxzcGFuPnt7IGRhdGEgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48dmFsdGltby10YWdzLW1vZGFsXG4gIFtvcGVuXT1cInRhZ01vZGFsT3BlbiQgfCBhc3luY1wiXG4gIFt0YWdzXT1cInRhZ01vZGFsRGF0YSQgfCBhc3luY1wiXG4gIChjbG9zZUV2ZW50KT1cIm9uQ2xvc2VFdmVudCgpXCJcbj48L3ZhbHRpbW8tdGFncy1tb2RhbD5cbiJdfQ==
604
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYXJib24tbGlzdC9jYXJib24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhcmJvbi1saXN0L2NhcmJvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2xGLE9BQU8sRUFLTCxLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsWUFBWSxFQUNaLEdBQUcsRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FB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QUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRixNQUFNO3NCQUEvQixTQUFTO3VCQUFDLEtBQUs7Z0JBY0gsS0FBSztzQkFBakIsS0FBSztnQkFRTyxNQUFNO3NCQUFsQixLQUFLO2dCQVFPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFJRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBdUJHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFPTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUlHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Fycm93RG93bjE2LCBBcnJvd1VwMTYsIERyYWdnYWJsZTE2LCBTZXR0aW5nc1ZpZXcxNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtTb3J0U3RhdGV9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEljb25TZXJ2aWNlLFxuICBPdmVyZmxvd01lbnUsXG4gIFBhZ2luYXRpb25Nb2RlbCxcbiAgUGFnaW5hdGlvblRyYW5zbGF0aW9ucyxcbiAgVGFibGUsXG4gIFRhYmxlSGVhZGVySXRlbSxcbiAgVGFibGVJdGVtLFxuICBUYWJsZU1vZGVsLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7Z2V0IGFzIF9nZXQsIGlzQXJyYXl9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Qk9PTEVBTl9DT05WRVJURVJfVkFMVUVTLCBDQVNFU19XSVRIT1VUX1NUQVRVU19LRVl9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDYXJib25MaXN0QmF0Y2hUZXh0LFxuICBDYXJib25MaXN0SXRlbSxcbiAgQ2FyYm9uTGlzdFRyYW5zbGF0aW9ucyxcbiAgQ2FyYm9uUGFnaW5hdG9yQ29uZmlnLFxuICBDYXJib25UYWcsXG4gIENvbHVtbkNvbmZpZyxcbiAgREVGQVVMVF9MSVNUX1RSQU5TTEFUSU9OUyxcbiAgREVGQVVMVF9QQUdJTkFUSU9OLFxuICBERUZBVUxUX1BBR0lOQVRPUl9DT05GSUcsXG4gIE1vdmVSb3dEaXJlY3Rpb24sXG4gIE1vdmVSb3dFdmVudCxcbiAgUGFnaW5hdGlvbixcbiAgVEFHX0VMTElQU0lTX0xJTUlULFxuICBWaWV3VHlwZSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RWxsaXBzaXNQaXBlfSBmcm9tICcuLi8uLi9waXBlcyc7XG5pbXBvcnQge0tleVN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMva2V5LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3Q29udGVudFNlcnZpY2V9IGZyb20gJy4uL3ZpZXctY29udGVudC92aWV3LWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQge0NhcmJvbkxpc3RGaWx0ZXJQaXBlfSBmcm9tICcuL0NhcmJvbkxpc3RGaWx0ZXJQaXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0NhcmJvbkxpc3REcmFnQW5kRHJvcFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNhcmJvbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmJvbi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyYm9uLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0NhcmJvbkxpc3RGaWx0ZXJQaXBlLCBDYXJib25MaXN0RHJhZ0FuZERyb3BTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyYm9uTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnYWN0aW9uc01lbnVUZW1wbGF0ZScpIGFjdGlvbnNNZW51VGVtcGxhdGU6IFRlbXBsYXRlUmVmPE92ZXJmbG93TWVudT47XG4gIEBWaWV3Q2hpbGQoJ2FjdGlvblRlbXBsYXRlJykgYWN0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2Jvb2xlYW5UZW1wbGF0ZScpIGJvb2xlYW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnbW92ZVJvd3NUZW1wbGF0ZScpIG1vdmVSb3dzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2RyYWdBbmREcm9wVGVtcGxhdGUnKSBkcmFnQW5kRHJvcFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdyb3dEaXNhYmxlZCcpIHJvd0Rpc2FibGVkOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWdUZW1wbGF0ZScpIHRhZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdkZWZhdWx0VGVtcGxhdGUnKSBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoVGFibGUpIHByaXZhdGUgX3RhYmxlOiBUYWJsZTtcblxuICBwcml2YXRlIF9jb21wbGV0ZURhdGFTb3VyY2U6IFRhYmxlSXRlbVtdW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0SXRlbVtdPihbXSk7XG5cbiAgcHJpdmF0ZSBnZXQgX2l0ZW1zKCk6IENhcmJvbkxpc3RJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogQ2FyYm9uTGlzdEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGl0ZW1zKHZhbHVlOiBDYXJib25MaXN0SXRlbVtdKSB7XG4gICAgdGhpcy5faXRlbXMkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGN1cnJlbnRPcGVuQWN0aW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpZWxkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbHVtbkNvbmZpZ1tdPihbXSk7XG5cbiAgQElucHV0KCkgc2V0IGZpZWxkcyh2YWx1ZTogQ29sdW1uQ29uZmlnW10pIHtcbiAgICB0aGlzLl9maWVsZHMkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGFibGVUcmFuc2xhdGlvbnMkOiBCZWhhdmlvclN1YmplY3Q8Q2FyYm9uTGlzdFRyYW5zbGF0aW9ucz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxuICAgIERFRkFVTFRfTElTVF9UUkFOU0xBVElPTlNcbiAgKTtcblxuICBASW5wdXQoKSBzZXQgdGFibGVUcmFuc2xhdGlvbnModmFsdWU6IFBhcnRpYWw8Q2FyYm9uTGlzdFRyYW5zbGF0aW9ucz4pIHtcbiAgICB0aGlzLl90YWJsZVRyYW5zbGF0aW9ucyQubmV4dCh7Li4uREVGQVVMVF9MSVNUX1RSQU5TTEFUSU9OUywgLi4udmFsdWV9KTtcbiAgfVxuXG4gIEBJbnB1dCgpIHBhZ2luYXRvckNvbmZpZzogQ2FyYm9uUGFnaW5hdG9yQ29uZmlnID0gREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHO1xuICBwcml2YXRlIF9wYWdpbmF0aW9uOiBQYWdpbmF0aW9uO1xuICBwcml2YXRlIF9pc1BhZ2luYXRpb25Jbml0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwYWdpbmF0aW9uKHZhbHVlOiBQYXJ0aWFsPFBhZ2luYXRpb24+IHwgZmFsc2UpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9wYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLl9wYWdpbmF0aW9uID0gey4uLkRFRkFVTFRfUEFHSU5BVElPTiwgLi4udmFsdWV9O1xuICAgIH1cblxuICAgIHRoaXMuX3BhZ2luYXRpb24gPSB7Li4udGhpcy5fcGFnaW5hdGlvbiwgLi4udmFsdWV9O1xuICAgIHRoaXMuYnVpbGRQYWdpbmF0aW9uTW9kZWwoKTtcblxuICAgIGlmICh0aGlzLl9pc1BhZ2luYXRpb25Jbml0IHx8ICF2YWx1ZS5zaXplKSByZXR1cm47XG5cbiAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplKHZhbHVlLnNpemUudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5faXNQYWdpbmF0aW9uSW5pdCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2luYXRpb24oKTogUGFnaW5hdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb247XG4gIH1cblxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgYWN0aW9ucyBmaWVsZCBpcyBkZXByZWNhdGVkLiBBY3Rpb25zIGNhbiBiZSBhZGRlZCB0aHJvdWdoIHRoZSAqKkBJbnB1dCBmaWVsZCoqLlxuICAgKi9cbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXTtcbiAgQElucHV0KCkgaGVhZGVyOiBib29sZWFuO1xuICBASW5wdXQoKSBoaWRlQ29sdW1uSGVhZGVyOiBib29sZWFuO1xuICBwcml2YXRlIF9pc1NvcnRJbml0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU29ydFN0YXRlKHZhbHVlOiBTb3J0U3RhdGUpIHtcbiAgICBpZiAoIXZhbHVlIHx8IHRoaXMuX2lzU29ydEluaXQpIHJldHVybjtcblxuICAgIHRoaXMuX2lzU29ydEluaXQgPSB0cnVlO1xuICAgIHRoaXMuc29ydCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc29ydFN0YXRlKHZhbHVlOiBTb3J0U3RhdGUpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgdGhpcy5zb3J0JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGlzU2VhcmNoYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVTaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBsYXN0Q29sdW1uVGVtcGxhdGUgZmllbGQgaXMgZGVwcmVjYXRlZC4gQW55IHRlbXBsYXRlIGNvbHVtbiBjYW4gYmUgYWRkZWQgdGhyb3VnaCB0aGUgKipASW5wdXQgZmllbGQqKi5cbiAgICovXG4gIEBJbnB1dCgpIGxhc3RDb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgcGFnaW5hdGlvbklkZW50aWZpZXI6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd1NlbGVjdGlvbkNvbHVtbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdHJpcGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVUb29sYmFyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxvY2tlZFRvb2x0aXBUcmFuc2xhdGlvbktleSA9ICcnO1xuICBASW5wdXQoKSBtb3ZpbmdSb3dzRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgZHJhZ0FuZERyb3AgPSBmYWxzZTtcbiAgQElucHV0KCkgZHJhZ0FuZERyb3BEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgcGFnaW5hdGlvblNldCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRTdGF0ZT4oKTtcbiAgQE91dHB1dCgpIG1vdmVSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdmVSb3dFdmVudD4oKTtcbiAgQE91dHB1dCgpIGl0ZW1zUmVvcmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJib25MaXN0SXRlbVtdPigpO1xuXG4gIHB1YmxpYyBiYXRjaFRleHQkOiBPYnNlcnZhYmxlPENhcmJvbkxpc3RCYXRjaFRleHQ+ID0gdGhpcy5fdGFibGVUcmFuc2xhdGlvbnMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh0cmFuc2xhdGlvbnM6IENhcmJvbkxpc3RUcmFuc2xhdGlvbnMpID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSh0cmFuc2xhdGlvbnMuc2VsZWN0LnNpbmdsZSksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0odHJhbnNsYXRpb25zLnNlbGVjdC5tdWx0aXBsZSksXG4gICAgICBdKS5waXBlKFxuICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodHJhbnNsYXRpb25zLnNlbGVjdC5zaW5nbGUpLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRyYW5zbGF0aW9ucy5zZWxlY3QubXVsdGlwbGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIG1hcCgoW1NJTkdMRSwgTVVMVElQTEVdKSA9PiAoe1NJTkdMRSwgTVVMVElQTEV9KSlcbiAgKTtcblxuICBwdWJsaWMgcGFnaW5hdGlvblRyYW5zbGF0aW9ucyQ6IE9ic2VydmFibGU8UGFydGlhbDxQYWdpbmF0aW9uVHJhbnNsYXRpb25zPj4gPVxuICAgIHRoaXMuX3RhYmxlVHJhbnNsYXRpb25zJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh0cmFuc2xhdGlvbnM6IENhcmJvbkxpc3RUcmFuc2xhdGlvbnMpID0+XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0odHJhbnNsYXRpb25zLnBhZ2luYXRpb24uaXRlbXNQZXJQYWdlKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKHRyYW5zbGF0aW9ucy5wYWdpbmF0aW9uLnRvdGFsSXRlbSksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSh0cmFuc2xhdGlvbnMucGFnaW5hdGlvbi50b3RhbEl0ZW1zKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdpbnRlcmZhY2UubGlzdC5vZkxhc3RQYWdlJyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnaW50ZXJmYWNlLmxpc3Qub2ZMYXN0UGFnZXMnKSxcbiAgICAgICAgXSlcbiAgICAgICksXG4gICAgICBtYXAoKFtJVEVNU19QRVJfUEFHRSwgVE9UQUxfSVRFTSwgVE9UQUxfSVRFTVMsIE9GX0xBU1RfUEFHRSwgT0ZfTEFTVF9QQUdFU10pID0+ICh7XG4gICAgICAgIElURU1TX1BFUl9QQUdFLFxuICAgICAgICBUT1RBTF9JVEVNLFxuICAgICAgICBUT1RBTF9JVEVNUyxcbiAgICAgICAgT0ZfTEFTVF9QQUdFLFxuICAgICAgICBPRl9MQVNUX1BBR0VTLFxuICAgICAgfSkpXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc29ydCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNvcnRTdGF0ZT4oe1xuICAgIHN0YXRlOiB7bmFtZTogJycsIGRpcmVjdGlvbjogJ0RFU0MnfSxcbiAgICBpc1NvcnRpbmc6IGZhbHNlLFxuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ01vZGFsT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ01vZGFsRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcmJvblRhZ1tdPihbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IENBU0VTX1dJVEhPVVRfU1RBVFVTX0tFWSA9IENBU0VTX1dJVEhPVVRfU1RBVFVTX0tFWTtcbiAgcHVibGljIHJlYWRvbmx5IFZpZXdUeXBlID0gVmlld1R5cGU7XG4gIHB1YmxpYyBza2VsZXRvbk1vZGVsID0gVGFibGUuc2tlbGV0b25Nb2RlbCg1LCA1KTtcbiAgcHVibGljIHBhZ2luYXRpb25Nb2RlbDogUGFnaW5hdGlvbk1vZGVsO1xuICBwdWJsaWMgc2VhcmNoRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFBBR0lOQVRJT05fU0laRSA9ICdQYWdpbmF0aW9uU2l6ZSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZEl0ZW1zKCk6IENhcmJvbkxpc3RJdGVtW10ge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5fdGFibGUubW9kZWw7XG5cbiAgICByZXR1cm4gbW9kZWwuZGF0YS5yZWR1Y2UoXG4gICAgICAoaXRlbXM6IENhcmJvbkxpc3RJdGVtW10sIF8sIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgIG1vZGVsLmlzUm93U2VsZWN0ZWQoaW5kZXgpID8gWy4uLml0ZW1zLCB0aGlzLml0ZW1zW2luZGV4XV0gOiBbLi4uaXRlbXNdLFxuICAgICAgW11cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0luaXRpYWxpemVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyBnZXQgdmlld0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0luaXRpYWxpemVkJC5waXBlKGZpbHRlcihpbml0aWFsaXplZCA9PiBpbml0aWFsaXplZCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RlbCgpOiBUYWJsZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGUubW9kZWw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsbGlwc2lzUGlwZTogRWxsaXBzaXNQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyUGlwZTogQ2FyYm9uTGlzdEZpbHRlclBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGVudFNlcnZpY2U6IFZpZXdDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleVN0YXRlU2VydmljZTogS2V5U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZ0FuZERyb3BTZXJ2aWNlOiBDYXJib25MaXN0RHJhZ0FuZERyb3BTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtBcnJvd0Rvd24xNiwgQXJyb3dVcDE2LCBTZXR0aW5nc1ZpZXcxNiwgRHJhZ2dhYmxlMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLmxvYWRQYWdpbmF0aW9uU2l6ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHNlYXJjaFN0cmluZzogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaC5vYnNlcnZlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2guZW1pdChzZWFyY2hTdHJpbmcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc2VhcmNoU3RyaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMkLm5leHQoXG4gICAgICAgICAgICB0aGlzLmZpbHRlclBpcGUudHJhbnNmb3JtKHRoaXMuX2NvbXBsZXRlRGF0YVNvdXJjZSwgc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0luaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMub3BlbkRyYWdBbmREcm9wU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5EcmFnQW5kRHJvcFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZHJhZ0FuZERyb3BTZXJ2aWNlLmRyYWdBbmREcm9wRXZlbnRzJC5zdWJzY3JpYmUoZHJhZ0FuZERyb3BFdmVudCA9PiB7XG4gICAgICAgIGNvbnN0IHJlb3JkZXJlZEl0ZW1zID0gdGhpcy5zd2FwSXRlbXMoXG4gICAgICAgICAgdGhpcy5faXRlbXMsXG4gICAgICAgICAgZHJhZ0FuZERyb3BFdmVudC5zdGFydEluZGV4LFxuICAgICAgICAgIGRyYWdBbmREcm9wRXZlbnQubmV3SW5kZXhcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pdGVtc1Jlb3JkZXJlZC5lbWl0KHJlb3JkZXJlZEl0ZW1zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd0NsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCByb3dEYXRhID0gdGhpcy5fdGFibGUubW9kZWwuZGF0YVtpbmRleF07XG4gICAgY29uc3QgZmlyc3RJdGVtV2l0aERhdGEgPSByb3dEYXRhLmZpbmQoaXRlbSA9PiAhIWl0ZW1bJ2l0ZW0nXSk7XG4gICAgY29uc3QgZmlyc3RJdGVtID0gZmlyc3RJdGVtV2l0aERhdGE/LlsnaXRlbSddO1xuXG4gICAgaWYgKGZpcnN0SXRlbSkgZmlyc3RJdGVtLmN0cmxDbGljayA9IHRoaXMua2V5U3RhdGVTZXJ2aWNlLmdldEN0cmxPckNtZFN0YXRlKCk7XG5cbiAgICBpZiAoIWZpcnN0SXRlbSB8fCBmaXJzdEl0ZW0/LmxvY2tlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChmaXJzdEl0ZW0pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGFnaW5hdGlvbk1vZGVsLnBhZ2VMZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uLnNpemUgIT09IHRoaXMucGFnaW5hdGlvbk1vZGVsLnBhZ2VMZW5ndGgpIHtcbiAgICAgIHRoaXMuc2V0UGFnaW5hdGlvblNpemUodGhpcy5wYWdpbmF0aW9uTW9kZWwucGFnZUxlbmd0aC50b1N0cmluZygpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBhZ2luYXRpb25DbGlja2VkLmVtaXQocGFnZSk7XG4gIH1cblxuICBwdWJsaWMgb25Tb3J0KGhlYWRlckl0ZW06IFRhYmxlSGVhZGVySXRlbSAmIHtrZXk6IHN0cmluZ30pOiB2b2lkIHtcbiAgICBjb25zdCB7a2V5LCBzb3J0YWJsZX0gPSBoZWFkZXJJdGVtO1xuICAgIGlmICghc29ydGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHNvcnQgPT4ge1xuICAgICAgbGV0IG5ld1N0YXRlOiBTb3J0U3RhdGU7XG5cbiAgICAgIGlmIChzb3J0LnN0YXRlLm5hbWUgPT09IGtleSkge1xuICAgICAgICBpZiAoIXNvcnQuaXNTb3J0aW5nKSB7XG4gICAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246ICdERVNDJ30sIGlzU29ydGluZzogdHJ1ZX07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHNvcnQuc3RhdGUuZGlyZWN0aW9uID09PSAnREVTQycpIHtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gey4uLnNvcnQsIHN0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiAnQVNDJ319O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHtzdGF0ZTogey4uLnNvcnQuc3RhdGUsIGRpcmVjdGlvbjogJ0RFU0MnfSwgaXNTb3J0aW5nOiBmYWxzZX07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdTdGF0ZSA9IHtzdGF0ZToge25hbWU6IGtleSwgZGlyZWN0aW9uOiAnREVTQyd9LCBpc1NvcnRpbmc6IHRydWV9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvcnQkLm5leHQobmV3U3RhdGUpO1xuICAgICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KG5ld1N0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRyYWdTdGFydChcbiAgICBtb3VzZUV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIGNhcmJvbkV2ZW50OiB7aW5kZXg6IG51bWJlcjsgaXRlbTogQ2FyYm9uTGlzdEl0ZW07IGxlbmd0aDogbnVtYmVyfVxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kcmFnQW5kRHJvcERpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmRyYWdBbmREcm9wU2VydmljZS5zZXRDYXJib25MaXN0RWxlbWVudFJlZih0aGlzLmVsZW1lbnRSZWYpO1xuICAgIHRoaXMuZHJhZ0FuZERyb3BTZXJ2aWNlLnN0YXJ0RHJhZyhtb3VzZUV2ZW50LnksIGNhcmJvbkV2ZW50LmluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYWdpbmF0aW9uTW9kZWwoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uTW9kZWwgPSB7XG4gICAgICBjdXJyZW50UGFnZTogdGhpcy5wYWdpbmF0aW9uLnBhZ2UsXG4gICAgICB0b3RhbERhdGFMZW5ndGg6ICt0aGlzLnBhZ2luYXRpb24uY29sbGVjdGlvblNpemUsXG4gICAgICBwYWdlTGVuZ3RoOiB0aGlzLnBhZ2luYXRpb24uc2l6ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNsYXRlZEZpZWxkcyQ6IE9ic2VydmFibGU8Q29sdW1uQ29uZmlnW10+ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JykucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fZmllbGRzJCksXG4gICAgZmlsdGVyKChmaWVsZHM6IENvbHVtbkNvbmZpZ1tdKSA9PiAhIWZpZWxkcyksXG4gICAgbWFwKChmaWVsZHM6IENvbHVtbkNvbmZpZ1tdKSA9PlxuICAgICAgZmllbGRzLm1hcCgoZmllbGQ6IENvbHVtbkNvbmZpZykgPT4gKHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIGxhYmVsOiAhZmllbGQubGFiZWwgPyAnJyA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGZpZWxkLmxhYmVsKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIF9oZWFkZXJJdGVtcyQ6IE9ic2VydmFibGU8VGFibGVIZWFkZXJJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fdHJhbnNsYXRlZEZpZWxkcyQsXG4gICAgdGhpcy5zb3J0JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt0cmFuc2xhdGVkRmllbGRzLCBzb3J0U3RhdGVdKSA9PlxuICAgICAgdHJhbnNsYXRlZEZpZWxkcy5tYXAoXG4gICAgICAgIChmaWVsZDogQ29sdW1uQ29uZmlnKSA9PlxuICAgICAgICAgIG5ldyBUYWJsZUhlYWRlckl0ZW0oe1xuICAgICAgICAgICAgZGF0YTogZmllbGQubGFiZWwsXG4gICAgICAgICAgICBzb3J0YWJsZTogZmllbGQuc29ydGFibGUsXG4gICAgICAgICAgICBjbGFzc05hbWU6IGZpZWxkLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIGtleTogZmllbGQua2V5LFxuICAgICAgICAgICAgc29ydGVkOiBzb3J0U3RhdGUuaXNTb3J0aW5nICYmIGZpZWxkLmtleSA9PT0gc29ydFN0YXRlLnN0YXRlLm5hbWUsXG4gICAgICAgICAgICBhc2NlbmRpbmc6IGZpZWxkLmtleSA9PT0gc29ydFN0YXRlLnN0YXRlLm5hbWUgJiYgc29ydFN0YXRlLnN0YXRlLmRpcmVjdGlvbiA9PT0gJ0FTQycsXG4gICAgICAgICAgfSlcbiAgICAgIClcbiAgICApLFxuICAgIG1hcCgoaGVhZGVyOiBUYWJsZUhlYWRlckl0ZW1bXSkgPT4gW1xuICAgICAgLi4udGhpcy5kcmFnQW5kRHJvcEhlYWRlckNvbHVtbnMsXG4gICAgICAuLi5oZWFkZXIsXG4gICAgICAuLi50aGlzLmV4dHJhQ29sdW1ucyxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlSXRlbXMkOiBPYnNlcnZhYmxlPFRhYmxlSXRlbVtdW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZmllbGRzJCxcbiAgICB0aGlzLl9pdGVtcyQsXG4gICAgdGhpcy5fdmlld0luaXRpYWxpemVkJCxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtmaWVsZHMsIGl0ZW1zLCB2aWV3SW5pdGlhbGl6ZWRdKSA9PiAhIWZpZWxkcyAmJiAhIWl0ZW1zICYmIHZpZXdJbml0aWFsaXplZCksXG4gICAgbWFwKChbZmllbGRzLCBpdGVtc10pID0+XG4gICAgICBpdGVtcy5tYXAoKGl0ZW06IENhcmJvbkxpc3RJdGVtLCBpbmRleDogbnVtYmVyKSA9PiBbXG4gICAgICAgIC4uLnRoaXMuZ2V0RHJhZ0FuZERyb3BJdGVtc0l0ZW1zKGl0ZW0sIGluZGV4LCBpdGVtcy5sZW5ndGgpLFxuICAgICAgICAuLi5maWVsZHMubWFwKChmaWVsZDogQ29sdW1uQ29uZmlnKSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChmaWVsZC52aWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBWaWV3VHlwZS5URU1QTEFURTpcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHtpdGVtLCBpbmRleCwgbGVuZ3RoOiBpdGVtcy5sZW5ndGgsIC4uLmZpZWxkLnRlbXBsYXRlRGF0YX0sXG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IGZpZWxkLnRlbXBsYXRlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgVmlld1R5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnJlc29sdmVPYmplY3QoZmllbGQsIGl0ZW0pO1xuICAgICAgICAgICAgICBkYXRhID0gIUJPT0xFQU5fQ09OVkVSVEVSX1ZBTFVFUy5pbmNsdWRlcyhkYXRhKVxuICAgICAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgICAgIDogYCR7J3ZpZXdUeXBlQ29udmVydGVyLicgKyBkYXRhfWA7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGVJdGVtKHtcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLmJvb2xlYW5UZW1wbGF0ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXNlIFZpZXdUeXBlLlRBR1M6IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHRoaXMucmVzb2x2ZVRhZ09iamVjdChpdGVtLCBmaWVsZC5rZXkpLFxuICAgICAgICAgICAgICAgICAgdGFnQW1vdW50OiBmaWVsZD8udGFnQW1vdW50IHx8IDEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy50YWdUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZE9iamVjdDogc3RyaW5nID0gdGhpcy5yZXNvbHZlT2JqZWN0KGZpZWxkLCBpdGVtKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiByZXNvbHZlZE9iamVjdCA/PyAnLScsXG4gICAgICAgICAgICAgICAgZGF0YTpcbiAgICAgICAgICAgICAgICAgIChmaWVsZC50b29sdGlwQ2hhckxpbWl0XG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5lbGxpcHNpc1BpcGUudHJhbnNmb3JtKHJlc29sdmVkT2JqZWN0LCBmaWVsZC50b29sdGlwQ2hhckxpbWl0KVxuICAgICAgICAgICAgICAgICAgICA6IHJlc29sdmVkT2JqZWN0KSA/PyAnLScsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMuZGVmYXVsdFRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIC4uLnRoaXMuZ2V0RXh0cmFJdGVtcyhpdGVtLCBpbmRleCwgaXRlbXMubGVuZ3RoKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICB0YXAoKGRhdGE6IFRhYmxlSXRlbVtdW10pID0+IHtcbiAgICAgIHRoaXMuX2NvbXBsZXRlRGF0YVNvdXJjZSA9IGRhdGE7XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJlZEl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVJdGVtW11bXSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBtb2RlbCQ6IE9ic2VydmFibGU8VGFibGVNb2RlbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9oZWFkZXJJdGVtcyQsXG4gICAgdGhpcy5fdGFibGVJdGVtcyQsXG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbaGVhZGVyLCBkYXRhLCBmaWx0ZXJlZERhdGFdKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG4gICAgICBtb2RlbC5oZWFkZXIgPSBoZWFkZXI7XG4gICAgICBtb2RlbC5kYXRhID0gZmlsdGVyZWREYXRhID8/IGRhdGE7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfSksXG4gICAgc3RhcnRXaXRoKG5ldyBUYWJsZU1vZGVsKCkpXG4gICk7XG5cbiAgcHJpdmF0ZSBnZXQgZHJhZ0FuZERyb3BIZWFkZXJDb2x1bW5zKCk6IFRhYmxlSGVhZGVySXRlbVtdIHtcbiAgICBjb25zdCBlbXB0eUhlYWRlciA9IG5ldyBUYWJsZUhlYWRlckl0ZW0oKTtcblxuICAgIGVtcHR5SGVhZGVyLnNvcnRhYmxlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHRoaXMuZHJhZ0FuZERyb3BcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgVGFibGVIZWFkZXJJdGVtKHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFsdGltby1jYXJib24tbGlzdF9fYWN0aW9ucycsXG4gICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGV4dHJhQ29sdW1ucygpOiBUYWJsZUhlYWRlckl0ZW1bXSB7XG4gICAgY29uc3QgZW1wdHlIZWFkZXIgPSBuZXcgVGFibGVIZWFkZXJJdGVtKCk7XG5cbiAgICBlbXB0eUhlYWRlci5zb3J0YWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLih0aGlzLm1vdmluZ1Jvd3NFbmFibGVkXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFRhYmxlSGVhZGVySXRlbSh7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3ZhbHRpbW8tY2FyYm9uLWxpc3RfX2FjdGlvbnMnLFxuICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKCEhdGhpcy5hY3Rpb25zXG4gICAgICAgID8gdGhpcy5hY3Rpb25zLm1hcChcbiAgICAgICAgICAgIGFjdGlvbiA9PlxuICAgICAgICAgICAgICBuZXcgVGFibGVIZWFkZXJJdGVtKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb24uY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICBrZXk6IGFjdGlvbi5jb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKCEhdGhpcy5sYXN0Q29sdW1uVGVtcGxhdGUgPyBbZW1wdHlIZWFkZXJdIDogW10pLFxuICAgICAgLi4uKHRoaXMuX2l0ZW1zPy5zb21lKGl0ZW0gPT4gaXRlbS5sb2NrZWQpID8gW2VtcHR5SGVhZGVyXSA6IFtdKSxcbiAgICAgIC4uLighIXRoaXMuYWN0aW9uSXRlbXNcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgVGFibGVIZWFkZXJJdGVtKHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFsdGltby1jYXJib24tbGlzdF9fYWN0aW9ucycsXG4gICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1vdmVEb3duQ2xpY2soXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIGRhdGE6IHtpbmRleDogbnVtYmVyOyBpdGVtOiBDYXJib25MaXN0SXRlbTsgbGVuZ3RoOiBudW1iZXJ9XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3QgbW92ZVJvd0V2ZW50ID0ge1xuICAgICAgZGlyZWN0aW9uOiBNb3ZlUm93RGlyZWN0aW9uLkRPV04sXG4gICAgICBpbmRleDogZGF0YS5pbmRleCxcbiAgICB9O1xuICAgIGNvbnN0IG9yZGVyZWRJdGVtcyA9IHRoaXMuc3dhcEl0ZW1zKHRoaXMuX2l0ZW1zLCBtb3ZlUm93RXZlbnQuaW5kZXgsIG1vdmVSb3dFdmVudC5pbmRleCArIDEpO1xuXG4gICAgdGhpcy5tb3ZlUm93LmVtaXQobW92ZVJvd0V2ZW50KTtcbiAgICB0aGlzLml0ZW1zUmVvcmRlcmVkLmVtaXQob3JkZXJlZEl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1vdmVVcENsaWNrKFxuICAgIGV2ZW50OiBFdmVudCxcbiAgICBkYXRhOiB7aW5kZXg6IG51bWJlcjsgaXRlbTogQ2FyYm9uTGlzdEl0ZW07IGxlbmd0aDogbnVtYmVyfVxuICApOiB2b2lkIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IG1vdmVSb3dFdmVudCA9IHtcbiAgICAgIGRpcmVjdGlvbjogTW92ZVJvd0RpcmVjdGlvbi5VUCxcbiAgICAgIGluZGV4OiBkYXRhLmluZGV4LFxuICAgIH07XG4gICAgY29uc3Qgb3JkZXJlZEl0ZW1zID0gdGhpcy5zd2FwSXRlbXModGhpcy5faXRlbXMsIG1vdmVSb3dFdmVudC5pbmRleCAtIDEsIG1vdmVSb3dFdmVudC5pbmRleCk7XG5cbiAgICB0aGlzLm1vdmVSb3cuZW1pdChtb3ZlUm93RXZlbnQpO1xuICAgIHRoaXMuaXRlbXNSZW9yZGVyZWQuZW1pdChvcmRlcmVkSXRlbXMpO1xuICB9XG5cbiAgcHVibGljIG9uVGFnQ2xpY2soZXZlbnQ6IEV2ZW50LCB0YWdzOiBDYXJib25UYWdbXSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudGFnTW9kYWxPcGVuJC5uZXh0KHRydWUpO1xuICAgIHRoaXMudGFnTW9kYWxEYXRhJC5uZXh0KHRhZ3MpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhZ01vZGFsT3BlbiQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQWN0aW9uT3BlbkNoYW5nZShhY3Rpb25JZDogc3RyaW5nLCBpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLmN1cnJlbnRPcGVuQWN0aW9uSWQgPSBhY3Rpb25JZDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudE9wZW5BY3Rpb25JZCA9PT0gYWN0aW9uSWQpIHtcbiAgICAgIHRoaXMuY3VycmVudE9wZW5BY3Rpb25JZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnQW5kRHJvcEl0ZW1zSXRlbXMoXG4gICAgaXRlbTogQ2FyYm9uTGlzdEl0ZW0sXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBsZW5ndGg6IG51bWJlclxuICApOiBUYWJsZUl0ZW1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLighIXRoaXMuZHJhZ0FuZERyb3BcbiAgICAgICAgPyBbbmV3IFRhYmxlSXRlbSh7ZGF0YToge2l0ZW0sIGluZGV4LCBsZW5ndGh9LCB0ZW1wbGF0ZTogdGhpcy5kcmFnQW5kRHJvcFRlbXBsYXRlfSldXG4gICAgICAgIDogW10pLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdldEV4dHJhSXRlbXMoaXRlbTogQ2FyYm9uTGlzdEl0ZW0sIGluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogVGFibGVJdGVtW10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi4oISF0aGlzLmFjdGlvbnNcbiAgICAgICAgPyB0aGlzLmFjdGlvbnMubWFwKFxuICAgICAgICAgICAgYWN0aW9uID0+XG4gICAgICAgICAgICAgIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICAgIGRhdGE6IHtpdGVtLCBjYWxsYmFjazogYWN0aW9uLmNhbGxiYWNrLCBpY29uQ2xhc3M6IGFjdGlvbi5pY29uQ2xhc3N9LFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLmFjdGlvblRlbXBsYXRlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5faXRlbXM/LnNvbWUodGFibGVJdGVtID0+IHRhYmxlSXRlbS5sb2NrZWQpXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFRhYmxlSXRlbSh7XG4gICAgICAgICAgICAgIGRhdGE6IHtsb2NrZWQ6IGl0ZW0ubG9ja2VkfSxcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMucm93RGlzYWJsZWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKCEhdGhpcy5sYXN0Q29sdW1uVGVtcGxhdGVcbiAgICAgICAgPyBbbmV3IFRhYmxlSXRlbSh7ZGF0YToge2l0ZW0sIGluZGV4LCBsZW5ndGh9LCB0ZW1wbGF0ZTogdGhpcy5sYXN0Q29sdW1uVGVtcGxhdGV9KV1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5tb3ZpbmdSb3dzRW5hYmxlZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICBkYXRhOiB7aXRlbSwgaW5kZXgsIGxlbmd0aH0sXG4gICAgICAgICAgICAgIHRlbXBsYXRlOiB0aGlzLm1vdmVSb3dzVGVtcGxhdGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKCEhdGhpcy5hY3Rpb25JdGVtc1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBUYWJsZUl0ZW0oe1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YWx0aW1vLWNhcmJvbi1saXN0X19hY3Rpb25zJyxcbiAgICAgICAgICAgICAgZGF0YToge2FjdGlvbnM6IHRoaXMuYWN0aW9uSXRlbXMsIGl0ZW19LFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy5hY3Rpb25zTWVudVRlbXBsYXRlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGFnaW5hdGlvblNpemUoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cmllcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgYCR7dGhpcy5wYWdpbmF0aW9uSWRlbnRpZmllcn0ke0NhcmJvbkxpc3RDb21wb25lbnQuUEFHSU5BVElPTl9TSVpFfWBcbiAgICApO1xuICAgIGlmIChlbnRyaWVzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24gPSB7c2l6ZTogK2VudHJpZXN9O1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQoK2VudHJpZXMpO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1BhZ2luYXRpb24gbG9hZGVkIGZyb20gbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBsaXN0LiBDdXJyZW50OiAnLCBlbnRyaWVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICdQYWdpbmF0aW9uIGRvZXMgTk9UIGV4aXN0IGluIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdC4gV2lsbCB1c2UgZGVmYXVsdC4gQ2hhbmdlIGl0IHRvIGNyZWF0ZSBhbiBlbnRyeS4nXG4gICAgICApO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQoMTApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UGFnaW5hdGlvblNpemUobnVtYmVyT2ZFbnRyaWVzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIGAke3RoaXMucGFnaW5hdGlvbklkZW50aWZpZXJ9JHtDYXJib25MaXN0Q29tcG9uZW50LlBBR0lOQVRJT05fU0laRX1gLFxuICAgICAgbnVtYmVyT2ZFbnRyaWVzXG4gICAgKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUGFnaW5hdGlvbiBzZXQgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBsaXN0OiAnLCBudW1iZXJPZkVudHJpZXMpO1xuICAgIHRoaXMucGFnaW5hdGlvblNldC5lbWl0KG51bWJlck9mRW50cmllcyk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVPYmplY3QoZGVmaW5pdGlvbjogYW55LCBvYmo6IGFueSkge1xuICAgIGNvbnN0IGRlZmluaXRpb25LZXkgPSBkZWZpbml0aW9uLmtleTtcbiAgICBjb25zdCBjdXN0b21Qcm9wU3RyaW5nID0gJyQuJztcbiAgICBjb25zdCBrZXkgPSBkZWZpbml0aW9uS2V5LmluY2x1ZGVzKGN1c3RvbVByb3BTdHJpbmcpXG4gICAgICA/IGRlZmluaXRpb25LZXkuc3BsaXQoY3VzdG9tUHJvcFN0cmluZylbMV1cbiAgICAgIDogZGVmaW5pdGlvbktleTtcbiAgICBjb25zdCByZXNvbHZlZE9ialZhbHVlID0gX2dldChvYmosIGtleSwgbnVsbCk7XG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRlbnRTZXJ2aWNlLmdldChyZXNvbHZlZE9ialZhbHVlLCBkZWZpbml0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgc3dhcEl0ZW1zKGl0ZW1zOiBDYXJib25MaXN0SXRlbVtdLCBpbmRleDE6IG51bWJlciwgaW5kZXgyOiBudW1iZXIpOiBDYXJib25MaXN0SXRlbVtdIHtcbiAgICBjb25zdCBpdGVtVG9JbnNlcnQgPSBpdGVtc1tpbmRleDFdO1xuICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAhPT0gaW5kZXgxKTtcbiAgICBmaWx0ZXJlZEl0ZW1zLnNwbGljZShpbmRleDIsIDAsIGl0ZW1Ub0luc2VydCk7XG5cbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRhZ09iamVjdChpdGVtOiBDYXJib25MaXN0SXRlbSwga2V5OiBzdHJpbmcpOiBDYXJib25UYWdbXSB8IG51bGwge1xuICAgIGNvbnN0IG9iamVjdDogc3RyaW5nIHwgc3RyaW5nW10gfCBDYXJib25UYWcgfCBDYXJib25UYWdbXSA9IGl0ZW1ba2V5XTtcblxuICAgIGlmICghb2JqZWN0KSByZXR1cm4gbnVsbDtcblxuICAgIGlmIChpc0FycmF5KG9iamVjdCkgJiYgdHlwZW9mIG9iamVjdFswXSAhPT0gJ3N0cmluZycpIHJldHVybiBvYmplY3QgYXMgQ2FyYm9uVGFnW107XG5cbiAgICBpZiAoIWlzQXJyYXkob2JqZWN0KSAmJiB0eXBlb2Ygb2JqZWN0ICE9PSAnc3RyaW5nJykgcmV0dXJuIFtvYmplY3QgYXMgQ2FyYm9uVGFnXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJylcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb250ZW50OiBvYmplY3QsXG4gICAgICAgICAgdHlwZTogJ2JsdWUnLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIHJldHVybiAob2JqZWN0IGFzIHN0cmluZ1tdKS5tYXAoKGNvbnRlbnQ6IHN0cmluZykgPT4gKHtcbiAgICAgIGNvbnRlbnQsXG4gICAgICB0eXBlOiAnYmx1ZScsXG4gICAgfSkpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48Y2RzLXRhYmxlLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBzb3J0OiBzb3J0JCB8IGFzeW5jLFxuICAgIG1vZGVsOiBtb2RlbCQgfCBhc3luYyxcbiAgICB2aWV3SW5pdGlhbGl6ZWQ6IHZpZXdJbml0aWFsaXplZCQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuICBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RcIlxuPlxuICA8Y2RzLXRhYmxlLWhlYWRlciAqbmdJZj1cImhlYWRlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L2Nkcy10YWJsZS1oZWFkZXI+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYnNdXCI+PC9uZy1jb250ZW50PlxuXG4gIDxjZHMtdGFibGUtdG9vbGJhclxuICAgICpuZ0lmPVwiIWhpZGVUb29sYmFyXCJcbiAgICBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX3Rvb2xiYXJcIlxuICAgIFttb2RlbF09XCJvYnMubW9kZWxcIlxuICAgIFtiYXRjaFRleHRdPVwiYmF0Y2hUZXh0JCB8IGFzeW5jXCJcbiAgPlxuICAgIDxjZHMtdGFibGUtdG9vbGJhci1hY3Rpb25zPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NhcmJvblRvb2xiYXJBY3Rpb25zXVwiPiA8L25nLWNvbnRlbnQ+XG4gICAgPC9jZHMtdGFibGUtdG9vbGJhci1hY3Rpb25zPlxuXG4gICAgPGNkcy10YWJsZS10b29sYmFyLWNvbnRlbnQ+XG4gICAgICA8Y2RzLXRhYmxlLXRvb2xiYXItc2VhcmNoXG4gICAgICAgICpuZ0lmPVwiaXNTZWFyY2hhYmxlXCJcbiAgICAgICAgW2V4cGFuZGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICA+PC9jZHMtdGFibGUtdG9vbGJhci1zZWFyY2g+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjYXJib25Ub29sYmFyQ29udGVudF1cIj4gPC9uZy1jb250ZW50PlxuICAgIDwvY2RzLXRhYmxlLXRvb2xiYXItY29udGVudD5cbiAgPC9jZHMtdGFibGUtdG9vbGJhcj5cblxuICA8Y2RzLXRhYmxlXG4gICAgKm5nSWY9XCIhIW9icy5zb3J0XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAndmFsdGltby1jYXJib24tbGlzdF9faGVhZGVyLS1oaWRkZW4nOiBoaWRlQ29sdW1uSGVhZGVyLFxuICAgICAgJ3ZhbHRpbW8tY2FyYm9uLWxpc3QtLXVuY2xpY2thYmxlJzogIXRoaXMucm93Q2xpY2tlZC5vYnNlcnZlZCxcbiAgICB9XCJcbiAgICBbZW5hYmxlU2luZ2xlU2VsZWN0XT1cImVuYWJsZVNpbmdsZVNlbGVjdFwiXG4gICAgW21vZGVsXT1cImxvYWRpbmcgfHwgIW9icy52aWV3SW5pdGlhbGl6ZWQgPyBza2VsZXRvbk1vZGVsIDogb2JzLm1vZGVsXCJcbiAgICBbc2hvd1NlbGVjdGlvbkNvbHVtbl09XCJzaG93U2VsZWN0aW9uQ29sdW1uXCJcbiAgICBbc2tlbGV0b25dPVwibG9hZGluZ1wiXG4gICAgW3N0cmlwZWRdPVwic3RyaXBlZFwiXG4gICAgKHNvcnQpPVwib25Tb3J0KG9icy5tb2RlbC5oZWFkZXJbJGV2ZW50XSlcIlxuICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICA+XG4gICAgPHRib2R5IGNkc1RhYmxlQm9keT5cbiAgICAgIDx0ciBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX25vLXJlc3VsdHNcIj5cbiAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwib2JzLm1vZGVsLmhlYWRlci5sZW5ndGggKyAoc2hvd1NlbGVjdGlvbkNvbHVtbiA/IDEgOiAwKVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC90ZD5cblxuICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJvYnMubW9kZWwuaGVhZGVyLmxlbmd0aCArIChzaG93U2VsZWN0aW9uQ29sdW1uID8gMSA6IDApXCI+XG4gICAgICAgICAge3sgJ2xpc3Qubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L2Nkcy10YWJsZT5cblxuICA8Y2RzLXBhZ2luYXRpb25cbiAgICAqbmdJZj1cInBhZ2luYXRpb25Nb2RlbCAmJiBpdGVtcz8ubGVuZ3RoXCJcbiAgICBbaXRlbXNQZXJQYWdlT3B0aW9uc109XCJwYWdpbmF0b3JDb25maWcuaXRlbXNQZXJQYWdlT3B0aW9uc1wiXG4gICAgW21vZGVsXT1cInBhZ2luYXRpb25Nb2RlbFwiXG4gICAgW3Nob3dQYWdlSW5wdXRdPVwicGFnaW5hdG9yQ29uZmlnLnNob3dQYWdlSW5wdXRcIlxuICAgIFtza2VsZXRvbl09XCJsb2FkaW5nXCJcbiAgICBbdHJhbnNsYXRpb25zXT1cInBhZ2luYXRpb25UcmFuc2xhdGlvbnMkIHwgYXN5bmNcIlxuICAgIChzZWxlY3RQYWdlKT1cIm9uU2VsZWN0UGFnZSgkZXZlbnQpXCJcbiAgPjwvY2RzLXBhZ2luYXRpb24+XG48L2Nkcy10YWJsZS1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWN0aW9uVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxpXG4gICAgY2xhc3M9XCJjbGlja2FibGVcIlxuICAgIFtuZ0NsYXNzXT1cImRhdGEuaWNvbkNsYXNzXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkYXRhLmNhbGxiYWNrKGRhdGEuaXRlbSlcIlxuICA+PC9pPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNib29sZWFuVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIHt7IGRhdGEgfCB0cmFuc2xhdGUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWN0aW9uc01lbnVUZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGNkcy1vdmVyZmxvdy1tZW51XG4gICAgW29wZW5dPVwiY3VycmVudE9wZW5BY3Rpb25JZCA9PT0gZGF0YS5pdGVtXCJcbiAgICAob3BlbkNoYW5nZSk9XCJoYW5kbGVBY3Rpb25PcGVuQ2hhbmdlKGRhdGEuaXRlbSwgJGV2ZW50KVwiXG4gICAgW2ZsaXBdPVwidHJ1ZVwiXG4gICAgW29mZnNldF09XCJ7eDogMCwgeTogNTB9XCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+XG4gICAgQGZvciAoYWN0aW9uIG9mIGRhdGEuYWN0aW9uczsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRDYWxsYmFjayA/IGFjdGlvbi5kaXNhYmxlZENhbGxiYWNrKGRhdGEuaXRlbSkgOiBmYWxzZVwiXG4gICAgICAgIFt0eXBlXT1cImFjdGlvbi50eXBlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cImFjdGlvbi5jYWxsYmFjayhkYXRhLml0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPGkgKm5nSWY9XCIhIWFjdGlvbi5pY29uQ2xhc3NcIiBbbmdDbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCI+PC9pPlxuXG4gICAgICAgIHt7IGFjdGlvbi5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG4gICAgfVxuICA8L2Nkcy1vdmVyZmxvdy1tZW51PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyb3dEaXNhYmxlZCBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiAqbmdJZj1cImRhdGEubG9ja2VkXCIgY2xhc3M9XCJsb2NrZWRcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJmbG9hdC1yaWdodCBiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXNlY29uZGFyeSBiZy1ncmV5XCJcbiAgICAgIG5nYlRvb2x0aXA9XCJ7eyBsb2NrZWRUb29sdGlwVHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUgfX1cIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWxvY2tcIj48L2k+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW92ZVJvd3NUZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX21vdmUtcm93c1wiPlxuICAgIDxidXR0b25cbiAgICAgIGNkc0J1dHRvbj1cInRlcnRpYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkYXRhLmluZGV4ID09PSAwXCJcbiAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICAoY2xpY2spPVwib25Nb3ZlVXBDbGljaygkZXZlbnQsIGRhdGEpXCJcbiAgICA+XG4gICAgICA8c3ZnIGNkc0ljb249XCJhcnJvdy0tdXBcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJ0ZXJ0aWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGF0YS5pbmRleCA9PT0gZGF0YS5sZW5ndGggLSAxXCJcbiAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICAoY2xpY2spPVwib25Nb3ZlRG93bkNsaWNrKCRldmVudCwgZGF0YSlcIlxuICAgID5cbiAgICAgIDxzdmcgY2RzSWNvbj1cImFycm93LS1kb3duXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHJhZ0FuZERyb3BUZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX2RyYWdnYWJsZVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkcmFnQW5kRHJvcERpc2FibGVkXCJcbiAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uRHJhZ1N0YXJ0KCRldmVudCwgZGF0YSlcIlxuICAgID5cbiAgICAgIDxzdmcgY2RzSWNvbj1cImRyYWdnYWJsZVwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhZ1RlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICBAaWYgKCFkYXRhLnRhZ3MpIHtcbiAgICAtXG4gIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ0YWctdGVtcGxhdGVcIj5cbiAgICAgIEBpZiAoZGF0YS50YWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAtXG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGZvciAodGFnIG9mIGRhdGEudGFncy5zbGljZSgwLCBkYXRhLnRhZ0Ftb3VudCk7IHRyYWNrIHRhZykge1xuICAgICAgICAgIDxjZHMtdGFnIGNsYXNzPVwiY2RzLXRhZy0tbm8tbWFyZ2luXCIgW3R5cGVdPVwidGFnLnR5cGVcIj5cbiAgICAgICAgICAgIHt7IHRhZy5lbGxpcHNpc0NvbnRlbnQgPz8gdGFnLmNvbnRlbnQgfX1cbiAgICAgICAgICA8L2Nkcy10YWc+XG4gICAgICAgIH1cblxuICAgICAgICA8Y2RzLXRhZ1xuICAgICAgICAgICpuZ0lmPVwiZGF0YS50YWdzLmxlbmd0aCA+IGRhdGEudGFnQW1vdW50XCJcbiAgICAgICAgICBjbGFzcz1cImNkcy10YWctLW5vLW1hcmdpbiB2YWx0aW1vLWNhcmJvbi1saXN0X19leHBhbmQtdGFnXCJcbiAgICAgICAgICB0eXBlPVwiaGlnaC1jb250cmFzdFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVGFnQ2xpY2soJGV2ZW50LCBkYXRhLnRhZ3MpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGRhdGEudGFncy5sZW5ndGggLSBkYXRhLnRhZ0Ftb3VudCB9fSA8c3ZnIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9jZHMtdGFnPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPHNwYW4+e3sgZGF0YSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjx2YWx0aW1vLXRhZ3MtbW9kYWxcbiAgW29wZW5dPVwidGFnTW9kYWxPcGVuJCB8IGFzeW5jXCJcbiAgW3RhZ3NdPVwidGFnTW9kYWxEYXRhJCB8IGFzeW5jXCJcbiAgKGNsb3NlRXZlbnQpPVwib25DbG9zZUV2ZW50KClcIlxuPjwvdmFsdGltby10YWdzLW1vZGFsPlxuIl19
@@ -37,6 +37,7 @@ export class ListComponent {
37
37
  this.rowClicked = new EventEmitter();
38
38
  this.paginationClicked = new EventEmitter();
39
39
  this.paginationSet = new EventEmitter();
40
+ // eslint-disable-next-line @angular-eslint/no-output-native
40
41
  this.search = new EventEmitter();
41
42
  this.sortChanged = new EventEmitter();
42
43
  this.headerProvided = false;
@@ -199,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
199
200
  type: ViewChild,
200
201
  args: ['searchBox']
201
202
  }] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7OztBQUVuQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxhQUFhO2FBQ1Qsb0JBQWUsR0FBRyxnQkFBZ0IsQUFBbkIsQ0FBb0I7SUE4QmxELFlBQ1Usa0JBQXNDLEVBQ3RDLE1BQWlCO1FBRGpCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQXhCbEIsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUtuQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsZ0JBQVcsR0FBNEIsSUFB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ZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQU1pQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3Rpb24sIFNvcnRTdGF0ZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtWaWV3Q29udGVudFNlcnZpY2V9IGZyb20gJy4uL3ZpZXctY29udGVudC92aWV3LWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQge2dldCBhcyBfZ2V0fSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBzd2l0Y2ggdG8gdXNpbmcgdmFsdGltby1jYXJib24tbGlzdC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgc3RhdGljIFBBR0lOQVRJT05fU0laRSA9ICdQYWdpbmF0aW9uU2l6ZSc7XG5cbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIGZpZWxkczogQXJyYXk8YW55PjtcbiAgQElucHV0KCkgcGFnaW5hdGlvbj86IGFueTtcbiAgQElucHV0KCkgdmlld01vZGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBpc1NlYXJjaGFibGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBoZWFkZXI/OiBib29sZWFuO1xuICBASW5wdXQoKSBhY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBwYWdpbmF0aW9uSWRlbnRpZmllcj86IHN0cmluZztcbiAgQElucHV0KCkgaW5pdGlhbFNvcnRTdGF0ZTogU29ydFN0YXRlO1xuICBASW5wdXQoKSBsYXN0Q29sdW1uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRpb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRpb25TZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VhcmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U29ydFN0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgaGVhZGVyUHJvdmlkZWQgPSBmYWxzZTtcbiAgcHVibGljIHZpZXdMaXN0QXM6IHN0cmluZztcbiAgcHVibGljIHNlYXJjaE1vZGVsOiBzdHJpbmc7XG4gIHB1YmxpYyByZWdFeHBTdHJpbmdSZW1vdmVVbmRlcnNjb3JlID0gL18vZztcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQm94Jykgc2VhcmNoQm94OiBFbGVtZW50UmVmO1xuXG4gIHJlYWRvbmx5IHNvcnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTb3J0U3RhdGU+KHtcbiAgICBzdGF0ZToge25hbWU6ICcnLCBkaXJlY3Rpb246ICdERVNDJ30sXG4gICAgaXNTb3J0aW5nOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3Q29udGVudFNlcnZpY2U6IFZpZXdDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTkdYTG9nZ2VyXG4gICkge1xuICAgIHRoaXMudmlld0xpc3RBcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd2aWV3TGlzdEFzJykgfHwgJ3RhYmxlJztcbiAgfVxuXG4gIGxvYWRQYWdpbmF0aW9uU2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbnRyaWVzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICBgJHt0aGlzLnBhZ2luYXRpb25JZGVudGlmaWVyfSR7TGlzdENvbXBvbmVudC5QQUdJTkFUSU9OX1NJWkV9YFxuICAgICk7XG4gICAgaWYgKGVudHJpZXMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5zaXplID0gK2VudHJpZXM7XG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXQuZW1pdCgrZW50cmllcyk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUGFnaW5hdGlvbiBsb2FkZWQgZnJvbSBsb2NhbCBzdG9yYWdlIGZvciB0aGlzIGxpc3QuIEN1cnJlbnQ6ICcsIGVudHJpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgJ1BhZ2luYXRpb24gZG9lcyBOT1QgZXhpc3QgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBsaXN0LiBXaWxsIHVzZSBkZWZhdWx0LiBDaGFuZ2UgaXQgdG8gY3JlYXRlIGFuIGVudHJ5LidcbiAgICAgICk7XG4gICAgICB0aGlzLnBhZ2luYXRpb25TZXQuZW1pdCgxMCk7XG4gICAgfVxuICB9XG5cbiAgc2V0UGFnaW5hdGlvblNpemUobnVtYmVyT2ZFbnRyaWVzOiBzdHJpbmcpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIGAke3RoaXMucGFnaW5hdGlvbklkZW50aWZpZXJ9JHtMaXN0Q29tcG9uZW50LlBBR0lOQVRJT05fU0laRX1gLFxuICAgICAgbnVtYmVyT2ZFbnRyaWVzXG4gICAgKTtcbiAgICB0aGlzLnBhZ2luYXRpb24uc2l6ZSA9IG51bWJlck9mRW50cmllcztcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUGFnaW5hdGlvbiBzZXQgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdGhpcyBsaXN0OiAnLCBudW1iZXJPZkVudHJpZXMpO1xuICAgIHRoaXMucGFnaW5hdGlvblNldC5lbWl0KG51bWJlck9mRW50cmllcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLmxvYWRQYWdpbmF0aW9uU2l6ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluaXRpYWxTb3J0U3RhdGUpIHtcbiAgICAgIHRoaXMuc29ydCQubmV4dCh0aGlzLmluaXRpYWxTb3J0U3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5pdGVtcyAmJiBjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1MaXN0SXRlbXNNYXRjaEZpZWxkcygpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzPy5pbml0aWFsU29ydFN0YXRlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc29ydCQubmV4dChjaGFuZ2VzPy5pbml0aWFsU29ydFN0YXRlPy5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1NlYXJjaGFibGUpIHtcbiAgICAgIGZyb21FdmVudCh0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaC5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gY3VzdG9tIHNlYXJjaCBjYWxsYmFrIGlzIHNwZWNpZmllZCwgcGVyaGFwcyB0byBxdWVyeSBvbiB0aGUgc2VydmVyIHNpZGVcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoLmVtaXQodmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1vZGVsID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtTGlzdEl0ZW1zTWF0Y2hGaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5maWVsZHMpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5saXN0SXRlbUZpZWxkcyA9IHRoaXMuZmllbGRzLm1hcChmaWVsZCA9PiAoe1xuICAgICAgICAgIGtleTogZmllbGQua2V5LFxuICAgICAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlIHx8ICcnLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnJlc29sdmVPYmplY3QoZmllbGQsIGl0ZW0pLFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DbGlja1JvdyhpdGVtKSB7XG4gICAgdGhpcy5yb3dDbGlja2VkLmVtaXQoaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZU9iamVjdChkZWZpbml0aW9uOiBhbnksIG9iajogYW55KSB7XG4gICAgY29uc3QgZGVmaW5pdGlvbktleSA9IGRlZmluaXRpb24ua2V5O1xuICAgIGNvbnN0IGN1c3RvbVByb3BTdHJpbmcgPSAnJC4nO1xuICAgIGNvbnN0IGtleSA9IGRlZmluaXRpb25LZXkuaW5jbHVkZXMoY3VzdG9tUHJvcFN0cmluZylcbiAgICAgID8gZGVmaW5pdGlvbktleS5zcGxpdChjdXN0b21Qcm9wU3RyaW5nKVsxXVxuICAgICAgOiBkZWZpbml0aW9uS2V5O1xuICAgIGNvbnN0IHJlc29sdmVkT2JqVmFsdWUgPSBfZ2V0KG9iaiwga2V5LCBudWxsKTtcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGVudFNlcnZpY2UuZ2V0KHJlc29sdmVkT2JqVmFsdWUsIGRlZmluaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHN3aXRjaFZpZXcodHlwZSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd2aWV3TGlzdEFzJywgdHlwZSk7XG4gICAgdGhpcy52aWV3TGlzdEFzID0gdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb3RhbFBhZ2VDb3VudCgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSAvIHRoaXMucGFnaW5hdGlvbi5zaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrUGFnaW5hdGlvbihwYWdlKSB7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ2xpY2tlZC5lbWl0KHBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUZpZWxkQ2xpY2soa2V5OiBzdHJpbmcsIHNvcnRhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZGVzYzogRGlyZWN0aW9uID0gJ0RFU0MnO1xuICAgIGNvbnN0IGFzYzogRGlyZWN0aW9uID0gJ0FTQyc7XG5cbiAgICBpZiAoIXNvcnRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzb3J0ID0+IHtcbiAgICAgIGxldCBuZXdTdGF0ZTogU29ydFN0YXRlO1xuXG4gICAgICBpZiAoc29ydC5zdGF0ZS5uYW1lID09PSBrZXkpIHtcbiAgICAgICAgaWYgKCFzb3J0LmlzU29ydGluZykge1xuICAgICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiBkZXNjfSwgaXNTb3J0aW5nOiB0cnVlfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc29ydC5zdGF0ZS5kaXJlY3Rpb24gPT09IGRlc2MpIHtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gey4uLnNvcnQsIHN0YXRlOiB7Li4uc29ydC5zdGF0ZSwgZGlyZWN0aW9uOiBhc2N9fTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IGZhbHNlfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1N0YXRlID0ge3N0YXRlOiB7bmFtZToga2V5LCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IHRydWV9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvcnQkLm5leHQobmV3U3RhdGUpO1xuICAgICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KG5ld1N0YXRlKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2PlxuICA8ZGl2ICpuZ0lmPVwiKGl0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMCkgfHwgaGVhZGVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHNlYXJjaC1ob2xkZXIgYmctbGlnaHRcIlxuICAgICAgW25nQ2xhc3NdPVwieydwYi00IHB0LTQnOiAhaGVhZGVyfVwiXG4gICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZSB8fCB2aWV3TW9kZSB8fCBoZWFkZXJcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1zZWxmLXN0YXJ0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIHJvd1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdJZj1cImlzU2VhcmNoYWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY29sLXNtLThcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdsaXN0LnNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICNzZWFyY2hCb3hcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzd2l0Y2gtdmlldy1ob2xkZXIgYnRuLWdyb3VwIGNvbC1zbS00IG10LTEgbXQtc20tMFwiXG4gICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAqbmdJZj1cInZpZXdNb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInZpZXdMaXN0QXMgPT09ICd0YWJsZScgPyAnYnRuLXByaW1hcnknIDogJ2J0bi1kZWZhdWx0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVmlldygndGFibGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdmlldy1oZWFkbGluZSB2aWV3LWljb25cIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidmlld0xpc3RBcyA9PT0gJ3RpbGUnID8gJ2J0bi1wcmltYXJ5JyA6ICdidG4tZGVmYXVsdCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFZpZXcoJ3RpbGUnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktdmlldy1tb2R1bGUgdmlldy1pY29uXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGFic11cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiAqbmdJZj1cIml0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIG5vU3dpcGVcIiAqbmdJZj1cIiF2aWV3TW9kZSB8fCB2aWV3TGlzdEFzID09PSAndGFibGUnXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyIG0tMFwiICpuZ0lmPVwic29ydCQgfCBhc3luYyBhcyBzb3J0XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGaWVsZENsaWNrKGZpZWxkLmtleSwgZmllbGQuc29ydGFibGUpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmaWVsZC5zb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAnaXMtYmVpbmctc29ydGVkJzogZmllbGQua2V5ID09PSBzb3J0LnN0YXRlLm5hbWUgJiYgc29ydC5pc1NvcnRpbmcsXG4gICAgICAgICAgICAgICAgYXNjZW5kaW5nOiBzb3J0LnN0YXRlLmRpcmVjdGlvbiA9PT0gJ0FTQycsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cbiAgICAgICAgICAgICAge3sgYWN0aW9uLmNvbHVtbk5hbWUgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjbGljay1hYmxlJzogdGhpcy5yb3dDbGlja2VkLm9ic2VydmVycy5sZW5ndGggPiAwfVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IGxpc3RGaWx0ZXI6IHNlYXJjaE1vZGVsOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrUm93KGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi10b3BcIiAqbmdGb3I9XCJsZXQgbGlzdEl0ZW1GaWVsZCBvZiBpdGVtLmxpc3RJdGVtRmllbGRzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgbGlzdEl0ZW1GaWVsZC50eXBlID09PSAnJyAmJiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlVHJhbnNsYXRpb25LZXk6ICd2aWV3VHlwZUNvbnZlcnRlci4nICsgbGlzdEl0ZW1GaWVsZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVUcmFuc2xhdGlvbjogJ3ZpZXdUeXBlQ29udmVydGVyLicgKyBsaXN0SXRlbUZpZWxkLnZhbHVlIHwgdHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgICAgfSBhcyB2YXJzXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBsaXN0SXRlbUZpZWxkLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8gdmFycy52YWx1ZVRyYW5zbGF0aW9uICE9PSB2YXJzLnZhbHVlVHJhbnNsYXRpb25LZXlcbiAgICAgICAgICAgICAgICAgICAgICA/IHZhcnMudmFsdWVUcmFuc2xhdGlvblxuICAgICAgICAgICAgICAgICAgICAgIDogbGlzdEl0ZW1GaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6ICctJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImxpc3RJdGVtRmllbGQudHlwZSA9PT0gJ2Ryb3Bkb3duQWN0aW9ucydcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3Bkb3duQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntsaXN0SXRlbUZpZWxkOiBsaXN0SXRlbUZpZWxkLCBpdGVtOiBpdGVtfVwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi10b3BcIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWN0aW9uLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jYWxsYmFjayhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJsYXN0Q29sdW1uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBsYXN0Q29sdW1uVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7aW5kZXg6IGksIGxlbmd0aDogaXRlbXMubGVuZ3RoLCBpdGVtOiBpdGVtfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCIoaXRlbXMgfCBsaXN0RmlsdGVyOiBzZWFyY2hNb2RlbCkubGVuZ3RoID09PSAwXCIgW2NvbFNwYW5dPVwiZmllbGRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICB7eyAnbGlzdC5ub01hdGNoaW5nSXRlbXMnIHwgdHJhbnNsYXRlIH19PGk+XCJ7eyBzZWFyY2hNb2RlbCB9fVwiPC9pPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cInZpZXdNb2RlICYmIHZpZXdMaXN0QXMgPT09ICd0aWxlJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGNvbC1zbS02IGNvbC14bC00IHAtMlwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMgfCBsaXN0RmlsdGVyOiBzZWFyY2hNb2RlbFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tSb3coaXRlbSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrLWFibGUgdGlsZS1ob2xkZXIgcC00XCI+XG4gICAgICAgICAgICA8ZGwgY2xhc3M9XCJyb3cgbWItMFwiICpuZ0Zvcj1cImxldCBsaXN0SXRlbUZpZWxkIG9mIGl0ZW0ubGlzdEl0ZW1GaWVsZHNcIj5cbiAgICAgICAgICAgICAgPGR0IGNsYXNzPVwiY29sLTEyIGNvbC1tZC01IHRleHQteGwtcmlnaHRcIj57eyBsaXN0SXRlbUZpZWxkLmxhYmVsIH19PC9kdD5cbiAgICAgICAgICAgICAgPGRkIGNsYXNzPVwiY29sLTEyIGNvbC1tZC03XCI+e3sgbGlzdEl0ZW1GaWVsZC52YWx1ZSB8fCAnLScgfX08L2RkPlxuICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cIihpdGVtcyB8IGxpc3RGaWx0ZXI6IHNlYXJjaE1vZGVsKS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICB7eyAnbGlzdC5ub01hdGNoaW5nSXRlbXMnIHwgdHJhbnNsYXRlIH19PGk+XCJ7eyBzZWFyY2hNb2RlbCB9fVwiPC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJwYWdpbmF0aW9uLWhvbGRlciBiZy1saWdodCBweC00IHB0LTQgcGItMiBvdmVyZmxvdy1hdXRvIHJvdyBtci0wIG1sLTBcIlxuICAgICpuZ0lmPVwicGFnaW5hdGlvbiAmJiBpdGVtcz8ubGVuZ3RoID4gMCAmJiBmaWVsZHM/Lmxlbmd0aCA+IDBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsb2F0LWxlZnQgcGFnZS1jb3VudCBjb2wtNFwiPlxuICAgICAgPHN0cm9uZz57e1xuICAgICAgICAnbGlzdC5jdXJyZW50UGFnZSdcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgOiB7Y3VycmVudDogcGFnaW5hdGlvbi5wYWdlID4gMCA/IHBhZ2luYXRpb24ucGFnZSA6IDEsIHRvdGFsOiBnZXRUb3RhbFBhZ2VDb3VudCgpfVxuICAgICAgfX08L3N0cm9uZz5cbiAgICAgIHt7XG4gICAgICAgIHBhZ2luYXRpb24uY29sbGVjdGlvblNpemUgPT09IDFcbiAgICAgICAgICA/ICgnbGlzdC5zaG93aW5nUmVzdWx0JyB8IHRyYW5zbGF0ZToge251bWJlcjogKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aH0pXG4gICAgICAgICAgOiAoJ2xpc3Quc2hvd2luZ1Jlc3VsdHMnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIG51bWJlcjogKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHRvdGFsOiBwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LWNlbnRlclwiPlxuICAgICAge3sgJ2xpc3Quc2hvdycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uLnNpemVcIiAobmdNb2RlbENoYW5nZSk9XCJzZXRQYWdpbmF0aW9uU2l6ZSgkZXZlbnQpXCI+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiMTBcIj4xMDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIjI1XCI+MjU8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCI1MFwiPjUwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiMTAwXCI+MTAwPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIHt7ICdsaXN0LmVudHJpZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICA8bmdiLXBhZ2luYXRpb25cbiAgICAgICAgKm5nSWY9XCJwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplID4gcGFnaW5hdGlvbi5zaXplXCJcbiAgICAgICAgY2xhc3M9XCJmbG9hdC1yaWdodFwiXG4gICAgICAgIFtjb2xsZWN0aW9uU2l6ZV09XCJwYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplXCJcbiAgICAgICAgWyhwYWdlKV09XCJwYWdpbmF0aW9uLnBhZ2VcIlxuICAgICAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvbi5zaXplXCJcbiAgICAgICAgW3JvdGF0ZV09XCJ0cnVlXCJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25DbGlja1BhZ2luYXRpb24ocGFnaW5hdGlvbi5wYWdlKVwiXG4gICAgICA+PC9uZ2ItcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBpZD1cIm5vLXJlc3VsdHNcIiBjbGFzcz1cInAtNVwiICpuZ0lmPVwiaXRlbXM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgIHt7ICdsaXN0Lm5vUmVzdWx0cycgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG5cbiAgPGRpdiBpZD1cIm5vLWZpZWxkLWRlZmluaXRpb25zXCIgY2xhc3M9XCJwLTVcIiAqbmdJZj1cIml0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID09PSAwXCI+XG4gICAge3sgJ2xpc3Qubm9GaWVsZERlZmluaXRpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duQWN0aW9ucyBsZXQtbGlzdEl0ZW1GaWVsZD1cImxpc3RJdGVtRmllbGRcIiBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJsaXN0SXRlbUZpZWxkPy52YWx1ZS5sZW5ndGggPiAwXCI+XG4gICAgPGFcbiAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGQtYmxvY2tcIlxuICAgICAgaWQ9XCJkcm9wZG93bk1lbnVcIlxuICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiYWN0aW9uLWljb24gaWNvbiBtZGkgbWRpLWRvdHMtdmVydGljYWxcIj48L2k+XG4gICAgPC9hPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51XCI+XG4gICAgICA8YVxuICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNhbGxiYWNrKGl0ZW0sICRldmVudClcIlxuICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcC0yXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBsaXN0SXRlbUZpZWxkLnZhbHVlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi5pY29uQ2xhc3MgIT09IG51bGxcIj5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCI+PC9pPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAge3sgYWN0aW9uPy5sYWJlbCB8fCAnLScgfX1cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7OztBQUVuQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxhQUFhO2FBQ1Qsb0JBQWUsR0FBRyxnQkFBZ0IsQUFBbkIsQ0FBb0I7SUErQmxELFlBQ1Usa0JBQXNDLEVBQ3RDLE1BQWlCO1FBRGpCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQXpCbEIsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUtuQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRSw0REFBNEQ7UUFDbEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLGdC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QUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFNaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGlyZWN0aW9uLCBTb3J0U3RhdGV9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Vmlld0NvbnRlbnRTZXJ2aWNlfSBmcm9tICcuLi92aWV3LWNvbnRlbnQvdmlldy1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtnZXQgYXMgX2dldH0gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkLiBQbGVhc2Ugc3dpdGNoIHRvIHVzaW5nIHZhbHRpbW8tY2FyYm9uLWxpc3QuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHN0YXRpYyBQQUdJTkFUSU9OX1NJWkUgPSAnUGFnaW5hdGlvblNpemUnO1xuXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBmaWVsZHM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHBhZ2luYXRpb24/OiBhbnk7XG4gIEBJbnB1dCgpIHZpZXdNb2RlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaGVhZGVyPzogYm9vbGVhbjtcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluaXRpYWxTb3J0U3RhdGU6IFNvcnRTdGF0ZTtcbiAgQElucHV0KCkgbGFzdENvbHVtblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uU2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBzZWFyY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTb3J0U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBoZWFkZXJQcm92aWRlZCA9IGZhbHNlO1xuICBwdWJsaWMgdmlld0xpc3RBczogc3RyaW5nO1xuICBwdWJsaWMgc2VhcmNoTW9kZWw6IHN0cmluZztcbiAgcHVibGljIHJlZ0V4cFN0cmluZ1JlbW92ZVVuZGVyc2NvcmUgPSAvXy9nO1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBzZWFyY2hCb3g6IEVsZW1lbnRSZWY7XG5cbiAgcmVhZG9ubHkgc29ydCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNvcnRTdGF0ZT4oe1xuICAgIHN0YXRlOiB7bmFtZTogJycsIGRpcmVjdGlvbjogJ0RFU0MnfSxcbiAgICBpc1NvcnRpbmc6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250ZW50U2VydmljZTogVmlld0NvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBOR1hMb2dnZXJcbiAgKSB7XG4gICAgdGhpcy52aWV3TGlzdEFzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZpZXdMaXN0QXMnKSB8fCAndGFibGUnO1xuICB9XG5cbiAgbG9hZFBhZ2luYXRpb25TaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJpZXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgIGAke3RoaXMucGFnaW5hdGlvbklkZW50aWZpZXJ9JHtMaXN0Q29tcG9uZW50LlBBR0lOQVRJT05fU0laRX1gXG4gICAgKTtcbiAgICBpZiAoZW50cmllcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uLnNpemUgPSArZW50cmllcztcbiAgICAgIHRoaXMucGFnaW5hdGlvblNldC5lbWl0KCtlbnRyaWVzKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdQYWdpbmF0aW9uIGxvYWRlZCBmcm9tIGxvY2FsIHN0b3JhZ2UgZm9yIHRoaXMgbGlzdC4gQ3VycmVudDogJywgZW50cmllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAnUGFnaW5hdGlvbiBkb2VzIE5PVCBleGlzdCBpbiBsb2NhbCBzdG9yYWdlIGZvciB0aGlzIGxpc3QuIFdpbGwgdXNlIGRlZmF1bHQuIENoYW5nZSBpdCB0byBjcmVhdGUgYW4gZW50cnkuJ1xuICAgICAgKTtcbiAgICAgIHRoaXMucGFnaW5hdGlvblNldC5lbWl0KDEwKTtcbiAgICB9XG4gIH1cblxuICBzZXRQYWdpbmF0aW9uU2l6ZShudW1iZXJPZkVudHJpZXM6IHN0cmluZykge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYCR7dGhpcy5wYWdpbmF0aW9uSWRlbnRpZmllcn0ke0xpc3RDb21wb25lbnQuUEFHSU5BVElPTl9TSVpFfWAsXG4gICAgICBudW1iZXJPZkVudHJpZXNcbiAgICApO1xuICAgIHRoaXMucGFnaW5hdGlvbi5zaXplID0gbnVtYmVyT2ZFbnRyaWVzO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdQYWdpbmF0aW9uIHNldCBpbiBsb2NhbCBzdG9yYWdlIGZvciB0aGlzIGxpc3Q6ICcsIG51bWJlck9mRW50cmllcyk7XG4gICAgdGhpcy5wYWdpbmF0aW9uU2V0LmVtaXQobnVtYmVyT2ZFbnRyaWVzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMubG9hZFBhZ2luYXRpb25TaXplKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5pdGlhbFNvcnRTdGF0ZSkge1xuICAgICAgdGhpcy5zb3J0JC5uZXh0KHRoaXMuaW5pdGlhbFNvcnRTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLml0ZW1zICYmIGNoYW5nZXMuaXRlbXMuY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybUxpc3RJdGVtc01hdGNoRmllbGRzKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXM/LmluaXRpYWxTb3J0U3RhdGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5zb3J0JC5uZXh0KGNoYW5nZXM/LmluaXRpYWxTb3J0U3RhdGU/LmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlzU2VhcmNoYWJsZSkge1xuICAgICAgZnJvbUV2ZW50KHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBjdXN0b20gc2VhcmNoIGNhbGxiYWsgaXMgc3BlY2lmaWVkLCBwZXJoYXBzIHRvIHF1ZXJ5IG9uIHRoZSBzZXJ2ZXIgc2lkZVxuICAgICAgICAgICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm1MaXN0SXRlbXNNYXRjaEZpZWxkcygpIHtcbiAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLmZpZWxkcykge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpdGVtLmxpc3RJdGVtRmllbGRzID0gdGhpcy5maWVsZHMubWFwKGZpZWxkID0+ICh7XG4gICAgICAgICAga2V5OiBmaWVsZC5rZXksXG4gICAgICAgICAgbGFiZWw6IGZpZWxkLmxhYmVsLFxuICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUgfHwgJycsXG4gICAgICAgICAgdmFsdWU6IHRoaXMucmVzb2x2ZU9iamVjdChmaWVsZCwgaXRlbSksXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrUm93KGl0ZW0pIHtcbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlT2JqZWN0KGRlZmluaXRpb246IGFueSwgb2JqOiBhbnkpIHtcbiAgICBjb25zdCBkZWZpbml0aW9uS2V5ID0gZGVmaW5pdGlvbi5rZXk7XG4gICAgY29uc3QgY3VzdG9tUHJvcFN0cmluZyA9ICckLic7XG4gICAgY29uc3Qga2V5ID0gZGVmaW5pdGlvbktleS5pbmNsdWRlcyhjdXN0b21Qcm9wU3RyaW5nKVxuICAgICAgPyBkZWZpbml0aW9uS2V5LnNwbGl0KGN1c3RvbVByb3BTdHJpbmcpWzFdXG4gICAgICA6IGRlZmluaXRpb25LZXk7XG4gICAgY29uc3QgcmVzb2x2ZWRPYmpWYWx1ZSA9IF9nZXQob2JqLCBrZXksIG51bGwpO1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZW50U2VydmljZS5nZXQocmVzb2x2ZWRPYmpWYWx1ZSwgZGVmaW5pdGlvbik7XG4gIH1cblxuICBwdWJsaWMgc3dpdGNoVmlldyh0eXBlKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ZpZXdMaXN0QXMnLCB0eXBlKTtcbiAgICB0aGlzLnZpZXdMaXN0QXMgPSB0eXBlO1xuICB9XG5cbiAgcHVibGljIGdldFRvdGFsUGFnZUNvdW50KCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5wYWdpbmF0aW9uLmNvbGxlY3Rpb25TaXplIC8gdGhpcy5wYWdpbmF0aW9uLnNpemUpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tQYWdpbmF0aW9uKHBhZ2UpIHtcbiAgICB0aGlzLnBhZ2luYXRpb25DbGlja2VkLmVtaXQocGFnZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRmllbGRDbGljayhrZXk6IHN0cmluZywgc29ydGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBkZXNjOiBEaXJlY3Rpb24gPSAnREVTQyc7XG4gICAgY29uc3QgYXNjOiBEaXJlY3Rpb24gPSAnQVNDJztcblxuICAgIGlmICghc29ydGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHNvcnQgPT4ge1xuICAgICAgbGV0IG5ld1N0YXRlOiBTb3J0U3RhdGU7XG5cbiAgICAgIGlmIChzb3J0LnN0YXRlLm5hbWUgPT09IGtleSkge1xuICAgICAgICBpZiAoIXNvcnQuaXNTb3J0aW5nKSB7XG4gICAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246IGRlc2N9LCBpc1NvcnRpbmc6IHRydWV9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzb3J0LnN0YXRlLmRpcmVjdGlvbiA9PT0gZGVzYykge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB7Li4uc29ydCwgc3RhdGU6IHsuLi5zb3J0LnN0YXRlLCBkaXJlY3Rpb246IGFzY319O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHtzdGF0ZTogey4uLnNvcnQuc3RhdGUsIGRpcmVjdGlvbjogZGVzY30sIGlzU29ydGluZzogZmFsc2V9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3U3RhdGUgPSB7c3RhdGU6IHtuYW1lOiBrZXksIGRpcmVjdGlvbjogZGVzY30sIGlzU29ydGluZzogdHJ1ZX07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc29ydCQubmV4dChuZXdTdGF0ZSk7XG4gICAgICB0aGlzLnNvcnRDaGFuZ2VkLmVtaXQobmV3U3RhdGUpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXY+XG4gIDxkaXYgKm5nSWY9XCIoaXRlbXM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzPy5sZW5ndGggPiAwKSB8fCBoZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgc2VhcmNoLWhvbGRlciBiZy1saWdodFwiXG4gICAgICBbbmdDbGFzc109XCJ7J3BiLTQgcHQtNCc6ICFoZWFkZXJ9XCJcbiAgICAgICpuZ0lmPVwiaXNTZWFyY2hhYmxlIHx8IHZpZXdNb2RlIHx8IGhlYWRlclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImFsaWduLXNlbGYtc3RhcnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG8gcm93XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICpuZ0lmPVwiaXNTZWFyY2hhYmxlXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBjb2wtc20tOFwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2xpc3Quc2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgI3NlYXJjaEJveFxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN3aXRjaC12aWV3LWhvbGRlciBidG4tZ3JvdXAgY29sLXNtLTQgbXQtMSBtdC1zbS0wXCJcbiAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICpuZ0lmPVwidmlld01vZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidmlld0xpc3RBcyA9PT0gJ3RhYmxlJyA/ICdidG4tcHJpbWFyeScgOiAnYnRuLWRlZmF1bHQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hWaWV3KCd0YWJsZScpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS12aWV3LWhlYWRsaW5lIHZpZXctaWNvblwiPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ2aWV3TGlzdEFzID09PSAndGlsZScgPyAnYnRuLXByaW1hcnknIDogJ2J0bi1kZWZhdWx0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic3dpdGNoVmlldygndGlsZScpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS12aWV3LW1vZHVsZSB2aWV3LWljb25cIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJzXVwiPjwvbmctY29udGVudD5cblxuICA8ZGl2ICpuZ0lmPVwiaXRlbXM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzPy5sZW5ndGggPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgbm9Td2lwZVwiICpuZ0lmPVwiIXZpZXdNb2RlIHx8IHZpZXdMaXN0QXMgPT09ICd0YWJsZSdcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtaG92ZXIgbS0wXCIgKm5nSWY9XCJzb3J0JCB8IGFzeW5jIGFzIHNvcnRcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUZpZWxkQ2xpY2soZmllbGQua2V5LCBmaWVsZC5zb3J0YWJsZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc29ydGFibGU6IGZpZWxkLnNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICdpcy1iZWluZy1zb3J0ZWQnOiBmaWVsZC5rZXkgPT09IHNvcnQuc3RhdGUubmFtZSAmJiBzb3J0LmlzU29ydGluZyxcbiAgICAgICAgICAgICAgICBhc2NlbmRpbmc6IHNvcnQuc3RhdGUuZGlyZWN0aW9uID09PSAnQVNDJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsIH19XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgICAgICAgICAgICB7eyBhY3Rpb24uY29sdW1uTmFtZSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NsaWNrLWFibGUnOiB0aGlzLnJvd0NsaWNrZWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDB9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWw7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tSb3coaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLXRvcFwiICpuZ0Zvcj1cImxldCBsaXN0SXRlbUZpZWxkIG9mIGl0ZW0ubGlzdEl0ZW1GaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBsaXN0SXRlbUZpZWxkLnR5cGUgPT09ICcnICYmIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVUcmFuc2xhdGlvbktleTogJ3ZpZXdUeXBlQ29udmVydGVyLicgKyBsaXN0SXRlbUZpZWxkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVRyYW5zbGF0aW9uOiAndmlld1R5cGVDb252ZXJ0ZXIuJyArIGxpc3RJdGVtRmllbGQudmFsdWUgfCB0cmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgICB9IGFzIHZhcnNcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIGxpc3RJdGVtRmllbGQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyB2YXJzLnZhbHVlVHJhbnNsYXRpb24gIT09IHZhcnMudmFsdWVUcmFuc2xhdGlvbktleVxuICAgICAgICAgICAgICAgICAgICAgID8gdmFycy52YWx1ZVRyYW5zbGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgOiBsaXN0SXRlbUZpZWxkLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogJy0nXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdEl0ZW1GaWVsZC50eXBlID09PSAnZHJvcGRvd25BY3Rpb25zJ1wiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJvcGRvd25BY3Rpb25zXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2xpc3RJdGVtRmllbGQ6IGxpc3RJdGVtRmllbGQsIGl0ZW06IGl0ZW19XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLXRvcFwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhY3Rpb24uaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNhbGxiYWNrKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImxhc3RDb2x1bW5UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGxhc3RDb2x1bW5UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtpbmRleDogaSwgbGVuZ3RoOiBpdGVtcy5sZW5ndGgsIGl0ZW06IGl0ZW19XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cIihpdGVtcyB8IGxpc3RGaWx0ZXI6IHNlYXJjaE1vZGVsKS5sZW5ndGggPT09IDBcIiBbY29sU3Bhbl09XCJmaWVsZHMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIHt7ICdsaXN0Lm5vTWF0Y2hpbmdJdGVtcycgfCB0cmFuc2xhdGUgfX08aT5cInt7IHNlYXJjaE1vZGVsIH19XCI8L2k+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwidmlld01vZGUgJiYgdmlld0xpc3RBcyA9PT0gJ3RpbGUnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHAtMlwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTYgY29sLXhsLTQgcC0yXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyB8IGxpc3RGaWx0ZXI6IHNlYXJjaE1vZGVsXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1JvdyhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2stYWJsZSB0aWxlLWhvbGRlciBwLTRcIj5cbiAgICAgICAgICAgIDxkbCBjbGFzcz1cInJvdyBtYi0wXCIgKm5nRm9yPVwibGV0IGxpc3RJdGVtRmllbGQgb2YgaXRlbS5saXN0SXRlbUZpZWxkc1wiPlxuICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTUgdGV4dC14bC1yaWdodFwiPnt7IGxpc3RJdGVtRmllbGQubGFiZWwgfX08L2R0PlxuICAgICAgICAgICAgICA8ZGQgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTdcIj57eyBsaXN0SXRlbUZpZWxkLnZhbHVlIHx8ICctJyB9fTwvZGQ+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ0lmPVwiKGl0ZW1zIHwgbGlzdEZpbHRlcjogc2VhcmNoTW9kZWwpLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIHt7ICdsaXN0Lm5vTWF0Y2hpbmdJdGVtcycgfCB0cmFuc2xhdGUgfX08aT5cInt7IHNlYXJjaE1vZGVsIH19XCI8L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInBhZ2luYXRpb24taG9sZGVyIGJnLWxpZ2h0IHB4LTQgcHQtNCBwYi0yIG92ZXJmbG93LWF1dG8gcm93IG1yLTAgbWwtMFwiXG4gICAgKm5nSWY9XCJwYWdpbmF0aW9uICYmIGl0ZW1zPy5sZW5ndGggPiAwICYmIGZpZWxkcz8ubGVuZ3RoID4gMFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZmxvYXQtbGVmdCBwYWdlLWNvdW50IGNvbC00XCI+XG4gICAgICA8c3Ryb25nPnt7XG4gICAgICAgICdsaXN0LmN1cnJlbnRQYWdlJ1xuICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICA6IHtjdXJyZW50OiBwYWdpbmF0aW9uLnBhZ2UgPiAwID8gcGFnaW5hdGlvbi5wYWdlIDogMSwgdG90YWw6IGdldFRvdGFsUGFnZUNvdW50KCl9XG4gICAgICB9fTwvc3Ryb25nPlxuICAgICAge3tcbiAgICAgICAgcGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZSA9PT0gMVxuICAgICAgICAgID8gKCdsaXN0LnNob3dpbmdSZXN1bHQnIHwgdHJhbnNsYXRlOiB7bnVtYmVyOiAoaXRlbXMgfCBsaXN0RmlsdGVyOiBzZWFyY2hNb2RlbCkubGVuZ3RofSlcbiAgICAgICAgICA6ICgnbGlzdC5zaG93aW5nUmVzdWx0cydcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgbnVtYmVyOiAoaXRlbXMgfCBsaXN0RmlsdGVyOiBzZWFyY2hNb2RlbCkubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgdG90YWw6IHBhZ2luYXRpb24uY29sbGVjdGlvblNpemUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC00IHRleHQtY2VudGVyXCI+XG4gICAgICB7eyAnbGlzdC5zaG93JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInBhZ2luYXRpb24uc2l6ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInNldFBhZ2luYXRpb25TaXplKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCIxMFwiPjEwPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiMjVcIj4yNTwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIjUwXCI+NTA8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCIxMDBcIj4xMDA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAge3sgJ2xpc3QuZW50cmllcycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgIDxuZ2ItcGFnaW5hdGlvblxuICAgICAgICAqbmdJZj1cInBhZ2luYXRpb24uY29sbGVjdGlvblNpemUgPiBwYWdpbmF0aW9uLnNpemVcIlxuICAgICAgICBjbGFzcz1cImZsb2F0LXJpZ2h0XCJcbiAgICAgICAgW2NvbGxlY3Rpb25TaXplXT1cInBhZ2luYXRpb24uY29sbGVjdGlvblNpemVcIlxuICAgICAgICBbKHBhZ2UpXT1cInBhZ2luYXRpb24ucGFnZVwiXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uLnNpemVcIlxuICAgICAgICBbcm90YXRlXT1cInRydWVcIlxuICAgICAgICAocGFnZUNoYW5nZSk9XCJvbkNsaWNrUGFnaW5hdGlvbihwYWdpbmF0aW9uLnBhZ2UpXCJcbiAgICAgID48L25nYi1wYWdpbmF0aW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGlkPVwibm8tcmVzdWx0c1wiIGNsYXNzPVwicC01XCIgKm5nSWY9XCJpdGVtcz8ubGVuZ3RoID09PSAwXCI+XG4gICAge3sgJ2xpc3Qubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cblxuICA8ZGl2IGlkPVwibm8tZmllbGQtZGVmaW5pdGlvbnNcIiBjbGFzcz1cInAtNVwiICpuZ0lmPVwiaXRlbXM/Lmxlbmd0aCA+IDAgJiYgZmllbGRzPy5sZW5ndGggPT09IDBcIj5cbiAgICB7eyAnbGlzdC5ub0ZpZWxkRGVmaW5pdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25BY3Rpb25zIGxldC1saXN0SXRlbUZpZWxkPVwibGlzdEl0ZW1GaWVsZFwiIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImxpc3RJdGVtRmllbGQ/LnZhbHVlLmxlbmd0aCA+IDBcIj5cbiAgICA8YVxuICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGUgZC1ibG9ja1wiXG4gICAgICBpZD1cImRyb3Bkb3duTWVudVwiXG4gICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJhY3Rpb24taWNvbiBpY29uIG1kaSBtZGktZG90cy12ZXJ0aWNhbFwiPjwvaT5cbiAgICA8L2E+XG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIj5cbiAgICAgIDxhXG4gICAgICAgIChjbGljayk9XCJhY3Rpb24uY2FsbGJhY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwLTJcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGxpc3RJdGVtRmllbGQudmFsdWVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLmljb25DbGFzcyAhPT0gbnVsbFwiPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cImFjdGlvbi5pY29uQ2xhc3NcIj48L2k+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB7eyBhY3Rpb24/LmxhYmVsIHx8ICctJyB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -5506,6 +5506,7 @@ class CarbonListComponent {
5506
5506
  this.rowClicked = new EventEmitter();
5507
5507
  this.paginationClicked = new EventEmitter();
5508
5508
  this.paginationSet = new EventEmitter();
5509
+ // eslint-disable-next-line @angular-eslint/no-output-native
5509
5510
  this.search = new EventEmitter();
5510
5511
  this.sortChanged = new EventEmitter();
5511
5512
  this.moveRow = new EventEmitter();
@@ -6315,6 +6316,7 @@ class ListComponent {
6315
6316
  this.rowClicked = new EventEmitter();
6316
6317
  this.paginationClicked = new EventEmitter();
6317
6318
  this.paginationSet = new EventEmitter();
6319
+ // eslint-disable-next-line @angular-eslint/no-output-native
6318
6320
  this.search = new EventEmitter();
6319
6321
  this.sortChanged = new EventEmitter();
6320
6322
  this.headerProvided = false;