@smartbit4all/ng-client 1.1.23 → 1.1.24

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.
@@ -109,6 +109,8 @@ export class SmartViewContextService {
109
109
  }
110
110
  clearSessionStorage() {
111
111
  sessionStorage.clear();
112
+ this.openedViewData = [];
113
+ this.openedViewUuids = [];
112
114
  }
113
115
  setTabId(tabId) {
114
116
  sessionStorage.setItem(this.tabIdName, tabId);
@@ -198,7 +200,7 @@ export class SmartViewContextService {
198
200
  uuid: this.viewContext?.uuid,
199
201
  });
200
202
  }
201
- closeView(view, keepInSession) {
203
+ closeView(view) {
202
204
  let viewHandler = this.viewHandlers.find((handler) => handler.name === view.viewName);
203
205
  if (!viewHandler) {
204
206
  throw new Error(`SmartViewHandlerModel was not found by view name: ${view.viewName}`);
@@ -226,9 +228,7 @@ export class SmartViewContextService {
226
228
  if (index >= 0) {
227
229
  this.openedViewUuids.splice(index, 1);
228
230
  this.openedViewData.splice(index, 1);
229
- if (!keepInSession) {
230
- sessionStorage.removeItem(view.viewName);
231
- }
231
+ sessionStorage.removeItem(view.viewName);
232
232
  }
233
233
  this.updateViewContext({
234
234
  updates: [
@@ -255,7 +255,7 @@ export class SmartViewContextService {
255
255
  this.openView(view);
256
256
  break;
257
257
  case ViewState.ToClose:
258
- this.closeView(view, false);
258
+ this.closeView(view);
259
259
  break;
260
260
  }
261
261
  });
@@ -264,7 +264,7 @@ export class SmartViewContextService {
264
264
  .includes(viewData.uuid));
265
265
  if (viewDataToClose?.length) {
266
266
  viewDataToClose.map((viewData) => {
267
- this.closeView(viewData, true);
267
+ this.closeView(viewData);
268
268
  });
269
269
  }
270
270
  this.viewContextHasBeenSynced.next();
@@ -474,4 +474,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
474
474
  providedIn: 'root',
475
475
  }]
476
476
  }], ctorParameters: function () { return []; } });
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBY0wsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7QUFZbkYsTUFBTSxPQUFPLHVCQUF1QjtJQTBDbEMsWUFDVSxJQUFpQixFQUNqQixPQUE0QixFQUM1QixVQUFrQyxFQUNsQyxNQUEwQixFQUMxQixlQUFnQztRQUpoQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQTlDbEMsY0FBUyxHQUFXLGlCQUFpQixDQUFDO1FBQ3RDLHdCQUFtQixHQUFXLGlCQUFpQixDQUFDO1FBSWhELGlCQUFZLEdBQWlDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekQsb0JBQWUsR0FBa0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxtQkFBYyxHQUFvQixJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9DLDZCQUF3QixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFELDZCQUF3QixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSXhELGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7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LElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsdURBQXVEO1NBQy9FO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLE9BQU87U0FDUjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs2R0F0Q1UsZUFBZTtpSEFBZixlQUFlLGNBRmQsTUFBTTs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWFydGRpYWxvZ1NlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFNtYXJ0TmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL25hdmlnYXRpb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU21hcnRTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vc21hcnQtc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtY2xpZW50L3NtYXJ0LnN1YmplY3QnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudE1vZGVsLFxyXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxyXG4gIERhdGFDaGFuZ2UsXHJcbiAgTWVzc2FnZURhdGEsXHJcbiAgTWVzc2FnZVJlc3VsdCxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFZpZXdDb25zdHJhaW50LFxyXG4gIFZpZXdDb250ZXh0Q2hhbmdlLFxyXG4gIFZpZXdDb250ZXh0RGF0YSxcclxuICBWaWV3Q29udGV4dFVwZGF0ZSxcclxuICBWaWV3RGF0YSxcclxuICBWaWV3U2VydmljZSxcclxuICBWaWV3U3RhdGUsXHJcbiAgVmlld1R5cGUsXHJcbn0gZnJvbSAnLi9hcGknO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0VHJhbnNsYXRlU2VydmljZSxcclxuICBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IsXHJcbiAgU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyxcclxuICBTbWFydFZpZXdEaWFsb2dSZWYsXHJcbiAgU21hcnRWaWV3SGFuZGxlck1vZGVsLFxyXG59IGZyb20gJy4vc21hcnQtdmlldy1jb250ZXh0Lm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSB0YWJJZE5hbWU6IHN0cmluZyA9ICd2aWV3Q29udGV4dFV1aWQnO1xyXG4gIHByaXZhdGUgdGFiSWRodHRwSGVhZGVyTmFtZTogc3RyaW5nID0gJ3ZpZXdDb250ZXh0VXVpZCc7XHJcbiAgcHVibGljIG1lc3NhZ2VEaWFsb2duYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSB1cmw/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB2aWV3Q29udGV4dD86IFZpZXdDb250ZXh0RGF0YTtcclxuICBwcml2YXRlIHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPiA9IG5ldyBBcnJheSgpO1xyXG4gIHByaXZhdGUgb3BlbmVkVmlld1V1aWRzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5KCk7XHJcbiAgcHJpdmF0ZSBvcGVuZWRWaWV3RGF0YTogQXJyYXk8Vmlld0RhdGE+ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gIHB1YmxpYyB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIHZpZXdDb250ZXh0SGFzQmVlblN5bmNlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBzbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzPzogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycztcclxuXHJcbiAgcHVibGljIG9wZW5TbWFydExpbms6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHB1YmxpYyBpc09wZW5pbmdTbWFydExpbms6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWZzOiBTbWFydFZpZXdEaWFsb2dSZWZbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGFjdGlvbkRlc2NyaXB0b3JzPzogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPjtcclxuXHJcbiAgcHVibGljIGNvbW1vbkZlZWRiYWNrVGV4dD86IHN0cmluZztcclxuXHJcbiAgcHVibGljIHNtYXJ0QXBpQ2xpZW50czogTWFwPHN0cmluZywgU21hcnRTdWJqZWN0PGFueT4+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBwdWJsaWMgc2V0IHRyYW5zbGF0ZVNlcnZpY2UodHJhbnNsYXRlU2VydmljZTogU21hcnRUcmFuc2xhdGVTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQubmV4dCgpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0cmFuc2xhdGVTZXJ2aWNlKCk6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodGhpcy5fdHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xyXG4gIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcclxuICAgIHByaXZhdGUgc2Vzc2lvbjogU21hcnRTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvbjogU21hcnROYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBTbWFydGRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVF1ZXVlU2VydmljZTogQXBpUXVldWVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZm9sbG93KHV1aWQ6IHN0cmluZywgZGV0ZWN0Q2hhbmdlOiBTbWFydFN1YmplY3Q8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydEFwaUNsaWVudHMuc2V0KHV1aWQsIGRldGVjdENoYW5nZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyB1bmZvbGxvdyh1dWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRBcGlDbGllbnRzLmRlbGV0ZSh1dWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBY3Rpb25EZXNjcmlwdG9ycyhhY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPik6IHZvaWQge1xyXG4gICAgdGhpcy5hY3Rpb25EZXNjcmlwdG9ycyA9IGFjdGlvbkRlc2NyaXB0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdGlvbkRlc2NyaXB0b3JzKCk6IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj4gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0aGlzLmFjdGlvbkRlc2NyaXB0b3JzKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGFjdGlvbiBkZXNjcmlwdG9ycyBoYXMgYmVlbiBzZXQgdG8gVmlld0NvbnRleHQuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25EZXNjcmlwdG9ycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaWV3SGFuZGxlcnModmlld0hhbmRsZXJzOiBBcnJheTxTbWFydFZpZXdIYW5kbGVyTW9kZWw+KTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdIYW5kbGVycyA9IHZpZXdIYW5kbGVycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaWV3QXBpRXJyb3JzKHZpZXdBcGlFcnJvcnM6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyA9IHZpZXdBcGlFcnJvcnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TWVzc2FnZURpYWxvZ05hbWUobWVzc2FnZURpYWxvZ05hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSA9IG1lc3NhZ2VEaWFsb2dOYW1lO1xyXG4gICAgdGhpcy52aWV3SGFuZGxlcnMucHVzaCh7XHJcbiAgICAgIG5hbWU6IG1lc3NhZ2VEaWFsb2dOYW1lLFxyXG4gICAgICBjb21wb25lbnQ6IE1lc3NhZ2VEaWFsb2dDb21wb25lbnQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlldy5jb25maWd1cmF0aW9uLmJhc2VQYXRoID0gdGhpcy51cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVybCA9IHVybCArICcvdmlldyc7XHJcbiAgICB0aGlzLnNldFVwVXJsRm9yVmlld1NlcnZpY2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbmRTeW5jVmlld0NvbnRleHQodXVpZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF1dWlkKSB7XHJcbiAgICAgIHV1aWQgPSB0aGlzLmdldFV1aWRPZlBhZ2UodGhpcy50YWJJZE5hbWUpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5zeW5jVmlldygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnRleHQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcclxuICAgIHRoaXMudmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnRleHQodXVpZCkudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3Q29udGV4dCBkb2VzIG5vdCBleGlzdCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnRleHREYXRhQnlQYWdlTmFtZShwYWdlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWaWV3RGF0YT4ge1xyXG4gICAgaWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XHJcbiAgICAgIGxldCB2aWV3Q29udGV4dFV1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMudGFiSWROYW1lKTtcclxuICAgICAgaWYgKCF2aWV3Q29udGV4dFV1aWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWQhJyk7XHJcbiAgICAgIH1cclxuICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh2aWV3Q29udGV4dFV1aWQhKTtcclxuICAgIH1cclxuICAgIGxldCBwYWdlVXVpZCA9IHRoaXMuZ2V0VXVpZE9mUGFnZShwYWdlTmFtZSk7XHJcblxyXG4gICAgbGV0IHZpZXdDb250ZXh0QnlQYWdlTmFtZSA9IHRoaXMudmlld0NvbnRleHQ/LnZpZXdzLmZpbmQoKHZpZXcpID0+IHZpZXcudXVpZCA9PT0gcGFnZVV1aWQpO1xyXG4gICAgaWYgKCF2aWV3Q29udGV4dEJ5UGFnZU5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgVmlld0RhdGEgb2YgJHtwYWdlTmFtZX0gaXMgbm90IGZvdW5kIWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZpZXdDb250ZXh0QnlQYWdlTmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVWaWV3Q29udGV4dChcclxuICAgIHZpZXdDb250ZXh0VXBkYXRlOiBWaWV3Q29udGV4dFVwZGF0ZVxyXG4gICk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkPiB7XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LnVwZGF0ZVZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXBkYXRlKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRhYklkKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy50YWJJZE5hbWUsIHRhYklkKTtcclxuICAgIHRoaXMuc2Vzc2lvbi5hZGRIZWFkZXJQYXJhbSh7XHJcbiAgICAgIGhlYWRlck5hbWU6IHRoaXMudGFiSWRodHRwSGVhZGVyTmFtZSxcclxuICAgICAgdmFsdWU6IHRhYklkLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc3RhcnRWaWV3Q29udGV4dCgpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xyXG4gICAgdGhpcy5jbGVhclNlc3Npb25TdG9yYWdlKCk7XHJcblxyXG4gICAgbGV0IG5ld1ZpZXdDb250ZXh0OiBWaWV3Q29udGV4dERhdGEgfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLnZpZXdcclxuICAgICAgLmNyZWF0ZVZpZXdDb250ZXh0KClcclxuICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKCFuZXdWaWV3Q29udGV4dCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFZpZXdDb250ZXh0IHdhcyBjcmVhdGVkJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gbmV3Vmlld0NvbnRleHQ7XHJcbiAgICB0aGlzLnNldFRhYklkKG5ld1ZpZXdDb250ZXh0LnV1aWQhKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKHV1aWQ/OiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb250ZXh0RGF0YT4ge1xyXG4gICAgaWYgKHRoaXMudmlld0hhbmRsZXJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgXCJUaGVyZSBhcmVuJ3QgYW55IHZpZXdIYW5kbGVycyBpbiBTbWFydFZpZXdDb250ZXh0U2VydmljZSEgUHJvdmlkZSBzb21lIHRvIHVzZSBpdHMgZnVuY3Rpb25zLlwiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubWVzc2FnZURpYWxvZ25hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgbWVzc2FnZURpYWxvZ05hbWUgcHJvdmlkZWQgYnkgdGhlIGJhY2tlbmQgaGFzIG5vdCBiZWVuIHNldC4nKTtcclxuICAgIH1cclxuICAgIGlmICh1dWlkKSB7XHJcbiAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB0aGlzLnNlc3Npb24uaGVhZGVyc1VwZGF0ZWQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcclxuICAgICAgICAgIHRoaXMuc2V0VGFiSWQodXVpZCEpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFZpZXdDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRUYWJJZCh1dWlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRWaWV3Q29udGV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0ITtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuVmlldyh2aWV3OiBWaWV3RGF0YSk6IHZvaWQge1xyXG4gICAgbGV0IHZpZXdIYW5kbGVyOiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgfCB1bmRlZmluZWQgPSB0aGlzLnZpZXdIYW5kbGVycy5maW5kKFxyXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdmlld0hhbmRsZXIpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcclxuICAgIH1cclxuICAgIGlmICh2aWV3LnR5cGUgPT09IFZpZXdUeXBlLkRpYWxvZykge1xyXG4gICAgICBpZiAoIXZpZXdIYW5kbGVyLmNvbXBvbmVudCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBDb21wb25lbnQgaXMgdW5kZWZpbmVkIGluIFNtYXJ0Vmlld0hhbmRsZXJNb2RlbCB3aXRoIG5hbWU6ICR7dmlldy52aWV3TmFtZX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbkNvbXBvbmVudEFzRGlhbG9nKHZpZXdIYW5kbGVyLmNvbXBvbmVudCwgdmlld0hhbmRsZXIubmFtZSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgICAvLyBpZiAodmlldy52aWV3TmFtZSA9PT0gdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSkge1xyXG4gICAgICAvLyAgIGlmICh2aWV3Lm1lc3NhZ2U/Lm9wdGlvbnMgJiYgdmlldy5tZXNzYWdlLm9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmcy5wdXNoKHtcclxuICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXHJcbiAgICAgICAgZGlhbG9nUmVmLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcclxuICAgICAgaWYgKHZpZXdIYW5kbGVyLnJvdXRlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvdXRlIGlzIHVuZGVmaW5lZCBpbiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2l0aCBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uLm5hdmlnYXRlVG8odmlld0hhbmRsZXIucm91dGUuc3BsaXQoJy8nKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuT3BlbmVkO1xyXG5cclxuICAgIHRoaXMub3BlbmVkVmlld1V1aWRzLnB1c2godmlldy51dWlkKTtcclxuICAgIHRoaXMub3BlbmVkVmlld0RhdGEucHVzaCh2aWV3KTtcclxuXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHZpZXcudmlld05hbWUsIHZpZXcudXVpZCk7XHJcbiAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZC5uZXh0KHZpZXcudmlld05hbWUpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xyXG4gICAgICB1cGRhdGVzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc3RhdGU6IFZpZXdTdGF0ZS5PcGVuZWQsXHJcbiAgICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgdXVpZDogdGhpcy52aWV3Q29udGV4dD8udXVpZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVmlldyh2aWV3OiBWaWV3RGF0YSwga2VlcEluU2Vzc2lvbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IHZpZXdIYW5kbGVyOiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgfCB1bmRlZmluZWQgPSB0aGlzLnZpZXdIYW5kbGVycy5maW5kKFxyXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5uYW1lID09PSB2aWV3LnZpZXdOYW1lXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdmlld0hhbmRsZXIpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2FzIG5vdCBmb3VuZCBieSB2aWV3IG5hbWU6ICR7dmlldy52aWV3TmFtZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5EaWFsb2cpIHtcclxuICAgICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nUmVmcy5maW5kKFxyXG4gICAgICAgIChkaWFsb2dSZWY6IFNtYXJ0Vmlld0RpYWxvZ1JlZikgPT4gZGlhbG9nUmVmLnV1aWQgPT09IHZpZXcudXVpZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZGlhbG9nUmVmKSB7XHJcbiAgICAgICAgZGlhbG9nUmVmLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZGlhbG9nUmVmcy5pbmRleE9mKGRpYWxvZ1JlZik7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWZzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dSZWYgaXMgbm90IGZvdW5kIGJ5IHV1aWQuJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5Ob3JtYWwpIHtcclxuICAgICAgLy8gVE9ETzogY2xvc2Ugbm9ybWFsIHBhZ2U/Pz9cclxuICAgICAgLy8gdGhpcy5uYXZpZ2F0aW9uLm5hdmlnYXRlVG8odmlld0hhbmRsZXIucm91dGUuc3BsaXQoXCIvXCIpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHR5cGUgb2YgdGhlIHZpZXcgYW5kIGl0cyB2aWV3SGFuZGxlciBpcyBub3QgdGhlIHNhbWUhJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlldy5zdGF0ZSA9IFZpZXdTdGF0ZS5DbG9zZWQ7XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5lZFZpZXdVdWlkcy5pbmRleE9mKHZpZXcudXVpZCk7XHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLm9wZW5lZFZpZXdEYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIGlmICgha2VlcEluU2Vzc2lvbikge1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odmlldy52aWV3TmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZpZXdDb250ZXh0KHtcclxuICAgICAgdXBkYXRlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHN0YXRlOiBWaWV3U3RhdGUuQ2xvc2VkLFxyXG4gICAgICAgICAgdXVpZDogdmlldy51dWlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZXN0b3JlVmlld3ModXVpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRleHQhLnZpZXdzLm1hcCgodmlldzogVmlld0RhdGEpID0+IHtcclxuICAgICAgdGhpcy5vcGVuVmlldyh2aWV3KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN5bmNWaWV3KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3Q29udGV4dD8udmlld3MubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHZpZXcuc3RhdGUpIHtcclxuICAgICAgICBjYXNlIFZpZXdTdGF0ZS5Ub09wZW46XHJcbiAgICAgICAgICB0aGlzLm9wZW5WaWV3KHZpZXcpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWaWV3U3RhdGUuVG9DbG9zZTpcclxuICAgICAgICAgIHRoaXMuY2xvc2VWaWV3KHZpZXcsIGZhbHNlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB2aWV3RGF0YVRvQ2xvc2UgPSB0aGlzLm9wZW5lZFZpZXdEYXRhLmZpbHRlcihcclxuICAgICAgKHZpZXdEYXRhOiBWaWV3RGF0YSkgPT5cclxuICAgICAgICAhdGhpcy52aWV3Q29udGV4dD8udmlld3NcclxuICAgICAgICAgIC5mbGF0TWFwKCh2aWV3RGF0YTogVmlld0RhdGEpID0+IHZpZXdEYXRhLnV1aWQpXHJcbiAgICAgICAgICAuaW5jbHVkZXModmlld0RhdGEudXVpZClcclxuICAgICk7XHJcbiAgICBpZiAodmlld0RhdGFUb0Nsb3NlPy5sZW5ndGgpIHtcclxuICAgICAgdmlld0RhdGFUb0Nsb3NlLm1hcCgodmlld0RhdGE6IFZpZXdEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVZpZXcodmlld0RhdGEsIHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpZXdDb250ZXh0SGFzQmVlblN5bmNlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VXVpZE9mUGFnZShwYWdlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB1dWlkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShwYWdlTmFtZSk7XHJcbiAgICBpZiAoIXV1aWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdXVpZCBvZiAke3BhZ2VOYW1lfSBpcyBub3QgYXZhaWxhYmxlLmApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHV1aWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgbWVzc2FnZShtZXNzYWdlRGF0YTogTWVzc2FnZURhdGEsIG1lc3NhZ2VSZXN1bHQ6IE1lc3NhZ2VSZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMudmlld1xyXG4gICAgICAubWVzc2FnZShtZXNzYWdlRGF0YS52aWV3VXVpZCA/PyAnJywgbWVzc2FnZURhdGEudXVpZCwgbWVzc2FnZVJlc3VsdClcclxuICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRBbmRTeW5jVmlld0NvbnRleHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTbWFydFZpZXdDb250ZXh0QXBpRXJyb3JCeUNvZGUoY29kZTogc3RyaW5nKTogU21hcnRWaWV3Q29udGV4dEFwaUVycm9yIHtcclxuICAgIGlmICghdGhpcy5zbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBtZXNzYWdlOiAnQW4gZXJyb3IgaGFzIG9jY3VyZWQuJyxcclxuICAgICAgICBidXR0b25MYWJlbDogJ09rJyxcclxuICAgICAgICBkaWFsb2dUaXRsZTogJ0hpYmEnLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IGFwaUVycm9yc1dpdGhDb2RlID0gdGhpcy5zbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzLnZpZXdDb250ZXh0QXBpRXJyb3JzLmZpbHRlcihcclxuICAgICAgKGFwaUVycm9yOiBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IpID0+IHtcclxuICAgICAgICByZXR1cm4gYXBpRXJyb3IuY29kZSA9PT0gY29kZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICghYXBpRXJyb3JzV2l0aENvZGUgfHwgKGFwaUVycm9yc1dpdGhDb2RlICYmICFhcGlFcnJvcnNXaXRoQ29kZS5sZW5ndGgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvciB3aXRoIGNvZGUgJHtjb2RlfSBjb3VsZCBub3QgYmUgZm91bmQuYCk7XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgbWVzc2FnZTogJ0FuIGVycm9yIGhhcyBvY2N1cmVkLicsXHJcbiAgICAgICAgYnV0dG9uTGFiZWw6ICdPaycsXHJcbiAgICAgICAgZGlhbG9nVGl0bGU6ICdIaWJhJyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBhcGlFcnJvcnNXaXRoQ29kZVswXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRWaWV3Q29uc3RyYWludCh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPFZpZXdDb25zdHJhaW50PiB7XHJcbiAgICBsZXQgdmlld0NvbnN0cmFpbnRSZXNwb25zZSA9IGF3YWl0IHRoaXMudmlldy5nZXRWaWV3Q29uc3RyYWludCh1dWlkKS50b1Byb21pc2UoKTtcclxuICAgIGlmICghdmlld0NvbnN0cmFpbnRSZXNwb25zZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZ2V0IFZpZXdDb25zdHJhaW50IHdpdGggdGhlIGdpdmVuIHV1aWQuJyk7XHJcbiAgICByZXR1cm4gdmlld0NvbnN0cmFpbnRSZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaG93UHVibGlzaGVkVmlldyhjaGFubmVsOiBzdHJpbmcsIHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uLmluaXRpYWxpemUoKTtcclxuICAgIC8vIFRPRE8gaW5pdCB2aWV3IGNvbnRleHQgYXV0b21hdGljYWxseVxyXG4gICAgLy8gYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgdGhpcy5pc09wZW5pbmdTbWFydExpbmsgPSB0cnVlO1xyXG4gICAgdGhpcy5vcGVuU21hcnRMaW5rLm5leHQoKTtcclxuICAgIGF3YWl0IHRoaXMub3BlblNtYXJ0TGluay50b1Byb21pc2UoKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnZpZXcuc2hvd1B1Ymxpc2hlZFZpZXcoY2hhbm5lbCwgdXVpZCkudG9Qcm9taXNlKCk7XHJcbiAgICBhd2FpdCB0aGlzLmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xyXG4gICAgdGhpcy5pc09wZW5pbmdTbWFydExpbmsgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkb3dubG9hZFJlc291cmNlKHV1aWQ6IHN0cmluZywgaXRlbTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLnZpZXcuZG93bmxvYWRJdGVtKHV1aWQsIGl0ZW0pLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHBlcmZvcm1BY3Rpb24odXVpZDogc3RyaW5nLCB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3BlcmZvcm1BY3Rpb24oe1xyXG4gICAgICB1dWlkLFxyXG4gICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICB9KTtcclxuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8vIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoe1xyXG4gICAgLy8gICBjYWxsYmFjazogdGhpcy5fcGVyZm9ybUFjdGlvbi5iaW5kKHRoaXMpLFxyXG4gICAgLy8gICBjb25maWc6IHtcclxuICAgIC8vICAgICB1dWlkLFxyXG4gICAgLy8gICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgaXNDb21wbGV0ZWQsXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtV2lkZ2V0QWN0aW9uKFxyXG4gICAgdXVpZDogc3RyaW5nLFxyXG4gICAgd2lkZ2V0SWQ6IHN0cmluZyxcclxuICAgIG5vZGVJZDogc3RyaW5nLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9wZXJmb3JtV2lkZ2V0QWN0aW9uKHsgdXVpZCwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0IH0pO1xyXG4gICAgLy8gY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgLy8gdGhpcy5hcGlRdWV1ZVNlcnZpY2UuYWRkVG9RdWV1ZSh7XHJcbiAgICAvLyAgIGNhbGxiYWNrOiB0aGlzLl9wZXJmb3JtV2lkZ2V0QWN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAvLyAgIGNvbmZpZzoge1xyXG4gICAgLy8gICAgIHV1aWQsXHJcbiAgICAvLyAgICAgd2lkZ2V0SWQsXHJcbiAgICAvLyAgICAgbm9kZUlkLFxyXG4gICAgLy8gICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgaXNDb21wbGV0ZWQsXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbihcclxuICAgIHV1aWQ6IHN0cmluZyxcclxuICAgIHdpZGdldElkOiBzdHJpbmcsXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3BlcmZvcm1XaWRnZXRNYWluQWN0aW9uKHsgdXVpZCwgd2lkZ2V0SWQsIHVpQWN0aW9uUmVxdWVzdCB9KTtcclxuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8vIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoe1xyXG4gICAgLy8gICBjYWxsYmFjazogdGhpcy5fcGVyZm9ybVdpZGdldE1haW5BY3Rpb24uYmluZCh0aGlzKSxcclxuICAgIC8vICAgY29uZmlnOiB7XHJcbiAgICAvLyAgICAgdXVpZCxcclxuICAgIC8vICAgICB3aWRnZXRJZCxcclxuICAgIC8vICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIGlzQ29tcGxldGVkLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyByZXR1cm4gYXdhaXQgaXNDb21wbGV0ZWQudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGF0YUNoYW5nZWQodXVpZDogc3RyaW5nLCBkYXRhQ2hhbmdlOiBEYXRhQ2hhbmdlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fZGF0YUNoYW5nZWQoeyB1dWlkLCBkYXRhQ2hhbmdlIH0pO1xyXG4gICAgLy8gY29uc3QgaXNDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgLy8gdGhpcy5hcGlRdWV1ZVNlcnZpY2UuYWRkVG9RdWV1ZShcclxuICAgIC8vICAge1xyXG4gICAgLy8gICAgIGNhbGxiYWNrOiB0aGlzLl9kYXRhQ2hhbmdlZC5iaW5kKHRoaXMpLFxyXG4gICAgLy8gICAgIGNvbmZpZzoge1xyXG4gICAgLy8gICAgICAgdXVpZCxcclxuICAgIC8vICAgICAgIGRhdGFDaGFuZ2UsXHJcbiAgICAvLyAgICAgfSxcclxuICAgIC8vICAgICBpc0NvbXBsZXRlZCxcclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgdHJ1ZVxyXG4gICAgLy8gKTtcclxuICAgIC8vIHJldHVybiBhd2FpdCBpc0NvbXBsZXRlZC50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3BlcmZvcm1BY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy52aWV3LnBlcmZvcm1BY3Rpb24oY29uZmlnLnV1aWQsIGNvbmZpZy51aUFjdGlvblJlcXVlc3QpLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfcGVyZm9ybVdpZGdldEFjdGlvbihjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdcclxuICAgICAgICAucGVyZm9ybVdpZGdldEFjdGlvbihjb25maWcudXVpZCwgY29uZmlnLndpZGdldElkLCBjb25maWcubm9kZUlkLCBjb25maWcudWlBY3Rpb25SZXF1ZXN0KVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3BlcmZvcm1XaWRnZXRNYWluQWN0aW9uKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMudmlld1xyXG4gICAgICAgIC5wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbihjb25maWcudXVpZCwgY29uZmlnLndpZGdldElkLCBjb25maWcudWlBY3Rpb25SZXF1ZXN0KVxyXG4gICAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2RhdGFDaGFuZ2VkKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMudmlldy5kYXRhQ2hhbmdlZChjb25maWcudXVpZCwgY29uZmlnLmRhdGFDaGFuZ2UpLnRvUHJvbWlzZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgIHZpZXdDb250ZXh0Q2hhbmdlOiBWaWV3Q29udGV4dENoYW5nZSB8IHVuZGVmaW5lZFxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy52aWV3Q29udGV4dCA9IHZpZXdDb250ZXh0Q2hhbmdlPy52aWV3Q29udGV4dDtcclxuICAgIHRoaXMuc3luY1ZpZXcoKTtcclxuXHJcbiAgICBpZiAodmlld0NvbnRleHRDaGFuZ2U/LmNoYW5nZXMpIHtcclxuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzKHZpZXdDb250ZXh0Q2hhbmdlLmNoYW5nZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDaGFuZ2VzKGNoYW5nZXM6IEFycmF5PENvbXBvbmVudE1vZGVsQ2hhbmdlPik6IHZvaWQge1xyXG4gICAgY2hhbmdlcy5mb3JFYWNoKChjb21wb25lbnRNb2RlbENoYW5nZTogQ29tcG9uZW50TW9kZWxDaGFuZ2UpID0+IHtcclxuICAgICAgbGV0IGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiB8IHVuZGVmaW5lZCA9IHRoaXMuc21hcnRBcGlDbGllbnRzLmdldChcclxuICAgICAgICBjb21wb25lbnRNb2RlbENoYW5nZS51dWlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChkZXRlY3RDaGFuZ2UpIHtcclxuICAgICAgICBkZXRlY3RDaGFuZ2UubmV4dChjb21wb25lbnRNb2RlbENoYW5nZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudmlldy5nZXRDb21wb25lbnRNb2RlbCh1dWlkKS50b1Byb21pc2UoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJU19BU1lOQ19QQVJBTV9OQU1FID0gJ2lzQXN5bmMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcGlRdWV1ZUNhbGwge1xyXG4gIGNhbGxiYWNrOiAoY29uZmlnOiBhbnkpID0+IFByb21pc2U8YW55PjtcclxuICBjb25maWc6IGFueTtcclxuICBpc0NvbXBsZXRlZDogU3ViamVjdDx2b2lkPjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaVF1ZXVlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIHF1ZXVlOiBBcGlRdWV1ZUNhbGxbXSA9IFtdO1xyXG4gIHByaXZhdGUgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBxdWV1ZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMucXVldWVTdWJqZWN0LnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMucHJvY2Vzc1F1ZXVlKCkpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBhZGRUb1F1ZXVlKGNhbGw6IEFwaVF1ZXVlQ2FsbCwgcHJpb3JpdHk6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKHByaW9yaXR5KSB7XHJcbiAgICAgIHRoaXMucXVldWUudW5zaGlmdChjYWxsKTsgLy8gQWRkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHF1ZXVlIGlmIGl0IGhhcyBoaWdoZXIgcHJpb3JpdHlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucXVldWUucHVzaChjYWxsKTsgLy8gQWRkIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlIGlmIGl0IGhhcyBsb3dlciBwcmlvcml0eVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzUHJvY2Vzc2luZykge1xyXG4gICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJvY2Vzc1F1ZXVlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhcGlRdWV1ZUNhbGwgPSB0aGlzLnF1ZXVlLnNoaWZ0KCk7XHJcbiAgICBpZiAoYXBpUXVldWVDYWxsKSB7XHJcbiAgICAgIGF3YWl0IGFwaVF1ZXVlQ2FsbC5jYWxsYmFjayhhcGlRdWV1ZUNhbGwuY29uZmlnKTtcclxuICAgICAgYXBpUXVldWVDYWxsLmlzQ29tcGxldGVkLmNvbXBsZXRlKCk7XHJcbiAgICAgIHRoaXMucXVldWVTdWJqZWN0Lm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBY0wsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7QUFZbkYsTUFBTSxPQUFPLHVCQUF1QjtJQTBDbEMsWUFDVSxJQUFpQixFQUNqQixPQUE0QixFQUM1QixVQUFrQyxFQUNsQyxNQUEwQixFQUMxQixlQUFnQztRQUpoQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQTlDbEMsY0FBUyxHQUFXLGlCQUFpQixDQUFDO1FBQ3RDLHdCQUFtQixHQUFXLGlCQUFpQixDQUFDO1FBSWhELGlCQUFZLEdBQWlDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekQsb0JBQWUsR0FBa0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxtQkFBYyxHQUFvQixJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9DLDZCQUF3QixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFELDZCQUF3QixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSXhELGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7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YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsdURBQXVEO1NBQy9FO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLE9BQU87U0FDUjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs2R0F0Q1UsZUFBZTtpSEFBZixlQUFlLGNBRmQsTUFBTTs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTbWFydGRpYWxvZ1NlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFNtYXJ0TmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL25hdmlnYXRpb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU21hcnRTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24vc21hcnQtc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtY2xpZW50L3NtYXJ0LnN1YmplY3QnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudE1vZGVsLFxyXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxyXG4gIERhdGFDaGFuZ2UsXHJcbiAgTWVzc2FnZURhdGEsXHJcbiAgTWVzc2FnZVJlc3VsdCxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFZpZXdDb25zdHJhaW50LFxyXG4gIFZpZXdDb250ZXh0Q2hhbmdlLFxyXG4gIFZpZXdDb250ZXh0RGF0YSxcclxuICBWaWV3Q29udGV4dFVwZGF0ZSxcclxuICBWaWV3RGF0YSxcclxuICBWaWV3U2VydmljZSxcclxuICBWaWV3U3RhdGUsXHJcbiAgVmlld1R5cGUsXHJcbn0gZnJvbSAnLi9hcGknO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWRpYWxvZy9tZXNzYWdlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0VHJhbnNsYXRlU2VydmljZSxcclxuICBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3IsXHJcbiAgU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyxcclxuICBTbWFydFZpZXdEaWFsb2dSZWYsXHJcbiAgU21hcnRWaWV3SGFuZGxlck1vZGVsLFxyXG59IGZyb20gJy4vc21hcnQtdmlldy1jb250ZXh0Lm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSB0YWJJZE5hbWU6IHN0cmluZyA9ICd2aWV3Q29udGV4dFV1aWQnO1xyXG4gIHByaXZhdGUgdGFiSWRodHRwSGVhZGVyTmFtZTogc3RyaW5nID0gJ3ZpZXdDb250ZXh0VXVpZCc7XHJcbiAgcHVibGljIG1lc3NhZ2VEaWFsb2duYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSB1cmw/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB2aWV3Q29udGV4dD86IFZpZXdDb250ZXh0RGF0YTtcclxuICBwcml2YXRlIHZpZXdIYW5kbGVyczogQXJyYXk8U21hcnRWaWV3SGFuZGxlck1vZGVsPiA9IG5ldyBBcnJheSgpO1xyXG4gIHByaXZhdGUgb3BlbmVkVmlld1V1aWRzOiBBcnJheTxzdHJpbmc+ID0gbmV3IEFycmF5KCk7XHJcbiAgcHJpdmF0ZSBvcGVuZWRWaWV3RGF0YTogQXJyYXk8Vmlld0RhdGE+ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gIHB1YmxpYyB1dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHVibGljIHZpZXdDb250ZXh0SGFzQmVlblN5bmNlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBzbWFydFZpZXdDb250ZXh0QXBpRXJyb3JzPzogU21hcnRWaWV3Q29udGV4dEFwaUVycm9ycztcclxuXHJcbiAgcHVibGljIG9wZW5TbWFydExpbms6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHB1YmxpYyBpc09wZW5pbmdTbWFydExpbms6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWZzOiBTbWFydFZpZXdEaWFsb2dSZWZbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGFjdGlvbkRlc2NyaXB0b3JzPzogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPjtcclxuXHJcbiAgcHVibGljIGNvbW1vbkZlZWRiYWNrVGV4dD86IHN0cmluZztcclxuXHJcbiAgcHVibGljIHNtYXJ0QXBpQ2xpZW50czogTWFwPHN0cmluZywgU21hcnRTdWJqZWN0PGFueT4+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBwdWJsaWMgc2V0IHRyYW5zbGF0ZVNlcnZpY2UodHJhbnNsYXRlU2VydmljZTogU21hcnRUcmFuc2xhdGVTZXJ2aWNlIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZUNoYW5nZWQubmV4dCgpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0cmFuc2xhdGVTZXJ2aWNlKCk6IFNtYXJ0VHJhbnNsYXRlU2VydmljZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodGhpcy5fdHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZTtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xyXG4gIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcclxuICAgIHByaXZhdGUgc2Vzc2lvbjogU21hcnRTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvbjogU21hcnROYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBTbWFydGRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVF1ZXVlU2VydmljZTogQXBpUXVldWVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZm9sbG93KHV1aWQ6IHN0cmluZywgZGV0ZWN0Q2hhbmdlOiBTbWFydFN1YmplY3Q8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydEFwaUNsaWVudHMuc2V0KHV1aWQsIGRldGVjdENoYW5nZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyB1bmZvbGxvdyh1dWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRBcGlDbGllbnRzLmRlbGV0ZSh1dWlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBY3Rpb25EZXNjcmlwdG9ycyhhY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPik6IHZvaWQge1xyXG4gICAgdGhpcy5hY3Rpb25EZXNjcmlwdG9ycyA9IGFjdGlvbkRlc2NyaXB0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdGlvbkRlc2NyaXB0b3JzKCk6IE1hcDxzdHJpbmcsIFVpQWN0aW9uRGVzY3JpcHRvcj4gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0aGlzLmFjdGlvbkRlc2NyaXB0b3JzKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGFjdGlvbiBkZXNjcmlwdG9ycyBoYXMgYmVlbiBzZXQgdG8gVmlld0NvbnRleHQuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25EZXNjcmlwdG9ycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaWV3SGFuZGxlcnModmlld0hhbmRsZXJzOiBBcnJheTxTbWFydFZpZXdIYW5kbGVyTW9kZWw+KTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdIYW5kbGVycyA9IHZpZXdIYW5kbGVycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaWV3QXBpRXJyb3JzKHZpZXdBcGlFcnJvcnM6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvcnMpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycyA9IHZpZXdBcGlFcnJvcnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TWVzc2FnZURpYWxvZ05hbWUobWVzc2FnZURpYWxvZ05hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXNzYWdlRGlhbG9nbmFtZSA9IG1lc3NhZ2VEaWFsb2dOYW1lO1xyXG4gICAgdGhpcy52aWV3SGFuZGxlcnMucHVzaCh7XHJcbiAgICAgIG5hbWU6IG1lc3NhZ2VEaWFsb2dOYW1lLFxyXG4gICAgICBjb21wb25lbnQ6IE1lc3NhZ2VEaWFsb2dDb21wb25lbnQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBVcmxGb3JWaWV3U2VydmljZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlldy5jb25maWd1cmF0aW9uLmJhc2VQYXRoID0gdGhpcy51cmw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVybCA9IHVybCArICcvdmlldyc7XHJcbiAgICB0aGlzLnNldFVwVXJsRm9yVmlld1NlcnZpY2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBbmRTeW5jVmlld0NvbnRleHQodXVpZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF1dWlkKSB7XHJcbiAgICAgIHV1aWQgPSB0aGlzLmdldFV1aWRPZlBhZ2UodGhpcy50YWJJZE5hbWUpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh1dWlkKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5zeW5jVmlldygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnRleHQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcclxuICAgIHRoaXMudmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnRleHQodXVpZCkudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAoIXRoaXMudmlld0NvbnRleHQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3Q29udGV4dCBkb2VzIG5vdCBleGlzdCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnRleHREYXRhQnlQYWdlTmFtZShwYWdlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWaWV3RGF0YT4ge1xyXG4gICAgaWYgKCF0aGlzLnZpZXdDb250ZXh0KSB7XHJcbiAgICAgIGxldCB2aWV3Q29udGV4dFV1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMudGFiSWROYW1lKTtcclxuICAgICAgaWYgKCF2aWV3Q29udGV4dFV1aWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXcgY29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWQhJyk7XHJcbiAgICAgIH1cclxuICAgICAgYXdhaXQgdGhpcy5nZXRWaWV3Q29udGV4dCh2aWV3Q29udGV4dFV1aWQhKTtcclxuICAgIH1cclxuICAgIGxldCBwYWdlVXVpZCA9IHRoaXMuZ2V0VXVpZE9mUGFnZShwYWdlTmFtZSk7XHJcblxyXG4gICAgbGV0IHZpZXdDb250ZXh0QnlQYWdlTmFtZSA9IHRoaXMudmlld0NvbnRleHQ/LnZpZXdzLmZpbmQoKHZpZXcpID0+IHZpZXcudXVpZCA9PT0gcGFnZVV1aWQpO1xyXG4gICAgaWYgKCF2aWV3Q29udGV4dEJ5UGFnZU5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgVmlld0RhdGEgb2YgJHtwYWdlTmFtZX0gaXMgbm90IGZvdW5kIWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZpZXdDb250ZXh0QnlQYWdlTmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVWaWV3Q29udGV4dChcclxuICAgIHZpZXdDb250ZXh0VXBkYXRlOiBWaWV3Q29udGV4dFVwZGF0ZVxyXG4gICk6IFByb21pc2U8Vmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkPiB7XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy52aWV3LnVwZGF0ZVZpZXdDb250ZXh0KHZpZXdDb250ZXh0VXBkYXRlKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJTZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB0aGlzLm9wZW5lZFZpZXdEYXRhID0gW107XHJcbiAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUYWJJZCh0YWJJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMudGFiSWROYW1lLCB0YWJJZCk7XHJcbiAgICB0aGlzLnNlc3Npb24uYWRkSGVhZGVyUGFyYW0oe1xyXG4gICAgICBoZWFkZXJOYW1lOiB0aGlzLnRhYklkaHR0cEhlYWRlck5hbWUsXHJcbiAgICAgIHZhbHVlOiB0YWJJZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHN0YXJ0Vmlld0NvbnRleHQoKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcclxuICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RvcmFnZSgpO1xyXG5cclxuICAgIGxldCBuZXdWaWV3Q29udGV4dDogVmlld0NvbnRleHREYXRhIHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy52aWV3XHJcbiAgICAgIC5jcmVhdGVWaWV3Q29udGV4dCgpXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIGlmICghbmV3Vmlld0NvbnRleHQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBWaWV3Q29udGV4dCB3YXMgY3JlYXRlZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3Q29udGV4dCA9IG5ld1ZpZXdDb250ZXh0O1xyXG4gICAgdGhpcy5zZXRUYWJJZChuZXdWaWV3Q29udGV4dC51dWlkISk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSh1dWlkPzogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29udGV4dERhdGE+IHtcclxuICAgIGlmICh0aGlzLnZpZXdIYW5kbGVycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIFwiVGhlcmUgYXJlbid0IGFueSB2aWV3SGFuZGxlcnMgaW4gU21hcnRWaWV3Q29udGV4dFNlcnZpY2UhIFByb3ZpZGUgc29tZSB0byB1c2UgaXRzIGZ1bmN0aW9ucy5cIlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm1lc3NhZ2VEaWFsb2duYW1lKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIG1lc3NhZ2VEaWFsb2dOYW1lIHByb3ZpZGVkIGJ5IHRoZSBiYWNrZW5kIGhhcyBub3QgYmVlbiBzZXQuJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodXVpZCkge1xyXG4gICAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5zZXNzaW9uLmhlYWRlcnNVcGRhdGVkLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Vmlld0NvbnRleHQodXVpZCk7XHJcbiAgICAgICAgICB0aGlzLnNldFRhYklkKHV1aWQhKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRWaWV3Q29udGV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2V0VGFiSWQodXVpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Vmlld0NvbnRleHQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGV4dCE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblZpZXcodmlldzogVmlld0RhdGEpOiB2b2lkIHtcclxuICAgIGxldCB2aWV3SGFuZGxlcjogU21hcnRWaWV3SGFuZGxlck1vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy52aWV3SGFuZGxlcnMuZmluZChcclxuICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIubmFtZSA9PT0gdmlldy52aWV3TmFtZVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXZpZXdIYW5kbGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAodmlldy50eXBlID09PSBWaWV3VHlwZS5EaWFsb2cpIHtcclxuICAgICAgaWYgKCF2aWV3SGFuZGxlci5jb21wb25lbnQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgQ29tcG9uZW50IGlzIHVuZGVmaW5lZCBpbiBTbWFydFZpZXdIYW5kbGVyTW9kZWwgd2l0aCBuYW1lOiAke3ZpZXcudmlld05hbWV9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW5Db21wb25lbnRBc0RpYWxvZyh2aWV3SGFuZGxlci5jb21wb25lbnQsIHZpZXdIYW5kbGVyLm5hbWUpO1xyXG4gICAgICBkaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgLy8gaWYgKHZpZXcudmlld05hbWUgPT09IHRoaXMubWVzc2FnZURpYWxvZ25hbWUpIHtcclxuICAgICAgLy8gICBpZiAodmlldy5tZXNzYWdlPy5vcHRpb25zICYmIHZpZXcubWVzc2FnZS5vcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgICB0aGlzLmRpYWxvZ1JlZnMucHVzaCh7XHJcbiAgICAgICAgdXVpZDogdmlldy51dWlkLFxyXG4gICAgICAgIGRpYWxvZ1JlZixcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuTm9ybWFsKSB7XHJcbiAgICAgIGlmICh2aWV3SGFuZGxlci5yb3V0ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSb3V0ZSBpcyB1bmRlZmluZWQgaW4gU21hcnRWaWV3SGFuZGxlck1vZGVsIHdpdGggbmFtZTogJHt2aWV3LnZpZXdOYW1lfWApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KCcvJykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdHlwZSBvZiB0aGUgdmlldyBhbmQgaXRzIHZpZXdIYW5kbGVyIGlzIG5vdCB0aGUgc2FtZSEnKTtcclxuICAgIH1cclxuXHJcbiAgICB2aWV3LnN0YXRlID0gVmlld1N0YXRlLk9wZW5lZDtcclxuXHJcbiAgICB0aGlzLm9wZW5lZFZpZXdVdWlkcy5wdXNoKHZpZXcudXVpZCk7XHJcbiAgICB0aGlzLm9wZW5lZFZpZXdEYXRhLnB1c2godmlldyk7XHJcblxyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh2aWV3LnZpZXdOYW1lLCB2aWV3LnV1aWQpO1xyXG4gICAgdGhpcy51dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWQubmV4dCh2aWV3LnZpZXdOYW1lKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZpZXdDb250ZXh0KHtcclxuICAgICAgdXBkYXRlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHN0YXRlOiBWaWV3U3RhdGUuT3BlbmVkLFxyXG4gICAgICAgICAgdXVpZDogdmlldy51dWlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHV1aWQ6IHRoaXMudmlld0NvbnRleHQ/LnV1aWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZVZpZXcodmlldzogVmlld0RhdGEpOiB2b2lkIHtcclxuICAgIGxldCB2aWV3SGFuZGxlcjogU21hcnRWaWV3SGFuZGxlck1vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy52aWV3SGFuZGxlcnMuZmluZChcclxuICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIubmFtZSA9PT0gdmlldy52aWV3TmFtZVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXZpZXdIYW5kbGVyKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU21hcnRWaWV3SGFuZGxlck1vZGVsIHdhcyBub3QgZm91bmQgYnkgdmlldyBuYW1lOiAke3ZpZXcudmlld05hbWV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuRGlhbG9nKSB7XHJcbiAgICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1JlZnMuZmluZChcclxuICAgICAgICAoZGlhbG9nUmVmOiBTbWFydFZpZXdEaWFsb2dSZWYpID0+IGRpYWxvZ1JlZi51dWlkID09PSB2aWV3LnV1aWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGRpYWxvZ1JlZikge1xyXG4gICAgICAgIGRpYWxvZ1JlZi5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmRpYWxvZ1JlZnMuaW5kZXhPZihkaWFsb2dSZWYpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nUmVmIGlzIG5vdCBmb3VuZCBieSB1dWlkLicpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHZpZXcudHlwZSA9PT0gVmlld1R5cGUuTm9ybWFsKSB7XHJcbiAgICAgIC8vIFRPRE86IGNsb3NlIG5vcm1hbCBwYWdlPz8/XHJcbiAgICAgIC8vIHRoaXMubmF2aWdhdGlvbi5uYXZpZ2F0ZVRvKHZpZXdIYW5kbGVyLnJvdXRlLnNwbGl0KFwiL1wiKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB0eXBlIG9mIHRoZSB2aWV3IGFuZCBpdHMgdmlld0hhbmRsZXIgaXMgbm90IHRoZSBzYW1lIScpO1xyXG4gICAgfVxyXG5cclxuICAgIHZpZXcuc3RhdGUgPSBWaWV3U3RhdGUuQ2xvc2VkO1xyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVuZWRWaWV3VXVpZHMuaW5kZXhPZih2aWV3LnV1aWQpO1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5vcGVuZWRWaWV3VXVpZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgdGhpcy5vcGVuZWRWaWV3RGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHZpZXcudmlld05hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlVmlld0NvbnRleHQoe1xyXG4gICAgICB1cGRhdGVzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc3RhdGU6IFZpZXdTdGF0ZS5DbG9zZWQsXHJcbiAgICAgICAgICB1dWlkOiB2aWV3LnV1aWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgdXVpZDogdGhpcy52aWV3Q29udGV4dD8udXVpZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlc3RvcmVWaWV3cyh1dWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy52aWV3Q29udGV4dCkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFZpZXdDb250ZXh0KHV1aWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3Q29udGV4dCEudmlld3MubWFwKCh2aWV3OiBWaWV3RGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLm9wZW5WaWV3KHZpZXcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3luY1ZpZXcoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdDb250ZXh0Py52aWV3cy5tYXAoKHZpZXc6IFZpZXdEYXRhKSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodmlldy5zdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgVmlld1N0YXRlLlRvT3BlbjpcclxuICAgICAgICAgIHRoaXMub3BlblZpZXcodmlldyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZpZXdTdGF0ZS5Ub0Nsb3NlOlxyXG4gICAgICAgICAgdGhpcy5jbG9zZVZpZXcodmlldyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgdmlld0RhdGFUb0Nsb3NlID0gdGhpcy5vcGVuZWRWaWV3RGF0YS5maWx0ZXIoXHJcbiAgICAgICh2aWV3RGF0YTogVmlld0RhdGEpID0+XHJcbiAgICAgICAgIXRoaXMudmlld0NvbnRleHQ/LnZpZXdzXHJcbiAgICAgICAgICAuZmxhdE1hcCgodmlld0RhdGE6IFZpZXdEYXRhKSA9PiB2aWV3RGF0YS51dWlkKVxyXG4gICAgICAgICAgLmluY2x1ZGVzKHZpZXdEYXRhLnV1aWQpXHJcbiAgICApO1xyXG4gICAgaWYgKHZpZXdEYXRhVG9DbG9zZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHZpZXdEYXRhVG9DbG9zZS5tYXAoKHZpZXdEYXRhOiBWaWV3RGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2VWaWV3KHZpZXdEYXRhKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aWV3Q29udGV4dEhhc0JlZW5TeW5jZWQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFV1aWRPZlBhZ2UocGFnZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdXVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocGFnZU5hbWUpO1xyXG4gICAgaWYgKCF1dWlkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHV1aWQgb2YgJHtwYWdlTmFtZX0gaXMgbm90IGF2YWlsYWJsZS5gKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1dWlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG1lc3NhZ2UobWVzc2FnZURhdGE6IE1lc3NhZ2VEYXRhLCBtZXNzYWdlUmVzdWx0OiBNZXNzYWdlUmVzdWx0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLnZpZXdcclxuICAgICAgLm1lc3NhZ2UobWVzc2FnZURhdGEudmlld1V1aWQgPz8gJycsIG1lc3NhZ2VEYXRhLnV1aWQsIG1lc3NhZ2VSZXN1bHQpXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0QW5kU3luY1ZpZXdDb250ZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U21hcnRWaWV3Q29udGV4dEFwaUVycm9yQnlDb2RlKGNvZGU6IHN0cmluZyk6IFNtYXJ0Vmlld0NvbnRleHRBcGlFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycykge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgbWVzc2FnZTogJ0FuIGVycm9yIGhhcyBvY2N1cmVkLicsXHJcbiAgICAgICAgYnV0dG9uTGFiZWw6ICdPaycsXHJcbiAgICAgICAgZGlhbG9nVGl0bGU6ICdIaWJhJyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBhcGlFcnJvcnNXaXRoQ29kZSA9IHRoaXMuc21hcnRWaWV3Q29udGV4dEFwaUVycm9ycy52aWV3Q29udGV4dEFwaUVycm9ycy5maWx0ZXIoXHJcbiAgICAgIChhcGlFcnJvcjogU21hcnRWaWV3Q29udGV4dEFwaUVycm9yKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGFwaUVycm9yLmNvZGUgPT09IGNvZGU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAoIWFwaUVycm9yc1dpdGhDb2RlIHx8IChhcGlFcnJvcnNXaXRoQ29kZSAmJiAhYXBpRXJyb3JzV2l0aENvZGUubGVuZ3RoKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBTbWFydFZpZXdDb250ZXh0QXBpRXJyb3Igd2l0aCBjb2RlICR7Y29kZX0gY291bGQgbm90IGJlIGZvdW5kLmApO1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIG1lc3NhZ2U6ICdBbiBlcnJvciBoYXMgb2NjdXJlZC4nLFxyXG4gICAgICAgIGJ1dHRvbkxhYmVsOiAnT2snLFxyXG4gICAgICAgIGRpYWxvZ1RpdGxlOiAnSGliYScsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXBpRXJyb3JzV2l0aENvZGVbMF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0Vmlld0NvbnN0cmFpbnQodXVpZDogc3RyaW5nKTogUHJvbWlzZTxWaWV3Q29uc3RyYWludD4ge1xyXG4gICAgbGV0IHZpZXdDb25zdHJhaW50UmVzcG9uc2UgPSBhd2FpdCB0aGlzLnZpZXcuZ2V0Vmlld0NvbnN0cmFpbnQodXVpZCkudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAoIXZpZXdDb25zdHJhaW50UmVzcG9uc2UpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBWaWV3Q29uc3RyYWludCB3aXRoIHRoZSBnaXZlbiB1dWlkLicpO1xyXG4gICAgcmV0dXJuIHZpZXdDb25zdHJhaW50UmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2hvd1B1Ymxpc2hlZFZpZXcoY2hhbm5lbDogc3RyaW5nLCB1dWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuc2Vzc2lvbi5pbml0aWFsaXplKCk7XHJcbiAgICAvLyBUT0RPIGluaXQgdmlldyBjb250ZXh0IGF1dG9tYXRpY2FsbHlcclxuICAgIC8vIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgIHRoaXMuaXNPcGVuaW5nU21hcnRMaW5rID0gdHJ1ZTtcclxuICAgIHRoaXMub3BlblNtYXJ0TGluay5uZXh0KCk7XHJcbiAgICBhd2FpdCB0aGlzLm9wZW5TbWFydExpbmsudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy52aWV3LnNob3dQdWJsaXNoZWRWaWV3KGNoYW5uZWwsIHV1aWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRBbmRTeW5jVmlld0NvbnRleHQoKTtcclxuICAgIHRoaXMuaXNPcGVuaW5nU21hcnRMaW5rID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZG93bmxvYWRSZXNvdXJjZSh1dWlkOiBzdHJpbmcsIGl0ZW06IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy52aWV3LmRvd25sb2FkSXRlbSh1dWlkLCBpdGVtKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwZXJmb3JtQWN0aW9uKHV1aWQ6IHN0cmluZywgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9wZXJmb3JtQWN0aW9uKHtcclxuICAgICAgdXVpZCxcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgfSk7XHJcbiAgICAvLyBjb25zdCBpc0NvbXBsZXRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAvLyB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcclxuICAgIC8vICAgY2FsbGJhY2s6IHRoaXMuX3BlcmZvcm1BY3Rpb24uYmluZCh0aGlzKSxcclxuICAgIC8vICAgY29uZmlnOiB7XHJcbiAgICAvLyAgICAgdXVpZCxcclxuICAgIC8vICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIGlzQ29tcGxldGVkLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyByZXR1cm4gYXdhaXQgaXNDb21wbGV0ZWQudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcGVyZm9ybVdpZGdldEFjdGlvbihcclxuICAgIHV1aWQ6IHN0cmluZyxcclxuICAgIHdpZGdldElkOiBzdHJpbmcsXHJcbiAgICBub2RlSWQ6IHN0cmluZyxcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcGVyZm9ybVdpZGdldEFjdGlvbih7IHV1aWQsIHdpZGdldElkLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCB9KTtcclxuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8vIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoe1xyXG4gICAgLy8gICBjYWxsYmFjazogdGhpcy5fcGVyZm9ybVdpZGdldEFjdGlvbi5iaW5kKHRoaXMpLFxyXG4gICAgLy8gICBjb25maWc6IHtcclxuICAgIC8vICAgICB1dWlkLFxyXG4gICAgLy8gICAgIHdpZGdldElkLFxyXG4gICAgLy8gICAgIG5vZGVJZCxcclxuICAgIC8vICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIGlzQ29tcGxldGVkLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyByZXR1cm4gYXdhaXQgaXNDb21wbGV0ZWQudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcGVyZm9ybVdpZGdldE1haW5BY3Rpb24oXHJcbiAgICB1dWlkOiBzdHJpbmcsXHJcbiAgICB3aWRnZXRJZDogc3RyaW5nLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbih7IHV1aWQsIHdpZGdldElkLCB1aUFjdGlvblJlcXVlc3QgfSk7XHJcbiAgICAvLyBjb25zdCBpc0NvbXBsZXRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAvLyB0aGlzLmFwaVF1ZXVlU2VydmljZS5hZGRUb1F1ZXVlKHtcclxuICAgIC8vICAgY2FsbGJhY2s6IHRoaXMuX3BlcmZvcm1XaWRnZXRNYWluQWN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAvLyAgIGNvbmZpZzoge1xyXG4gICAgLy8gICAgIHV1aWQsXHJcbiAgICAvLyAgICAgd2lkZ2V0SWQsXHJcbiAgICAvLyAgICAgdWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBpc0NvbXBsZXRlZCxcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gcmV0dXJuIGF3YWl0IGlzQ29tcGxldGVkLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRhdGFDaGFuZ2VkKHV1aWQ6IHN0cmluZywgZGF0YUNoYW5nZTogRGF0YUNoYW5nZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2RhdGFDaGFuZ2VkKHsgdXVpZCwgZGF0YUNoYW5nZSB9KTtcclxuICAgIC8vIGNvbnN0IGlzQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8vIHRoaXMuYXBpUXVldWVTZXJ2aWNlLmFkZFRvUXVldWUoXHJcbiAgICAvLyAgIHtcclxuICAgIC8vICAgICBjYWxsYmFjazogdGhpcy5fZGF0YUNoYW5nZWQuYmluZCh0aGlzKSxcclxuICAgIC8vICAgICBjb25maWc6IHtcclxuICAgIC8vICAgICAgIHV1aWQsXHJcbiAgICAvLyAgICAgICBkYXRhQ2hhbmdlLFxyXG4gICAgLy8gICAgIH0sXHJcbiAgICAvLyAgICAgaXNDb21wbGV0ZWQsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIHRydWVcclxuICAgIC8vICk7XHJcbiAgICAvLyByZXR1cm4gYXdhaXQgaXNDb21wbGV0ZWQudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtQWN0aW9uKGNvbmZpZzogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICAgIGF3YWl0IHRoaXMudmlldy5wZXJmb3JtQWN0aW9uKGNvbmZpZy51dWlkLCBjb25maWcudWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3BlcmZvcm1XaWRnZXRBY3Rpb24oY29uZmlnOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcclxuICAgICAgYXdhaXQgdGhpcy52aWV3XHJcbiAgICAgICAgLnBlcmZvcm1XaWRnZXRBY3Rpb24oY29uZmlnLnV1aWQsIGNvbmZpZy53aWRnZXRJZCwgY29uZmlnLm5vZGVJZCwgY29uZmlnLnVpQWN0aW9uUmVxdWVzdClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbihjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdcclxuICAgICAgICAucGVyZm9ybVdpZGdldE1haW5BY3Rpb24oY29uZmlnLnV1aWQsIGNvbmZpZy53aWRnZXRJZCwgY29uZmlnLnVpQWN0aW9uUmVxdWVzdClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9kYXRhQ2hhbmdlZChjb25maWc6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxyXG4gICAgICBhd2FpdCB0aGlzLnZpZXcuZGF0YUNoYW5nZWQoY29uZmlnLnV1aWQsIGNvbmZpZy5kYXRhQ2hhbmdlKS50b1Byb21pc2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXHJcbiAgICB2aWV3Q29udGV4dENoYW5nZTogVmlld0NvbnRleHRDaGFuZ2UgfCB1bmRlZmluZWRcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlld0NvbnRleHQgPSB2aWV3Q29udGV4dENoYW5nZT8udmlld0NvbnRleHQ7XHJcbiAgICB0aGlzLnN5bmNWaWV3KCk7XHJcblxyXG4gICAgaWYgKHZpZXdDb250ZXh0Q2hhbmdlPy5jaGFuZ2VzKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyh2aWV3Q29udGV4dENoYW5nZS5jaGFuZ2VzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlcyhjaGFuZ2VzOiBBcnJheTxDb21wb25lbnRNb2RlbENoYW5nZT4pOiB2b2lkIHtcclxuICAgIGNoYW5nZXMuZm9yRWFjaCgoY29tcG9uZW50TW9kZWxDaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XHJcbiAgICAgIGxldCBkZXRlY3RDaGFuZ2U6IFNtYXJ0U3ViamVjdDxDb21wb25lbnRNb2RlbENoYW5nZT4gfCB1bmRlZmluZWQgPSB0aGlzLnNtYXJ0QXBpQ2xpZW50cy5nZXQoXHJcbiAgICAgICAgY29tcG9uZW50TW9kZWxDaGFuZ2UudXVpZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZGV0ZWN0Q2hhbmdlKSB7XHJcbiAgICAgICAgZGV0ZWN0Q2hhbmdlLm5leHQoY29tcG9uZW50TW9kZWxDaGFuZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8Q29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLnZpZXcuZ2V0Q29tcG9uZW50TW9kZWwodXVpZCkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSVNfQVNZTkNfUEFSQU1fTkFNRSA9ICdpc0FzeW5jJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBpUXVldWVDYWxsIHtcclxuICBjYWxsYmFjazogKGNvbmZpZzogYW55KSA9PiBQcm9taXNlPGFueT47XHJcbiAgY29uZmlnOiBhbnk7XHJcbiAgaXNDb21wbGV0ZWQ6IFN1YmplY3Q8dm9pZD47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlRdWV1ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBxdWV1ZTogQXBpUXVldWVDYWxsW10gPSBbXTtcclxuICBwcml2YXRlIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcXVldWVTdWJqZWN0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnF1ZXVlU3ViamVjdC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnByb2Nlc3NRdWV1ZSgpKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9RdWV1ZShjYWxsOiBBcGlRdWV1ZUNhbGwsIHByaW9yaXR5OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmIChwcmlvcml0eSkge1xyXG4gICAgICB0aGlzLnF1ZXVlLnVuc2hpZnQoY2FsbCk7IC8vIEFkZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZSBpZiBpdCBoYXMgaGlnaGVyIHByaW9yaXR5XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnF1ZXVlLnB1c2goY2FsbCk7IC8vIEFkZCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZSBpZiBpdCBoYXMgbG93ZXIgcHJpb3JpdHlcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgdGhpcy5wcm9jZXNzUXVldWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHByb2Nlc3NRdWV1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXBpUXVldWVDYWxsID0gdGhpcy5xdWV1ZS5zaGlmdCgpO1xyXG4gICAgaWYgKGFwaVF1ZXVlQ2FsbCkge1xyXG4gICAgICBhd2FpdCBhcGlRdWV1ZUNhbGwuY2FsbGJhY2soYXBpUXVldWVDYWxsLmNvbmZpZyk7XHJcbiAgICAgIGFwaVF1ZXVlQ2FsbC5pc0NvbXBsZXRlZC5jb21wbGV0ZSgpO1xyXG4gICAgICB0aGlzLnF1ZXVlU3ViamVjdC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2107,6 +2107,8 @@ class SmartViewContextService {
2107
2107
  }
