@arsedizioni/ars-utils 18.2.153 → 18.2.156

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 (38) hide show
  1. package/clipper.common/common/definitions.d.ts +10 -9
  2. package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts +2 -1
  3. package/clipper.ui/ui/document/document.component.d.ts +4 -7
  4. package/clipper.ui/ui/document-index/document-index.component.d.ts +4 -1
  5. package/clipper.ui/ui/document-manager/document-manager.d.ts +3 -3
  6. package/clipper.ui/ui/references/references.component.d.ts +3 -2
  7. package/clipper.ui/ui/search-result-item/search-result-item.component.d.ts +1 -1
  8. package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts +7 -6
  9. package/core/pipes/format.pipe.d.ts +1 -1
  10. package/esm2022/clipper.common/common/definitions.mjs +1 -1
  11. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +3 -3
  12. package/esm2022/clipper.ui/ui/document/document.component.mjs +20 -27
  13. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +3 -3
  14. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +11 -13
  15. package/esm2022/clipper.ui/ui/references/references.component.mjs +3 -3
  16. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +10 -10
  17. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +1 -1
  18. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +10 -9
  19. package/esm2022/core/directives/validators.mjs +2 -2
  20. package/esm2022/core/pipes/format.pipe.mjs +1 -1
  21. package/esm2022/core/selectable.mjs +4 -4
  22. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +6 -6
  23. package/esm2022/help/services/help.service.mjs +1 -1
  24. package/esm2022/support.common/common/interceptors/auth.interceptor.mjs +2 -2
  25. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +2 -2
  26. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  27. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +53 -61
  28. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  29. package/fesm2022/arsedizioni-ars-utils-core.mjs +4 -4
  30. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  31. package/fesm2022/arsedizioni-ars-utils-help.mjs +5 -5
  32. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  33. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +1 -1
  34. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  35. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +1 -1
  36. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  37. package/help/services/help.service.d.ts +3 -2
  38. package/package.json +12 -12
