raise-common-lib 0.0.215 → 0.0.217

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +14 -98
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/common-grid/index.component.js +5 -2
  7. package/esm2015/lib/dialog/common-dialog/index.component.js +6 -2
  8. package/esm2015/lib/float-box/index.component.js +6 -97
  9. package/esm5/lib/common-grid/index.component.js +5 -2
  10. package/esm5/lib/dialog/common-dialog/index.component.js +6 -2
  11. package/esm5/lib/float-box/index.component.js +6 -97
  12. package/fesm2015/raise-common-lib.js +14 -98
  13. package/fesm2015/raise-common-lib.js.map +1 -1
  14. package/fesm5/raise-common-lib.js +14 -98
  15. package/fesm5/raise-common-lib.js.map +1 -1
  16. package/lib/common-grid/index.component.d.ts +1 -0
  17. package/lib/dialog/common-dialog/index.component.d.ts +1 -0
  18. package/lib/float-box/index.component.d.ts +0 -1
  19. package/package.json +1 -1
  20. package/raise-common-lib.metadata.json +1 -1
  21. package/src/assets/img/arrow_right.svg +4 -4
  22. package/src/assets/img/calendar-disabled.svg +6 -6
  23. package/src/assets/img/calendar.svg +6 -6
  24. package/src/assets/img/calendar_arrow_left.svg +3 -3
  25. package/src/assets/img/calendar_arrow_right.svg +3 -3
  26. package/src/assets/img/checked-vector.svg +3 -3
  27. package/src/assets/img/dialog-close.svg +4 -4
  28. package/src/assets/img/dialog-grow.svg +6 -6
  29. package/src/assets/img/dialog-shrink.svg +6 -6
  30. package/src/assets/img/plus.svg +4 -4
  31. package/src/assets/img/search.svg +4 -4
  32. package/src/assets/img/shrink-icon.svg +6 -6
  33. package/src/assets/img/time-disabled.svg +4 -4
  34. package/src/assets/img/time.svg +4 -4
  35. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  36. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  37. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  38. package/src/assets/img/toolbar-action-combine.svg +4 -4
  39. package/src/assets/img/toolbar-action-edit.svg +4 -4
  40. package/src/assets/img/toolbar-action-expand.svg +7 -7
  41. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  42. package/src/assets/img/toolbar-action-lock.svg +6 -6
  43. package/src/assets/img/toolbar-action-preview.svg +7 -7
  44. package/src/assets/img/toolbar-action-publish.svg +5 -5
  45. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  46. package/src/assets/img/toolbar-action-rename.svg +7 -7
  47. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  48. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  49. package/src/assets/img/toolbar-action-settle.svg +7 -7
  50. package/src/assets/img/toolbar-action-share.svg +5 -5
  51. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  52. package/src/assets/img/toolbar-action-sync.svg +4 -4
  53. package/src/assets/img/toolbar-action-template.svg +6 -6
  54. package/src/assets/img/toolbar-action-workflow.svg +9 -9
