@testgorilla/tgo-ui 3.10.15 → 3.10.16

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 (55) hide show
  1. package/README.md +103 -103
  2. package/components/overflow-menu/overflow-menu.component.d.ts +17 -1
  3. package/esm2022/components/ai-feedback/ai-feedback.component.mjs +3 -3
  4. package/esm2022/components/ai-feedback/ai-feedback.model.mjs +1 -1
  5. package/esm2022/components/ai-feedback/ai-feedback.module.mjs +1 -1
  6. package/esm2022/components/alert-banner/alert-banner.component.mjs +1 -1
  7. package/esm2022/components/card/card.component.mjs +3 -3
  8. package/esm2022/components/checklist/checklist.component.mjs +3 -3
  9. package/esm2022/components/checklist/checklist.model.mjs +1 -1
  10. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  11. package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +1 -1
  12. package/esm2022/components/datepicker/datepicker.component.mjs +3 -3
  13. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  14. package/esm2022/components/dialog/dialog.model.mjs +1 -1
  15. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  16. package/esm2022/components/empty-state/empty-state.model.mjs +1 -1
  17. package/esm2022/components/field/field.component.mjs +1 -1
  18. package/esm2022/components/file-upload/file-upload.component.mjs +3 -3
  19. package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +3 -3
  20. package/esm2022/components/icon/icon.config.mjs +1 -1
  21. package/esm2022/components/icon-label/icon-label.component.mjs +1 -1
  22. package/esm2022/components/multi-input/multi-input.component.mjs +1 -1
  23. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +29 -9
  24. package/esm2022/components/progress-bar/progress-bar.component.mjs +1 -1
  25. package/esm2022/components/selectable-card/selectable-card.component.mjs +3 -3
  26. package/esm2022/components/selectable-card/selectable-card.component.module.mjs +1 -1
  27. package/esm2022/components/side-panel/side-panel.animations.mjs +1 -1
  28. package/esm2022/components/side-panel/side-panel.component.mjs +3 -3
  29. package/esm2022/components/side-panel/side-panel.model.mjs +1 -1
  30. package/esm2022/components/side-panel/side-panel.service.mjs +1 -1
  31. package/esm2022/pipes/ui-translate.pipe.mjs +1 -1
  32. package/esm2022/public-api.mjs +1 -1
  33. package/fesm2022/testgorilla-tgo-ui.mjs +41 -22
  34. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  35. package/package.json +1 -1
  36. package/projects/tgo-canopy-ui/assets/i18n/en.json +821 -821
  37. package/projects/tgo-canopy-ui/assets/icons/Switch-tab.svg +3 -3
  38. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-card-filled.svg +10 -10
  39. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-card-in-line.svg +10 -10
  40. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-filled.svg +3 -3
  41. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-in-line.svg +3 -3
  42. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invoice-filled.svg +3 -3
  43. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invoice-in-line.svg +3 -3
  44. package/projects/tgo-canopy-ui/assets/icons/rebrand/Messages-in-line.svg +3 -3
  45. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-in-new-filled.svg +3 -3
  46. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-in-new-in-line.svg +3 -3
  47. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-lock-filled.svg +3 -3
  48. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-lock-in-line.svg +3 -3
  49. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-tab-filled.svg +3 -3
  50. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-tab-in-line.svg +3 -3
  51. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-down-filled.svg +3 -3
  52. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-down-in-line.svg +3 -3
  53. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-up-filled.svg +3 -3
  54. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-up-in-line.svg +3 -3
  55. package/projects/tgo-canopy-ui/theme/_input.scss +575 -575
@@ -553,4 +553,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
553
553
  type: ViewChild,
554
554
  args: ['autosize']
555
555
  }] } });