@@ -84,8 +84,8 @@ export class SelectableModel {
84
84
  deselectByValues(lookupValues) {
85
85
  if (!lookupValues || lookupValues.length === 0)
86
86
  return;
87
- lookupValues.forEach((n) => {
88
- const p = SystemUtils.arrayFindIndexByKey(this._all, this._lookupFieldName, n.id || n);
87
+ lookupValues.forEach(n => {
88
+ const p = SystemUtils.arrayFindIndexByKey(this._all, this._lookupFieldName, n);
89
89
  if (p != -1) {
90
90
  let item = this._all[p];
91
91
  this._all.splice(p, 1);
@@ -99,7 +99,7 @@ export class SelectableModel {
99
99
  * @param clearFunc : the function used to clear
100
100
  */
101
101
  clearCurrent(clearFunc) {
102
- this._current.selected.forEach((n) => {
102
+ this._current.selected.forEach(n => {
103
103
  clearFunc(n);
104
104
  });
105
105
  this._current.clear();
@@ -130,4 +130,4 @@ export class SelectableModel {
130
130
  return this._all.length > 0;
131
131
  }
132
132
  }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jb3JlL3NlbGVjdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxNQUFNLE9BQU8sZUFBZTtJQUsxQixJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0QsWUFDRSxtQkFBNEIsSUFBSSxFQUNoQyxrQkFBMEIsSUFBSTtRQWRoQyxZQUFPLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7UUFFekMsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQWNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFJLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxJQUFPLEVBQUUsV0FBYztRQUNuQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixXQUFXLENBQ1osQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENB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QUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxTQUFjO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25DLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxXQUFpQztRQUMxQyxPQUFPLENBQUMsV0FBVztZQUNqQixXQUFXLENBQUMsbUJBQW1CLENBQzdCLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixXQUFXLENBQ1osSUFBSSxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tIFwiLi9zeXN0ZW1cIjtcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZU1vZGVsPFQsIFY+IHtcclxuXHJcbiAgY2hhbmdlZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICBwcml2YXRlIF9hbGw6IFRbXSA9IFtdO1xyXG4gIGdldCBhbGwoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9hbGw7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2N1cnJlbnQ6IFNlbGVjdGlvbk1vZGVsPFQ+O1xyXG4gIGdldCBjdXJyZW50KCk6IFNlbGVjdGlvbk1vZGVsPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50O1xyXG4gIH1cclxuICBwcml2YXRlIF9sb29rdXBGaWVsZE5hbWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBhbGxvd011bHRpU2VsZWN0OiBib29sZWFuID0gdHJ1ZSxcclxuICAgIGxvb2t1cEZpZWxkTmFtZTogc3RyaW5nID0gXCJpZFwiXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50ID0gbmV3IFNlbGVjdGlvbk1vZGVsPFQ+KGFsbG93TXVsdGlTZWxlY3QsIFtdKTtcclxuICAgIHRoaXMuX2FsbCA9IFtdO1xyXG4gICAgdGhpcy5fbG9va3VwRmllbGROYW1lID0gbG9va3VwRmllbGROYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSB2aWV3IG9mIGFuIGl0ZW1cclxuICAgKiBAcGFyYW0gaXRlbSAgICAgICAgICA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBsb29rdXBWYWx1ZSAgIDogdGhlIHZhbHVlXHJcbiAgICovXHJcbiAgdXBkYXRlQ3VycmVudChpdGVtOiBULCBsb29rdXBWYWx1ZTogVikge1xyXG4gICAgY29uc3QgcCA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgIHRoaXMuX2FsbCxcclxuICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICBsb29rdXBWYWx1ZVxyXG4gICAgKTtcclxuICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnQudG9nZ2xlKGl0ZW0pO1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdChpdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGl0ZW0gICAgICAgICAgOiB0aGUgaXRlbSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gbG9va3VwVmFsdWUgICA6IHRoZSB2YWx1ZVxyXG4gICAqL1xyXG4gIHRvZ2dsZShpdGVtOiBULCBsb29rdXBWYWx1ZTogViB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChsb29rdXBWYWx1ZSkge1xyXG4gICAgICBjb25zdCBwID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICB0aGlzLl9hbGwsXHJcbiAgICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICAgIGxvb2t1cFZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwID09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsLnB1c2goaXRlbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fYWxsLnNwbGljZShwLCAxKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9jdXJyZW50LnRvZ2dsZShpdGVtKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBpdGVtICAgICAgICAgIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGxvb2t1cFZhbHVlICAgOiB0aGUgdmFsdWVcclxuICAgKi9cclxuICBzZWxlY3QoaXRlbTogVCwgbG9va3VwVmFsdWU6IFYgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAobG9va3VwVmFsdWUpIHtcclxuICAgICAgY29uc3QgcCA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgdGhpcy5fYWxsLFxyXG4gICAgICAgIHRoaXMuX2xvb2t1cEZpZWxkTmFtZSxcclxuICAgICAgICBsb29rdXBWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAocCA9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuX2FsbC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnQuc2VsZWN0KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzZWxlY3QgYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBpdGVtICAgICAgICAgIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGxvb2t1cFZhbHVlICAgOiB0aGUgdmFsdWVcclxuICAgKi9cclxuICBkZXNlbGVjdChpdGVtOiBULCBsb29rdXBWYWx1ZTogViB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChsb29rdXBWYWx1ZSkge1xyXG4gICAgICBjb25zdCBwID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICB0aGlzLl9hbGwsXHJcbiAgICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICAgIGxvb2t1cFZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsLnNwbGljZShwLCAxKTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50LmRlc2VsZWN0KGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXNlbGVjdCBhbGwgc3BlY2lmaWVkIGl0ZW0gbG9va3VwIHZhbHVlc1xyXG4gICAqIEBwYXJhbSBsb29rdXBWYWx1ZXMgOiB0aGUgdmFsdWVzXHJcbiAgICovXHJcbiAgZGVzZWxlY3RCeVZhbHVlcyhsb29rdXBWYWx1ZXM6IFZbXSkge1xyXG4gICAgaWYgKCFsb29rdXBWYWx1ZXMgfHwgbG9va3VwVmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbG9va3VwVmFsdWVzLmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBwID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICB0aGlzLl9hbGwsXHJcbiAgICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICAgIG4uaWQgfHwgblxyXG4gICAgICApO1xyXG4gICAgICBpZiAocCAhPSAtMSkge1xyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5fYWxsW3BdO1xyXG4gICAgICAgIHRoaXMuX2FsbC5zcGxpY2UocCwgMSk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudC5kZXNlbGVjdChpdGVtKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBjdXJyZW50IHZpZXdcclxuICAgKiBAcGFyYW0gY2xlYXJGdW5jIDogdGhlIGZ1bmN0aW9uIHVzZWQgdG8gY2xlYXJcclxuICAgKi9cclxuICBjbGVhckN1cnJlbnQoY2xlYXJGdW5jOiBhbnkpIHtcclxuICAgIHRoaXMuX2N1cnJlbnQuc2VsZWN0ZWQuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICBjbGVhckZ1bmMobik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2N1cnJlbnQuY2xlYXIoKTtcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXNlbGVjdCBhbGwgaXRlbXNcclxuICAgKi9cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMuX2FsbCA9IFtdO1xyXG4gICAgdGhpcy5fY3VycmVudC5jbGVhcigpO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBhbiBpdGVtIGlzIHNlbGVjdGVkIHVzaW5nIGl0cyBsb29rdXAgdmFsdWVcclxuICAgKiBAcGFyYW0gbG9va3VwVmFsdWUgOiB0aGUgdmFsdWVcclxuICAgKiBAcmV0dXJucyAgICAgICAgICAgOiB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIGlzU2VsZWN0ZWQobG9va3VwVmFsdWU6IFYgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKGxvb2t1cFZhbHVlICYmXHJcbiAgICAgIFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgdGhpcy5fYWxsLFxyXG4gICAgICAgIHRoaXMuX2xvb2t1cEZpZWxkTmFtZSxcclxuICAgICAgICBsb29rdXBWYWx1ZVxyXG4gICAgICApICE9IC0xXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGEgc2VsZWN0aW9uIGV4aXN0c1xyXG4gICAqIEByZXR1cm5zIDogdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgc2VsZWN0aW9uIGV4aXN0c1xyXG4gICAqL1xyXG4gIGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FsbC5sZW5ndGggPiAwO1xyXG4gIH1cclxufVxyXG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jb3JlL3NlbGVjdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxNQUFNLE9BQU8sZUFBZTtJQUsxQixJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0QsWUFDRSxtQkFBNEIsSUFBSSxFQUNoQyxrQkFBMEIsSUFBSTtRQWRoQyxZQUFPLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7UUFFekMsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQWNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFJLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxJQUFPLEVBQUUsV0FBYztRQUNuQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixXQUFXLENBQ1osQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsSUFBTyxFQUFFLFdBQWlDO1FBQy9DLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUN2QyxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsV0FBVyxDQUNaLENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxJQUFPLEVBQUUsV0FBaUM7UUFDL0MsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixXQUFXLENBQ1osQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsSUFBTyxFQUFFLFdBQWlDO1FBQ2pELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUN2QyxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsV0FBVyxDQUNaLENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFlBQWlCO1FBQ2hDLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUN2RCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FDdkMsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLENBQUMsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDWixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFNBQWM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxXQUFpQztRQUMxQyxPQUFPLENBQUMsV0FBVztZQUNqQixXQUFXLENBQUMsbUJBQW1CLENBQzdCLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixXQUFXLENBQ1osSUFBSSxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tIFwiLi9zeXN0ZW1cIjtcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZU1vZGVsPFQsIFY+IHtcclxuXHJcbiAgY2hhbmdlZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICBwcml2YXRlIF9hbGw6IFRbXSA9IFtdO1xyXG4gIGdldCBhbGwoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9hbGw7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2N1cnJlbnQ6IFNlbGVjdGlvbk1vZGVsPFQ+O1xyXG4gIGdldCBjdXJyZW50KCk6IFNlbGVjdGlvbk1vZGVsPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50O1xyXG4gIH1cclxuICBwcml2YXRlIF9sb29rdXBGaWVsZE5hbWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBhbGxvd011bHRpU2VsZWN0OiBib29sZWFuID0gdHJ1ZSxcclxuICAgIGxvb2t1cEZpZWxkTmFtZTogc3RyaW5nID0gXCJpZFwiXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50ID0gbmV3IFNlbGVjdGlvbk1vZGVsPFQ+KGFsbG93TXVsdGlTZWxlY3QsIFtdKTtcclxuICAgIHRoaXMuX2FsbCA9IFtdO1xyXG4gICAgdGhpcy5fbG9va3VwRmllbGROYW1lID0gbG9va3VwRmllbGROYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSB2aWV3IG9mIGFuIGl0ZW1cclxuICAgKiBAcGFyYW0gaXRlbSAgICAgICAgICA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBsb29rdXBWYWx1ZSAgIDogdGhlIHZhbHVlXHJcbiAgICovXHJcbiAgdXBkYXRlQ3VycmVudChpdGVtOiBULCBsb29rdXBWYWx1ZTogVikge1xyXG4gICAgY29uc3QgcCA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgIHRoaXMuX2FsbCxcclxuICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICBsb29rdXBWYWx1ZVxyXG4gICAgKTtcclxuICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnQudG9nZ2xlKGl0ZW0pO1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdChpdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGl0ZW0gICAgICAgICAgOiB0aGUgaXRlbSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gbG9va3VwVmFsdWUgICA6IHRoZSB2YWx1ZVxyXG4gICAqL1xyXG4gIHRvZ2dsZShpdGVtOiBULCBsb29rdXBWYWx1ZTogViB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChsb29rdXBWYWx1ZSkge1xyXG4gICAgICBjb25zdCBwID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICB0aGlzLl9hbGwsXHJcbiAgICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICAgIGxvb2t1cFZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwID09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsLnB1c2goaXRlbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fYWxsLnNwbGljZShwLCAxKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9jdXJyZW50LnRvZ2dsZShpdGVtKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3QgYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBpdGVtICAgICAgICAgIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGxvb2t1cFZhbHVlICAgOiB0aGUgdmFsdWVcclxuICAgKi9cclxuICBzZWxlY3QoaXRlbTogVCwgbG9va3VwVmFsdWU6IFYgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAobG9va3VwVmFsdWUpIHtcclxuICAgICAgY29uc3QgcCA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgdGhpcy5fYWxsLFxyXG4gICAgICAgIHRoaXMuX2xvb2t1cEZpZWxkTmFtZSxcclxuICAgICAgICBsb29rdXBWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAocCA9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuX2FsbC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnQuc2VsZWN0KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzZWxlY3QgYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBpdGVtICAgICAgICAgIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGxvb2t1cFZhbHVlICAgOiB0aGUgdmFsdWVcclxuICAgKi9cclxuICBkZXNlbGVjdChpdGVtOiBULCBsb29rdXBWYWx1ZTogViB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChsb29rdXBWYWx1ZSkge1xyXG4gICAgICBjb25zdCBwID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICB0aGlzLl9hbGwsXHJcbiAgICAgICAgdGhpcy5fbG9va3VwRmllbGROYW1lLFxyXG4gICAgICAgIGxvb2t1cFZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fYWxsLnNwbGljZShwLCAxKTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50LmRlc2VsZWN0KGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXNlbGVjdCBhbGwgc3BlY2lmaWVkIGl0ZW0gbG9va3VwIHZhbHVlc1xyXG4gICAqIEBwYXJhbSBsb29rdXBWYWx1ZXMgOiB0aGUgdmFsdWVzXHJcbiAgICovXHJcbiAgZGVzZWxlY3RCeVZhbHVlcyhsb29rdXBWYWx1ZXM6IFZbXSkge1xyXG4gICAgaWYgKCFsb29rdXBWYWx1ZXMgfHwgbG9va3VwVmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbG9va3VwVmFsdWVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIGNvbnN0IHAgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KFxyXG4gICAgICAgIHRoaXMuX2FsbCxcclxuICAgICAgICB0aGlzLl9sb29rdXBGaWVsZE5hbWUsXHJcbiAgICAgICAgblxyXG4gICAgICApO1xyXG4gICAgICBpZiAocCAhPSAtMSkge1xyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5fYWxsW3BdO1xyXG4gICAgICAgIHRoaXMuX2FsbC5zcGxpY2UocCwgMSk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudC5kZXNlbGVjdChpdGVtKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBjdXJyZW50IHZpZXdcclxuICAgKiBAcGFyYW0gY2xlYXJGdW5jIDogdGhlIGZ1bmN0aW9uIHVzZWQgdG8gY2xlYXJcclxuICAgKi9cclxuICBjbGVhckN1cnJlbnQoY2xlYXJGdW5jOiBhbnkpIHtcclxuICAgIHRoaXMuX2N1cnJlbnQuc2VsZWN0ZWQuZm9yRWFjaChuID0+IHtcclxuICAgICAgY2xlYXJGdW5jKG4pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9jdXJyZW50LmNsZWFyKCk7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzZWxlY3QgYWxsIGl0ZW1zXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLl9hbGwgPSBbXTtcclxuICAgIHRoaXMuX2N1cnJlbnQuY2xlYXIoKTtcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBzZWxlY3RlZCB1c2luZyBpdHMgbG9va3VwIHZhbHVlXHJcbiAgICogQHBhcmFtIGxvb2t1cFZhbHVlIDogdGhlIHZhbHVlXHJcbiAgICogQHJldHVybnMgICAgICAgICAgIDogdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgc2VsZWN0ZWRcclxuICAgKi9cclxuICBpc1NlbGVjdGVkKGxvb2t1cFZhbHVlOiBWIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChsb29rdXBWYWx1ZSAmJlxyXG4gICAgICBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KFxyXG4gICAgICAgIHRoaXMuX2FsbCxcclxuICAgICAgICB0aGlzLl9sb29rdXBGaWVsZE5hbWUsXHJcbiAgICAgICAgbG9va3VwVmFsdWVcclxuICAgICAgKSAhPSAtMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBhIHNlbGVjdGlvbiBleGlzdHNcclxuICAgKiBAcmV0dXJucyA6IHRydWUgaWYgYXQgbGVhc3Qgb25lIHNlbGVjdGlvbiBleGlzdHNcclxuICAgKi9cclxuICBoYXNWYWx1ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hbGwubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIl19
@@ -11,10 +11,10 @@ import { MatTooltipModule } from '@angular/material/tooltip';
11
11
  import { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';
12
12
  import { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';
13
13
  import { DialogService } from '@arsedizioni/ars-utils/ui';
14
+ import { FlexLayoutModule } from '@ngbracket/ngx-layout';
14
15
  import { BehaviorSubject, Subject, fromEvent, of as observableOf } from 'rxjs';
15
16
  import { debounceTime, takeUntil } from 'rxjs/operators';
16
17
  import { HelpService } from '../../services/help.service';
17
- import { FlexLayoutModule } from '@ngbracket/ngx-layout';
18
18
  import * as i0 from "@angular/core";
19
19
  import * as i1 from "@ngbracket/ngx-layout/flex";
20
20
  import * as i2 from "@ngbracket/ngx-layout/extended";
@@ -192,7 +192,7 @@ export class HelpViewerComponent {
192
192
  Breakpoints.XLarge,
193
193
  ])
194
194
  .pipe(takeUntil(this.unsubscribe))
195
- .subscribe((result) => {
195
+ .subscribe(result => {
196
196
  for (const query of Object.keys(result.breakpoints)) {
197
197
  if (result.breakpoints[query]) {
198
198
  this.handleFilterPaneVisibility();
@@ -280,7 +280,7 @@ export class HelpViewerComponent {
280
280
  this.helpService
281
281
  .getToc()
282
282
  .subscribe({
283
- next: (r) => {
283
+ next: r => {
284
284
  if (!r.success) {
285
285
  this.dialogService.error(r.message);
286
286
  }
@@ -324,7 +324,7 @@ export class HelpViewerComponent {
324
324
  findFolder(id) {
325
325
  let node = null;
326
326
  if (this.folders) {
327
- this.folders.some((n) => {
327
+ this.folders.some(n => {
328
328
  node = this.tree.findNode(n, id);
329
329
  if (node)
330
330
  return true;
@@ -366,7 +366,7 @@ export class HelpViewerComponent {
366
366
  this.busy.set(true);
367
367
  this.helpService.getChapter(id)
368
368
  .subscribe({
369
- next: (r) => {
369
+ next: r => {
370
370
  let found = false;
371
371
  if (!r.success) {
372
372
  this.dialogService.error("Capitolo non trovato.");
@@ -463,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
463
463
  type: ViewChild,
464
464
  args: ['indexPane']
465
465
  }] } });
466
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvY29tcG9uZW50cy9oZWxwLXZpZXdlci9oZWxwLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvaGVscC9jb21wb25lbnRzL2hlbHAtdmlld2VyL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTZCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxh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LENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0E5VlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsOEVBVmQsV0FBVyxDQUFDLFlBQVksRUFBRSxpQkFLL0IsQ0FBQyxtQkFBbUIsQ0FBQyxrSUMzSmxDLHFwSEF1RU0sMGhLRHNGTSxnQkFBZ0Isa2lIQUFFLGVBQWUsMklBQUUsZ0JBQWdCLDRUQUFFLGFBQWEsbUxBQUUsb0JBQW9CLHlOQUFFLGNBQWMsK0hBQUUsZ0JBQWdCLHdHQUN6SCxnQkFBZ0Isd2RBQUUsYUFBYSxxb0JBQUUsT0FBTywrRUFBRSxZQUFZOzsyRkFFdEQsbUJBQW1CO2tCQVgvQixTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxpQkFHN0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLG1CQUFtQixDQUFDLGNBQ3BCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQjt3QkFDbEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDOzhCQUcxQyxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdFNpZGVuYXYsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIsIE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgU2FmZUh0bWxQaXBlLCBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSGVscFZpZXdlckRpYWxvZ0RhdGEge1xyXG4gIGlkPzogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEluZGV4SW5mbyB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBwYXJlbnQ/OiBJbmRleEluZm8gfCBudWxsO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpdGVtc0NvdW50PzogbnVtYmVyIHwgbnVsbDtcclxuICBzdWJGb2xkZXJzPzogSW5kZXhJbmZvW10gfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhOb2RlIGV4dGVuZHMgSW5kZXhJbmZvIHtcclxuICBleHBhbmRhYmxlOiBib29sZWFuO1xyXG4gIGxldmVsOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGl0ZW06IEluZGV4SW5mbywgbGV2ZWw6IG51bWJlcikge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICAvLyBGbGF0dGVuZWQgaW1wbGVtZW50YXRpb25cclxuICAgIHRoaXMuZXhwYW5kYWJsZSA9IGl0ZW0uc3ViRm9sZGVycyAmJiBpdGVtLnN1YkZvbGRlcnMubGVuZ3RoID4gMDtcclxuICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcclxuXHJcbiAgICAvLyBEYXRhXHJcbiAgICB0aGlzLmlkID0gaXRlbS5pZDtcclxuICAgIHRoaXMubmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgIHRoaXMuaXRlbXNDb3VudCA9IGl0ZW0uaXRlbXNDb3VudDtcclxuICAgIHRoaXMucGFyZW50ID0gaXRlbS5wYXJlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJbmRleFRyZWVEYXRhU291cmNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkYXRhQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbmRleEluZm9bXT4oW10pO1xyXG5cclxuICBnZXQgZGF0YSgpOiBJbmRleEluZm9bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhQ2hhbmdlLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWx6aWUgdGhlIGRhdGEgc291cmNlXHJcbiAgICogQHBhcmFtIGRhdGEgOiBkYXRhXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShkYXRhOiBJbmRleEluZm9bXSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbm9kZSBieSBpZCByZWN1cnNpdmVseVxyXG4gICAqIEBwYXJhbSBub2RlOiB0aGUgc291cmNlIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgaWQgdG8gc2VhcmNoIGZvclxyXG4gICAqL1xyXG4gIGZpbmROb2RlKG5vZGU6IEluZGV4SW5mbywgaWQ6IHN0cmluZyk6IEluZGV4SW5mbyB7XHJcbiAgICBsZXQgY2hpbGRyZW47XHJcbiAgICBpZiAobm9kZSAmJiBub2RlLmlkID09PSBpZCkgcmV0dXJuIG5vZGU7XHJcbiAgICBpZiAobm9kZSkgY2hpbGRyZW4gPSBub2RlLnN1YkZvbGRlcnM7XHJcbiAgICBlbHNlIGNoaWxkcmVuID0gdGhpcy5kYXRhO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGxldCBfbiA9IG51bGw7XHJcbiAgICAgIGNoaWxkcmVuLnNvbWUobiA9PiB7XHJcbiAgICAgICAgbi5wYXJlbnQgPSBub2RlO1xyXG4gICAgICAgIF9uID0gdGhpcy5maW5kTm9kZShuLCBpZCk7XHJcbiAgICAgICAgaWYgKF9uKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gX247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIG5vZGVcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgbm9kZSBpZCB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVOb2RlKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAoIW4pIHJldHVybjtcclxuICAgIGlmIChuLnBhcmVudCkge1xyXG4gICAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkobi5wYXJlbnQuc3ViRm9sZGVycywgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgICBuLnBhcmVudC5zdWJGb2xkZXJzLnNwbGljZShpLCAxKTtcclxuICAgICAgICBuLnBhcmVudC5pdGVtc0NvdW50LS07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleSh0aGlzLmRhdGEsICdpZCcsIGlkKTtcclxuICAgICAgaWYgKGkgIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLnNwbGljZShpLCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnNlcnQgYSBuZXcgbm9kZVxyXG4gICAqIEBwYXJhbSBub2RlIDogdGhlIG5ldyBub2RlXHJcbiAgICovXHJcbiAgaW5zZXJ0Tm9kZShub2RlOiBJbmRleEluZm8pIHtcclxuICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICBub2RlLnBhcmVudC5zdWJGb2xkZXJzLnVuc2hpZnQobm9kZSk7XHJcbiAgICAgIG5vZGUucGFyZW50Lml0ZW1zQ291bnQrKztcclxuICAgIH0gZWxzZSB0aGlzLmRhdGEudW5zaGlmdChub2RlKTtcclxuXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVuYW1lIGEgbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBub2RlIGlkXHJcbiAgICogQHBhcmFtIG5hbWUgOiB0aGUgbmV3IG5vZGUgbmFtZVxyXG4gICAqL1xyXG4gIHJlbmFtZU5vZGUoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgbiA9IHRoaXMuZmluZE5vZGUobnVsbCwgaWQpO1xyXG4gICAgaWYgKG4pIHtcclxuICAgICAgbi5uYW1lID0gbmFtZTtcclxuICAgICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBkYXRhXHJcbiAgICovXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVscC12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW0luZGV4VHJlZURhdGFTb3VyY2VdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0ZsZXhMYXlvdXRNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsIE1hdERpYWxvZ1RpdGxlLCBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTmdTdHlsZSwgTWF0U2lkZW5hdk1vZHVsZSwgTWF0VHJlZU1vZHVsZSwgTmdDbGFzcywgU2FmZUh0bWxQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVscFZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdpbmRleFBhbmUnKSBpbmRleFBhbmUhOiBNYXRTaWRlbmF2O1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxIZWxwVmlld2VyQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IEhlbHBWaWV3ZXJEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBpZDogXCIxXCIgfTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBoZWxwU2VydmljZSA9IGluamVjdChIZWxwU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gIHByb3RlY3RlZCBidXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgcGFnZSA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xyXG4gIHByaXZhdGUgaW5kZXhJZDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIGluZGV4UGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBpbmRleE5vZGU6IEluZGV4SW5mbyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBoaXN0b3J5ID0gc2lnbmFsKFtdKTtcclxuICBwcm90ZWN0ZWQgY2FuR29CYWNrOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5KCk/Lmxlbmd0aCA+IDE7XHJcbiAgfSlcclxuXHJcbiAgLyoqXHJcbiAqIE1hbmFnZSBmbGF0IHRyZWUgdmlld1xyXG4gKi9cclxuICBwcml2YXRlIHRyZWUgPSBpbmplY3QoSW5kZXhUcmVlRGF0YVNvdXJjZSk7XHJcbiAgcHJpdmF0ZSB0cmVlRmxhdHRlbmVyOiBNYXRUcmVlRmxhdHRlbmVyPEluZGV4SW5mbywgSW5kZXhOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxJbmRleE5vZGU+O1xyXG4gIHByb3RlY3RlZCB0cmVlRGF0YTogTWF0VHJlZUZsYXREYXRhU291cmNlPEluZGV4SW5mbywgSW5kZXhOb2RlPjtcclxuICBwcml2YXRlIGZvbGRlcnM6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBJbmRleEluZm8pOiBPYnNlcnZhYmxlPEluZGV4SW5mb1tdPiA9PlxyXG4gICAgb2JzZXJ2YWJsZU9mKG5vZGUuc3ViRm9sZGVycyk7XHJcbiAgcHJpdmF0ZSBnZXRMZXZlbCA9IChub2RlOiBJbmRleE5vZGUpID0+IG5vZGUubGV2ZWw7XHJcbiAgcHJpdmF0ZSBpc0V4cGFuZGFibGUgPSAobm9kZTogSW5kZXhOb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XHJcbiAgcHJvdGVjdGVkIGhhc0NoaWxkID0gKF86IG51bWJlciwgX25vZGU6IEluZGV4Tm9kZSkgPT4gX25vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtZXIgPSAoaXRlbTogSW5kZXhJbmZvLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IEluZGV4Tm9kZShpdGVtLCBsZXZlbCk7XHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gU2V0dXAgdHJlZSBzdHJ1Y3R1cmVcclxuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcclxuICAgICAgdGhpcy5nZXRDaGlsZHJlblxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEluZGV4Tm9kZT4oXHJcbiAgICAgIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlRGF0YSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UoXHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudHJlZUZsYXR0ZW5lclxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgZGF0YSBjaGFuZ2VcclxuICAgIHRoaXMudHJlZS5kYXRhQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+ICh0aGlzLnRyZWVEYXRhLmRhdGEgPSBkYXRhKSk7XHJcblxyXG4gICAgLy8gT2JzZXJ2ZSBsYXlvdXQgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5TbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5NZWRpdW0sXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWExhcmdlLFxyXG4gICAgICBdKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpKSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmJyZWFrcG9pbnRzW3F1ZXJ5XSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoMjUwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5nZXRUb2MoKTtcclxuXHJcbiAgICB0aGlzLmluZGV4SWQgPSB0aGlzLmRpYWxvZ0RhdGEuaWQ7XHJcbiAgICBpZiAodGhpcy5pbmRleElkKSB7XHJcbiAgICAgIHRoaXMuZ2V0Q2hhcHRlcih0aGlzLmluZGV4SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgIHRoaXMuaW5kZXhQYW5lQ2xvc2VkID0gIXRoaXMuaW5kZXhQYW5lLm9wZW5lZDtcclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHB2aWV3ZXItc2Nyb2xsYWJsZScpO1xyXG4gICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRDdXJyZW50RGlhbG9nU2Nyb2xsYWJsZUhlaWdodChcclxuICAgICAgICAgIFsnaGVscHZpZXdlci1maXhlZCddLFxyXG4gICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGVpZ2h0ICE9IGVsZW0uY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncGFkZGluZzowIDAgMCAxMHB4O2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiogSGFuZGxlIGZpbHRlciBwYW5lIHZpc2liaWxpdHlcclxuKi9cclxuICBwcml2YXRlIGhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCkge1xyXG4gICAgaWYgKHRoaXMuaW5kZXhQYW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuWFNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5TbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTWVkaXVtKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmluZGV4UGFuZS5vcGVuZWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5pbmRleFBhbmUub3BlbmVkICYmICF0aGlzLmluZGV4UGFuZUNsb3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5pbmRleFBhbmUub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBoaWRlIGluZGV4IHBhbmUgbWFudWFsbHlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlSW5kZXhQYW5lKCkge1xyXG4gICAgdGhpcy5pbmRleFBhbmVDbG9zZWQgPSAhdGhpcy5pbmRleFBhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLmluZGV4UGFuZT8udG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2UgZGlhbG9nXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdG9jXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldFRvYygpOiB2b2lkIHtcclxuICAgIHRoaXMuYnVzeS5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmhlbHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRUb2MoKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9sZGVycyA9IHIudmFsdWUuc3ViRm9sZGVycztcclxuICAgICAgICAgICAgdGhpcy50cmVlLmluaXRpYWxpemUoci52YWx1ZS5zdWJGb2xkZXJzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJ1c3kuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhY3QgdG8gY2xpY2sgZXZlbnQgYW5kIGZpbmQgbmV3IGhlbHAgdGFyZ2V0IHRvIGdvIHRvXHJcbiAgICogQHBhcmFtIGV2ZW50IDogdGhlIGNsaWNrIGV2ZW50XHJcbiAgICogQHJldHVybnMgOiBhbHdheXMgZmFsc2UsIHRvIHN0b3AgbmF2aWdhdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnb3RvQ2hhcHRlcihldmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZXZlbnQuc3JjRWxlbWVudC5ub2RlTmFtZSAhPT0gJ0EnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgdGFnID0gZXZlbnQuc3JjRWxlbWVudC5vdXRlckhUTUw7XHJcbiAgICBsZXQgaWQgPSAnJztcclxuICAgIGxldCBwID0gdGFnLmluZGV4T2YoJ2hlbHAtdGFyZ2V0PVwiJyk7XHJcbiAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgcCArPSAxMztcclxuICAgICAgd2hpbGUgKHRhZ1twXSAhPT0gJ1wiJykge1xyXG4gICAgICAgIGlkICs9IHRhZ1twXTtcclxuICAgICAgICBwKys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpZCkgdGhpcy5nZXRDaGFwdGVyKGlkKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgYSBub2RlIGJ5IGlkXHJcbiAgICogQHBhcmFtIGlkIDogZm9sZGVyIGlkXHJcbiAgICogQHJldHVybnM6IHRoZSBmb2xkZXIgaW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZmluZEZvbGRlcihpZDogc3RyaW5nKTogSW5kZXhJbmZvIHtcclxuICAgIGxldCBub2RlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmZvbGRlcnMpIHtcclxuICAgICAgdGhpcy5mb2xkZXJzLnNvbWUoKG46IGFueSkgPT4ge1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLnRyZWUuZmluZE5vZGUobiwgaWQpO1xyXG4gICAgICAgIGlmIChub2RlKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBhbmQgY3VycmVudCBmb2RsZXIgbm9kZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZXhwYW5kQ3VycmVudEZvbGRlcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluZGV4Tm9kZSkge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChcclxuICAgICAgICBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleShcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLFxyXG4gICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgIHRoaXMuaW5kZXhOb2RlLmlkXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGhpcy5pbmRleE5vZGUucGFyZW50KSB7XHJcbiAgICAgICAgLy8gQXBwbHkgcHJldmlvdXMgc2VsZWN0aW9uXHJcbiAgICAgICAgbGV0IG4gPSB0aGlzLmluZGV4Tm9kZS5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKG4pIHtcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKFxyXG4gICAgICAgICAgICBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleSh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcywgJ2lkJywgbi5pZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBuID0gbi5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhIG5ldyBjaGFwdGVyXHJcbiAgICogQHBhcmFtIGlkIHRoZSBjaGFwdGVyIGlkI2FuY2hvclxyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiA6IHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0Q2hhcHRlcihpZDogc3RyaW5nLCBwb3NpdGlvbjogbnVtYmVyID0gMCk6IHZvaWQge1xyXG4gICAgLy8gRGV0ZWN0IGFuY2hvciBpZiBleGlzdHNcclxuICAgIGxldCBhbmNob3I6IHN0cmluZyA9IG51bGw7XHJcbiAgICBsZXQgcCA9IGlkLmluZGV4T2YoJyMnKTtcclxuICAgIGlmIChwICE9PSAtMSkge1xyXG4gICAgICBhbmNob3IgPSBpZC5zdWJzdHJpbmcocCArIDEpO1xyXG4gICAgICBpZCA9IGlkLnN1YnN0cmluZygwLCBwKTtcclxuICAgIH1cclxuICAgIGlmIChpZCAhPT0gJy4nKSB7XHJcbiAgICAgIHRoaXMuYnVzeS5zZXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuaGVscFNlcnZpY2UuZ2V0Q2hhcHRlcihpZClcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiQ2FwaXRvbG8gbm9uIHRyb3ZhdG8uXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICghcG9zaXRpb24pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnkoKS5wdXNoKHsgaWQ6IHRoaXMuaW5kZXhJZCwgcG9zaXRpb246IHRoaXMuZ2V0UG9zaXRpb24oKSB9KTtcclxuICAgICAgICAgICAgICB0aGlzLmluZGV4SWQgPSBpZDtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2Uuc2V0KHIudmFsdWUuZGF0YSk7XHJcbiAgICAgICAgICAgICAgZm91bmQgPSByLnZhbHVlLmNoYXB0ZXI/Lm5hbWU/Lmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZm9sZGVyXHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4Tm9kZSA9IHRoaXMuZmluZEZvbGRlcihpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZEN1cnJlbnRGb2xkZXIoKTtcclxuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBwb3NpdGlvbmluZ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nb3RvUG9zaXRpb24oYW5jaG9yLCBwb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRDaGFwdGVyKFwiMVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCFwb3NpdGlvbilcclxuICAgICAgICB0aGlzLmhpc3RvcnkoKS5wdXNoKHsgaWQ6IHRoaXMuaW5kZXhJZCwgcG9zaXRpb246IHRoaXMuZ2V0UG9zaXRpb24oKSB9KTtcclxuICAgICAgLy8gTW92ZSBvbiB0aGUgc2FtZSBjaGFwdGVyXHJcbiAgICAgIHRoaXMuZ290b1Bvc2l0aW9uKGFuY2hvciwgcG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBhbmNob3IgdGhlIGFuY2hvciB0byBnbyB0b1xyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgb2Zmc2V0IHRvIGdvIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdvdG9Qb3NpdGlvbihhbmNob3I6IHN0cmluZywgcG9zaXRpb246IG51bWJlciA9IDApOiB2b2lkIHtcclxuICAgIC8vIEhhbmRsZSBwb3NpdGlvbmluZ1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIEhhbmRsZSBhbmNob3IgZmlyc3RcclxuICAgICAgaWYgKGFuY2hvcikge1xyXG4gICAgICAgIGxldCBlbG1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoYW5jaG9yLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChlbG1zKSBwb3NpdGlvbiA9IGVsbXNbMF0ub2Zmc2V0VG9wO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFRoZW4gcG9zaXRpb25cclxuICAgICAgaWYgKHBvc2l0aW9uID4gMCkgdGhpcy5zZXRQb3NpdGlvbihwb3NpdGlvbiAtIDEpO1xyXG4gICAgICBlbHNlIHRoaXMuc2V0UG9zaXRpb24oMCk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICogQHJldHVybnM6IHRoZSBuZXcgc2Nyb2xsIHRvcFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRQb3NpdGlvbigpOiBudW1iZXIge1xyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscHZpZXdlci1zY3JvbGxlcicpO1xyXG4gICAgaWYgKGVsZW0pIHtcclxuICAgICAgcmV0dXJuIGVsZW0uc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIDogdGhlIHBvc2l0aW9uIHRvIGdvIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNldFBvc2l0aW9uKHBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHB2aWV3ZXItc2Nyb2xsZXInKTtcclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIGVsZW0uc2Nyb2xsVG8oMCwgcG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR28gYmFja1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBiYWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhpc3RvcnkgfHwgdGhpcy5oaXN0b3J5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IG4gPSB0aGlzLmhpc3RvcnkoKS5wb3AoKTtcclxuICAgIHRoaXMuZ2V0Q2hhcHRlcihuLmlkLCBuLnBvc2l0aW9uICsgMSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImhlbHB2aWV3ZXItZml4ZWRcIj5cclxuICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OjZweFwiPlxyXG4gICAgQGlmIChidXN5KCkpIHtcclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIHotaW5kZXg9XCIxMVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1tZW51XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJNb3N0cmEgbWVudVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBpbmRpY2UnXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJbmRleFBhbmUoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+R3VpZGE8L2gyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxMDBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgIEBpZiAoY2FuR29CYWNrKCkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJJbmRpZXRyb1wiIChjbGljayk9XCJiYWNrKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQ2hpdWRpXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiBcclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGlkPVwiaGVscHZpZXdlci1zY3JvbGxhYmxlXCI+XHJcbiAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZmlsbFwiPlxyXG4gICAgPG1hdC1kcmF3ZXIgI2luZGV4UGFuZSBtb2RlPVwic2lkZVwiIFthdXRvRm9jdXNdPVwiZmFsc2VcIiBjbGFzcz1cImRyYXdlci1zbWFsbCBkcmF3ZXItdHJhbnNwYXJlbnRcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgICAgIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJ0cmVlRGF0YVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiIGNsYXNzPVwidHJlZSBcIiBzdHlsZT1cIm1heC13aWR0aDozMTBweFwiPlxyXG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgICAgICAgIFttYXRUcmVlTm9kZVBhZGRpbmdJbmRlbnRdPVwiMjBcIiBjbGFzcz1cInRyZWUtbm9kZSB0cmVlLW5vZGUtc2ltcGxlIHRyZWUtbm9kZS1zdHlsZVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdldENoYXB0ZXIobm9kZS5pZCk7XCIgW25nQ2xhc3NdPVwieyd0cmVlLW5vZGUtYWN0aXZhdGVkJzogaW5kZXhOb2RlICYmIGluZGV4Tm9kZS5pZCA9PT0gbm9kZS5pZH1cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5KClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsIGNsYXNzPVwic21hbGwgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZCBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPnt7bm9kZS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTt3aGVuOiBoYXNDaGlsZFwiIG1hdFRyZWVOb2RlUGFkZGluZyBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRyZWUtbm9kZSB0cmVlLW5vZGUtc2ltcGxlIHRyZWUtbm9kZS1zdHlsZVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0cmVlLW5vZGUtYWN0aXZhdGVkJzogaW5kZXhOb2RlICYmIGluZGV4Tm9kZS5pZCA9PT0gbm9kZS5pZCB9XCIgKGNsaWNrKT1cImdldENoYXB0ZXIobm9kZS5pZClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXN5KClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsIGNsYXNzPVwic21hbGwgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUcmVlTm9kZVRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBcHJpL2NoaXVkaSAnICsgbm9kZS5uYW1lXCIgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2V4cGFuZF9tb3JlJyA6ICdjaGV2cm9uX3JpZ2h0J319XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+e3tub2RlLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDI0cHg7XCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGxcIiBpZD1cImhlbHB2aWV3ZXItc2Nyb2xsZXJcIiAoY2xpY2spPVwiZ290b0NoYXB0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbaW5uZXJIdG1sXT1cIihwYWdlKCkgPz8gJycpIHwgc2FmZUh0bWxcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
466
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvY29tcG9uZW50cy9oZWxwLXZpZXdlci9oZWxwLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvaGVscC9jb21wb25lbnRzL2hlbHAtdmlld2VyL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTZCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxh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QyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQTlWVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw4RUFWZCxXQUFXLENBQUMsWUFBWSxFQUFFLGlCQUsvQixDQUFDLG1CQUFtQixDQUFDLGtJQzNKbEMscXBIQXVFTSwwaEtEc0ZNLGdCQUFnQixraUhBQUUsZUFBZSwySUFBRSxnQkFBZ0IsNFRBQUUsYUFBYSxtTEFBRSxvQkFBb0IseU5BQUUsY0FBYywrSEFBRSxnQkFBZ0Isd0dBQ3pILGdCQUFnQix3ZEFBRSxhQUFhLHFvQkFBRSxPQUFPLCtFQUFFLFlBQVk7OzJGQUV0RCxtQkFBbUI7a0JBWC9CLFNBQVM7MkJBQ0YsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFFLGlCQUc3QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsbUJBQW1CLENBQUMsY0FDcEIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCO3dCQUNsSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUM7OEJBRzFDLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT25Jbml0LCBTaWduYWwsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nVGl0bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdiwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciwgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIZWxwVmlld2VyRGlhbG9nRGF0YSB7XHJcbiAgaWQ/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhJbmZvIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHBhcmVudD86IEluZGV4SW5mbyB8IG51bGw7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGl0ZW1zQ291bnQ/OiBudW1iZXIgfCBudWxsO1xyXG4gIHN1YkZvbGRlcnM/OiBJbmRleEluZm9bXSB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbmRleE5vZGUgZXh0ZW5kcyBJbmRleEluZm8ge1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgbGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoaXRlbTogSW5kZXhJbmZvLCBsZXZlbDogbnVtYmVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIEZsYXR0ZW5lZCBpbXBsZW1lbnRhdGlvblxyXG4gICAgdGhpcy5leHBhbmRhYmxlID0gaXRlbS5zdWJGb2xkZXJzICYmIGl0ZW0uc3ViRm9sZGVycy5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xyXG5cclxuICAgIC8vIERhdGFcclxuICAgIHRoaXMuaWQgPSBpdGVtLmlkO1xyXG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgdGhpcy5pdGVtc0NvdW50ID0gaXRlbS5pdGVtc0NvdW50O1xyXG4gICAgdGhpcy5wYXJlbnQgPSBpdGVtLnBhcmVudDtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEluZGV4VHJlZURhdGFTb3VyY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGRhdGFDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEluZGV4SW5mb1tdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEluZGV4SW5mb1tdIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFDaGFuZ2UudmFsdWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YUNoYW5nZS51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbHppZSB0aGUgZGF0YSBzb3VyY2VcclxuICAgKiBAcGFyYW0gZGF0YSA6IGRhdGFcclxuICAgKi9cclxuICBpbml0aWFsaXplKGRhdGE6IEluZGV4SW5mb1tdKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dChkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgYSBub2RlIGJ5IGlkIHJlY3Vyc2l2ZWx5XHJcbiAgICogQHBhcmFtIG5vZGU6IHRoZSBzb3VyY2Ugbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBpZCB0byBzZWFyY2ggZm9yXHJcbiAgICovXHJcbiAgZmluZE5vZGUobm9kZTogSW5kZXhJbmZvLCBpZDogc3RyaW5nKTogSW5kZXhJbmZvIHtcclxuICAgIGxldCBjaGlsZHJlbjtcclxuICAgIGlmIChub2RlICYmIG5vZGUuaWQgPT09IGlkKSByZXR1cm4gbm9kZTtcclxuICAgIGlmIChub2RlKSBjaGlsZHJlbiA9IG5vZGUuc3ViRm9sZGVycztcclxuICAgIGVsc2UgY2hpbGRyZW4gPSB0aGlzLmRhdGE7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBuLnBhcmVudCA9IG5vZGU7XHJcbiAgICAgICAgX24gPSB0aGlzLmZpbmROb2RlKG4sIGlkKTtcclxuICAgICAgICBpZiAoX24pIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBfbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBub2RlIGlkIHRvIHJlbW92ZVxyXG4gICAqL1xyXG4gIHJlbW92ZU5vZGUoaWQ6IHN0cmluZykge1xyXG4gICAgbGV0IG4gPSB0aGlzLmZpbmROb2RlKG51bGwsIGlkKTtcclxuICAgIGlmICghbikgcmV0dXJuO1xyXG4gICAgaWYgKG4ucGFyZW50KSB7XHJcbiAgICAgIGxldCBpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShuLnBhcmVudC5zdWJGb2xkZXJzLCAnaWQnLCBpZCk7XHJcbiAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgIG4ucGFyZW50LnN1YkZvbGRlcnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIG4ucGFyZW50Lml0ZW1zQ291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBhIG5ldyBub2RlXHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGUgbmV3IG5vZGVcclxuICAgKi9cclxuICBpbnNlcnROb2RlKG5vZGU6IEluZGV4SW5mbykge1xyXG4gICAgaWYgKG5vZGUucGFyZW50KSB7XHJcbiAgICAgIG5vZGUucGFyZW50LnN1YkZvbGRlcnMudW5zaGlmdChub2RlKTtcclxuICAgICAgbm9kZS5wYXJlbnQuaXRlbXNDb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAobikge1xyXG4gICAgICBuLm5hbWUgPSBuYW1lO1xyXG4gICAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oZWxwLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbSW5kZXhUcmVlRGF0YVNvdXJjZV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRmxleExheW91dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRQcm9ncmVzc0Jhck1vZHVsZSwgTWF0RGlhbG9nVGl0bGUsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBOZ1N0eWxlLCBNYXRTaWRlbmF2TW9kdWxlLCBNYXRUcmVlTW9kdWxlLCBOZ0NsYXNzLCBTYWZlSHRtbFBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2luZGV4UGFuZScpIGluZGV4UGFuZSE6IE1hdFNpZGVuYXY7XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPEhlbHBWaWV3ZXJDb21wb25lbnQ+KTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YTogSGVscFZpZXdlckRpYWxvZ0RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKSA/PyB7IGlkOiBcIjFcIiB9O1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIGhlbHBTZXJ2aWNlID0gaW5qZWN0KEhlbHBTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBwYWdlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJpdmF0ZSBpbmRleElkOiBzdHJpbmcgPSBudWxsO1xyXG4gIHByaXZhdGUgaW5kZXhQYW5lQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGluZGV4Tm9kZTogSW5kZXhJbmZvID0gbnVsbDtcclxuICBwcml2YXRlIGhpc3RvcnkgPSBzaWduYWwoW10pO1xyXG4gIHByb3RlY3RlZCBjYW5Hb0JhY2s6IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLmhpc3RvcnkoKT8ubGVuZ3RoID4gMTtcclxuICB9KVxyXG5cclxuICAvKipcclxuICogTWFuYWdlIGZsYXQgdHJlZSB2aWV3XHJcbiAqL1xyXG4gIHByaXZhdGUgdHJlZSA9IGluamVjdChJbmRleFRyZWVEYXRhU291cmNlKTtcclxuICBwcml2YXRlIHRyZWVGbGF0dGVuZXI6IE1hdFRyZWVGbGF0dGVuZXI8SW5kZXhJbmZvLCBJbmRleE5vZGU+O1xyXG4gIHByb3RlY3RlZCB0cmVlQ29udHJvbDogRmxhdFRyZWVDb250cm9sPEluZGV4Tm9kZT47XHJcbiAgcHJvdGVjdGVkIHRyZWVEYXRhOiBNYXRUcmVlRmxhdERhdGFTb3VyY2U8SW5kZXhJbmZvLCBJbmRleE5vZGU+O1xyXG4gIHByaXZhdGUgZm9sZGVyczogSW5kZXhJbmZvW10gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGdldENoaWxkcmVuID0gKG5vZGU6IEluZGV4SW5mbyk6IE9ic2VydmFibGU8SW5kZXhJbmZvW10+ID0+XHJcbiAgICBvYnNlcnZhYmxlT2Yobm9kZS5zdWJGb2xkZXJzKTtcclxuICBwcml2YXRlIGdldExldmVsID0gKG5vZGU6IEluZGV4Tm9kZSkgPT4gbm9kZS5sZXZlbDtcclxuICBwcml2YXRlIGlzRXhwYW5kYWJsZSA9IChub2RlOiBJbmRleE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgaGFzQ2hpbGQgPSAoXzogbnVtYmVyLCBfbm9kZTogSW5kZXhOb2RlKSA9PiBfbm9kZS5leHBhbmRhYmxlO1xyXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm1lciA9IChpdGVtOiBJbmRleEluZm8sIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBuZXcgSW5kZXhOb2RlKGl0ZW0sIGxldmVsKTtcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBTZXR1cCB0cmVlIHN0cnVjdHVyZVxyXG4gICAgdGhpcy50cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXHJcbiAgICAgIHRoaXMudHJhbnNmb3JtZXIsXHJcbiAgICAgIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlLFxyXG4gICAgICB0aGlzLmdldENoaWxkcmVuXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8SW5kZXhOb2RlPihcclxuICAgICAgdGhpcy5nZXRMZXZlbCxcclxuICAgICAgdGhpcy5pc0V4cGFuZGFibGVcclxuICAgICk7XHJcbiAgICB0aGlzLnRyZWVEYXRhID0gbmV3IE1hdFRyZWVGbGF0RGF0YVNvdXJjZShcclxuICAgICAgdGhpcy50cmVlQ29udHJvbCxcclxuICAgICAgdGhpcy50cmVlRmxhdHRlbmVyXHJcbiAgICApO1xyXG5cclxuICAgIC8vIFN1YnNjcmliZSBkYXRhIGNoYW5nZVxyXG4gICAgdGhpcy50cmVlLmRhdGFDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4gKHRoaXMudHJlZURhdGEuZGF0YSA9IGRhdGEpKTtcclxuXHJcbiAgICAvLyBPYnNlcnZlIGxheW91dCBjaGFuZ2VzXHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICAgICAub2JzZXJ2ZShbXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWFNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLlNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLk1lZGl1bSxcclxuICAgICAgICBCcmVha3BvaW50cy5MYXJnZSxcclxuICAgICAgICBCcmVha3BvaW50cy5YTGFyZ2UsXHJcbiAgICAgIF0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgT2JqZWN0LmtleXMocmVzdWx0LmJyZWFrcG9pbnRzKSkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5icmVha3BvaW50c1txdWVyeV0pIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSwgZGVib3VuY2VUaW1lKDI1MCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0VG9jKCk7XHJcblxyXG4gICAgdGhpcy5pbmRleElkID0gdGhpcy5kaWFsb2dEYXRhLmlkO1xyXG4gICAgaWYgKHRoaXMuaW5kZXhJZCkge1xyXG4gICAgICB0aGlzLmdldENoYXB0ZXIodGhpcy5pbmRleElkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICB0aGlzLmluZGV4UGFuZUNsb3NlZCA9ICF0aGlzLmluZGV4UGFuZS5vcGVuZWQ7XHJcbiAgICB9LCAwKTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2l6ZSBcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwdmlld2VyLXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ2hlbHB2aWV3ZXItZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSBlbGVtLmNsaWVudEhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3BhZGRpbmc6MCAwIDAgMTBweDtoZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4qIEhhbmRsZSBmaWx0ZXIgcGFuZSB2aXNpYmlsaXR5XHJcbiovXHJcbiAgcHJpdmF0ZSBoYW5kbGVGaWx0ZXJQYW5lVmlzaWJpbGl0eSgpIHtcclxuICAgIGlmICh0aGlzLmluZGV4UGFuZSkge1xyXG4gICAgICBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlhTbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLk1lZGl1bSkpIHtcclxuICAgICAgICBpZiAodGhpcy5pbmRleFBhbmUub3BlbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmluZGV4UGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW5kZXhQYW5lLm9wZW5lZCAmJiAhdGhpcy5pbmRleFBhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhQYW5lLm9wZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgaGlkZSBpbmRleCBwYW5lIG1hbnVhbGx5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZUluZGV4UGFuZSgpIHtcclxuICAgIHRoaXMuaW5kZXhQYW5lQ2xvc2VkID0gIXRoaXMuaW5kZXhQYW5lQ2xvc2VkO1xyXG4gICAgdGhpcy5pbmRleFBhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIHRvY1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRUb2MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1c3kuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5oZWxwU2VydmljZVxyXG4gICAgICAuZ2V0VG9jKClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogciA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9sZGVycyA9IHIudmFsdWUuc3ViRm9sZGVycztcclxuICAgICAgICAgICAgdGhpcy50cmVlLmluaXRpYWxpemUoci52YWx1ZS5zdWJGb2xkZXJzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJ1c3kuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhY3QgdG8gY2xpY2sgZXZlbnQgYW5kIGZpbmQgbmV3IGhlbHAgdGFyZ2V0IHRvIGdvIHRvXHJcbiAgICogQHBhcmFtIGV2ZW50IDogdGhlIGNsaWNrIGV2ZW50XHJcbiAgICogQHJldHVybnMgOiBhbHdheXMgZmFsc2UsIHRvIHN0b3AgbmF2aWdhdGlvblxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnb3RvQ2hhcHRlcihldmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZXZlbnQuc3JjRWxlbWVudC5ub2RlTmFtZSAhPT0gJ0EnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgdGFnID0gZXZlbnQuc3JjRWxlbWVudC5vdXRlckhUTUw7XHJcbiAgICBsZXQgaWQgPSAnJztcclxuICAgIGxldCBwID0gdGFnLmluZGV4T2YoJ2hlbHAtdGFyZ2V0PVwiJyk7XHJcbiAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgcCArPSAxMztcclxuICAgICAgd2hpbGUgKHRhZ1twXSAhPT0gJ1wiJykge1xyXG4gICAgICAgIGlkICs9IHRhZ1twXTtcclxuICAgICAgICBwKys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpZCkgdGhpcy5nZXRDaGFwdGVyKGlkKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgYSBub2RlIGJ5IGlkXHJcbiAgICogQHBhcmFtIGlkIDogZm9sZGVyIGlkXHJcbiAgICogQHJldHVybnM6IHRoZSBmb2xkZXIgaW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZmluZEZvbGRlcihpZDogc3RyaW5nKTogSW5kZXhJbmZvIHtcclxuICAgIGxldCBub2RlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmZvbGRlcnMpIHtcclxuICAgICAgdGhpcy5mb2xkZXJzLnNvbWUobiA9PiB7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMudHJlZS5maW5kTm9kZShuLCBpZCk7XHJcbiAgICAgICAgaWYgKG5vZGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4cGFuZCBjdXJyZW50IGZvZGxlciBub2RlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHBhbmRDdXJyZW50Rm9sZGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5kZXhOb2RlKSB7XHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKFxyXG4gICAgICAgIFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMsXHJcbiAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgdGhpcy5pbmRleE5vZGUuaWRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmluZGV4Tm9kZS5wYXJlbnQpIHtcclxuICAgICAgICAvLyBBcHBseSBwcmV2aW91cyBzZWxlY3Rpb25cclxuICAgICAgICBsZXQgbiA9IHRoaXMuaW5kZXhOb2RlLnBhcmVudDtcclxuICAgICAgICB3aGlsZSAobikge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQoXHJcbiAgICAgICAgICAgIFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLCAnaWQnLCBuLmlkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG4gPSBuLnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGEgbmV3IGNoYXB0ZXJcclxuICAgKiBAcGFyYW0gaWQgdGhlIGNoYXB0ZXIgaWQjYW5jaG9yXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIDogdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDaGFwdGVyKGlkOiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAvLyBEZXRlY3QgYW5jaG9yIGlmIGV4aXN0c1xyXG4gICAgbGV0IGFuY2hvcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBwID0gaWQuaW5kZXhPZignIycpO1xyXG4gICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgIGFuY2hvciA9IGlkLnN1YnN0cmluZyhwICsgMSk7XHJcbiAgICAgIGlkID0gaWQuc3Vic3RyaW5nKDAsIHApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlkICE9PSAnLicpIHtcclxuICAgICAgdGhpcy5idXN5LnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5oZWxwU2VydmljZS5nZXRDaGFwdGVyKGlkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogciA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIkNhcGl0b2xvIG5vbiB0cm92YXRvLlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIXBvc2l0aW9uKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5KCkucHVzaCh7IGlkOiB0aGlzLmluZGV4SWQsIHBvc2l0aW9uOiB0aGlzLmdldFBvc2l0aW9uKCkgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbmRleElkID0gaWQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlLnNldChyLnZhbHVlLmRhdGEpO1xyXG4gICAgICAgICAgICAgIGZvdW5kID0gci52YWx1ZS5jaGFwdGVyPy5uYW1lPy5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGZvbGRlclxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleE5vZGUgPSB0aGlzLmZpbmRGb2xkZXIoaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDdXJyZW50Rm9sZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcG9zaXRpb25pbmdcclxuICAgICAgICAgICAgICAgIHRoaXMuZ290b1Bvc2l0aW9uKGFuY2hvciwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0Q2hhcHRlcihcIjFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJ1c3kuc2V0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghcG9zaXRpb24pXHJcbiAgICAgICAgdGhpcy5oaXN0b3J5KCkucHVzaCh7IGlkOiB0aGlzLmluZGV4SWQsIHBvc2l0aW9uOiB0aGlzLmdldFBvc2l0aW9uKCkgfSk7XHJcbiAgICAgIC8vIE1vdmUgb24gdGhlIHNhbWUgY2hhcHRlclxyXG4gICAgICB0aGlzLmdvdG9Qb3NpdGlvbihhbmNob3IsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gcG9zaXRpb25cclxuICAgKiBAcGFyYW0gYW5jaG9yIHRoZSBhbmNob3IgdG8gZ28gdG9cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIG9mZnNldCB0byBnbyB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnb3RvUG9zaXRpb24oYW5jaG9yOiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAvLyBIYW5kbGUgcG9zaXRpb25pbmdcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBIYW5kbGUgYW5jaG9yIGZpcnN0XHJcbiAgICAgIGlmIChhbmNob3IpIHtcclxuICAgICAgICBsZXQgZWxtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGFuY2hvci50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICBpZiAoZWxtcykgcG9zaXRpb24gPSBlbG1zWzBdLm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgICAvLyBUaGVuIHBvc2l0aW9uXHJcbiAgICAgIGlmIChwb3NpdGlvbiA+IDApIHRoaXMuc2V0UG9zaXRpb24ocG9zaXRpb24gLSAxKTtcclxuICAgICAgZWxzZSB0aGlzLnNldFBvc2l0aW9uKDApO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHNjcm9sbCBwb3NpdGlvblxyXG4gICAqIEByZXR1cm5zOiB0aGUgbmV3IHNjcm9sbCB0b3BcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHB2aWV3ZXItc2Nyb2xsZXInKTtcclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIHJldHVybiBlbGVtLnNjcm9sbFRvcDtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHNjcm9sbCBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiA6IHRoZSBwb3NpdGlvbiB0byBnbyB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwdmlld2VyLXNjcm9sbGVyJyk7XHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBlbGVtLnNjcm9sbFRvKDAsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvIGJhY2tcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFjaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oaXN0b3J5IHx8IHRoaXMuaGlzdG9yeS5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIGxldCBuID0gdGhpcy5oaXN0b3J5KCkucG9wKCk7XHJcbiAgICB0aGlzLmdldENoYXB0ZXIobi5pZCwgbi5wb3NpdGlvbiArIDEpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJoZWxwdmlld2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBzdHlsZT1cImhlaWdodDo2cHhcIj5cclxuICAgIEBpZiAoYnVzeSgpKSB7XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciB6LWluZGV4PVwiMTFcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctbWVudVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTW9zdHJhIG1lbnVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgaW5kaWNlJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSW5kZXhQYW5lKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPkd1aWRhPC9oMj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwcHhcIiBmeExheW91dEFsaWduPVwiZW5kXCIgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICBAaWYgKGNhbkdvQmFjaygpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiSW5kaWV0cm9cIiAoY2xpY2spPVwiYmFjaygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkNoaXVkaVwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gXHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBpZD1cImhlbHB2aWV3ZXItc2Nyb2xsYWJsZVwiPlxyXG4gIDxtYXQtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImZpbGxcIj5cclxuICAgIDxtYXQtZHJhd2VyICNpbmRleFBhbmUgbW9kZT1cInNpZGVcIiBbYXV0b0ZvY3VzXT1cImZhbHNlXCIgY2xhc3M9XCJkcmF3ZXItc21hbGwgZHJhd2VyLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwidHJlZURhdGFcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIiBjbGFzcz1cInRyZWUgXCIgc3R5bGU9XCJtYXgtd2lkdGg6MzEwcHhcIj5cclxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVRvZ2dsZSBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZSB0cmVlLW5vZGUtc3R5bGVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJnZXRDaGFwdGVyKG5vZGUuaWQpO1wiIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGluZGV4Tm9kZSAmJiBpbmRleE5vZGUuaWQgPT09IG5vZGUuaWR9XCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCBjbGFzcz1cInNtYWxsIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj57e25vZGUubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmcgW21hdFRyZWVOb2RlUGFkZGluZ0luZGVudF09XCIyMFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZSB0cmVlLW5vZGUtc3R5bGVcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGluZGV4Tm9kZSAmJiBpbmRleE5vZGUuaWQgPT09IG5vZGUuaWQgfVwiIChjbGljayk9XCJnZXRDaGFwdGVyKG5vZGUuaWQpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCBjbGFzcz1cInNtYWxsIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQXByaS9jaGl1ZGkgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCd9fVxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPnt7bm9kZS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgPC9tYXQtdHJlZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMCAyNHB4O1wiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxsXCIgaWQ9XCJoZWxwdmlld2VyLXNjcm9sbGVyXCIgKGNsaWNrKT1cImdvdG9DaGFwdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgW2lubmVySHRtbF09XCIocGFnZSgpID8/ICcnKSB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
74
74
  providedIn: 'root'
75
75
  }]
76
76
  }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvc2VydmljZXMvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBTXRGLE1BQU0sT0FBTyxXQUFXO0lBSHhCO1FBS1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQTBFL0M7SUF2RUM7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxRQUFnQixJQUFJO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVO1lBQ2IsZ0JBQWdCO1lBQ2hCLEVBQUU7WUFDRixVQUFVO1lBQ1YsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLEdBQUcsRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksQ0FBQyxLQUFhLEdBQUc7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDM0MsU0FBUyxFQUFFLE9BQU87WUFDbEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxFQUFFO2FBQ1A7WUFDRCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1RVUsV0FBVztrSEFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBBcGlSZXN1bHQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIZWxwVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9oZWxwLXZpZXdlci9oZWxwLXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFwdGVyLCBDaGFwdGVyQmFnLCBDaGFwdGVyVHJlZSB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBTZXJ2aWNlIHtcclxuICBcclxuICBwcml2YXRlIGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7IFxyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIHNlcnZpY2VVcmk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBoZWxwIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gc2VydmljZVVyaSA6IHRoZSBzZXJ2aWNlIHVyaVxyXG4gICAqL1xyXG4gIGluaXRpYWxpemUoc2VydmljZVVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlcnZpY2VVcmkgPSBzZXJ2aWNlVXJpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYW4gaGVscCBjaGFwdGVyXHJcbiAgICogQHBhcmFtIGlkIHRoZSBjaGFwdGVyIGlkXHJcbiAgICogQHBhcmFtIHF1ZXJ5IHRoZSBzZWFyY2ggcXVlcnlcclxuICAgKi9cclxuICBnZXRDaGFwdGVyKGlkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8Q2hhcHRlckJhZz4+KFxyXG4gICAgICB0aGlzLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICcvaGVscC9jaGFwdGVyLycgK1xyXG4gICAgICAgIGlkICtcclxuICAgICAgICAnLz9xdWVyeT0nICtcclxuICAgICAgICAocXVlcnkgPT0gbnVsbCA/ICcnIDogcXVlcnkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYW4gaGVscCBjaGFwYXRlciBpbmZvXHJcbiAgICogQHBhcmFtIGlkIHRoZSBjaGFwdGVyIGlkXHJcbiAgICovXHJcbiAgZ2V0Q2hhcHRlckluZm8oaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PENoYXB0ZXI+PihcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9oZWxwL2NoYXB0ZXIvaW5mby8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhIHJlcG9zaXRvcnkgaXRlbVxyXG4gICAqIEBwYXJhbSBpZCB0aGUgZmlsZSBpZFxyXG4gICAqL1xyXG4gIGdldFJlcG8oaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2hlbHAvcmVwby8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhbiBoZWxwIHRvY1xyXG4gICAqL1xyXG4gIGdldFRvYygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDaGFwdGVyVHJlZT4+KFxyXG4gICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2hlbHAvdG9jJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGhlbHAgdmlld2VyXHJcbiAgICovXHJcbiAgc2hvdyhpZDogc3RyaW5nID0gJzEnKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihIZWxwVmlld2VyQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2d1aWRhJyxcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IGlkXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzExMDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvc2VydmljZXMvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0saURBQWlELENBQUM7O0FBTWpHLE1BQU0sT0FBTyxXQUFXO0lBSHhCO1FBS1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQTBFL0M7SUF2RUM7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxRQUFnQixJQUFJO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVO1lBQ2IsZ0JBQWdCO1lBQ2hCLEVBQUU7WUFDRixVQUFVO1lBQ1YsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLEdBQUcsRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksQ0FBQyxLQUFhLEdBQUc7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDM0MsU0FBUyxFQUFFLE9BQU87WUFDbEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxFQUFFO2FBQ1A7WUFDRCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1RVUsV0FBVztrSEFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBBcGlSZXN1bHQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIZWxwVmlld2VyQ29tcG9uZW50LCBJbmRleEluZm8gfSBmcm9tICcuLi9jb21wb25lbnRzL2hlbHAtdmlld2VyL2hlbHAtdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXB0ZXIsIENoYXB0ZXJCYWcgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwU2VydmljZSB7XHJcbiAgXHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpOyBcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlVXJpOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgaGVscCBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHNlcnZpY2VVcmkgOiB0aGUgc2VydmljZSB1cmlcclxuICAgKi9cclxuICBpbml0aWFsaXplKHNlcnZpY2VVcmk6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFuIGhlbHAgY2hhcHRlclxyXG4gICAqIEBwYXJhbSBpZCB0aGUgY2hhcHRlciBpZFxyXG4gICAqIEBwYXJhbSBxdWVyeSB0aGUgc2VhcmNoIHF1ZXJ5XHJcbiAgICovXHJcbiAgZ2V0Q2hhcHRlcihpZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PENoYXB0ZXJCYWc+PihcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJpICtcclxuICAgICAgICAnL2hlbHAvY2hhcHRlci8nICtcclxuICAgICAgICBpZCArXHJcbiAgICAgICAgJy8/cXVlcnk9JyArXHJcbiAgICAgICAgKHF1ZXJ5ID09IG51bGwgPyAnJyA6IHF1ZXJ5KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFuIGhlbHAgY2hhcGF0ZXIgaW5mb1xyXG4gICAqIEBwYXJhbSBpZCB0aGUgY2hhcHRlciBpZFxyXG4gICAqL1xyXG4gIGdldENoYXB0ZXJJbmZvKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDaGFwdGVyPj4oXHJcbiAgICAgIHRoaXMuc2VydmljZVVyaSArICcvaGVscC9jaGFwdGVyL2luZm8vJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYSByZXBvc2l0b3J5IGl0ZW1cclxuICAgKiBAcGFyYW0gaWQgdGhlIGZpbGUgaWRcclxuICAgKi9cclxuICBnZXRSZXBvKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9oZWxwL3JlcG8vJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYW4gaGVscCB0b2NcclxuICAgKi9cclxuICBnZXRUb2MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8SW5kZXhJbmZvPj4oXHJcbiAgICAgIHRoaXMuc2VydmljZVVyaSArICcvaGVscC90b2MnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gaGVscCB2aWV3ZXJcclxuICAgKi9cclxuICBzaG93KGlkOiBzdHJpbmcgPSAnMScpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEhlbHBWaWV3ZXJDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnZ3VpZGEnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpZDogaWRcclxuICAgICAgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTEwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICBoZWlnaHQ6ICc5OSUnXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -12,7 +12,7 @@ export class SupportAuthInterceptor {
12
12
  if (request.url.startsWith(this.supportService.serviceUri)) {
13
13
  request = request.clone({ withCredentials: true });
14
14
  return next.handle(this.addTokenToRequest(request))
15
- .pipe(catchError((err) => {
15
+ .pipe(catchError(err => {
16
16
  // Get the message
17
17
  let message = err.error?.message || err.message || "Impossibile eseguire l'operazione richiesta.";
18
18
  let invalidSession = err.status === 401;
@@ -74,4 +74,4 @@ export class SupportAuthInterceptor {
74
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SupportAuthInterceptor, decorators: [{
75
75
  type: Injectable
76
76
  }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LmNvbW1vbi9jb21tb24vaW50ZXJjZXB0b3JzL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHMUQsTUFBTSxPQUFPLHNCQUFzQjtJQURuQztRQUdVLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBdUUvQztJQXJFQyxTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNoRCxJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3RCLGtCQUFrQjtnQkFDbEIsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSw4Q0FBOEMsQ0FBQztnQkFDbEcsSUFBSSxjQUFjLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7Z0JBQ3hDLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQixLQUFLLENBQUMsQ0FBQztvQkFDUCxLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLEdBQUc7d0JBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLGNBQWM7d0JBQzlCLE1BQU07b0JBQ1IsS0FBSyxHQUFHO3dCQUNOLE9BQU8sR0FBRywwRUFBMEUsQ0FBQzt3QkFDckYsTUFBTTtvQkFDUjt3QkFDRSxPQUFPLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQzt3QkFDakUsTUFBTTtnQkFDVixDQUFDO2dCQUNELGtCQUFrQjtnQkFDbEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTs0QkFDckksSUFBSSxjQUFjLEVBQUUsQ0FBQztnQ0FDbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7b0NBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7Z0NBQzlCLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0Q7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUNyQixPQUF5QixFQUN6QixRQUFnQixJQUFJO1FBRXRCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLO2dCQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25ELElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNuQixVQUFVLEVBQUU7d0JBQ1YsYUFBYSxFQUFFLFNBQVMsR0FBRyxLQUFLO3dCQUNoQyxhQUFhLEVBQUUsYUFBYTtxQkFDN0I7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQXhFVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3VwcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcblxyXG4gIHByaXZhdGUgc3VwcG9ydFNlcnZpY2UgPSBpbmplY3QoU3VwcG9ydFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuXHJcbiAgaW50ZXJjZXB0KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXHJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4geyAgICBcclxuICAgIGlmIChyZXF1ZXN0LnVybC5zdGFydHNXaXRoKHRoaXMuc3VwcG9ydFNlcnZpY2Uuc2VydmljZVVyaSkpIHtcclxuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSk7XHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuVG9SZXF1ZXN0KHJlcXVlc3QpKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy8gR2V0IHRoZSBtZXNzYWdlXHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gZXJyLmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlIHx8IFwiSW1wb3NzaWJpbGUgZXNlZ3VpcmUgbCdvcGVyYXppb25lIHJpY2hpZXN0YS5cIjtcclxuICAgICAgICAgICAgbGV0IGludmFsaWRTZXNzaW9uID0gZXJyLnN0YXR1cyA9PT0gNDAxO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGVyci5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgY2FzZSA1MDA6XHJcbiAgICAgICAgICAgICAgY2FzZSA1MDI6XHJcbiAgICAgICAgICAgICAgY2FzZSA1MDM6XHJcbiAgICAgICAgICAgICAgY2FzZSA1MDQ6XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbnVsbDsgLy8gTm8gbWVzc2FnZXNcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgNDAzOlxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiPHA+Tm9uIGhhaSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgZXNlZ3VpcmUgbCdvcGVyYXppb25lIHJpY2hpZXN0YS48L3A+XCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICc8cD4nICsgbWVzc2FnZS5yZXBsYWNlQWxsKCdcXHJcXG4nLCAnPC9wPjxwPicpICsgJzwvcD4nO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRGlzcGxheSBtZXNzYWdlXHJcbiAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ0Vycm9yZSBpbiBBUlMgU3VwcG9ydCcsICdPaycsIDUwMCwgaW52YWxpZFNlc3Npb24gPyA1MDAwIDogbnVsbCkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaW52YWxpZFNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbigpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9LCAyNTApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICB9IFxyXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpOyAgICBcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdG9rZW4gdG8gcmVxdWVzdFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0IDogdGhlIHJlcXVlc3RcclxuICAgKiBAcGFyYW0gdG9rZW46IHRoZSB0b2tlbiBvciBudWxsIHRvIHVzZSBjdXJyZTNudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkVG9rZW5Ub1JlcXVlc3QoXHJcbiAgICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICAgIHRva2VuOiBzdHJpbmcgPSBudWxsXHJcbiAgICApOiBIdHRwUmVxdWVzdDxhbnk+IHtcclxuICAgIGlmIChyZXF1ZXN0LnVybC5zdGFydHNXaXRoKHRoaXMuc3VwcG9ydFNlcnZpY2Uuc2VydmljZVVyaSkpIHtcclxuICAgICAgaWYgKCF0b2tlbikgdG9rZW4gPSB0aGlzLnN1cHBvcnRTZXJ2aWNlLmdldFRva2VuKCk7XHJcbiAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgICAgIHNldEhlYWRlcnM6IHtcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXHJcbiAgICAgICAgICAgICduZ3N3LWJ5cGFzcyc6ICduZ3N3LWJ5cGFzcydcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbn1cclxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LmNvbW1vbi9jb21tb24vaW50ZXJjZXB0b3JzL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHMUQsTUFBTSxPQUFPLHNCQUFzQjtJQURuQztRQUdVLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBdUUvQztJQXJFQyxTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNoRCxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNmLGtCQUFrQjtnQkFDbEIsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSw4Q0FBOEMsQ0FBQztnQkFDbEcsSUFBSSxjQUFjLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7Z0JBQ3hDLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQixLQUFLLENBQUMsQ0FBQztvQkFDUCxLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLEdBQUc7d0JBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLGNBQWM7d0JBQzlCLE1BQU07b0JBQ1IsS0FBSyxHQUFHO3dCQUNOLE9BQU8sR0FBRywwRUFBMEUsQ0FBQzt3QkFDckYsTUFBTTtvQkFDUjt3QkFDRSxPQUFPLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQzt3QkFDakUsTUFBTTtnQkFDVixDQUFDO2dCQUNELGtCQUFrQjtnQkFDbEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTs0QkFDckksSUFBSSxjQUFjLEVBQUUsQ0FBQztnQ0FDbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7b0NBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7Z0NBQzlCLENBQUM7NEJBQ0gsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0Q7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUNyQixPQUF5QixFQUN6QixRQUFnQixJQUFJO1FBRXRCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLO2dCQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25ELElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNuQixVQUFVLEVBQUU7d0JBQ1YsYUFBYSxFQUFFLFNBQVMsR0FBRyxLQUFLO3dCQUNoQyxhQUFhLEVBQUUsYUFBYTtxQkFDN0I7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQXhFVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3VwcG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcblxyXG4gIHByaXZhdGUgc3VwcG9ydFNlcnZpY2UgPSBpbmplY3QoU3VwcG9ydFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuXHJcbiAgaW50ZXJjZXB0KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXHJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4geyAgICBcclxuICAgIGlmIChyZXF1ZXN0LnVybC5zdGFydHNXaXRoKHRoaXMuc3VwcG9ydFNlcnZpY2Uuc2VydmljZVVyaSkpIHtcclxuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSk7XHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuVG9SZXF1ZXN0KHJlcXVlc3QpKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG1lc3NhZ2VcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgXCJJbXBvc3NpYmlsZSBlc2VndWlyZSBsJ29wZXJhemlvbmUgcmljaGllc3RhLlwiO1xyXG4gICAgICAgICAgICBsZXQgaW52YWxpZFNlc3Npb24gPSBlcnIuc3RhdHVzID09PSA0MDE7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZXJyLnN0YXR1cykge1xyXG4gICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICBjYXNlIDUwMDpcclxuICAgICAgICAgICAgICBjYXNlIDUwMjpcclxuICAgICAgICAgICAgICBjYXNlIDUwMzpcclxuICAgICAgICAgICAgICBjYXNlIDUwNDpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBudWxsOyAvLyBObyBtZXNzYWdlc1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCI8cD5Ob24gaGFpIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBlc2VndWlyZSBsJ29wZXJhemlvbmUgcmljaGllc3RhLjwvcD5cIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gJzxwPicgKyBtZXNzYWdlLnJlcGxhY2VBbGwoJ1xcclxcbicsICc8L3A+PHA+JykgKyAnPC9wPic7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBEaXNwbGF5IG1lc3NhZ2VcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihtZXNzYWdlLCBudWxsLCAnRXJyb3JlIGluIEFSUyBTdXBwb3J0JywgJ09rJywgNTAwLCBpbnZhbGlkU2Vzc2lvbiA/IDUwMDAgOiBudWxsKS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkU2Vzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1cHBvcnRTZXJ2aWNlLmxvZ2dlZEluKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0sIDI1MCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgIH0gXHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7ICAgIFxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0b2tlbiB0byByZXF1ZXN0XHJcbiAgICogQHBhcmFtIHJlcXVlc3QgOiB0aGUgcmVxdWVzdFxyXG4gICAqIEBwYXJhbSB0b2tlbjogdGhlIHRva2VuIG9yIG51bGwgdG8gdXNlIGN1cnJlM250XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRUb2tlblRvUmVxdWVzdChcclxuICAgICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgICAgdG9rZW46IHN0cmluZyA9IG51bGxcclxuICAgICk6IEh0dHBSZXF1ZXN0PGFueT4ge1xyXG4gICAgaWYgKHJlcXVlc3QudXJsLnN0YXJ0c1dpdGgodGhpcy5zdXBwb3J0U2VydmljZS5zZXJ2aWNlVXJpKSkge1xyXG4gICAgICBpZiAoIXRva2VuKSB0b2tlbiA9IHRoaXMuc3VwcG9ydFNlcnZpY2UuZ2V0VG9rZW4oKTtcclxuICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyB0b2tlbixcclxuICAgICAgICAgICAgJ25nc3ctYnlwYXNzJzogJ25nc3ctYnlwYXNzJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -57,7 +57,7 @@ export class SupportNotificationsBrowserComponent {
57
57
  // React to message broadcasting
58
58
  this.broadcastService.getMessage()
59
59
  .pipe(takeUntil(this.unsubscribe))
60
- .subscribe((message) => {
60
+ .subscribe(message => {
61
61
  if (message.id === SupportMessages.NOTIFICATION_READ) {
62
62
  const item = SystemUtils.arrayFindByKey(this.items(), 'id', message.data);
63
63
  if (item) {
@@ -262,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
262
262
  type: ViewChild,
263
263
  args: ['contextMenuTrigger']
264
264
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LnVpL3VpL25vdGlmaWNhdGlvbnMtYnJvd3Nlci9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQudWkvdWkvbm90aWZpY2F0aW9ucy1icm93c2VyL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBa0IsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQWdC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QWlCLCtXQUFFLGdCQUFnQiwySEFBRSxrQkFBa0IsZ1NBQUUsVUFBVTs7MkZBRTFELG9DQUFvQztrQkFWaEQsU0FBUzsyQkFDRixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjO3dCQUMzRixhQUFhLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQjt3QkFDakksaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLDRCQUE0QixDQUFDOzhCQUs1RSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1csV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBpbmplY3QsXHJcbiAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciwgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlLCBGb3JtYXRQaXBlLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU3VwcG9ydE1lc3NhZ2VzLCBTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFBhcmFtcywgU3VwcG9ydFNlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaWFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1cHBvcnROb3RpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW0ZsZXhMYXlvdXRNb2R1bGUsIE1hdERpYWxvZ1RpdGxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdERpYWxvZ0Nsb3NlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdEJhZGdlTW9kdWxlLCBNYXREaXZpZGVyTW9kdWxlLCBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdFBhZ2luYXRvck1vZHVsZSwgRm9ybWF0UGlwZSwgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnROb3RpZmljYXRpb25zQnJvd3NlckNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVUcmlnZ2VyJykgY29udGV4dE1lbnUhOiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcblxyXG4gIHByb3RlY3RlZCBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc3VwcG9ydFNlcnZpY2UgPSBpbmplY3QoU3VwcG9ydFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbjogU2VsZWN0YWJsZU1vZGVsPGFueSwgbnVtYmVyPiA9IG5ldyBTZWxlY3RhYmxlTW9kZWw8YW55LCBudW1iZXI+KHRydWUsICdpZCcpO1xyXG4gIHByb3RlY3RlZCBzZWFyY2hQYXJhbXM6IFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zID0ge1xyXG4gICAgZmlyc3Q6IDAsXHJcbiAgICBjb3VudDogMjVcclxuICB9O1xyXG4gIHByb3RlY3RlZCB0b3RhbCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcclxuICBwcm90ZWN0ZWQgaXRlbXMgPSBzaWduYWw8YW55PihudWxsKTtcclxuICBwcm90ZWN0ZWQgY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogJzBweCcsIHk6ICcwcHgnIH07XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSwgZGVib3VuY2VUaW1lKDI1MCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIG1lc3NhZ2UgYnJvYWRjYXN0aW5nXHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuZ2V0TWVzc2FnZSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IFN1cHBvcnRNZXNzYWdlcy5OT1RJRklDQVRJT05fUkVBRCkge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5PGFueT4oXHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMoKSxcclxuICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgbWVzc2FnZS5kYXRhXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmZpbmQoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNpemUgZGlhbG9nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWZpY2F0aW9ucy1icm93c2VyLXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1maXhlZCddLFxyXG4gICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGVpZ2h0ICE9IGVsZW0uY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnUubWVudURhdGEgPSB7IGl0ZW06IGl0ZW0gfTtcclxuICAgIHRoaXMuY29udGV4dE1lbnUub3Blbk1lbnUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBzY3JvbGxcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVNjcm9sbCgpIHtcclxuICAgIC8vIFNjcm9sbCB0byB0b3BcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxlcicpO1xyXG4gICAgaWYgKGVsZW0pIGVsZW0ucGFyZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgIHRoaXMuaXRlbXMoKT8uZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uaXNNZW51T3BlbiA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICAqIEdldCBhbGwgc2VsZWN0ZWQgaWRzXHJcbiAgICAgKiBAcmV0dXJuczogdGhlIHNlbGVjdGVkIGlkcyBhcyBhbiBhcnJheVxyXG4gICAgICovXHJcbiAgcHJpdmF0ZSBnZXRTZWxldGVjdElkcygpOiBudW1iZXJbXSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uYWxsPy5sZW5ndGggPiA1MCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0xhIHNlbGV6aW9uZSBub24gcHXDsiBjb250ZW5lcmUgcGnDuSBkaSA1MCBlbGVtZW50aS4nKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgaWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uLmFsbD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5hbGw/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgIGlkcy5wdXNoKG4uaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBpZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuKiBSZXR1cm4gaXRlbSBzdGF0ZSBjc3MgY2xhc3NcclxuKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiovXHJcbiAgcHJvdGVjdGVkIGdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCFpdGVtLmlzUmVhZCkgcmV0dXJuICd1bnJlYWQtYmcnO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGl0ZW0gc3RhdGUgdG9vbHRpcCB0ZXh0XHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWl0ZW0uaXNSZWFkKSByZXR1cm4gJ05vbiBsZXR0byc7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGEgbmV3IHNlYXJjaFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmaW5kKCkge1xyXG4gICAgdGhpcy5zZWFyY2hQYXJhbXMuZmlyc3QgPSAwO1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZldGNoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaCgpIHtcclxuICAgIGlmICghdGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbigpKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSgnQ2FyaWNhbWVudG8gaW4gY29yc28uLi4nKTtcclxuICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UucXVlcnlOb3RpZmljYXRpb25zKHRoaXMuc2VhcmNoUGFyYW1zKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHIudmFsdWU/Lml0ZW1zID8/IFtdKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbC5zZXQoci52YWx1ZT8udG90YWwgPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGEgbmV3IHBhZ2UgcmVzdWx0XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgTWF0UGFnaW5hdG9yIFBhZ2VFdmVudCBkYXRhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZldGNoTW9yZShlOiBhbnkpIHtcclxuICAgIGxldCBmaXJzdCA9IGUucGFnZUluZGV4ICogdGhpcy5zZWFyY2hQYXJhbXMuY291bnQ7XHJcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy5maXJzdCA9IGZpcnN0O1xyXG4gICAgdGhpcy5mZXRjaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcmsgYSBub3RpZmljYXRpb24gYXMgcmVhZCBvciB1bnJlYWRcclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNldCBvciBudWxsIHRvIHVzZSBzZWxlY3Rpb25cclxuICAgKiBAcGFyYW0gdW5tYXJrIDogdHJ1ZSB0byBzZXQgYXMgdW5yZWFkIG9yIGZhbHNlIHRvIHNldCBhcyByZWFkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1hcmsoaXRlbTogYW55ID0gbnVsbCwgdW5tYXJrOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbigpKSByZXR1cm47XHJcbiAgICBpZiAoIWl0ZW0gJiYgIXRoaXMuc2VsZWN0aW9uLmFsbD8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBpZHM6IG51bWJlcltdID0gaXRlbSA/IFtpdGVtLmlkXSA6IHRoaXMuZ2V0U2VsZXRlY3RJZHMoKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdBZ2dpb3JuYW1lbnRvIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLm1hcmtOb3RpZmljYXRpb25zKHtcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICAgIHVubWFyazogdW5tYXJrXHJcbiAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcygpW2ldLmlzUmVhZCA9ICF1bm1hcms7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zdXBwb3J0U2VydmljZS5jb3VudFVucmVhZE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGRpc3BsYXlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvdyhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFN1cHBvcnROb3RpZmljYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAndmlzdWFsaXp6YSBub3RpZmljYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBpZDogaXRlbS5pZCB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc5MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1oZWFkZXJcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsID5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+Tm92aXTDoCBlIGluZm9ybWF6aW9uaTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4RmlsbCBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjIwMHB4XCIgZnhGbGV4QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoyMDBweFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0ICNzZWFyY2hJbnB1dD1cIm1hdElucHV0XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFBhcmFtcy5hbnlcIiBtYXhsZW5ndGg9XCIyMDBcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiZmluZCgpXCIgYXV0b2ZvY3VzIHBsYWNlaG9sZGVyPVwiSW5zZXJpc2NpIHRlc3RvICsgSU5WSU8uLi5cIiAvPlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hQYXJhbXMuYW55KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hQYXJhbXMuYW55ID0gJydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgQGlmIChzZWxlY3Rpb24uaGFzVmFsdWUoKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiQXppb25pIGRhIGVzZWd1aXJlIHN1Z2xpIGVsZW1lbnRpIHNlbGV6aW9uYXRpXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pIHBlciBlbGVtZW50aSBzZWxlemlvbmF0aSdcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVNlbGVjdGlvbnNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbbWF0QmFkZ2VdPVwic2VsZWN0aW9uLmFsbC5sZW5ndGhcIj5jaGVja2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVTZWxlY3Rpb25zPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNlbGVjdGlvbi5jbGVhcigpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVzZWxlemlvbmEgdHV0dGknXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5EZXNlbGV6aW9uYSB0dXR0aVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGxlZ2dlcmUnXCIgKGNsaWNrKT1cIm1hcmsobnVsbCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+b3V0bGluZWRfZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBkYSBsZWdnZXJlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBnacOgIGxldHRvJ1wiIChjbGljayk9XCJtYXJrKG51bGwpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlXCI+XHJcbiAgPGRpdiBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxlclwiPlxyXG4gICAgQGlmICh0b3RhbCgpID09PSAwKSB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48aT5OZXNzdW4gZWxlbWVudG8gZGEgdmlzdWFsaXp6YXJlLjwvaT48L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICA8ZGl2IChtb3VzZWVudGVyKT1cIml0ZW0uaXNPdmVyID0gdHJ1ZTtcIiAobW91c2VsZWF2ZSk9XCJpdGVtLmlzT3ZlciA9IGZhbHNlXCJcclxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNnB4XCIgZnhGaWxsIFtuZ0NsYXNzXT1cInsnbmV3cy1zZWxlY3RlZCc6IHNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0uaWQpLCBcclxuICAgICAgICAgICduZXdzLXJlYWQnOiBpdGVtLmlzUmVhZH1cIj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNnB4XCIgW25nQ2xhc3NdPVwiZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbSlcIiBbbWF0VG9vbHRpcF09XCJnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW0pXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNDhweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKHNjcmVlblNlcnZpY2UuaXNUb3VjaGFibGUgfHwgaXRlbS5pc092ZXIgfHwgc2VsZWN0aW9uLmlzU2VsZWN0ZWQoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUoaXRlbSwgaXRlbS5pZCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtLmlkKVwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIChjbGljayk9XCJzaG93KGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tMSB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICB7eyAoaXRlbS5wdWJsaXNoaW5nRGF0ZSA/PyBpdGVtLmNyZWF0ZWQpIHwgZm9ybWF0OidEJzonZGQvTU0veXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2Pnt7aXRlbS50aXRsZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTIgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAge3tpdGVtLnByb2R1Y3ROYW1lc319XHJcbiAgICAgICAgICAgICAgQGlmIChpdGVtLnByb2R1Y3RNb2R1bGVzTmFtZXMpIHtcclxuICAgICAgICAgICAgICA8c3Bhbj4gfCB7e2l0ZW0ucHJvZHVjdE1vZHVsZXNOYW1lc319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNTBweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEBpZiAoaXRlbS5pc092ZXIgfHwgaXRlbS5pc01lbnVPcGVuIHx8IHNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTWVudVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSdcIlxyXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiIFttYXRNZW51VHJpZ2dlckRhdGFdPVwie2l0ZW06IGl0ZW19XCIgKGNsaWNrKT1cIml0ZW0uaXNNZW51T3BlbiA9IHRydWVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2ICNjb250ZXh0TWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIHN0eWxlPVwicG9zaXRpb246IGZpeGVkXCIgW3N0eWxlLmxlZnRdPVwiY29udGV4dE1lbnVQb3NpdGlvbi54XCJcclxuICAgICAgICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1tZW51ICNjb250ZXh0TWVudT1cIm1hdE1lbnVcIiAoY2xvc2VkKT1cInVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgQGlmIChpdGVtLmlzUmVhZCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZGEgbGVnZ2VyZSdcIiAoY2xpY2spPVwibWFyayhpdGVtLCB0cnVlKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBkYSBsZWdnZXJlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoIWl0ZW0uaXNSZWFkKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBkYSBnacOgIGxldHRvJ1wiIChjbGljayk9XCJtYXJrKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5vdXRsaW5lZF9mbGFnPC9tYXQtaWNvbj5TZWduYSBjb21lIGdpw6AgbGV0dG9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwibm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIiBmeEZpbGw+XHJcbiAgICA8IS0tIGxlZ2VuZCAtLT5cclxuICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiMTAwXCIgY2xhc3M9XCJsZWdlbmQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgdW5yZWFkLWJnXCI+PC9kaXY+XHJcbiAgICAgIGRhIGxlZ2dlcmVcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXgubHQtbWQ9XCIxMDBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCIgW2xlbmd0aF09XCJ0b3RhbCgpXCIgW3BhZ2VTaXplXT1cInNlYXJjaFBhcmFtcy5jb3VudFwiXHJcbiAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIiAocGFnZSk9XCJmZXRjaE1vcmUoJGV2ZW50KVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LnVpL3VpL25vdGlmaWNhdGlvbnMtYnJvd3Nlci9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQudWkvdWkvbm90aWZpY2F0aW9ucy1icm93c2VyL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBa0IsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQWdC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V0FBRSxnQkFBZ0IsMkhBQUUsa0JBQWtCLGdTQUFFLFVBQVU7OzJGQUUxRCxvQ0FBb0M7a0JBVmhELFNBQVM7MkJBQ0YsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFFLGNBR2hDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYzt3QkFDM0YsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7d0JBQ2pJLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSw0QkFBNEIsQ0FBQzs4QkFLNUUsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNXLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCwgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nVGl0bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSwgRm9ybWF0UGlwZSwgU2NyZWVuU2VydmljZSwgU2VsZWN0YWJsZU1vZGVsLCBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IFN1cHBvcnRNZXNzYWdlcywgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMsIFN1cHBvcnRTZXJ2aWNlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9zdXBwb3J0LmNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgRGlhbG9nU2VydmljZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBmcm9tRXZlbnQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdXBwb3J0Tm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtGbGV4TGF5b3V0TW9kdWxlLCBNYXREaWFsb2dUaXRsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXREaWFsb2dDbG9zZSxcclxuICAgIE1hdEljb25Nb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRCYWRnZU1vZHVsZSwgTWF0RGl2aWRlck1vZHVsZSwgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLCBNYXREaWFsb2dBY3Rpb25zLCBNYXRQYWdpbmF0b3JNb2R1bGUsIEZvcm1hdFBpcGUsIFN1cHBvcnROb3RpZmljYXRpb25Db21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdXBwb3J0Tm90aWZpY2F0aW9uc0Jyb3dzZXJDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRleHRNZW51VHJpZ2dlcicpIGNvbnRleHRNZW51ITogTWF0TWVudVRyaWdnZXI7XHJcblxyXG5cclxuICBwcm90ZWN0ZWQgc2NyZWVuU2VydmljZSA9IGluamVjdChTY3JlZW5TZXJ2aWNlKTtcclxuICBwcml2YXRlIHN1cHBvcnRTZXJ2aWNlID0gaW5qZWN0KFN1cHBvcnRTZXJ2aWNlKTtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2UgPSBpbmplY3QoQnJvYWRjYXN0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCBzZWxlY3Rpb246IFNlbGVjdGFibGVNb2RlbDxhbnksIG51bWJlcj4gPSBuZXcgU2VsZWN0YWJsZU1vZGVsPGFueSwgbnVtYmVyPih0cnVlLCAnaWQnKTtcclxuICBwcm90ZWN0ZWQgc2VhcmNoUGFyYW1zOiBTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFBhcmFtcyA9IHtcclxuICAgIGZpcnN0OiAwLFxyXG4gICAgY291bnQ6IDI1XHJcbiAgfTtcclxuICBwcm90ZWN0ZWQgdG90YWwgPSBzaWduYWw8bnVtYmVyPigtMSk7XHJcbiAgcHJvdGVjdGVkIGl0ZW1zID0gc2lnbmFsPGFueT4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGNvbnRleHRNZW51UG9zaXRpb24gPSB7IHg6ICcwcHgnLCB5OiAnMHB4JyB9O1xyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBSZWFjdCB0byB3aW5kb3cgc2l6ZSBjaGFuZ2VcclxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSksIGRlYm91bmNlVGltZSgyNTApKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IFN1cHBvcnRNZXNzYWdlcy5OT1RJRklDQVRJT05fUkVBRCkge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5PGFueT4oXHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMoKSxcclxuICAgICAgICAgICAgJ2lkJyxcclxuICAgICAgICAgICAgbWVzc2FnZS5kYXRhXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmZpbmQoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNpemUgZGlhbG9nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWZpY2F0aW9ucy1icm93c2VyLXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1maXhlZCddLFxyXG4gICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGVpZ2h0ICE9IGVsZW0uY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnUubWVudURhdGEgPSB7IGl0ZW06IGl0ZW0gfTtcclxuICAgIHRoaXMuY29udGV4dE1lbnUub3Blbk1lbnUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBzY3JvbGxcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVNjcm9sbCgpIHtcclxuICAgIC8vIFNjcm9sbCB0byB0b3BcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxlcicpO1xyXG4gICAgaWYgKGVsZW0pIGVsZW0ucGFyZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgIHRoaXMuaXRlbXMoKT8uZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uaXNNZW51T3BlbiA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICAqIEdldCBhbGwgc2VsZWN0ZWQgaWRzXHJcbiAgICAgKiBAcmV0dXJuczogdGhlIHNlbGVjdGVkIGlkcyBhcyBhbiBhcnJheVxyXG4gICAgICovXHJcbiAgcHJpdmF0ZSBnZXRTZWxldGVjdElkcygpOiBudW1iZXJbXSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24uYWxsPy5sZW5ndGggPiA1MCkge1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0xhIHNlbGV6aW9uZSBub24gcHXDsiBjb250ZW5lcmUgcGnDuSBkaSA1MCBlbGVtZW50aS4nKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgaWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uLmFsbD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5hbGw/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgIGlkcy5wdXNoKG4uaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBpZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuKiBSZXR1cm4gaXRlbSBzdGF0ZSBjc3MgY2xhc3NcclxuKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiovXHJcbiAgcHJvdGVjdGVkIGdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCFpdGVtLmlzUmVhZCkgcmV0dXJuICd1bnJlYWQtYmcnO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGl0ZW0gc3RhdGUgdG9vbHRpcCB0ZXh0XHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWl0ZW0uaXNSZWFkKSByZXR1cm4gJ05vbiBsZXR0byc7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGEgbmV3IHNlYXJjaFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmaW5kKCkge1xyXG4gICAgdGhpcy5zZWFyY2hQYXJhbXMuZmlyc3QgPSAwO1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZldGNoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBkYXRhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaCgpIHtcclxuICAgIGlmICghdGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbigpKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSgnQ2FyaWNhbWVudG8gaW4gY29yc28uLi4nKTtcclxuICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UucXVlcnlOb3RpZmljYXRpb25zKHRoaXMuc2VhcmNoUGFyYW1zKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHIudmFsdWU/Lml0ZW1zID8/IFtdKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbC5zZXQoci52YWx1ZT8udG90YWwgPz8gMCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGEgbmV3IHBhZ2UgcmVzdWx0XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgTWF0UGFnaW5hdG9yIFBhZ2VFdmVudCBkYXRhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZldGNoTW9yZShlOiBhbnkpIHtcclxuICAgIGxldCBmaXJzdCA9IGUucGFnZUluZGV4ICogdGhpcy5zZWFyY2hQYXJhbXMuY291bnQ7XHJcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy5maXJzdCA9IGZpcnN0O1xyXG4gICAgdGhpcy5mZXRjaCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcmsgYSBub3RpZmljYXRpb24gYXMgcmVhZCBvciB1bnJlYWRcclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNldCBvciBudWxsIHRvIHVzZSBzZWxlY3Rpb25cclxuICAgKiBAcGFyYW0gdW5tYXJrIDogdHJ1ZSB0byBzZXQgYXMgdW5yZWFkIG9yIGZhbHNlIHRvIHNldCBhcyByZWFkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG1hcmsoaXRlbTogYW55ID0gbnVsbCwgdW5tYXJrOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghdGhpcy5zdXBwb3J0U2VydmljZS5sb2dnZWRJbigpKSByZXR1cm47XHJcbiAgICBpZiAoIWl0ZW0gJiYgIXRoaXMuc2VsZWN0aW9uLmFsbD8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCBpZHM6IG51bWJlcltdID0gaXRlbSA/IFtpdGVtLmlkXSA6IHRoaXMuZ2V0U2VsZXRlY3RJZHMoKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdBZ2dpb3JuYW1lbnRvIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLm1hcmtOb3RpZmljYXRpb25zKHtcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICAgIHVubWFyazogdW5tYXJrXHJcbiAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcygpW2ldLmlzUmVhZCA9ICF1bm1hcms7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zdXBwb3J0U2VydmljZS5jb3VudFVucmVhZE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGRpc3BsYXlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvdyhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFN1cHBvcnROb3RpZmljYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAndmlzdWFsaXp6YSBub3RpZmljYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBpZDogaXRlbS5pZCB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc5MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1oZWFkZXJcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsID5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+Tm92aXTDoCBlIGluZm9ybWF6aW9uaTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4RmlsbCBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjIwMHB4XCIgZnhGbGV4QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoyMDBweFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0ICNzZWFyY2hJbnB1dD1cIm1hdElucHV0XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFBhcmFtcy5hbnlcIiBtYXhsZW5ndGg9XCIyMDBcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiZmluZCgpXCIgYXV0b2ZvY3VzIHBsYWNlaG9sZGVyPVwiSW5zZXJpc2NpIHRlc3RvICsgSU5WSU8uLi5cIiAvPlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hQYXJhbXMuYW55KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hQYXJhbXMuYW55ID0gJydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgQGlmIChzZWxlY3Rpb24uaGFzVmFsdWUoKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRUb29sdGlwPVwiQXppb25pIGRhIGVzZWd1aXJlIHN1Z2xpIGVsZW1lbnRpIHNlbGV6aW9uYXRpXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pIHBlciBlbGVtZW50aSBzZWxlemlvbmF0aSdcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVNlbGVjdGlvbnNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbbWF0QmFkZ2VdPVwic2VsZWN0aW9uLmFsbC5sZW5ndGhcIj5jaGVja2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVTZWxlY3Rpb25zPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNlbGVjdGlvbi5jbGVhcigpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVzZWxlemlvbmEgdHV0dGknXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5EZXNlbGV6aW9uYSB0dXR0aVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGxlZ2dlcmUnXCIgKGNsaWNrKT1cIm1hcmsobnVsbCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+b3V0bGluZWRfZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBkYSBsZWdnZXJlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBnacOgIGxldHRvJ1wiIChjbGljayk9XCJtYXJrKG51bGwpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlXCI+XHJcbiAgPGRpdiBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxlclwiPlxyXG4gICAgQGlmICh0b3RhbCgpID09PSAwKSB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48aT5OZXNzdW4gZWxlbWVudG8gZGEgdmlzdWFsaXp6YXJlLjwvaT48L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICA8ZGl2IChtb3VzZWVudGVyKT1cIml0ZW0uaXNPdmVyID0gdHJ1ZTtcIiAobW91c2VsZWF2ZSk9XCJpdGVtLmlzT3ZlciA9IGZhbHNlXCJcclxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNnB4XCIgZnhGaWxsIFtuZ0NsYXNzXT1cInsnbmV3cy1zZWxlY3RlZCc6IHNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0uaWQpLCBcclxuICAgICAgICAgICduZXdzLXJlYWQnOiBpdGVtLmlzUmVhZH1cIj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNnB4XCIgW25nQ2xhc3NdPVwiZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbSlcIiBbbWF0VG9vbHRpcF09XCJnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW0pXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNDhweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKHNjcmVlblNlcnZpY2UuaXNUb3VjaGFibGUgfHwgaXRlbS5pc092ZXIgfHwgc2VsZWN0aW9uLmlzU2VsZWN0ZWQoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUoaXRlbSwgaXRlbS5pZCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtLmlkKVwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIChjbGljayk9XCJzaG93KGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tMSB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICB7eyAoaXRlbS5wdWJsaXNoaW5nRGF0ZSA/PyBpdGVtLmNyZWF0ZWQpIHwgZm9ybWF0OidEJzonZGQvTU0veXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2Pnt7aXRlbS50aXRsZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTIgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAge3tpdGVtLnByb2R1Y3ROYW1lc319XHJcbiAgICAgICAgICAgICAgQGlmIChpdGVtLnByb2R1Y3RNb2R1bGVzTmFtZXMpIHtcclxuICAgICAgICAgICAgICA8c3Bhbj4gfCB7e2l0ZW0ucHJvZHVjdE1vZHVsZXNOYW1lc319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNTBweFwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEBpZiAoaXRlbS5pc092ZXIgfHwgaXRlbS5pc01lbnVPcGVuIHx8IHNlbGVjdGlvbi5pc1NlbGVjdGVkKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTWVudVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSdcIlxyXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiIFttYXRNZW51VHJpZ2dlckRhdGFdPVwie2l0ZW06IGl0ZW19XCIgKGNsaWNrKT1cIml0ZW0uaXNNZW51T3BlbiA9IHRydWVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2ICNjb250ZXh0TWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIHN0eWxlPVwicG9zaXRpb246IGZpeGVkXCIgW3N0eWxlLmxlZnRdPVwiY29udGV4dE1lbnVQb3NpdGlvbi54XCJcclxuICAgICAgICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1tZW51ICNjb250ZXh0TWVudT1cIm1hdE1lbnVcIiAoY2xvc2VkKT1cInVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAgQGlmIChpdGVtLmlzUmVhZCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NlZ25hIGNvbWUgZGEgbGVnZ2VyZSdcIiAoY2xpY2spPVwibWFyayhpdGVtLCB0cnVlKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBkYSBsZWdnZXJlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoIWl0ZW0uaXNSZWFkKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBkYSBnacOgIGxldHRvJ1wiIChjbGljayk9XCJtYXJrKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5vdXRsaW5lZF9mbGFnPC9tYXQtaWNvbj5TZWduYSBjb21lIGdpw6AgbGV0dG9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwibm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIiBmeEZpbGw+XHJcbiAgICA8IS0tIGxlZ2VuZCAtLT5cclxuICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiMTAwXCIgY2xhc3M9XCJsZWdlbmQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgdW5yZWFkLWJnXCI+PC9kaXY+XHJcbiAgICAgIGRhIGxlZ2dlcmVcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeEZsZXgubHQtbWQ9XCIxMDBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2hpZGVQYWdlU2l6ZV09XCJ0cnVlXCIgW2xlbmd0aF09XCJ0b3RhbCgpXCIgW3BhZ2VTaXplXT1cInNlYXJjaFBhcmFtcy5jb3VudFwiXHJcbiAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIiAocGFnZSk9XCJmZXRjaE1vcmUoJGV2ZW50KVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=