@@ -779,7 +779,7 @@ var CommonGridComponent = /** @class */ (function () {
779
779
  CommonGridComponent.decorators = [
780
780
  { type: Component, args: [{
781
781
  selector: "rs-common-grid",
782
- template: "<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"dataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"dataSource && dataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
782
+ template: "<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"dataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"dataSource && dataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n [headerTemplate]=\"item.showHeaderTemplate ? headerTemplate : undefined\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
783
783
  styles: [""]
784
784
  }] }
785
785
  ];
@@ -811,6 +811,7 @@ var CommonGridComponent = /** @class */ (function () {
811
811
  childGrid: [{ type: Input }],
812
812
  frozenColumns: [{ type: Input }],
813
813
  columnChooserSettings: [{ type: Input }],
814
+ headerTemplate: [{ type: Input }],
814
815
  contextMenuItems: [{ type: Input }],
815
816
  selectionSettings: [{ type: Input }],
816
817
  alwaysShowCheckbox: [{ type: Input }],
@@ -884,6 +885,8 @@ if (false) {
884
885
  CommonGridComponent.prototype.frozenColumns;
885
886
  /** @type {?} */
886
887
  CommonGridComponent.prototype.columnChooserSettings;
888
+ /** @type {?} */
889
+ CommonGridComponent.prototype.headerTemplate;
887
890
  /**
888
891
  * Sample: [
889
892
  * {
@@ -963,4 +966,4 @@ if (false) {
963
966
  */
964
967
  CommonGridComponent.prototype.ref;
965
968
  }
966
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUkvQjtJQXNGRSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE5RWpDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCOzs7UUFFOUMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsZUFBVSxHQUFHLEVBQUUsQ0FBQzs7UUFFaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixtQkFBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFbEMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUloQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFzQnZELHFCQUFnQixHQUFz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QTJCOztJQUUzQiw4Q0FBOEI7O0lBQzlCLHlDQUF5Qjs7SUFFekIscUNBQXlCOztJQUN6Qiw2Q0FBMkM7O0lBQzNDLDZDQUEyQzs7SUFDM0MsdUNBQXVCOztJQUN2QixxQ0FBcUM7O0lBQ3JDLHlDQUF5Qjs7SUFDekIsMkNBQXNCOztJQUN0Qiw2Q0FBMEM7O0lBQzFDLDJDQUFzQjs7SUFDdEIsMENBQTRCOztJQUM1QixrREFBcUM7O0lBQ3JDLHVDQUEwQzs7SUFDMUMsNENBQTRCOztJQUM1Qix3Q0FBbUI7O0lBQ25CLDRDQUF1Qjs7SUFDdkIsb0RBQStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbUIvQiwrQ0FBa0Q7O0lBRWxELGdEQUlFOztJQUNGLGlEQUE2Qzs7SUFDN0MsNENBQTRCOztJQUM1QiwrQ0FBMkM7O0lBRTNDLGdEQUFpRDs7SUFDakQsNkNBQThDOztJQUM5QywwQ0FBMkM7O0lBQzNDLDRDQUE2Qzs7SUFDN0MsNkNBQThDOztJQUM5Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsNENBQTZDOztJQUM3QywwQ0FBMkM7O0lBQzNDLDBDQUEyQzs7SUFDM0MsMkNBQTRDOztJQUM1Qyx3Q0FBeUM7O0lBQ3pDLGtEQUFtRDs7SUFDbkQsMkNBQTRDOztJQUM1QyxzQ0FBdUM7O0lBQ3ZDLHNDQUF1Qzs7SUFDdkMsMkNBQTRDOztJQUU1Qyx1Q0FBYzs7SUFDZCwwQ0FBb0I7O0lBQ3BCLHdDQUFlOztJQUNmLHdDQUEyQjs7SUFFM0IsMENBQW1COztJQWtWbkIsdUNBUUU7Ozs7O0lBeFZVLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IHRpbWVzIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItaW5wdXRzXCI7XHJcbmltcG9ydCB7IElBY3Rpb25NZW51SXRlbSwgSUNvbHVtbkZpZWxkIH0gZnJvbSBcIi4uL2NvbnN0YW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZ3JpZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoXCJncmlkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBncmlkOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveCA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRkZW5Mb2FkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRob3JpemVkID0gdHJ1ZTsgLy8gRGF0YXNldOaYr+WQpuaOiOadg++8jOacquaOiOadg+WImeaYvuekuuadg+mZkOmUmeivr+aPkOekulxyXG4gIC8vIG9ubHkgdXNlIGZvciBsb2NhbCBkYXRhIHBhZ2luYXRpb25cclxuICBASW5wdXQoKSBzZWxlY3RlZERpZmZLZXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGdyaWRIZWlnaHQgPSBcIlwiO1xyXG4gIC8vIOi/meeOqeaEj+W/heWhq++8jOS4jeeEtmZpbHRlciBjb2x1bW5DaG9vc2Vy6YO95Lya5oql6ZSZXHJcbiAgQElucHV0KCkgZ3JpZElkID0gXCJncmlkXCI7XHJcbiAgQElucHV0KCkgcmVzaXplU2V0dGluZ3MgPSB7IG1vZGU6IFwiQXV0b1wiIH07XHJcbiAgQElucHV0KCkgZmlsdGVyU2V0dGluZ3MgPSB7IHR5cGU6IFwiTWVudVwiIH07XHJcbiAgQElucHV0KCkgdGVtcGxhdGU6IGFueTtcclxuICBASW5wdXQoKSBmaWVsZHM6IElDb2x1bW5GaWVsZFtdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRTZXR0aW5ncztcclxuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwYWdlU2V0dGluZ3M7XHJcbiAgQElucHV0KCkgYWxsb3dQYWdpbmcgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93Um93RHJhZ0FuZERyb3AgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGlwTW9kZSA9IFwiRWxsaXBzaXNXaXRoVG9vbHRpcFwiO1xyXG4gIEBJbnB1dCgpIGNoZWNrQm94V2lkdGggPSAzMjsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNoaWxkR3JpZDtcclxuICBASW5wdXQoKSBmcm96ZW5Db2x1bW5zOyAvLyBjb2wg5pWw6YeP6L+H5bCR55qE5pe25YCZ77yMY2hlY2vlrr3luqbkvJrmi4nkvLjvvIzov5nml7blgJnorr7nva5udWxsXHJcbiAgQElucHV0KCkgY29sdW1uQ2hvb3NlclNldHRpbmdzO1xyXG5cclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzZWxlY3RJZCA9IFtdO1xyXG4gIHN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgaW5kZXhMaXN0ID0gW107XHJcbiAgY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuXHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW5Mb2FkZWQpIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZ3JpZElkID1cclxuICAgICAgdGhpcy5ncmlkSWQgKyBEYXRlLm5vdygpICsgXCJfXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA1KTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7IC8vIG9yIGEgdW5pcXVlIGlkZW50aWZpZXIgaW4geW91ciBvYmplY3RcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YVNvdXJjZSAmJiBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmFsbG93UGFnaW5nICYmXHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5wYWdlU2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggPiA5XHJcbiAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgcGFnZVNpemVzOiBbXCJBbGxcIiwgXCIyNVwiLCBcIjUwXCIsIFwiMTAwXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDUwLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfbG9hZCgpIHtcclxuICAgIGlmICghdGhpcy5hdXRob3JpemVkKSB7XHJcbiAgICAgICh0aGlzLmdyaWQubG9jYWxlT2JqIGFzIGFueSkubG9jYWxlU3RyaW5ncy5FbXB0eVJlY29yZCA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5ZT1VfRE9fTk9UX0hBVkVfVEhFX0RBVEFTRVRfUEVSTUlTU0lPTiB8fFxyXG4gICAgICAgIFwiWW91IGRvbid0IGhhdmUgdGhlIGRhdGFzZXQgcGVybWlzc2lvbiB0byB2aWV3IHRoZSByZWNvcmQuXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZGF0YUJvdW5kKGFyZ3M6IGFueSkge1xyXG4gICAgLy8g5pW05Liq57uE5Lu25Yqg6L295a6M5oiQ5pe255qE5Zue6LCD5Ye95pWwXHJcbiAgICB2YXIgcGFnZXJDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmUtcGFnZXJjb250YWluZXJcIik7XHJcbiAgICBpZiAocGFnZXJDb250YWluZXIpIHtcclxuICAgICAgdmFyIGxpbmtFbGVtZW50cyA9IHBhZ2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZS1saW5rXCIpO1xyXG4gICAgICBsaW5rRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiaHJlZlwiKTsgLy8gU01QMi0xMDMxMCDliKDpmaTliIbpobXlmajnmoRocmVm5bGe5oCnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YUJvdW5kLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfZXhwb3J0UXVlcnlDZWxsSW5mbyhhcmdzKSB7XHJcbiAgICB0aGlzLmV4cG9ydFF1ZXJ5Q2VsbEluZm8uZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yb3dEcmFnKGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZy5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWdTdGFydChhcmdzKSB7XHJcbiAgICB0aGlzLnJvd0RyYWdTdGFydC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZERvdWJsZUNsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmREb3VibGVDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RpbmcoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0aW5nLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcblx0ICogW3NlbGVjdGlvblNldHRpbmdzXT1cInsgY2hlY2tib3hPbmx5OiB0cnVlIH1cIlxyXG5cdCAgIFtzaG93Q2hlY2tCb3hdPVwidHJ1ZVwiXHJcblx0ICAg5o6n5Lu25L2/55So5pe277yM5b+F6aG76YWN572u5LiK6Z2i5Lik5Liq5bGe5oCn77yM5ZCm5YiZ77yM5YWo6YCJ5Lya5aSx5pWIXHJcblx0ICovXHJcbiAgX3Jvd1NlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICBpZiAoJGV2ZW50LmRhdGEgJiYgJGV2ZW50LmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaCgkZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0UGFnaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gW107XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gdGhpcy5zZWxlY3RJZC5maWx0ZXIoXHJcbiAgICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgICAgaXRlbVt0aGlzLnNlbGVjdGVkRGlmZktleV0gIT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEZXNlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9vbkNvbnRleHRNZW51KGFyZ3MpIHtcclxuICAgIHRoaXMub25Db250ZXh0TWVudS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkJlZ2luKGFyZ3MpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERpZmZLZXkgJiZcclxuICAgICAgKGFyZ3MucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09IFwiZmlsdGVyY2hvaWNlcmVxdWVzdFwiIHx8XHJcbiAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyc2VhcmNoYmVnaW5cIlxyXG4gICAgKSB7XHJcbiAgICAgIGFyZ3MuZmlsdGVyQ2hvaWNlQ291bnQgPSAxNTAwMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJlZ2luLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2goa2V5d29yZHMpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWFyY2goa2V5d29yZHMpO1xyXG4gIH1cclxuICBzZWxlY3RSb3dzKGluZGV4TGlzdDogbnVtYmVyW10pIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGluZGV4TGlzdCk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvdyhpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhpbmRleCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRWaWV3UmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21pc2VDZWxsKCRldmVudCkge1xyXG4gICAgdGhpcy5xdWVyeUNlbGxJbmZvLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNvbnRleHRNZW51T3BlbihhcmdzPzogQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gKGFyZ3MgYXMgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIHwgYW55KS5yb3dJbmZvLnJvd0RhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgYXJncy5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZW5hYmxlSXRlbXMgPSBbXTtcclxuICAgIGxldCBoaWRlSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5yZWZyZXNoKCk7IC8vIOavj+asoeeCueWHu+aMiemSruW8ueeql+WJjemcgOWGjeasoeWIneWni+WMlueKtuaAgSDlkKbliJnkuI3mm7TmlrDvvJtcclxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBJQWN0aW9uTWVudUl0ZW0pID0+IHtcclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKuZGlzYWJsZWTnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgfHxcclxuICAgICAgICAoZGF0YS5kaXNhYmxlSXRlbSAmJiBkYXRhLmRpc2FibGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGVuYWJsZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq7pnIDopoFoaWRl55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmlzSGlkZSB8fFxyXG4gICAgICAgIChkYXRhLmhpZGVJdGVtICYmIGRhdGEuaGlkZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaGlkZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKGVuYWJsZUl0ZW1zLCBmYWxzZSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKGhpZGVJdGVtcywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkhhbmRsZXIoJGV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgICgkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3Rpb25IYW5kbGVyLmVtaXQoJGV2ZW50KTtcclxuICAgIHRoaXMuYWN0aW9uQ29tcGxldGUuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaG9vc2VSZWNvcmRzKCkge1xyXG4gICAgdGhpcy5pbmRleExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5nZXRDdXJyZW50Vmlld1JlY29yZHMoKS5mb3JFYWNoKChyb3c6IGFueSwgaSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJvdyAmJlxyXG4gICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IHJvd1t0aGlzLnNlbGVjdGVkRGlmZktleV0gJiZcclxuICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5pbmRleExpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvd3ModGhpcy5pbmRleExpc3QpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZENsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaCgpO1xyXG4gIH1cclxuICBfcm93U2VsZWN0aW5nKGUpIHtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nLmVtaXQoZSk7XHJcbiAgfVxyXG4gIHJlZnJlc2hDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hDb2x1bW5zKCk7XHJcbiAgfVxyXG4gIHJlZnJlc2hIZWFkZXIoKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaEhlYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KGV4Y2VsRXhwb3J0UHJvcGVydGllcz8pIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKTtcclxuICB9XHJcblxyXG4gIG9uUm93RHJvcChlKSB7XHJcbiAgICB0aGlzLnJvd0Ryb3AuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIF9yb3dEYXRhQm91bmQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlU3lzdGVtUm93ICYmICRldmVudC5kYXRhICYmICRldmVudC5kYXRhLklzU3lzdGVtKSB7XHJcbiAgICAgICRldmVudC5yb3cuY2xhc3NMaXN0LmFkZChcImUtZGlzYWJsZWRcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0RhdGFCb3VuZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgIHRoaXMuZ3JpZC5jbGVhclNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZXhjZWxFeHBvcnQoKSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoKTtcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuYWRkUmVjb3JkKHsgLi4udGhpcy5kZWZhdWx0UmVjb3JkLCBpc05ldzogdHJ1ZSB9LCAwKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KDApO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBzYXZlSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5lbmRFZGl0KCk7XHJcbiAgfVxyXG5cclxuICBlZGl0SXRlbShpbmRleCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICB2YXIgc2VsZWN0ZWRSZWNvcmQgPSB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKClbMF0gYXMgYW55O1xyXG4gICAgdGhpcy5ncmlkLmRlbGV0ZVJlY29yZChzZWxlY3RlZFJlY29yZCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLmNsb3NlRWRpdCgpO1xyXG4gICAgdGhpcy5kZWxldGVJdGVtKGluZGV4KTtcclxuICB9XHJcbiAgcHVibGljIGluaXRMaXN0ID0gKG51bSA9IDI1LCBrZXkgPSBcIklkXCIpID0+IHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIHRpbWVzKG51bSwgKGkpID0+IHtcclxuICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICBba2V5XTogaSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH07XHJcbiAgcHVibGljIHNob3dMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGlkZUxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIl19
969
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUkvQjtJQXNGRSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE5RWpDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCOzs7UUFFOUMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsZUFBVSxHQUFHLEVBQUUsQ0FBQzs7UUFFaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixtQkFBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFbEMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUloQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFzQnZELHFCQUFnQixHQUFz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OztJQUM5Qix5Q0FBMkI7O0lBRTNCLDhDQUE4Qjs7SUFDOUIseUNBQXlCOztJQUV6QixxQ0FBeUI7O0lBQ3pCLDZDQUEyQzs7SUFDM0MsNkNBQTJDOztJQUMzQyx1Q0FBdUI7O0lBQ3ZCLHFDQUFxQzs7SUFDckMseUNBQXlCOztJQUN6QiwyQ0FBc0I7O0lBQ3RCLDZDQUEwQzs7SUFDMUMsMkNBQXNCOztJQUN0QiwwQ0FBNEI7O0lBQzVCLGtEQUFxQzs7SUFDckMsdUNBQTBDOztJQUMxQyw0Q0FBNEI7O0lBQzVCLHdDQUFtQjs7SUFDbkIsNENBQXVCOztJQUN2QixvREFBK0I7O0lBQy9CLDZDQUEwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtCMUMsK0NBQWtEOztJQUVsRCxnREFJRTs7SUFDRixpREFBNkM7O0lBQzdDLDRDQUE0Qjs7SUFDNUIsK0NBQTJDOztJQUUzQyxnREFBaUQ7O0lBQ2pELDZDQUE4Qzs7SUFDOUMsMENBQTJDOztJQUMzQyw0Q0FBNkM7O0lBQzdDLDZDQUE4Qzs7SUFDOUMsNENBQTZDOztJQUM3Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsMENBQTJDOztJQUMzQywwQ0FBMkM7O0lBQzNDLDJDQUE0Qzs7SUFDNUMsd0NBQXlDOztJQUN6QyxrREFBbUQ7O0lBQ25ELDJDQUE0Qzs7SUFDNUMsc0NBQXVDOztJQUN2QyxzQ0FBdUM7O0lBQ3ZDLDJDQUE0Qzs7SUFFNUMsdUNBQWM7O0lBQ2QsMENBQW9COztJQUNwQix3Q0FBZTs7SUFDZix3Q0FBMkI7O0lBRTNCLDBDQUFtQjs7SUFrVm5CLHVDQVFFOzs7OztJQXhWVSxrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5pbXBvcnQgeyB0aW1lcyB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWlucHV0c1wiO1xyXG5pbXBvcnQgeyBJQWN0aW9uTWVudUl0ZW0sIElDb2x1bW5GaWVsZCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKFwiZ3JpZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgZ3JpZDogR3JpZENvbXBvbmVudDtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3ggPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZGVuTG9hZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aG9yaXplZCA9IHRydWU7IC8vIERhdGFzZXTmmK/lkKbmjojmnYPvvIzmnKrmjojmnYPliJnmmL7npLrmnYPpmZDplJnor6/mj5DnpLpcclxuICAvLyBvbmx5IHVzZSBmb3IgbG9jYWwgZGF0YSBwYWdpbmF0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0ZWREaWZmS2V5ID0gXCJcIjtcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gXCJcIjtcclxuICAvLyDov5nnjqnmhI/lv4XloavvvIzkuI3nhLZmaWx0ZXIgY29sdW1uQ2hvb3NlcumDveS8muaKpemUmVxyXG4gIEBJbnB1dCgpIGdyaWRJZCA9IFwiZ3JpZFwiO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZVNldHRpbmdzID0geyBtb2RlOiBcIkF1dG9cIiB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiBcIk1lbnVcIiB9O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgZmllbGRzOiBJQ29sdW1uRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcclxuICBASW5wdXQoKSBlZGl0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcGFnZVNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGFsbG93UGFnaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd1Jvd0RyYWdBbmREcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSBcIkVsbGlwc2lzV2l0aFRvb2x0aXBcIjtcclxuICBASW5wdXQoKSBjaGVja0JveFdpZHRoID0gMzI7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjaGlsZEdyaWQ7XHJcbiAgQElucHV0KCkgZnJvemVuQ29sdW1uczsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNvbHVtbkNob29zZXJTZXR0aW5ncztcclxuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzZWxlY3RJZCA9IFtdO1xyXG4gIHN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgaW5kZXhMaXN0ID0gW107XHJcbiAgY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuXHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW5Mb2FkZWQpIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZ3JpZElkID1cclxuICAgICAgdGhpcy5ncmlkSWQgKyBEYXRlLm5vdygpICsgXCJfXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA1KTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7IC8vIG9yIGEgdW5pcXVlIGlkZW50aWZpZXIgaW4geW91ciBvYmplY3RcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YVNvdXJjZSAmJiBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmFsbG93UGFnaW5nICYmXHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5wYWdlU2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggPiA5XHJcbiAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgcGFnZVNpemVzOiBbXCJBbGxcIiwgXCIyNVwiLCBcIjUwXCIsIFwiMTAwXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDUwLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfbG9hZCgpIHtcclxuICAgIGlmICghdGhpcy5hdXRob3JpemVkKSB7XHJcbiAgICAgICh0aGlzLmdyaWQubG9jYWxlT2JqIGFzIGFueSkubG9jYWxlU3RyaW5ncy5FbXB0eVJlY29yZCA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5ZT1VfRE9fTk9UX0hBVkVfVEhFX0RBVEFTRVRfUEVSTUlTU0lPTiB8fFxyXG4gICAgICAgIFwiWW91IGRvbid0IGhhdmUgdGhlIGRhdGFzZXQgcGVybWlzc2lvbiB0byB2aWV3IHRoZSByZWNvcmQuXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZGF0YUJvdW5kKGFyZ3M6IGFueSkge1xyXG4gICAgLy8g5pW05Liq57uE5Lu25Yqg6L295a6M5oiQ5pe255qE5Zue6LCD5Ye95pWwXHJcbiAgICB2YXIgcGFnZXJDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmUtcGFnZXJjb250YWluZXJcIik7XHJcbiAgICBpZiAocGFnZXJDb250YWluZXIpIHtcclxuICAgICAgdmFyIGxpbmtFbGVtZW50cyA9IHBhZ2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZS1saW5rXCIpO1xyXG4gICAgICBsaW5rRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiaHJlZlwiKTsgLy8gU01QMi0xMDMxMCDliKDpmaTliIbpobXlmajnmoRocmVm5bGe5oCnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YUJvdW5kLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfZXhwb3J0UXVlcnlDZWxsSW5mbyhhcmdzKSB7XHJcbiAgICB0aGlzLmV4cG9ydFF1ZXJ5Q2VsbEluZm8uZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yb3dEcmFnKGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZy5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWdTdGFydChhcmdzKSB7XHJcbiAgICB0aGlzLnJvd0RyYWdTdGFydC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZERvdWJsZUNsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmREb3VibGVDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RpbmcoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0aW5nLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcblx0ICogW3NlbGVjdGlvblNldHRpbmdzXT1cInsgY2hlY2tib3hPbmx5OiB0cnVlIH1cIlxyXG5cdCAgIFtzaG93Q2hlY2tCb3hdPVwidHJ1ZVwiXHJcblx0ICAg5o6n5Lu25L2/55So5pe277yM5b+F6aG76YWN572u5LiK6Z2i5Lik5Liq5bGe5oCn77yM5ZCm5YiZ77yM5YWo6YCJ5Lya5aSx5pWIXHJcblx0ICovXHJcbiAgX3Jvd1NlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICBpZiAoJGV2ZW50LmRhdGEgJiYgJGV2ZW50LmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaCgkZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0UGFnaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gW107XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gdGhpcy5zZWxlY3RJZC5maWx0ZXIoXHJcbiAgICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgICAgaXRlbVt0aGlzLnNlbGVjdGVkRGlmZktleV0gIT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEZXNlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9vbkNvbnRleHRNZW51KGFyZ3MpIHtcclxuICAgIHRoaXMub25Db250ZXh0TWVudS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkJlZ2luKGFyZ3MpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERpZmZLZXkgJiZcclxuICAgICAgKGFyZ3MucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09IFwiZmlsdGVyY2hvaWNlcmVxdWVzdFwiIHx8XHJcbiAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyc2VhcmNoYmVnaW5cIlxyXG4gICAgKSB7XHJcbiAgICAgIGFyZ3MuZmlsdGVyQ2hvaWNlQ291bnQgPSAxNTAwMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJlZ2luLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2goa2V5d29yZHMpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWFyY2goa2V5d29yZHMpO1xyXG4gIH1cclxuICBzZWxlY3RSb3dzKGluZGV4TGlzdDogbnVtYmVyW10pIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGluZGV4TGlzdCk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvdyhpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhpbmRleCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRWaWV3UmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21pc2VDZWxsKCRldmVudCkge1xyXG4gICAgdGhpcy5xdWVyeUNlbGxJbmZvLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNvbnRleHRNZW51T3BlbihhcmdzPzogQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gKGFyZ3MgYXMgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIHwgYW55KS5yb3dJbmZvLnJvd0RhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgYXJncy5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZW5hYmxlSXRlbXMgPSBbXTtcclxuICAgIGxldCBoaWRlSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5yZWZyZXNoKCk7IC8vIOavj+asoeeCueWHu+aMiemSruW8ueeql+WJjemcgOWGjeasoeWIneWni+WMlueKtuaAgSDlkKbliJnkuI3mm7TmlrDvvJtcclxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBJQWN0aW9uTWVudUl0ZW0pID0+IHtcclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKuZGlzYWJsZWTnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgfHxcclxuICAgICAgICAoZGF0YS5kaXNhYmxlSXRlbSAmJiBkYXRhLmRpc2FibGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGVuYWJsZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq7pnIDopoFoaWRl55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmlzSGlkZSB8fFxyXG4gICAgICAgIChkYXRhLmhpZGVJdGVtICYmIGRhdGEuaGlkZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaGlkZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKGVuYWJsZUl0ZW1zLCBmYWxzZSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKGhpZGVJdGVtcywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkhhbmRsZXIoJGV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgICgkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3Rpb25IYW5kbGVyLmVtaXQoJGV2ZW50KTtcclxuICAgIHRoaXMuYWN0aW9uQ29tcGxldGUuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaG9vc2VSZWNvcmRzKCkge1xyXG4gICAgdGhpcy5pbmRleExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5nZXRDdXJyZW50Vmlld1JlY29yZHMoKS5mb3JFYWNoKChyb3c6IGFueSwgaSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJvdyAmJlxyXG4gICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IHJvd1t0aGlzLnNlbGVjdGVkRGlmZktleV0gJiZcclxuICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5pbmRleExpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvd3ModGhpcy5pbmRleExpc3QpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZENsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaCgpO1xyXG4gIH1cclxuICBfcm93U2VsZWN0aW5nKGUpIHtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nLmVtaXQoZSk7XHJcbiAgfVxyXG4gIHJlZnJlc2hDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hDb2x1bW5zKCk7XHJcbiAgfVxyXG4gIHJlZnJlc2hIZWFkZXIoKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaEhlYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KGV4Y2VsRXhwb3J0UHJvcGVydGllcz8pIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKTtcclxuICB9XHJcblxyXG4gIG9uUm93RHJvcChlKSB7XHJcbiAgICB0aGlzLnJvd0Ryb3AuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIF9yb3dEYXRhQm91bmQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlU3lzdGVtUm93ICYmICRldmVudC5kYXRhICYmICRldmVudC5kYXRhLklzU3lzdGVtKSB7XHJcbiAgICAgICRldmVudC5yb3cuY2xhc3NMaXN0LmFkZChcImUtZGlzYWJsZWRcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0RhdGFCb3VuZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgIHRoaXMuZ3JpZC5jbGVhclNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZXhjZWxFeHBvcnQoKSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoKTtcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuYWRkUmVjb3JkKHsgLi4udGhpcy5kZWZhdWx0UmVjb3JkLCBpc05ldzogdHJ1ZSB9LCAwKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KDApO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBzYXZlSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5lbmRFZGl0KCk7XHJcbiAgfVxyXG5cclxuICBlZGl0SXRlbShpbmRleCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICB2YXIgc2VsZWN0ZWRSZWNvcmQgPSB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKClbMF0gYXMgYW55O1xyXG4gICAgdGhpcy5ncmlkLmRlbGV0ZVJlY29yZChzZWxlY3RlZFJlY29yZCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLmNsb3NlRWRpdCgpO1xyXG4gICAgdGhpcy5kZWxldGVJdGVtKGluZGV4KTtcclxuICB9XHJcbiAgcHVibGljIGluaXRMaXN0ID0gKG51bSA9IDI1LCBrZXkgPSBcIklkXCIpID0+IHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIHRpbWVzKG51bSwgKGkpID0+IHtcclxuICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICBba2V5XTogaSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH07XHJcbiAgcHVibGljIHNob3dMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGlkZUxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -20,6 +20,7 @@ var CommonDialogComponent = /** @class */ (function () {
20
20
  this.showErrorIcon = false;
21
21
  this.showZoomBtn = false;
22
22
  this.customSave = false;
23
+ this.customPageTitle = false;
23
24
  // 显示相关属性
24
25
  this.dialogStyle = {};
25
26
  this.size = "";
@@ -126,7 +127,7 @@ var CommonDialogComponent = /** @class */ (function () {
126
127
  CommonDialogComponent.decorators = [
127
128
  { type: Component, args: [{
128
129
  selector: "rs-common-dialog",
129
- template: "<div class=\"dialog\" [ngClass]=\"size\" [ngStyle]=\"dialogStyle\">\r\n <!-- \u5934\u90E8 -->\r\n <div *ngIf=\"!hideHeader\" mat-dialog-title class=\"dialog__header\">\r\n <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </div>\r\n <div class=\"header__actions\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-btn\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div *ngIf=\"!hideCloseIcon\" class=\"header-btn\" (click)=\"onClose()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- \u5185\u5BB9 -->\r\n <div class=\"dialog__content\" mat-dialog-content>\r\n <ng-content></ng-content>\r\n </div>\r\n <!-- \u5E95\u90E8\u6309\u94AE -->\r\n <div mat-dialog-actions class=\"dialog__footer\">\r\n <ng-content select=\"[footerSlot]\"></ng-content>\r\n <!-- \u9ED8\u8BA4\u5C55\u793A\u4FDD\u5B58/\u5173\u95ED\u6309\u94AE -->\r\n <ng-container *ngIf=\"!customFooter\">\r\n <ng-template [ngTemplateOutlet]=\"defaultTemplate\"></ng-template>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <button *ngIf=\"!hideCloseBtn\" class=\"e-btn\" (click)=\"onClose()\">\r\n {{ cancelBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideDiscardBtn\" class=\"e-btn\" (click)=\"onDiscard()\">\r\n {{ discardBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideSaveBtn\" class=\"e-btn e-primary\" (click)=\"onSave()\">\r\n {{ saveBtnLabel }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- loading -->\r\n <div class=\"dialog__loading\" [hidden]=\"!loading\">\r\n <img src=\"../../../assets/img/raise_loading.gif\" alt=\"\" />\r\n </div>\r\n</div>\r\n",
130
+ template: "<div class=\"dialog\" [ngClass]=\"size\" [ngStyle]=\"dialogStyle\">\r\n <!-- \u5934\u90E8 -->\r\n <div *ngIf=\"!hideHeader\" mat-dialog-title class=\"dialog__header\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n </div>\r\n </ng-template>\r\n <!-- <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </div> -->\r\n <div class=\"header__actions\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-btn\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div *ngIf=\"!hideCloseIcon\" class=\"header-btn\" (click)=\"onClose()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- \u5185\u5BB9 -->\r\n <div class=\"dialog__content\" mat-dialog-content>\r\n <ng-content></ng-content>\r\n </div>\r\n <!-- \u5E95\u90E8\u6309\u94AE -->\r\n <div mat-dialog-actions class=\"dialog__footer\">\r\n <ng-content select=\"[footerSlot]\"></ng-content>\r\n <!-- \u9ED8\u8BA4\u5C55\u793A\u4FDD\u5B58/\u5173\u95ED\u6309\u94AE -->\r\n <ng-container *ngIf=\"!customFooter\">\r\n <ng-template [ngTemplateOutlet]=\"defaultTemplate\"></ng-template>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <button *ngIf=\"!hideCloseBtn\" class=\"e-btn\" (click)=\"onClose()\">\r\n {{ cancelBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideDiscardBtn\" class=\"e-btn\" (click)=\"onDiscard()\">\r\n {{ discardBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideSaveBtn\" class=\"e-btn e-primary\" (click)=\"onSave()\">\r\n {{ saveBtnLabel }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- loading -->\r\n <div class=\"dialog__loading\" [hidden]=\"!loading\">\r\n <img src=\"../../../assets/img/raise_loading.gif\" alt=\"\" />\r\n </div>\r\n</div>\r\n",
130
131
  styles: [":host::ng-deep .dialog{position:relative;max-height:90vh;font-weight:400;padding:20px;overflow:hidden;display:flex;flex-direction:column}:host::ng-deep .dialog.largest{width:96vw!important;height:88vh!important;max-width:2100px;padding:20px}:host::ng-deep .dialog.medium{width:500px;padding:20px}:host::ng-deep .dialog.small{width:350px;padding:20px 16px}:host::ng-deep .dialog.small .dialog__header{color:#002c4f;margin-bottom:16px}:host::ng-deep .dialog.small .dialog__header .header__title{font-size:13px;line-height:16px}:host::ng-deep .dialog.small .dialog__content{font-size:12px;line-height:16px}:host::ng-deep .dialog.small .dialog__footer{min-height:42px;padding:16px 0 0;font-size:12px;line-height:14px}:host::ng-deep .dialog.small .dialog__footer button{padding:6px 12px;min-width:60px}:host::ng-deep .dialog.large{width:800px;padding:20px}:host::ng-deep .dialog .dialog__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:0}:host::ng-deep .dialog .dialog__header::before{display:none}:host::ng-deep .dialog .dialog__header .header__title{color:#002c4f;font-family:Arial;font-size:15px;font-weight:700;line-height:18px;flex:1;overflow:hidden;display:flex;align-items:center;gap:8px}:host::ng-deep .dialog .dialog__header .header__actions{display:flex;align-items:center;gap:20px}:host::ng-deep .dialog .dialog__header .header-icon{display:block}:host::ng-deep .dialog .dialog__header .header-btn{cursor:pointer;padding:2px;display:flex;justify-content:center;align-items:center}:host::ng-deep .dialog .dialog__content{width:100%;min-height:38px;position:relative;overflow-y:auto;overflow-x:hidden;margin:0;padding:0;font-size:13px;line-height:19px;flex:1;height:0}:host::ng-deep .dialog .dialog__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:20px 0 0;font-size:13px;line-height:16px;margin-bottom:0}:host::ng-deep .dialog .dialog__loading{height:100%;background:0 0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999}:host::ng-deep .dialog .dialog__loading img{position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}"]
131
132
  }] }
132
133
  ];
@@ -146,6 +147,7 @@ var CommonDialogComponent = /** @class */ (function () {
146
147
  showErrorIcon: [{ type: Input }],
147
148
  showZoomBtn: [{ type: Input }],
148
149
  customSave: [{ type: Input }],
150
+ customPageTitle: [{ type: Input }],
149
151
  onCloseRequest: [{ type: Input }],
150
152
  dialogStyle: [{ type: Input }],
151
153
  size: [{ type: Input }],
@@ -184,6 +186,8 @@ if (false) {
184
186
  /** @type {?} */
185
187
  CommonDialogComponent.prototype.customSave;
186
188
  /** @type {?} */
189
+ CommonDialogComponent.prototype.customPageTitle;
190
+ /** @type {?} */
187
191
  CommonDialogComponent.prototype.onCloseRequest;
188
192
  /** @type {?} */
189
193
  CommonDialogComponent.prototype.dialogStyle;
@@ -206,4 +210,4 @@ if (false) {
206
210
  /** @type {?} */
207
211
  CommonDialogComponent.prototype.dialogRef;
208
212
  }
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kaWFsb2cvY29tbW9uLWRpYWxvZy9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQ7SUFpQ0UsK0JBQW1CLFNBQThDO1FBQTlDLGNBQVMsR0FBVCxTQUFTLENBQXFDOztRQXhCeEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsS0FBSyxDQUFDOztRQU1uQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsYUFBUSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2hFLGNBQVMsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUUzRSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUt6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztJQUp1QyxDQUFDOzs7O0lBS3RFLGtEQUFrQjs7O0lB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Q25CLHNDQUEwQjs7SUFDMUIsd0NBQXlCOztJQUN6Qix5Q0FBMEU7O0lBQzFFLDBDQUEyRTs7SUFFM0UsNENBQXlCOztJQUl6Qiw4Q0FBa0U7O0lBQ2xFLDZDQUE4Qjs7SUFKbEIsMENBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZGlhbG9nXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICAvLyDpmpDol4/lhYPntKDnm7jlhbPlsZ7mgKdcclxuICBASW5wdXQoKSBoaWRlSGVhZGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZUNsb3NlSWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVDbG9zZUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVTYXZlQnRuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZURpc2NhcmRCdG4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNhdmVCdG5MYWJlbCA9IFwiXCI7XHJcbiAgQElucHV0KCkgY2FuY2VsQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGRpc2NhcmRCdG5MYWJlbCA9IFwiXCI7XHJcbiAgQElucHV0KCkgc2hvd0Vycm9ySWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dab29tQnRuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tU2F2ZSA9IGZhbHNlO1xyXG5cclxuICAvLyDlhbPpl63liY3nmoTlm57osIPlh73mlbBcclxuICBASW5wdXQoKSBvbkNsb3NlUmVxdWVzdDogRnVuY3Rpb247XHJcblxyXG4gIC8vIOaYvuekuuebuOWFs+WxnuaAp1xyXG4gIEBJbnB1dCgpIGRpYWxvZ1N0eWxlID0ge307XHJcbiAgQElucHV0KCkgc2l6ZSA9IFwiXCI7XHJcbiAgQElucHV0KCkgdGl0bGUgPSBcIkRpYWxvZ1wiO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgc2F2ZUVtaXQ6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZ1bmN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUVtaXQ6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZ1bmN0aW9uPigpO1xyXG5cclxuICBkZWZhdWx0U2l6ZTogc3RyaW5nID0gXCJcIjtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29tbW9uRGlhbG9nQ29tcG9uZW50PikgeyB9XHJcblxyXG4gIC8vIOaOp+WItuW6lemDqOaPkuanveacieWGheWuueaXtumakOiXj+m7mOiupOaMiemSrlxyXG4gIEBDb250ZW50Q2hpbGQoXCJmb290ZXJTbG90XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBmb290ZXJDb250ZW50OiBhbnk7XHJcbiAgY3VzdG9tRm9vdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21Gb290ZXIgPSAhIXRoaXMuZm9vdGVyQ29udGVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMub25DbG9zZVJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5vbkNsb3NlUmVxdWVzdCgpLnRoZW4oKGNvbmZpcm1lZCkgPT4ge1xyXG4gICAgICAgIGlmIChjb25maXJtZWQpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKFwiY2xvc2VcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKFwiY2xvc2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblpvb20oKSB7XHJcbiAgICBpZiAodGhpcy5zaXplID09PSBcImxhcmdlc3RcIikge1xyXG4gICAgICB0aGlzLnNpemUgPSB0aGlzLmRlZmF1bHRTaXplOyAvLyDmgaLlpI3liLDljp/lp4vlpKflsI9cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2l6ZSA9IFwibGFyZ2VzdFwiOyAvLyDorr7nva7kuLrmnIDlpKfljJZcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVNhdmUpIHtcclxuICAgICAgdGhpcy5zYXZlRW1pdC5lbWl0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcInNhdmVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRpc2NhcmQoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcImRpc2NhcmRcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKSB8fCB7fTtcclxuICAgIHRoaXMuc2F2ZUJ0bkxhYmVsID0gdGhpcy5zYXZlQnRuTGFiZWwgfHwgdGhpcy50cmFuc2xhdGlvbi5TQVZFIHx8IFwiLlNBVkVcIjtcclxuICAgIHRoaXMuY2FuY2VsQnRuTGFiZWwgPVxyXG4gICAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uQ0FOQ0VMIHx8IFwiLkNBTkNFTFwiO1xyXG4gICAgdGhpcy5kZWZhdWx0U2l6ZSA9IHRoaXMuc2l6ZTtcclxuICB9XHJcbn1cclxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kaWFsb2cvY29tbW9uLWRpYWxvZy9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQ7SUFrQ0UsK0JBQW1CLFNBQThDO1FBQTlDLGNBQVMsR0FBVCxTQUFTLENBQXFDOztRQXpCeEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG9CQUFlLEdBQUcsS0FBSyxDQUFDOztRQU14QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsYUFBUSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2hFLGNBQVMsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUUzRSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUt6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztJQUp1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Z0RBQWlDOztJQUdqQywrQ0FBa0M7O0lBR2xDLDRDQUEwQjs7SUFDMUIscUNBQW1COztJQUNuQixzQ0FBMEI7O0lBQzFCLHdDQUF5Qjs7SUFDekIseUNBQTBFOztJQUMxRSwwQ0FBMkU7O0lBRTNFLDRDQUF5Qjs7SUFJekIsOENBQWtFOztJQUNsRSw2Q0FBOEI7O0lBSmxCLDBDQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBJbnB1dCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWRpYWxvZ1wiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHJcbiAgLy8g6ZqQ6JeP5YWD57Sg55u45YWz5bGe5oCnXHJcbiAgQElucHV0KCkgaGlkZUhlYWRlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVDbG9zZUljb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlQ2xvc2VCdG4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlU2F2ZUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZGVEaXNjYXJkQnRuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzYXZlQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGNhbmNlbEJ0bkxhYmVsID0gXCJcIjtcclxuICBASW5wdXQoKSBkaXNjYXJkQnRuTGFiZWwgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dFcnJvckljb24gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Wm9vbUJ0biA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVNhdmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjdXN0b21QYWdlVGl0bGUgPSBmYWxzZTtcclxuXHJcbiAgLy8g5YWz6Zet5YmN55qE5Zue6LCD5Ye95pWwXHJcbiAgQElucHV0KCkgb25DbG9zZVJlcXVlc3Q6IEZ1bmN0aW9uO1xyXG5cclxuICAvLyDmmL7npLrnm7jlhbPlsZ7mgKdcclxuICBASW5wdXQoKSBkaWFsb2dTdHlsZSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNpemUgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHRpdGxlID0gXCJEaWFsb2dcIjtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHNhdmVFbWl0OiBFdmVudEVtaXR0ZXI8RnVuY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgY2xvc2VFbWl0OiBFdmVudEVtaXR0ZXI8RnVuY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxGdW5jdGlvbj4oKTtcclxuXHJcbiAgZGVmYXVsdFNpemU6IHN0cmluZyA9IFwiXCI7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbW1vbkRpYWxvZ0NvbXBvbmVudD4pIHsgfVxyXG5cclxuICAvLyDmjqfliLblupXpg6jmj5Lmp73mnInlhoXlrrnml7bpmpDol4/pu5jorqTmjInpkq5cclxuICBAQ29udGVudENoaWxkKFwiZm9vdGVyU2xvdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9vdGVyQ29udGVudDogYW55O1xyXG4gIGN1c3RvbUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMuY3VzdG9tRm9vdGVyID0gISF0aGlzLmZvb3RlckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0SW5mbygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLm9uQ2xvc2VSZXF1ZXN0KSB7XHJcbiAgICAgIHRoaXMub25DbG9zZVJlcXVlc3QoKS50aGVuKChjb25maXJtZWQpID0+IHtcclxuICAgICAgICBpZiAoY29uZmlybWVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcImNsb3NlXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShcImNsb3NlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25ab29tKCkge1xyXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gXCJsYXJnZXN0XCIpIHtcclxuICAgICAgdGhpcy5zaXplID0gdGhpcy5kZWZhdWx0U2l6ZTsgLy8g5oGi5aSN5Yiw5Y6f5aeL5aSn5bCPXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNpemUgPSBcImxhcmdlc3RcIjsgLy8g6K6+572u5Li65pyA5aSn5YyWXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TYXZlKSB7XHJcbiAgICAgIHRoaXMuc2F2ZUVtaXQuZW1pdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJzYXZlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EaXNjYXJkKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJkaXNjYXJkXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJbmZvKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSkgfHwge307XHJcbiAgICB0aGlzLnNhdmVCdG5MYWJlbCA9IHRoaXMuc2F2ZUJ0bkxhYmVsIHx8IHRoaXMudHJhbnNsYXRpb24uU0FWRSB8fCBcIi5TQVZFXCI7XHJcbiAgICB0aGlzLmNhbmNlbEJ0bkxhYmVsID1cclxuICAgICAgdGhpcy5jYW5jZWxCdG5MYWJlbCB8fCB0aGlzLnRyYW5zbGF0aW9uLkNBTkNFTCB8fCBcIi5DQU5DRUxcIjtcclxuICAgIHRoaXMuZGVmYXVsdFNpemUgPSB0aGlzLnNpemU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -150,57 +150,10 @@ var FloatBoxComponent = /** @class */ (function () {
150
150
  * @return {?}
151
151
  */
152
152
  function () {
153
- var _a = this.rootElement.nativeElement.getBoundingClientRect(), y = _a.top, x = _a.left, width = _a.width, height = _a.height;
154
- // 临时显示内容以获取尺寸
155
- /** @type {?} */
156
- var wasVisible = this.contentElement.nativeElement.style.display !== "none";
157
- this.contentElement.nativeElement.style.visibility = "hidden";
158
- this.contentElement.nativeElement.style.display = "block";
159
- /** @type {?} */
160
- var contentRect = this.contentElement.nativeElement.getBoundingClientRect();
161
- /** @type {?} */
162
- var contentWidth = contentRect.width;
163
- /** @type {?} */
164
- var contentHeight = contentRect.height;
165
- // 获取视口尺寸
166
- /** @type {?} */
167
- var viewportWidth = window.innerWidth;
168
- /** @type {?} */
169
- var viewportHeight = window.innerHeight;
170
- /** @type {?} */
171
- var SAFE_MARGIN = 12;
172
- // 边界检测:计算最佳 placement
173
- /** @type {?} */
174
- var finalPlacement = this.placement;
175
- if (this.placement === "top" && y < contentHeight + SAFE_MARGIN) {
176
- if (viewportHeight - (y + height) >= contentHeight + SAFE_MARGIN) {
177
- finalPlacement = "bottom";
178
- }
179
- }
180
- else if (this.placement === "bottom" && viewportHeight - (y + height) < contentHeight + SAFE_MARGIN) {
181
- if (y >= contentHeight + SAFE_MARGIN) {
182
- finalPlacement = "top";
183
- }
184
- }
185
- else if (this.placement === "left" && x < contentWidth + SAFE_MARGIN) {
186
- if (viewportWidth - (x + width) >= contentWidth + SAFE_MARGIN) {
187
- finalPlacement = "right";
188
- }
189
- }
190
- else if (this.placement === "right" && viewportWidth - (x + width) < contentWidth + SAFE_MARGIN) {
191
- if (x >= contentWidth + SAFE_MARGIN) {
192
- finalPlacement = "left";
193
- }
194
- }
195
- // 保存调整后的 placement
196
- this.actualPlacement = finalPlacement;
197
- // 对于 fixed="no" 的情况,只更新 data-placement,让 CSS 处理
198
153
  if (this.fixed === "no") {
199
- this.contentElement.nativeElement.style.visibility = "";
200
- this.contentElement.nativeElement.style.display = wasVisible ? "" : "none";
201
154
  return;
202
155
  }
203
- // 对于 fixed="yes" 的情况,计算具体位置
156
+ var _a = this.rootElement.nativeElement.getBoundingClientRect(), y = _a.top, x = _a.left, width = _a.width, height = _a.height;
204
157
  /** @type {?} */
205
158
  var top = "0";
206
159
  /** @type {?} */
@@ -209,7 +162,7 @@ var FloatBoxComponent = /** @class */ (function () {
209
162
  var translateX = "0";
210
163
  /** @type {?} */
211
164
  var translateY = "0";
212
- switch (finalPlacement + "_" + this.position) {
165
+ switch (this.placement + "_" + this.position) {
213
166
  case "top_start":
214
167
  top = y + "px";
215
168
  left = x - 8 + "px";
@@ -273,49 +226,9 @@ var FloatBoxComponent = /** @class */ (function () {
273
226
  translateX = "-100%";
274
227
  break;
275
228
  }
276
- // 计算实际渲染位置(考虑 transform)进行边界调整
277
- /** @type {?} */
278
- var actualLeft = parseFloat(left) || 0;
279
- /** @type {?} */
280
- var actualTop = parseFloat(top) || 0;
281
- if (translateX === "-50%") {
282
- actualLeft = actualLeft - contentWidth / 2;
283
- }
284
- else if (translateX === "-100%") {
285
- actualLeft = actualLeft - contentWidth;
286
- }
287
- if (translateY === "-50%") {
288
- actualTop = actualTop - contentHeight / 2;
289
- }
290
- else if (translateY === "-100%") {
291
- actualTop = actualTop - contentHeight;
292
- }
293
- // 水平边界调整
294
- if (finalPlacement === "top" || finalPlacement === "bottom") {
295
- if (actualLeft < SAFE_MARGIN) {
296
- left = (x + SAFE_MARGIN) + "px";
297
- translateX = "0";
298
- }
299
- else if (actualLeft + contentWidth > viewportWidth - SAFE_MARGIN) {
300
- left = (viewportWidth - contentWidth - SAFE_MARGIN) + "px";
301
- translateX = "0";
302
- }
303
- }
304
- // 垂直边界调整
305
- else {
306
- if (actualTop < SAFE_MARGIN) {
307
- top = (y + SAFE_MARGIN) + "px";
308
- translateY = "0";
309
- }
310
- else if (actualTop + contentHeight > viewportHeight - SAFE_MARGIN) {
311
- top = (viewportHeight - contentHeight - SAFE_MARGIN) + "px";
312
- translateY = "0";
313
- }
314
- }
315
229
  this.contentElement.nativeElement.style.top = top;
316
230
  this.contentElement.nativeElement.style.left = left;
317
231
  this.contentElement.nativeElement.style.transform = "translate(" + translateX + ", " + translateY + ")";
318
- this.contentElement.nativeElement.style.visibility = "visible";
319
232
  };
320
233
  /**
321
234
  * @return {?}
@@ -339,15 +252,13 @@ var FloatBoxComponent = /** @class */ (function () {
339
252
  * @return {?}
340
253
  */
341
254
  function () {
342
- if (this.trigger !== "hover") {
255
+ if (this.fixed === "no" || this.trigger !== "hover") {
343
256
  return;
344
257
  }
345
258
  this.opened = "yes";
346
259
  this.openChange.emit(true);
347
260
  this.setFixedContentPosition();
348
- if (this.fixed === "yes") {
349
- window.addEventListener("mousemove", this.onMoveOutside);
350
- }
261
+ window.addEventListener("mousemove", this.onMoveOutside);
351
262
  };
352
263
  /**
353
264
  * @return {?}
@@ -370,7 +281,7 @@ var FloatBoxComponent = /** @class */ (function () {
370
281
  FloatBoxComponent.decorators = [
371
282
  { type: Component, args: [{
372
283
  selector: "rs-float-box",
373
- template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"actualPlacement || placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
284
+ template: "<div\r\n #element\r\n class=\"float-box-container\"\r\n [attr.data-trigger]=\"trigger\"\r\n (click)=\"onClickContainer()\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <ng-content></ng-content>\r\n <div\r\n #content\r\n class=\"float-box-content\"\r\n [attr.data-placement]=\"placement\"\r\n [attr.data-position]=\"position\"\r\n [attr.data-animation]=\"animation\"\r\n [attr.data-fixed]=\"fixed\"\r\n [attr.data-opened]=\"opened\"\r\n >\r\n <div class=\"float-box-show-content\">\r\n <ng-content select=\"[float-content]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
374
285
  styles: [".float-box-container{position:relative}.float-box-container[data-trigger=click]>.float-box-content[data-opened=no],.float-box-container[data-trigger=hover]:not(:hover)>.float-box-content{display:none}.float-box-container>.float-box-content[data-fixed=no]{padding:8px;--top:0;--left:0;--translate-x:0;--translate-y:0;position:absolute;top:var(--top);left:var(--left);transform:translate(var(--translate-x),var(--translate-y));z-index:10}.float-box-container>.float-box-content[data-fixed=no][data-animation=yes]{-webkit-animation:.25s ease-in-out;animation:.25s ease-in-out}.float-box-container>.float-box-content[data-fixed=no][data-placement=top]{--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-animation=true]{-webkit-animation-name:open-from-top;animation-name:open-from-top}.float-box-container>.float-box-content[data-fixed=no][data-placement=left]{--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=right]{--left:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom]{--top:100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=start]{--left:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=center]{--left:50%;--translate-x:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=bottom][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=top][data-position=end]{--left:calc(100% + 8px);--translate-x:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start]{--top:-8px}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=start][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=start][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center]{--top:50%;--translate-y:-50%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=center][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=center][data-animation=yes]{-webkit-animation-name:open-from-bottom;animation-name:open-from-bottom}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end]{--top:calc(100% + 8px);--translate-y:-100%}.float-box-container>.float-box-content[data-fixed=no][data-placement=left][data-position=end][data-animation=yes],.float-box-container>.float-box-content[data-fixed=no][data-placement=right][data-position=end][data-animation=yes]{-webkit-animation-name:open-from-top;animation-name:open-from-top}@-webkit-keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-top{from{margin-top:-8px;opacity:.4}to{margin:0;opacity:1}}@-webkit-keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}@keyframes open-from-bottom{from{margin-top:8px;opacity:.4}to{margin:0;opacity:1}}::ng-deep #kt-float-box-fixed-container{width:0;height:0;z-index:100000}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes]{padding:8px;position:fixed;z-index:10}::ng-deep #kt-float-box-fixed-container .float-box-content[data-fixed=yes][data-opened=no]{display:none}.float-box-show-content{padding:8px 8px 12px;border-radius:8px;background:#fff;box-shadow:0 0 8px 0 rgba(0,0,0,.25)}"]
375
286
  }] }
376
287
  ];
@@ -403,8 +314,6 @@ if (false) {
403
314
  /** @type {?} */
404
315
  FloatBoxComponent.prototype._fixed;
405
316
  /** @type {?} */
406
- FloatBoxComponent.prototype.actualPlacement;
407
- /** @type {?} */
408
317
  FloatBoxComponent.prototype.openChange;
409
318
  /** @type {?} */
410
319
  FloatBoxComponent.prototype.rootElement;
@@ -426,4 +335,4 @@ if (false) {
426
335
  */
427
336
  FloatBoxComponent.prototype.ref;
428
337
  }
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQXlEQywyQkFBb0IsR0FBc0I7UUFBMUMsaUJBQThDO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakR4QixhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUNwQyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNwQyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQXdDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQi9ELHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO1FBOEtwRCxXQUFNLEdBQWlCLElBQUksQ0FBQztRQVk1QixtQkFBYzs7OztRQUFHLFVBQUMsS0FBaUI7WUFDbEMsSUFDQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUM7Z0JBQ2pFLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUMsRUFDdkQ7Z0JBQ0QsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN4QjtR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dXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25EZXN0cm95LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLWZsb2F0LWJveFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbG9hdEJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KFwicGxhY2VtZW50XCIpIF9wbGFjZW1lbnQ6IFwidG9wXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCI7XHJcblx0QElucHV0KFwicG9zaXRpb25cIikgX3Bvc2l0aW9uOiBcInN0YXJ0XCIgfCBcImNlbnRlclwiIHwgXCJlbmRcIjtcclxuXHRASW5wdXQoXCJ0cmlnZ2VyXCIpIF90cmlnZ2VyOiBcImhvdmVyXCIgfCBcImNsaWNrXCIgPSBcImhvdmVyXCI7XHJcblx0QElucHV0KFwiYW5pbWF0aW9uXCIpIF9hbmltYXRpb246IFwieWVzXCIgfCBcIm5vXCIgPSBcIm5vXCI7XHJcblx0QElucHV0KFwiZml4ZWRcIikgX2ZpeGVkOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cclxuXHRnZXQgcGxhY2VtZW50KCkge1xyXG5cdFx0aWYgKFtcInRvcFwiLCBcImxlZnRcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyh0aGlzLl9wbGFjZW1lbnQpKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wbGFjZW1lbnQ7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJib3R0b21cIjtcclxuXHR9XHJcblxyXG5cdGdldCBwb3NpdGlvbigpIHtcclxuXHRcdGlmIChbXCJzdGFydFwiLCBcImNlbnRlclwiLCBcImVuZFwiXS5pbmNsdWRlcyh0aGlzLl9wb3NpdGlvbikpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiY2VudGVyXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgdHJpZ2dlcigpIHtcclxuXHRcdGlmICh0aGlzLl90cmlnZ2VyID09PSBcImNsaWNrXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwiY2xpY2tcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImhvdmVyXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgYW5pbWF0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuX2FuaW1hdGlvbiA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHRyZXR1cm4gXCJ5ZXNcIjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcIm5vXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgZml4ZWQoKSB7XHJcblx0XHRpZiAodGhpcy5fZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Ly8g5a6e6ZmF5L2/55So55qEIHBsYWNlbWVudO+8iOWPr+iDvee7j+i/h+iHquWKqOiwg+aVtO+8iVxyXG5cdGFjdHVhbFBsYWNlbWVudDogXCJ0b3BcIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJib3R0b21cIjtcclxuXHJcblx0QE91dHB1dChcIm9wZW5DaGFuZ2VcIikgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImVsZW1lbnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cm9vdEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cdEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdGNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0XHR0aGlzLmZpeGVkQ29udGFpbmVyRWwgPSB0aGlzLmdldEZpeGVkQ29udGFpbmVyKCk7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHR0aGlzLmZpeGVkQ29udGFpbmVyRWwuYXBwZW5kKHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuXHR9XHJcblxyXG5cdEZJWEVEX0NPTlRBSU5FUl9JRCA9IFwia3QtZmxvYXQtYm94LWZpeGVkLWNvbnRhaW5lclwiO1xyXG5cdGZpeGVkQ29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xyXG5cdGdldEZpeGVkQ29udGFpbmVyKCkge1xyXG5cdFx0bGV0IGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkZJWEVEX0NPTlRBSU5FUl9JRCk7XHJcblx0XHRpZiAoIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuXHRcdFx0Y29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaWRcIiwgdGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJFbGVtZW50KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBjb250YWluZXJFbGVtZW50O1xyXG5cdH1cclxuXHJcblx0c2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKSB7XHJcblx0XHRjb25zdCB7XHJcblx0XHRcdHRvcDogeSxcclxuXHRcdFx0bGVmdDogeCxcclxuXHRcdFx0d2lkdGgsXHJcblx0XHRcdGhlaWdodCxcclxuXHRcdH0gPSB0aGlzLnJvb3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG5cdFx0Ly8g5Li05pe25pi+56S65YaF5a655Lul6I635Y+W5bC65a+4XHJcblx0XHRjb25zdCB3YXNWaXNpYmxlID0gdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgIT09IFwibm9uZVwiO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XHJcblx0XHRjb25zdCBjb250ZW50UmVjdCA9IHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWN0LndpZHRoO1xyXG5cdFx0Y29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRSZWN0LmhlaWdodDtcclxuXHJcblx0XHQvLyDojrflj5bop4blj6PlsLrlr7hcclxuXHRcdGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuXHRcdGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG5cdFx0Y29uc3QgU0FGRV9NQVJHSU4gPSAxMjtcclxuXHJcblx0XHQvLyDovrnnlYzmo4DmtYvvvJrorqHnrpfmnIDkvbMgcGxhY2VtZW50XHJcblx0XHRsZXQgZmluYWxQbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcclxuXHRcdGlmICh0aGlzLnBsYWNlbWVudCA9PT0gXCJ0b3BcIiAmJiB5IDwgY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdGlmICh2aWV3cG9ydEhlaWdodCAtICh5ICsgaGVpZ2h0KSA+PSBjb250ZW50SGVpZ2h0ICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwiYm90dG9tXCI7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT09IFwiYm90dG9tXCIgJiYgdmlld3BvcnRIZWlnaHQgLSAoeSArIGhlaWdodCkgPCBjb250ZW50SGVpZ2h0ICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHkgPj0gY29udGVudEhlaWdodCArIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0ZmluYWxQbGFjZW1lbnQgPSBcInRvcFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcImxlZnRcIiAmJiB4IDwgY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHZpZXdwb3J0V2lkdGggLSAoeCArIHdpZHRoKSA+PSBjb250ZW50V2lkdGggKyBTQUZFX01BUkdJTikge1xyXG5cdFx0XHRcdGZpbmFsUGxhY2VtZW50ID0gXCJyaWdodFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGxhY2VtZW50ID09PSBcInJpZ2h0XCIgJiYgdmlld3BvcnRXaWR0aCAtICh4ICsgd2lkdGgpIDwgY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0aWYgKHggPj0gY29udGVudFdpZHRoICsgU0FGRV9NQVJHSU4pIHtcclxuXHRcdFx0XHRmaW5hbFBsYWNlbWVudCA9IFwibGVmdFwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5L+d5a2Y6LCD5pW05ZCO55qEIHBsYWNlbWVudFxyXG5cdFx0dGhpcy5hY3R1YWxQbGFjZW1lbnQgPSBmaW5hbFBsYWNlbWVudDtcclxuXHJcblx0XHQvLyDlr7nkuo4gZml4ZWQ9XCJub1wiIOeahOaDheWGte+8jOWPquabtOaWsCBkYXRhLXBsYWNlbWVudO+8jOiuqSBDU1Mg5aSE55CGXHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJub1wiKSB7XHJcblx0XHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIjtcclxuXHRcdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSB3YXNWaXNpYmxlID8gXCJcIiA6IFwibm9uZVwiO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5a+55LqOIGZpeGVkPVwieWVzXCIg55qE5oOF5Ya177yM6K6h566X5YW35L2T5L2N572uXHJcblx0XHRsZXQgdG9wID0gXCIwXCI7XHJcblx0XHRsZXQgbGVmdCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdGxldCB0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRzd2l0Y2ggKGZpbmFsUGxhY2VtZW50ICsgXCJfXCIgKyB0aGlzLnBvc2l0aW9uKSB7XHJcblx0XHRcdGNhc2UgXCJ0b3Bfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwidG9wX2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJsZWZ0X2VuZFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInJpZ2h0X2NlbnRlclwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBoZWlnaHQgLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTUwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwiYm90dG9tX3N0YXJ0XCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCAtIDggKyBcInB4XCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIOiuoeeul+WunumZhea4suafk+S9jee9ru+8iOiAg+iZkSB0cmFuc2Zvcm3vvInov5vooYzovrnnlYzosIPmlbRcclxuXHRcdGxldCBhY3R1YWxMZWZ0ID0gcGFyc2VGbG9hdChsZWZ0KSB8fCAwO1xyXG5cdFx0bGV0IGFjdHVhbFRvcCA9IHBhcnNlRmxvYXQodG9wKSB8fCAwO1xyXG5cdFx0aWYgKHRyYW5zbGF0ZVggPT09IFwiLTUwJVwiKSB7XHJcblx0XHRcdGFjdHVhbExlZnQgPSBhY3R1YWxMZWZ0IC0gY29udGVudFdpZHRoIC8gMjtcclxuXHRcdH0gZWxzZSBpZiAodHJhbnNsYXRlWCA9PT0gXCItMTAwJVwiKSB7XHJcblx0XHRcdGFjdHVhbExlZnQgPSBhY3R1YWxMZWZ0IC0gY29udGVudFdpZHRoO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRyYW5zbGF0ZVkgPT09IFwiLTUwJVwiKSB7XHJcblx0XHRcdGFjdHVhbFRvcCA9IGFjdHVhbFRvcCAtIGNvbnRlbnRIZWlnaHQgLyAyO1xyXG5cdFx0fSBlbHNlIGlmICh0cmFuc2xhdGVZID09PSBcIi0xMDAlXCIpIHtcclxuXHRcdFx0YWN0dWFsVG9wID0gYWN0dWFsVG9wIC0gY29udGVudEhlaWdodDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDmsLTlubPovrnnlYzosIPmlbRcclxuXHRcdGlmIChmaW5hbFBsYWNlbWVudCA9PT0gXCJ0b3BcIiB8fCBmaW5hbFBsYWNlbWVudCA9PT0gXCJib3R0b21cIikge1xyXG5cdFx0XHRpZiAoYWN0dWFsTGVmdCA8IFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0bGVmdCA9ICh4ICsgU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdFx0fSBlbHNlIGlmIChhY3R1YWxMZWZ0ICsgY29udGVudFdpZHRoID4gdmlld3BvcnRXaWR0aCAtIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0bGVmdCA9ICh2aWV3cG9ydFdpZHRoIC0gY29udGVudFdpZHRoIC0gU0FGRV9NQVJHSU4pICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIjBcIjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8g5Z6C55u06L6555WM6LCD5pW0XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0aWYgKGFjdHVhbFRvcCA8IFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0dG9wID0gKHkgKyBTQUZFX01BUkdJTikgKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiMFwiO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGFjdHVhbFRvcCArIGNvbnRlbnRIZWlnaHQgPiB2aWV3cG9ydEhlaWdodCAtIFNBRkVfTUFSR0lOKSB7XHJcblx0XHRcdFx0dG9wID0gKHZpZXdwb3J0SGVpZ2h0IC0gY29udGVudEhlaWdodCAtIFNBRkVfTUFSR0lOKSArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCIwXCI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdG9wO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0O1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt0cmFuc2xhdGVYfSwgJHt0cmFuc2xhdGVZfSlgO1xyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcInZpc2libGVcIjtcclxuXHR9XHJcblxyXG5cdG9wZW5lZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRvbkNsaWNrQ29udGFpbmVyKCkge1xyXG5cdFx0aWYgKHRoaXMudHJpZ2dlciAhPT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5maXhlZENvbnRhaW5lckVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdG9uTW91c2VFbnRlcigpIHtcclxuXHRcdGlmICh0aGlzLnRyaWdnZXIgIT09IFwiaG92ZXJcIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5vcGVuZWQgPSBcInllc1wiO1xyXG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcblx0XHR0aGlzLnNldEZpeGVkQ29udGVudFBvc2l0aW9uKCk7XHJcblx0XHRpZiAodGhpcy5maXhlZCA9PT0gXCJ5ZXNcIikge1xyXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW92ZU91dHNpZGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25Nb3ZlT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0Y2xvc2UoKSB7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5vcGVuZWQgPSBcIm5vXCI7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0XHR0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcclxuXHRcdH0sIDApO1xyXG5cdH1cclxufVxyXG4iXX0=
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mbG9hdC1ib3gvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUVOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQXNEQywyQkFBb0IsR0FBc0I7UUFBMUMsaUJBQThDO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUN4QixhQUFRLEdBQXNCLE9BQU8sQ0FBQztRQUNwQyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUNwQyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQXFDdEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFvQi9ELHVCQUFrQixHQUFHLDhCQUE4QixDQUFDO1FBa0dwRCxXQUFNLEdBQWlCLElBQUksQ0FBQztRQVk1QixtQkFBYzs7OztRQUFHLFVBQUMsS0FBaUI7WUFDbEMsSUFDQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUM7Z0JBQ2pFLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBQSxLQUFLLENBQUMsTUFBTSxFQUFXLENBQUMsRUFDdkQ7Z0JBQ0QsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN4QjtR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cEUsc0NBQXlEOztJQUN6RCxxQ0FBd0Q7O0lBQ3hELHVDQUFvRDs7SUFDcEQsbUNBQTRDOztJQXFDNUMsdUNBQStEOztJQUUvRCx3Q0FDd0M7O0lBQ3hDLDJDQUMyQzs7SUFlM0MsK0NBQW9EOztJQUNwRCw2Q0FBOEI7O0lBaUc5QixtQ0FBNEI7O0lBWTVCLDJDQVVFOztJQWFGLDBDQVVFOzs7OztJQTVKVSxnQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPdXRwdXQsXHJcblx0Vmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJycy1mbG9hdC1ib3hcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxvYXRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInBsYWNlbWVudFwiKSBfcGxhY2VtZW50OiBcInRvcFwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiO1xyXG5cdEBJbnB1dChcInBvc2l0aW9uXCIpIF9wb3NpdGlvbjogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCI7XHJcblx0QElucHV0KFwidHJpZ2dlclwiKSBfdHJpZ2dlcjogXCJob3ZlclwiIHwgXCJjbGlja1wiID0gXCJob3ZlclwiO1xyXG5cdEBJbnB1dChcImFuaW1hdGlvblwiKSBfYW5pbWF0aW9uOiBcInllc1wiIHwgXCJub1wiID0gXCJub1wiO1xyXG5cdEBJbnB1dChcImZpeGVkXCIpIF9maXhlZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHJcblx0Z2V0IHBsYWNlbWVudCgpIHtcclxuXHRcdGlmIChbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIl0uaW5jbHVkZXModGhpcy5fcGxhY2VtZW50KSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fcGxhY2VtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwiYm90dG9tXCI7XHJcblx0fVxyXG5cclxuXHRnZXQgcG9zaXRpb24oKSB7XHJcblx0XHRpZiAoW1wic3RhcnRcIiwgXCJjZW50ZXJcIiwgXCJlbmRcIl0uaW5jbHVkZXModGhpcy5fcG9zaXRpb24pKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl9wb3NpdGlvbjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBcImNlbnRlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRyaWdnZXIoKSB7XHJcblx0XHRpZiAodGhpcy5fdHJpZ2dlciA9PT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybiBcImNsaWNrXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJob3ZlclwiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGFuaW1hdGlvbigpIHtcclxuXHRcdGlmICh0aGlzLl9hbmltYXRpb24gPT09IFwieWVzXCIpIHtcclxuXHRcdFx0cmV0dXJuIFwieWVzXCI7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gXCJub1wiO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpeGVkKCkge1xyXG5cdFx0aWYgKHRoaXMuX2ZpeGVkID09PSBcInllc1wiKSB7XHJcblx0XHRcdHJldHVybiBcInllc1wiO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIFwibm9cIjtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoXCJvcGVuQ2hhbmdlXCIpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHJvb3RFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHRAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0dGhpcy5maXhlZENvbnRhaW5lckVsID0gdGhpcy5nZXRGaXhlZENvbnRhaW5lcigpO1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwieWVzXCIpIHtcclxuXHRcdFx0dGhpcy5maXhlZENvbnRhaW5lckVsLmFwcGVuZCh0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHRGSVhFRF9DT05UQUlORVJfSUQgPSBcImt0LWZsb2F0LWJveC1maXhlZC1jb250YWluZXJcIjtcclxuXHRmaXhlZENvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcclxuXHRnZXRGaXhlZENvbnRhaW5lcigpIHtcclxuXHRcdGxldCBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5GSVhFRF9DT05UQUlORVJfSUQpO1xyXG5cdFx0aWYgKCFjb250YWluZXJFbGVtZW50KSB7XHJcblx0XHRcdGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0XHRjb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMuRklYRURfQ09OVEFJTkVSX0lEKTtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmQoY29udGFpbmVyRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29udGFpbmVyRWxlbWVudDtcclxuXHR9XHJcblxyXG5cdHNldEZpeGVkQ29udGVudFBvc2l0aW9uKCkge1xyXG5cdFx0aWYgKHRoaXMuZml4ZWQgPT09IFwibm9cIikge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qge1xyXG5cdFx0XHR0b3A6IHksXHJcblx0XHRcdGxlZnQ6IHgsXHJcblx0XHRcdHdpZHRoLFxyXG5cdFx0XHRoZWlnaHQsXHJcblx0XHR9ID0gdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuXHRcdGxldCB0b3AgPSBcIjBcIjtcclxuXHRcdGxldCBsZWZ0ID0gXCIwXCI7XHJcblx0XHRsZXQgdHJhbnNsYXRlWCA9IFwiMFwiO1xyXG5cdFx0bGV0IHRyYW5zbGF0ZVkgPSBcIjBcIjtcclxuXHRcdHN3aXRjaCAodGhpcy5wbGFjZW1lbnQgKyBcIl9cIiArIHRoaXMucG9zaXRpb24pIHtcclxuXHRcdFx0Y2FzZSBcInRvcF9zdGFydFwiOlxyXG5cdFx0XHRcdHRvcCA9IHkgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggLSA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJ0b3BfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoIC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItNTAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcInRvcF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWSA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwibGVmdF9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0IC8gMiArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVYID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImxlZnRfZW5kXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCArIDggKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyBcInB4XCI7XHJcblx0XHRcdFx0dHJhbnNsYXRlWCA9IFwiLTEwMCVcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItMTAwJVwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFwicmlnaHRfY2VudGVyXCI6XHJcblx0XHRcdFx0dG9wID0geSArIGhlaWdodCAvIDIgKyBcInB4XCI7XHJcblx0XHRcdFx0bGVmdCA9IHggKyB3aWR0aCArIFwicHhcIjtcclxuXHRcdFx0XHR0cmFuc2xhdGVZID0gXCItNTAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJyaWdodF9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgOCArIFwicHhcIjtcclxuXHRcdFx0XHRsZWZ0ID0geCArIHdpZHRoICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVkgPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgXCJib3R0b21fc3RhcnRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4IC0gOCArIFwicHhcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9jZW50ZXJcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggLyAyICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi01MCVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBcImJvdHRvbV9lbmRcIjpcclxuXHRcdFx0XHR0b3AgPSB5ICsgaGVpZ2h0ICsgXCJweFwiO1xyXG5cdFx0XHRcdGxlZnQgPSB4ICsgd2lkdGggKyA4ICsgXCJweFwiO1xyXG5cdFx0XHRcdHRyYW5zbGF0ZVggPSBcIi0xMDAlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9IHRvcDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdDtcclxuXHRcdHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7dHJhbnNsYXRlWH0sICR7dHJhbnNsYXRlWX0pYDtcclxuXHR9XHJcblxyXG5cdG9wZW5lZDogXCJ5ZXNcIiB8IFwibm9cIiA9IFwibm9cIjtcclxuXHRvbkNsaWNrQ29udGFpbmVyKCkge1xyXG5cdFx0aWYgKHRoaXMudHJpZ2dlciAhPT0gXCJjbGlja1wiKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLm9wZW5lZCA9IFwieWVzXCI7XHJcblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHRcdHRoaXMuc2V0Rml4ZWRDb250ZW50UG9zaXRpb24oKTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0fVxyXG5cclxuXHRvbkNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG5cdFx0aWYgKFxyXG5cdFx0XHQhdGhpcy5yb290RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KSAmJlxyXG5cdFx0XHQhdGhpcy5maXhlZENvbnRhaW5lckVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdG9uTW91c2VFbnRlcigpIHtcclxuXHRcdGlmICh0aGlzLmZpeGVkID09PSBcIm5vXCIgfHwgdGhpcy50cmlnZ2VyICE9PSBcImhvdmVyXCIpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMub3BlbmVkID0gXCJ5ZXNcIjtcclxuXHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xyXG5cdFx0dGhpcy5zZXRGaXhlZENvbnRlbnRQb3NpdGlvbigpO1xyXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbk1vdmVPdXRzaWRlKTtcclxuXHR9XHJcblxyXG5cdG9uTW92ZU91dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHRcdGlmIChcclxuXHRcdFx0IXRoaXMucm9vdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudCkgJiZcclxuXHRcdFx0IXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgRWxlbWVudClcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLm9wZW5lZCA9IFwibm9cIjtcclxuXHRcdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG5cdFx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub25Nb3ZlT3V0c2lkZSk7XHJcblx0XHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMub3BlbmVkID0gXCJub1wiO1xyXG5cdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XHJcblx0XHR9LCAwKTtcclxuXHR9XHJcbn1cclxuIl19