556
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWVsZC9maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxRQUFRLEVBR1IsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWhFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBU3ZCLE1BQU0sT0FBTyxjQUFjO0lBeUZ6Qjs7Ozs7T0FLRztJQUNILElBQWEsTUFBTSxDQUFDLE1BQWdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQXdQRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENB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QkFBaEIsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsV0FBVztzQkFBbkIsS0FBSztnQkFVTixJQUFJO3NCQUZILFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBV04sZ0JBQWdCO3NCQUZmLFdBQVc7dUJBQUMsWUFBWTs7c0JBQ3hCLEtBQUs7Z0JBU0csU0FBUztzQkFBakIsS0FBSztnQkFRRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUUcsT0FBTztzQkFBZixLQUFLO2dCQVFHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRRyxHQUFHO3NCQUFYLEtBQUs7Z0JBUUcsR0FBRztzQkFBWCxLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQXNDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFMEMsS0FBSztzQkFBckQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN4QixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xyXG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgRGVzdHJveVJlZixcclxuICBEb0NoZWNrLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdCxcclxuICBpbnB1dCxcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBTZWxmLFxyXG4gIHNpZ25hbCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQ2RrVGV4dGFyZWFBdXRvc2l6ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9maWVsZC9maWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xyXG5pbXBvcnQgeyBCYWRnZVZhcmlhbnQgfSBmcm9tICcuLi9iYWRnZS9iYWRnZS5tb2RlbCc7XHJcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBBIGdsb2JhbCBjb3VudGVyIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGZpZWxkIElEcy5cclxuICogVGhpcyB2YXJpYWJsZSBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgYSBuZXcgZmllbGQgSUQgaXMgbmVlZGVkLlxyXG4gKlxyXG4gKiBAcmVtYXJrc1xyXG4gKiBUaGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIGVuc3VyZSB0aGF0IGVhY2ggZmllbGQgY29tcG9uZW50XHJcbiAqIGhhcyBhIHVuaXF1ZSBpZGVudGlmaWVyIHdpdGhpbiB0aGUgYXBwbGljYXRpb24gLyB1c2VmdWwgZm9yIHRoZWlyIEFyaWEgTGFiZWxzLlxyXG4gKi9cclxuZXhwb3J0IGxldCBmaWVsZElEID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrLCBBZnRlclZpZXdJbml0IHtcclxuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9ICd1aS1maWVsZCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRvciBvZiB0aGUgYXV0b2NvbXBsZXRlIHdpZHRoXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZ1bGwtd2lkdGgnKVxyXG4gIEBJbnB1dCgpXHJcbiAgZnVsbFdpZHRoID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBmaWVsZCBoZWlnaHRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnVsbC1oZWlnaHQnKVxyXG4gIEBJbnB1dCgpXHJcbiAgZnVsbEhlaWdodCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGZpZWxkIGxhYmVsXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsPyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGZpZWxkIGxhYmVsIGZyb20gaHRtbFxyXG4gICAqXHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbGFiZWxIdG1sID0gaW5wdXQobnVsbCwge1xyXG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpXHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gdG8gZGlzcGxheSBhbG9uZ3NpZGUgdGhlIGxhYmVsXHJcbiAgICpcclxuICAgKiBAdHlwZSB7SWNvbk5hbWV9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWxJY29uPzogSWNvbk5hbWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IG5hbWUgYXR0cmlidXRlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZpZWxkTmFtZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgcGxhY2Vob2xkZXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IGlkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlkID0gaW5wdXQoYGZpZWxkLSR7ZmllbGRJRCsrfWApO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCB2YWx1ZVxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBWYXJpYW50IG9mIGJhZGdlIHRvIHVzZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0JhZGdlVmFyaWFudH1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZVZhcmlhbnQ/OiBCYWRnZVZhcmlhbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIF9lcnJvcnM6IFNhZmVIdG1sW107XHJcbiAgLyoqXHJcbiAgICogSW5wdXQgZmllbGQgZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzPy5maWx0ZXIoQm9vbGVhbikubWFwKGVycm9yID0+IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yKSk7XHJcbiAgICB0aGlzLmVycm9yc0xlbmd0aCA9IHRoaXMuc2V0RXJyb3JzTGVuZ3RoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIGlmIGlucHV0IGlzIGRpc2FibGVkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgaXMgcmVxdWlyZWQgb3Igbm90XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgaXMgcmVhZG9ubHkgb3Igbm90XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBIaW50IHRleHRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGludE1lc3NhZ2UgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgdHlwZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0ZpZWxkVHlwZX1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZmllbGQtY2xhc3MnKVxyXG4gIEBJbnB1dCgpXHJcbiAgdHlwZTogRmllbGRUeXBlID0gJ3RleHQnO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBpcyB1cGRhdGUgb25seSBvbiBibHVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB1cGRhdGVPbkJsdXIgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogYWxsb3cgb25seSBkaWdpdHMgaW4gaW5wdXRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtCb29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsbG93T25seURpZ2l0cyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBhbGxvdyBuZWdhdGl2ZSBudW1iZXJzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhbGxvd05lZ2F0aXZlID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcclxuICAgKiBAcHJvcGVydHkgc2hvd0JvdHRvbUNvbnRlbnRcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93Qm90dG9tQ29udGVudCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcclxuICAgKlxyXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXHJcbiAgQElucHV0KClcclxuICBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIGxhYmVsIGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBsb2FkaW5nIGJ1dHRvbi4gT25seSBmb3IgdGV4dFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93IGljb24gd2hlbiBmaWVsZCBpcyB2YWxpZFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNWYWxpZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggY2hhcmFjdGVycyBudW1iZXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbWF4Q2hhcmFjdGVycyA9IDI1NTtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJpbSB0ZXh0IG9uIGJsdXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRyaW1PbkJsdXIgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUcmltIHRleHQgb24gc3VibWl0XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB0cmltT25TdWJtaXQgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBNYXggcm93cyBmb3IgbXVsdGktbGluZSB0eXBlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1heFJvd3MgPSAwO1xyXG4gIC8qKlxyXG4gICAqIGhhcyB0ZXh0IGFyZWEgY291bnRlclxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGFzVGV4dEFyZWFDb3VudGVyID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZSBpbiBidWlsZCBlcnJvcnMgZm9yIFJlYWN0aXZlIEZvcm1zXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhpZGVCdWlsdEluRXJyb3JzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgbGFiZWwgaW4gZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBtYXhpbXVtIG51bWJlclxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXg6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IG1pbmltdW0gbnVtYmVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRleHRhcmVhIGhlaWdodC4gRGVmYXVsdCAxMTBcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dGFyZWFIZWlnaHQgPSAxMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGV4dGFyZWEgYm9yZGVybGVzcy4gRGVmYXVsdCBmYWxzZVxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBib3JkZXJsZXNzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBpZiB0aGlzIGZpZWxkIGlzIGZpbGxlZCBieSBBSVxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNBSVZhcmlhbnQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgTGFiZWxlZCBCeSBFbGVtZW50IElkLlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMYWJlbGxlZGJ5SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLmlkKCl9LWxhYmVsZWRCeWApO1xyXG5cclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBMYWJlbGVkQnkgVGV4dC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhTGFiZWxsZWRieSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBEZXNjcmliZWQgQnkgRWxlbWVudCBJZC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnlJZCA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuaWQoKX0tZGVzY3JpYmVkQnlgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgRGVzY3JpYmVkQnkgVGV4dC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnkgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgc3RhdGUgb2YgZXJyb3JcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWRhdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmaWVsZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdhdXRvc2l6ZScpIGF1dG9zaXplOiBDZGtUZXh0YXJlYUF1dG9zaXplO1xyXG5cclxuICBnZXQgZ2V0UGFzc3dvcmRJY29uKCk6IEljb25OYW1lIHtcclxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zaG93UGFzc3dvcmQgPyAnRXllLWhpZGUnIDogJ0V5ZS12aWV3JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2ZUZpZWxkICYmICF0aGlzLmlzQWN0aXZlSG92ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93UGFzc3dvcmQgPyAnVmlldy1pbi1saW5lJyA6ICdIaWRlLWluLWxpbmUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3dQYXNzd29yZCA/ICdWaWV3LWZpbGxlZCcgOiAnSGlkZS1maWxsZWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUZpZWxkID0gZmFsc2U7XHJcbiAgaXNBY3RpdmVIb3ZlciA9IGZhbHNlO1xyXG5cclxuICBrZXlib2FyZEZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJRUxELic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgb25Ub3VjaCA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxyXG4gICkge1xyXG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzTW9uaXRvclxyXG4gICAgICAubW9uaXRvcih0aGlzLmZpZWxkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgICAgLnN1YnNjcmliZShvcmlnaW4gPT5cclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXlib2FyZEZvY3VzZWQuc2V0KG9yaWdpbiA9PT0gJ2tleWJvYXJkJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbXVsdGktbGluZScpIHtcclxuICAgICAgdGhpcy5hdXRvc2l6ZS5yZXNpemVUb0ZpdENvbnRlbnQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIG1hcmsgY29tcG9uZW50IHZpZXcgYXMgZGlydHkgd2hlbiB0b3VjaGVkIHByb2dyYW1tYXRpY2FsbHkgd2l0aCBtYXJrQXNUb3VjaGVkL21hcmtBbGxBc1RvdWNoZWQgb3IgZXJyb3JzXHJcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcclxuICAgKi9cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDbG9zZTogYm9vbGVhbjtcclxuICBzaG93UGFzc3dvcmQ6IGJvb2xlYW47XHJcbiAgY3VycmVudFR5cGU6IHN0cmluZztcclxuICBlcnJvcnNMZW5ndGg6IGJvb2xlYW47XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWFyY2hJbnB1dCgpO1xyXG4gICAgdGhpcy5jdXJyZW50VHlwZSA9IHRoaXMuZ2V0VHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbGlkYXRlRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vc2V0IHNlYXJjaCBpbnB1dCBpbml0aWFsIHZhbHVlXHJcbiAgc2V0U2VhcmNoSW5wdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnc2VhcmNoJyB8fCB0aGlzLnR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJykge1xyXG4gICAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uKCdTZWFyY2gnLCB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJy9pY29ucy9TZWFyY2guc3ZnJykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vY2hhbmdlIHR5cGUgZm9yIHJldmVhbCBwYXNzd29yZFxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcgJiYgdGhpcy5zaG93UGFzc3dvcmQpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnR5cGU7XHJcbiAgfVxyXG5cclxuICAvL0NsZWFyIGlucHV0IHZhbHVlXHJcbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlSW5wdXRTZWFyY2goKTtcclxuICB9XHJcblxyXG4gIC8vdG9nZ2xlIGZvciBwYXNzd29yZFxyXG4gIHNob3dQYXNzd29yZENsaWNrKCkge1xyXG4gICAgdGhpcy5zaG93UGFzc3dvcmQgPSAhdGhpcy5zaG93UGFzc3dvcmQ7XHJcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gdGhpcy5nZXRUeXBlKCk7XHJcbiAgfVxyXG5cclxuICAvL1NldCBvcHRpb25zIGZvciBzZWFyY2ggaW5wdXRcclxuICBvbkNoYW5nZUlucHV0U2VhcmNoKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlYXJjaCcgfHwgdGhpcy50eXBlID09PSAnY29sbGFwc2VkLXNlYXJjaCcpIHtcclxuICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGVycm9ycyBsZW5ndGggZm9yIHZhbGlkYXRpb25cclxuICAvLyBDb25zaWRlciBvbmx5IHRob3NlIGVycm9ycyB3aGljaCB3aGljaCBhcmUgbm90IGVtcHR5XHJcbiAgc2V0RXJyb3JzTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCEhdGhpcy5fZXJyb3JzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9lcnJvcnMuZmlsdGVyKGVyciA9PiAhIWVycikubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vU2F2ZSBpbnB1dCB2YWx1ZVxyXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuZXJyb3JzTGVuZ3RoID0gdGhpcy5zZXRFcnJvcnNMZW5ndGgoKTtcclxuICAgIGlmICghdGhpcy51cGRhdGVPbkJsdXIpIHtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hbGxvd09ubHlEaWdpdHMgJiYgIXRoaXMuYWxsb3dOZWdhdGl2ZSAmJiArdGhpcy52YWx1ZSA8IDApIHtcclxuICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiB0aGlzLnZhbHVlICE9PSAnJyA/ICt0aGlzLnZhbHVlIDogdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlPzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2ZShzdGF0ZTogYm9vbGVhbiwgYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChhY3Rpb24gPT09ICdob3ZlcicpIHtcclxuICAgICAgdGhpcy5pc0FjdGl2ZUhvdmVyID0gc3RhdGU7XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2ZvY3VzJykge1xyXG4gICAgICB0aGlzLmlzQWN0aXZlRmllbGQgPSBzdGF0ZTtcclxuXHJcbiAgICAgIGlmICghc3RhdGUgJiYgdGhpcy50cmltT25CbHVyKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclNwYWNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHJpbU9uU3VibWl0KSB7XHJcbiAgICAgIHRoaXMuY2xlYXJTcGFjZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclNwYWNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRCbHVyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcmVmb2N1c1Bhc3N3b3JkQnV0dG9uKGJ0bjogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgYnRuLmZvY3VzKCdrZXlib2FyZCcpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICctLXRleHRhcmVhLWhlaWdodCc6IHRleHRhcmVhSGVpZ2h0IC0gMTAgKyAncHgnLFxuICAgICAgJy0tdGV4dGFyZWEtaGVpZ2h0LWNvbnRhaW5lcic6IHRleHRhcmVhSGVpZ2h0ICsgJ3B4JyxcbiAgICB9XCJcbiAgICAjdWlGaWVsZFxuICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcbiAgICBoaWRlUmVxdWlyZWRNYXJrZXI9XCJ0cnVlXCJcbiAgICBbY29sb3JdPVwiZXJyb3JzTGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQpIHx8IGhhc0Vycm9yID8gJ3dhcm4nIDogJ2FjY2VudCdcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdoaWRlLWJvdHRvbS1jb250ZW50JzogIXNob3dCb3R0b21Db250ZW50LFxuICAgICAgdGV4dGFyZWE6IHR5cGUgPT09ICd0ZXh0YXJlYScsXG4gICAgICAnbXVsdGktbGluZSc6IHR5cGUgPT09ICdtdWx0aS1saW5lJyxcbiAgICAgICdrZXlib2FyZC1mb2N1c2VkJzoga2V5Ym9hcmRGb2N1c2VkKCksXG4gICAgICAnaGFzLWxhYmVsJzogISFsYWJlbCxcbiAgICAgICdoYXMtdmFsdWUnOiAhIXZhbHVlLFxuICAgICAgJ3RleHQtYXJlYS1ib3JkZXJsZXNzJzogdHlwZSA9PT0gJ3RleHRhcmVhJyAmJiBib3JkZXJsZXNzLFxuICAgIH1cIlxuICAgIChtb3VzZWVudGVyKT1cIm9uQWN0aXZlKHRydWUsICdob3ZlcicpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbkFjdGl2ZShmYWxzZSwgJ2hvdmVyJylcIlxuICA+XG4gICAgPHNwYW4gW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCIgW2lkXT1cImFyaWFEZXNjcmliZWRieUlkKClcIj5cbiAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgPHNwYW4+e3sgJ0VSUk9SUy5SRVFVSVJFRCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAge3sgYXJpYURlc2NyaWJlZGJ5KCkgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCIgW2lkXT1cImFyaWFMYWJlbGxlZGJ5SWQoKVwiPlxuICAgICAge3sgYXJpYUxhYmVsbGVkYnkoKSA/PyBsYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWxhYmVsXG4gICAgICAqbmdJZj1cIihsYWJlbCB8fCBsYWJlbEh0bWwoKSkgJiYgKCh0eXBlICE9PSAnc2VhcmNoJyAmJiBhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycpIHx8IGFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJylcIlxuICAgICAgY2xhc3M9XCJsYWJlbC13aXRoLWljb25cIlxuICAgID5cbiAgICAgIEBpZihpc0FJVmFyaWFudCB8fCBsYWJlbEljb24pIHtcbiAgICAgICAgPHVpLWljb25cbiAgICAgICAgICBbbmFtZV09XCJpc0FJVmFyaWFudCA/ICdTcGFya2xlLWluLWxpbmUnIDogbGFiZWxJY29uIVwiXG4gICAgICAgICAgW3NpemVdPVwiJzE2J1wiXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC1pY29uXCJcbiAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgIH1cbiAgICAgIDxzcGFuPlxuICAgICAgICBAaWYobGFiZWxIdG1sKCkpIHtcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsSHRtbCgpXCI+PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICB9QGlmKHJlcXVpcmVkKSB7PHNwYW4+Kjwvc3Bhbj59XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGFiZWw+XG4gICAgPG1hdC1pY29uXG4gICAgICAqbmdJZj1cInR5cGUgPT09ICdzZWFyY2gnIHx8IHR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJ1wiXG4gICAgICBtYXRJY29uUHJlZml4XG4gICAgICBjbGFzcz1cInNlYXJjaC1pY29uXCJcbiAgICAgIFtzdmdJY29uXT1cIidTZWFyY2gnXCJcbiAgICA+PC9tYXQtaWNvbj5cbiAgICA8aW5wdXRcbiAgICAgIFtyZWFkb25seV09XCJyZWFkT25seVwiXG4gICAgICAqbmdJZj1cInR5cGUgIT09ICd0ZXh0YXJlYScgJiYgdHlwZSAhPT0gJ211bHRpLWxpbmUnOyBlbHNlIHRleHRhcmVhXCJcbiAgICAgIG1hdElucHV0XG4gICAgICAjaW5wdXRFbGVtZW50XG4gICAgICAoYmx1cik9XCJvblRvdWNoKCk7IG9uQWN0aXZlKGZhbHNlLCAnZm9jdXMnKTsgb25CbHVyKClcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICBbaWRdPVwiaWQoKVwiXG4gICAgICAoa2V5dXApPVwib25DaGFuZ2VJbnB1dFNlYXJjaCgpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciFcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsb2FkaW5nXCJcbiAgICAgIFt0eXBlXT1cImN1cnJlbnRUeXBlXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJvblN1Ym1pdCgpXCJcbiAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgIFttaW5dPVwibWluXCJcbiAgICAgIFtuYW1lXT1cImZpZWxkTmFtZSFcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3JcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5SWQoKVwiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieUlkKClcIlxuICAgICAgcm9sZT1cInRleHRib3hcIlxuICAgICAgZGlnaXRzT25seVxuICAgICAgW2FsbG93T25seURpZ2l0c109XCJhbGxvd09ubHlEaWdpdHNcIlxuICAgICAgW2FsbG93TmVnYXRpdmVdPVwiYWxsb3dOZWdhdGl2ZVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkFjdGl2ZSh0cnVlLCAnZm9jdXMnKVwiXG4gICAgLz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dGFyZWE+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgI2lucHV0RWxlbWVudFxuICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaCgpOyBvbkFjdGl2ZShmYWxzZSwgJ2ZvY3VzJyk7IG9uQmx1cigpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIFtpZF09XCJpZCgpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uQ2hhbmdlSW5wdXRTZWFyY2goKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJvblN1Ym1pdCgpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIVwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFt0eXBlXT1cImN1cnJlbnRUeXBlXCJcbiAgICAgICAgW25hbWVdPVwiZmllbGROYW1lIVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiIWxhYmVsID8gYXJpYUxhYmVsIDogJydcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiZXJyb3JzTGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQpIHx8IGhhc0Vycm9yXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5SWQoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiXG4gICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICAgW2Nka1RleHRhcmVhQXV0b3NpemVdPVwidHlwZSA9PT0gJ211bHRpLWxpbmUnXCJcbiAgICAgICAgW2Nka0F1dG9zaXplTWluUm93c109XCJ0eXBlID09PSAnbXVsdGktbGluZScgPyAxIDogNVwiXG4gICAgICAgIFtjZGtBdXRvc2l6ZU1heFJvd3NdPVwidHlwZSA9PT0gJ211bHRpLWxpbmUnID8gbWF4Um93cyA6IDVcIlxuICAgICAgICAoZm9jdXNpbik9XCJvbkFjdGl2ZSh0cnVlLCAnZm9jdXMnKVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIiAqbmdJZj1cInR5cGUgPT09ICdzZWFyY2gnIHx8IHR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJyB8fCB0eXBlID09PSAncGFzc3dvcmQnIHx8IHR5cGUgPT09ICd2YWxpZGF0aW9uLXRleHQnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwib3B0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlXCJcbiAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgaWNvbk5hbWU9XCJDbG9zZVwiXG4gICAgICAgICAgW2xhYmVsXT1cIignQ09NTU9OLkNMRUFSJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwiY2xlYXJWYWx1ZSgpXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbCArICctLScgKyAoJ0NPTU1PTi5DTEVBUicgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKVwiXG4gICAgICAgID48L3VpLWJ1dHRvbj5cbiAgICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwicGFzc3dvcmRcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIigoc2hvd1Bhc3N3b3JkID8gJ0ZJRUxELkhJREVfUEFTU1dPUkQnIDogJ0ZJRUxELlNIT1dfUEFTU1dPUkQnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAncGFzc3dvcmQnXCJcbiAgICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgcm9sZT1cInN3aXRjaFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cInNob3dQYXNzd29yZFwiXG4gICAgICAgICAgW2ljb25OYW1lXT1cImdldFBhc3N3b3JkSWNvblwiXG4gICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dQYXNzd29yZENsaWNrKClcIlxuICAgICAgICAgICNidG5cbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuKVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVmb2N1c1Bhc3N3b3JkQnV0dG9uKGJ0bilcIlxuICAgICAgICA+PC91aS1idXR0b24+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICB0eXBlID09PSAndmFsaWRhdGlvbi10ZXh0JyAmJiAoYXBwbGljYXRpb25UaGVtZSA9PT0gJ2RhcmsnIHx8IGFwcGxpY2F0aW9uVGhlbWUgPT09ICdsaWdodCcpICYmIHZhbHVlLmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiFpc1ZhbGlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblwiXG4gICAgICAgICAgICBbdmFyaWFudF09XCIndGV4dCdcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1ZhbGlkYXRlJ1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ2YWxpZGF0ZSgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICA+PC91aS1idXR0b24+XG4gICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJ2YWxpZFwiIFtjb2xvcl09XCInd2hpdGUnXCIgYXBwbGljYXRpb25UaGVtZT1cImxpZ2h0XCIgW25hbWVdPVwiJ0NoZWNrJ1wiICpuZ0lmPVwiaXNWYWxpZFwiPjwvdWktaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGhhc1RleHRBcmVhQ291bnRlcikge1xuICAgICAgPG1hdC1oaW50IGNsYXNzPVwiaW5mb1wiICpuZ0lmPVwidHlwZSA9PT0gJ3RleHRhcmVhJyAmJiAhZXJyb3JzTGVuZ3RoICYmICEobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpXCJcbiAgICAgICAgPnt7IHZhbHVlLmxlbmd0aCB9fSAvIHt7IG1heENoYXJhY3RlcnMgfX08L21hdC1oaW50XG4gICAgICA+XG4gICAgfVxuXG4gICAgPG1hdC1oaW50XG4gICAgICBjbGFzcz1cImluZm9cIlxuICAgICAgKm5nSWY9XCJoaW50TWVzc2FnZSAmJiAhZXJyb3JzTGVuZ3RoICYmICEobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpICYmIHR5cGUgIT09ICd0ZXh0YXJlYSdcIlxuICAgICAgPnt7IGhpbnRNZXNzYWdlIH19PC9tYXQtaGludFxuICAgID5cbiAgICA8bWF0LWhpbnQgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZXJyb3JzTGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcilcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJlcnJvcnNMZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yc1wiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBfZXJyb3JzOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICA8dWktaWNvbiBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgW25hbWVdPVwiJ0Vycm9yJ1wiPjwvdWktaWNvbj5cbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDx1aS12YWxpZGF0aW9uLWVycm9yXG4gICAgICAgICpuZ0lmPVwibmdDb250cm9sICYmICFoaWRlQnVpbHRJbkVycm9yc1wiXG4gICAgICAgIFtuZ0NvbnRyb2xdPVwibmdDb250cm9sXCJcbiAgICAgICAgW2xhYmVsXT1cImhpZGVMYWJlbEluRXJyb3JzID8gbnVsbCA6IGxhYmVsXCJcbiAgICAgID48L3VpLXZhbGlkYXRpb24tZXJyb3I+XG4gICAgPC9tYXQtaGludD5cblxuICAgIEBpZiAoYmFkZ2VWYXJpYW50KSB7XG4gICAgICA8dWktYmFkZ2UgY2xhc3M9XCJmaWVsZC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYmFkZ2VWYXJpYW50XCI+PC91aS1iYWRnZT5cbiAgICB9XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
556
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWVsZC9maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxRQUFRLEVBR1IsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWhFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBU3ZCLE1BQU0sT0FBTyxjQUFjO0lBeUZ6Qjs7Ozs7T0FLRztJQUNILElBQWEsTUFBTSxDQUFDLE1BQWdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQXdQRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENB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QkFBaEIsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsV0FBVztzQkFBbkIsS0FBSztnQkFVTixJQUFJO3NCQUZILFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBV04sZ0JBQWdCO3NCQUZmLFdBQVc7dUJBQUMsWUFBWTs7c0JBQ3hCLEtBQUs7Z0JBU0csU0FBUztzQkFBakIsS0FBSztnQkFRRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUUcsT0FBTztzQkFBZixLQUFLO2dCQVFHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRRyxHQUFHO3NCQUFYLEtBQUs7Z0JBUUcsR0FBRztzQkFBWCxLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQXNDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFMEMsS0FBSztzQkFBckQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN4QixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBEZXN0cm95UmVmLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIHNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBDZGtUZXh0YXJlYUF1dG9zaXplIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9maWVsZC9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IEJhZGdlVmFyaWFudCB9IGZyb20gJy4uL2JhZGdlL2JhZGdlLm1vZGVsJztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcblxuLyoqXG4gKiBBIGdsb2JhbCBjb3VudGVyIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGZpZWxkIElEcy5cbiAqIFRoaXMgdmFyaWFibGUgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgbmV3IGZpZWxkIElEIGlzIG5lZWRlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byBlbnN1cmUgdGhhdCBlYWNoIGZpZWxkIGNvbXBvbmVudFxuICogaGFzIGEgdW5pcXVlIGlkZW50aWZpZXIgd2l0aGluIHRoZSBhcHBsaWNhdGlvbiAvIHVzZWZ1bCBmb3IgdGhlaXIgQXJpYSBMYWJlbHMuXG4gKi9cbmV4cG9ydCBsZXQgZmllbGRJRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpZWxkJztcblxuICAvKipcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBhdXRvY29tcGxldGUgd2lkdGhcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXdpZHRoJylcbiAgQElucHV0KClcbiAgZnVsbFdpZHRoID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBmaWVsZCBoZWlnaHRcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLWhlaWdodCcpXG4gIEBJbnB1dCgpXG4gIGZ1bGxIZWlnaHQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRm9ybSBmaWVsZCBsYWJlbFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPyA9ICcnO1xuXG4gIC8qKlxuICAgKiBGb3JtIGZpZWxkIGxhYmVsIGZyb20gaHRtbFxuICAgKlxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIGxhYmVsSHRtbCA9IGlucHV0KG51bGwsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZTogc3RyaW5nKSA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSlcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEljb24gdG8gZGlzcGxheSBhbG9uZ3NpZGUgdGhlIGxhYmVsXG4gICAqXG4gICAqIEB0eXBlIHtJY29uTmFtZX1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbEljb24/OiBJY29uTmFtZTtcblxuICAvKipcbiAgICogSW5wdXQgbmFtZSBhdHRyaWJ1dGVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBmaWVsZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHBsYWNlaG9sZGVyXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XG5cbiAgLyoqXG4gICAqIElucHV0IGlkXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgaWQgPSBpbnB1dChgZmllbGQtJHtmaWVsZElEKyt9YCk7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhbHVlXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWUgPSAnJztcblxuICAvKipcbiAgICogVmFyaWFudCBvZiBiYWRnZSB0byB1c2VcbiAgICpcbiAgICogQHR5cGUge0JhZGdlVmFyaWFudH1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBiYWRnZVZhcmlhbnQ/OiBCYWRnZVZhcmlhbnQgfCB1bmRlZmluZWQ7XG5cbiAgX2Vycm9yczogU2FmZUh0bWxbXTtcbiAgLyoqXG4gICAqIElucHV0IGZpZWxkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2Vycm9ycyA9IGVycm9ycz8uZmlsdGVyKEJvb2xlYW4pLm1hcChlcnJvciA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvcikpO1xuICAgIHRoaXMuZXJyb3JzTGVuZ3RoID0gdGhpcy5zZXRFcnJvcnNMZW5ndGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGlucHV0IGlzIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBpcyByZXF1aXJlZCBvciBub3RcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElucHV0IGlzIHJlYWRvbmx5IG9yIG5vdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaW50IHRleHRcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaW50TWVzc2FnZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbnB1dCB0eXBlXG4gICAqXG4gICAqIEB0eXBlIHtGaWVsZFR5cGV9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmZpZWxkLWNsYXNzJylcbiAgQElucHV0KClcbiAgdHlwZTogRmllbGRUeXBlID0gJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBpcyB1cGRhdGUgb25seSBvbiBibHVyXG4gICAqXG4gICAqIEB0eXBlIHtCb29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVwZGF0ZU9uQmx1ciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBhbGxvdyBvbmx5IGRpZ2l0cyBpbiBpbnB1dFxuICAgKlxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhbGxvd09ubHlEaWdpdHMgPSBmYWxzZTtcblxuICAvKipcbiAgICogYWxsb3cgbmVnYXRpdmUgbnVtYmVyc1xuICAgKlxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhbGxvd05lZ2F0aXZlID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcbiAgICogQHByb3BlcnR5IHNob3dCb3R0b21Db250ZW50XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNob3dCb3R0b21Db250ZW50ID0gdHJ1ZTtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZW1lJylcbiAgQElucHV0KClcbiAgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSBsYWJlbCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBsYWJlbCBpcyB1c2VkIHRvIHByb3ZpZGUgYW4gYWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogU2hvdyBsb2FkaW5nIGJ1dHRvbi4gT25seSBmb3IgdGV4dFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNob3cgaWNvbiB3aGVuIGZpZWxkIGlzIHZhbGlkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGlzVmFsaWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogTWF4IGNoYXJhY3RlcnMgbnVtYmVyXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbWF4Q2hhcmFjdGVycyA9IDI1NTtcblxuICAvKipcbiAgICogVHJpbSB0ZXh0IG9uIGJsdXJcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdHJpbU9uQmx1ciA9IGZhbHNlO1xuICAvKipcbiAgICogVHJpbSB0ZXh0IG9uIHN1Ym1pdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0cmltT25TdWJtaXQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIE1heCByb3dzIGZvciBtdWx0aS1saW5lIHR5cGVcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtYXhSb3dzID0gMDtcbiAgLyoqXG4gICAqIGhhcyB0ZXh0IGFyZWEgY291bnRlclxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoYXNUZXh0QXJlYUNvdW50ZXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBIaWRlIGluIGJ1aWxkIGVycm9ycyBmb3IgUmVhY3RpdmUgRm9ybXNcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoaWRlQnVpbHRJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaWRlIGxhYmVsIGluIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCBtYXhpbXVtIG51bWJlclxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTZXQgbWluaW11bSBudW1iZXJcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtaW46IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB0ZXh0YXJlYSBoZWlnaHQuIERlZmF1bHQgMTEwXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdGV4dGFyZWFIZWlnaHQgPSAxMTA7XG5cbiAgLyoqXG4gICAqIFNldHMgdGV4dGFyZWEgYm9yZGVybGVzcy4gRGVmYXVsdCBmYWxzZVxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGJvcmRlcmxlc3MgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoaXMgZmllbGQgaXMgZmlsbGVkIGJ5IEFJXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGlzQUlWYXJpYW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSByZXF1aXJlbWVudCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBMYWJlbGVkIEJ5IEVsZW1lbnQgSWQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMYWJlbGxlZGJ5SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLmlkKCl9LWxhYmVsZWRCeWApO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgTGFiZWxlZEJ5IFRleHQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMYWJlbGxlZGJ5ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGZvciBpbnB1dCBmaWVsZCBBcmlhIERlc2NyaWJlZCBCeSBFbGVtZW50IElkLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnlJZCA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuaWQoKX0tZGVzY3JpYmVkQnlgKTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGZvciBpbnB1dCBmaWVsZCBBcmlhIERlc2NyaWJlZEJ5IFRleHQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFEZXNjcmliZWRieSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogU2hvdyBzdGF0ZSBvZiBlcnJvclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWxpZGF0ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGZpZWxkOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdhdXRvc2l6ZScpIGF1dG9zaXplOiBDZGtUZXh0YXJlYUF1dG9zaXplO1xuXG4gIGdldCBnZXRQYXNzd29yZEljb24oKTogSWNvbk5hbWUge1xuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1Bhc3N3b3JkID8gJ0V5ZS1oaWRlJyA6ICdFeWUtdmlldyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2ZUZpZWxkICYmICF0aGlzLmlzQWN0aXZlSG92ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1Bhc3N3b3JkID8gJ1ZpZXctaW4tbGluZScgOiAnSGlkZS1pbi1saW5lJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dQYXNzd29yZCA/ICdWaWV3LWZpbGxlZCcgOiAnSGlkZS1maWxsZWQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzQWN0aXZlRmllbGQgPSBmYWxzZTtcbiAgaXNBY3RpdmVIb3ZlciA9IGZhbHNlO1xuXG4gIGtleWJvYXJkRm9jdXNlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0aW9uQ29udGV4dCA9ICdGSUVMRC4nO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgLm1vbml0b3IodGhpcy5maWVsZClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZShvcmlnaW4gPT5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmtleWJvYXJkRm9jdXNlZC5zZXQob3JpZ2luID09PSAna2V5Ym9hcmQnKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnbXVsdGktbGluZScpIHtcbiAgICAgIHRoaXMuYXV0b3NpemUucmVzaXplVG9GaXRDb250ZW50KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hcmsgY29tcG9uZW50IHZpZXcgYXMgZGlydHkgd2hlbiB0b3VjaGVkIHByb2dyYW1tYXRpY2FsbHkgd2l0aCBtYXJrQXNUb3VjaGVkL21hcmtBbGxBc1RvdWNoZWQgb3IgZXJyb3JzXG4gICAqIHRvIGRpc3BsYXkgdmFsaWRhdGlvbiBlcnJvcnMgdGhhdCBtaWdodCBoYXBwZW4gKGUuZy4gcmVxdWlyZWQpXG4gICAqL1xuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sPy50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sPy5lcnJvcnMpIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dDbG9zZTogYm9vbGVhbjtcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuO1xuICBjdXJyZW50VHlwZTogc3RyaW5nO1xuICBlcnJvcnNMZW5ndGg6IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTZWFyY2hJbnB1dCgpO1xuICAgIHRoaXMuY3VycmVudFR5cGUgPSB0aGlzLmdldFR5cGUoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy9zZXQgc2VhcmNoIGlucHV0IGluaXRpYWwgdmFsdWVcbiAgc2V0U2VhcmNoSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlYXJjaCcgfHwgdGhpcy50eXBlID09PSAnY29sbGFwc2VkLXNlYXJjaCcpIHtcbiAgICAgIHRoaXMubWF0SWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb24oJ1NlYXJjaCcsIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnL2ljb25zL1NlYXJjaC5zdmcnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0Nsb3NlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy9jaGFuZ2UgdHlwZSBmb3IgcmV2ZWFsIHBhc3N3b3JkXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnICYmIHRoaXMuc2hvd1Bhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gJ3RleHQnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgLy9DbGVhciBpbnB1dCB2YWx1ZVxuICBjbGVhclZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2VJbnB1dFNlYXJjaCgpO1xuICB9XG5cbiAgLy90b2dnbGUgZm9yIHBhc3N3b3JkXG4gIHNob3dQYXNzd29yZENsaWNrKCkge1xuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gIXRoaXMuc2hvd1Bhc3N3b3JkO1xuICAgIHRoaXMuY3VycmVudFR5cGUgPSB0aGlzLmdldFR5cGUoKTtcbiAgfVxuXG4gIC8vU2V0IG9wdGlvbnMgZm9yIHNlYXJjaCBpbnB1dFxuICBvbkNoYW5nZUlucHV0U2VhcmNoKCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnIHx8IHRoaXMudHlwZSA9PT0gJ2NvbGxhcHNlZC1zZWFyY2gnKSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZXJyb3JzIGxlbmd0aCBmb3IgdmFsaWRhdGlvblxuICAvLyBDb25zaWRlciBvbmx5IHRob3NlIGVycm9ycyB3aGljaCB3aGljaCBhcmUgbm90IGVtcHR5XG4gIHNldEVycm9yc0xlbmd0aCgpOiBib29sZWFuIHtcbiAgICBpZiAoISF0aGlzLl9lcnJvcnMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lcnJvcnMuZmlsdGVyKGVyciA9PiAhIWVycikubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy9TYXZlIGlucHV0IHZhbHVlXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5lcnJvcnNMZW5ndGggPSB0aGlzLnNldEVycm9yc0xlbmd0aCgpO1xuICAgIGlmICghdGhpcy51cGRhdGVPbkJsdXIpIHtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5hbGxvd09ubHlEaWdpdHMgJiYgIXRoaXMuYWxsb3dOZWdhdGl2ZSAmJiArdGhpcy52YWx1ZSA8IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnMCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiB0aGlzLnZhbHVlICE9PSAnJyA/ICt0aGlzLnZhbHVlIDogdGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZT86IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQWN0aXZlKHN0YXRlOiBib29sZWFuLCBhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChhY3Rpb24gPT09ICdob3ZlcicpIHtcbiAgICAgIHRoaXMuaXNBY3RpdmVIb3ZlciA9IHN0YXRlO1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnZm9jdXMnKSB7XG4gICAgICB0aGlzLmlzQWN0aXZlRmllbGQgPSBzdGF0ZTtcblxuICAgICAgaWYgKCFzdGF0ZSAmJiB0aGlzLnRyaW1PbkJsdXIpIHtcbiAgICAgICAgdGhpcy5jbGVhclNwYWNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJpbU9uU3VibWl0KSB7XG4gICAgICB0aGlzLmNsZWFyU3BhY2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU3BhY2UoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZEJsdXIuZW1pdCgpO1xuICB9XG5cbiAgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnkpID0+IHZhbHVlLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICByZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuOiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGJ0bi5mb2N1cygna2V5Ym9hcmQnKTtcbiAgICB9LCAwKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgJy0tdGV4dGFyZWEtaGVpZ2h0JzogdGV4dGFyZWFIZWlnaHQgLSAxMCArICdweCcsXG4gICAgICAnLS10ZXh0YXJlYS1oZWlnaHQtY29udGFpbmVyJzogdGV4dGFyZWFIZWlnaHQgKyAncHgnLFxuICAgIH1cIlxuICAgICN1aUZpZWxkXG4gICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxuICAgIGhpZGVSZXF1aXJlZE1hcmtlcj1cInRydWVcIlxuICAgIFtjb2xvcl09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3IgPyAnd2FybicgOiAnYWNjZW50J1wiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2hpZGUtYm90dG9tLWNvbnRlbnQnOiAhc2hvd0JvdHRvbUNvbnRlbnQsXG4gICAgICB0ZXh0YXJlYTogdHlwZSA9PT0gJ3RleHRhcmVhJyxcbiAgICAgICdtdWx0aS1saW5lJzogdHlwZSA9PT0gJ211bHRpLWxpbmUnLFxuICAgICAgJ2tleWJvYXJkLWZvY3VzZWQnOiBrZXlib2FyZEZvY3VzZWQoKSxcbiAgICAgICdoYXMtbGFiZWwnOiAhIWxhYmVsLFxuICAgICAgJ2hhcy12YWx1ZSc6ICEhdmFsdWUsXG4gICAgICAndGV4dC1hcmVhLWJvcmRlcmxlc3MnOiB0eXBlID09PSAndGV4dGFyZWEnICYmIGJvcmRlcmxlc3MsXG4gICAgfVwiXG4gICAgKG1vdXNlZW50ZXIpPVwib25BY3RpdmUodHJ1ZSwgJ2hvdmVyJylcIlxuICAgIChtb3VzZWxlYXZlKT1cIm9uQWN0aXZlKGZhbHNlLCAnaG92ZXInKVwiXG4gID5cbiAgICA8c3BhbiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBbaWRdPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiPlxuICAgICAgQGlmIChyZXF1aXJlZCkge1xuICAgICAgICA8c3Bhbj57eyAnRVJST1JTLlJFUVVJUkVEJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICB7eyBhcmlhRGVzY3JpYmVkYnkoKSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBbaWRdPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCI+XG4gICAgICB7eyBhcmlhTGFiZWxsZWRieSgpID8/IGxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtbGFiZWxcbiAgICAgICpuZ0lmPVwiKGxhYmVsIHx8IGxhYmVsSHRtbCgpKSAmJiAoKHR5cGUgIT09ICdzZWFyY2gnICYmIGFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJykgfHwgYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnKVwiXG4gICAgICBjbGFzcz1cImxhYmVsLXdpdGgtaWNvblwiXG4gICAgPlxuICAgICAgQGlmKGlzQUlWYXJpYW50IHx8IGxhYmVsSWNvbikge1xuICAgICAgICA8dWktaWNvblxuICAgICAgICAgIFtuYW1lXT1cImlzQUlWYXJpYW50ID8gJ1NwYXJrbGUtaW4tbGluZScgOiBsYWJlbEljb24hXCJcbiAgICAgICAgICBbc2l6ZV09XCInMTYnXCJcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLWljb25cIlxuICAgICAgICA+PC91aS1pY29uPlxuICAgICAgfVxuICAgICAgPHNwYW4+XG4gICAgICAgIEBpZihsYWJlbEh0bWwoKSkge1xuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxIdG1sKClcIj48L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIH1AaWYocmVxdWlyZWQpIHs8c3Bhbj4qPC9zcGFuPn1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8bWF0LWljb25cbiAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3NlYXJjaCcgfHwgdHlwZSA9PT0gJ2NvbGxhcHNlZC1zZWFyY2gnXCJcbiAgICAgIG1hdEljb25QcmVmaXhcbiAgICAgIGNsYXNzPVwic2VhcmNoLWljb25cIlxuICAgICAgW3N2Z0ljb25dPVwiJ1NlYXJjaCdcIlxuICAgID48L21hdC1pY29uPlxuICAgIDxpbnB1dFxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICpuZ0lmPVwidHlwZSAhPT0gJ3RleHRhcmVhJyAmJiB0eXBlICE9PSAnbXVsdGktbGluZSc7IGVsc2UgdGV4dGFyZWFcIlxuICAgICAgbWF0SW5wdXRcbiAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgIChibHVyKT1cIm9uVG91Y2goKTsgb25BY3RpdmUoZmFsc2UsICdmb2N1cycpOyBvbkJsdXIoKVwiXG4gICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgIFtpZF09XCJpZCgpXCJcbiAgICAgIChrZXl1cCk9XCJvbkNoYW5nZUlucHV0U2VhcmNoKClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIVwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxuICAgICAgW3R5cGVdPVwiY3VycmVudFR5cGVcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm9uU3VibWl0KClcIlxuICAgICAgW21heF09XCJtYXhcIlxuICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgW25hbWVdPVwiZmllbGROYW1lIVwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImVycm9yc0xlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgJiYgbmdDb250cm9sPy50b3VjaGVkKSB8fCBoYXNFcnJvclwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiXG4gICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICBkaWdpdHNPbmx5XG4gICAgICBbYWxsb3dPbmx5RGlnaXRzXT1cImFsbG93T25seURpZ2l0c1wiXG4gICAgICBbYWxsb3dOZWdhdGl2ZV09XCJhbGxvd05lZ2F0aXZlXCJcbiAgICAgIChmb2N1c2luKT1cIm9uQWN0aXZlKHRydWUsICdmb2N1cycpXCJcbiAgICAvPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0YXJlYT5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAjaW5wdXRFbGVtZW50XG4gICAgICAgICNhdXRvc2l6ZT1cImNka1RleHRhcmVhQXV0b3NpemVcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKCk7IG9uQWN0aXZlKGZhbHNlLCAnZm9jdXMnKTsgb25CbHVyKClcIlxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgW2lkXT1cImlkKClcIlxuICAgICAgICAoa2V5dXApPVwib25DaGFuZ2VJbnB1dFNlYXJjaCgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uU3VibWl0KClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIhXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3R5cGVdPVwiY3VycmVudFR5cGVcIlxuICAgICAgICBbbmFtZV09XCJmaWVsZE5hbWUhXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIhbGFiZWwgPyBhcmlhTGFiZWwgOiAnJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3JcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlJZCgpXCJcbiAgICAgICAgcm9sZT1cInRleHRib3hcIlxuICAgICAgICBbY2RrVGV4dGFyZWFBdXRvc2l6ZV09XCJ0eXBlID09PSAnbXVsdGktbGluZSdcIlxuICAgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cInR5cGUgPT09ICdtdWx0aS1saW5lJyA/IDEgOiA1XCJcbiAgICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCJ0eXBlID09PSAnbXVsdGktbGluZScgPyBtYXhSb3dzIDogNVwiXG4gICAgICAgIChmb2N1c2luKT1cIm9uQWN0aXZlKHRydWUsICdmb2N1cycpXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwib3B0aW9uc1wiICpuZ0lmPVwidHlwZSA9PT0gJ3NlYXJjaCcgfHwgdHlwZSA9PT0gJ2NvbGxhcHNlZC1zZWFyY2gnIHx8IHR5cGUgPT09ICdwYXNzd29yZCcgfHwgdHlwZSA9PT0gJ3ZhbGlkYXRpb24tdGV4dCdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93Q2xvc2VcIlxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImNsb3NlXCJcbiAgICAgICAgICBpY29uTmFtZT1cIkNsb3NlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiKCdDT01NT04uQ0xFQVInIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJjbGVhclZhbHVlKClcIlxuICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsICsgJy0tJyArICgnQ09NTU9OLkNMRUFSJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpXCJcbiAgICAgICAgPjwvdWktYnV0dG9uPlxuICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJwYXNzd29yZFwiXG4gICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiKChzaG93UGFzc3dvcmQgPyAnRklFTEQuSElERV9QQVNTV09SRCcgOiAnRklFTEQuU0hPV19QQVNTV09SRCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwYXNzd29yZCdcIlxuICAgICAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICByb2xlPVwic3dpdGNoXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwic2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgICBbaWNvbk5hbWVdPVwiZ2V0UGFzc3dvcmRJY29uXCJcbiAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd1Bhc3N3b3JkQ2xpY2soKVwiXG4gICAgICAgICAgI2J0blxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInJlZm9jdXNQYXNzd29yZEJ1dHRvbihidG4pXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJyZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuKVwiXG4gICAgICAgID48L3VpLWJ1dHRvbj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHR5cGUgPT09ICd2YWxpZGF0aW9uLXRleHQnICYmIChhcHBsaWNhdGlvblRoZW1lID09PSAnZGFyaycgfHwgYXBwbGljYXRpb25UaGVtZSA9PT0gJ2xpZ2h0JykgJiYgdmFsdWUubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1aS1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiIWlzVmFsaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uXCJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCInbGlnaHQnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInVmFsaWRhdGUnXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgID48L3VpLWJ1dHRvbj5cbiAgICAgICAgICA8dWktaWNvbiBjbGFzcz1cInZhbGlkXCIgW2NvbG9yXT1cIid3aGl0ZSdcIiBhcHBsaWNhdGlvblRoZW1lPVwibGlnaHRcIiBbbmFtZV09XCInQ2hlY2snXCIgKm5nSWY9XCJpc1ZhbGlkXCI+PC91aS1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAoaGFzVGV4dEFyZWFDb3VudGVyKSB7XG4gICAgICA8bWF0LWhpbnQgY2xhc3M9XCJpbmZvXCIgKm5nSWY9XCJ0eXBlID09PSAndGV4dGFyZWEnICYmICFlcnJvcnNMZW5ndGggJiYgIShuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcilcIlxuICAgICAgICA+e3sgdmFsdWUubGVuZ3RoIH19IC8ge3sgbWF4Q2hhcmFjdGVycyB9fTwvbWF0LWhpbnRcbiAgICAgID5cbiAgICB9XG5cbiAgICA8bWF0LWhpbnRcbiAgICAgIGNsYXNzPVwiaW5mb1wiXG4gICAgICAqbmdJZj1cImhpbnRNZXNzYWdlICYmICFlcnJvcnNMZW5ndGggJiYgIShuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcikgJiYgdHlwZSAhPT0gJ3RleHRhcmVhJ1wiXG4gICAgICA+e3sgaGludE1lc3NhZ2UgfX08L21hdC1oaW50XG4gICAgPlxuICAgIDxtYXQtaGludCBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImVycm9yc0xlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIF9lcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgIDx1aS1pY29uIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIiBbbmFtZV09XCInRXJyb3InXCI+PC91aS1pY29uPlxuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZXJyb3JcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPHVpLXZhbGlkYXRpb24tZXJyb3JcbiAgICAgICAgKm5nSWY9XCJuZ0NvbnRyb2wgJiYgIWhpZGVCdWlsdEluRXJyb3JzXCJcbiAgICAgICAgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIlxuICAgICAgICBbbGFiZWxdPVwiaGlkZUxhYmVsSW5FcnJvcnMgPyBudWxsIDogbGFiZWxcIlxuICAgICAgPjwvdWktdmFsaWRhdGlvbi1lcnJvcj5cbiAgICA8L21hdC1oaW50PlxuXG4gICAgQGlmIChiYWRnZVZhcmlhbnQpIHtcbiAgICAgIDx1aS1iYWRnZSBjbGFzcz1cImZpZWxkLWJhZGdlXCJcbiAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJiYWRnZVZhcmlhbnRcIj48L3VpLWJhZGdlPlxuICAgIH1cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -187,7 +187,7 @@ export class FileUploadComponent {
187
187
  useExisting: forwardRef(() => FileUploadComponent),
188
188
  multi: true,
189
189
  },