2108
2108
  clearSessionStorage() {
2109
2109
  sessionStorage.clear();
2110
+ this.openedViewData = [];
2111
+ this.openedViewUuids = [];
2110
2112
  }
2111
2113
  setTabId(tabId) {
2112
2114
  sessionStorage.setItem(this.tabIdName, tabId);
@@ -2201,7 +2203,7 @@ class SmartViewContextService {
2201
2203
  uuid: (_a = this.viewContext) === null || _a === void 0 ? void 0 : _a.uuid,
2202
2204
  });
2203
2205
  }
2204
- closeView(view, keepInSession) {
2206
+ closeView(view) {
2205
2207
  var _a;
2206
2208
  let viewHandler = this.viewHandlers.find((handler) => handler.name === view.viewName);
2207
2209
  if (!viewHandler) {
@@ -2230,9 +2232,7 @@ class SmartViewContextService {
2230
2232
  if (index >= 0) {
2231
2233
  this.openedViewUuids.splice(index, 1);
2232
2234
  this.openedViewData.splice(index, 1);
2233
- if (!keepInSession) {
2234
- sessionStorage.removeItem(view.viewName);
2235
- }
2235
+ sessionStorage.removeItem(view.viewName);
2236
2236
  }
2237
2237
  this.updateViewContext({
2238
2238
  updates: [
@@ -2262,7 +2262,7 @@ class SmartViewContextService {
2262
2262
  this.openView(view);
2263
2263
  break;
2264
2264
  case ViewState.ToClose:
2265
- this.closeView(view, false);
2265
+ this.closeView(view);
2266
2266
  break;
2267
2267
  }
2268
2268
  });
@@ -2272,7 +2272,7 @@ class SmartViewContextService {
2272
2272
  });
2273
2273
  if (viewDataToClose === null || viewDataToClose === void 0 ? void 0 : viewDataToClose.length) {
2274
2274
  viewDataToClose.map((viewData) => {
2275
- this.closeView(viewData, true);
2275
+ this.closeView(viewData);
2276
2276
  });
2277
2277
  }
2278
2278
  this.viewContextHasBeenSynced.next();