ets-fe-ng-sdk 17.0.180 → 17.0.181

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.
@@ -16,7 +16,7 @@ import { LoaderComponent } from '../../../Shared/components/loader/loader.compon
16
16
  import { cloneDeep, isEqual } from 'lodash-es';
17
17
  import { Config } from '../../../configs/index.config';
18
18
  import { ActivatedRoute, Router, RouterLink } from '@angular/router';
19
- import { BaseFormGenerator } from '../../../Shared/components/form-generator/form-generator.component';
19
+ import { BaseFormGenerator } from '../../../Shared/components/form-generator/form-generator.base.component';
20
20
  import { toSignal } from '@angular/core/rxjs-interop';
21
21
  import * as i0 from "@angular/core";
22
22
  import * as i1 from "@angular/forms";
@@ -335,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
335
335
  type: Input,
336
336
  args: ['formSchema']
337
337
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlGQUFpRixDQUFDO0FBQ3RILE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUVySCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RB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RG1CLFNBQVM7c0JBQTVCLE1BQU07dUJBQUMsVUFBVTtnQkFDUixhQUFhO3NCQUF0QixNQUFNO2dCQUN5QixhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFVTCxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBzaWduYWwsIGNvbXB1dGVkLCBpbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlckFjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1JldXNhYmxlcy9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVRhYmxlU2VhcmNoUmVzcCwgVGFibGVIdHRwc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCwgSVJvd09wdGlvbiwgSVN0cmljdEZvcm1Hcm91cCwgU29ydFR5cGUsIFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVUEgfSBmcm9tICcuLi8uLi9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5Lm1vZGVsJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUYWJsZVBsYWluQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmluZC1pdGVtLGZpbmQtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBOZ0lmLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIE5nU3dpdGNoLFxuICAgIE5nU3dpdGNoQ2FzZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgVGFibGVIdHRwc0NvbXBvbmVudCxcbiAgICBUYWJsZVBsYWluQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gYW55LCBUUm93IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnk+XG4gIGV4dGVuZHMgQmFzZUZvcm1HZW5lcmF0b3I8VFF1ZXJ5LCBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+PlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAvKipcbiAgICogV2hldGhlciB0byBzb3J0IHNjaGVtYVxuICAgKi9cbiAgYXV0b0Zvcm1hdFNjaGVtYSA9IGlucHV0KHRydWUpO1xuICBhdXRvT3JkZXIgPSBpbnB1dCh0cnVlKTtcbiAgY2VudGVyQ2VsbHMgPSBpbnB1dDxib29sZWFuPigpO1xuICBkaXNwbGF5ZWRDb2x1bW5zID0gaW5wdXQ8VGFibGVDb2xbXT4oKTtcbiAgLyoqXG4gICAqIFJvdyBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGdyaWRDbGFzcyA9IGlucHV0KCdjb2wtbWQtNCBjb2wteHhsLTMnKTtcbiAgaGlkZUZvcm0gPSBpbnB1dChmYWxzZSk7XG4gIGV4cGFuZGVkUm93VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBpc1RhYmxlUGFnaW5hdGVkID0gaW5wdXQoZmFsc2UpO1xuICBpc0V4cGFuZGFibGUgPSBpbnB1dChmYWxzZSk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBub3dyYXAgPSBpbnB1dChmYWxzZSk7XG4gIG9wdGlvbnMgPSBpbnB1dDxJUm93T3B0aW9uW10+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3Jvd09wdGlvbnMnIH0pO1xuICBvcmRlckRpcmVjdGlvbiA9IGlucHV0PFNvcnRUeXBlPignYXNjJyk7XG4gIG9yZGVyRmllbGQgPSBpbnB1dDxrZXlvZiBUUm93PigpO1xuICBwYWdlU2l6ZSA9IGlucHV0KDEwKTtcbiAgc2VhcmNoRnVuY3Rpb24gPSBpbnB1dDwoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPFRSb3dbXSB8IHsgY29udGVudDogVFJvd1tdIH0+PigpO1xuICBzaG93RGF0YSA9IGlucHV0KHRydWUpO1xuICBzZWFyY2hJZk5vUXVlcnkgPSBpbnB1dCh0cnVlKTtcbiAgc2hvd0V4cG9ydCA9IGlucHV0KHRydWUpO1xuICBzaG93RmlsdGVyID0gaW5wdXQoZmFsc2UpO1xuICBzaG93UmVmcmVzaEJ0biA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHN0YXJ0U2VjdGlvblRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+PigpO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdGhlIHNlYXJjaCBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBzaG93U2VhcmNoQnRuID0gaW5wdXQodHJ1ZSk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdGhlIGNsZWFyIGZvcm0gYnV0dG9uIHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgc2hvd0NsZWFyQnRuID0gaW5wdXQodHJ1ZSk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdmFsaWRhdGlvbiBtZXNzYWdlcyBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIHNob3dWYWxpZGF0aW9uTXNnID0gaW5wdXQodHJ1ZSk7XG4gIGNyZWF0ZUJ0blJvdXRlID0gaW5wdXQoJy4uL2NyZWF0ZScpO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHNob3cgYWRkaXRpb25hbCBjb2x1bW4gYnV0dG9uIHdpaWwgYmUgZGlzcGxheWVkIG9yIG5vdC5cbiAgICovXG4gIHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0KHRydWUpO1xuICBzbWFsbGVyRm9udHMgPSBpbnB1dChmYWxzZSk7XG4gIC8qKiBVc2UgY2hlY2tib3hlcyAqL1xuICB1c2VTZWxlY3Rpb24gPSBpbnB1dChmYWxzZSk7XG5cbiAgQE91dHB1dCgncm93Q2xpY2snKSBfcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsaWNrZWRDcmVhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoVGFibGVIdHRwc0NvbXBvbmVudCkgdGFibGVIVFRQU1JFRjogVGFibGVIdHRwc0NvbXBvbmVudDxUUm93PjtcbiAgQFZpZXdDaGlsZChUYWJsZVBsYWluQ29tcG9uZW50KSB0YWJsZVBsYWluUmVmOiBUYWJsZVBsYWluQ29tcG9uZW50PFRSb3c+O1xuICBkYXRhID0gc2lnbmFsPFRSb3dbXT4oW10pO1xuICBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgc2VhcmNoRm9ybSA9IHNpZ25hbDxGb3JtR3JvdXAgfCB1bmRlZmluZWQ+KG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgc3RhbmRhbG9uZUZvcm0gPSBzaWduYWw8Rm9ybUdyb3VwIHwgdW5kZWZpbmVkPihuZXcgRm9ybUdyb3VwKHt9KSk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBjcmVhdGUgYnV0dG9uIGlzIG5lZWRlZC5cbiAgICovXG4gIGNyZWF0ZUJ1dHRvbiA9IGlucHV0KGZhbHNlKTtcblxuICBASW5wdXQoJ2Zvcm1TY2hlbWEnKSBzZXQgX2Zvcm1TY2hlbWEodjogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2Py5maWx0ZXIoKHgpID0+IHgpKSk7XG4gIH1cblxuICBzZWFyY2hPYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUUm93Pj4+KCk7XG4gIHJlYWRvbmx5IGRlbGltaXRlckZpZWxkID0gJ35+fic7XG4gIHJlYWRvbmx5IGRlbGltaXRlcldvcmQgPSAnfn4nO1xuICBwcm90ZWN0ZWQgc2VhcmNoVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbXB1dGVkRm9ybVNjaGVtYSA9IGNvbXB1dGVkPElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXT4oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdLFxuICAgICAgICBzdGFuZGFsb25lRm9ybSA9IHRoaXMuc3RhbmRhbG9uZUZvcm0oKSxcbiAgICAgICAgc2VhcmNoRm9ybSA9IHRoaXMuc2VhcmNoRm9ybSgpO1xuXG4gICAgICByZXR1cm4gZm9ybVNjaGVtYS5tYXAoKHNjaGVtZSkgPT4ge1xuICAgICAgICBzY2hlbWUuZm9ybSA9IHNjaGVtZS5zdGFuZGFsb25lID8gc3RhbmRhbG9uZUZvcm0gOiBzZWFyY2hGb3JtO1xuICAgICAgICByZXR1cm4gc2NoZW1lO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBpc0VxdWFsIH0sXG4gICk7XG5cbiAgcHVibGljIHVhUyA9IGluamVjdChVc2VyQWN0aXZpdHlTZXJ2aWNlKTtcbiAgcHVibGljIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gIHByb3RlY3RlZCBzdWJzMiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuY3JlYXRlU3Vic2NyaXB0aW9uTWFuYWdlcigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vICB0aGlzLmZldGNoU2F2ZWRRdWVyeSgpXG4gICAgdGhpcy5zdWJzMi5wdXNoKFxuICAgICAgdGhpcy5zZWFyY2hUcmlnZ2VyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIGZpbHRlcigoeCkgPT4geCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIHRoaXMuX3NlYXJjaCgpO1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KCkge1xuICAgIHRoaXMuc3ViczI/LmNsZWFyKCk7XG4gICAgcmV0dXJuIHN1cGVyLm9uRGVzdHJveSgpO1xuICB9XG5cbiAgZmV0Y2hTYXZlZFF1ZXJ5KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2UXVlcnlTdHJpbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdxJyk7XG4gICAgICBpZiAocHJldlF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByZXZRdWVyeTogeyBbZjogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gcHJldlF1ZXJ5U3RyaW5nLnNwbGl0KHRoaXMuZGVsaW1pdGVyRmllbGQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGYgPSBmaWVsZC5zcGxpdCh0aGlzLmRlbGltaXRlcldvcmQpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIGlmIChmWzFdID09IG51bGwgfHwgZlsxXSA9PSAnbnVsbCcpIGNvbnRpbnVlO1xuICAgICAgICAgIHByZXZRdWVyeVtmWzBdXSA9IGZbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtKCk/LnBhdGNoVmFsdWUocHJldlF1ZXJ5KTtcbiAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMocHJldlF1ZXJ5KS5zb21lKCh4KSA9PiB4ICE9IG51bGwpKSB0aGlzLnNlYXJjaCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBpbml0KHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICBpZiAoIXNjaGVtYT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLmhhbmRsZUFsbFNjaGVtYShzY2hlbWEpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSgpKSB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiB0aGlzLmZvcm1TY2hlbWEoKSlcbiAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KSBzY2hlbWUub25DaGFuZ2VGdW5jKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVtzY2hlbWUuZmllbGRdLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUFsbFNjaGVtYShzY2hlbWE6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHNjaGVtYS5mb3JFYWNoKCh4KSA9PiAoeC50eXBlID0geC50eXBlIHx8ICd0ZXh0JykpO1xuICAgIGlmICh0aGlzLmF1dG9Gb3JtYXRTY2hlbWEoKSB8fCB0aGlzLmF1dG9PcmRlcigpKSB7XG4gICAgICBpZiAodGhpcy5hdXRvRm9ybWF0U2NoZW1hKCkpIHtcbiAgICAgICAgc2NoZW1hXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC50eXBlID09ICdzZWxlY3QnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICBpZiAoeC5vcHRpb25zPy5sZW5ndGggPiA1IHx8ICF4Lm9wdGlvbnMpIHgudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgIH0pO1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2NoZWNrYm94JylcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgeC50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICB4Lm9wdGlvbnMgPSBDb25maWcuYm9vbExpc3Q7XG4gICAgICAgICAgICB4LmxhYmVsRmllbGQgPSAndGl0bGUnO1xuICAgICAgICAgICAgeC52YWx1ZUZpZWxkID0gJ2NvZGUnO1xuICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYXV0b09yZGVyKCkpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLnNvcnQyKCdsYWJlbCcsIHRydWUpO1xuICAgICAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhbXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+IHguYWN0aW9uICYmIHgudHlwZSAhPSAnY2hlY2tib3gnKSxcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4gIXguYWN0aW9uICYmIHgudHlwZSAhPSAnY2hlY2tib3gnKSxcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4geC50eXBlID09ICdjaGVja2JveCcpLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgdGhpcy5fc2V0Rm9ybVNjaGVtYXMoc2NoZW1hKTtcblxuICAgIHNjaGVtYS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBpZiAocy5zdGFuZGFsb25lKSB0aGlzLnN0YW5kYWxvbmVGb3JtKCkucmVnaXN0ZXJDb250cm9sKHMuZmllbGQudG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKG51bGwsIHMudmFsaWRhdG9ycywgcy5hc3luY1ZhbGlkYXRvcnMpKTtcbiAgICAgIGVsc2UgdGhpcy5zZWFyY2hGb3JtKCkucmVnaXN0ZXJDb250cm9sKHMuZmllbGQudG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKG51bGwsIHMudmFsaWRhdG9ycywgcy5hc3luY1ZhbGlkYXRvcnMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+KSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZW5lcmF0ZVVVSUQoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCBzY2hlbWUpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHsgb3B0aW9uczogciB9KTtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHsgb3B0aW9uczogciB9KTtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG5cbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgY29uc3Qgc3ViID0gdGhpcy5zZWFyY2hGb3JtKClcbiAgICAgICAgPy5jb250cm9sc1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldPy52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5zZWFyY2hGb3JtKCk/LmdldFJhd1ZhbHVlKCksIHIsIHRoaXMpKTtcbiAgICAgIHRoaXMuc3Vic1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXSA9IHN1YjtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVFF1ZXJ5LCBzY2hlbWU6IFBhcnRpYWw8SVNlYXJjaEZvcm1TY2hlbWE8eyBbayBpbiBrZXlvZiBUUXVlcnldOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgYW55IH0+Pikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlRm9ybVNjaGVtYShmaWVsZE5hbWUgYXMgc3RyaW5nLCBzY2hlbWUpO1xuICB9XG5cbiAgdXBkYXRlQWxsRm9ybVNjaGVtYShtYXA6IChmb3JtRmllbGQ6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pID0+IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pIHtcbiAgICByZXR1cm4gc3VwZXIuX3VwZGF0ZUFsbEZvcm1TY2hlbWEobWFwKTtcbiAgfVxuXG4gIGRldGFjaEZvcm1TY2hlbWUoZmllbGROYW1lPzoga2V5b2YgVFF1ZXJ5KSB7XG4gICAgdGhpcy5zdWJzW2ZpZWxkTmFtZSBhcyBzdHJpbmddLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZWFyY2hGb3JtVmFsdWUgPSB0b1NpZ25hbCh0aGlzLnNlYXJjaEZvcm0oKS52YWx1ZUNoYW5nZXMpO1xuICBzdGFuZGFsb25lRm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5zdGFuZGFsb25lRm9ybSgpLnZhbHVlQ2hhbmdlcyk7XG4gIGFsbFNlYXJjaEZvcm1WYWx1ZSA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLnRoaXMuc2VhcmNoRm9ybVZhbHVlKCksIC4uLnRoaXMuc3RhbmRhbG9uZUZvcm1WYWx1ZSgpIH0pKTtcblxuICB0cmFja0J5Um93SUQgPSAoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICByZXR1cm4gaXRlbT8udmFsdWU/Ll9fcm93SUQ7XG4gIH07XG5cbiAgY2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuc2VhcmNoRm9ybSgpPy5yZXNldCgpO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICBzZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hUcmlnZ2VyLm5leHQodHJ1ZSk7XG4gIH1cblxuICBhc3luYyBfc2VhcmNoKCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghdGhpcy5zZWFyY2hGb3JtKSByZXR1cm47XG4gICAgY29uc3QgcmVxID0gdGhpcy51dGlsaXR5U2VydmljZS5kZWxldGVOdWxsKGNsb25lRGVlcCh0aGlzLnNlYXJjaEZvcm0oKT8uZ2V0UmF3VmFsdWUoKSkpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmlzVGFibGVQYWdpbmF0ZWQoKSkge1xuICAgICAgaWYgKCF0aGlzLmRhdGEoKSkgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVIVFRQU1JFRj8uc2VhcmNoKHJlcSk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoRnVuY3Rpb24pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgIHRoaXMuc2VhcmNoRnVuY3Rpb24oKSh7XG4gICAgICAgICAgICAuLi5yZXEsXG4gICAgICAgICAgICBzb3J0Qnk6IHRoaXMub3JkZXJGaWVsZCgpIHx8ICdjcmVhdGVkT24nLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbjogdGhpcy5vcmRlckRpcmVjdGlvbigpPy50b1VwcGVyQ2FzZSgpIHx8ICdERVNDJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kYXRhLnNldChkYXRhPy5bJ2NvbnRlbnQnXSB8fCBkYXRhKTtcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKEVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy51YVMuYWRkKHtcbiAgICAgICAgY29kZTogRVVBLnNlYXJjaGVkLFxuICAgICAgICBhY3Rpdml0eURlc2NyaXB0aW9uOiB0aGlzLmxhYmVsKCkgKyAnICcgKyBKU09OLnN0cmluZ2lmeShyZXEpLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRlYnVnZ2VyO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVRdWVyeShxdWVyeSA9IHRoaXMuc2VhcmNoRm9ybVZhbHVlKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHE6IE9iamVjdC5rZXlzKHF1ZXJ5KVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHF1ZXJ5W3hdICE9IG51bGwpXG4gICAgICAgICAgLm1hcCgoaykgPT4gYCR7a30ke3RoaXMuZGVsaW1pdGVyV29yZH0ke3F1ZXJ5W2tdfWApXG4gICAgICAgICAgLmpvaW4odGhpcy5kZWxpbWl0ZXJGaWVsZCksXG4gICAgICB9LFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgIH0pO1xuICB9XG4gIHJvd0NsaWNrKGUpIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUhUVFBTUkVGPy5zZWxlY3RlZEl0ZW1zIHx8IHRoaXMudGFibGVQbGFpblJlZj8uc2VsZWN0ZWRJdGVtcztcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gYW55LCBUUm93IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnk+XG4gIGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFxuICAgIFRRdWVyeSxcbiAgICBGaW5kSXRlbUNvbXBvbmVudDxUUXVlcnksIFRSb3c+LFxuICAgIHtcbiAgICAgIFtLIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfVxuICA+IHtcbiAgc3RhbmRhbG9uZT86IGJvb2xlYW47XG4gIGFjdGlvbj86IChyb3c6IGFueSwgY2VsbDogYW55LCBmb3JtPzogRm9ybUdyb3VwPElTdHJpY3RGb3JtR3JvdXA8VFF1ZXJ5Pj4pID0+IGFueTtcbn1cbiIsIjxsb2FkZXIgW2xvYWRpbmddPVwibG9hZGluZygpXCI+XG4gIEBpZiAoIWhpZGVGb3JtKCkgJiYgc2VhcmNoRm9ybSgpKSB7XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtKClcIiAobmdTdWJtaXQpPVwic2VhcmNoKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIEBmb3IgKHNjaGVtZSBvZiBjb21wdXRlZEZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInt7IGdyaWRDbGFzcygpIH19IFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgQHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBob25lLW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiXG4gICAgICAgICAgICAgICAgICAgICAgI2lucHV0VGFnIC8+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1ZhbGlkYXRpb25Nc2coKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm1WYWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiaW5wdXRUYWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8Zm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3gtMiByb3cgYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZFNpZ25hbF09XCJzY2hlbWUuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtVmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzY2hlbWUuc3RhbmRhbG9uZSAmJiBzY2hlbWUuYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD1cInNob3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFmb3JtRmllbGQ/LnZhbGlkU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cInNjaGVtZS5hY3Rpb24oYWxsU2VhcmNoRm9ybVZhbHVlKCksIGZvcm1GaWVsZC52YWx1ZVNpZ25hbCgpLCBzdGFuZGFsb25lRm9ybSgpKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzY2hlbWUuYWN0aW9uICYmICFzY2hlbWUuc3RhbmRhbG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwic2NoZW1lLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25UeXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwic2NoZW1lLmFjdGlvbihhbGxTZWFyY2hGb3JtVmFsdWUoKSwgZm9ybUZpZWxkLnZhbHVlU2lnbmFsKCksIHNlYXJjaEZvcm0oKSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImZvcm1GaWVsZFwiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kIGp1c3RpZnktY29udGVudC1lbmQgZC1mbGV4XCI+XG4gICAgICAgICAgQGlmIChzaG93Q2xlYXJCdG4oKSkge1xuICAgICAgICAgICAgPGFwcC1idG4gdHlwZT1cImRhbmdlci1vdXRsaW5lXCIgdGV4dD1cIkNsZWFyXCIgaWNvbj1cImRlbGV0ZVwiIChtY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XG4gICAgICAgICAgQGlmIChzaG93U2VhcmNoQnRuKCkpIHtcbiAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgIFtncm91cF09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICAgICAgICB0ZXh0PVwiU2VhcmNoXCJcbiAgICAgICAgICAgICAgYWN0aW9uVHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIFtleGNsdWRlTG9nZ2luZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWFyY2hGdW5jdGlvbigpICYmICFpc1RhYmxlUGFnaW5hdGVkKClcIlxuICAgICAgICAgICAgICAobWNsaWNrKT1cInNlYXJjaCgpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjcmVhdGVCdXR0b24oKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgICAgQGlmIChjcmVhdGVCdG5Sb3V0ZSgpKSB7XG4gICAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJvdXRsaW5lXCIgdGV4dD1cIkNyZWF0ZVwiIGljb249XCJhZGRcIiAobWNsaWNrKT1cImNsaWNrZWRDcmVhdGUuZW1pdCgpXCIgcm91dGVyTGluaz1cInt7IGNyZWF0ZUJ0blJvdXRlKCkgfX1cIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJvdXRsaW5lXCIgdGV4dD1cIkNyZWF0ZVwiIGljb249XCJhZGRcIiAobWNsaWNrKT1cImNsaWNrZWRDcmVhdGUuZW1pdCgpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICB9XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlUGFuZWxdXCI+PC9uZy1jb250ZW50PlxuXG4gIEBpZiAoZGlzcGxheWVkQ29sdW1ucygpPy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwibXQtM1wiIFtoaWRkZW5dPVwiIXNob3dEYXRhKCkgfHwgKCFkYXRhKCkgJiYgIWlzVGFibGVQYWdpbmF0ZWQoKSlcIj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIEBpZiAoaXNUYWJsZVBhZ2luYXRlZCgpKSB7XG4gICAgICAgICAgPHRhYmxlLWh0dHBzXG4gICAgICAgICAgICAjdGFibGVIVFRQU1xuICAgICAgICAgICAgW3NlYXJjaElmTm9RdWVyeV09XCJzZWFyY2hJZk5vUXVlcnkoKVwiXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zKClcIlxuICAgICAgICAgICAgW3Nob3dFeHBvcnRdPVwic2hvd0V4cG9ydCgpXCJcbiAgICAgICAgICAgIFtzdGFydFNlY3Rpb25UZW1wbGF0ZV09XCJzdGFydFNlY3Rpb25UZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFt1c2VTZWxlY3Rpb25dPVwidXNlU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgW3Nob3dSZWZyZXNoQnRuXT1cInNob3dSZWZyZXNoQnRuKClcIlxuICAgICAgICAgICAgW29ic2VydmFibGVGdW5jXT1cInNlYXJjaE9ic2VydmFibGVGdW5jKClcIlxuICAgICAgICAgICAgbm9JdGVtVHh0PVwiTm8gcmVzdWx0cyBmb3VuZFwiXG4gICAgICAgICAgICBbaXNFeHBhbmRhYmxlXT1cImlzRXhwYW5kYWJsZSgpXCJcbiAgICAgICAgICAgIFtleHBhbmRlZFJvd1RlbXBsYXRlXT1cImV4cGFuZGVkUm93VGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbY2VudGVyQ2VsbHNdPVwiY2VudGVyQ2VsbHMoKVwiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250cygpXCJcbiAgICAgICAgICAgIFtub3dyYXBdPVwibm93cmFwKClcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplKClcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsKClcIlxuICAgICAgICAgICAgW3Nob3dBZGRpdGlvbmFsQ29sdW1uc109XCJzaG93QWRkaXRpb25hbENvbHVtbnMoKVwiXG4gICAgICAgICAgICBbb3JkZXJGaWVsZF09XCJvcmRlckZpZWxkKClcIlxuICAgICAgICAgICAgW3Jvd09wdGlvbnNdPVwib3B0aW9ucygpXCJcbiAgICAgICAgICAgIFtvcmRlckRpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvbigpXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJyb3dDbGljaygkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHRhYmxlLXBsYWluXG4gICAgICAgICAgICBbZGlzdGluY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd1BhZ2VyXT1cInRydWVcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplKClcIlxuICAgICAgICAgICAgW2NlbnRlckNlbGxzXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtzdGFydFNlY3Rpb25UZW1wbGF0ZV09XCJzdGFydFNlY3Rpb25UZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFtzbWFsbGVyRm9udHNdPVwic21hbGxlckZvbnRzKClcIlxuICAgICAgICAgICAgW25vd3JhcF09XCJub3dyYXAoKVwiXG4gICAgICAgICAgICBbc2hvd0ZpbHRlcl09XCJzaG93RmlsdGVyKClcIlxuICAgICAgICAgICAgW3Nob3dFeHBvcnRdPVwic2hvd0V4cG9ydCgpXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGFibGVdPVwiaXNFeHBhbmRhYmxlKClcIlxuICAgICAgICAgICAgW2V4cGFuZGVkUm93VGVtcGxhdGVdPVwiZXhwYW5kZWRSb3dUZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgIG5vSXRlbVR4dD1cIk5vIHJlc3VsdHMgZm91bmRcIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cInJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW29yZGVyRmllbGRdPVwib3JkZXJGaWVsZCgpXCJcbiAgICAgICAgICAgIFtyb3dPcHRpb25zXT1cIm9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbc2hvd0FkZGl0aW9uYWxDb2x1bW5zXT1cInNob3dBZGRpdGlvbmFsQ29sdW1ucygpXCJcbiAgICAgICAgICAgIFtvcmRlckRpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvbigpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMoKVwiXG4gICAgICAgICAgICBbZGF0YV09XCJkYXRhKClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9sb2FkZXI+XG4iXX0=
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlGQUFpRixDQUFDO0FBQ3RILE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUVySCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0RB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RG1CLFNBQVM7c0JBQTVCLE1BQU07dUJBQUMsVUFBVTtnQkFDUixhQUFhO3NCQUF0QixNQUFNO2dCQUN5QixhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFVTCxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBzaWduYWwsIGNvbXB1dGVkLCBpbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlckFjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1JldXNhYmxlcy9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVRhYmxlU2VhcmNoUmVzcCwgVGFibGVIdHRwc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCwgSVJvd09wdGlvbiwgSVN0cmljdEZvcm1Hcm91cCwgU29ydFR5cGUsIFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVUEgfSBmcm9tICcuLi8uLi9yZXVzYWJsZS1wYWdlcy91c2VyLWFjdGl2aXR5L3VhLWV4dHJhcy91c2VyLWFjdGl2aXR5Lm1vZGVsJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUYWJsZVBsYWluQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maW5kLWl0ZW0sZmluZC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIFBob25lTnVtYmVyQ29tcG9uZW50LFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBJbnB1dEJhc2ljQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBUYWJsZUh0dHBzQ29tcG9uZW50LFxuICAgIFRhYmxlUGxhaW5Db21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIFRvQW55UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmluZEl0ZW1Db21wb25lbnQ8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnksIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueT5cbiAgZXh0ZW5kcyBCYXNlRm9ybUdlbmVyYXRvcjxUUXVlcnksIElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNvcnQgc2NoZW1hXG4gICAqL1xuICBhdXRvRm9ybWF0U2NoZW1hID0gaW5wdXQodHJ1ZSk7XG4gIGF1dG9PcmRlciA9IGlucHV0KHRydWUpO1xuICBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIGRpc3BsYXllZENvbHVtbnMgPSBpbnB1dDxUYWJsZUNvbFtdPigpO1xuICAvKipcbiAgICogUm93IGdyaWQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgZ3JpZENsYXNzID0gaW5wdXQoJ2NvbC1tZC00IGNvbC14eGwtMycpO1xuICBoaWRlRm9ybSA9IGlucHV0KGZhbHNlKTtcbiAgZXhwYW5kZWRSb3dUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIGlzVGFibGVQYWdpbmF0ZWQgPSBpbnB1dChmYWxzZSk7XG4gIGlzRXhwYW5kYWJsZSA9IGlucHV0KGZhbHNlKTtcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG5vd3JhcCA9IGlucHV0KGZhbHNlKTtcbiAgb3B0aW9ucyA9IGlucHV0PElSb3dPcHRpb25bXT4odW5kZWZpbmVkLCB7IGFsaWFzOiAncm93T3B0aW9ucycgfSk7XG4gIG9yZGVyRGlyZWN0aW9uID0gaW5wdXQ8U29ydFR5cGU+KCdhc2MnKTtcbiAgb3JkZXJGaWVsZCA9IGlucHV0PGtleW9mIFRSb3c+KCk7XG4gIHBhZ2VTaXplID0gaW5wdXQoMTApO1xuICBzZWFyY2hGdW5jdGlvbiA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8VFJvd1tdIHwgeyBjb250ZW50OiBUUm93W10gfT4+KCk7XG4gIHNob3dEYXRhID0gaW5wdXQodHJ1ZSk7XG4gIHNlYXJjaElmTm9RdWVyeSA9IGlucHV0KHRydWUpO1xuICBzaG93RXhwb3J0ID0gaW5wdXQodHJ1ZSk7XG4gIHNob3dGaWx0ZXIgPSBpbnB1dChmYWxzZSk7XG4gIHNob3dSZWZyZXNoQnRuID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgc3RhcnRTZWN0aW9uVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD4+KCk7XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgc2VhcmNoIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIHNob3dTZWFyY2hCdG4gPSBpbnB1dCh0cnVlKTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgY2xlYXIgZm9ybSBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBzaG93Q2xlYXJCdG4gPSBpbnB1dCh0cnVlKTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiB2YWxpZGF0aW9uIG1lc3NhZ2VzIHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgc2hvd1ZhbGlkYXRpb25Nc2cgPSBpbnB1dCh0cnVlKTtcbiAgY3JlYXRlQnRuUm91dGUgPSBpbnB1dCgnLi4vY3JlYXRlJyk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBhZGRpdGlvbmFsIGNvbHVtbiBidXR0b24gd2lpbCBiZSBkaXNwbGF5ZWQgb3Igbm90LlxuICAgKi9cbiAgc2hvd0FkZGl0aW9uYWxDb2x1bW5zID0gaW5wdXQodHJ1ZSk7XG4gIHNtYWxsZXJGb250cyA9IGlucHV0KGZhbHNlKTtcbiAgLyoqIFVzZSBjaGVja2JveGVzICovXG4gIHVzZVNlbGVjdGlvbiA9IGlucHV0KGZhbHNlKTtcblxuICBAT3V0cHV0KCdyb3dDbGljaycpIF9yb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xpY2tlZENyZWF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZChUYWJsZUh0dHBzQ29tcG9uZW50KSB0YWJsZUhUVFBTUkVGOiBUYWJsZUh0dHBzQ29tcG9uZW50PFRSb3c+O1xuICBAVmlld0NoaWxkKFRhYmxlUGxhaW5Db21wb25lbnQpIHRhYmxlUGxhaW5SZWY6IFRhYmxlUGxhaW5Db21wb25lbnQ8VFJvdz47XG4gIGRhdGEgPSBzaWduYWw8VFJvd1tdPihbXSk7XG4gIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBzZWFyY2hGb3JtID0gc2lnbmFsPEZvcm1Hcm91cCB8IHVuZGVmaW5lZD4obmV3IEZvcm1Hcm91cCh7fSkpO1xuICBzdGFuZGFsb25lRm9ybSA9IHNpZ25hbDxGb3JtR3JvdXAgfCB1bmRlZmluZWQ+KG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiBzaG93IGNyZWF0ZSBidXR0b24gaXMgbmVlZGVkLlxuICAgKi9cbiAgY3JlYXRlQnV0dG9uID0gaW5wdXQoZmFsc2UpO1xuXG4gIEBJbnB1dCgnZm9ybVNjaGVtYScpIHNldCBfZm9ybVNjaGVtYSh2OiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+W10pIHtcbiAgICB0aGlzLmluaXQoY2xvbmVEZWVwKHY/LmZpbHRlcigoeCkgPT4geCkpKTtcbiAgfVxuXG4gIHNlYXJjaE9ic2VydmFibGVGdW5jID0gaW5wdXQ8KGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxJVGFibGVTZWFyY2hSZXNwPFRSb3c+Pj4oKTtcbiAgcmVhZG9ubHkgZGVsaW1pdGVyRmllbGQgPSAnfn5+JztcbiAgcmVhZG9ubHkgZGVsaW1pdGVyV29yZCA9ICd+fic7XG4gIHByb3RlY3RlZCBzZWFyY2hUcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29tcHV0ZWRGb3JtU2NoZW1hID0gY29tcHV0ZWQ8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdPihcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5mb3JtU2NoZW1hKCkgfHwgW10sXG4gICAgICAgIHN0YW5kYWxvbmVGb3JtID0gdGhpcy5zdGFuZGFsb25lRm9ybSgpLFxuICAgICAgICBzZWFyY2hGb3JtID0gdGhpcy5zZWFyY2hGb3JtKCk7XG5cbiAgICAgIHJldHVybiBmb3JtU2NoZW1hLm1hcCgoc2NoZW1lKSA9PiB7XG4gICAgICAgIHNjaGVtZS5mb3JtID0gc2NoZW1lLnN0YW5kYWxvbmUgPyBzdGFuZGFsb25lRm9ybSA6IHNlYXJjaEZvcm07XG4gICAgICAgIHJldHVybiBzY2hlbWU7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHsgZXF1YWw6IGlzRXF1YWwgfSxcbiAgKTtcblxuICBwdWJsaWMgdWFTID0gaW5qZWN0KFVzZXJBY3Rpdml0eVNlcnZpY2UpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHB1YmxpYyByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgcHJvdGVjdGVkIHN1YnMyID0gdGhpcy51dGlsaXR5U2VydmljZS5jcmVhdGVTdWJzY3JpcHRpb25NYW5hZ2VyKCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gIHRoaXMuZmV0Y2hTYXZlZFF1ZXJ5KClcbiAgICB0aGlzLnN1YnMyLnB1c2goXG4gICAgICB0aGlzLnNlYXJjaFRyaWdnZXJcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgdGhpcy5fc2VhcmNoKCk7XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBvbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzMj8uY2xlYXIoKTtcbiAgICByZXR1cm4gc3VwZXIub25EZXN0cm95KCk7XG4gIH1cblxuICBmZXRjaFNhdmVkUXVlcnkoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZRdWVyeVN0cmluZyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3EnKTtcbiAgICAgIGlmIChwcmV2UXVlcnlTdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJldlF1ZXJ5OiB7IFtmOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBwcmV2UXVlcnlTdHJpbmcuc3BsaXQodGhpcy5kZWxpbWl0ZXJGaWVsZCk7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgZiA9IGZpZWxkLnNwbGl0KHRoaXMuZGVsaW1pdGVyV29yZCk7XG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgaWYgKGZbMV0gPT0gbnVsbCB8fCBmWzFdID09ICdudWxsJykgY29udGludWU7XG4gICAgICAgICAgcHJldlF1ZXJ5W2ZbMF1dID0gZlsxXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaEZvcm0oKT8ucGF0Y2hWYWx1ZShwcmV2UXVlcnkpO1xuICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhwcmV2UXVlcnkpLnNvbWUoKHgpID0+IHggIT0gbnVsbCkpIHRoaXMuc2VhcmNoKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGluaXQoc2NoZW1hOiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+W10pIHtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICAgIGlmICghc2NoZW1hPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHRoaXMuaGFuZGxlQWxsU2NoZW1hKHNjaGVtYSk7XG4gICAgZm9yIChjb25zdCBzY2hlbWUgb2YgdGhpcy5mb3JtU2NoZW1hKCkpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSgpKVxuICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlQWxsU2NoZW1hKHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgc2NoZW1hLmZvckVhY2goKHgpID0+ICh4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnKSk7XG4gICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSgpIHx8IHRoaXMuYXV0b09yZGVyKCkpIHtcbiAgICAgIGlmICh0aGlzLmF1dG9Gb3JtYXRTY2hlbWEoKSkge1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ3NlbGVjdCcpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIGlmICh4Lm9wdGlvbnM/Lmxlbmd0aCA+IDUgfHwgIXgub3B0aW9ucykgeC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHNjaGVtYVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LnR5cGUgPSAnc2VsZWN0JztcbiAgICAgICAgICAgIHgub3B0aW9ucyA9IENvbmZpZy5ib29sTGlzdDtcbiAgICAgICAgICAgIHgubGFiZWxGaWVsZCA9ICd0aXRsZSc7XG4gICAgICAgICAgICB4LnZhbHVlRmllbGQgPSAnY29kZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hdXRvT3JkZXIoKSkge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuc29ydDIoJ2xhYmVsJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKFtcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4geC5hY3Rpb24gJiYgeC50eXBlICE9ICdjaGVja2JveCcpLFxuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiAheC5hY3Rpb24gJiYgeC50eXBlICE9ICdjaGVja2JveCcpLFxuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2NoZWNrYm94JyksXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuXG4gICAgc2NoZW1hLmZvckVhY2goKHMpID0+IHtcbiAgICAgIGlmIChzLnN0YW5kYWxvbmUpIHRoaXMuc3RhbmRhbG9uZUZvcm0oKS5yZWdpc3RlckNvbnRyb2wocy5maWVsZC50b1N0cmluZygpLCBuZXcgRm9ybUNvbnRyb2wobnVsbCwgcy52YWxpZGF0b3JzLCBzLmFzeW5jVmFsaWRhdG9ycykpO1xuICAgICAgZWxzZSB0aGlzLnNlYXJjaEZvcm0oKS5yZWdpc3RlckNvbnRyb2wocy5maWVsZC50b1N0cmluZygpLCBuZXcgRm9ybUNvbnRyb2wobnVsbCwgcy52YWxpZGF0b3JzLCBzLmFzeW5jVmFsaWRhdG9ycykpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpO1xuICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHNjaGVtZSk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYylcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgeyBvcHRpb25zOiByIH0pO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jMilcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMyKCkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgeyBvcHRpb25zOiByIH0pO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcblxuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnNlYXJjaEZvcm0oKVxuICAgICAgICA/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4gc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLnNlYXJjaEZvcm0oKT8uZ2V0UmF3VmFsdWUoKSwgciwgdGhpcykpO1xuICAgICAgdGhpcy5zdWJzW3NjaGVtZS5maWVsZCBhcyBzdHJpbmddID0gc3ViO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBUUXVlcnksIHNjaGVtZTogUGFydGlhbDxJU2VhcmNoRm9ybVNjaGVtYTx7IFtrIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBhbnkgfT4+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcsIHNjaGVtZSk7XG4gIH1cblxuICB1cGRhdGVBbGxGb3JtU2NoZW1hKG1hcDogKGZvcm1GaWVsZDogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PikgPT4gSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93Pikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlQWxsRm9ybVNjaGVtYShtYXApO1xuICB9XG5cbiAgZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWU/OiBrZXlvZiBUUXVlcnkpIHtcbiAgICB0aGlzLnN1YnNbZmllbGROYW1lIGFzIHN0cmluZ10udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNlYXJjaEZvcm1WYWx1ZSA9IHRvU2lnbmFsKHRoaXMuc2VhcmNoRm9ybSgpLnZhbHVlQ2hhbmdlcyk7XG4gIHN0YW5kYWxvbmVGb3JtVmFsdWUgPSB0b1NpZ25hbCh0aGlzLnN0YW5kYWxvbmVGb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgYWxsU2VhcmNoRm9ybVZhbHVlID0gY29tcHV0ZWQoKCkgPT4gKHsgLi4udGhpcy5zZWFyY2hGb3JtVmFsdWUoKSwgLi4udGhpcy5zdGFuZGFsb25lRm9ybVZhbHVlKCkgfSkpO1xuXG4gIHRyYWNrQnlSb3dJRCA9IChpbmRleCwgaXRlbSkgPT4ge1xuICAgIHJldHVybiBpdGVtPy52YWx1ZT8uX19yb3dJRDtcbiAgfTtcblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5zZWFyY2hGb3JtKCk/LnJlc2V0KCk7XG4gICAgdGhpcy5zZWFyY2goKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5zZWFyY2goKTtcbiAgfVxuXG4gIHNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFRyaWdnZXIubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGFzeW5jIF9zZWFyY2goKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCF0aGlzLnNlYXJjaEZvcm0pIHJldHVybjtcbiAgICBjb25zdCByZXEgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmRlbGV0ZU51bGwoY2xvbmVEZWVwKHRoaXMuc2VhcmNoRm9ybSgpPy5nZXRSYXdWYWx1ZSgpKSk7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKHRoaXMuaXNUYWJsZVBhZ2luYXRlZCgpKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0YSgpKSB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5kYXRhLnNldChbXSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJsZUhUVFBTUkVGPy5zZWFyY2gocmVxKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LCA1MDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hGdW5jdGlvbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgICAgdGhpcy5zZWFyY2hGdW5jdGlvbigpKHtcbiAgICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgICAgIHNvcnRCeTogdGhpcy5vcmRlckZpZWxkKCkgfHwgJ2NyZWF0ZWRPbicsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCk/LnRvVXBwZXJDYXNlKCkgfHwgJ0RFU0MnLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEuc2V0KGRhdGE/LlsnY29udGVudCddIHx8IGRhdGEpO1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoRXJyb3IpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnVhUy5hZGQoe1xuICAgICAgICBjb2RlOiBFVUEuc2VhcmNoZWQsXG4gICAgICAgIGFjdGl2aXR5RGVzY3JpcHRpb246IHRoaXMubGFiZWwoKSArICcgJyArIEpTT04uc3RyaW5naWZ5KHJlcSksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZGVidWdnZXI7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVF1ZXJ5KHF1ZXJ5ID0gdGhpcy5zZWFyY2hGb3JtVmFsdWUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgcTogT2JqZWN0LmtleXMocXVlcnkpXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4gcXVlcnlbeF0gIT0gbnVsbClcbiAgICAgICAgICAubWFwKChrKSA9PiBgJHtrfSR7dGhpcy5kZWxpbWl0ZXJXb3JkfSR7cXVlcnlba119YClcbiAgICAgICAgICAuam9pbih0aGlzLmRlbGltaXRlckZpZWxkKSxcbiAgICAgIH0sXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgfSk7XG4gIH1cbiAgcm93Q2xpY2soZSkge1xuICAgIHRoaXMuX3Jvd0NsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSFRUUFNSRUY/LnNlbGVjdGVkSXRlbXMgfHwgdGhpcy50YWJsZVBsYWluUmVmPy5zZWxlY3RlZEl0ZW1zO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnksIFRSb3cgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueT5cbiAgZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8XG4gICAgVFF1ZXJ5LFxuICAgIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSwgVFJvdz4sXG4gICAge1xuICAgICAgW0sgaW4ga2V5b2YgVFF1ZXJ5XTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgICB9XG4gID4ge1xuICBzdGFuZGFsb25lPzogYm9vbGVhbjtcbiAgYWN0aW9uPzogKHJvdzogYW55LCBjZWxsOiBhbnksIGZvcm0/OiBGb3JtR3JvdXA8SVN0cmljdEZvcm1Hcm91cDxUUXVlcnk+PikgPT4gYW55O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJsb2FkaW5nKClcIj5cbiAgQGlmICghaGlkZUZvcm0oKSAmJiBzZWFyY2hGb3JtKCkpIHtcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm0oKVwiIChuZ1N1Ym1pdCk9XCJzZWFyY2goKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgQGZvciAoc2NoZW1lIG9mIGNvbXB1dGVkRm9ybVNjaGVtYSgpOyB0cmFjayBzY2hlbWUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgZ3JpZENsYXNzKCkgfX0gXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY291bnRyeUNvZGUzXT1cInNjaGVtZS5jb3VudHJ5Q29kZTNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuY1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybVZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiXG4gICAgICAgICAgICAgICAgICAgICAgI2lucHV0VGFnIC8+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1ZhbGlkYXRpb25Nc2coKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJneC0yIHJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkU2lnbmFsXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVjaW1hbFBvaW50c109XCJzY2hlbWUuZGVjaW1hbFBvaW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwic2NoZW1lLm1heFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJzY2hlbWUubWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IHNlYXJjaEZvcm1WYWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNjaGVtZS5zdGFuZGFsb25lICYmIHNjaGVtZS5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPVwic2hvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm1GaWVsZD8udmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25UeXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwic2NoZW1lLmFjdGlvbihhbGxTZWFyY2hGb3JtVmFsdWUoKSwgZm9ybUZpZWxkLnZhbHVlU2lnbmFsKCksIHN0YW5kYWxvbmVGb3JtKCkpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNjaGVtZS5hY3Rpb24gJiYgIXNjaGVtZS5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJzY2hlbWUuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSgpLCBmb3JtRmllbGQudmFsdWVTaWduYWwoKSwgc2VhcmNoRm9ybSgpKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1ZhbGlkYXRpb25Nc2coKSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiZm9ybUZpZWxkXCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQganVzdGlmeS1jb250ZW50LWVuZCBkLWZsZXhcIj5cbiAgICAgICAgICBAaWYgKHNob3dDbGVhckJ0bigpKSB7XG4gICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwiZGFuZ2VyLW91dGxpbmVcIiB0ZXh0PVwiQ2xlYXJcIiBpY29uPVwiZGVsZXRlXCIgKG1jbGljayk9XCJjbGVhckZpbHRlcnMoKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHNob3dTZWFyY2hCdG4oKSkge1xuICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgW2dyb3VwXT1cIidzZWFyY2gnXCJcbiAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHRleHQ9XCJTZWFyY2hcIlxuICAgICAgICAgICAgICBhY3Rpb25UeXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgW2V4Y2x1ZGVMb2dnaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlYXJjaEZ1bmN0aW9uKCkgJiYgIWlzVGFibGVQYWdpbmF0ZWQoKVwiXG4gICAgICAgICAgICAgIChtY2xpY2spPVwic2VhcmNoKClcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGNyZWF0ZUJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTFcIj48L3NwYW4+XG4gICAgICAgICAgICBAaWYgKGNyZWF0ZUJ0blJvdXRlKCkpIHtcbiAgICAgICAgICAgICAgPGFwcC1idG4gdHlwZT1cIm91dGxpbmVcIiB0ZXh0PVwiQ3JlYXRlXCIgaWNvbj1cImFkZFwiIChtY2xpY2spPVwiY2xpY2tlZENyZWF0ZS5lbWl0KClcIiByb3V0ZXJMaW5rPVwie3sgY3JlYXRlQnRuUm91dGUoKSB9fVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGFwcC1idG4gdHlwZT1cIm91dGxpbmVcIiB0ZXh0PVwiQ3JlYXRlXCIgaWNvbj1cImFkZFwiIChtY2xpY2spPVwiY2xpY2tlZENyZWF0ZS5lbWl0KClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIH1cblxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGFibGVQYW5lbF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgQGlmIChkaXNwbGF5ZWRDb2x1bW5zKCk/Lmxlbmd0aCkge1xuICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgW2hpZGRlbl09XCIhc2hvd0RhdGEoKSB8fCAoIWRhdGEoKSAmJiAhaXNUYWJsZVBhZ2luYXRlZCgpKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgQGlmIChpc1RhYmxlUGFnaW5hdGVkKCkpIHtcbiAgICAgICAgICA8dGFibGUtaHR0cHNcbiAgICAgICAgICAgICN0YWJsZUhUVFBTXG4gICAgICAgICAgICBbc2VhcmNoSWZOb1F1ZXJ5XT1cInNlYXJjaElmTm9RdWVyeSgpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMoKVwiXG4gICAgICAgICAgICBbc2hvd0V4cG9ydF09XCJzaG93RXhwb3J0KClcIlxuICAgICAgICAgICAgW3N0YXJ0U2VjdGlvblRlbXBsYXRlXT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlKClcIlxuICAgICAgICAgICAgW3VzZVNlbGVjdGlvbl09XCJ1c2VTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICBbc2hvd1JlZnJlc2hCdG5dPVwic2hvd1JlZnJlc2hCdG4oKVwiXG4gICAgICAgICAgICBbb2JzZXJ2YWJsZUZ1bmNdPVwic2VhcmNoT2JzZXJ2YWJsZUZ1bmMoKVwiXG4gICAgICAgICAgICBub0l0ZW1UeHQ9XCJObyByZXN1bHRzIGZvdW5kXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGFibGVdPVwiaXNFeHBhbmRhYmxlKClcIlxuICAgICAgICAgICAgW2V4cGFuZGVkUm93VGVtcGxhdGVdPVwiZXhwYW5kZWRSb3dUZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFtjZW50ZXJDZWxsc109XCJjZW50ZXJDZWxscygpXCJcbiAgICAgICAgICAgIFtzbWFsbGVyRm9udHNdPVwic21hbGxlckZvbnRzKClcIlxuICAgICAgICAgICAgW25vd3JhcF09XCJub3dyYXAoKVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemUoKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICBbc2hvd0FkZGl0aW9uYWxDb2x1bW5zXT1cInNob3dBZGRpdGlvbmFsQ29sdW1ucygpXCJcbiAgICAgICAgICAgIFtvcmRlckZpZWxkXT1cIm9yZGVyRmllbGQoKVwiXG4gICAgICAgICAgICBbcm93T3B0aW9uc109XCJvcHRpb25zKClcIlxuICAgICAgICAgICAgW29yZGVyRGlyZWN0aW9uXT1cIm9yZGVyRGlyZWN0aW9uKClcIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cInJvd0NsaWNrKCRldmVudClcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8dGFibGUtcGxhaW5cbiAgICAgICAgICAgIFtkaXN0aW5jdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzaG93UGFnZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemUoKVwiXG4gICAgICAgICAgICBbY2VudGVyQ2VsbHNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3N0YXJ0U2VjdGlvblRlbXBsYXRlXT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlKClcIlxuICAgICAgICAgICAgW3NtYWxsZXJGb250c109XCJzbWFsbGVyRm9udHMoKVwiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcCgpXCJcbiAgICAgICAgICAgIFtzaG93RmlsdGVyXT1cInNob3dGaWx0ZXIoKVwiXG4gICAgICAgICAgICBbc2hvd0V4cG9ydF09XCJzaG93RXhwb3J0KClcIlxuICAgICAgICAgICAgW2lzRXhwYW5kYWJsZV09XCJpc0V4cGFuZGFibGUoKVwiXG4gICAgICAgICAgICBbZXhwYW5kZWRSb3dUZW1wbGF0ZV09XCJleHBhbmRlZFJvd1RlbXBsYXRlKClcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsKClcIlxuICAgICAgICAgICAgbm9JdGVtVHh0PVwiTm8gcmVzdWx0cyBmb3VuZFwiXG4gICAgICAgICAgICAocm93Q2xpY2spPVwicm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbb3JkZXJGaWVsZF09XCJvcmRlckZpZWxkKClcIlxuICAgICAgICAgICAgW3Jvd09wdGlvbnNdPVwib3B0aW9ucygpXCJcbiAgICAgICAgICAgIFtzaG93QWRkaXRpb25hbENvbHVtbnNdPVwic2hvd0FkZGl0aW9uYWxDb2x1bW5zKClcIlxuICAgICAgICAgICAgW29yZGVyRGlyZWN0aW9uXT1cIm9yZGVyRGlyZWN0aW9uKClcIlxuICAgICAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucygpXCJcbiAgICAgICAgICAgIFtkYXRhXT1cImRhdGEoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICB9XG48L2xvYWRlcj5cbiJdfQ==
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
127
127
  type: ViewChild,