190
- ], viewQueries: [{ propertyName: "fileDrop", first: true, predicate: ["fileDrop"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\r\n <div\r\n class=\"upload-file-container\"\r\n uiDragDrop\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-required]=\"ariaRequired\"\r\n [attr.theme]=\"applicationTheme\"\r\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\r\n (fileDropped)=\"onFileDropped($event)\"\r\n [tabIndex]=\"0\"\r\n (keydown)=\"onKeydown($event)\"\r\n (click)=\"fileDrop?.nativeElement?.click()\"\r\n >\r\n <div *ngIf=\"browse && !(success && !!file && progress)\" [@inOutAnimation] class=\"upload-files\">\r\n <div class=\"upload-browse\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\r\n\r\n <div class=\"errors\" *ngIf=\"!!errors || isMissedMinSize\" role=\"alert\">\r\n <ng-container *ngIf=\"!!errors\">\r\n <span *ngFor=\"let error of errors\"><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\r\n </ng-container>\r\n\r\n <span *ngIf=\"isMissedMinSize\">\r\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\r\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\r\n </span>\r\n </div>\r\n <input\r\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\r\n [attr.aria-describedby]=\"'upload-supported-files'\"\r\n [tabIndex]=\"-1\"\r\n class=\"form-control\"\r\n #fileDrop\r\n type=\"file\"\r\n id=\"file\"\r\n [accept]=\"supportedFileTypes\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChangeUpload($event)\"\r\n />\r\n <p *ngIf=\"applicationTheme === 'classic'; else rebrandedDnDCopyTpl\">\r\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\r\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\r\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\r\n </p>\r\n <span class=\"upload-text\">{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span>\r\n <span *ngIf=\"minFileSizeMB\" class=\"upload-text\"\r\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\r\n >\r\n </div>\r\n </div>\r\n @if (success) {\r\n <div class=\"upload-success\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\r\n <span class=\"upload-success-text\"\r\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\r\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\r\n >\r\n <input\r\n [tabIndex]=\"-1\"\r\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\r\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\r\n class=\"form-control\"\r\n #fileDrop\r\n type=\"file\"\r\n id=\"fileTest\"\r\n [accept]=\"supportedFileTypes\"\r\n (change)=\"onChangeUpload($event)\"\r\n [disabled]=\"disabled\"\r\n />\r\n <span class=\"upload-text\">{{ file?.name }}</span>\r\n @if (showFileSize) {\r\n <span class=\"upload-text\">{{\r\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\r\n <p>{{ file.name }}</p>\r\n <ui-progress-bar\r\n [progress]=\"uploadProgress\"\r\n [companyColor]=\"compColor\"\r\n [applicationTheme]=\"applicationTheme\"\r\n ></ui-progress-bar>\r\n <p class=\"upload-text\">\r\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\r\n @if (showUploadProgress) {\r\n <span>{{ uploadProgress }}</span\r\n >%\r\n }\r\n </p>\r\n </div>\r\n\r\n <ng-template #iconTpl>\r\n <ui-icon\r\n *ngIf=\"applicationTheme === 'classic'; else rebrandedIconTpl\"\r\n class=\"upload-icon\"\r\n name=\"File-upload\"\r\n ></ui-icon>\r\n <ng-template #rebrandedIconTpl>\r\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #rebrandedDnDCopyTpl>\r\n <p id=\"'drag-and-drop'\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\r\n </ng-template>\r\n\r\n <div\r\n *ngIf=\"!!supportedFileTypes\"\r\n [attr.theme]=\"applicationTheme\"\r\n class=\"upload-supported-files\"\r\n id=\"upload-supported-files\"\r\n >\r\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\r\n >{{ supportedFileTypes }}\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.upload-file-container{border-radius:8px;border:1px dashed #888888;background:#fff;display:flex;justify-content:center;align-items:center;height:196px;flex-flow:column;position:relative;max-width:563px;cursor:pointer}.upload-file-container:focus-visible{outline-offset:2px;outline:2px solid #242424;animation:focus-ring-animation .4s forwards}@keyframes focus-ring-animation{0%{outline-width:4px}to{outline-width:2px}}.upload-file-container.upload-errors{border:1px dashed #cb7b7a}.upload-file-container .upload-files{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;height:196px}.upload-file-container .upload-success,.upload-file-container .upload-browse{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;position:relative;height:196px}.upload-file-container .upload-success ui-icon.upload-icon,.upload-file-container .upload-browse ui-icon.upload-icon{margin-bottom:16px}.upload-file-container .upload-success ui-icon.upload-icon mat-icon.size-16 svg,.upload-file-container .upload-browse ui-icon.upload-icon mat-icon.size-16 svg{width:32px;height:32px}.upload-file-container .upload-success input,.upload-file-container .upload-browse input{visibility:hidden;position:absolute;z-index:2;width:100%;height:100%;cursor:pointer}.upload-file-container .upload-success .upload-text,.upload-file-container .upload-browse .upload-text{margin-top:16px}.upload-file-container .upload-success .upload-success-text,.upload-file-container .upload-browse .upload-success-text{color:#3c9a13;display:flex;align-items:center;gap:8px}.upload-file-container .upload-success p,.upload-file-container .upload-browse p{margin:0}.upload-file-container .upload-success p .semibold,.upload-file-container .upload-browse p .semibold{font-weight:400;text-decoration:underline;color:var(--color)}.upload-file-container .upload-success .errors,.upload-file-container .upload-browse .errors{width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:16px;font-size:12px;line-height:16px;color:#cb7b7a}.upload-file-container .upload-success .errors span,.upload-file-container .upload-browse .errors span{display:flex;align-items:center;margin-bottom:5px}.upload-file-container .upload-success .errors span:last-child,.upload-file-container .upload-browse .errors span:last-child{margin-bottom:0}.upload-file-container .upload-success .errors .error-icon,.upload-file-container .upload-browse .errors .error-icon{margin-right:4px}.upload-file-container .upload-success .errors .error-icon svg,.upload-file-container .upload-browse .errors .error-icon svg{color:#cb7b7a}.upload-file-container .upload-success .errors .error-icon mat-icon.size-16 svg,.upload-file-container .upload-browse .errors .error-icon mat-icon.size-16 svg{width:16px;height:16px}.upload-file-container .upload-progress{padding:0 32px;width:100%}.upload-file-container .upload-text{text-align:right}.upload-file-container[theme=dark],.upload-file-container[theme=light]{border-radius:10px;border-color:#242424}.upload-file-container[theme=dark].upload-file-container-disabled,.upload-file-container[theme=light].upload-file-container-disabled{border-color:#919191;color:#919191;background-color:#f4f4f4}.upload-file-container[theme=dark].upload-file-container-disabled .upload-icon svg,.upload-file-container[theme=light].upload-file-container-disabled .upload-icon svg{color:#919191}.upload-file-container[theme=dark].upload-errors,.upload-file-container[theme=light].upload-errors{border-color:#e02800}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):hover,.upload-file-container[theme=light]:not(.upload-file-container-disabled):hover{background:#f4f4f4;border-style:solid}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):active,.upload-file-container[theme=light]:not(.upload-file-container-disabled):active{background:#f4f4f4;transform:scale(.98)}.upload-file-container[theme=dark] .errors,.upload-file-container[theme=light] .errors{color:#e02800;font-size:14px}.upload-file-container[theme=dark] .errors .error-icon svg,.upload-file-container[theme=light] .errors .error-icon svg{color:#e02800}.upload-supported-files{left:0;position:absolute;top:100%;font-size:12px;line-height:16px;margin-top:8px;width:100%}.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:563px}.upload-supported-files span{font-weight:700;margin-right:5px}@media (max-width: 600px){.upload-file-container,.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:100%}}.transparent{opacity:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i3.ProgressBarComponent, selector: "ui-progress-bar", inputs: ["companyColor", "progress", "mode", "buffer", "applicationTheme", "ariaLabel", "ariaDescribedBy", "showPercentage"] }, { kind: "directive", type: i4.DragDropDirective, selector: "[uiDragDrop]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i5.UiTranslatePipe, name: "uiTranslate" }], animations: [
190
+ ], viewQueries: [{ propertyName: "fileDrop", first: true, predicate: ["fileDrop"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div\n class=\"upload-file-container\"\n uiDragDrop\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\n (fileDropped)=\"onFileDropped($event)\"\n [tabIndex]=\"0\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"fileDrop?.nativeElement?.click()\"\n >\n <div *ngIf=\"browse && !(success && !!file && progress)\" [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n\n <div class=\"errors\" *ngIf=\"!!errors || isMissedMinSize\" role=\"alert\">\n <ng-container *ngIf=\"!!errors\">\n <span *ngFor=\"let error of errors\"><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\n </ng-container>\n\n <span *ngIf=\"isMissedMinSize\">\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\n </span>\n </div>\n <input\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"'upload-supported-files'\"\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"file\"\n [accept]=\"supportedFileTypes\"\n [disabled]=\"disabled\"\n (change)=\"onChangeUpload($event)\"\n />\n <p *ngIf=\"applicationTheme === 'classic'; else rebrandedDnDCopyTpl\">\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\n </p>\n <span class=\"upload-text\">{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span>\n <span *ngIf=\"minFileSizeMB\" class=\"upload-text\"\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\n >\n </div>\n </div>\n @if (success) {\n <div class=\"upload-success\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n <span class=\"upload-success-text\"\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\n >\n <input\n [tabIndex]=\"-1\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileTest\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"upload-text\">{{ file?.name }}</span>\n @if (showFileSize) {\n <span class=\"upload-text\">{{\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\n }}</span>\n }\n </div>\n }\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\n <p>{{ file.name }}</p>\n <ui-progress-bar\n [progress]=\"uploadProgress\"\n [companyColor]=\"compColor\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-progress-bar>\n <p class=\"upload-text\">\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\n @if (showUploadProgress) {\n <span>{{ uploadProgress }}</span\n >%\n }\n </p>\n </div>\n\n <ng-template #iconTpl>\n <ui-icon\n *ngIf=\"applicationTheme === 'classic'; else rebrandedIconTpl\"\n class=\"upload-icon\"\n name=\"File-upload\"\n ></ui-icon>\n <ng-template #rebrandedIconTpl>\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n </ng-template>\n </ng-template>\n <ng-template #rebrandedDnDCopyTpl>\n <p id=\"'drag-and-drop'\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\n </ng-template>\n\n <div\n *ngIf=\"!!supportedFileTypes\"\n [attr.theme]=\"applicationTheme\"\n class=\"upload-supported-files\"\n id=\"upload-supported-files\"\n >\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\n >{{ supportedFileTypes }}\n </div>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.upload-file-container{border-radius:8px;border:1px dashed #888888;background:#fff;display:flex;justify-content:center;align-items:center;height:196px;flex-flow:column;position:relative;max-width:563px;cursor:pointer}.upload-file-container:focus-visible{outline-offset:2px;outline:2px solid #242424;animation:focus-ring-animation .4s forwards}@keyframes focus-ring-animation{0%{outline-width:4px}to{outline-width:2px}}.upload-file-container.upload-errors{border:1px dashed #cb7b7a}.upload-file-container .upload-files{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;height:196px}.upload-file-container .upload-success,.upload-file-container .upload-browse{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;position:relative;height:196px}.upload-file-container .upload-success ui-icon.upload-icon,.upload-file-container .upload-browse ui-icon.upload-icon{margin-bottom:16px}.upload-file-container .upload-success ui-icon.upload-icon mat-icon.size-16 svg,.upload-file-container .upload-browse ui-icon.upload-icon mat-icon.size-16 svg{width:32px;height:32px}.upload-file-container .upload-success input,.upload-file-container .upload-browse input{visibility:hidden;position:absolute;z-index:2;width:100%;height:100%;cursor:pointer}.upload-file-container .upload-success .upload-text,.upload-file-container .upload-browse .upload-text{margin-top:16px}.upload-file-container .upload-success .upload-success-text,.upload-file-container .upload-browse .upload-success-text{color:#3c9a13;display:flex;align-items:center;gap:8px}.upload-file-container .upload-success p,.upload-file-container .upload-browse p{margin:0}.upload-file-container .upload-success p .semibold,.upload-file-container .upload-browse p .semibold{font-weight:400;text-decoration:underline;color:var(--color)}.upload-file-container .upload-success .errors,.upload-file-container .upload-browse .errors{width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:16px;font-size:12px;line-height:16px;color:#cb7b7a}.upload-file-container .upload-success .errors span,.upload-file-container .upload-browse .errors span{display:flex;align-items:center;margin-bottom:5px}.upload-file-container .upload-success .errors span:last-child,.upload-file-container .upload-browse .errors span:last-child{margin-bottom:0}.upload-file-container .upload-success .errors .error-icon,.upload-file-container .upload-browse .errors .error-icon{margin-right:4px}.upload-file-container .upload-success .errors .error-icon svg,.upload-file-container .upload-browse .errors .error-icon svg{color:#cb7b7a}.upload-file-container .upload-success .errors .error-icon mat-icon.size-16 svg,.upload-file-container .upload-browse .errors .error-icon mat-icon.size-16 svg{width:16px;height:16px}.upload-file-container .upload-progress{padding:0 32px;width:100%}.upload-file-container .upload-text{text-align:right}.upload-file-container[theme=dark],.upload-file-container[theme=light]{border-radius:10px;border-color:#242424}.upload-file-container[theme=dark].upload-file-container-disabled,.upload-file-container[theme=light].upload-file-container-disabled{border-color:#919191;color:#919191;background-color:#f4f4f4}.upload-file-container[theme=dark].upload-file-container-disabled .upload-icon svg,.upload-file-container[theme=light].upload-file-container-disabled .upload-icon svg{color:#919191}.upload-file-container[theme=dark].upload-errors,.upload-file-container[theme=light].upload-errors{border-color:#e02800}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):hover,.upload-file-container[theme=light]:not(.upload-file-container-disabled):hover{background:#f4f4f4;border-style:solid}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):active,.upload-file-container[theme=light]:not(.upload-file-container-disabled):active{background:#f4f4f4;transform:scale(.98)}.upload-file-container[theme=dark] .errors,.upload-file-container[theme=light] .errors{color:#e02800;font-size:14px}.upload-file-container[theme=dark] .errors .error-icon svg,.upload-file-container[theme=light] .errors .error-icon svg{color:#e02800}.upload-supported-files{left:0;position:absolute;top:100%;font-size:12px;line-height:16px;margin-top:8px;width:100%}.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:563px}.upload-supported-files span{font-weight:700;margin-right:5px}@media (max-width: 600px){.upload-file-container,.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:100%}}.transparent{opacity:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i3.ProgressBarComponent, selector: "ui-progress-bar", inputs: ["companyColor", "progress", "mode", "buffer", "applicationTheme", "ariaLabel", "ariaDescribedBy", "showPercentage"] }, { kind: "directive", type: i4.DragDropDirective, selector: "[uiDragDrop]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i5.UiTranslatePipe, name: "uiTranslate" }], animations: [
191
191
  trigger('inOutAnimation', [
192
192
  transition(':enter', [
193
193
  style({ opacity: 0, height: 0 }),
@@ -259,7 +259,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
259
259
  animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
260
260
  ]),
261
261
  ]),
262
- ], template: "<ng-container>\r\n <div\r\n class=\"upload-file-container\"\r\n uiDragDrop\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-required]=\"ariaRequired\"\r\n [attr.theme]=\"applicationTheme\"\r\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\r\n (fileDropped)=\"onFileDropped($event)\"\r\n [tabIndex]=\"0\"\r\n (keydown)=\"onKeydown($event)\"\r\n (click)=\"fileDrop?.nativeElement?.click()\"\r\n >\r\n <div *ngIf=\"browse && !(success && !!file && progress)\" [@inOutAnimation] class=\"upload-files\">\r\n <div class=\"upload-browse\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\r\n\r\n <div class=\"errors\" *ngIf=\"!!errors || isMissedMinSize\" role=\"alert\">\r\n <ng-container *ngIf=\"!!errors\">\r\n <span *ngFor=\"let error of errors\"><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\r\n </ng-container>\r\n\r\n <span *ngIf=\"isMissedMinSize\">\r\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\r\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\r\n </span>\r\n </div>\r\n <input\r\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\r\n [attr.aria-describedby]=\"'upload-supported-files'\"\r\n [tabIndex]=\"-1\"\r\n class=\"form-control\"\r\n #fileDrop\r\n type=\"file\"\r\n id=\"file\"\r\n [accept]=\"supportedFileTypes\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChangeUpload($event)\"\r\n />\r\n <p *ngIf=\"applicationTheme === 'classic'; else rebrandedDnDCopyTpl\">\r\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\r\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\r\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\r\n </p>\r\n <span class=\"upload-text\">{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span>\r\n <span *ngIf=\"minFileSizeMB\" class=\"upload-text\"\r\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\r\n >\r\n </div>\r\n </div>\r\n @if (success) {\r\n <div class=\"upload-success\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\r\n <span class=\"upload-success-text\"\r\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\r\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\r\n >\r\n <input\r\n [tabIndex]=\"-1\"\r\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\r\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\r\n class=\"form-control\"\r\n #fileDrop\r\n type=\"file\"\r\n id=\"fileTest\"\r\n [accept]=\"supportedFileTypes\"\r\n (change)=\"onChangeUpload($event)\"\r\n [disabled]=\"disabled\"\r\n />\r\n <span class=\"upload-text\">{{ file?.name }}</span>\r\n @if (showFileSize) {\r\n <span class=\"upload-text\">{{\r\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\r\n }}</span>\r\n }\r\n </div>\r\n }\r\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\r\n <p>{{ file.name }}</p>\r\n <ui-progress-bar\r\n [progress]=\"uploadProgress\"\r\n [companyColor]=\"compColor\"\r\n [applicationTheme]=\"applicationTheme\"\r\n ></ui-progress-bar>\r\n <p class=\"upload-text\">\r\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\r\n @if (showUploadProgress) {\r\n <span>{{ uploadProgress }}</span\r\n >%\r\n }\r\n </p>\r\n </div>\r\n\r\n <ng-template #iconTpl>\r\n <ui-icon\r\n *ngIf=\"applicationTheme === 'classic'; else rebrandedIconTpl\"\r\n class=\"upload-icon\"\r\n name=\"File-upload\"\r\n ></ui-icon>\r\n <ng-template #rebrandedIconTpl>\r\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #rebrandedDnDCopyTpl>\r\n <p id=\"'drag-and-drop'\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\r\n </ng-template>\r\n\r\n <div\r\n *ngIf=\"!!supportedFileTypes\"\r\n [attr.theme]=\"applicationTheme\"\r\n class=\"upload-supported-files\"\r\n id=\"upload-supported-files\"\r\n >\r\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\r\n >{{ supportedFileTypes }}\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.upload-file-container{border-radius:8px;border:1px dashed #888888;background:#fff;display:flex;justify-content:center;align-items:center;height:196px;flex-flow:column;position:relative;max-width:563px;cursor:pointer}.upload-file-container:focus-visible{outline-offset:2px;outline:2px solid #242424;animation:focus-ring-animation .4s forwards}@keyframes focus-ring-animation{0%{outline-width:4px}to{outline-width:2px}}.upload-file-container.upload-errors{border:1px dashed #cb7b7a}.upload-file-container .upload-files{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;height:196px}.upload-file-container .upload-success,.upload-file-container .upload-browse{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;position:relative;height:196px}.upload-file-container .upload-success ui-icon.upload-icon,.upload-file-container .upload-browse ui-icon.upload-icon{margin-bottom:16px}.upload-file-container .upload-success ui-icon.upload-icon mat-icon.size-16 svg,.upload-file-container .upload-browse ui-icon.upload-icon mat-icon.size-16 svg{width:32px;height:32px}.upload-file-container .upload-success input,.upload-file-container .upload-browse input{visibility:hidden;position:absolute;z-index:2;width:100%;height:100%;cursor:pointer}.upload-file-container .upload-success .upload-text,.upload-file-container .upload-browse .upload-text{margin-top:16px}.upload-file-container .upload-success .upload-success-text,.upload-file-container .upload-browse .upload-success-text{color:#3c9a13;display:flex;align-items:center;gap:8px}.upload-file-container .upload-success p,.upload-file-container .upload-browse p{margin:0}.upload-file-container .upload-success p .semibold,.upload-file-container .upload-browse p .semibold{font-weight:400;text-decoration:underline;color:var(--color)}.upload-file-container .upload-success .errors,.upload-file-container .upload-browse .errors{width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:16px;font-size:12px;line-height:16px;color:#cb7b7a}.upload-file-container .upload-success .errors span,.upload-file-container .upload-browse .errors span{display:flex;align-items:center;margin-bottom:5px}.upload-file-container .upload-success .errors span:last-child,.upload-file-container .upload-browse .errors span:last-child{margin-bottom:0}.upload-file-container .upload-success .errors .error-icon,.upload-file-container .upload-browse .errors .error-icon{margin-right:4px}.upload-file-container .upload-success .errors .error-icon svg,.upload-file-container .upload-browse .errors .error-icon svg{color:#cb7b7a}.upload-file-container .upload-success .errors .error-icon mat-icon.size-16 svg,.upload-file-container .upload-browse .errors .error-icon mat-icon.size-16 svg{width:16px;height:16px}.upload-file-container .upload-progress{padding:0 32px;width:100%}.upload-file-container .upload-text{text-align:right}.upload-file-container[theme=dark],.upload-file-container[theme=light]{border-radius:10px;border-color:#242424}.upload-file-container[theme=dark].upload-file-container-disabled,.upload-file-container[theme=light].upload-file-container-disabled{border-color:#919191;color:#919191;background-color:#f4f4f4}.upload-file-container[theme=dark].upload-file-container-disabled .upload-icon svg,.upload-file-container[theme=light].upload-file-container-disabled .upload-icon svg{color:#919191}.upload-file-container[theme=dark].upload-errors,.upload-file-container[theme=light].upload-errors{border-color:#e02800}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):hover,.upload-file-container[theme=light]:not(.upload-file-container-disabled):hover{background:#f4f4f4;border-style:solid}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):active,.upload-file-container[theme=light]:not(.upload-file-container-disabled):active{background:#f4f4f4;transform:scale(.98)}.upload-file-container[theme=dark] .errors,.upload-file-container[theme=light] .errors{color:#e02800;font-size:14px}.upload-file-container[theme=dark] .errors .error-icon svg,.upload-file-container[theme=light] .errors .error-icon svg{color:#e02800}.upload-supported-files{left:0;position:absolute;top:100%;font-size:12px;line-height:16px;margin-top:8px;width:100%}.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:563px}.upload-supported-files span{font-weight:700;margin-right:5px}@media (max-width: 600px){.upload-file-container,.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:100%}}.transparent{opacity:0}\n"] }]
262
+ ], template: "<ng-container>\n <div\n class=\"upload-file-container\"\n uiDragDrop\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.theme]=\"applicationTheme\"\n [ngClass]=\"{ 'upload-errors': !!errors || isMissedMinSize, 'upload-file-container-disabled': disabled }\"\n (fileDropped)=\"onFileDropped($event)\"\n [tabIndex]=\"0\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"fileDrop?.nativeElement?.click()\"\n >\n <div *ngIf=\"browse && !(success && !!file && progress)\" [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n\n <div class=\"errors\" *ngIf=\"!!errors || isMissedMinSize\" role=\"alert\">\n <ng-container *ngIf=\"!!errors\">\n <span *ngFor=\"let error of errors\"><ui-icon name=\"Error\" class=\"error-icon\"></ui-icon> {{ error }}</span>\n </ng-container>\n\n <span *ngIf=\"isMissedMinSize\">\n <ui-icon name=\"Error\" class=\"error-icon\"></ui-icon>\n {{ translationContext + 'MIN_SIZE_ERROR' | uiTranslate: { min: minFileSizeMB } | async }}\n </span>\n </div>\n <input\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"'upload-supported-files'\"\n [tabIndex]=\"-1\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"file\"\n [accept]=\"supportedFileTypes\"\n [disabled]=\"disabled\"\n (change)=\"onChangeUpload($event)\"\n />\n <p *ngIf=\"applicationTheme === 'classic'; else rebrandedDnDCopyTpl\">\n {{ translationContext + 'DRAG_AND_DROP_OR' | uiTranslate | async }}\n <span class=\"semibold\"> {{ translationContext + 'BROWSE' | uiTranslate | async | lowercase }}</span>\n {{ translationContext + 'YOUR_FILES' | uiTranslate | async }}\n </p>\n <span class=\"upload-text\">{{ maxFileSizeMB }}{{ translationContext + 'MAX_SIZE' | uiTranslate | async }}</span>\n <span *ngIf=\"minFileSizeMB\" class=\"upload-text\"\n >{{ minFileSizeMB }}{{ translationContext + 'MIN_SIZE' | uiTranslate | async }}</span\n >\n </div>\n </div>\n @if (success) {\n <div class=\"upload-success\">\n <ng-container [ngTemplateOutlet]=\"iconTpl\"></ng-container>\n <span class=\"upload-success-text\"\n ><ui-icon name=\"Check-round-in-line\" [color]=\"colorUploadSuccess\"></ui-icon\n >{{ translationContext + 'FILE_UPLOADING_SUCCESS' | uiTranslate | async }}</span\n >\n <input\n [tabIndex]=\"-1\"\n [attr.aria-labelledby]=\"success || progress ? '' : 'drag-and-drop'\"\n [attr.aria-describedby]=\"success || progress ? '' : 'supported-file-types'\"\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileTest\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <span class=\"upload-text\">{{ file?.name }}</span>\n @if (showFileSize) {\n <span class=\"upload-text\">{{\n translationContext + 'FILE_SIZE' | uiTranslate: { fileSize: fileSizeInMB } | async\n }}</span>\n }\n </div>\n }\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\n <p>{{ file.name }}</p>\n <ui-progress-bar\n [progress]=\"uploadProgress\"\n [companyColor]=\"compColor\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-progress-bar>\n <p class=\"upload-text\">\n {{ fileProcessingMessage ?? (translationContext + 'UPLOADING' | uiTranslate | async) }}\n @if (showUploadProgress) {\n <span>{{ uploadProgress }}</span\n >%\n }\n </p>\n </div>\n\n <ng-template #iconTpl>\n <ui-icon\n *ngIf=\"applicationTheme === 'classic'; else rebrandedIconTpl\"\n class=\"upload-icon\"\n name=\"File-upload\"\n ></ui-icon>\n <ng-template #rebrandedIconTpl>\n <ui-icon class=\"upload-icon\" name=\"Upload\" [size]=\"'24'\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n </ng-template>\n </ng-template>\n <ng-template #rebrandedDnDCopyTpl>\n <p id=\"'drag-and-drop'\">{{ translationContext + 'DRAG_AND_DROP' | uiTranslate | async }}</p>\n </ng-template>\n\n <div\n *ngIf=\"!!supportedFileTypes\"\n [attr.theme]=\"applicationTheme\"\n class=\"upload-supported-files\"\n id=\"upload-supported-files\"\n >\n <span>{{ translationContext + 'SUPPORTED_FILE_TYPES' | uiTranslate | async }}</span\n >{{ supportedFileTypes }}\n </div>\n </div>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.upload-file-container{border-radius:8px;border:1px dashed #888888;background:#fff;display:flex;justify-content:center;align-items:center;height:196px;flex-flow:column;position:relative;max-width:563px;cursor:pointer}.upload-file-container:focus-visible{outline-offset:2px;outline:2px solid #242424;animation:focus-ring-animation .4s forwards}@keyframes focus-ring-animation{0%{outline-width:4px}to{outline-width:2px}}.upload-file-container.upload-errors{border:1px dashed #cb7b7a}.upload-file-container .upload-files{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;height:196px}.upload-file-container .upload-success,.upload-file-container .upload-browse{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;position:relative;height:196px}.upload-file-container .upload-success ui-icon.upload-icon,.upload-file-container .upload-browse ui-icon.upload-icon{margin-bottom:16px}.upload-file-container .upload-success ui-icon.upload-icon mat-icon.size-16 svg,.upload-file-container .upload-browse ui-icon.upload-icon mat-icon.size-16 svg{width:32px;height:32px}.upload-file-container .upload-success input,.upload-file-container .upload-browse input{visibility:hidden;position:absolute;z-index:2;width:100%;height:100%;cursor:pointer}.upload-file-container .upload-success .upload-text,.upload-file-container .upload-browse .upload-text{margin-top:16px}.upload-file-container .upload-success .upload-success-text,.upload-file-container .upload-browse .upload-success-text{color:#3c9a13;display:flex;align-items:center;gap:8px}.upload-file-container .upload-success p,.upload-file-container .upload-browse p{margin:0}.upload-file-container .upload-success p .semibold,.upload-file-container .upload-browse p .semibold{font-weight:400;text-decoration:underline;color:var(--color)}.upload-file-container .upload-success .errors,.upload-file-container .upload-browse .errors{width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:16px;font-size:12px;line-height:16px;color:#cb7b7a}.upload-file-container .upload-success .errors span,.upload-file-container .upload-browse .errors span{display:flex;align-items:center;margin-bottom:5px}.upload-file-container .upload-success .errors span:last-child,.upload-file-container .upload-browse .errors span:last-child{margin-bottom:0}.upload-file-container .upload-success .errors .error-icon,.upload-file-container .upload-browse .errors .error-icon{margin-right:4px}.upload-file-container .upload-success .errors .error-icon svg,.upload-file-container .upload-browse .errors .error-icon svg{color:#cb7b7a}.upload-file-container .upload-success .errors .error-icon mat-icon.size-16 svg,.upload-file-container .upload-browse .errors .error-icon mat-icon.size-16 svg{width:16px;height:16px}.upload-file-container .upload-progress{padding:0 32px;width:100%}.upload-file-container .upload-text{text-align:right}.upload-file-container[theme=dark],.upload-file-container[theme=light]{border-radius:10px;border-color:#242424}.upload-file-container[theme=dark].upload-file-container-disabled,.upload-file-container[theme=light].upload-file-container-disabled{border-color:#919191;color:#919191;background-color:#f4f4f4}.upload-file-container[theme=dark].upload-file-container-disabled .upload-icon svg,.upload-file-container[theme=light].upload-file-container-disabled .upload-icon svg{color:#919191}.upload-file-container[theme=dark].upload-errors,.upload-file-container[theme=light].upload-errors{border-color:#e02800}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):hover,.upload-file-container[theme=light]:not(.upload-file-container-disabled):hover{background:#f4f4f4;border-style:solid}.upload-file-container[theme=dark]:not(.upload-file-container-disabled):active,.upload-file-container[theme=light]:not(.upload-file-container-disabled):active{background:#f4f4f4;transform:scale(.98)}.upload-file-container[theme=dark] .errors,.upload-file-container[theme=light] .errors{color:#e02800;font-size:14px}.upload-file-container[theme=dark] .errors .error-icon svg,.upload-file-container[theme=light] .errors .error-icon svg{color:#e02800}.upload-supported-files{left:0;position:absolute;top:100%;font-size:12px;line-height:16px;margin-top:8px;width:100%}.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:563px}.upload-supported-files span{font-weight:700;margin-right:5px}@media (max-width: 600px){.upload-file-container,.upload-supported-files[theme=dark],.upload-supported-files[theme=light]{max-width:100%}}.transparent{opacity:0}\n"] }]
263
263
  }], ctorParameters: () => [{ type: undefined, decorators: [{
264
264
  type: Optional
265
265
  }, {
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
304
304
  type: ViewChild,
305
305
  args: ['fileDrop']
306
306
  }] } });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQWdEbEQsTUFBTSxPQUFPLG1CQUFtQjtJQXFJOUIsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEUsQ0FBQztJQVNELFlBQzZFLGVBQWlDO1FBQWpDLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQWhKL0YsVUFBSyxHQUFHLGdCQUFnQixDQUFDO1FBZ0N4Qzs7Ozs7V0FLRztRQUNNLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQWtCNUM7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7OztXQUtHO1FBQ00sU0FBSSxHQUFnQixJQUFJLENBQUM7UUFFbEM7Ozs7OztXQU1HO1FBQ00saUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSzFDOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFVdEQ7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU5Qjs7OztXQUlHO1FBQ00saUJBQVksR0FBRyxJQUFJLENBQUM7UUFFbkIsV0FBTSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBSTdDLHVCQUFrQixHQUFHLGNBQWMsQ0FBQztRQUV2RDs7V0FFRztRQUNILGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRTFCOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQU1uQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQix1QkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBS3BDLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLGFBQWEsQ0FBQyxLQUFlO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixjQUFjLENBQUMsS0FBWTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBaUMsQ0FBQztRQUN4RCx5R0FBeUc7UUFDekcsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsUUFBUSxDQUFDLEtBQWU7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGVBQWU7WUFDbEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2RyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsV0FBVztRQUNULE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBWTtRQUNyQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFTyxZQUFZLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxRQUFRLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQWlCO1FBQ3pCLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDOytHQW5RVSxtQkFBbUIsa0JBaUpSLG9DQUFvQzttR0FqSi9DLG1CQUFtQiw0bEJBekNuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixxSkNqQ0gsMGhLQXNIQSwrelBEbkZjO1lBQ1YsT0FBTyxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRSxDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUN0QyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzFELENBQUM7YUFDSCxDQUFDO1lBQ0YsT0FBTyxDQUFDLHdCQUF3QixFQUFFO2dCQUNoQyxVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRSxDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUN0QyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzFELENBQUM7YUFDSCxDQUFDO1lBQ0YsT0FBTyxDQUFDLHNCQUFzQixFQUFFO2dCQUM5QixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRSxDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO29CQUN0QyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzFELENBQUM7YUFDSCxDQUFDO1NBQ0g7OzRGQUVVLG1CQUFtQjtrQkE5Qy9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUdYLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DO3dCQUNWLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTs0QkFDeEIsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQzs2QkFDakUsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztnQ0FDdEMsT0FBTyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUMxRCxDQUFDO3lCQUNILENBQUM7d0JBQ0YsT0FBTyxDQUFDLHdCQUF3QixFQUFFOzRCQUNoQyxVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDaEMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDOzZCQUNqRSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dDQUN0QyxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQzFELENBQUM7eUJBQ0gsQ0FBQzt3QkFDRixPQUFPLENBQUMsc0JBQXNCLEVBQUU7NEJBQzlCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dDQUNoQyxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7NkJBQ2pFLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0NBQ3RDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDMUQsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzswQkFtSkUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQ0FBb0M7eUNBaEozQyxLQUFLO3NCQUFuQixXQUFXO2dCQU9ILGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFRRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQVFHLE1BQU07c0JBQWQsS0FBSztnQkFRRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFHLElBQUk7c0JBQVosS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsV0FBVzt1QkFBQyxlQUFlO2dCQVVuQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcclxuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sb3JzLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktZmlsZS11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVVwbG9hZENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uJywgW1xyXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pKSxcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcclxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSksXHJcbiAgICAgIF0pLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvblByb2dyZXNzJywgW1xyXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pKSxcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcclxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSksXHJcbiAgICAgIF0pLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbkNoYW5nZScsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSksXHJcbiAgICAgIF0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSksXHJcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpLFxyXG4gICAgICBdKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9ICd1aS1maWxlLXVwbG9hZCc7XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplTUI6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbWluRmlsZVNpemVNQjogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBTdXBwb3J0ZWQgZmlsZXMgZm9yIGlucHV0IGZpZWxkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgc3VwcG9ydGVkRmlsZVR5cGVzPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBVcGxvYWQgcHJvZ3Jlc3NcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzczogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93IFVwbG9hZCBwcm9ncmVzcyBwZXJjZW50YWdlIG9yIG5vdFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93VXBsb2FkUHJvZ3Jlc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gcHJvZ3Jlc3MgbWVzc2FnZVxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZpbGVQcm9jZXNzaW5nTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGaWxlIHVwbG9hZCBlcnJvcnNcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGVycm9ycz86IHN0cmluZ1tdIHwgbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsZSB1cGxvYWQgZGlzYWJsZWRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXhpc3RpbmcgZmlsZSBpbmZvcm1hdGlvblxyXG4gICAqXHJcbiAgICogQHR5cGUgeyhGaWxlIHwgbnVsbCl9XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBmaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbG9yIG9mIHRoZSBmaWxlIHVwbG9hZC5cclxuICAgKiBEZWZhdWx0cyB0byBUZXN0IEdvcmlsbGEgcHJpbWFyeSBjb2xvci5cclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBjb21wYW55Q29sb3I6IHN0cmluZyB8IG51bGwgPSAnJztcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWNvbG9yJylcclxuICBjb21wQ29sb3I6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIGxhYmVsIGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFuIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkIGZvciBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0byBzaG93IHRoZSBmaWxlIHNpemUgaW5mb3JtYXRpb24uXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93RmlsZVNpemUgPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgT25Ecm9wOiBFdmVudEVtaXR0ZXI8RmlsZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVEcm9wJykgZmlsZURyb3A6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvbkNvbnRleHQgPSAnRklMRV9VUExPQUQuJztcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBvblRvdWNoID0gKCkgPT4ge307XHJcblxyXG4gIGdldCBmaWxlU2l6ZUluTUIoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlID8gKHRoaXMuZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc01pc3NlZE1pblNpemUgPSBmYWxzZTtcclxuICBwcm9ncmVzcyA9IGZhbHNlO1xyXG4gIHN1Y2Nlc3MgPSBmYWxzZTtcclxuICBicm93c2U6IGJvb2xlYW47XHJcbiAgaXNDYW5jZWxlZCA9IGZhbHNlO1xyXG4gIGNvbG9yVXBsb2FkU3VjY2VzcyA9IENvbG9yLlNVQ0NFU1NfNTA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lXHJcbiAgKSB7XHJcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XHJcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5icm93c2UgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9XaGVuIGZpbGUgaXMgZHJvcHBlZFxyXG4gIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0KSB7XHJcbiAgICB0aGlzLmVtaXRGaWxlKGZpbGVzKTtcclxuICB9XHJcblxyXG4gIC8vV2hlbiBpbnB1dCBjaGFuZ2VzXHJcbiAgb25DaGFuZ2VVcGxvYWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmlzQ2FuY2VsZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAvLyBQcmV2ZW50cyBjbGVhcmluZyBpdGVtcyB3aGVuIHVzZXIgc2VsZWN0cyBjYW5jZWwgaW4gdGhlIGRpYWxvZy4gQ2FuY2VsIGV2ZW50IGNhbiBlbWl0IGVtcHR5IGZpbGUgbGlzdC5cclxuICAgIGlmIChlbGVtZW50LmZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5lbWl0RmlsZShlbGVtZW50LmZpbGVzIHx8IG5ldyBGaWxlTGlzdCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRW1pdCBkcm9wIGZpbGVcclxuICBlbWl0RmlsZShmaWxlczogRmlsZUxpc3QpIHtcclxuICAgIGNvbnN0IFtmaWxlXSA9IEFycmF5LmZyb20oZmlsZXMpO1xyXG4gICAgdGhpcy5maWxlID0gZmlsZTtcclxuICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgdGhpcy5pc01pc3NlZE1pblNpemUgPVxyXG4gICAgICAhZmlsZT8uc2l6ZSAmJiAhdGhpcy5taW5GaWxlU2l6ZU1CID8gdHJ1ZSA6IHRoaXMuZmlsZVNpemVUb01CKGZpbGU/LnNpemUgPz8gMCkgPD0gdGhpcy5taW5GaWxlU2l6ZU1CO1xyXG4gICAgaWYgKCF0aGlzLmlzTWlzc2VkTWluU2l6ZSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZSk7XHJcbiAgICAgIHRoaXMuT25Ecm9wLmVtaXQoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1Nob3cgcHJvZ3Jlc3MtYmFyXHJcbiAgc2hvd1Byb2dyZXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5icm93c2UgPSBmYWxzZTtcclxuICAgIHJldHVybiAhISh0aGlzLmZpbGUgJiYgIXRoaXMuZXJyb3JzICYmICF0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XHJcbiAgfVxyXG5cclxuICAvL1Nob3cgc3VjY2VzcyBlbGVtZW50c1xyXG4gIHNob3dTdWNjZXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKHRoaXMuZmlsZSAmJiB0aGlzLnVwbG9hZFByb2dyZXNzID09PSAxMDAgJiYgIXRoaXMuZXJyb3JzICYmICF0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XHJcbiAgfVxyXG5cclxuICAvL1Nob3cgYnJvd3NlIHdoZW4gdGhlcmUgYXJlIGVycm9yXHJcbiAgc2hvd0Jyb3dzZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhISh0aGlzLmVycm9ycyB8fCB0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNDYW5jZWxlZCkge1xyXG4gICAgICBpZiAoY2hhbmdlc1sndXBsb2FkUHJvZ3Jlc3MnXSB8fCBjaGFuZ2VzWydmaWxlJ10pIHtcclxuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcclxuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XHJcbiAgICAgICAgdGhpcy5icm93c2UgPSB0aGlzLnNob3dCcm93c2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY2hhbmdlc1snZXJyb3JzJ10pIHtcclxuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcclxuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XHJcbiAgICAgICAgdGhpcy5icm93c2UgPSB0aGlzLnNob3dCcm93c2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY2hhbmdlc1snYXBwbGljYXRpb25UaGVtZSddKSB7XHJcbiAgICAgICAgdGhpcy5jb21wQ29sb3IgPSB0aGlzLmdldENvbXBhbnlDb2xvcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlPzogRmlsZSk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZmlsZSA9IHZhbHVlIHx8IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBhbnlDb2xvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcGFueUNvbG9yIHx8ICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICcjNDZBOTk3JyA6ICcjRDQxMEFBJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVTaXplVG9NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBmaWxlU2l6ZSAvIDEwMjQgLyAxMDI0O1xyXG4gIH1cclxuXHJcbiAgb25LZXlkb3duKGV2OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXYua2V5ID09PSAnRW50ZXInIHx8IGV2LmtleSA9PT0gJyAnKSB7XHJcbiAgICAgIHRoaXMuZmlsZURyb3A/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XHJcbiAgICB9IGVsc2UgaWYgKGV2LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgdGhpcy5maWxlID0gbnVsbDtcclxuICAgICAgdGhpcy5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmlzTWlzc2VkTWluU2l6ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmJyb3dzZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNDYW5jZWxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJ1cGxvYWQtZmlsZS1jb250YWluZXJcIlxyXG4gICAgdWlEcmFnRHJvcFxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxyXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIlxyXG4gICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICd1cGxvYWQtZXJyb3JzJzogISFlcnJvcnMgfHwgaXNNaXNzZWRNaW5TaXplLCAndXBsb2FkLWZpbGUtY29udGFpbmVyLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXHJcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcclxuICAgIFt0YWJJbmRleF09XCIwXCJcclxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcclxuICAgIChjbGljayk9XCJmaWxlRHJvcD8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiXHJcbiAgPlxyXG4gICAgPGRpdiAqbmdJZj1cImJyb3dzZSAmJiAhKHN1Y2Nlc3MgJiYgISFmaWxlICYmIHByb2dyZXNzKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYnJvd3NlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvcnNcIiAqbmdJZj1cIiEhZXJyb3JzIHx8IGlzTWlzc2VkTWluU2l6ZVwiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhZXJyb3JzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj48dWktaWNvbiBuYW1lPVwiRXJyb3JcIiBjbGFzcz1cImVycm9yLWljb25cIj48L3VpLWljb24+IHt7IGVycm9yIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01pc3NlZE1pblNpemVcIj5cclxuICAgICAgICAgICAgPHVpLWljb24gbmFtZT1cIkVycm9yXCIgY2xhc3M9XCJlcnJvci1pY29uXCI+PC91aS1pY29uPlxyXG4gICAgICAgICAgICB7eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnTUlOX1NJWkVfRVJST1InIHwgdWlUcmFuc2xhdGU6IHsgbWluOiBtaW5GaWxlU2l6ZU1CIH0gfCBhc3luYyB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdkcmFnLWFuZC1kcm9wJ1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIid1cGxvYWQtc3VwcG9ydGVkLWZpbGVzJ1wiXHJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgI2ZpbGVEcm9wXHJcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICBpZD1cImZpbGVcIlxyXG4gICAgICAgICAgW2FjY2VwdF09XCJzdXBwb3J0ZWRGaWxlVHlwZXNcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2VVcGxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8cCAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWREbkRDb3B5VHBsXCI+XHJcbiAgICAgICAgICB7eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnRFJBR19BTkRfRFJPUF9PUicgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbWlib2xkXCI+IHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdCUk9XU0UnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB8IGxvd2VyY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdZT1VSX0ZJTEVTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7IG1heEZpbGVTaXplTUIgfX17eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnTUFYX1NJWkUnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIm1pbkZpbGVTaXplTUJcIiBjbGFzcz1cInVwbG9hZC10ZXh0XCJcclxuICAgICAgICAgID57eyBtaW5GaWxlU2l6ZU1CIH19e3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ01JTl9TSVpFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1zdWNjZXNzXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtc3VjY2Vzcy10ZXh0XCJcclxuICAgICAgICAgID48dWktaWNvbiBuYW1lPVwiQ2hlY2stcm91bmQtaW4tbGluZVwiIFtjb2xvcl09XCJjb2xvclVwbG9hZFN1Y2Nlc3NcIj48L3VpLWljb25cclxuICAgICAgICAgID57eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnRklMRV9VUExPQURJTkdfU1VDQ0VTUycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzdWNjZXNzIHx8IHByb2dyZXNzID8gJycgOiAnZHJhZy1hbmQtZHJvcCdcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzdWNjZXNzIHx8IHByb2dyZXNzID8gJycgOiAnc3VwcG9ydGVkLWZpbGUtdHlwZXMnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICNmaWxlRHJvcFxyXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgaWQ9XCJmaWxlVGVzdFwiXHJcbiAgICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZEZpbGVUeXBlc1wiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlVXBsb2FkKCRldmVudClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIj57eyBmaWxlPy5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgIEBpZiAoc2hvd0ZpbGVTaXplKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC10ZXh0XCI+e3tcclxuICAgICAgICAgICAgdHJhbnNsYXRpb25Db250ZXh0ICsgJ0ZJTEVfU0laRScgfCB1aVRyYW5zbGF0ZTogeyBmaWxlU2l6ZTogZmlsZVNpemVJbk1CIH0gfCBhc3luY1xyXG4gICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtcHJvZ3Jlc3NcIiBbQGluT3V0QW5pbWF0aW9uUHJvZ3Jlc3NdICpuZ0lmPVwiISFwcm9ncmVzcyAmJiAhIWZpbGUgJiYgIXN1Y2Nlc3NcIj5cclxuICAgICAgPHA+e3sgZmlsZS5uYW1lIH19PC9wPlxyXG4gICAgICA8dWktcHJvZ3Jlc3MtYmFyXHJcbiAgICAgICAgW3Byb2dyZXNzXT1cInVwbG9hZFByb2dyZXNzXCJcclxuICAgICAgICBbY29tcGFueUNvbG9yXT1cImNvbXBDb2xvclwiXHJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICAgID48L3VpLXByb2dyZXNzLWJhcj5cclxuICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPlxyXG4gICAgICAgIHt7IGZpbGVQcm9jZXNzaW5nTWVzc2FnZSA/PyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1VQTE9BRElORycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB9fVxyXG4gICAgICAgIEBpZiAoc2hvd1VwbG9hZFByb2dyZXNzKSB7XHJcbiAgICAgICAgICA8c3Bhbj57eyB1cGxvYWRQcm9ncmVzcyB9fTwvc3BhblxyXG4gICAgICAgICAgPiVcclxuICAgICAgICB9XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvblRwbD5cclxuICAgICAgPHVpLWljb25cclxuICAgICAgICAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWRJY29uVHBsXCJcclxuICAgICAgICBjbGFzcz1cInVwbG9hZC1pY29uXCJcclxuICAgICAgICBuYW1lPVwiRmlsZS11cGxvYWRcIlxyXG4gICAgICA+PC91aS1pY29uPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZEljb25UcGw+XHJcbiAgICAgICAgPHVpLWljb24gY2xhc3M9XCJ1cGxvYWQtaWNvblwiIG5hbWU9XCJVcGxvYWRcIiBbc2l6ZV09XCInMjQnXCIgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiPjwvdWktaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZERuRENvcHlUcGw+XHJcbiAgICAgIDxwIGlkPVwiJ2RyYWctYW5kLWRyb3AnXCI+e3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ0RSQUdfQU5EX0RST1AnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvcD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIiEhc3VwcG9ydGVkRmlsZVR5cGVzXCJcclxuICAgICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICAgIGNsYXNzPVwidXBsb2FkLXN1cHBvcnRlZC1maWxlc1wiXHJcbiAgICAgIGlkPVwidXBsb2FkLXN1cHBvcnRlZC1maWxlc1wiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuPnt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdTVVBQT1JURURfRklMRV9UWVBFUycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuXHJcbiAgICAgID57eyBzdXBwb3J0ZWRGaWxlVHlwZXMgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQWdEbEQsTUFBTSxPQUFPLG1CQUFtQjtJQXFJOUIsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEUsQ0FBQztJQVNELFlBQzZFLGVBQWlDO1FBQWpDLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQWhKL0YsVUFBSyxHQUFHLGdCQUFnQixDQUFDO1FBZ0N4Qzs7Ozs7V0FLRztRQUNNLHVCQUFrQixH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QUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4uLy4uL21vZGVscy9jb2xvcnMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVVwbG9hZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb25Qcm9ncmVzcycsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uQ2hhbmdlJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9ICd1aS1maWxlLXVwbG9hZCc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtYXhGaWxlU2l6ZU1COiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtaW5GaWxlU2l6ZU1COiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFN1cHBvcnRlZCBmaWxlcyBmb3IgaW5wdXQgZmllbGRcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHN1cHBvcnRlZEZpbGVUeXBlcz86IHN0cmluZztcblxuICAvKipcbiAgICogVXBsb2FkIHByb2dyZXNzXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaG93IFVwbG9hZCBwcm9ncmVzcyBwZXJjZW50YWdlIG9yIG5vdFxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRQcm9ncmVzczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBwcm9ncmVzcyBtZXNzYWdlXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBmaWxlUHJvY2Vzc2luZ01lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlsZSB1cGxvYWQgZXJyb3JzXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGVycm9ycz86IHN0cmluZ1tdIHwgbnVsbDtcblxuICAvKipcbiAgICogRmlsZSB1cGxvYWQgZGlzYWJsZWRcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFeGlzdGluZyBmaWxlIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHsoRmlsZSB8IG51bGwpfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZmlsZTogRmlsZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDb2xvciBvZiB0aGUgZmlsZSB1cGxvYWQuXG4gICAqIERlZmF1bHRzIHRvIFRlc3QgR29yaWxsYSBwcmltYXJ5IGNvbG9yLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY29tcGFueUNvbG9yOiBzdHJpbmcgfCBudWxsID0gJyc7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWNvbG9yJylcbiAgY29tcENvbG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSBsYWJlbCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBsYWJlbCBpcyB1c2VkIHRvIHByb3ZpZGUgYW4gYWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBpbnB1dCBmaWVsZCBpcyByZXF1aXJlZCBmb3IgZm9ybSBzdWJtaXNzaW9uLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFyaWFSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGZpbGUgc2l6ZSBpbmZvcm1hdGlvbi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzaG93RmlsZVNpemUgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBPbkRyb3A6IEV2ZW50RW1pdHRlcjxGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcblxuICBAVmlld0NoaWxkKCdmaWxlRHJvcCcpIGZpbGVEcm9wOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvbkNvbnRleHQgPSAnRklMRV9VUExPQUQuJztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaCA9ICgpID0+IHt9O1xuXG4gIGdldCBmaWxlU2l6ZUluTUIoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZSA/ICh0aGlzLmZpbGUuc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgOiBudWxsO1xuICB9XG5cbiAgaXNNaXNzZWRNaW5TaXplID0gZmFsc2U7XG4gIHByb2dyZXNzID0gZmFsc2U7XG4gIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgYnJvd3NlOiBib29sZWFuO1xuICBpc0NhbmNlbGVkID0gZmFsc2U7XG4gIGNvbG9yVXBsb2FkU3VjY2VzcyA9IENvbG9yLlNVQ0NFU1NfNTA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJyb3dzZSA9IHRydWU7XG4gIH1cblxuICAvL1doZW4gZmlsZSBpcyBkcm9wcGVkXG4gIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgdGhpcy5lbWl0RmlsZShmaWxlcyk7XG4gIH1cblxuICAvL1doZW4gaW5wdXQgY2hhbmdlc1xuICBvbkNoYW5nZVVwbG9hZChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmlzQ2FuY2VsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIC8vIFByZXZlbnRzIGNsZWFyaW5nIGl0ZW1zIHdoZW4gdXNlciBzZWxlY3RzIGNhbmNlbCBpbiB0aGUgZGlhbG9nLiBDYW5jZWwgZXZlbnQgY2FuIGVtaXQgZW1wdHkgZmlsZSBsaXN0LlxuICAgIGlmIChlbGVtZW50LmZpbGVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZW1pdEZpbGUoZWxlbWVudC5maWxlcyB8fCBuZXcgRmlsZUxpc3QoKSk7XG4gICAgfVxuICB9XG5cbiAgLy9FbWl0IGRyb3AgZmlsZVxuICBlbWl0RmlsZShmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBbZmlsZV0gPSBBcnJheS5mcm9tKGZpbGVzKTtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgICB0aGlzLmlzTWlzc2VkTWluU2l6ZSA9XG4gICAgICAhZmlsZT8uc2l6ZSAmJiAhdGhpcy5taW5GaWxlU2l6ZU1CID8gdHJ1ZSA6IHRoaXMuZmlsZVNpemVUb01CKGZpbGU/LnNpemUgPz8gMCkgPD0gdGhpcy5taW5GaWxlU2l6ZU1CO1xuICAgIGlmICghdGhpcy5pc01pc3NlZE1pblNpemUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5maWxlKTtcbiAgICAgIHRoaXMuT25Ecm9wLmVtaXQoZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgLy9TaG93IHByb2dyZXNzLWJhclxuICBzaG93UHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5icm93c2UgPSBmYWxzZTtcbiAgICByZXR1cm4gISEodGhpcy5maWxlICYmICF0aGlzLmVycm9ycyAmJiAhdGhpcy5pc01pc3NlZE1pblNpemUpO1xuICB9XG5cbiAgLy9TaG93IHN1Y2Nlc3MgZWxlbWVudHNcbiAgc2hvd1N1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmlsZSAmJiB0aGlzLnVwbG9hZFByb2dyZXNzID09PSAxMDAgJiYgIXRoaXMuZXJyb3JzICYmICF0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XG4gIH1cblxuICAvL1Nob3cgYnJvd3NlIHdoZW4gdGhlcmUgYXJlIGVycm9yXG4gIHNob3dCcm93c2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuZXJyb3JzIHx8IHRoaXMuaXNNaXNzZWRNaW5TaXplKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMuaXNDYW5jZWxlZCkge1xuICAgICAgaWYgKGNoYW5nZXNbJ3VwbG9hZFByb2dyZXNzJ10gfHwgY2hhbmdlc1snZmlsZSddKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnNob3dQcm9ncmVzcygpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYnJvd3NlID0gdGhpcy5zaG93QnJvd3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snZXJyb3JzJ10pIHtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHRoaXMuc2hvd1Byb2dyZXNzKCk7XG4gICAgICAgIHRoaXMuc3VjY2VzcyA9IHRoaXMuc2hvd1N1Y2Nlc3MoKTtcbiAgICAgICAgdGhpcy5icm93c2UgPSB0aGlzLnNob3dCcm93c2UoKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuZ2VzWydhcHBsaWNhdGlvblRoZW1lJ10pIHtcbiAgICAgICAgdGhpcy5jb21wQ29sb3IgPSB0aGlzLmdldENvbXBhbnlDb2xvcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU/OiBGaWxlKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZpbGUgPSB2YWx1ZSB8fCBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21wYW55Q29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21wYW55Q29sb3IgfHwgKHRoaXMuYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJyM0NkE5OTcnIDogJyNENDEwQUEnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsZVNpemVUb01CKGZpbGVTaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBmaWxlU2l6ZSAvIDEwMjQgLyAxMDI0O1xuICB9XG5cbiAgb25LZXlkb3duKGV2OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2LmtleSA9PT0gJ0VudGVyJyB8fCBldi5rZXkgPT09ICcgJykge1xuICAgICAgdGhpcy5maWxlRHJvcD8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcbiAgICB9IGVsc2UgaWYgKGV2LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgICB0aGlzLnN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMucHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgIHRoaXMuaXNNaXNzZWRNaW5TaXplID0gZmFsc2U7XG4gICAgICB0aGlzLmJyb3dzZSA9IHRydWU7XG4gICAgICB0aGlzLmlzQ2FuY2VsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPGRpdlxuICAgIGNsYXNzPVwidXBsb2FkLWZpbGUtY29udGFpbmVyXCJcbiAgICB1aURyYWdEcm9wXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiYXJpYVJlcXVpcmVkXCJcbiAgICBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICBbbmdDbGFzc109XCJ7ICd1cGxvYWQtZXJyb3JzJzogISFlcnJvcnMgfHwgaXNNaXNzZWRNaW5TaXplLCAndXBsb2FkLWZpbGUtY29udGFpbmVyLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiXG4gICAgW3RhYkluZGV4XT1cIjBcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwiZmlsZURyb3A/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKClcIlxuICA+XG4gICAgPGRpdiAqbmdJZj1cImJyb3dzZSAmJiAhKHN1Y2Nlc3MgJiYgISFmaWxlICYmIHByb2dyZXNzKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJyb3dzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nSWY9XCIhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemVcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFlcnJvcnNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj48dWktaWNvbiBuYW1lPVwiRXJyb3JcIiBjbGFzcz1cImVycm9yLWljb25cIj48L3VpLWljb24+IHt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01pc3NlZE1pblNpemVcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJFcnJvclwiIGNsYXNzPVwiZXJyb3ItaWNvblwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdNSU5fU0laRV9FUlJPUicgfCB1aVRyYW5zbGF0ZTogeyBtaW46IG1pbkZpbGVTaXplTUIgfSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdkcmFnLWFuZC1kcm9wJ1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCIndXBsb2FkLXN1cHBvcnRlZC1maWxlcydcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICNmaWxlRHJvcFxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBpZD1cImZpbGVcIlxuICAgICAgICAgIFthY2NlcHRdPVwic3VwcG9ydGVkRmlsZVR5cGVzXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2VVcGxvYWQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwICpuZ0lmPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnOyBlbHNlIHJlYnJhbmRlZERuRENvcHlUcGxcIj5cbiAgICAgICAgICB7eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnRFJBR19BTkRfRFJPUF9PUicgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZW1pYm9sZFwiPiB7eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnQlJPV1NFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfCBsb3dlcmNhc2UgfX08L3NwYW4+XG4gICAgICAgICAge3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ1lPVVJfRklMRVMnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIj57eyBtYXhGaWxlU2l6ZU1CIH19e3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ01BWF9TSVpFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibWluRmlsZVNpemVNQlwiIGNsYXNzPVwidXBsb2FkLXRleHRcIlxuICAgICAgICAgID57eyBtaW5GaWxlU2l6ZU1CIH19e3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ01JTl9TSVpFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgQGlmIChzdWNjZXNzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXN1Y2Nlc3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXN1Y2Nlc3MtdGV4dFwiXG4gICAgICAgICAgPjx1aS1pY29uIG5hbWU9XCJDaGVjay1yb3VuZC1pbi1saW5lXCIgW2NvbG9yXT1cImNvbG9yVXBsb2FkU3VjY2Vzc1wiPjwvdWktaWNvblxuICAgICAgICAgID57eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnRklMRV9VUExPQURJTkdfU1VDQ0VTUycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwic3VjY2VzcyB8fCBwcm9ncmVzcyA/ICcnIDogJ2RyYWctYW5kLWRyb3AnXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdzdXBwb3J0ZWQtZmlsZS10eXBlcydcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAjZmlsZURyb3BcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgaWQ9XCJmaWxlVGVzdFwiXG4gICAgICAgICAgW2FjY2VwdF09XCJzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2VVcGxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7IGZpbGU/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIEBpZiAoc2hvd0ZpbGVTaXplKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7XG4gICAgICAgICAgICB0cmFuc2xhdGlvbkNvbnRleHQgKyAnRklMRV9TSVpFJyB8IHVpVHJhbnNsYXRlOiB7IGZpbGVTaXplOiBmaWxlU2l6ZUluTUIgfSB8IGFzeW5jXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXByb2dyZXNzXCIgW0Bpbk91dEFuaW1hdGlvblByb2dyZXNzXSAqbmdJZj1cIiEhcHJvZ3Jlc3MgJiYgISFmaWxlICYmICFzdWNjZXNzXCI+XG4gICAgICA8cD57eyBmaWxlLm5hbWUgfX08L3A+XG4gICAgICA8dWktcHJvZ3Jlc3MtYmFyXG4gICAgICAgIFtwcm9ncmVzc109XCJ1cGxvYWRQcm9ncmVzc1wiXG4gICAgICAgIFtjb21wYW55Q29sb3JdPVwiY29tcENvbG9yXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICA+PC91aS1wcm9ncmVzcy1iYXI+XG4gICAgICA8cCBjbGFzcz1cInVwbG9hZC10ZXh0XCI+XG4gICAgICAgIHt7IGZpbGVQcm9jZXNzaW5nTWVzc2FnZSA/PyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1VQTE9BRElORycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB9fVxuICAgICAgICBAaWYgKHNob3dVcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgIDxzcGFuPnt7IHVwbG9hZFByb2dyZXNzIH19PC9zcGFuXG4gICAgICAgICAgPiVcbiAgICAgICAgfVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNpY29uVHBsPlxuICAgICAgPHVpLWljb25cbiAgICAgICAgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgcmVicmFuZGVkSWNvblRwbFwiXG4gICAgICAgIGNsYXNzPVwidXBsb2FkLWljb25cIlxuICAgICAgICBuYW1lPVwiRmlsZS11cGxvYWRcIlxuICAgICAgPjwvdWktaWNvbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcmVicmFuZGVkSWNvblRwbD5cbiAgICAgICAgPHVpLWljb24gY2xhc3M9XCJ1cGxvYWQtaWNvblwiIG5hbWU9XCJVcGxvYWRcIiBbc2l6ZV09XCInMjQnXCIgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiPjwvdWktaWNvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZERuRENvcHlUcGw+XG4gICAgICA8cCBpZD1cIidkcmFnLWFuZC1kcm9wJ1wiPnt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdEUkFHX0FORF9EUk9QJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiISFzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICBjbGFzcz1cInVwbG9hZC1zdXBwb3J0ZWQtZmlsZXNcIlxuICAgICAgaWQ9XCJ1cGxvYWQtc3VwcG9ydGVkLWZpbGVzXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnU1VQUE9SVEVEX0ZJTEVfVFlQRVMnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3BhblxuICAgICAgPnt7IHN1cHBvcnRlZEZpbGVUeXBlcyB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19