barsa-sap-ui 2.0.53 → 2.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +2 -2
  2. package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +3 -3
  3. package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +13 -4
  4. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +5 -3
  5. package/esm2022/lib/card-item/card-item.component.mjs +3 -3
  6. package/esm2022/lib/column-renderer/column-renderer.component.mjs +3 -3
  7. package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +1 -1
  8. package/esm2022/lib/list-item/list-item.component.mjs +3 -3
  9. package/esm2022/lib/models/grid-data-provider.mjs +3 -3
  10. package/esm2022/lib/report-view-renderer.directive.mjs +9 -4
  11. package/esm2022/lib/sap-ui-report-base.component.mjs +14 -4
  12. package/esm2022/lib/ui-grid/ui-grid.component.mjs +3 -3
  13. package/esm2022/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +12 -3
  14. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +3 -3
  15. package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +77 -4
  16. package/esm2022/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +3 -3
  17. package/esm2022/lib/ulv-paging/ulv-paging.component.mjs +3 -3
  18. package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +11 -4
  19. package/fesm2022/barsa-sap-ui.mjs +151 -37
  20. package/fesm2022/barsa-sap-ui.mjs.map +1 -1
  21. package/lib/barsa-table-header/barsa-table-header.component.d.ts +4 -1
  22. package/lib/barsa-table-row/barsa-table-row.component.d.ts +2 -1
  23. package/lib/models/grid-data-provider.d.ts +2 -1
  24. package/lib/report-view-renderer.directive.d.ts +6 -2
  25. package/lib/sap-ui-report-base.component.d.ts +5 -1
  26. package/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.d.ts +1 -0
  27. package/lib/ui-table-view/ui-table-view.component.d.ts +18 -0
  28. package/package.json +1 -1
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
191
191
  type: ViewChild,
192
192
  args: ['closeForm', { static: true }]