128
128
  args: [MatAutocomplete]
129
129
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBbUIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBZ0MscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0SCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQVcsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxP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QUMsU0FBUztnQkFNWSxlQUFlO3NCQUExQyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgbWVyZ2UsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBJT3B0aW9uIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElucHV0Q2xhc3NQaXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXRzLXBpcGVzLnBpcGUnO1xuaW1wb3J0IHsgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdDbGFzcywgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWF1dG9jb21wbGV0ZSxhdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2lucHV0L2lucHV0LmNvbXBvbmVudC5zY3NzJywgJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIElucHV0TGFiZWxDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBc3luY1BpcGUsXG4gICAgVG9BbnlQaXBlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgSW5wdXRDbGFzc1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudDxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IGV4dGVuZHMgSW5wdXRCYXNpY0NvbXBvbmVudDxURm9ybUdyb3VwLCBUQ29udHJvbCwgVE9wdGlvbj4ge1xuICBmaWx0ZXJlZE9wdGlvbnMgPSBzaWduYWw8SU9wdGlvbltdPihbXSk7XG5cbiAgQElucHV0KCkgc2hvd1JlcXVpcmVkVGFnOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgdmFsaWRhdGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgnb3B0aW9ucycpIG92ZXJyaWRlIHNldCBfb3B0aW9ucyh2OiBUT3B0aW9uW10gfCBudWxsKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgc3VwZXIuX29wdGlvbnMgPSB2O1xuICAgIGlmICh0aGlzLmF1dG9Db21wbGV0ZVJlZiAmJiB0aGlzLmNvbnRyb2w/LnZhbHVlKSB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5jb250cm9sPy52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUpIGF1dG9Db21wbGV0ZVJlZjogTWF0QXV0b2NvbXBsZXRlO1xuXG4gIHByb3RlY3RlZCB2YWx1ZUNoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgb3ZlcnJpZGUgbG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIGF1dG9TID0gaW5qZWN0KEF1dG9jb21wbGV0ZVNlcnZpY2UpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcih0aGlzLmluY2x1ZGVzT3B0aW9uKSkgdGhpcy5jb250cm9sPy5hZGRWYWxpZGF0b3JzKHRoaXMuaW5jbHVkZXNPcHRpb24pO1xuICAgIGVsc2UgZGVidWdnZXI7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zRnVuYykge1xuICAgICAgbGV0IGxhc3RSZXFUaW1lOiBudW1iZXI7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNjAwKSxcbiAgICAgICAgICBmaWx0ZXIoKHYpID0+IHYgIT0gbnVsbCAmJiB2ICE9ICcnKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBsYXN0UmVxVGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgY29uc3QgbG9jYWxSZXFUaW1lID0gbGFzdFJlcVRpbWUgKyAwO1xuICAgICAgICAgIHRoaXMub3B0aW9uc0Z1bmMocikuc3Vic2NyaWJlKChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAobG9jYWxSZXFUaW1lID09IGxhc3RSZXFUaW1lKSB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLm9wdGlvbnMkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zZXQocik7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlXG4gICAgICBtZXJnZSh0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSksIHRoaXMub3B0aW9ucyQpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zZXQodGhpcy5hdXRvUy5maWx0ZXJPcHRpb25zKHRoaXMuY29udHJvbC52YWx1ZSwgdGhpcy5vcHRpb25zKCkpKTtcbiAgICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcih0aGlzLmluY2x1ZGVzT3B0aW9uKSkgdGhpcy5jb250cm9sPy5yZW1vdmVWYWxpZGF0b3JzKHRoaXMuaW5jbHVkZXNPcHRpb24pO1xuICB9XG5cbiAgZmV0Y2hPcHRpb25zKCRldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zRnVuYykge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VkLm5leHQodGhpcy5jb250cm9sPy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0ZWQoJGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgdGhpcy5tU2VsZWN0ZWRPcHRpb25MYWJlbC5lbWl0KHRoaXMuZGlzcGxheVdpdGgodGhpcy5jb250cm9sPy52YWx1ZSkpO1xuICAgIHRoaXMuY29udHJvbC5mb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZGlzcGxheVdpdGgodGhpcy5jb250cm9sPy52YWx1ZSk7XG4gICAgc3VwZXIuY2hhbmdlKHsgdGFyZ2V0OiB7IHZhbHVlOiAkZXZlbnQub3B0aW9uLnZhbHVlIH0gfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zZXQodGhpcy5vcHRpb25zKCkpO1xuICAgIH0sIDYwMCk7XG4gIH1cblxuICBkaXNwbGF5V2l0aCA9ICh2YWw6IHN0cmluZykgPT4gdGhpcy5vcHRpb25zTWFwKClbSlNPTi5zdHJpbmdpZnkodmFsKV0/LmxhYmVsIHx8IHZhbDtcblxuICBpbmNsdWRlc09wdGlvbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICBjb25zdCB2YWwgPSBjb250cm9sPy52YWx1ZTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAoIXZhbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgLy8gZGVidWdnZXJcbiAgICBpZiAodGhpcy5vcHRpb25zTWFwKClbdmFsXSkgcmV0dXJuIG51bGw7XG4gICAgZWxzZSByZXR1cm4geyBub3RGb3VuZDogdHJ1ZSB9O1xuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgQGlmIChjb21wdXRlZFNob3dMYWJlbCgpKSB7XG4gICAgPGFwcC1pbnB1dC1sYWJlbFxuICAgICAgW2NvbG9yZWRdPVwiY29sb3JlZFNpZ25hbCgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm1TaWduYWwoKVwiXG4gICAgICBbaGludF09XCJoaW50XCJcbiAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgIFtpbnZhbGlkQ2hlY2tib3hdPVwiaW52YWxpZENoZWNrYm94U2lnbmFsKClcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwiaXNSZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtsYmxDbF09XCJsYmxDbFwiXG4gICAgICBbbGlnaHRdPVwibGlnaHRcIlxuICAgICAgW21pbmldPVwibWluaVNpZ25hbCgpXCJcbiAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2hvd1JlcXVpcmVkVGFnU2lnbmFsKClcIlxuICAgICAgW3Nob3dMYWJlbF09XCJzaG93TGFiZWxTaWduYWwoKVwiXG4gICAgICBbc21hbGxdPVwic21hbGxTaWduYWwoKVwiXG4gICAgICBbc3RhY2tlZF09XCJzdGFja2VkU2lnbmFsKClcIlxuICAgICAgW3RoZW1lXT1cInRoZW1lXCJcbiAgICAgIFt4c21hbGxdPVwieHNtYWxsXCIgLz5cbiAgfVxuICA8ZGl2IGNsYXNzPVwie3sgc3RhY2tlZFNpZ25hbCgpID8gJ2NvbC0xMicgOiAnY29sLW1kJyB9fSBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVNpZ25hbCgpXCIgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgZGF0YS1ub2Zvcm1hdD1cInRydWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgKGtleXVwKT1cImZldGNoT3B0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAjdHJpZ2dlcj1cIm1hdEF1dG9jb21wbGV0ZVRyaWdnZXJcIlxuICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAjaW5wIC8+XG4gICAgICBAaWYgKCFkaXNhYmxlZFNpZ25hbCgpKSB7XG4gICAgICAgIDxpIGNsYXNzPVwiaW5wdXQtaWNvbiBmYSBmYS1zZWFyY2hcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0cmlnZ2VyLm9wZW5QYW5lbCgpXCI+PC9pPlxuICAgICAgfVxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhcIiBjbGFzcz1cIm9wdGlvbnMtdy1hdXRvXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiZHVwbGljYXRlQ2hlY2s7IGVsc2UgZWxzZU5vRHVsaWNhdGVUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZE9wdGlvbnN8cmVtb3ZlVXNlZE9wdGlvbnNSZWFjdGl2ZTooZm9ybS5wYXJlbnR8dG9BbnkpOihmb3JtLnZhbHVlKTondmFsdWUnOm5hbWU7dHJhY2tCeTppUy50cmFja0J5VmFsdWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIiBbbWF0VG9vbHRpcF09XCJlbGUuaW5uZXJUZXh0XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJlbGUuc2Nyb2xsV2lkdGg8PWVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICNlbGU+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGU6IHRyYW5zbGF0ZU9wdGlvbnMgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlTm9EdWxpY2F0ZVRlbXBsYXRlPlxuICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZE9wdGlvbnM7dHJhY2tCeTppUy50cmFja0J5VmFsdWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIiBbbWF0VG9vbHRpcF09XCJlbGUuaW5uZXJUZXh0XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJlbGUuc2Nyb2xsV2lkdGg8PWVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICNlbGU+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGU6IHRyYW5zbGF0ZU9wdGlvbnMgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cblxuICAgICAgICBAaWYgKHNob3dFbXB0eU9wdGlvblNpZ25hbCgpKSB7XG4gICAgICAgICAgPG1hdC1vcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIm51bGxcIiBjbGFzcz1cImVtcHR5LW9wdGlvblwiPlxuICAgICAgICAgICAge3sgb3B0aW9uc0Z1bmMgPyAnVHlwZSB0byBzZWFyY2gnIDogcGxhY2Vob2xkZXIoKSB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkT3B0aW9ucygpOyB0cmFjayBpUy50cmFja0J5VmFsdWUpIHtcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiIFttYXRUb29sdGlwXT1cImVsZS5pbm5lclRleHRcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cImVsZS5zY3JvbGxXaWR0aCA8PSBlbGUub2Zmc2V0V2lkdGhcIiAjZWxlPlxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgYXBwVHJhbnNsYXRlOiB0cmFuc2xhdGVPcHRpb25zKCkgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICBAaWYgKGRpcnR5U2lnbmFsKCkgJiYgc2hvd1ZhbGlkYXRpb25TaWduYWwoKSAmJiBzaG93VmFsaWRhdGlvbkljb25TaWduYWwoKSkge1xuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgdmFsaWQ6IHZhbGlkU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+PC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBwZW5kaW5nOiBwZW5kaW5nU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGludmFsaWQ6IGludmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT48L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHRleHQtcHJpbWFyeSBtZS0xIHZhbGlkaXR5LWljb25cIj48aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG5AaWYgKHNob3dWYWxpZGF0aW9uTXNnU2lnbmFsKCkpIHtcbiAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2xhYmVsXT1cImxhYmVsU2lnbmFsKClcIiBbY29udHJvbF09XCJjb250cm9sU2lnbmFsKClcIiAvPlxufVxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBbUIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBZ0MscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0SCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQVcsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxP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QUMsU0FBUztnQkFNWSxlQUFlO3NCQUExQyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgbWVyZ2UsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBJT3B0aW9uIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElucHV0Q2xhc3NQaXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXRzLXBpcGVzLnBpcGUnO1xuaW1wb3J0IHsgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdDbGFzcywgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWF1dG9jb21wbGV0ZSxhdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2lucHV0L2lucHV0LmNvbXBvbmVudC5zY3NzJywgJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIElucHV0TGFiZWxDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBc3luY1BpcGUsXG4gICAgVG9BbnlQaXBlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgSW5wdXRDbGFzc1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudDxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbiAgVENvbnRyb2wgPSBhbnksXG4gIFRPcHRpb24gPSBhbnksXG4+IGV4dGVuZHMgSW5wdXRCYXNpY0NvbXBvbmVudDxURm9ybUdyb3VwLCBUQ29udHJvbCwgVE9wdGlvbj4ge1xuICBmaWx0ZXJlZE9wdGlvbnMgPSBzaWduYWw8SU9wdGlvbltdPihbXSk7XG5cbiAgQElucHV0KCkgc2hvd1JlcXVpcmVkVGFnOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgdmFsaWRhdGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgnb3B0aW9ucycpIG92ZXJyaWRlIHNldCBfb3B0aW9ucyh2OiBUT3B0aW9uW10gfCBudWxsKSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgc3VwZXIuX29wdGlvbnMgPSB2O1xuICAgIGlmICh0aGlzLmF1dG9Db21wbGV0ZVJlZiAmJiB0aGlzLmNvbnRyb2w/LnZhbHVlKSB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5jb250cm9sPy52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUpIGF1dG9Db21wbGV0ZVJlZjogTWF0QXV0b2NvbXBsZXRlO1xuXG4gIHByb3RlY3RlZCB2YWx1ZUNoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgb3ZlcnJpZGUgbG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIGF1dG9TID0gaW5qZWN0KEF1dG9jb21wbGV0ZVNlcnZpY2UpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcih0aGlzLmluY2x1ZGVzT3B0aW9uKSkgdGhpcy5jb250cm9sPy5hZGRWYWxpZGF0b3JzKHRoaXMuaW5jbHVkZXNPcHRpb24pO1xuICAgIGVsc2UgZGVidWdnZXI7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zRnVuYykge1xuICAgICAgbGV0IGxhc3RSZXFUaW1lOiBudW1iZXI7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNjAwKSxcbiAgICAgICAgICBmaWx0ZXIoKHYpID0+IHYgIT0gbnVsbCAmJiB2ICE9ICcnKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICBsYXN0UmVxVGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgY29uc3QgbG9jYWxSZXFUaW1lID0gbGFzdFJlcVRpbWUgKyAwO1xuICAgICAgICAgIHRoaXMub3B0aW9uc0Z1bmMocikuc3Vic2NyaWJlKChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAobG9jYWxSZXFUaW1lID09IGxhc3RSZXFUaW1lKSB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLm9wdGlvbnMkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zZXQocik7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlXG4gICAgICBtZXJnZSh0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSksIHRoaXMub3B0aW9ucyQpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zZXQodGhpcy5hdXRvUy5maWx0ZXJPcHRpb25zKHRoaXMuY29udHJvbC52YWx1ZSwgdGhpcy5vcHRpb25zKCkpKTtcbiAgICAgIH0pO1xuICB9XG4gIFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5jb250cm9sPy5oYXNWYWxpZGF0b3IodGhpcy5pbmNsdWRlc09wdGlvbikpIHRoaXMuY29udHJvbD8ucmVtb3ZlVmFsaWRhdG9ycyh0aGlzLmluY2x1ZGVzT3B0aW9uKTtcbiAgfVxuXG4gIGZldGNoT3B0aW9ucygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMub3B0aW9uc0Z1bmMpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5uZXh0KHRoaXMuY29udHJvbD8udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkKCRldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuICAgIHRoaXMubVNlbGVjdGVkT3B0aW9uTGFiZWwuZW1pdCh0aGlzLmRpc3BsYXlXaXRoKHRoaXMuY29udHJvbD8udmFsdWUpKTtcbiAgICB0aGlzLmNvbnRyb2wuZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmRpc3BsYXlXaXRoKHRoaXMuY29udHJvbD8udmFsdWUpO1xuICAgIHN1cGVyLmNoYW5nZSh7IHRhcmdldDogeyB2YWx1ZTogJGV2ZW50Lm9wdGlvbi52YWx1ZSB9IH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc2V0KHRoaXMub3B0aW9ucygpKTtcbiAgICB9LCA2MDApO1xuICB9XG5cbiAgZGlzcGxheVdpdGggPSAodmFsOiBzdHJpbmcpID0+IHRoaXMub3B0aW9uc01hcCgpW0pTT04uc3RyaW5naWZ5KHZhbCldPy5sYWJlbCB8fCB2YWw7XG5cbiAgaW5jbHVkZXNPcHRpb24gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgY29uc3QgdmFsID0gY29udHJvbD8udmFsdWU7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKCF2YWwpIHJldHVybiBudWxsO1xuICAgIGlmICghdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKHRoaXMub3B0aW9uc01hcCgpW3ZhbF0pIHJldHVybiBudWxsO1xuICAgIGVsc2UgcmV0dXJuIHsgbm90Rm91bmQ6IHRydWUgfTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gIEBpZiAoY29tcHV0ZWRTaG93TGFiZWwoKSkge1xuICAgIDxhcHAtaW5wdXQtbGFiZWxcbiAgICAgIFtjb2xvcmVkXT1cImNvbG9yZWRTaWduYWwoKVwiXG4gICAgICBbZm9ybV09XCJmb3JtU2lnbmFsKClcIlxuICAgICAgW2hpbnRdPVwiaGludFwiXG4gICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICBbaW52YWxpZENoZWNrYm94XT1cImludmFsaWRDaGVja2JveFNpZ25hbCgpXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cImlzUmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiXG4gICAgICBbbGJsQ2xdPVwibGJsQ2xcIlxuICAgICAgW2xpZ2h0XT1cImxpZ2h0XCJcbiAgICAgIFttaW5pXT1cIm1pbmlTaWduYWwoKVwiXG4gICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNob3dSZXF1aXJlZFRhZ1NpZ25hbCgpXCJcbiAgICAgIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsU2lnbmFsKClcIlxuICAgICAgW3NtYWxsXT1cInNtYWxsU2lnbmFsKClcIlxuICAgICAgW3N0YWNrZWRdPVwic3RhY2tlZFNpZ25hbCgpXCJcbiAgICAgIFt0aGVtZV09XCJ0aGVtZVwiXG4gICAgICBbeHNtYWxsXT1cInhzbWFsbFwiIC8+XG4gIH1cbiAgPGRpdiBjbGFzcz1cInt7IHN0YWNrZWRTaWduYWwoKSA/ICdjb2wtMTInIDogJ2NvbC1tZCcgfX0gcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1TaWduYWwoKVwiIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGRhdGEtbm9mb3JtYXQ9XCJ0cnVlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgIChrZXl1cCk9XCJmZXRjaE9wdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgI3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgI2lucCAvPlxuICAgICAgQGlmICghZGlzYWJsZWRTaWduYWwoKSkge1xuICAgICAgICA8aSBjbGFzcz1cImlucHV0LWljb24gZmEgZmEtc2VhcmNoXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdHJpZ2dlci5vcGVuUGFuZWwoKVwiPjwvaT5cbiAgICAgIH1cbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlXaXRoXCIgY2xhc3M9XCJvcHRpb25zLXctYXV0b1wiIChvcHRpb25TZWxlY3RlZCk9XCJzZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImR1cGxpY2F0ZUNoZWNrOyBlbHNlIGVsc2VOb0R1bGljYXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zfHJlbW92ZVVzZWRPcHRpb25zUmVhY3RpdmU6KGZvcm0ucGFyZW50fHRvQW55KTooZm9ybS52YWx1ZSk6J3ZhbHVlJzpuYW1lO3RyYWNrQnk6aVMudHJhY2tCeVZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uXCIgW21hdFRvb2x0aXBdPVwiZWxlLmlubmVyVGV4dFwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoPD1lbGUub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgYXBwVHJhbnNsYXRlOiB0cmFuc2xhdGVPcHRpb25zIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZU5vRHVsaWNhdGVUZW1wbGF0ZT5cbiAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zO3RyYWNrQnk6aVMudHJhY2tCeVZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uXCIgW21hdFRvb2x0aXBdPVwiZWxlLmlubmVyVGV4dFwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoPD1lbGUub2Zmc2V0V2lkdGhcIlxuICAgICAgICAgICAgICAjZWxlPlxuICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIHwgYXBwVHJhbnNsYXRlOiB0cmFuc2xhdGVPcHRpb25zIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT4gLS0+XG5cbiAgICAgICAgQGlmIChzaG93RW1wdHlPcHRpb25TaWduYWwoKSkge1xuICAgICAgICAgIDxtYXQtb3B0aW9uIHNlbGVjdGVkIFt2YWx1ZV09XCJudWxsXCIgY2xhc3M9XCJlbXB0eS1vcHRpb25cIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbnNGdW5jID8gJ1R5cGUgdG8gc2VhcmNoJyA6IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZE9wdGlvbnMoKTsgdHJhY2sgaVMudHJhY2tCeVZhbHVlKSB7XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIiBbbWF0VG9vbHRpcF09XCJlbGUuaW5uZXJUZXh0XCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJlbGUuc2Nyb2xsV2lkdGggPD0gZWxlLm9mZnNldFdpZHRoXCIgI2VsZT5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZTogdHJhbnNsYXRlT3B0aW9ucygpIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgQGlmIChkaXJ0eVNpZ25hbCgpICYmIHNob3dWYWxpZGF0aW9uU2lnbmFsKCkgJiYgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsKCkpIHtcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IHZhbGlkOiB2YWxpZFNpZ25hbCgpIH1cIiBjbGFzcz1cInZhbGlkaXR5LWljb25cIj48aSBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPjwvZGl2PlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgcGVuZGluZzogcGVuZGluZ1NpZ25hbCgpIH1cIiBjbGFzcz1cInZhbGlkaXR5LWljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBpbnZhbGlkOiBpbnZhbGlkU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+PC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCB0ZXh0LXByaW1hcnkgbWUtMSB2YWxpZGl0eS1pY29uXCI+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+PC9kaXY+XG4gICAgICB9XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuQGlmIChzaG93VmFsaWRhdGlvbk1zZ1NpZ25hbCgpKSB7XG4gIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCIgW2NvbnRyb2xdPVwiY29udHJvbFNpZ25hbCgpXCIgLz5cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { DestroyRef, computed, inject, signal } from '@angular/core';
2
+ import { cloneDeep } from 'lodash-es';
3
+ import { UtilityService } from '../../../Services/utility.service';
4
+ export class BaseFormGenerator {
5
+ constructor() {
6
+ this.formSchemaMap = signal({});
7
+ this.formSchema = computed(() => Object.values(this.formSchemaMap()).filter((x) => x));
8
+ this.subs = {};
9
+ this.utilityService = inject(UtilityService);
10
+ this.destroyRef = inject(DestroyRef);
11
+ this.destroyRef.onDestroy(() => {
12
+ this.onDestroy();
13
+ });
14
+ }
15
+ onDestroy() {
16
+ Object.values(this.subs).forEach((s) => {
17
+ s?.unsubscribe();
18
+ });
19
+ this.subs = {};
20
+ }
21
+ _setFormSchemas(schemas) {
22
+ this.formSchemaMap.set((schemas || []).toMap('field'));
23
+ }
24
+ _updateFormSchema(field, scheme) {
25
+ this.formSchemaMap.update((formSchemaMap) => {
26
+ const sch = formSchemaMap[field];
27
+ return !sch ? { ...formSchemaMap, [field]: scheme } : { ...formSchemaMap, [field]: { ...sch, ...scheme } };
28
+ });
29
+ }
30
+ _updateAllFormSchema(map) {
31
+ this.formSchemaMap.update((formSchemaMap) => {
32
+ const newFormSchemaMap = {};
33
+ for (const key in formSchemaMap) {
34
+ if (Object.prototype.hasOwnProperty.call(newFormSchemaMap, key)) {
35
+ newFormSchemaMap[key] = map(formSchemaMap[key]);
36
+ }
37
+ }
38
+ return newFormSchemaMap;
39
+ });
40
+ return this.formSchema();
41
+ }
42
+ _removeFormSchema(field) {
43
+ this.formSchemaMap.update((formSchemaMap) => {
44
+ delete formSchemaMap[field];
45
+ return cloneDeep(formSchemaMap);
46
+ });
47
+ }
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUluRSxNQUFNLE9BQWdCLGlCQUFpQjtJQVFyQztRQVBBLGtCQUFhLEdBQUcsTUFBTSxDQUF1QyxFQUFFLENBQUMsQ0FBQztRQUNqRSxlQUFVLEdBQUcsUUFBUSxDQUFvQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxTQUFJLEdBQTBDLEVBQUUsQ0FBQztRQUUxQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBR3JDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFUyxlQUFlLENBQUMsT0FBMEI7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQWEsRUFBRSxNQUFnQztRQUN6RSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUMsS0FBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQyxLQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUMzSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDUyxvQkFBb0IsQ0FBQyxHQUFvRDtRQUNqRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzFDLE1BQU0sZ0JBQWdCLEdBQXlCLEVBQUUsQ0FBQztZQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRTtnQkFDL0IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQy9ELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDakQ7YUFDRjtZQUNELE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVMsaUJBQWlCLENBQUMsS0FBYTtRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzFDLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFzeW5jVmFsaWRhdG9yRm4sIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT3B0aW9uTGFiZWxUeXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSU9iamVjdExpdGVyYWwsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZvcm1HZW5lcmF0b3I8VEZvcm1Hcm91cCBleHRlbmRzIElPYmplY3RMaXRlcmFsLCBUQmFzZUZvcm1TY2hlbWEgZXh0ZW5kcyB7IGZpZWxkPzogYW55IH0gPSBhbnk+IHtcbiAgZm9ybVNjaGVtYU1hcCA9IHNpZ25hbDx7IFtmaWVsZDogc3RyaW5nXTogVEJhc2VGb3JtU2NoZW1hIH0+KHt9KTtcbiAgZm9ybVNjaGVtYSA9IGNvbXB1dGVkPFRCYXNlRm9ybVNjaGVtYVtdPigoKSA9PiBPYmplY3QudmFsdWVzKHRoaXMuZm9ybVNjaGVtYU1hcCgpKS5maWx0ZXIoKHgpID0+IHgpKTtcbiAgc3ViczogeyBbZmllbGROYW1lOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuXG4gIHB1YmxpYyB1dGlsaXR5U2VydmljZSA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRGVzdHJveSgpIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc3VicykuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcz8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnMgPSB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0Rm9ybVNjaGVtYXMoc2NoZW1hczogVEJhc2VGb3JtU2NoZW1hW10pIHtcbiAgICB0aGlzLmZvcm1TY2hlbWFNYXAuc2V0KChzY2hlbWFzIHx8IFtdKS50b01hcCgnZmllbGQnKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3VwZGF0ZUZvcm1TY2hlbWEoZmllbGQ6IHN0cmluZywgc2NoZW1lOiBQYXJ0aWFsPFRCYXNlRm9ybVNjaGVtYT4pIHtcbiAgICB0aGlzLmZvcm1TY2hlbWFNYXAudXBkYXRlKChmb3JtU2NoZW1hTWFwKSA9PiB7XG4gICAgICBjb25zdCBzY2ggPSBmb3JtU2NoZW1hTWFwW2ZpZWxkXTtcbiAgICAgIHJldHVybiAhc2NoID8geyAuLi5mb3JtU2NoZW1hTWFwLCBbZmllbGQgYXMgYW55XTogc2NoZW1lIH0gOiB7IC4uLmZvcm1TY2hlbWFNYXAsIFtmaWVsZCBhcyBhbnldOiB7IC4uLnNjaCwgLi4uc2NoZW1lIH0gfTtcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQgX3VwZGF0ZUFsbEZvcm1TY2hlbWEobWFwOiAoZm9ybUZpZWxkOiBUQmFzZUZvcm1TY2hlbWEpID0+IFRCYXNlRm9ybVNjaGVtYSkge1xuICAgIHRoaXMuZm9ybVNjaGVtYU1hcC51cGRhdGUoKGZvcm1TY2hlbWFNYXApID0+IHtcbiAgICAgIGNvbnN0IG5ld0Zvcm1TY2hlbWFNYXA6IHR5cGVvZiBmb3JtU2NoZW1hTWFwID0ge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtU2NoZW1hTWFwKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV3Rm9ybVNjaGVtYU1hcCwga2V5KSkge1xuICAgICAgICAgIG5ld0Zvcm1TY2hlbWFNYXBba2V5XSA9IG1hcChmb3JtU2NoZW1hTWFwW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3Rm9ybVNjaGVtYU1hcDtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2NoZW1hKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3JlbW92ZUZvcm1TY2hlbWEoZmllbGQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybVNjaGVtYU1hcC51cGRhdGUoKGZvcm1TY2hlbWFNYXApID0+IHtcbiAgICAgIGRlbGV0ZSBmb3JtU2NoZW1hTWFwW2ZpZWxkXTtcbiAgICAgIHJldHVybiBjbG9uZURlZXAoZm9ybVNjaGVtYU1hcCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUZvcm1TY2hlbWE8XG4gIFQsXG4gIENvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFQ+LFxuICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICB9ID0gYW55LFxuPiB7XG4gIGFzeW5jVmFsaWRhdG9ycz86IEFzeW5jVmFsaWRhdG9yRm5bXTtcbiAgYXV0b1BpY2tWYWx1ZUZpZWxkPzogYm9vbGVhbjtcbiAgY2hlY2tlZD86IGJvb2xlYW47XG4gIGNsZWFyT25EaXNhYmxlPzogYm9vbGVhbjtcbiAgY2xzPzogc3RyaW5nO1xuICBjb3VudHJ5Q29kZTM/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogSUJhc2VGb3JtU2NoZW1hPFQsIENvbXBvbmVudCwgVEZvcm1Hcm91cD5bXTtcbiAgZGVjaW1hbFBvaW50cz86IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZElmPzogKHJvdzogYW55LCBjZWxsRmllbGQ/OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIGhpZGVJZkZ1bmM/OiAocm93KSA9PiBib29sZWFuO1xuICBmaWVsZDoga2V5b2YgVEZvcm1Hcm91cDtcbiAgZm9ybT86IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgZ2V0Q291bnRyeUNvZGUzS2V5Pzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBoaW50Pzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzU2VhcmNoRmllbGQ/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcbiAgbGFiZWxUeXBlPzogT3B0aW9uTGFiZWxUeXBlO1xuICBvcHRpb25MYWJlbEZvcm1hdHRlcj86IChyb3cpID0+IHN0cmluZztcbiAgbWF4PzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIG5vRm9ybWF0PzogYm9vbGVhbjtcbiAgb3B0aW9uRm9ybWF0dGVyPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuICBvcHRpb25zPzogYW55W107XG4gIG9wdGlvbnNBc3luYz86IE9ic2VydmFibGU8YW55W10+IHwgUHJvbWlzZTxhbnlbXT47XG4gIG9wdGlvbnNJbml0RnVuYz86IE9ic2VydmFibGU8YW55W10+O1xuICBvcHRpb25zSW5pdEZ1bmMyPzogKCkgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XG4gIG9wdGlvbnNLZXk/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBzZWFyY2hGdW5jPzogKC4uLmFyZ3MpID0+IGFueTtcbiAgc2V0QXNDb3VudHJ5Q29kZTM/OiBib29sZWFuO1xuICBzaG93VmFsaWRhdGlvbj86IGJvb2xlYW47XG4gIHNob3dWYWxpZGF0aW9uSWNvbj86IGJvb2xlYW47XG4gIHRlbXBsYXRlVmFsdWU/OiBhbnk7XG4gIHR5cGU/OiBJbnB1dFR5cGU7XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdO1xuICB2YWx1ZT86IGFueTtcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcbiAgb3B0aW9uc0Z1bmM/OiAoLi4udmFsOiBhbnkpID0+IE9ic2VydmFibGU8YW55W10+O1xuICB0cmlnZ2VyT25DaGFuZ2VPbkluaXQ/OiBib29sZWFuO1xuICBmb3JtYXR0ZXI/OiAocm93OiB7IFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBhbnkgfSwgZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwKSA9PiBzdHJpbmc7XG4gIGV4dHJhPzogYW55O1xuICBvbkNoYW5nZUZ1bmM/OiAocm93OiB7IFtLIGluIGtleW9mIFRGb3JtR3JvdXBdPzogVEZvcm1Hcm91cFtLXVsndmFsdWUnXSB9LCBjZWxsVmFsdWU/OiBhbnksIGNvbXBvbmVudD86IENvbXBvbmVudCkgPT4gT2JzZXJ2YWJsZTxhbnlbXT4gfCBhbnk7XG4gIG9uUmVtb3ZlRnVuYz86IChyb3c6IHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IFRGb3JtR3JvdXBbS11bJ3ZhbHVlJ10gfSwgY2VsbD86IGFueSwgY29tcG9uZW50PzogQ29tcG9uZW50KSA9PiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIHNob3dWYWxpZGF0aW9uTXNnPzogYm9vbGVhbjtcbiAgZG9udEZvcm1hdEFzSW5wdXQ/OiBib29sZWFuO1xuICBzaG93UmVxdWlyZWRUYWc/OiBib29sZWFuO1xuICB0YWJsZUZvcm1hdHRlcj86ICh2YWw6IGFueSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkIHwgUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHwgT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBpY29uPzogSWNvblR5cGU7XG59XG4iXX0=