193
193
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS9mdW5kYW1lbnRhbC1keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0Isb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEgsT0FBTyxFQUNILGFBQWEsRUFJYixTQUFTLEVBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2hFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxhQUFhO0lBMkQ5RCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXZEdkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsb0JBQW9CO1FBQ1YsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQW9CeEMsY0FBUyxHQUFHLElBQUks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bEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQzZDLFFBQVE7c0JBQTFELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUN0QixlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2lCLGlCQUFpQjtzQkFBMUQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5LCBEeW5hbWljUGFnZUNvbXBvbmVudCwgVGFiTGlzdENvbXBvbmVudCwgVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQnJlYWRDcnVtYkluZm8sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBMYXlvdXRTZXR0aW5nLFxuICAgIGlzRmlyZWZveCxcbiAgICBGb3JtVmlzaWJpbGl0eVN0YXR1c1xufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBGb3JtVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdG9vbGJhci9mb3JtLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1MYXlvdXRDb2wsIEdldEZvcm1MYXlvdXRHcmlkIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWZ1bmRhbWVudGFsLWR5bmFtaWMtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnVuZGFtZW50YWxEeW5hbWljRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChEeW5hbWljUGFnZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgX2R5bmFtaWNQYWdlQ29tcG9uZW50OiBEeW5hbWljUGFnZUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKFRhYkxpc3RDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBfdGFiTGlzdENvbXBvbmVudDogVGFiTGlzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdmb3JtVG9vbGJhcicpIF90b29sYmFyQ29tcG9uZW50OiBGb3JtVG9vbGJhckNvbXBvbmVudDtcbiAgICBAT3V0cHV0KCkgdG9vbGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHdvcmtmbG93Q2hvaWNlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZnVsbHNjcmVlblJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQElucHV0KCkgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJJbmZvW10gfCBudWxsO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJWaXNpYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJJdGVtczogYW55W107XG4gICAgQElucHV0KCkgbGF5b3V0QWN0aW9uczogYW55W107XG4gICAgQElucHV0KCkgbGF5b3V0OTQ7XG4gICAgQElucHV0KCkgcGFyYW1ldGVyczogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSB3b3JrZmxvd1BhbmVsVWk6IGFueTtcbiAgICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmFjZXRMaXN0OiBhbnlbXTtcbiAgICBASW5wdXQoKSBmaWVsZERpY3Q6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgcmVtb3ZlSGVhZGVyQm9yZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlbW92ZUNvbnRlbnRQYWRkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIGF2YXRhcjogYW55O1xuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhpZGVDbG9zZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlUGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgQElucHV0KCkgbWFzazogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjYW5TZW5kOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbnRlbnRJc1BhZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6ICdzJyB8ICdtJyB8ICdsJyB8ICd4bCc7XG4gICAgQElucHV0KCkgZGlyVmFsdWU6ICdydGwnIHwgJ2x0cic7XG4gICAgQElucHV0KCkgbGFuZHNjYXBlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHN0YW5kYWxvbmU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbW9kZXJuVGFiczogTGF5b3V0U2V0dGluZ1tdO1xuICAgIEBJbnB1dCgpIGZvcm1WaXNpYmlsaXR5U3RhdHVzOiBGb3JtVmlzaWJpbGl0eVN0YXR1cztcbiAgICBASW5wdXQoKSBsYXlvdXRHcmlkQ29sOiBudW1iZXI7XG4gICAgQElucHV0KCkgY29sTGc6IG51bWJlcjtcbiAgICBASW5wdXQoKSBjb2xYbDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGNvbE1kOiBudW1iZXI7XG4gICAgQFZpZXdDaGlsZCgndGl0bGVSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgdGl0bGVSZWY6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyQXZhdGFyJykgaGVhZGVyQXZhdGFyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2Nsb3NlRm9ybScsIHsgc3RhdGljOiB0cnVlIH0pIGNsb3NlRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHdvcmtmbG93QnV0dG9uczogYW55W107XG4gICAgc2VsZWN0ZWRUYWI6IGFueTtcblxuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgdG9vbGJhclNob3VsZE92ZXJmbG93ID0gZmFsc2U7XG4gICAgd29ya2Zsb3dJbmZvVGV4dDogc3RyaW5nO1xuICAgIHdvcmtmbG93QnV0dG9uc0NvbWJvTW9kZTogYm9vbGVhbjtcbiAgICBpc0ZpcmVmb3g6IGJvb2xlYW47XG4gICAgbGF5b3V0MTogRm9ybUxheW91dENvbDtcbiAgICBsYXlvdXQyOiBGb3JtTGF5b3V0Q29sO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmlzRmlyZWZveCA9IGlzRmlyZWZveCgpO1xuICAgICAgICB0aGlzLmZhY2V0TGlzdCB8fD0gW107XG4gICAgICAgIHRoaXMud29ya2Zsb3dJbmZvVGV4dCA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uSW5mb1RleHQ7XG4gICAgICAgIGNvbnN0IHdvcmtmbG93QnV0dG9ucyA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5idXR0b25MaXN0ID8/IFtdO1xuICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9uc0NvbWJvTW9kZSA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uQnV0dG9uc0NvbWJvTW9kZTtcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnMgPSB3b3JrZmxvd0J1dHRvbnM7XG5cbiAgICAgICAgdGhpcy5jYW5GdWxsc2NyZWVuID0gdGhpcy5wYXJhbWV0ZXJzPy5DYW5GdWxsc2NyZWVuID09PSB0cnVlO1xuICAgICAgICBjb25zdCB0b29sYmFyQnV0dG9uc0NvdW50ID0gdGhpcy50b29sYmFySXRlbXMuZmlsdGVyKChjKSA9PiB0eXBlb2YgYyAhPT0gJ3N0cmluZycgJiYgYy50ZXh0ICE9PSAnLScpLmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHRvb2xiYXJCdXR0b25zQ291bnQgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJTaG91bGRPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodG9vbGJhckJ1dHRvbnNDb3VudCA+IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJTaG91bGRPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGFubGRlTGF5b3V0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFiTGlzdENvbXBvbmVudC5fZGlzYWJsZVNjcm9sbFNweSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmb3JtVmlzaWJpbGl0eVN0YXR1cyB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybVZpc2liaWxpdHlTdGF0dXMgJiZcbiAgICAgICAgICAgICFmb3JtVmlzaWJpbGl0eVN0YXR1cy5maXJzdENoYW5nZSAmJlxuICAgICAgICAgICAgZm9ybVZpc2liaWxpdHlTdGF0dXMuY3VycmVudFZhbHVlID09PSAnVmlzaWJsZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9keW5hbWljUGFnZUNvbXBvbmVudD8ucmVmcmVzaFNpemUoKTtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJDb21wb25lbnQ/LnVwZGF0ZUNvbGxhcHNpYmxlSXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV2ZDaG9pY2VTZWxlY3Qod2ZDaG9pY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd0Nob2ljZUNsaWNrLmVtaXQod2ZDaG9pY2UpO1xuICAgIH1cbiAgICBvblRhYkNoYW5nZWQodGFiOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiLnRpdGxlO1xuICAgIH1cbiAgICBnZXROdW1iZXIodmFsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpO1xuICAgIH1cbiAgICBvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoZSkge31cbiAgICBfaGFubGRlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxheW91dDEgPSBHZXRGb3JtTGF5b3V0R3JpZCh0cnVlLCB0aGlzLmNvbFhsLCB0aGlzLmNvbExnLCB0aGlzLmNvbE1kKTtcbiAgICAgICAgdGhpcy5sYXlvdXQyID0gR2V0Rm9ybUxheW91dEdyaWQoZmFsc2UsIHRoaXMuY29sWGwsIHRoaXMuY29sTGcsIHRoaXMuY29sTWQpO1xuICAgIH1cbn1cbiIsIkBpZiAobWFzaykge1xuPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlXCI+XG4gICAgPGJzdS1tYXNrIHNpemU9XCJtXCI+PC9ic3UtbWFzaz5cbjwvZGl2PlxufVxuXG48ZmQtZHluYW1pYy1wYWdlXG4gICAgW3NpemVdPVwiaXNNb2JpbGUgPyAnc21hbGwnIDogJ2xhcmdlJ1wiXG4gICAgW2NsYXNzLmhlYWRlci1ib3JkZXJdPVwiIXJlbW92ZUhlYWRlckJvcmRlclwiXG4gICAgW2F0dHIuaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFthdHRyLmNvbnRlbnRJc1BhZ2VdPVwiY29udGVudElzUGFnZVwiXG4gICAgbW9iaWxlXG4gICAgZm9ybUNsb3NlXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbj5cbiAgICA8ZmQtZHluYW1pYy1wYWdlLWhlYWRlclxuICAgICAgICBbY2xhc3Muc2ltcGxlLXRpdGxlXT1cIiFkZXNjcmlwdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCIoaGlkZVRpdGxlID09PSB0cnVlID8gJycgOiB0aXRsZSkgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwic3VidGl0bGUgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBbY2xhc3MucC1iMF09XCJyZW1vdmVDb250ZW50UGFkZGluZ1wiXG4gICAgICAgIFtjbGFzcy5oaWRlLXRpdGxlXT1cImhpZGVUaXRsZSA9PT0gdHJ1ZSAmJiBoaWRlQ2xvc2UgPT09IHRydWVcIlxuICAgICAgICAjdGl0bGVSZWZcbiAgICA+XG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYiBbY2xhc3MuaGlkZV09XCJpc01vYmlsZVwiPlxuICAgICAgICAgICAgPGZkLWJyZWFkY3J1bWI+XG4gICAgICAgICAgICAgICAgQGlmIChicmVhZENydW1icyAmJiAhaXNNb2JpbGUpIHsgQGZvciAoYnJlYWRDcnVtYiBvZiBicmVhZENydW1icyB8IHNsaWNlOiAwOmJyZWFkQ3J1bWJzLmxlbmd0aDsgdHJhY2tcbiAgICAgICAgICAgICAgICBicmVhZENydW1iLnVybDsgbGV0IGkgPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8YnN1LWJyZWFkY3J1bWJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwibGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYnJlYWRDcnVtYl09XCJicmVhZENydW1iXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbGxCcmVhZENydW1iXT1cImJyZWFkQ3J1bWJzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnN1LWJyZWFkY3J1bWI+XG4gICAgICAgICAgICAgICAgPC9mZC1icmVhZGNydW1iLWl0ZW0+XG4gICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWI+XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWJyZWFkY3J1bWI+XG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtZ2xvYmFsLWFjdGlvbnM+XG4gICAgICAgICAgICA8IS0tIGdsb2JhbCBhY3Rpb25zIC0tPlxuXG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiIFN0eWxlPVwiZGlzcGxheTpub25lXCI+IDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgIDwhLS0gYWRkZWQgdGhpcyBiZWNhdXNlIGluIG1vYmlsZSBsYW5kc2NhcGUgdG9vbGJhciBkaXNhcHBlciAtLT5cbiAgICAgICAgICAgIEBpZiAodG9vbGJhclZpc2libGUpIHtcbiAgICAgICAgICAgIDxic3UtZm9ybS10b29sYmFyXG4gICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgW2J1dHRvbnNdPVwidG9vbGJhckl0ZW1zXCJcbiAgICAgICAgICAgICAgICBbZGlyVmFsdWVdPVwiZGlyVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtpc0ZpcmVmb3hdPVwiaXNGaXJlZm94XCJcbiAgICAgICAgICAgICAgICAodG9vbGJhckNsaWNrKT1cInRvb2xiYXJDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICNmb3JtVG9vbGJhclxuICAgICAgICAgICAgPjwvYnN1LWZvcm0tdG9vbGJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtZ2xvYmFsLWFjdGlvbnM+XG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XG4gICAgICAgICAgICA8IS0tIGxheW91dCBhY3Rpb25zIC0tPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IFtmb3JtQWN0aW9uc109XCJ0aGlzLnRvb2xiYXJcIj48L2Rpdj4gLS0+XG4gICAgICAgICAgICBAaWYgKCFoaWRlQ2xvc2UpIHtcbiAgICAgICAgICAgIDxmZC10b29sYmFyIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGRldmljZVNpemUgIT09ICdzJykge1xuICAgICAgICAgICAgICAgIDxmZC10b29sYmFyLXNlcGFyYXRvcj48L2ZkLXRvb2xiYXItc2VwYXJhdG9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZnVsbHNjcmVlbkZvcm1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VGb3JtXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWhlYWRlcj5cbiAgICBAaWYgKGRlc2NyaXB0aW9uIHx8IGZhY2V0TGlzdC5sZW5ndGggPiAwIHx8IHdvcmtmbG93SW5mb1RleHQgfHwgYXZhdGFyKSB7XG4gICAgPGZkLWR5bmFtaWMtcGFnZS1zdWJoZWFkZXJcbiAgICAgICAgW2NsYXNzLmhlYWRlci1uby1kZXNjcmlwdGlvbl09XCIhKGRlc2NyaXB0aW9uIHx8IHdvcmtmbG93SW5mb1RleHQpXCJcbiAgICAgICAgW2NsYXNzLm5vLXBpbl09XCJoaWRlUGluXCJcbiAgICAgICAgW2NvbGxhcHNpYmxlXT1cIiEhd29ya2Zsb3dJbmZvVGV4dCB8fCAoZmFjZXRMaXN0ICYmIGZhY2V0TGlzdC5sZW5ndGggPiAwKVwiXG4gICAgICAgIFtwaW5uYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW2NvbGxhcHNlZF09XCIoIWZhY2V0TGlzdCB8fCBmYWNldExpc3QubGVuZ3RoID09PSAwKSAmJiAhd29ya2Zsb3dJbmZvVGV4dFwiXG4gICAgPlxuICAgICAgICBAaWYgKHdvcmtmbG93SW5mb1RleHQpIHtcbiAgICAgICAgPGZkLW1lc3NhZ2Utc3RyaXAgW3R5cGVdPVwiJ3dhcm5pbmcnXCIgW2Rpc21pc3NpYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICB7eyB3b3JrZmxvd0luZm9UZXh0IHwgYmJiVHJhbnNsYXRlIH19XG4gICAgICAgIDwvZmQtbWVzc2FnZS1zdHJpcD5cbiAgICAgICAgfVxuICAgICAgICA8ZmQtZmFjZXQtZ3JvdXAgYXJpYUxhYmVsPVwiRmFjZXQgR3JvdXBcIj5cbiAgICAgICAgICAgIEBpZiAoYXZhdGFyKSB7XG4gICAgICAgICAgICA8ZmQtZmFjZXQgdHlwZT1cImltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cImF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJhdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICBbaW1hZ2VdPVwiIWF2YXRhcj8uRmlsZUlkID8gbnVsbCA6IChhdmF0YXI/LkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnSUQnOm51bGwpXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3hsJyA/ICdsJyA6IGRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYXZhdGFyPlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1hdmF0YXIgZmQtYXZhdGFyLS1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidmZC1hdmF0YXItLScgKyAoZGV2aWNlU2l6ZSA9PT0gJ3hsJyA/ICdsJyA6IGRldmljZVNpemUpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYXZhdGFyXCIgY2xhc3M9XCJmZC1hdmF0YXJfX2ljb25cIiBbY2xhc3NdPVwiYXZhdGFyIHwgc2FwRm9udENsYXNzXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPiA8L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgPC9mZC1mYWNldD5cbiAgICAgICAgICAgIH0gQGZvciAoZmFjZXQgb2YgZmFjZXRMaXN0OyB0cmFjayBmYWNldCkge1xuICAgICAgICAgICAgPGZkLWZhY2V0XG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiZmFjZXQudHlwZVwiXG4gICAgICAgICAgICAgICAgW2ZhY2V0VGl0bGVdPVwiZmFjZXQubW8uVGl0bGUgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtzdWJ0aXRsZV09XCJmYWNldC5tby5TdWJUaXRsZSB8IGZhY2V0VmFsdWUgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmFjZXQubW8uSXRlbUxpc3Q/Lk1vRGF0YUxpc3Q7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8ZmQtZmFjZXQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgW2NvbG9uXT1cInRydWVcIiBmb3I9XCJmb3JtLXZhbHVlLTEwXCI+e3sgaXRlbS5UaXRsZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxmZC10ZXh0IFt0ZXh0XT1cIml0ZW0uVmFsdWUgfCBmYWNldFZhbHVlXCIgaWQ9XCJmb3JtLXZhbHVlLTEwXCI+PC9mZC10ZXh0PlxuICAgICAgICAgICAgICAgIDwvZmQtZmFjZXQtY29udGVudD5cbiAgICAgICAgICAgICAgICB9IEBpZiAoICFmYWNldC5tby5Jc051bWJlciAmJiBmYWNldC50eXBlID09PSAna2V5LXZhbHVlJyAmJiAhZmFjZXQubW8uQ29tcG9uZW50Py5TZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGZkLW9iamVjdC1zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJmYWNldC5tby5TdGF0dXMgfCBmYWNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImZhY2V0Lm1vLkNvbXBvbmVudD8uU2VsZWN0b3IgPyAnJyA6IChmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbbGFyZ2VdPVwiZmFjZXQubW8uSXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImZhY2V0Lm1vLlRleHQgfCBmYWNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImZhY2V0Lm1vLkljb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGJucmMtZHluYW1pYy1jb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidmZC1vYmplY3Qtc3RhdHVzLS0nICsgZmFjZXQubW8uU3RhdHVzIHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1vYmplY3Qtc3RhdHVzLS1sYXJnZV09XCJmYWNldC5tby5Jc0xhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJmYWNldC5tby5Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmFjZXQubW8uVGV4dFwiXG4gICAgICAgICAgICAgICAgPjwvYm5yYy1keW5hbWljLWNvbXBvbmVudD5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQubW8uSXNOdW1iZXIgJiYgZmFjZXQudHlwZSA9PT0gJ2tleS12YWx1ZScpIHtcbiAgICAgICAgICAgICAgICA8ZmQtb2JqZWN0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICBbbnVtYmVyXT1cImZhY2V0Lm1vLlRleHQgfCBmYWNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhcmdlXT1cImZhY2V0Lm1vLklzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbdW5pdF09XCJmYWNldC5tby5Vbml0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZmFjZXQubW8uU3RhdHVzIHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZWNpbWFsXT1cImZhY2V0Lm1vLkRlY2ltYWxWYWx1ZSB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgID48L2ZkLW9iamVjdC1udW1iZXI+XG4gICAgICAgICAgICAgICAgfSBAaWYgKGZhY2V0LnR5cGUgPT09ICdwbGFpbi10ZXh0Jykge1xuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoLnB4XT1cImZhY2V0Lm1vLldpZHRoXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC10ZXh0IFt0ZXh0XT1cImZhY2V0Lm1vLlRleHQgfCBmYWNldFZhbHVlXCIgaHlwaGVuYXRpb249XCJhdXRvXCI+PC9mZC10ZXh0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAncmF0aW5nLWluZGljYXRvcicpIHtcbiAgICAgICAgICAgICAgICA8ZmQtZmFjZXQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXJhdGluZy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkeW5hbWljVGV4dEluZGljYXRvcl09XCJmYWNldC5tby5Gb290ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlNb2RlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZhY2V0Lm1vIHwgZmFjZXRWYWx1ZTogZmFjZXQudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLXJhdGluZy1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgPC9mZC1mYWNldC1jb250ZW50PlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGhdPVwiJzEwcmVtJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGZkLWZvcm0tbGFiZWw+e3sgZmFjZXQubW8uU3VidGl0bGUgfCBmYWNldFZhbHVlIH19PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXByb2dyZXNzLWluZGljYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTByIGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJmYWNldC5tby5TdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVUZXh0XT1cIihmYWNldC5tbyB8IGZhY2V0VmFsdWU6IGZhY2V0LnR5cGUpICsgJyDYp9iyIDEwINmF2LHYrdmE2YcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZU5vd109XCJmYWNldC5tbyB8IGZhY2V0VmFsdWU6IGZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlTWF4XT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1bml0XT1cIifZhdix2K3ZhNmHJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLXByb2dyZXNzLWluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8dWk1LXByb2dyZXNzLWluZGljYXRvclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMHJlbVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZVN0YXRlXT1cImZhY2V0Lm1vLlN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldE51bWJlcihmYWNldC5tby5WYWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgPjwvdWk1LXByb2dyZXNzLWluZGljYXRvcj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfSBAaWYgKGZhY2V0LnR5cGUgPT09ICdtaWNyb2NoYXJ0cycpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgd3JhcD5pbiBwcm9ncmVzcyAuLi48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZmQtZmFjZXQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtZmFjZXQtZ3JvdXA+XG4gICAgICAgIEBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgPHNwYW4+e3sgZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2ZkLWR5bmFtaWMtcGFnZS1zdWJoZWFkZXI+XG4gICAgfSBAaWYgKCFjb250ZW50SXNQYWdlICYmIG1vZGVyblRhYnMgJiYgbW9kZXJuVGFicy5sZW5ndGggPiAwICYmICFwYXJhbWV0ZXJzPy5MYXlvdXRDb21wb25lbnQpIHtcbiAgICA8ZmQtdGFiLWxpc3RcbiAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtzdGFja0NvbnRlbnRdPVwiZmFsc2VcIlxuICAgICAgICBtYXhDb250ZW50SGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgIFtleHBhbmRPdmVyZmxvd1RleHRdPVwiJ01vcmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgI3RhYmxpc3RcbiAgICA+XG4gICAgICAgIEBmb3IgKHRhYiBvZiBtb2Rlcm5UYWJzOyB0cmFjayB0YWIuVGl0bGU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxmZC10YWIgW3RpdGxlXT1cInRhYi5UaXRsZSEhIHwgYmJiVHJhbnNsYXRlXCIgW2NsYXNzLmlzLWV4cGFuZGVkXT1cInNlbGVjdGVkVGFiID09PSB0YWIuVGl0bGVcIj5cbiAgICAgICAgICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudCBbaWRdPVwidGFiLmlkXCI+XG4gICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQxLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0MS5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDEuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCIgW2NvbE1kXT1cImNvbE1kXCIgW2NvbExnXT1cImNvbExnXCIgW2NvbFhsXT1cImNvbFhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJzdS1seS10YWItcGFnZSBbY29uZmlnXT1cInRhYlwiIFt0YWJsaXN0XT1cInRhYmxpc3RcIj48L2JzdS1seS10YWItcGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImxheW91dDIuY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJsYXlvdXQyLmNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibGF5b3V0Mi5jb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxuICAgICAgICA8L2ZkLXRhYj5cbiAgICAgICAgfVxuICAgIDwvZmQtdGFiLWxpc3Q+XG4gICAgfSBAZWxzZSB7IEBpZiAoIWNvbnRlbnRJc1BhZ2UpIHtcbiAgICA8ZmQtdGFiLWxpc3RcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtzdGFja0NvbnRlbnRdPVwiZmFsc2VcIlxuICAgICAgICBtYXhDb250ZW50SGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgICN0YWJsaXN0XG4gICAgICAgIGNsYXNzPVwiZXh0cmEtaGlkZS10YWJzXCJcbiAgICA+XG4gICAgICAgIDxmZC10YWIgdGl0bGU9XCJcIj5cbiAgICAgICAgICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudD5cbiAgICAgICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWQgc3R5bGU9XCJtaW4taGVpZ2h0OiAxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwibGF5b3V0MS5jb2xNZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cImxheW91dDEuY29sTGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJsYXlvdXQxLmNvbFhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi1oZWlnaHQ6IDEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJjb2xNZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cImNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwiY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM/LkxheW91dENvbXBvbmVudCA/IHJlbmRlckxheW91dENvbXBvbmVudCA6IHJlbmRlckRlZmF1bHRMYXlvdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBwYXJhbWV0ZXJzPy5MYXlvdXRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OTQ6IGxheW91dDk0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQyLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0Mi5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDIuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cbiAgICAgICAgPC9mZC10YWI+XG4gICAgPC9mZC10YWItbGlzdD5cbiAgICB9IH1cbiAgICA8ZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cbiAgICAgICAgPGJzdS1sYXlvdXQtYWN0aW9uc1xuICAgICAgICAgICAgW2NhblNlbmRdPVwiY2FuU2VuZFwiXG4gICAgICAgICAgICBbYnV0dG9uc109XCJsYXlvdXRBY3Rpb25zXCJcbiAgICAgICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICAgICAgICBbbGFuZHNjYXBlXT1cImxhbmRzY2FwZVwiXG4gICAgICAgICAgICBbc3RhbmRhbG9uZV09XCJzdGFuZGFsb25lXCJcbiAgICAgICAgICAgIFt3b3JrZmxvd0J1dHRvbnNdPVwid29ya2Zsb3dCdXR0b25zXCJcbiAgICAgICAgICAgIFt3b3JrZmxvd0J1dHRvbnNDb21ib01vZGVdPVwid29ya2Zsb3dCdXR0b25zQ29tYm9Nb2RlXCJcbiAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICAgICAgKHRvb2xDbGljayk9XCJ0b29sYmFyQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh3b3JrZmxvd0Nob2ljZVNlbGVjdCk9XCJvbldmQ2hvaWNlU2VsZWN0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvYnN1LWxheW91dC1hY3Rpb25zPlxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cbjwvZmQtZHluYW1pYy1wYWdlPlxuQGlmIChjb250ZW50SXNQYWdlKSB7XG48bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgcmVuZGVyTGF5b3V0Q29tcG9uZW50O1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnM/LkxheW91dENvbXBvbmVudCxcbiAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQ5NFxuICAgICAgICB9XG4gICAgXCJcbj48L25nLWNvbnRhaW5lcj5cbn1cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyRGVmYXVsdExheW91dCBsZXQtbGF5b3V0OTQ9XCJsYXlvdXQ5NFwiPlxuICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XG4gICAgICAgIFtjb25maWddPVwibGF5b3V0OTRcIlxuICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXG4gICAgPjwvYnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckxheW91dENvbXBvbmVudCBsZXQtY29tcG9uZW50IGxldC1sYXlvdXQ5ND1cImxheW91dDk0XCI+XG4gICAgPGJucmMtZHluYW1pYy1mb3JtLWNvbXBvbmVudFxuICAgICAgICBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiXG4gICAgICAgIFtyZW1vdmVDb250ZW50UGFkZGluZ109XCJyZW1vdmVDb250ZW50UGFkZGluZ1wiXG4gICAgICAgIFticmVhZENydW1ic109XCJicmVhZENydW1ic1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZVwiXG4gICAgICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckl0ZW1zXCJcbiAgICAgICAgW2xheW91dEFjdGlvbnNdPVwibGF5b3V0QWN0aW9uc1wiXG4gICAgICAgIFtmYWNldExpc3RdPVwiZmFjZXRMaXN0XCJcbiAgICAgICAgW3NldHRpbmdzXT1cImNvbXBvbmVudC5TZXR0aW5nc1wiXG4gICAgICAgIFt3b3JrZmxvd1BhbmVsVWldPVwid29ya2Zsb3dQYW5lbFVpXCJcbiAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgW2xheW91dDk0XT1cImxheW91dDk0XCJcbiAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2ZpZWxkRGljdF09XCJmaWVsZERpY3RcIlxuICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgW2RpclZhbHVlXT1cImRpclZhbHVlXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgIFttb2Rlcm5UYWJzXT1cIm1vZGVyblRhYnNcIlxuICAgICAgICBbYXZhdGFyXT1cImF2YXRhclwiXG4gICAgICAgIChldmVudHMpPVwib25EeW5hbWljQ29tcG9uZW50RXZlbnRzKCRldmVudClcIlxuICAgID48L2JucmMtZHluYW1pYy1mb3JtLWNvbXBvbmVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Nsb3NlRm9ybT5cbiAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJjbG9zZS5lbWl0KClcIiB0aXRsZT1cIkNsb3NlXCI+XG4gICAgICAgIDxpIFtjbGFzc109XCInc2FwLWljb24tLScgKyAoaXNNb2JpbGUgPyAocnRsID8gJ2Fycm93LXJpZ2h0JyA6ICdhcnJvdy1sZWZ0JykgOiAnZGVjbGluZScpXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZnVsbHNjcmVlbkZvcm0+XG4gICAgQGlmIChjYW5GdWxsc2NyZWVuKSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZ1bGxzY3JlZW4gPyAnZXhpdCBmdWxsc2NyZWVuJyA6ICdmdWxsc2NyZWVuJ1wiXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuUmVxdWVzdC5lbWl0KClcIlxuICAgICAgICBbdGl0bGVdPVwiZnVsbHNjcmVlbiA/ICdleGl0IGZ1bGxzY3JlZW4nIDogJ2Z1bGxzY3JlZW4nXCJcbiAgICAgICAgW2dseXBoXT1cImZ1bGxzY3JlZW4gPyAnZXhpdGZ1bGxzY3JlZW4nIDogJ3Jlc2l6ZSdcIlxuICAgID48L2J1dHRvbj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS9mdW5kYW1lbnRhbC1keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0Isb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEgsT0FBTyxFQUNILGFBQWEsRUFJYixTQUFTLEVBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2hFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxhQUFhO0lBMkQ5RCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXZEdkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsb0JBQW9CO1FBQ1YsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQW9CeEMsY0FBUyxHQUFHLElBQUks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bEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQzZDLFFBQVE7c0JBQTFELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUN0QixlQUFlO3NCQUF6QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2lCLGlCQUFpQjtzQkFBMUQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgRHluYW1pY1BhZ2VDb21wb25lbnQsIFRhYkxpc3RDb21wb25lbnQsIFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBCYXNlQ29tcG9uZW50LFxyXG4gICAgQnJlYWRDcnVtYkluZm8sXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgTGF5b3V0U2V0dGluZyxcclxuICAgIGlzRmlyZWZveCxcclxuICAgIEZvcm1WaXNpYmlsaXR5U3RhdHVzXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBGb3JtVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdG9vbGJhci9mb3JtLXRvb2xiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUxheW91dENvbCwgR2V0Rm9ybUxheW91dEdyaWQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWZ1bmRhbWVudGFsLWR5bmFtaWMtZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZ1bmRhbWVudGFsRHluYW1pY0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZChEeW5hbWljUGFnZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgX2R5bmFtaWNQYWdlQ29tcG9uZW50OiBEeW5hbWljUGFnZUNvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoVGFiTGlzdENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIF90YWJMaXN0Q29tcG9uZW50OiBUYWJMaXN0Q29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnZm9ybVRvb2xiYXInKSBfdG9vbGJhckNvbXBvbmVudDogRm9ybVRvb2xiYXJDb21wb25lbnQ7XHJcbiAgICBAT3V0cHV0KCkgdG9vbGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgd29ya2Zsb3dDaG9pY2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBmdWxsc2NyZWVuUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBJbnB1dCgpIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iSW5mb1tdIHwgbnVsbDtcclxuICAgIEBJbnB1dCgpIHRvb2xiYXJWaXNpYmxlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgdG9vbGJhckl0ZW1zOiBhbnlbXTtcclxuICAgIEBJbnB1dCgpIGxheW91dEFjdGlvbnM6IGFueVtdO1xyXG4gICAgQElucHV0KCkgbGF5b3V0OTQ7XHJcbiAgICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgQElucHV0KCkgd29ya2Zsb3dQYW5lbFVpOiBhbnk7XHJcbiAgICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBmYWNldExpc3Q6IGFueVtdO1xyXG4gICAgQElucHV0KCkgZmllbGREaWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgcmVtb3ZlSGVhZGVyQm9yZGVyOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcmVtb3ZlQ29udGVudFBhZGRpbmc6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgQElucHV0KCkgYXZhdGFyOiBhbnk7XHJcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlVGl0bGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgaGlkZUNsb3NlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZVBpbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBtYXNrOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2FuU2VuZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNvbnRlbnRJc1BhZ2U6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XHJcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiAncycgfCAnbScgfCAnbCcgfCAneGwnO1xyXG4gICAgQElucHV0KCkgZGlyVmFsdWU6ICdydGwnIHwgJ2x0cic7XHJcbiAgICBASW5wdXQoKSBsYW5kc2NhcGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzdGFuZGFsb25lOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbW9kZXJuVGFiczogTGF5b3V0U2V0dGluZ1tdO1xyXG4gICAgQElucHV0KCkgZm9ybVZpc2liaWxpdHlTdGF0dXM6IEZvcm1WaXNpYmlsaXR5U3RhdHVzO1xyXG4gICAgQElucHV0KCkgbGF5b3V0R3JpZENvbDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgY29sTGc6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGNvbFhsOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBjb2xNZDogbnVtYmVyO1xyXG4gICAgQFZpZXdDaGlsZCgndGl0bGVSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgdGl0bGVSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdoZWFkZXJBdmF0YXInKSBoZWFkZXJBdmF0YXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKCdjbG9zZUZvcm0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBjbG9zZUZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHdvcmtmbG93QnV0dG9uczogYW55W107XHJcbiAgICBzZWxlY3RlZFRhYjogYW55O1xyXG5cclxuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XHJcbiAgICB0b29sYmFyU2hvdWxkT3ZlcmZsb3cgPSBmYWxzZTtcclxuICAgIHdvcmtmbG93SW5mb1RleHQ6IHN0cmluZztcclxuICAgIHdvcmtmbG93QnV0dG9uc0NvbWJvTW9kZTogYm9vbGVhbjtcclxuICAgIGlzRmlyZWZveDogYm9vbGVhbjtcclxuICAgIGxheW91dDE6IEZvcm1MYXlvdXRDb2w7XHJcbiAgICBsYXlvdXQyOiBGb3JtTGF5b3V0Q29sO1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuaXNGaXJlZm94ID0gaXNGaXJlZm94KCk7XHJcbiAgICAgICAgdGhpcy5mYWNldExpc3QgfHw9IFtdO1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3dJbmZvVGV4dCA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uSW5mb1RleHQ7XHJcbiAgICAgICAgY29uc3Qgd29ya2Zsb3dCdXR0b25zID0gdGhpcy53b3JrZmxvd1BhbmVsVWk/LmJ1dHRvbkxpc3QgPz8gW107XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnNDb21ib01vZGUgPSB0aGlzLndvcmtmbG93UGFuZWxVaT8uU2V0dGluZz8uV29ya2Zsb3c/LkJ1dHRvbnNDb21ib01vZGU7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnMgPSB3b3JrZmxvd0J1dHRvbnM7XHJcblxyXG4gICAgICAgIHRoaXMuY2FuRnVsbHNjcmVlbiA9IHRoaXMucGFyYW1ldGVycz8uQ2FuRnVsbHNjcmVlbiA9PT0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB0b29sYmFyQnV0dG9uc0NvdW50ID0gdGhpcy50b29sYmFySXRlbXMuZmlsdGVyKChjKSA9PiB0eXBlb2YgYyAhPT0gJ3N0cmluZycgJiYgYy50ZXh0ICE9PSAnLScpLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5kZXZpY2VTaXplID09PSAncycgJiYgdG9vbGJhckJ1dHRvbnNDb3VudCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy50b29sYmFyU2hvdWxkT3ZlcmZsb3cgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0b29sYmFyQnV0dG9uc0NvdW50ID4gNSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sYmFyU2hvdWxkT3ZlcmZsb3cgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2hhbmxkZUxheW91dCgpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJMaXN0Q29tcG9uZW50Ll9kaXNhYmxlU2Nyb2xsU3B5ID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgeyBmb3JtVmlzaWJpbGl0eVN0YXR1cyB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGZvcm1WaXNpYmlsaXR5U3RhdHVzICYmXHJcbiAgICAgICAgICAgICFmb3JtVmlzaWJpbGl0eVN0YXR1cy5maXJzdENoYW5nZSAmJlxyXG4gICAgICAgICAgICBmb3JtVmlzaWJpbGl0eVN0YXR1cy5jdXJyZW50VmFsdWUgPT09ICdWaXNpYmxlJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9keW5hbWljUGFnZUNvbXBvbmVudD8ucmVmcmVzaFNpemUoKTtcclxuICAgICAgICAgICAgdGhpcy5fdG9vbGJhckNvbXBvbmVudD8udXBkYXRlQ29sbGFwc2libGVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbldmQ2hvaWNlU2VsZWN0KHdmQ2hvaWNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0Nob2ljZUNsaWNrLmVtaXQod2ZDaG9pY2UpO1xyXG4gICAgfVxyXG4gICAgb25UYWJDaGFuZ2VkKHRhYjogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgZ2V0TnVtYmVyKHZhbCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpO1xyXG4gICAgfVxyXG4gICAgb25EeW5hbWljQ29tcG9uZW50RXZlbnRzKGUpIHt9XHJcbiAgICBfaGFubGRlTGF5b3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubGF5b3V0MSA9IEdldEZvcm1MYXlvdXRHcmlkKHRydWUsIHRoaXMuY29sWGwsIHRoaXMuY29sTGcsIHRoaXMuY29sTWQpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0MiA9IEdldEZvcm1MYXlvdXRHcmlkKGZhbHNlLCB0aGlzLmNvbFhsLCB0aGlzLmNvbExnLCB0aGlzLmNvbE1kKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKG1hc2spIHtcbjxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJVwiPlxuICAgIDxic3UtbWFzayBzaXplPVwibVwiPjwvYnN1LW1hc2s+XG48L2Rpdj5cbn1cblxuPGZkLWR5bmFtaWMtcGFnZVxuICAgIFtzaXplXT1cImlzTW9iaWxlID8gJ3NtYWxsJyA6ICdsYXJnZSdcIlxuICAgIFtjbGFzcy5oZWFkZXItYm9yZGVyXT1cIiFyZW1vdmVIZWFkZXJCb3JkZXJcIlxuICAgIFthdHRyLmlzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICBbYXR0ci5jb250ZW50SXNQYWdlXT1cImNvbnRlbnRJc1BhZ2VcIlxuICAgIG1vYmlsZVxuICAgIGZvcm1DbG9zZVxuICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4+XG4gICAgPGZkLWR5bmFtaWMtcGFnZS1oZWFkZXJcbiAgICAgICAgW2NsYXNzLnNpbXBsZS10aXRsZV09XCIhZGVzY3JpcHRpb25cIlxuICAgICAgICBbdGl0bGVdPVwiKGhpZGVUaXRsZSA9PT0gdHJ1ZSA/ICcnIDogdGl0bGUpIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgW2NsYXNzLnAtYjBdPVwicmVtb3ZlQ29udGVudFBhZGRpbmdcIlxuICAgICAgICBbY2xhc3MuaGlkZS10aXRsZV09XCJoaWRlVGl0bGUgPT09IHRydWUgJiYgaGlkZUNsb3NlID09PSB0cnVlXCJcbiAgICAgICAgI3RpdGxlUmVmXG4gICAgPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWJyZWFkY3J1bWIgW2NsYXNzLmhpZGVdPVwiaXNNb2JpbGVcIj5cbiAgICAgICAgICAgIDxmZC1icmVhZGNydW1iPlxuICAgICAgICAgICAgICAgIEBpZiAoYnJlYWRDcnVtYnMgJiYgIWlzTW9iaWxlKSB7IEBmb3IgKGJyZWFkQ3J1bWIgb2YgYnJlYWRDcnVtYnMgfCBzbGljZTogMDpicmVhZENydW1icy5sZW5ndGg7IHRyYWNrXG4gICAgICAgICAgICAgICAgYnJlYWRDcnVtYi51cmw7IGxldCBpID0gJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGJzdS1icmVhZGNydW1iXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMYXN0XT1cImxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JyZWFkQ3J1bWJdPVwiYnJlYWRDcnVtYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsQnJlYWRDcnVtYl09XCJicmVhZENydW1ic1wiXG4gICAgICAgICAgICAgICAgICAgID48L2JzdS1icmVhZGNydW1iPlxuICAgICAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgPC9mZC1icmVhZGNydW1iPlxuICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1icmVhZGNydW1iPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zPlxuICAgICAgICAgICAgPCEtLSBnbG9iYWwgYWN0aW9ucyAtLT5cblxuICAgICAgICAgICAgPGZkLXRvb2xiYXIgW3Nob3VsZE92ZXJmbG93XT1cInRydWVcIiBTdHlsZT1cImRpc3BsYXk6bm9uZVwiPiA8L2ZkLXRvb2xiYXI+XG4gICAgICAgICAgICA8IS0tIGFkZGVkIHRoaXMgYmVjYXVzZSBpbiBtb2JpbGUgbGFuZHNjYXBlIHRvb2xiYXIgZGlzYXBwZXIgLS0+XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJWaXNpYmxlKSB7XG4gICAgICAgICAgICA8YnN1LWZvcm0tdG9vbGJhclxuICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgIFtidXR0b25zXT1cInRvb2xiYXJJdGVtc1wiXG4gICAgICAgICAgICAgICAgW2RpclZhbHVlXT1cImRpclZhbHVlXCJcbiAgICAgICAgICAgICAgICBbaXNGaXJlZm94XT1cImlzRmlyZWZveFwiXG4gICAgICAgICAgICAgICAgKHRvb2xiYXJDbGljayk9XCJ0b29sYmFyQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAjZm9ybVRvb2xiYXJcbiAgICAgICAgICAgID48L2JzdS1mb3JtLXRvb2xiYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxuICAgICAgICAgICAgPCEtLSBsYXlvdXQgYWN0aW9ucyAtLT5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBbZm9ybUFjdGlvbnNdPVwidGhpcy50b29sYmFyXCI+PC9kaXY+IC0tPlxuICAgICAgICAgICAgQGlmICghaGlkZUNsb3NlKSB7XG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgQGlmIChkZXZpY2VTaXplICE9PSAncycpIHtcbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhci1zZXBhcmF0b3I+PC9mZC10b29sYmFyLXNlcGFyYXRvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZ1bGxzY3JlZW5Gb3JtXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlRm9ybVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICA8L2ZkLWR5bmFtaWMtcGFnZS1oZWFkZXI+XG4gICAgQGlmIChkZXNjcmlwdGlvbiB8fCBmYWNldExpc3QubGVuZ3RoID4gMCB8fCB3b3JrZmxvd0luZm9UZXh0IHx8IGF2YXRhcikge1xuICAgIDxmZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyXG4gICAgICAgIFtjbGFzcy5oZWFkZXItbm8tZGVzY3JpcHRpb25dPVwiIShkZXNjcmlwdGlvbiB8fCB3b3JrZmxvd0luZm9UZXh0KVwiXG4gICAgICAgIFtjbGFzcy5uby1waW5dPVwiaGlkZVBpblwiXG4gICAgICAgIFtjb2xsYXBzaWJsZV09XCIhIXdvcmtmbG93SW5mb1RleHQgfHwgKGZhY2V0TGlzdCAmJiBmYWNldExpc3QubGVuZ3RoID4gMClcIlxuICAgICAgICBbcGlubmFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjb2xsYXBzZWRdPVwiKCFmYWNldExpc3QgfHwgZmFjZXRMaXN0Lmxlbmd0aCA9PT0gMCkgJiYgIXdvcmtmbG93SW5mb1RleHRcIlxuICAgID5cbiAgICAgICAgQGlmICh3b3JrZmxvd0luZm9UZXh0KSB7XG4gICAgICAgIDxmZC1tZXNzYWdlLXN0cmlwIFt0eXBlXT1cIid3YXJuaW5nJ1wiIFtkaXNtaXNzaWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAge3sgd29ya2Zsb3dJbmZvVGV4dCB8IGJiYlRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2Utc3RyaXA+XG4gICAgICAgIH1cbiAgICAgICAgPGZkLWZhY2V0LWdyb3VwIGFyaWFMYWJlbD1cIkZhY2V0IEdyb3VwXCI+XG4gICAgICAgICAgICBAaWYgKGF2YXRhcikge1xuICAgICAgICAgICAgPGZkLWZhY2V0IHR5cGU9XCJpbWFnZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJhdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2ltYWdlXT1cIiFhdmF0YXI/LkZpbGVJZCA/IG51bGwgOiAoYXZhdGFyPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0lEJzpudWxsKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cImRldmljZVNpemUgPT09ICd4bCcgPyAnbCcgOiBkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYXZhdGFyIGZkLWF2YXRhci0tY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInZmQtYXZhdGFyLS0nICsgKGRldmljZVNpemUgPT09ICd4bCcgPyAnbCcgOiBkZXZpY2VTaXplKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImF2YXRhclwiIGNsYXNzPVwiZmQtYXZhdGFyX19pY29uXCIgW2NsYXNzXT1cImF2YXRhciB8IHNhcEZvbnRDbGFzc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4gPC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZmQtZmFjZXQ+XG4gICAgICAgICAgICB9IEBmb3IgKGZhY2V0IG9mIGZhY2V0TGlzdDsgdHJhY2sgZmFjZXQpIHtcbiAgICAgICAgICAgIDxmZC1mYWNldFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgIFtmYWNldFRpdGxlXT1cImZhY2V0Lm1vLlRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiZmFjZXQubW8uU3ViVGl0bGUgfCBmYWNldFZhbHVlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZhY2V0Lm1vLkl0ZW1MaXN0Py5Nb0RhdGFMaXN0OyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgPGZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIFtjb2xvbl09XCJ0cnVlXCIgZm9yPVwiZm9ybS12YWx1ZS0xMFwiPnt7IGl0ZW0uVGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGV4dCBbdGV4dF09XCJpdGVtLlZhbHVlIHwgZmFjZXRWYWx1ZVwiIGlkPVwiZm9ybS12YWx1ZS0xMFwiPjwvZmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L2ZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgfSBAaWYgKCAhZmFjZXQubW8uSXNOdW1iZXIgJiYgZmFjZXQudHlwZSA9PT0gJ2tleS12YWx1ZScgJiYgIWZhY2V0Lm1vLkNvbXBvbmVudD8uU2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZmFjZXQubW8uU3RhdHVzIHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmYWNldC5tby5Db21wb25lbnQ/LlNlbGVjdG9yID8gJycgOiAoZmFjZXQubW8uVGV4dCB8IGZhY2V0VmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhcmdlXT1cImZhY2V0Lm1vLklzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmFjZXQubW8uVGV4dCB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJmYWNldC5tby5JY29uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxibnJjLWR5bmFtaWMtY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInZmQtb2JqZWN0LXN0YXR1cy0tJyArIGZhY2V0Lm1vLlN0YXR1cyB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtb2JqZWN0LXN0YXR1cy0tbGFyZ2VdPVwiZmFjZXQubW8uSXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiZmFjZXQubW8uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZhY2V0Lm1vLlRleHRcIlxuICAgICAgICAgICAgICAgID48L2JucmMtZHluYW1pYy1jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgfSBAaWYgKGZhY2V0Lm1vLklzTnVtYmVyICYmIGZhY2V0LnR5cGUgPT09ICdrZXktdmFsdWUnKSB7XG4gICAgICAgICAgICAgICAgPGZkLW9iamVjdC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgW251bWJlcl09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYXJnZV09XCJmYWNldC5tby5Jc0xhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3VuaXRdPVwiZmFjZXQubW8uVW5pdCB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImZhY2V0Lm1vLlN0YXR1cyB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbZGVjaW1hbF09XCJmYWNldC5tby5EZWNpbWFsVmFsdWUgfCBmYWNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1vYmplY3QtbnVtYmVyPlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAncGxhaW4tdGV4dCcpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJmYWNldC5tby5XaWR0aFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGV4dCBbdGV4dF09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiIGh5cGhlbmF0aW9uPVwiYXV0b1wiPjwvZmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQudHlwZSA9PT0gJ3JhdGluZy1pbmRpY2F0b3InKSB7XG4gICAgICAgICAgICAgICAgPGZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1yYXRpbmctaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHluYW1pY1RleHRJbmRpY2F0b3JdPVwiZmFjZXQubW8uRm9vdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmYWNldC5tbyB8IGZhY2V0VmFsdWU6IGZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYXRpbmctaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDwvZmQtZmFjZXQtY29udGVudD5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQudHlwZSA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIicxMHJlbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBmZC1mb3JtLWxhYmVsPnt7IGZhY2V0Lm1vLlN1YnRpdGxlIHwgZmFjZXRWYWx1ZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwciBlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiZmFjZXQubW8uU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlVGV4dF09XCIoZmFjZXQubW8gfCBmYWNldFZhbHVlOiBmYWNldC50eXBlKSArICcg2KfYsiAxMCDZhdix2K3ZhNmHJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVOb3ddPVwiZmFjZXQubW8gfCBmYWNldFZhbHVlOiBmYWNldC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZU1heF09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdW5pdF09XCIn2YXYsdit2YTZhydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1wcm9ncmVzcy1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHVpNS1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTByZW1cIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVTdGF0ZV09XCJmYWNldC5tby5TdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROdW1iZXIoZmFjZXQubW8uVmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgID48L3VpNS1wcm9ncmVzcy1pbmRpY2F0b3I+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAnbWljcm9jaGFydHMnKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHdyYXA+aW4gcHJvZ3Jlc3MgLi4uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ZkLWZhY2V0PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWZhY2V0LWdyb3VwPlxuICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIDxzcGFuPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9mZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyPlxuICAgIH0gQGlmICghY29udGVudElzUGFnZSAmJiBtb2Rlcm5UYWJzICYmIG1vZGVyblRhYnMubGVuZ3RoID4gMCAmJiAhcGFyYW1ldGVycz8uTGF5b3V0Q29tcG9uZW50KSB7XG4gICAgPGZkLXRhYi1saXN0XG4gICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtjb2xsYXBzZU92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICBbc3RhY2tDb250ZW50XT1cImZhbHNlXCJcbiAgICAgICAgbWF4Q29udGVudEhlaWdodD1cImF1dG9cIlxuICAgICAgICBbZXhwYW5kT3ZlcmZsb3dUZXh0XT1cIidNb3JlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICN0YWJsaXN0XG4gICAgPlxuICAgICAgICBAZm9yICh0YWIgb2YgbW9kZXJuVGFiczsgdHJhY2sgdGFiLlRpdGxlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8ZmQtdGFiIFt0aXRsZV09XCJ0YWIuVGl0bGUhISB8IGJiYlRyYW5zbGF0ZVwiIFtjbGFzcy5pcy1leHBhbmRlZF09XCJzZWxlY3RlZFRhYiA9PT0gdGFiLlRpdGxlXCI+XG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgW2lkXT1cInRhYi5pZFwiPlxuICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwibGF5b3V0MS5jb2xNZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cImxheW91dDEuY29sTGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJsYXlvdXQxLmNvbFhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiIFtjb2xNZF09XCJjb2xNZFwiIFtjb2xMZ109XCJjb2xMZ1wiIFtjb2xYbF09XCJjb2xYbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxic3UtbHktdGFiLXBhZ2UgW2NvbmZpZ109XCJ0YWJcIiBbdGFibGlzdF09XCJ0YWJsaXN0XCI+PC9ic3UtbHktdGFiLXBhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQyLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0Mi5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDIuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cbiAgICAgICAgPC9mZC10YWI+XG4gICAgICAgIH1cbiAgICA8L2ZkLXRhYi1saXN0PlxuICAgIH0gQGVsc2UgeyBAaWYgKCFjb250ZW50SXNQYWdlKSB7XG4gICAgPGZkLXRhYi1saXN0XG4gICAgICAgIFtjb2xsYXBzZU92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICBbc3RhY2tDb250ZW50XT1cImZhbHNlXCJcbiAgICAgICAgbWF4Q29udGVudEhlaWdodD1cImF1dG9cIlxuICAgICAgICAjdGFibGlzdFxuICAgICAgICBjbGFzcz1cImV4dHJhLWhpZGUtdGFic1wiXG4gICAgPlxuICAgICAgICA8ZmQtdGFiIHRpdGxlPVwiXCI+XG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkIHN0eWxlPVwibWluLWhlaWdodDogMTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImxheW91dDEuY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJsYXlvdXQxLmNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibGF5b3V0MS5jb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4taGVpZ2h0OiAxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwiY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJjb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImNvbFhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPy5MYXlvdXRDb21wb25lbnQgPyByZW5kZXJMYXlvdXRDb21wb25lbnQgOiByZW5kZXJEZWZhdWx0TGF5b3V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogcGFyYW1ldGVycz8uTGF5b3V0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQ5NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTWRdPVwibGF5b3V0Mi5jb2xNZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbExnXT1cImxheW91dDIuY29sTGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJsYXlvdXQyLmNvbFhsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XG4gICAgICAgIDwvZmQtdGFiPlxuICAgIDwvZmQtdGFiLWxpc3Q+XG4gICAgfSB9XG4gICAgPGZkLWR5bmFtaWMtcGFnZS1mb290ZXI+XG4gICAgICAgIDxic3UtbGF5b3V0LWFjdGlvbnNcbiAgICAgICAgICAgIFtjYW5TZW5kXT1cImNhblNlbmRcIlxuICAgICAgICAgICAgW2J1dHRvbnNdPVwibGF5b3V0QWN0aW9uc1wiXG4gICAgICAgICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgICAgICAgW2xhbmRzY2FwZV09XCJsYW5kc2NhcGVcIlxuICAgICAgICAgICAgW3N0YW5kYWxvbmVdPVwic3RhbmRhbG9uZVwiXG4gICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zXT1cIndvcmtmbG93QnV0dG9uc1wiXG4gICAgICAgICAgICBbd29ya2Zsb3dCdXR0b25zQ29tYm9Nb2RlXT1cIndvcmtmbG93QnV0dG9uc0NvbWJvTW9kZVwiXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgICh0b29sQ2xpY2spPVwidG9vbGJhckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAod29ya2Zsb3dDaG9pY2VTZWxlY3QpPVwib25XZkNob2ljZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2JzdS1sYXlvdXQtYWN0aW9ucz5cbiAgICA8L2ZkLWR5bmFtaWMtcGFnZS1mb290ZXI+XG48L2ZkLWR5bmFtaWMtcGFnZT5cbkBpZiAoY29udGVudElzUGFnZSkge1xuPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHJlbmRlckxheW91dENvbXBvbmVudDtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgJGltcGxpY2l0OiBwYXJhbWV0ZXJzPy5MYXlvdXRDb21wb25lbnQsXG4gICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0OTRcbiAgICAgICAgfVxuICAgIFwiXG4+PC9uZy1jb250YWluZXI+XG59XG48bmctdGVtcGxhdGUgI3JlbmRlckRlZmF1bHRMYXlvdXQgbGV0LWxheW91dDk0PVwibGF5b3V0OTRcIj5cbiAgICA8YnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdFxuICAgICAgICBbY29uZmlnXT1cImxheW91dDk0XCJcbiAgICAgICAgW2lzUGFuZWxdPVwiZmFsc2VcIlxuICAgICAgICBbaXNSb290XT1cInRydWVcIlxuICAgID48L2JzdS1seS1sYXlvdXQtY29udGFpbmVyLW9mLXJvb3Q+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyZW5kZXJMYXlvdXRDb21wb25lbnQgbGV0LWNvbXBvbmVudCBsZXQtbGF5b3V0OTQ9XCJsYXlvdXQ5NFwiPlxuICAgIDxibnJjLWR5bmFtaWMtZm9ybS1jb21wb25lbnRcbiAgICAgICAgW2NvbXBvbmVudF09XCJjb21wb25lbnRcIlxuICAgICAgICBbcmVtb3ZlQ29udGVudFBhZGRpbmddPVwicmVtb3ZlQ29udGVudFBhZGRpbmdcIlxuICAgICAgICBbYnJlYWRDcnVtYnNdPVwiYnJlYWRDcnVtYnNcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwic3VidGl0bGVcIlxuICAgICAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJJdGVtc1wiXG4gICAgICAgIFtsYXlvdXRBY3Rpb25zXT1cImxheW91dEFjdGlvbnNcIlxuICAgICAgICBbZmFjZXRMaXN0XT1cImZhY2V0TGlzdFwiXG4gICAgICAgIFtzZXR0aW5nc109XCJjb21wb25lbnQuU2V0dGluZ3NcIlxuICAgICAgICBbd29ya2Zsb3dQYW5lbFVpXT1cIndvcmtmbG93UGFuZWxVaVwiXG4gICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICAgIFttb109XCJtb1wiXG4gICAgICAgIFtsYXlvdXQ5NF09XCJsYXlvdXQ5NFwiXG4gICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtmaWVsZERpY3RdPVwiZmllbGREaWN0XCJcbiAgICAgICAgW21hc2tdPVwibWFza1wiXG4gICAgICAgIFtkaXJWYWx1ZV09XCJkaXJWYWx1ZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICBbbW9kZXJuVGFic109XCJtb2Rlcm5UYWJzXCJcbiAgICAgICAgW2F2YXRhcl09XCJhdmF0YXJcIlxuICAgICAgICAoZXZlbnRzKT1cIm9uRHluYW1pY0NvbXBvbmVudEV2ZW50cygkZXZlbnQpXCJcbiAgICA+PC9ibnJjLWR5bmFtaWMtZm9ybS1jb21wb25lbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjbG9zZUZvcm0+XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiY2xvc2UuZW1pdCgpXCIgdGl0bGU9XCJDbG9zZVwiPlxuICAgICAgICA8aSBbY2xhc3NdPVwiJ3NhcC1pY29uLS0nICsgKGlzTW9iaWxlID8gKHJ0bCA/ICdhcnJvdy1yaWdodCcgOiAnYXJyb3ctbGVmdCcpIDogJ2RlY2xpbmUnKVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Z1bGxzY3JlZW5Gb3JtPlxuICAgIEBpZiAoY2FuRnVsbHNjcmVlbikge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmdWxsc2NyZWVuID8gJ2V4aXQgZnVsbHNjcmVlbicgOiAnZnVsbHNjcmVlbidcIlxuICAgICAgICAoY2xpY2spPVwiZnVsbHNjcmVlblJlcXVlc3QuZW1pdCgpXCJcbiAgICAgICAgW3RpdGxlXT1cImZ1bGxzY3JlZW4gPyAnZXhpdCBmdWxsc2NyZWVuJyA6ICdmdWxsc2NyZWVuJ1wiXG4gICAgICAgIFtnbHlwaF09XCJmdWxsc2NyZWVuID8gJ2V4aXRmdWxsc2NyZWVuJyA6ICdyZXNpemUnXCJcbiAgICA+PC9idXR0b24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -21,14 +21,14 @@ export class ListItemComponent extends BaseViewItemPropsComponent {
21
21
  PreventDefaulEvent(e);
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ListItemComponent, selector: "bsu-list-item", inputs: { setting: "setting", isDisplayType: "isDisplayType" }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"isDisplayType ? displayTemplate : standardTemplate; context: { $implicit: mo }\"\n></ng-container>\n<ng-template #standardTemplate let-mo>\n <li\n fd-list-item\n class=\"standard-list-row\"\n [ngClass]=\"deviceSize\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n [class.selected]=\"isChecked === true\"\n [selected]=\"isChecked === true\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n >\n @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n } @if (setting.IconFont || setting.AvatarField) {\n <span fd-list-thumbnail>\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [style.color]=\"setting.IconColor ? setting.IconColor : null\"\n [circle]=\"true\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"avatarSize\"\n [transparent]=\"true\"\n [glyph]=\"\n setting.IconFont ??\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n >\n </fd-avatar>\n </span>\n }\n <div fd-list-content>\n <div fd-list-byline [twoCol]=\"true\">\n <div fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats,\n index: 0\n }\n \"\n ></ng-container>\n </div>\n <div fd-list-byline [style.padding-left]=\"canView && deviceName === 'desktop' ? '.9rem' : '0'\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.StatusField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n <div fd-list-byline>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n } @if (canView && !hideOpenIcon) {\n <button (click)=\"onRowClick()\" fdType=\"transparent\" [glyph]=\"navigationArrow\" fd-button></button>\n }\n </a>\n </li>\n</ng-template>\n<ng-template #displayTemplate let-mo>\n @if (!mo.parent || mo.parent?.expanded) {\n <li\n class=\"display\"\n [ngClass]=\"deviceSize\"\n fd-list-item\n [interactive]=\"false\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n style=\"cursor: default\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n style=\"column-gap: 3px\"\n >\n @if (setting.AvatarField) {\n <img\n [src]=\"mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId\"\n style=\"width: 24px; height: 24px\"\n />\n } @if (setting.IconFont) {\n <i fd-list-icon [glyph]=\"setting.IconFont\" [style.color]=\"setting.IconColor ? setting.IconColor : null\">\n </i>\n } @if (!setting.IconFont && mo.$State === 'New' && !isChecked) {\n <i fd-list-icon glyph=\"favorite\"></i>\n } @if (!setting.IconFont && inlineEditMode && isChecked) {\n <i fd-list-icon glyph=\"edit\"></i>\n } @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n }\n <span fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: 0\n }\n \"\n ></ng-container>\n </span>\n <span fd-list-secondary [dir]=\"rtl ? 'ltr' : 'rtl'\" [class.flex1]=\"contextMenuItems.length === 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n @if (canView && !hideOpenIcon) {\n <button fd-button (click)=\"onRowClick()\" [glyph]=\"navigationArrow\" fdType=\"transparent\"></button>\n } @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n }\n </span>\n </a>\n </li>\n }\n</ng-template>\n<ng-template\n #renderColumn\n let-column\n let-mo=\"mo\"\n let-conditionalFormats=\"conditionalFormats\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n>\n @if (column) {\n <div\n #divEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"divEl\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [disableEllapsis]=\"true\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"inlineEditMode && allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\n [formLayoutShowLabel]=\"true\"\n ></bsu-column-renderer>\n </div>\n }\n</ng-template>\n", styles: [":host li.s{height:auto}:host .flex1{flex:1;display:flex;justify-content:start;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i6.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i6.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i6.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "directive", type: i7.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i8.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i9.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i10.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i11.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i11.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i11.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i11.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ListItemComponent, selector: "bsu-list-item", inputs: { setting: "setting", isDisplayType: "isDisplayType" }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"isDisplayType ? displayTemplate : standardTemplate; context: { $implicit: mo }\"\n></ng-container>\n<ng-template #standardTemplate let-mo>\n <li\n fd-list-item\n class=\"standard-list-row\"\n [ngClass]=\"deviceSize\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n [class.selected]=\"isChecked === true\"\n [selected]=\"isChecked === true\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n >\n @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n } @if (setting.IconFont || setting.AvatarField) {\n <span fd-list-thumbnail>\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [style.color]=\"setting.IconColor ? setting.IconColor : null\"\n [circle]=\"true\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"avatarSize\"\n [transparent]=\"true\"\n [glyph]=\"\n setting.IconFont ??\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n >\n </fd-avatar>\n </span>\n }\n <div fd-list-content>\n <div fd-list-byline [twoCol]=\"true\">\n <div fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats,\n index: 0\n }\n \"\n ></ng-container>\n </div>\n <div fd-list-byline [style.padding-left]=\"canView && deviceName === 'desktop' ? '.9rem' : '0'\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.StatusField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n <div fd-list-byline>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n } @if (canView && !hideOpenIcon) {\n <button (click)=\"onRowClick()\" fdType=\"transparent\" [glyph]=\"navigationArrow\" fd-button></button>\n }\n </a>\n </li>\n</ng-template>\n<ng-template #displayTemplate let-mo>\n @if (!mo.parent || mo.parent?.expanded) {\n <li\n class=\"display\"\n [ngClass]=\"deviceSize\"\n fd-list-item\n [interactive]=\"false\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n style=\"cursor: default\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n style=\"column-gap: 3px\"\n >\n @if (setting.AvatarField) {\n <img\n [src]=\"mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId\"\n style=\"width: 24px; height: 24px\"\n />\n } @if (setting.IconFont) {\n <i fd-list-icon [glyph]=\"setting.IconFont\" [style.color]=\"setting.IconColor ? setting.IconColor : null\">\n </i>\n } @if (!setting.IconFont && mo.$State === 'New' && !isChecked) {\n <i fd-list-icon glyph=\"favorite\"></i>\n } @if (!setting.IconFont && inlineEditMode && isChecked) {\n <i fd-list-icon glyph=\"edit\"></i>\n } @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n }\n <span fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: 0\n }\n \"\n ></ng-container>\n </span>\n <span fd-list-secondary [dir]=\"rtl ? 'ltr' : 'rtl'\" [class.flex1]=\"contextMenuItems.length === 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n @if (canView && !hideOpenIcon) {\n <button fd-button (click)=\"onRowClick()\" [glyph]=\"navigationArrow\" fdType=\"transparent\"></button>\n } @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n }\n </span>\n </a>\n </li>\n }\n</ng-template>\n<ng-template\n #renderColumn\n let-column\n let-mo=\"mo\"\n let-conditionalFormats=\"conditionalFormats\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n>\n @if (column) {\n <div\n #divEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"divEl\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [disableEllapsis]=\"true\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"inlineEditMode && allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\n [formLayoutShowLabel]=\"true\"\n ></bsu-column-renderer>\n </div>\n }\n</ng-template>\n", styles: [":host li.s{height:auto}:host .flex1{flex:1;display:flex;justify-content:start;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i6.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i6.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i6.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "directive", type: i7.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i8.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode"], outputs: ["commandClick"] }, { kind: "component", type: i9.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "deviceName", "deviceSize", "value", "icon"] }, { kind: "directive", type: i10.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i11.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i11.ControlUiPipe, name: "controlUi" }, { kind: "pipe", type: i11.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i11.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ListItemComponent, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'bsu-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngTemplateOutlet=\"isDisplayType ? displayTemplate : standardTemplate; context: { $implicit: mo }\"\n></ng-container>\n<ng-template #standardTemplate let-mo>\n <li\n fd-list-item\n class=\"standard-list-row\"\n [ngClass]=\"deviceSize\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n [class.selected]=\"isChecked === true\"\n [selected]=\"isChecked === true\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n >\n @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n } @if (setting.IconFont || setting.AvatarField) {\n <span fd-list-thumbnail>\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [style.color]=\"setting.IconColor ? setting.IconColor : null\"\n [circle]=\"true\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"avatarSize\"\n [transparent]=\"true\"\n [glyph]=\"\n setting.IconFont ??\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n >\n </fd-avatar>\n </span>\n }\n <div fd-list-content>\n <div fd-list-byline [twoCol]=\"true\">\n <div fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats,\n index: 0\n }\n \"\n ></ng-container>\n </div>\n <div fd-list-byline [style.padding-left]=\"canView && deviceName === 'desktop' ? '.9rem' : '0'\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.StatusField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n <div fd-list-byline>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n } @if (canView && !hideOpenIcon) {\n <button (click)=\"onRowClick()\" fdType=\"transparent\" [glyph]=\"navigationArrow\" fd-button></button>\n }\n </a>\n </li>\n</ng-template>\n<ng-template #displayTemplate let-mo>\n @if (!mo.parent || mo.parent?.expanded) {\n <li\n class=\"display\"\n [ngClass]=\"deviceSize\"\n fd-list-item\n [interactive]=\"false\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n style=\"cursor: default\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n style=\"column-gap: 3px\"\n >\n @if (setting.AvatarField) {\n <img\n [src]=\"mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId\"\n style=\"width: 24px; height: 24px\"\n />\n } @if (setting.IconFont) {\n <i fd-list-icon [glyph]=\"setting.IconFont\" [style.color]=\"setting.IconColor ? setting.IconColor : null\">\n </i>\n } @if (!setting.IconFont && mo.$State === 'New' && !isChecked) {\n <i fd-list-icon glyph=\"favorite\"></i>\n } @if (!setting.IconFont && inlineEditMode && isChecked) {\n <i fd-list-icon glyph=\"edit\"></i>\n } @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n }\n <span fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: 0\n }\n \"\n ></ng-container>\n </span>\n <span fd-list-secondary [dir]=\"rtl ? 'ltr' : 'rtl'\" [class.flex1]=\"contextMenuItems.length === 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n @if (canView && !hideOpenIcon) {\n <button fd-button (click)=\"onRowClick()\" [glyph]=\"navigationArrow\" fdType=\"transparent\"></button>\n } @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n }\n </span>\n </a>\n </li>\n }\n</ng-template>\n<ng-template\n #renderColumn\n let-column\n let-mo=\"mo\"\n let-conditionalFormats=\"conditionalFormats\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n>\n @if (column) {\n <div\n #divEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"divEl\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [disableEllapsis]=\"true\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"inlineEditMode && allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [controlUi]=\"column.Caption | controlUi: layout94\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\n [formLayoutShowLabel]=\"true\"\n ></bsu-column-renderer>\n </div>\n }\n</ng-template>\n", styles: [":host li.s{height:auto}:host .flex1{flex:1;display:flex;justify-content:start;flex-direction:row-reverse}\n"] }]
28
+ args: [{ selector: 'bsu-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngTemplateOutlet=\"isDisplayType ? displayTemplate : standardTemplate; context: { $implicit: mo }\"\n></ng-container>\n<ng-template #standardTemplate let-mo>\n <li\n fd-list-item\n class=\"standard-list-row\"\n [ngClass]=\"deviceSize\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n [class.selected]=\"isChecked === true\"\n [selected]=\"isChecked === true\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n >\n @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n } @if (setting.IconFont || setting.AvatarField) {\n <span fd-list-thumbnail>\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [style.color]=\"setting.IconColor ? setting.IconColor : null\"\n [circle]=\"true\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"avatarSize\"\n [transparent]=\"true\"\n [glyph]=\"\n setting.IconFont ??\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n >\n </fd-avatar>\n </span>\n }\n <div fd-list-content>\n <div fd-list-byline [twoCol]=\"true\">\n <div fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats,\n index: 0\n }\n \"\n ></ng-container>\n </div>\n <div fd-list-byline [style.padding-left]=\"canView && deviceName === 'desktop' ? '.9rem' : '0'\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.StatusField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n <div fd-list-byline>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n conditionalFormats: conditionalFormats\n }\n \"\n ></ng-container>\n </div>\n </div>\n @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n } @if (canView && !hideOpenIcon) {\n <button (click)=\"onRowClick()\" fdType=\"transparent\" [glyph]=\"navigationArrow\" fd-button></button>\n }\n </a>\n </li>\n</ng-template>\n<ng-template #displayTemplate let-mo>\n @if (!mo.parent || mo.parent?.expanded) {\n <li\n class=\"display\"\n [ngClass]=\"deviceSize\"\n fd-list-item\n [interactive]=\"false\"\n (dblclick)=\"onRowClick()\"\n (click)=\"onRowCheck()\"\n [style.padding-right]=\"'calc( 1rem + ' + mo.level * 12 + 'px' + ' )'\"\n >\n <a\n fd-list-link\n [attr.rtl]=\"rtl\"\n class=\"li-link\"\n style=\"cursor: default\"\n [class.checklist]=\"isCheckList\"\n #aEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"aEl\"\n style=\"column-gap: 3px\"\n >\n @if (setting.AvatarField) {\n <img\n [src]=\"mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId\"\n style=\"width: 24px; height: 24px\"\n />\n } @if (setting.IconFont) {\n <i fd-list-icon [glyph]=\"setting.IconFont\" [style.color]=\"setting.IconColor ? setting.IconColor : null\">\n </i>\n } @if (!setting.IconFont && mo.$State === 'New' && !isChecked) {\n <i fd-list-icon glyph=\"favorite\"></i>\n } @if (!setting.IconFont && inlineEditMode && isChecked) {\n <i fd-list-icon glyph=\"edit\"></i>\n } @if (isCheckList) {\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (change)=\"onRowCheck2($event)\"></fd-checkbox>\n }\n <span fd-list-title>\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.TitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: 0\n }\n \"\n ></ng-container>\n </span>\n <span fd-list-secondary [dir]=\"rtl ? 'ltr' : 'rtl'\" [class.flex1]=\"contextMenuItems.length === 0\">\n <ng-container\n *ngTemplateOutlet=\"\n renderColumn;\n context: {\n $implicit: setting.SubtitleField,\n conditionalFormats: conditionalFormats,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n @if (canView && !hideOpenIcon) {\n <button fd-button (click)=\"onRowClick()\" [glyph]=\"navigationArrow\" fdType=\"transparent\"></button>\n } @if (contextMenuItems.length) {\n <bsu-ulv-context-menu\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></bsu-ulv-context-menu>\n }\n </span>\n </a>\n </li>\n }\n</ng-template>\n<ng-template\n #renderColumn\n let-column\n let-mo=\"mo\"\n let-conditionalFormats=\"conditionalFormats\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n>\n @if (column) {\n <div\n #divEl\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"divEl\"\n [dbName]=\"column.Name\"\n >\n <bsu-column-renderer\n [mo]=\"mo\"\n [column]=\"column\"\n [disableEllapsis]=\"true\"\n [value]=\"column | columnValue: mo | bbbTranslate\"\n [icon]=\"column | columnIcon: mo\"\n [editMode]=\"inlineEditMode && allowInlineEdit\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\n [formLayoutShowLabel]=\"true\"\n ></bsu-column-renderer>\n </div>\n }\n</ng-template>\n", styles: [":host li.s{height:auto}:host .flex1{flex:1;display:flex;justify-content:start;flex-direction:row-reverse}\n"] }]
29
29
  }], propDecorators: { setting: [{
30
30
  type: Input
31
31
  }], isDisplayType: [{
32
32
  type: Input
33
33
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLHVCQUF1QixFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVM3RyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsMEJBQTBCO0lBSTdELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxxQkFBcUIsQ0FDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQ3ZCLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDeEMsQ0FBQztJQUNkLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBYlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsNElDWDlCLHdvU0FnT0E7OzJGRHJOYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCwgUHJldmVudERlZmF1bEV2ZW50LCBlbnVtVmFsdWVUb1N0cmluZ1NpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaUxpc3RWaWV3U2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9ncmlkLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1saXN0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgc2V0dGluZzogVWlMaXN0Vmlld1NldHRpbmc7XG4gICAgQElucHV0KCkgaXNEaXNwbGF5VHlwZTogYm9vbGVhbjtcbiAgICBhdmF0YXJTaXplOiBTaXplO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmF2YXRhclNpemUgPSBlbnVtVmFsdWVUb1N0cmluZ1NpemUoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuQXZhdGFyU2l6ZSxcbiAgICAgICAgICAgIHRoaXMuY29udGVudERlbnNpdHkgPT09ICdjb21wYWN0JyA/ICdzJyA6ICdtJ1xuICAgICAgICApIGFzIFNpemU7XG4gICAgfVxuICAgIG9uUm93Q2hlY2syKGUpOiB2b2lkIHtcbiAgICAgICAgUHJldmVudERlZmF1bEV2ZW50KGUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cImlzRGlzcGxheVR5cGUgPyBkaXNwbGF5VGVtcGxhdGUgOiBzdGFuZGFyZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW8gfVwiXG4+PC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3N0YW5kYXJkVGVtcGxhdGUgbGV0LW1vPlxuICAgIDxsaVxuICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgY2xhc3M9XCJzdGFuZGFyZC1saXN0LXJvd1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cImRldmljZVNpemVcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy1yaWdodF09XCInY2FsYyggMXJlbSArICcgKyBtby5sZXZlbCAqIDEyICsgJ3B4JyArICcgKSdcIlxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNDaGVja2VkID09PSB0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZCA9PT0gdHJ1ZVwiXG4gICAgICAgIChkYmxjbGljayk9XCJvblJvd0NsaWNrKClcIlxuICAgICAgICAoY2xpY2spPVwib25Sb3dDaGVjaygpXCJcbiAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBmZC1saXN0LWxpbmtcbiAgICAgICAgICAgIFthdHRyLnJ0bF09XCJydGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaS1saW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy5jaGVja2xpc3RdPVwiaXNDaGVja0xpc3RcIlxuICAgICAgICAgICAgI2FFbFxuICAgICAgICAgICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgICAgIFtob3N0RWxdPVwiYUVsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpc0NoZWNrTGlzdCkge1xuICAgICAgICAgICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm1vLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKGNoYW5nZSk9XCJvblJvd0NoZWNrMigkZXZlbnQpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgIH0gQGlmIChzZXR0aW5nLkljb25Gb250IHx8IHNldHRpbmcuQXZhdGFyRmllbGQpIHtcbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGh1bWJuYWlsPlxuICAgICAgICAgICAgICAgIDxmZC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJJY29uPVwiYWx0fGNvbnRlbnR8YmFja3VwfGRlZmF1bHQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzZXR0aW5nLkljb25Db2xvciA/IHNldHRpbmcuSWNvbkNvbG9yIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaXJjbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuQXZhdGFyRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChtb1tzZXR0aW5nLkF2YXRhckZpZWxkLk5hbWVdPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0lEJzpzZXR0aW5nLkF2YXRhckZpZWxkLkZpZWxkRGVmSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJhdmF0YXJTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLkljb25Gb250ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAobW8uJFN0YXRlID09PSAnTmV3JyAmJiAhaXNDaGVja2VkID8gJ2Zhdm9yaXRlJyA6IGlubGluZUVkaXRNb2RlICYmIGlzQ2hlY2tlZCA/ICdlZGl0JyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUgW3R3b0NvbF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJDb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2V0dGluZy5UaXRsZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OTQ6IGxheW91dCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vOiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRm9ybWF0czogY29uZGl0aW9uYWxGb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtYnlsaW5lIFtzdHlsZS5wYWRkaW5nLWxlZnRdPVwiY2FuVmlldyAmJiBkZXZpY2VOYW1lID09PSAnZGVza3RvcCcgPyAnLjlyZW0nIDogJzAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHNldHRpbmcuU3RhdHVzRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0JCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxGb3JtYXRzOiBjb25kaXRpb25hbEZvcm1hdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBzZXR0aW5nLlN1YnRpdGxlRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vOiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxGb3JtYXRzOiBjb25kaXRpb25hbEZvcm1hdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoY29udGV4dE1lbnVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxic3UtdWx2LWNvbnRleHQtbWVudVxuICAgICAgICAgICAgICAgIFttZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXG4gICAgICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICAgICAgICAoY29tbWFuZENsaWNrKT1cIm9uVWx2Q29tbWFuZCgpXCJcbiAgICAgICAgICAgID48L2JzdS11bHYtY29udGV4dC1tZW51PlxuICAgICAgICAgICAgfSBAaWYgKGNhblZpZXcgJiYgIWhpZGVPcGVuSWNvbikge1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25Sb3dDbGljaygpXCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCIgZmQtYnV0dG9uPjwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Rpc3BsYXlUZW1wbGF0ZSBsZXQtbW8+XG4gICAgQGlmICghbW8ucGFyZW50IHx8IG1vLnBhcmVudD8uZXhwYW5kZWQpIHtcbiAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJkaXNwbGF5XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICBbaW50ZXJhY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgICAoZGJsY2xpY2spPVwib25Sb3dDbGljaygpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLXJpZ2h0XT1cIidjYWxjKCAxcmVtICsgJyArIG1vLmxldmVsICogMTIgKyAncHgnICsgJyApJ1wiXG4gICAgPlxuICAgICAgICA8YVxuICAgICAgICAgICAgZmQtbGlzdC1saW5rXG4gICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGktbGlua1wiXG4gICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogZGVmYXVsdFwiXG4gICAgICAgICAgICBbY2xhc3MuY2hlY2tsaXN0XT1cImlzQ2hlY2tMaXN0XCJcbiAgICAgICAgICAgICNhRWxcbiAgICAgICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbaG9zdEVsXT1cImFFbFwiXG4gICAgICAgICAgICBzdHlsZT1cImNvbHVtbi1nYXA6IDNweFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoc2V0dGluZy5BdmF0YXJGaWVsZCkge1xuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwibW9bc2V0dGluZy5BdmF0YXJGaWVsZC5OYW1lXT8uRmlsZUlkIHwgcGljRmllbGRTcmM6ICdJRCc6c2V0dGluZy5BdmF0YXJGaWVsZC5GaWVsZERlZklkXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyNHB4OyBoZWlnaHQ6IDI0cHhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH0gQGlmIChzZXR0aW5nLkljb25Gb250KSB7XG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gW2dseXBoXT1cInNldHRpbmcuSWNvbkZvbnRcIiBbc3R5bGUuY29sb3JdPVwic2V0dGluZy5JY29uQ29sb3IgPyBzZXR0aW5nLkljb25Db2xvciA6IG51bGxcIj5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgIH0gQGlmICghc2V0dGluZy5JY29uRm9udCAmJiBtby4kU3RhdGUgPT09ICdOZXcnICYmICFpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIDxpIGZkLWxpc3QtaWNvbiBnbHlwaD1cImZhdm9yaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAaWYgKCFzZXR0aW5nLkljb25Gb250ICYmIGlubGluZUVkaXRNb2RlICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgPGkgZmQtbGlzdC1pY29uIGdseXBoPVwiZWRpdFwiPjwvaT5cbiAgICAgICAgICAgIH0gQGlmIChpc0NoZWNrTGlzdCkge1xuICAgICAgICAgICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm1vLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKGNoYW5nZSk9XCJvblJvd0NoZWNrMigkZXZlbnQpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2V0dGluZy5UaXRsZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRm9ybWF0czogY29uZGl0aW9uYWxGb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1zZWNvbmRhcnkgW2Rpcl09XCJydGwgPyAnbHRyJyA6ICdydGwnXCIgW2NsYXNzLmZsZXgxXT1cImNvbnRleHRNZW51SXRlbXMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2V0dGluZy5TdWJ0aXRsZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRm9ybWF0czogY29uZGl0aW9uYWxGb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGNhblZpZXcgJiYgIWhpZGVPcGVuSWNvbikge1xuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIChjbGljayk9XCJvblJvd0NsaWNrKClcIiBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9IEBpZiAoY29udGV4dE1lbnVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8YnN1LXVsdi1jb250ZXh0LW1lbnVcbiAgICAgICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnN1LXVsdi1jb250ZXh0LW1lbnU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3JlbmRlckNvbHVtblxuICAgIGxldC1jb2x1bW5cbiAgICBsZXQtbW89XCJtb1wiXG4gICAgbGV0LWNvbmRpdGlvbmFsRm9ybWF0cz1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICAgIGxldC1sYXlvdXQ5ND1cImxheW91dDk0XCJcbj5cbiAgICBAaWYgKGNvbHVtbikge1xuICAgIDxkaXZcbiAgICAgICAgI2RpdkVsXG4gICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgW2hvc3RFbF09XCJkaXZFbFwiXG4gICAgICAgIFtkYk5hbWVdPVwiY29sdW1uLk5hbWVcIlxuICAgID5cbiAgICAgICAgPGJzdS1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICAgIFttb109XCJtb1wiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICBbZGlzYWJsZUVsbGFwc2lzXT1cInRydWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbHVtbiB8IGNvbHVtblZhbHVlOiBtbyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbaWNvbl09XCJjb2x1bW4gfCBjb2x1bW5JY29uOiBtb1wiXG4gICAgICAgICAgICBbZWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgW2NvbnRyb2xVaV09XCJjb2x1bW4uQ2FwdGlvbiB8IGNvbnRyb2xVaTogbGF5b3V0OTRcIlxuICAgICAgICAgICAgKGtleXVwLmNvbnRyb2wuZW50ZXIpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXl1cC5lc2MpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uVGFiKT1cIm9uVGFiS2V5RG93bigkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgICAgICBbZm9ybUxheW91dFNob3dMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgPjwvYnN1LWNvbHVtbi1yZW5kZXJlcj5cbiAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLHVCQUF1QixFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVM3RyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsMEJBQTBCO0lBSTdELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxxQkFBcUIsQ0FDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQ3ZCLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDeEMsQ0FBQztJQUNkLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBYlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsNElDWDlCLG9wU0FnT0E7OzJGRHJOYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCwgUHJldmVudERlZmF1bEV2ZW50LCBlbnVtVmFsdWVUb1N0cmluZ1NpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaUxpc3RWaWV3U2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9ncmlkLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1saXN0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgc2V0dGluZzogVWlMaXN0Vmlld1NldHRpbmc7XG4gICAgQElucHV0KCkgaXNEaXNwbGF5VHlwZTogYm9vbGVhbjtcbiAgICBhdmF0YXJTaXplOiBTaXplO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmF2YXRhclNpemUgPSBlbnVtVmFsdWVUb1N0cmluZ1NpemUoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuQXZhdGFyU2l6ZSxcbiAgICAgICAgICAgIHRoaXMuY29udGVudERlbnNpdHkgPT09ICdjb21wYWN0JyA/ICdzJyA6ICdtJ1xuICAgICAgICApIGFzIFNpemU7XG4gICAgfVxuICAgIG9uUm93Q2hlY2syKGUpOiB2b2lkIHtcbiAgICAgICAgUHJldmVudERlZmF1bEV2ZW50KGUpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cImlzRGlzcGxheVR5cGUgPyBkaXNwbGF5VGVtcGxhdGUgOiBzdGFuZGFyZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW8gfVwiXG4+PC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3N0YW5kYXJkVGVtcGxhdGUgbGV0LW1vPlxuICAgIDxsaVxuICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgY2xhc3M9XCJzdGFuZGFyZC1saXN0LXJvd1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cImRldmljZVNpemVcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy1yaWdodF09XCInY2FsYyggMXJlbSArICcgKyBtby5sZXZlbCAqIDEyICsgJ3B4JyArICcgKSdcIlxuICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNDaGVja2VkID09PSB0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZCA9PT0gdHJ1ZVwiXG4gICAgICAgIChkYmxjbGljayk9XCJvblJvd0NsaWNrKClcIlxuICAgICAgICAoY2xpY2spPVwib25Sb3dDaGVjaygpXCJcbiAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBmZC1saXN0LWxpbmtcbiAgICAgICAgICAgIFthdHRyLnJ0bF09XCJydGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaS1saW5rXCJcbiAgICAgICAgICAgIFtjbGFzcy5jaGVja2xpc3RdPVwiaXNDaGVja0xpc3RcIlxuICAgICAgICAgICAgI2FFbFxuICAgICAgICAgICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgICAgIFtob3N0RWxdPVwiYUVsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpc0NoZWNrTGlzdCkge1xuICAgICAgICAgICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm1vLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKGNoYW5nZSk9XCJvblJvd0NoZWNrMigkZXZlbnQpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgIH0gQGlmIChzZXR0aW5nLkljb25Gb250IHx8IHNldHRpbmcuQXZhdGFyRmllbGQpIHtcbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGh1bWJuYWlsPlxuICAgICAgICAgICAgICAgIDxmZC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJJY29uPVwiYWx0fGNvbnRlbnR8YmFja3VwfGRlZmF1bHQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzZXR0aW5nLkljb25Db2xvciA/IHNldHRpbmcuSWNvbkNvbG9yIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaXJjbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuQXZhdGFyRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChtb1tzZXR0aW5nLkF2YXRhckZpZWxkLk5hbWVdPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0lEJzpzZXR0aW5nLkF2YXRhckZpZWxkLkZpZWxkRGVmSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJhdmF0YXJTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLkljb25Gb250ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAobW8uJFN0YXRlID09PSAnTmV3JyAmJiAhaXNDaGVja2VkID8gJ2Zhdm9yaXRlJyA6IGlubGluZUVkaXRNb2RlICYmIGlzQ2hlY2tlZCA/ICdlZGl0JyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUgW3R3b0NvbF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJDb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2V0dGluZy5UaXRsZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OTQ6IGxheW91dCQgfCBhc3luYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vOiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRm9ybWF0czogY29uZGl0aW9uYWxGb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtYnlsaW5lIFtzdHlsZS5wYWRkaW5nLWxlZnRdPVwiY2FuVmlldyAmJiBkZXZpY2VOYW1lID09PSAnZGVza3RvcCcgPyAnLjlyZW0nIDogJzAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHNldHRpbmcuU3RhdHVzRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0JCB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxGb3JtYXRzOiBjb25kaXRpb25hbEZvcm1hdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBzZXR0aW5nLlN1YnRpdGxlRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vOiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxGb3JtYXRzOiBjb25kaXRpb25hbEZvcm1hdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoY29udGV4dE1lbnVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxic3UtdWx2LWNvbnRleHQtbWVudVxuICAgICAgICAgICAgICAgIFttZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXG4gICAgICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICAgICAgICAoY29tbWFuZENsaWNrKT1cIm9uVWx2Q29tbWFuZCgpXCJcbiAgICAgICAgICAgID48L2JzdS11bHYtY29udGV4dC1tZW51PlxuICAgICAgICAgICAgfSBAaWYgKGNhblZpZXcgJiYgIWhpZGVPcGVuSWNvbikge1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25Sb3dDbGljaygpXCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCIgZmQtYnV0dG9uPjwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Rpc3BsYXlUZW1wbGF0ZSBsZXQtbW8+XG4gICAgQGlmICghbW8ucGFyZW50IHx8IG1vLnBhcmVudD8uZXhwYW5kZWQpIHtcbiAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJkaXNwbGF5XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICBbaW50ZXJhY3RpdmVdPVwiZmFsc2VcIlxuICAgICAgICAoZGJsY2xpY2spPVwib25Sb3dDbGljaygpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLXJpZ2h0XT1cIidjYWxjKCAxcmVtICsgJyArIG1vLmxldmVsICogMTIgKyAncHgnICsgJyApJ1wiXG4gICAgPlxuICAgICAgICA8YVxuICAgICAgICAgICAgZmQtbGlzdC1saW5rXG4gICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGktbGlua1wiXG4gICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogZGVmYXVsdFwiXG4gICAgICAgICAgICBbY2xhc3MuY2hlY2tsaXN0XT1cImlzQ2hlY2tMaXN0XCJcbiAgICAgICAgICAgICNhRWxcbiAgICAgICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgICAgICAgICBbaG9zdEVsXT1cImFFbFwiXG4gICAgICAgICAgICBzdHlsZT1cImNvbHVtbi1nYXA6IDNweFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoc2V0dGluZy5BdmF0YXJGaWVsZCkge1xuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwibW9bc2V0dGluZy5BdmF0YXJGaWVsZC5OYW1lXT8uRmlsZUlkIHwgcGljRmllbGRTcmM6ICdJRCc6c2V0dGluZy5BdmF0YXJGaWVsZC5GaWVsZERlZklkXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyNHB4OyBoZWlnaHQ6IDI0cHhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH0gQGlmIChzZXR0aW5nLkljb25Gb250KSB7XG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gW2dseXBoXT1cInNldHRpbmcuSWNvbkZvbnRcIiBbc3R5bGUuY29sb3JdPVwic2V0dGluZy5JY29uQ29sb3IgPyBzZXR0aW5nLkljb25Db2xvciA6IG51bGxcIj5cbiAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgIH0gQGlmICghc2V0dGluZy5JY29uRm9udCAmJiBtby4kU3RhdGUgPT09ICdOZXcnICYmICFpc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIDxpIGZkLWxpc3QtaWNvbiBnbHlwaD1cImZhdm9yaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAaWYgKCFzZXR0aW5nLkljb25Gb250ICYmIGlubGluZUVkaXRNb2RlICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgPGkgZmQtbGlzdC1pY29uIGdseXBoPVwiZWRpdFwiPjwvaT5cbiAgICAgICAgICAgIH0gQGlmIChpc0NoZWNrTGlzdCkge1xuICAgICAgICAgICAgPGZkLWNoZWNrYm94IFtuYW1lXT1cIm1vLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKGNoYW5nZSk9XCJvblJvd0NoZWNrMigkZXZlbnQpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2V0dGluZy5UaXRsZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRm9ybWF0czogY29uZGl0aW9uYWxGb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1zZWNvbmRhcnkgW2Rpcl09XCJydGwgPyAnbHRyJyA6ICdydGwnXCIgW2NsYXNzLmZsZXgxXT1cImNvbnRleHRNZW51SXRlbXMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogc2V0dGluZy5TdWJ0aXRsZUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsRm9ybWF0czogY29uZGl0aW9uYWxGb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQkIHwgYXN5bmMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW86IG1vLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGNhblZpZXcgJiYgIWhpZGVPcGVuSWNvbikge1xuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIChjbGljayk9XCJvblJvd0NsaWNrKClcIiBbZ2x5cGhdPVwibmF2aWdhdGlvbkFycm93XCIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9IEBpZiAoY29udGV4dE1lbnVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8YnN1LXVsdi1jb250ZXh0LW1lbnVcbiAgICAgICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmRDbGljayk9XCJvblVsdkNvbW1hbmQoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnN1LXVsdi1jb250ZXh0LW1lbnU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3JlbmRlckNvbHVtblxuICAgIGxldC1jb2x1bW5cbiAgICBsZXQtbW89XCJtb1wiXG4gICAgbGV0LWNvbmRpdGlvbmFsRm9ybWF0cz1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICAgIGxldC1sYXlvdXQ5ND1cImxheW91dDk0XCJcbj5cbiAgICBAaWYgKGNvbHVtbikge1xuICAgIDxkaXZcbiAgICAgICAgI2RpdkVsXG4gICAgICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICAgICAgW2hvc3RFbF09XCJkaXZFbFwiXG4gICAgICAgIFtkYk5hbWVdPVwiY29sdW1uLk5hbWVcIlxuICAgID5cbiAgICAgICAgPGJzdS1jb2x1bW4tcmVuZGVyZXJcbiAgICAgICAgICAgIFttb109XCJtb1wiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICBbZGlzYWJsZUVsbGFwc2lzXT1cInRydWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbHVtbiB8IGNvbHVtblZhbHVlOiBtbyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbaWNvbl09XCJjb2x1bW4gfCBjb2x1bW5JY29uOiBtb1wiXG4gICAgICAgICAgICBbZWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgW2NvbnRyb2xVaV09XCJjb2x1bW4uQ2FwdGlvbiB8IGNvbnRyb2xVaTogbGF5b3V0OTQ6Y29sdW1uLk5hbWVcIlxuICAgICAgICAgICAgKGtleXVwLmNvbnRyb2wuZW50ZXIpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXl1cC5lc2MpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uVGFiKT1cIm9uVGFiS2V5RG93bigkZXZlbnQsIGluZGV4KVwiXG4gICAgICAgICAgICBbZm9ybUxheW91dFNob3dMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgPjwvYnN1LWNvbHVtbi1yZW5kZXJlcj5cbiAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -3,8 +3,8 @@ import { filter, map, tap } from 'rxjs/operators';
3
3
  import { SortDirection } from 'barsa-novin-ray-core';
4
4
  import * as Constants from '../constants';
5
5
  export class GridMoDataList {
6
- constructor(moDataList$, gridSetting$, visibleColumns$, searchTerm$) {
7
- this.data$ = merge(moDataList$.pipe(tap((items) => (this.items = items))), gridSetting$.pipe(tap((gridSetting) => (this.gridSetting = gridSetting))), searchTerm$.pipe(tap((searchTerm) => (this.searchTerm = searchTerm))), visibleColumns$.pipe(tap((visibleColumns) => (this.visibleColumns = visibleColumns)))).pipe(filter(() => !!this.items), map(() => this.searchTerm
6
+ constructor(moDataList$, gridSetting$, visibleColumns$, searchTerm$, inlineEditMode$) {
7
+ this.data$ = merge(moDataList$.pipe(tap((items) => (this.items = items))), gridSetting$.pipe(tap((gridSetting) => (this.gridSetting = gridSetting))), searchTerm$.pipe(tap((searchTerm) => (this.searchTerm = searchTerm))), visibleColumns$.pipe(tap((visibleColumns) => (this.visibleColumns = visibleColumns))), inlineEditMode$.pipe(tap((inlineEditMode) => (this.inlineEditMode = inlineEditMode)))).pipe(filter(() => !!this.items), map(() => this.searchTerm
8
8
  ? searchEx(this.searchTerm, this.visibleColumns.map((c) => c.Name), this.items)
9
9
  : this.items), map(() => this.gridSetting?.SortSettingList
10
10
  ? this.items.slice().sort(multilevelSort(this.getSortby()))
@@ -106,4 +106,4 @@ const searchEx = (searchTerm, columns, items) => {
106
106
  .some((value) => value.toLocaleLowerCase().includes(searchText.toLocaleLowerCase()));
107
107
  });
108
108
  };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1kYXRhLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbW9kZWxzL2dyaWQtZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxPQUFPLEVBTUgsYUFBYSxFQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sS0FBSyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBRTFDLE1BQU0sT0FBTyxjQUFjO0lBT3ZCLFlBQ0ksV0FBOEMsRUFDOUMsWUFBcUMsRUFDckMsZUFBK0MsRUFDL0MsV0FBK0I7UUFFL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQ2QsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ3RELFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUN6RSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDckUsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQ3hGLENB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RSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBDb2xsZWN0aW9uU29ydCxcbiAgICBUYWJsZVN0YXRlLFxuICAgIEdyaWRTZXR0aW5nLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBTb3J0RGlyZWN0aW9uXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCAqIGFzIENvbnN0YW50cyBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgR3JpZE1vRGF0YUxpc3Qge1xuICAgIGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgcmVzdWx0SXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICBncmlkU2V0dGluZzogR3JpZFNldHRpbmc7XG4gICAgdmlzaWJsZUNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gICAgZGF0YSQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbW9EYXRhTGlzdCQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPixcbiAgICAgICAgZ3JpZFNldHRpbmckOiBPYnNlcnZhYmxlPEdyaWRTZXR0aW5nPixcbiAgICAgICAgdmlzaWJsZUNvbHVtbnMkOiBPYnNlcnZhYmxlPFJlcG9ydFZpZXdDb2x1bW5bXT4sXG4gICAgICAgIHNlYXJjaFRlcm0kOiBPYnNlcnZhYmxlPHN0cmluZz5cbiAgICApIHtcbiAgICAgICAgdGhpcy5kYXRhJCA9IG1lcmdlKFxuICAgICAgICAgICAgbW9EYXRhTGlzdCQucGlwZSh0YXAoKGl0ZW1zKSA9PiAodGhpcy5pdGVtcyA9IGl0ZW1zKSkpLFxuICAgICAgICAgICAgZ3JpZFNldHRpbmckLnBpcGUodGFwKChncmlkU2V0dGluZykgPT4gKHRoaXMuZ3JpZFNldHRpbmcgPSBncmlkU2V0dGluZykpKSxcbiAgICAgICAgICAgIHNlYXJjaFRlcm0kLnBpcGUodGFwKChzZWFyY2hUZXJtKSA9PiAodGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybSkpKSxcbiAgICAgICAgICAgIHZpc2libGVDb2x1bW5zJC5waXBlKHRhcCgodmlzaWJsZUNvbHVtbnMpID0+ICh0aGlzLnZpc2libGVDb2x1bW5zID0gdmlzaWJsZUNvbHVtbnMpKSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5pdGVtcyksXG4gICAgICAgICAgICBtYXAoKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm1cbiAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hFeChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zLm1hcCgoYykgPT4gYy5OYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLml0ZW1zXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkU2V0dGluZz8uU29ydFNldHRpbmdMaXN0XG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5pdGVtcy5zbGljZSgpLnNvcnQobXVsdGlsZXZlbFNvcnQodGhpcy5nZXRTb3J0YnkoKSkpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5pdGVtc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIG1hcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIC8vICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS4kVmlzaWJpbGl0eSA9IHRydWUpKTtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICAgIHRhcCgoaXRlbXMpID0+ICh0aGlzLnJlc3VsdEl0ZW1zID0gaXRlbXMpKVxuICAgICAgICAgICAgLy8gdGFwKChpdGVtcykgPT4gY29uc29sZS5sb2coaXRlbXMpKVxuICAgICAgICApO1xuICAgIH1cbiAgICBnZXRTb3J0YnkoKTogQ29sbGVjdGlvblNvcnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRTZXR0aW5nLlNvcnRTZXR0aW5nTGlzdC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICBmaWVsZDogYy5OYW1lLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmdldFNvcnREaXJlY3Rpb24oYy5Tb3J0RGlyZWN0aW9uKSxcbiAgICAgICAgICAgIGlzTnVtYmVyOiB0aGlzLnZpc2libGVDb2x1bW5zPy5maW5kKChkKSA9PiBkLk5hbWUgPT09IGMuTmFtZSk/LkZpZWxkVHlwZSA9PT0gJ9i52K/YrydcbiAgICAgICAgfSkpLmNvbmNhdCh7IGZpZWxkOiAnJE5ld0lubGluZU1vJywgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uLkRFU0MsIGlzTnVtYmVyOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgZ2V0U29ydERpcmVjdGlvbihkaXJlY3Rpb24pOiBTb3J0RGlyZWN0aW9uIHtcbiAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ0FTQyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb24uQVNDO1xuICAgICAgICAgICAgY2FzZSAnREVTQyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb24uREVTQztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU29ydERpcmVjdGlvbi5OT05FO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyaWREYXRhUHJvdmlkZXIge1xuICAgIGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBbXTtcbiAgICBtb0RhdGFMaXN0JDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+O1xuICAgIHRvdGFsSXRlbXMgPSAwO1xuICAgIGxhc3RTdGF0ZTogVGFibGVTdGF0ZTtcbiAgICBjb25zdHJ1Y3Rvcihtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pIHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IG1vRGF0YUxpc3Q7XG4gICAgfVxuICAgIGZldGNoKHRhYmxlU3RhdGU6IFRhYmxlU3RhdGUpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT4ge1xuICAgICAgICB0aGlzLmxhc3RTdGF0ZSA9IHRhYmxlU3RhdGU7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vRGF0YUxpc3QodGFibGVTdGF0ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0TW9EYXRhTGlzdCh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuaXRlbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiAodGFibGVTdGF0ZS5zZWFyY2hJbnB1dCA/IHNlYXJjaCh0YWJsZVN0YXRlLCBpdGVtcykgOiBpdGVtcykpLFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gKHRhYmxlU3RhdGUuc29ydEJ5ID8gc29ydCh0YWJsZVN0YXRlLCBpdGVtcykgOiBpdGVtcykpXG4gICAgICAgICk7XG4gICAgfVxufVxuY29uc3Qgc29ydCA9ICh7IHNvcnRCeSB9OiBUYWJsZVN0YXRlLCBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPT5cbiAgICBzb3J0RXgoc29ydEJ5LCBtb0RhdGFMaXN0KTtcblxuY29uc3Qgc29ydEV4ID0gKFxuICAgIHNvcnRCeTogeyBmaWVsZDogc3RyaW5nIHwgbnVsbDsgZGlyZWN0aW9uOiBzdHJpbmc7IGlzTnVtYmVyPzogYm9vbGVhbiB9W10sXG4gICAgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdXG4pOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gbW9EYXRhTGlzdC5zbGljZSgpO1xuXG4gICAgY29uc3QgbmV3U29ydEJ5ID0gc29ydEJ5LmZpbHRlcigoeyBmaWVsZCB9KSA9PiAhIWZpZWxkKTtcblxuICAgIGlmIChuZXdTb3J0QnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXMuc29ydChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgICAgICAgICAgbmV3U29ydEJ5XG4gICAgICAgICAgICAgICAgLm1hcCgoeyBmaWVsZCwgZGlyZWN0aW9uLCBpc051bWJlciB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzY01vZGlmaWVyID0gZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLkFTQyA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnN0YW50cy5zb3J0KGEsIGIsIGZpZWxkLCBpc051bWJlcikgKiBhc2NNb2RpZmllcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5maW5kKChyZXN1bHQsIGluZGV4LCBsaXN0KSA9PiByZXN1bHQgIT09IDAgfHwgaW5kZXggPT09IGxpc3QubGVuZ3RoIC0gMSkhXG4gICAgKTtcbn07XG5mdW5jdGlvbiBjb21iaW5lQ29tcGFyaXNvbkZ1bmN0aW9ucyhjb21wYXJlRnVuY3Rpb25zKSB7XG4gICAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiBjb21wYXJlRnVuY3Rpb25zLnJlZHVjZSgocmVzdWx0LCBjb21wYXJlRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIC8vIFByb2NlZWRzIHRvIHRoZSBuZXh0IGNvbXBhcmlzb24gZnVuY3Rpb24gaWYgdGhlIHByZXZpb3VzIG9uZSByZXR1cm5lZCAwXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnYmVmb3JlICcsIHJlc3VsdCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbmV4dCBhICxiICcsIGEsIGIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCB8fCBjb21wYXJlRnVuY3Rpb24oYSwgYik7XG4gICAgICAgIH0sIDApO1xuICAgIH07XG59XG5mdW5jdGlvbiBtdWx0aWxldmVsU29ydChjcml0ZXJpYTogQ29sbGVjdGlvblNvcnRbXSkge1xuICAgIGNvbnN0IGNvbXBhcmVGdW5jdGlvbnMgPSBjcml0ZXJpYS5tYXAoKHgpID0+IHtcbiAgICAgICAgY29uc3QgeyBmaWVsZCwgZGlyZWN0aW9uLCBpc051bWJlciB9ID0geDtcblxuICAgICAgICByZXR1cm4gKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFWYWx1ZSA9IGFbZmllbGQgfHwgJyRfeF8nXTsgLy8gb3B0aW9uYWxseSB0cmFuc2Zvcm0gdGhlIHByb3BlcnR5IHZhbHVlXG4gICAgICAgICAgICBjb25zdCBiVmFsdWUgPSBiW2ZpZWxkIHx8ICckX3hfJ107IC8vIHdlIHVzZSBhbiBpZGVudGl0eSBmdW5jdGlvbiBhcyBkZWZhdWx0XG4gICAgICAgICAgICBjb25zdCBhc2NNb2RpZmllciA9IGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5BU0MgPyAxIDogLTE7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBDb25zdGFudHMuc29ydChhVmFsdWUsIGJWYWx1ZSwgZmllbGQsIGlzTnVtYmVyKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdzb3J0IHJlcz0nLCByZXMgKiBhc2NNb2RpZmllciwgJ29uIGZpZWxkJywgZmllbGQsIGFWYWx1ZSwgYlZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiByZXMgKiBhc2NNb2RpZmllcjtcbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb21iaW5lQ29tcGFyaXNvbkZ1bmN0aW9ucyhjb21wYXJlRnVuY3Rpb25zKTtcbn1cblxuY29uc3Qgc2VhcmNoID0gKHsgc2VhcmNoSW5wdXQsIGNvbHVtbnMgfTogVGFibGVTdGF0ZSwgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IE1ldGFvYmplY3REYXRhTW9kZWxbXSA9PiB7XG4gICAgcmV0dXJuIHNlYXJjaEV4KHNlYXJjaElucHV0Py50ZXh0LCBjb2x1bW5zLCBpdGVtcyk7XG59O1xuY29uc3Qgc2VhcmNoRXggPSAoc2VhcmNoVGVybSwgY29sdW1uczogc3RyaW5nW10sIGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPT4ge1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSBzZWFyY2hUZXJtIHx8ICcnO1xuICAgIGNvbnN0IGtleXNUb1NlYXJjaEJ5ID0gY29sdW1ucztcblxuICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKSA9PT0gJycgfHwga2V5c1RvU2VhcmNoQnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXNGb3JTZWFyY2ggPSBrZXlzVG9TZWFyY2hCeS5tYXAoKGtleSkgPT4gQ29uc3RhbnRzLmdldE5lc3RlZFZhbHVlKGtleSwgaXRlbSkpO1xuICAgICAgICByZXR1cm4gdmFsdWVzRm9yU2VhcmNoXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAgIC5tYXAoKHZhbHVlKTogc3RyaW5nID0+IHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAuc29tZSgodmFsdWUpID0+IHZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XG4gICAgfSk7XG59O1xuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1kYXRhLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbW9kZWxzL2dyaWQtZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRCxPQUFPLEVBTUgsYUFBYSxFQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sS0FBSyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBRTFDLE1BQU0sT0FBTyxjQUFjO0lBUXZCLFlBQ0ksV0FBOEMsRUFDOUMsWUFBcUMsRUFDckMsZUFBK0MsRUFDL0MsV0FBK0IsRUFDL0IsZUFBb0M7UUFFcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQ2QsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ3RELFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUN6RSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDckUsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxD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QUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUMxQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN4QyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgQ29sbGVjdGlvblNvcnQsXG4gICAgVGFibGVTdGF0ZSxcbiAgICBHcmlkU2V0dGluZyxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgU29ydERpcmVjdGlvblxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIEdyaWRNb0RhdGFMaXN0IHtcbiAgICBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgIHJlc3VsdEl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgZ3JpZFNldHRpbmc6IEdyaWRTZXR0aW5nO1xuICAgIHZpc2libGVDb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107XG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xuICAgIGRhdGEkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XG4gICAgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG1vRGF0YUxpc3QkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT4sXG4gICAgICAgIGdyaWRTZXR0aW5nJDogT2JzZXJ2YWJsZTxHcmlkU2V0dGluZz4sXG4gICAgICAgIHZpc2libGVDb2x1bW5zJDogT2JzZXJ2YWJsZTxSZXBvcnRWaWV3Q29sdW1uW10+LFxuICAgICAgICBzZWFyY2hUZXJtJDogT2JzZXJ2YWJsZTxzdHJpbmc+LFxuICAgICAgICBpbmxpbmVFZGl0TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgICApIHtcbiAgICAgICAgdGhpcy5kYXRhJCA9IG1lcmdlKFxuICAgICAgICAgICAgbW9EYXRhTGlzdCQucGlwZSh0YXAoKGl0ZW1zKSA9PiAodGhpcy5pdGVtcyA9IGl0ZW1zKSkpLFxuICAgICAgICAgICAgZ3JpZFNldHRpbmckLnBpcGUodGFwKChncmlkU2V0dGluZykgPT4gKHRoaXMuZ3JpZFNldHRpbmcgPSBncmlkU2V0dGluZykpKSxcbiAgICAgICAgICAgIHNlYXJjaFRlcm0kLnBpcGUodGFwKChzZWFyY2hUZXJtKSA9PiAodGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybSkpKSxcbiAgICAgICAgICAgIHZpc2libGVDb2x1bW5zJC5waXBlKHRhcCgodmlzaWJsZUNvbHVtbnMpID0+ICh0aGlzLnZpc2libGVDb2x1bW5zID0gdmlzaWJsZUNvbHVtbnMpKSksXG4gICAgICAgICAgICBpbmxpbmVFZGl0TW9kZSQucGlwZSh0YXAoKGlubGluZUVkaXRNb2RlKSA9PiAodGhpcy5pbmxpbmVFZGl0TW9kZSA9IGlubGluZUVkaXRNb2RlKSkpXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuaXRlbXMpLFxuICAgICAgICAgICAgbWFwKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXJtXG4gICAgICAgICAgICAgICAgICAgID8gc2VhcmNoRXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAoKGMpID0+IGMuTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5pdGVtc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFNldHRpbmc/LlNvcnRTZXR0aW5nTGlzdFxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuaXRlbXMuc2xpY2UoKS5zb3J0KG11bHRpbGV2ZWxTb3J0KHRoaXMuZ2V0U29ydGJ5KCkpKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaXRlbXNcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAvLyBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAvLyAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gKGl0ZW0uJFZpc2liaWxpdHkgPSB0cnVlKSk7XG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgLy8gfSksXG4gICAgICAgICAgICB0YXAoKGl0ZW1zKSA9PiAodGhpcy5yZXN1bHRJdGVtcyA9IGl0ZW1zKSlcbiAgICAgICAgICAgIC8vIHRhcCgoaXRlbXMpID0+IGNvbnNvbGUubG9nKGl0ZW1zKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0U29ydGJ5KCk6IENvbGxlY3Rpb25Tb3J0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkU2V0dGluZy5Tb3J0U2V0dGluZ0xpc3QubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgZmllbGQ6IGMuTmFtZSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5nZXRTb3J0RGlyZWN0aW9uKGMuU29ydERpcmVjdGlvbiksXG4gICAgICAgICAgICBpc051bWJlcjogdGhpcy52aXNpYmxlQ29sdW1ucz8uZmluZCgoZCkgPT4gZC5OYW1lID09PSBjLk5hbWUpPy5GaWVsZFR5cGUgPT09ICfYudiv2K8nXG4gICAgICAgIH0pKS5jb25jYXQoeyBmaWVsZDogJyROZXdJbmxpbmVNbycsIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbi5ERVNDLCBpc051bWJlcjogZmFsc2UgfSk7XG4gICAgfVxuICAgIGdldFNvcnREaXJlY3Rpb24oZGlyZWN0aW9uKTogU29ydERpcmVjdGlvbiB7XG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdBU0MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgICAgIGNhc2UgJ0RFU0MnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTb3J0RGlyZWN0aW9uLkRFU0M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFNvcnREaXJlY3Rpb24uTk9ORTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHcmlkRGF0YVByb3ZpZGVyIHtcbiAgICBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gW107XG4gICAgbW9EYXRhTGlzdCQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICB0b3RhbEl0ZW1zID0gMDtcbiAgICBsYXN0U3RhdGU6IFRhYmxlU3RhdGU7XG4gICAgY29uc3RydWN0b3IobW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdKSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBtb0RhdGFMaXN0O1xuICAgIH1cbiAgICBmZXRjaCh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+IHtcbiAgICAgICAgdGhpcy5sYXN0U3RhdGUgPSB0YWJsZVN0YXRlO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb0RhdGFMaXN0KHRhYmxlU3RhdGUpO1xuICAgIH1cbiAgICBwcml2YXRlIGdldE1vRGF0YUxpc3QodGFibGVTdGF0ZTogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gdGhpcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgIHJldHVybiBvZih0aGlzLml0ZW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4gKHRhYmxlU3RhdGUuc2VhcmNoSW5wdXQgPyBzZWFyY2godGFibGVTdGF0ZSwgaXRlbXMpIDogaXRlbXMpKSxcbiAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+ICh0YWJsZVN0YXRlLnNvcnRCeSA/IHNvcnQodGFibGVTdGF0ZSwgaXRlbXMpIDogaXRlbXMpKVxuICAgICAgICApO1xuICAgIH1cbn1cbmNvbnN0IHNvcnQgPSAoeyBzb3J0QnkgfTogVGFibGVTdGF0ZSwgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogTWV0YW9iamVjdERhdGFNb2RlbFtdID0+XG4gICAgc29ydEV4KHNvcnRCeSwgbW9EYXRhTGlzdCk7XG5cbmNvbnN0IHNvcnRFeCA9IChcbiAgICBzb3J0Qnk6IHsgZmllbGQ6IHN0cmluZyB8IG51bGw7IGRpcmVjdGlvbjogc3RyaW5nOyBpc051bWJlcj86IGJvb2xlYW4gfVtdLFxuICAgIG1vRGF0YUxpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXVxuKTogTWV0YW9iamVjdERhdGFNb2RlbFtdID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IG1vRGF0YUxpc3Quc2xpY2UoKTtcblxuICAgIGNvbnN0IG5ld1NvcnRCeSA9IHNvcnRCeS5maWx0ZXIoKHsgZmllbGQgfSkgPT4gISFmaWVsZCk7XG5cbiAgICBpZiAobmV3U29ydEJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgICAgICAgIG5ld1NvcnRCeVxuICAgICAgICAgICAgICAgIC5tYXAoKHsgZmllbGQsIGRpcmVjdGlvbiwgaXNOdW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhc2NNb2RpZmllciA9IGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5BU0MgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBDb25zdGFudHMuc29ydChhLCBiLCBmaWVsZCwgaXNOdW1iZXIpICogYXNjTW9kaWZpZXI7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluZCgocmVzdWx0LCBpbmRleCwgbGlzdCkgPT4gcmVzdWx0ICE9PSAwIHx8IGluZGV4ID09PSBsaXN0Lmxlbmd0aCAtIDEpIVxuICAgICk7XG59O1xuZnVuY3Rpb24gY29tYmluZUNvbXBhcmlzb25GdW5jdGlvbnMoY29tcGFyZUZ1bmN0aW9ucykge1xuICAgIHJldHVybiAoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gY29tcGFyZUZ1bmN0aW9ucy5yZWR1Y2UoKHJlc3VsdCwgY29tcGFyZUZ1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvLyBQcm9jZWVkcyB0byB0aGUgbmV4dCBjb21wYXJpc29uIGZ1bmN0aW9uIGlmIHRoZSBwcmV2aW91cyBvbmUgcmV0dXJuZWQgMFxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2JlZm9yZSAnLCByZXN1bHQpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ25leHQgYSAsYiAnLCBhLCBiKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgfHwgY29tcGFyZUZ1bmN0aW9uKGEsIGIpO1xuICAgICAgICB9LCAwKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbXVsdGlsZXZlbFNvcnQoY3JpdGVyaWE6IENvbGxlY3Rpb25Tb3J0W10pIHtcbiAgICBjb25zdCBjb21wYXJlRnVuY3Rpb25zID0gY3JpdGVyaWEubWFwKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZmllbGQsIGRpcmVjdGlvbiwgaXNOdW1iZXIgfSA9IHg7XG5cbiAgICAgICAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhVmFsdWUgPSBhW2ZpZWxkIHx8ICckX3hfJ107IC8vIG9wdGlvbmFsbHkgdHJhbnNmb3JtIHRoZSBwcm9wZXJ0eSB2YWx1ZVxuICAgICAgICAgICAgY29uc3QgYlZhbHVlID0gYltmaWVsZCB8fCAnJF94XyddOyAvLyB3ZSB1c2UgYW4gaWRlbnRpdHkgZnVuY3Rpb24gYXMgZGVmYXVsdFxuICAgICAgICAgICAgY29uc3QgYXNjTW9kaWZpZXIgPSBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uQVNDID8gMSA6IC0xO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gQ29uc3RhbnRzLnNvcnQoYVZhbHVlLCBiVmFsdWUsIGZpZWxkLCBpc051bWJlcik7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc29ydCByZXM9JywgcmVzICogYXNjTW9kaWZpZXIsICdvbiBmaWVsZCcsIGZpZWxkLCBhVmFsdWUsIGJWYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzICogYXNjTW9kaWZpZXI7XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tYmluZUNvbXBhcmlzb25GdW5jdGlvbnMoY29tcGFyZUZ1bmN0aW9ucyk7XG59XG5cbmNvbnN0IHNlYXJjaCA9ICh7IHNlYXJjaElucHV0LCBjb2x1bW5zIH06IFRhYmxlU3RhdGUsIGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPT4ge1xuICAgIHJldHVybiBzZWFyY2hFeChzZWFyY2hJbnB1dD8udGV4dCwgY29sdW1ucywgaXRlbXMpO1xufTtcbmNvbnN0IHNlYXJjaEV4ID0gKHNlYXJjaFRlcm0sIGNvbHVtbnM6IHN0cmluZ1tdLCBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogTWV0YW9iamVjdERhdGFNb2RlbFtdID0+IHtcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gc2VhcmNoVGVybSB8fCAnJztcbiAgICBjb25zdCBrZXlzVG9TZWFyY2hCeSA9IGNvbHVtbnM7XG5cbiAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkgPT09ICcnIHx8IGtleXNUb1NlYXJjaEJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzRm9yU2VhcmNoID0ga2V5c1RvU2VhcmNoQnkubWFwKChrZXkpID0+IENvbnN0YW50cy5nZXROZXN0ZWRWYWx1ZShrZXksIGl0ZW0pKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlc0ZvclNlYXJjaFxuICAgICAgICAgICAgLmZpbHRlcigodmFsdWUpID0+ICEhdmFsdWUpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZSk6IHN0cmluZyA9PiB2YWx1ZS50b1N0cmluZygpKVxuICAgICAgICAgICAgLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuICAgIH0pO1xufTtcbiJdfQ==