@dsivd/prestations-ng 17.0.0-beta.6 → 17.0.0-beta.7
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.
- package/CHANGELOG.md +5 -0
- package/ESLINT_MIGRATION_GUIDE.md +2 -1
- package/dsivd-prestations-ng-17.0.0-beta.7.tgz +0 -0
- package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +3 -4
- package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +3 -3
- package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +33 -31
- package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +3 -3
- package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +3 -3
- package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +3 -3
- package/esm2022/foehn-list/foehn-list.component.mjs +3 -3
- package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +3 -3
- package/esm2022/foehn-modal/foehn-modal.component.mjs +3 -3
- package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +3 -3
- package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +2 -2
- package/esm2022/foehn-page/foehn-page.component.mjs +3 -3
- package/esm2022/foehn-table/foehn-table.component.mjs +7 -3
- package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +2 -2
- package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +2 -2
- package/esm2022/foehn-upload/uploader.helper.mjs +5 -13
- package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +3 -3
- package/esm2022/sdk-dictionary/default-dictionary.mjs +2 -1
- package/esm2022/sdk-drafts/drafts-container.component.mjs +3 -3
- package/esm2022/sdk-support-alert/support-alert-container.component.mjs +3 -3
- package/esm2022/sdk-support-alert/support-alert.component.mjs +10 -12
- package/fesm2022/dsivd-prestations-ng.mjs +81 -84
- package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-checkables/foehn-checkable-group.component.d.ts +2 -1
- package/foehn-table/foehn-table.component.d.ts +3 -1
- package/package.json +1 -1
- package/dsivd-prestations-ng-17.0.0-beta.6.tgz +0 -0
|
@@ -244,7 +244,7 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
|
|
|
244
244
|
useExisting: forwardRef(() => FoehnMultiselectAutocompleteComponent),
|
|
245
245
|
multi: true
|
|
246
246
|
}
|
|
247
|
-
], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true }, { propertyName: "defaultDeleteFocusArea", first: true, predicate: ["defaultDeleteFocusArea"], descendants: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true }, { propertyName: "defaultElemRef", predicate: ["defaultElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementSuggestionLabel]=\"elementSuggestionLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx\"\n [caseSensitiveSearch]=\"caseSensitiveSearch\"\n >\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText\n ? helpText\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info mb-0\"\n tabindex=\"0\"\n >\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n <small\n *ngIf=\"hasDefaultDeleteFocusArea()\"\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <fieldset\n *ngIf=\"!!model?.length\"\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend | fromDictionary\"\n ></legend>\n\n <div class=\"selected-list d-flex align-content-stretch flex-wrap\">\n <ng-container\n *ngFor=\"\n let element of model;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n {{ getBadgeLabel(element) }}\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{ getBadgeLabel(element) }}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n </div>\n </fieldset>\n </div>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"], dependencies: [{ kind: "component", type: i2.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "isSuggestionListDynamic", "customValueModelGenerator", "itemHeightInSuggestionListInPx", "elementSuggestionLabel", "caseSensitiveSearch", "disabled"], outputs: ["userSearchInput"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
247
|
+
], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true }, { propertyName: "defaultDeleteFocusArea", first: true, predicate: ["defaultDeleteFocusArea"], descendants: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true }, { propertyName: "defaultElemRef", predicate: ["defaultElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementSuggestionLabel]=\"elementSuggestionLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx\"\n [caseSensitiveSearch]=\"caseSensitiveSearch\"\n >\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText\n ? helpText\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info mb-0\"\n tabindex=\"0\"\n >\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n <small\n *ngIf=\"hasDefaultDeleteFocusArea()\"\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <fieldset\n *ngIf=\"!!model?.length\"\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend | fromDictionary\"\n ></legend>\n\n <div class=\"selected-list d-flex align-content-stretch flex-wrap\">\n <ng-container\n *ngFor=\"\n let element of model;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n {{ getBadgeLabel(element) }}\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n type=\"button\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{ getBadgeLabel(element) }}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n </div>\n </fieldset>\n </div>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"], dependencies: [{ kind: "component", type: i2.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "isSuggestionListDynamic", "customValueModelGenerator", "itemHeightInSuggestionListInPx", "elementSuggestionLabel", "caseSensitiveSearch", "disabled"], outputs: ["userSearchInput"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
248
248
|
}
|
|
249
249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnMultiselectAutocompleteComponent, decorators: [{
|
|
250
250
|
type: Component,
|
|
@@ -254,7 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
254
254
|
useExisting: forwardRef(() => FoehnMultiselectAutocompleteComponent),
|
|
255
255
|
multi: true
|
|
256
256
|
}
|
|
257
|
-
], template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementSuggestionLabel]=\"elementSuggestionLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx\"\n [caseSensitiveSearch]=\"caseSensitiveSearch\"\n >\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText\n ? helpText\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info mb-0\"\n tabindex=\"0\"\n >\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n <small\n *ngIf=\"hasDefaultDeleteFocusArea()\"\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <fieldset\n *ngIf=\"!!model?.length\"\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend | fromDictionary\"\n ></legend>\n\n <div class=\"selected-list d-flex align-content-stretch flex-wrap\">\n <ng-container\n *ngFor=\"\n let element of model;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n {{ getBadgeLabel(element) }}\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{ getBadgeLabel(element) }}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n </div>\n </fieldset>\n </div>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"] }]
|
|
257
|
+
], template: "<div\n class=\"form-group container-box\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n>\n <foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementSuggestionLabel]=\"elementSuggestionLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n [showErrorWhenDisabled]=\"showErrorWhenDisabled\"\n [hideNotRequiredExtraLabel]=\"hideNotRequiredExtraLabel\"\n [itemHeightInSuggestionListInPx]=\"itemHeightInSuggestionListInPx\"\n [caseSensitiveSearch]=\"caseSensitiveSearch\"\n >\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"\n helpText\n ? helpText\n : ('foehn-multiselect-autocomplete.autocomplete.screen-reader.label'\n | fromDictionary)\n \"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info mb-0\"\n tabindex=\"0\"\n >\n {{\n 'foehn-multiselect-autocomplete.autocomplete.empty-message'\n | fromDictionary\n }}\n </p>\n </div>\n </foehn-autocomplete>\n\n <div class=\"selected-list-container pt-2\" tabindex=\"-1\">\n <small\n *ngIf=\"hasDefaultDeleteFocusArea()\"\n class=\"form-text text-secondary my-0\"\n [tabindex]=\"0\"\n [innerHTML]=\"noElementsSelectedLabel | fromDictionary\"\n #defaultDeleteFocusArea\n ></small>\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"visually-hidden\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <fieldset\n *ngIf=\"!!model?.length\"\n class=\"mb-0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n <legend\n [id]=\"buildChildId('Legend')\"\n class=\"form-text text-secondary small mb-0\"\n [innerHTML]=\"selectedItemsListLegend | fromDictionary\"\n ></legend>\n\n <div class=\"selected-list d-flex align-content-stretch flex-wrap\">\n <ng-container\n *ngFor=\"\n let element of model;\n let index = index;\n trackBy: trackByFn\n \"\n >\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge rounded-pill bg-secondary me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n #defaultElemRef\n >\n {{ getBadgeLabel(element) }}\n <span class=\"visually-hidden\">\n {{\n 'foehn-multiselect-autocomplete.sr-default-selected-element'\n | fromDictionary\n }}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n type=\"button\"\n class=\"btn btn-primary badge rounded-pill me-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Legend')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{ getBadgeLabel(element) }}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ms-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n </div>\n </fieldset>\n </div>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}:host ::ng-deep foehn-autocomplete .form-group{margin-bottom:0!important}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}:host ::ng-deep .btn .svg-inline--fa{color:#fff!important}.selected-list-container span.rounded-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.container-box{border:1px solid #ededed;background-color:#fbfbfb;padding:.5rem}.container-box.vd-form-group-danger{border-left:5px solid var(--vd-danger);padding-left:1rem}:host ::ng-deep foehn-autocomplete div.vd-form-group-danger{border-left:0;padding-left:0}\n"] }]
|
|
258
258
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.SdkDictionaryService }], propDecorators: { hostName: [{
|
|
259
259
|
type: HostBinding,
|
|
260
260
|
args: ['attr.name']
|
|
@@ -284,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
284
284
|
}], defaultElementValue: [{
|
|
285
285
|
type: Input
|
|
286
286
|
}] } });
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWlCeEQsTUFBTSxPQUFPLHFDQUNULFNBQVEsMEJBQTBCO0lBNENsQyxZQUNJLE1BQWMsRUFDTixpQkFBdUM7UUFFL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRk4sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQXpCbkQ7OztXQUdHO1FBRUgsc0JBQWlCLEdBQVEsT0FBTyxDQUFDO1FBR2pDLDRCQUF1QixHQUNuQiwyREFBMkQsQ0FBQztRQUdoRSw0QkFBdUIsR0FDbkIsc0VBQXNFLENBQUM7UUFHM0UseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdC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QUFDLHFDQUFxQyxDQUM5QztnQkFDRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osbWtCQ2hDTCxxd0tBd0lBOzsyRkR0R2EscUNBQXFDO2tCQWRqRCxTQUFTOytCQUNJLGdDQUFnQyxhQUcvQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUNuQixHQUFHLEVBQUUsc0NBQXNDLENBQzlDOzRCQUNELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhHQU9ELFFBQVE7c0JBRFAsV0FBVzt1QkFBQyxXQUFXO2dCQUl4QixxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUlsQyxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUlsQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUkvQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUk5QixzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsd0JBQXdCO2dCQVFuQyxpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkF3QkYsb0JBQW9CO3NCQUR2QixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tYXV0b2NvbXBsZXRlL2ZvZWhuLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZihcbiAgICAgICAgICAgICAgICAoKSA9PiBGb2Vobk11bHRpc2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5BdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5uYW1lJylcbiAgICBob3N0TmFtZTogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlQ29tcG9uZW50JylcbiAgICBhdXRvY29tcGxldGVDb21wb25lbnQ6IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnYWxlcnRNZXNzYWdlQ29udGFpbmVyJylcbiAgICBhbGVydE1lc3NhZ2VDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdzZWxlY3RlZEVsZW1SZWYnKVxuICAgIHNlbGVjdGVkRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZHJlbignZGVmYXVsdEVsZW1SZWYnKVxuICAgIGRlZmF1bHRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0RGVsZXRlRm9jdXNBcmVhJylcbiAgICBkZWZhdWx0RGVsZXRlRm9jdXNBcmVhOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uXG4gICAgICogRGVmYXVsdHMgdG8gYGxhYmVsYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudEJhZGdlTGFiZWw6IGFueSA9ICdsYWJlbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC1pdGVtcy1saXN0LWxlZ2VuZCc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5vRWxlbWVudHNTZWxlY3RlZExhYmVsID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LWZvY3VzLm5vLWVsZW1lbnQtdG8tZGVsZXRlJztcblxuICAgIGF1dG9jb21wbGV0ZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBzaG93RW1wdHlMaXN0TWVzc2FnZSA9IGZhbHNlO1xuICAgIHNyQW5ub3VuY2VtZW50cyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbWVudFZhbHVlc186IHVua25vd25bXTtcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAyMDAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihuZ1pvbmUpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0RWxlbWVudFZhbHVlcygpOiB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlc187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZXMoaXRlbXM6IHVua25vd25bXSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXyA9IFsuLi5pdGVtc107XG4gICAgICAgIGlmICgoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSAmJiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmF1bHRFbGVtZW50VmFsdWUoaXRlbTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMgPSBbaXRlbV07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIFRoZSBob3N0IGlzIG5vdCByZWxhdGVkIHRvIGZvZWhuIGVycm9yIG1hbmFnZW1lbnQgYnV0IGZvZWhuLWF1dG9jb21wbGV0ZSBpcy5cbiAgICAgICAgdGhpcy5ob3N0SWQgPSB0aGlzLmJ1aWxkSWQoJ1BhcmVudENvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLmhvc3ROYW1lID0gdGhpcy5ob3N0SWQ7XG4gICAgICAgIHRoaXMuZXhjbHVkZUZyb21FcnJvclN1bW1hcnkgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCBPYmplY3RIZWxwZXIuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0obnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNFcnJvcnNUb0Rpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50Lmhhc0Vycm9yc1RvRGlzcGxheSgpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEl0ZW0oaXRlbTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RlbC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUl0ZW0oaXRlbTogdW5rbm93biwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJSZW1vdmluZ0FuSXRlbShpbmRleCk7XG4gICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIHRydWUpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldExhYmVsKGVsZW0pO1xuICAgIH1cblxuICAgIGNhbkJlRGVsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgKCF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMuaW5jbHVkZXModGhpcy5tb2RlbFtpbmRleF0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoZWxlbWVudHM6IFtdKTogdm9pZCB7XG4gICAgICAgIC8vIE5lZWQgdG8gd2FpdCBmb3IgY2hpbGRWaWV3IHRvIGJlIGxvYWRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cy5sZW5ndGhcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQ6IHVua25vd24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC5kZWxldGUnLFxuICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfVxuICAgICAgICApfWA7XG4gICAgfVxuXG4gICAgaGFzRGVmYXVsdERlbGV0ZUZvY3VzQXJlYSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICAgICAhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAhdGhpcy5tb2RlbD8ubGVuZ3RoXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VMYWJlbChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudEJhZGdlTGFiZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMYWJlbChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50QmFkZ2VMYWJlbChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRFbGVtZW50QnlNb2RlbEl0ZW0oaXRlbTogdW5rbm93bik6IHVua25vd24ge1xuICAgICAgICBpZiAoISF0aGlzLmVsZW1lbnRzICYmICEhdGhpcy5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZTogdW5rbm93biA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0gIT09ICdvYmplY3QnID8gaXRlbSA6IHRoaXMuZ2V0VmFsdWUoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChlbGVtZW50OiB1bmtub3duKSA9PiB0aGlzLmdldFZhbHVlKGVsZW1lbnQpID09PSBpdGVtVmFsdWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoISFlbGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c05leHRBcmVhQWZ0ZXJEZWxldGUocmVtb3ZlZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRqdXN0IGluZGV4IGRlcGVuZGluZyBvbiBkZWZhdWx0IGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBkZWxldGFibGVcbiAgICAgICAgaWYgKCEhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcykge1xuICAgICAgICAgICAgcmVtb3ZlZEluZGV4IC09IHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheSA9IFsuLi50aGlzLnNlbGVjdGVkRWxlbVJlZi50b0FycmF5KCldO1xuICAgICAgICAvLyBOZWVkIHRvIGZpbmQgYW4gZWxlbWVudCB0byBmb2N1cyBvblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ID09PSBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISFjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZEluZGV4IC0gMVxuICAgICAgICAgICAgICAgIF0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEVsZW1SZWZBcnJheSA9IFsuLi50aGlzLmRlZmF1bHRFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgICAgICBpZiAoISFkZWZhdWx0RWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0RWxlbVJlZkFycmF5W1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RWxlbVJlZkFycmF5Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREZWxldGVGb2N1c0FyZWEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyd2lzZSBmb2N1cyBlbGVtZW50IGJ5IERPTSByZXBsYWNlbWVudFxuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHMoZWxlbWVudHM6IFtdKTogdW5rbm93biB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRWxlbWVudHMgPSBPYmplY3RIZWxwZXIuZGVlcENvcHkoZWxlbWVudHMpO1xuICAgICAgICBpZiAoISF0aGlzLm1vZGVsICYmICEhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZm9yRWFjaCgoc2VsZWN0ZWQ6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmFsdWVdIG9mIGZpbHRlcmVkRWxlbWVudHMuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmZpbmRFbGVtZW50QnlNb2RlbEl0ZW0oc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0SGVscGVyLmlzRXF1YWwoZWxlbSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyQWRkaW5nQW5JdGVtKCk6IHZvaWQge1xuICAgICAgICAvLyBFbXB0eSBhdXRvY29tcGxldGUgaW5wdXRcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgLy8gUmVtb3ZlIHNlbGVjdGVkIGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbiBsaXN0XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzID0gdGhpcy5maWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc3RpbGwgaGF2ZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIGlmICghdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAvLyBOZWVkIHNldFRpbWVvdXQgdG8gZW5zdXJlIGFsZXJ0IG1lc3NhZ2UgaXMgb24gdGhlIERPTSBhbmQgY2FuIGJlIGZvY3VzYWJsZVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxlcnRNZXNzYWdlOiBIVE1MRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRNZXNzYWdlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigncCcpO1xuICAgICAgICAgICAgICAgIGlmIChhbGVydE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRNZXNzYWdlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlclJlbW92aW5nQW5JdGVtKFxuICAgICAgICByZW1vdmVkSW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBIaWRlIG1lc3NhZ2Ugc2F5aW5nIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLnNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgLy8gTWFudWFsbHkgc2hvdyBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID1cbiAgICAgICAgICAgICAgICBmYWxzZTtcbiAgICAgICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHModGhpcy5lbGVtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIGEgc2VsZWN0ZWQgaXRlbSwgY2hlY2sgd2VyZSB0byBzZXQgZm9jdXMgYmFjayB3aGVuIG5vIG1vcmUgaXRlbXMgdG8gZGVsZXRlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBTaG93IGEgbWVzc2FnZSB0byB1c2VyIGluZGljYXRpbmcgdGhlcmUgaXMgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAvLyBNYW51YWxseSByZXNldCBhbmQgaGlkZSBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChcbiAgICAgICAgZWxlbWVudDogdW5rbm93bixcbiAgICAgICAgaXNEZWxldGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgaWYgKGlzRGVsZXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuZGVsZXRlZCcsXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfVxuICAgICAgICAgICAgKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgKz0gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItYW5ub3VuY2VtZW50LmFkZGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gJyc7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY29udGFpbmVyLWJveFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4+XG4gICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICBbZWxlbWVudHNdPVwiZWxlbWVudHNcIlxuICAgICAgICBbZWxlbWVudHNVcmxdPVwiZWxlbWVudHNVcmxcIlxuICAgICAgICBbZWxlbWVudFZhbHVlXT1cImVsZW1lbnRWYWx1ZVwiXG4gICAgICAgIFtlbGVtZW50TGFiZWxdPVwiZWxlbWVudExhYmVsXCJcbiAgICAgICAgW2VsZW1lbnRTdWdnZXN0aW9uTGFiZWxdPVwiZWxlbWVudFN1Z2dlc3Rpb25MYWJlbFwiXG4gICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJlbGVtZW50VmFsdWVJZGVudGl0eVwiXG4gICAgICAgIFtlbGVtZW50RGlzYWJsZWRdPVwiZWxlbWVudERpc2FibGVkXCJcbiAgICAgICAgW2VsZW1lbnRHcm91cF09XCJlbGVtZW50R3JvdXBcIlxuICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJmYWxzZVwiXG4gICAgICAgIFtzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRdPVwic2VhcmNoVmFsdWVNaW5DaGFyc0NvdW50XCJcbiAgICAgICAgW2N1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JdPVwiY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvclwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICh1c2VySW5wdXQpPVwiYWRkSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgWyhtb2RlbCldPVwiYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZVwiXG4gICAgICAgIChlbGVtZW50c0xvYWRlZCk9XCJvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKCRldmVudClcIlxuICAgICAgICBbc2hvd0Vycm9yV2hlbkRpc2FibGVkXT1cInNob3dFcnJvcldoZW5EaXNhYmxlZFwiXG4gICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cImhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICBbaXRlbUhlaWdodEluU3VnZ2VzdGlvbkxpc3RJblB4XT1cIml0ZW1IZWlnaHRJblN1Z2dlc3Rpb25MaXN0SW5QeFwiXG4gICAgICAgIFtjYXNlU2Vuc2l0aXZlU2VhcmNoXT1cImNhc2VTZW5zaXRpdmVTZWFyY2hcIlxuICAgID5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ0hlbHAnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgIGhlbHBUZXh0XG4gICAgICAgICAgICAgICAgICAgID8gaGVscFRleHRcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuc2NyZWVuLXJlYWRlci5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0FsZXJ0TWVzc2FnZUNvbnRhaW5lcicpXCJcbiAgICAgICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgI2FsZXJ0TWVzc2FnZUNvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtcHR5TGlzdE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtYi0wXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlLmVtcHR5LW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdC1jb250YWluZXIgcHQtMlwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhhc0RlZmF1bHREZWxldGVGb2N1c0FyZWEoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBteS0wXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibm9FbGVtZW50c1NlbGVjdGVkTGFiZWwgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAjZGVmYXVsdERlbGV0ZUZvY3VzQXJlYVxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8cFxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnc3JPbmx5QW5ub3VuY2VtZW50cycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBzckFubm91bmNlbWVudHMgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgICAgKm5nSWY9XCIhIW1vZGVsPy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJtYi0wXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMYWJlbCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0xlZ2VuZCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBzbWFsbCBtYi0wXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgPjwvbGVnZW5kPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdCBkLWZsZXggYWxpZ24tY29udGVudC1zdHJldGNoIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBtb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FuQmVEZWxldGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBiZy1zZWNvbmRhcnkgbWUtMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RlZmF1bHRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LXNlbGVjdGVkLWVsZW1lbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkJlRGVsZXRlZChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYmFkZ2Ugcm91bmRlZC1waWxsIG1lLTEgbWItMSBweS0yIHB4LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShlbGVtZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGVjdGVkRWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRCYWRnZUxhYmVsKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWlCeEQsTUFBTSxPQUFPLHFDQUNULFNBQVEsMEJBQTBCO0lBNENsQyxZQUNJLE1BQWMsRUFDTixpQkFBdUM7UUFFL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRk4sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQXpCbkQ7OztXQUdHO1FBRUgsc0JBQWlCLEdBQVEsT0FBTyxDQUFDO1FBR2pDLDRCQUF1QixHQUNuQiwyREFBMkQsQ0FBQztRQUdoRSw0QkFBdUIsR0FDbkIsc0VBQXNFLENBQUM7UUFHM0UseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdC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QUFDLHFDQUFxQyxDQUM5QztnQkFDRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osbWtCQ2hDTCw4eUtBeUlBOzsyRkR2R2EscUNBQXFDO2tCQWRqRCxTQUFTOytCQUNJLGdDQUFnQyxhQUcvQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUNuQixHQUFHLEVBQUUsc0NBQXNDLENBQzlDOzRCQUNELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhHQU9ELFFBQVE7c0JBRFAsV0FBVzt1QkFBQyxXQUFXO2dCQUl4QixxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUlsQyxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUlsQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUkvQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUk5QixzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsd0JBQXdCO2dCQVFuQyxpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkF3QkYsb0JBQW9CO3NCQUR2QixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tYXV0b2NvbXBsZXRlL2ZvZWhuLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZihcbiAgICAgICAgICAgICAgICAoKSA9PiBGb2Vobk11bHRpc2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5BdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5uYW1lJylcbiAgICBob3N0TmFtZTogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlQ29tcG9uZW50JylcbiAgICBhdXRvY29tcGxldGVDb21wb25lbnQ6IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnYWxlcnRNZXNzYWdlQ29udGFpbmVyJylcbiAgICBhbGVydE1lc3NhZ2VDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdzZWxlY3RlZEVsZW1SZWYnKVxuICAgIHNlbGVjdGVkRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZHJlbignZGVmYXVsdEVsZW1SZWYnKVxuICAgIGRlZmF1bHRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0RGVsZXRlRm9jdXNBcmVhJylcbiAgICBkZWZhdWx0RGVsZXRlRm9jdXNBcmVhOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uXG4gICAgICogRGVmYXVsdHMgdG8gYGxhYmVsYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudEJhZGdlTGFiZWw6IGFueSA9ICdsYWJlbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC1pdGVtcy1saXN0LWxlZ2VuZCc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5vRWxlbWVudHNTZWxlY3RlZExhYmVsID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LWZvY3VzLm5vLWVsZW1lbnQtdG8tZGVsZXRlJztcblxuICAgIGF1dG9jb21wbGV0ZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBzaG93RW1wdHlMaXN0TWVzc2FnZSA9IGZhbHNlO1xuICAgIHNyQW5ub3VuY2VtZW50cyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbWVudFZhbHVlc186IHVua25vd25bXTtcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAyMDAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihuZ1pvbmUpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0RWxlbWVudFZhbHVlcygpOiB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlc187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZXMoaXRlbXM6IHVua25vd25bXSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXyA9IFsuLi5pdGVtc107XG4gICAgICAgIGlmICgoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSAmJiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmF1bHRFbGVtZW50VmFsdWUoaXRlbTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMgPSBbaXRlbV07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIFRoZSBob3N0IGlzIG5vdCByZWxhdGVkIHRvIGZvZWhuIGVycm9yIG1hbmFnZW1lbnQgYnV0IGZvZWhuLWF1dG9jb21wbGV0ZSBpcy5cbiAgICAgICAgdGhpcy5ob3N0SWQgPSB0aGlzLmJ1aWxkSWQoJ1BhcmVudENvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLmhvc3ROYW1lID0gdGhpcy5ob3N0SWQ7XG4gICAgICAgIHRoaXMuZXhjbHVkZUZyb21FcnJvclN1bW1hcnkgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCBPYmplY3RIZWxwZXIuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0obnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNFcnJvcnNUb0Rpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50Lmhhc0Vycm9yc1RvRGlzcGxheSgpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEl0ZW0oaXRlbTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RlbC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUl0ZW0oaXRlbTogdW5rbm93biwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJSZW1vdmluZ0FuSXRlbShpbmRleCk7XG4gICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIHRydWUpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldExhYmVsKGVsZW0pO1xuICAgIH1cblxuICAgIGNhbkJlRGVsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgKCF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMuaW5jbHVkZXModGhpcy5tb2RlbFtpbmRleF0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoZWxlbWVudHM6IFtdKTogdm9pZCB7XG4gICAgICAgIC8vIE5lZWQgdG8gd2FpdCBmb3IgY2hpbGRWaWV3IHRvIGJlIGxvYWRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cy5sZW5ndGhcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQ6IHVua25vd24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC5kZWxldGUnLFxuICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfVxuICAgICAgICApfWA7XG4gICAgfVxuXG4gICAgaGFzRGVmYXVsdERlbGV0ZUZvY3VzQXJlYSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmRpc2FibGVkICYmXG4gICAgICAgICAgICAhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAhdGhpcy5tb2RlbD8ubGVuZ3RoXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VMYWJlbChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudEJhZGdlTGFiZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMYWJlbChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50QmFkZ2VMYWJlbChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRFbGVtZW50QnlNb2RlbEl0ZW0oaXRlbTogdW5rbm93bik6IHVua25vd24ge1xuICAgICAgICBpZiAoISF0aGlzLmVsZW1lbnRzICYmICEhdGhpcy5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZTogdW5rbm93biA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0gIT09ICdvYmplY3QnID8gaXRlbSA6IHRoaXMuZ2V0VmFsdWUoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChlbGVtZW50OiB1bmtub3duKSA9PiB0aGlzLmdldFZhbHVlKGVsZW1lbnQpID09PSBpdGVtVmFsdWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoISFlbGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c05leHRBcmVhQWZ0ZXJEZWxldGUocmVtb3ZlZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRqdXN0IGluZGV4IGRlcGVuZGluZyBvbiBkZWZhdWx0IGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBkZWxldGFibGVcbiAgICAgICAgaWYgKCEhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcykge1xuICAgICAgICAgICAgcmVtb3ZlZEluZGV4IC09IHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheSA9IFsuLi50aGlzLnNlbGVjdGVkRWxlbVJlZi50b0FycmF5KCldO1xuICAgICAgICAvLyBOZWVkIHRvIGZpbmQgYW4gZWxlbWVudCB0byBmb2N1cyBvblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ID09PSBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISFjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZEluZGV4IC0gMVxuICAgICAgICAgICAgICAgIF0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEVsZW1SZWZBcnJheSA9IFsuLi50aGlzLmRlZmF1bHRFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgICAgICBpZiAoISFkZWZhdWx0RWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0RWxlbVJlZkFycmF5W1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RWxlbVJlZkFycmF5Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHREZWxldGVGb2N1c0FyZWEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyd2lzZSBmb2N1cyBlbGVtZW50IGJ5IERPTSByZXBsYWNlbWVudFxuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHMoZWxlbWVudHM6IFtdKTogdW5rbm93biB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRWxlbWVudHMgPSBPYmplY3RIZWxwZXIuZGVlcENvcHkoZWxlbWVudHMpO1xuICAgICAgICBpZiAoISF0aGlzLm1vZGVsICYmICEhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZm9yRWFjaCgoc2VsZWN0ZWQ6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmFsdWVdIG9mIGZpbHRlcmVkRWxlbWVudHMuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmZpbmRFbGVtZW50QnlNb2RlbEl0ZW0oc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0SGVscGVyLmlzRXF1YWwoZWxlbSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyQWRkaW5nQW5JdGVtKCk6IHZvaWQge1xuICAgICAgICAvLyBFbXB0eSBhdXRvY29tcGxldGUgaW5wdXRcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgLy8gUmVtb3ZlIHNlbGVjdGVkIGl0ZW0gZnJvbSBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbiBsaXN0XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzID0gdGhpcy5maWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc3RpbGwgaGF2ZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIGlmICghdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAvLyBOZWVkIHNldFRpbWVvdXQgdG8gZW5zdXJlIGFsZXJ0IG1lc3NhZ2UgaXMgb24gdGhlIERPTSBhbmQgY2FuIGJlIGZvY3VzYWJsZVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxlcnRNZXNzYWdlOiBIVE1MRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRNZXNzYWdlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigncCcpO1xuICAgICAgICAgICAgICAgIGlmIChhbGVydE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRNZXNzYWdlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlclJlbW92aW5nQW5JdGVtKFxuICAgICAgICByZW1vdmVkSW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBIaWRlIG1lc3NhZ2Ugc2F5aW5nIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLnNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgLy8gTWFudWFsbHkgc2hvdyBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID1cbiAgICAgICAgICAgICAgICBmYWxzZTtcbiAgICAgICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPVxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHModGhpcy5lbGVtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIGEgc2VsZWN0ZWQgaXRlbSwgY2hlY2sgd2VyZSB0byBzZXQgZm9jdXMgYmFjayB3aGVuIG5vIG1vcmUgaXRlbXMgdG8gZGVsZXRlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBTaG93IGEgbWVzc2FnZSB0byB1c2VyIGluZGljYXRpbmcgdGhlcmUgaXMgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAvLyBNYW51YWxseSByZXNldCBhbmQgaGlkZSBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChcbiAgICAgICAgZWxlbWVudDogdW5rbm93bixcbiAgICAgICAgaXNEZWxldGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgaWYgKGlzRGVsZXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuZGVsZXRlZCcsXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfVxuICAgICAgICAgICAgKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgKz0gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItYW5ub3VuY2VtZW50LmFkZGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gJyc7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY29udGFpbmVyLWJveFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4+XG4gICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICBbZWxlbWVudHNdPVwiZWxlbWVudHNcIlxuICAgICAgICBbZWxlbWVudHNVcmxdPVwiZWxlbWVudHNVcmxcIlxuICAgICAgICBbZWxlbWVudFZhbHVlXT1cImVsZW1lbnRWYWx1ZVwiXG4gICAgICAgIFtlbGVtZW50TGFiZWxdPVwiZWxlbWVudExhYmVsXCJcbiAgICAgICAgW2VsZW1lbnRTdWdnZXN0aW9uTGFiZWxdPVwiZWxlbWVudFN1Z2dlc3Rpb25MYWJlbFwiXG4gICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJlbGVtZW50VmFsdWVJZGVudGl0eVwiXG4gICAgICAgIFtlbGVtZW50RGlzYWJsZWRdPVwiZWxlbWVudERpc2FibGVkXCJcbiAgICAgICAgW2VsZW1lbnRHcm91cF09XCJlbGVtZW50R3JvdXBcIlxuICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJmYWxzZVwiXG4gICAgICAgIFtzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRdPVwic2VhcmNoVmFsdWVNaW5DaGFyc0NvdW50XCJcbiAgICAgICAgW2N1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JdPVwiY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvclwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICh1c2VySW5wdXQpPVwiYWRkSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgWyhtb2RlbCldPVwiYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZVwiXG4gICAgICAgIChlbGVtZW50c0xvYWRlZCk9XCJvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKCRldmVudClcIlxuICAgICAgICBbc2hvd0Vycm9yV2hlbkRpc2FibGVkXT1cInNob3dFcnJvcldoZW5EaXNhYmxlZFwiXG4gICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cImhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICBbaXRlbUhlaWdodEluU3VnZ2VzdGlvbkxpc3RJblB4XT1cIml0ZW1IZWlnaHRJblN1Z2dlc3Rpb25MaXN0SW5QeFwiXG4gICAgICAgIFtjYXNlU2Vuc2l0aXZlU2VhcmNoXT1cImNhc2VTZW5zaXRpdmVTZWFyY2hcIlxuICAgID5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ0hlbHAnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgIGhlbHBUZXh0XG4gICAgICAgICAgICAgICAgICAgID8gaGVscFRleHRcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuc2NyZWVuLXJlYWRlci5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0FsZXJ0TWVzc2FnZUNvbnRhaW5lcicpXCJcbiAgICAgICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgI2FsZXJ0TWVzc2FnZUNvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtcHR5TGlzdE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtYi0wXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlLmVtcHR5LW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdC1jb250YWluZXIgcHQtMlwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhhc0RlZmF1bHREZWxldGVGb2N1c0FyZWEoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBteS0wXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibm9FbGVtZW50c1NlbGVjdGVkTGFiZWwgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAjZGVmYXVsdERlbGV0ZUZvY3VzQXJlYVxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8cFxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnc3JPbmx5QW5ub3VuY2VtZW50cycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBzckFubm91bmNlbWVudHMgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgICAgKm5nSWY9XCIhIW1vZGVsPy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJtYi0wXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMYWJlbCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0xlZ2VuZCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBzbWFsbCBtYi0wXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgPjwvbGVnZW5kPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdCBkLWZsZXggYWxpZ24tY29udGVudC1zdHJldGNoIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBtb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FuQmVEZWxldGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBiZy1zZWNvbmRhcnkgbWUtMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RlZmF1bHRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LXNlbGVjdGVkLWVsZW1lbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkJlRGVsZXRlZChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBiYWRnZSByb3VuZGVkLXBpbGwgbWUtMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMZWdlbmQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGVsZW1lbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjc2VsZWN0ZWRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -13,7 +13,7 @@ export class IntervalHelper {
|
|
|
13
13
|
const calculatedTimeout = nextAt - Date.now();
|
|
14
14
|
// Verify browser tab inactivity
|
|
15
15
|
if (calculatedTimeout < 0) {
|
|
16
|
-
if (
|
|
16
|
+
if (errorCallBack) {
|
|
17
17
|
clear();
|
|
18
18
|
return errorCallBack();
|
|
19
19
|
}
|
|
@@ -26,4 +26,4 @@ export class IntervalHelper {
|
|
|
26
26
|
return { clear };
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2ludGVydmFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sY0FBYztJQUN2QixNQUFNLENBQUMsZ0JBQWdCO0lBQ25CLDJCQUEyQjtJQUMzQixRQUFrQixFQUNsQixzQkFBOEI7SUFDOUIsMkJBQTJCO0lBQzNCLGFBQXdCO1FBRXhCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsc0JBQXNCLENBQUM7UUFFakQsTUFBTSxLQUFLLEdBQUcsR0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEdBQVMsRUFBRTtZQUM1QixNQUFNLElBQUksc0JBQXNCLENBQUM7WUFDakMsa0RBQWtEO1lBQ2xELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxnQ0FBZ0M7WUFDaEMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDaEIsS0FBSyxFQUFFLENBQUM7b0JBQ1IsT0FBTyxhQUFhLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLEdBQUcsVUFBVSxDQUNoQixZQUFZLEVBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUNuQyxDQUFDO1lBQ0YsUUFBUSxFQUFFLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixrREFBa0Q7UUFDbEQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXhELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW50ZXJ2YWxIZWxwZXIge1xuICAgIHN0YXRpYyBhY2N1cmF0ZUludGVydmFsKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY2FsbEJhY2s6IEZ1bmN0aW9uLFxuICAgICAgICBpbnRlcnZhbEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBlcnJvckNhbGxCYWNrPzogRnVuY3Rpb25cbiAgICApOiB1bmtub3duIHtcbiAgICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuICAgICAgICBsZXQgbmV4dEF0ID0gRGF0ZS5ub3coKSArIGludGVydmFsSW5NaWxsaXNlY29uZHM7XG5cbiAgICAgICAgY29uc3QgY2xlYXIgPSAoKTogdm9pZCA9PiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIGNvbnN0IHRpbWVySGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIG5leHRBdCArPSBpbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgLy8gQXZvaWQgdGltZSBkcmlmdCBieSBkb2luZyBcIm5leHRBdCAtIERhdGUubm93KClcIlxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZFRpbWVvdXQgPSBuZXh0QXQgLSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgLy8gVmVyaWZ5IGJyb3dzZXIgdGFiIGluYWN0aXZpdHlcbiAgICAgICAgICAgIGlmIChjYWxjdWxhdGVkVGltZW91dCA8IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JDYWxsQmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JDYWxsQmFjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgIHRpbWVySGFuZGxlcixcbiAgICAgICAgICAgICAgICBNYXRoLm1heCgwLCBuZXh0QXQgLSBEYXRlLm5vdygpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhbGxCYWNrKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQXZvaWQgdGltZSBkcmlmdCBieSBkb2luZyBcIm5leHRBdCAtIERhdGUubm93KClcIlxuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCh0aW1lckhhbmRsZXIsIG5leHRBdCAtIERhdGUubm93KCkpO1xuXG4gICAgICAgIHJldHVybiB7IGNsZWFyIH07XG4gICAgfVxufVxuIl19
|
|
@@ -184,11 +184,11 @@ export class FoehnPageComponent {
|
|
|
184
184
|
this.pageTitle = title;
|
|
185
185
|
}
|
|
186
186
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPageComponent, deps: [{ token: i1.Title }, { token: i2.FoehnPageService }, { token: i3.SupportAlertService }, { token: i4.FoehnNavigationService }, { token: i5.ApplicationInfoService }, { token: i6.GesdemEventService }, { token: i7.BreadcrumbEventService }, { token: i8.Router }, { token: i9.SessionInfo }, { token: i10.FoehnPageModalService }, { token: i11.SdkDictionaryService }, { token: i12.SdkStatisticsService }, { token: i13.DemandeExpirationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnPageComponent, selector: "foehn-page", inputs: { appTitle: "appTitle", footerLinks: "footerLinks", supportAlertEnabled: "supportAlertEnabled", draftsEnabled: "draftsEnabled", supportAlertUrl: "supportAlertUrl", draftsUrl: "draftsUrl", etapeId: "etapeId", userConnectedAsDisplayed: "userConnectedAsDisplayed", statusProgressBarHidden: "statusProgressBarHidden", confirmLeavingAlert: "confirmLeavingAlert", showDefaultContactFooterLink: "showDefaultContactFooterLink", showDefaultGuideFooterLink: "showDefaultGuideFooterLink", showDefaultTermOfUseLink: "showDefaultTermOfUseLink", showDefaultSecurityBestPracticeLink: "showDefaultSecurityBestPracticeLink", routerLinkAppTitle: "routerLinkAppTitle" }, usesOnChanges: true, ngImport: i0, template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\"> </div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-end btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n<foehn-transmit-waiting-modal></foehn-transmit-waiting-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i15.DraftsContainerComponent, selector: "sdk-drafts-container", inputs: ["etapeId", "draftsUrl"] }, { kind: "component", type: i16.FoehnBreadcrumbComponent, selector: "foehn-breadcrumb", inputs: ["breadcrumbItems", "currentNav", "confirmLeavingAlert"] }, { kind: "component", type: i17.FoehnGrowlComponent, selector: "foehn-growl" }, { kind: "component", type: i18.FoehnHeaderComponent, selector: "foehn-header", inputs: ["title", "showSecuredAreaLoginButton", "routerLinkAppTitle", "userInfo"] }, { kind: "component", type: i19.FoehnFooterComponent, selector: "foehn-footer", inputs: ["links", "showDefaultContactLink", "showDefaultGuideLink", "showDefaultTermOfUseLink", "showDefaultSecurityBestPracticeLink"] }, { kind: "component", type: i20.FoehnUserConnectedAsComponent, selector: "foehn-user-connected-as" }, { kind: "component", type: i21.SupportAlertContainerComponent, selector: "sdk-support-alert-container", inputs: ["etapeId", "supportAlertUrl"] }, { kind: "component", type: i22.FoehnConfirmModalComponent, selector: "foehn-confirm-modal" }, { kind: "component", type: i23.FoehnIconExternalLinkAltComponent, selector: "foehn-icon-external-link-alt" }, { kind: "component", type: i24.FoehnStatusProgressBarComponent, selector: "foehn-status-progress-bar", inputs: ["hidden"] }, { kind: "component", type: i25.FoehnPageModalComponent, selector: "foehn-page-modal" }, { kind: "component", type: i26.FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer" }, { kind: "component", type: i27.FoehnTransmitWaitingModalComponent, selector: "foehn-transmit-waiting-modal" }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i28.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
187
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnPageComponent, selector: "foehn-page", inputs: { appTitle: "appTitle", footerLinks: "footerLinks", supportAlertEnabled: "supportAlertEnabled", draftsEnabled: "draftsEnabled", supportAlertUrl: "supportAlertUrl", draftsUrl: "draftsUrl", etapeId: "etapeId", userConnectedAsDisplayed: "userConnectedAsDisplayed", statusProgressBarHidden: "statusProgressBarHidden", confirmLeavingAlert: "confirmLeavingAlert", showDefaultContactFooterLink: "showDefaultContactFooterLink", showDefaultGuideFooterLink: "showDefaultGuideFooterLink", showDefaultTermOfUseLink: "showDefaultTermOfUseLink", showDefaultSecurityBestPracticeLink: "showDefaultSecurityBestPracticeLink", routerLinkAppTitle: "routerLinkAppTitle" }, usesOnChanges: true, ngImport: i0, template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\"> </div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Edge\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Safari\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Firefox\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Chrome\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n type=\"button\"\n class=\"float-end btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n<foehn-transmit-waiting-modal></foehn-transmit-waiting-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i15.DraftsContainerComponent, selector: "sdk-drafts-container", inputs: ["etapeId", "draftsUrl"] }, { kind: "component", type: i16.FoehnBreadcrumbComponent, selector: "foehn-breadcrumb", inputs: ["breadcrumbItems", "currentNav", "confirmLeavingAlert"] }, { kind: "component", type: i17.FoehnGrowlComponent, selector: "foehn-growl" }, { kind: "component", type: i18.FoehnHeaderComponent, selector: "foehn-header", inputs: ["title", "showSecuredAreaLoginButton", "routerLinkAppTitle", "userInfo"] }, { kind: "component", type: i19.FoehnFooterComponent, selector: "foehn-footer", inputs: ["links", "showDefaultContactLink", "showDefaultGuideLink", "showDefaultTermOfUseLink", "showDefaultSecurityBestPracticeLink"] }, { kind: "component", type: i20.FoehnUserConnectedAsComponent, selector: "foehn-user-connected-as" }, { kind: "component", type: i21.SupportAlertContainerComponent, selector: "sdk-support-alert-container", inputs: ["etapeId", "supportAlertUrl"] }, { kind: "component", type: i22.FoehnConfirmModalComponent, selector: "foehn-confirm-modal" }, { kind: "component", type: i23.FoehnIconExternalLinkAltComponent, selector: "foehn-icon-external-link-alt" }, { kind: "component", type: i24.FoehnStatusProgressBarComponent, selector: "foehn-status-progress-bar", inputs: ["hidden"] }, { kind: "component", type: i25.FoehnPageModalComponent, selector: "foehn-page-modal" }, { kind: "component", type: i26.FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer" }, { kind: "component", type: i27.FoehnTransmitWaitingModalComponent, selector: "foehn-transmit-waiting-modal" }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i28.SdkDictionaryPipe, name: "fromDictionary" }] }); }
|
|
188
188
|
}
|
|
189
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnPageComponent, decorators: [{
|
|
190
190
|
type: Component,
|
|
191
|
-
args: [{ selector: 'foehn-page', template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\"> </div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-end btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n<foehn-transmit-waiting-modal></foehn-transmit-waiting-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"] }]
|
|
191
|
+
args: [{ selector: 'foehn-page', template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\"> </div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Edge\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Safari\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Firefox\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n Chrome\n <span class=\"visually-hidden\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n type=\"button\"\n class=\"float-end btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n<foehn-transmit-waiting-modal></foehn-transmit-waiting-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"] }]
|
|
192
192
|
}], ctorParameters: () => [{ type: i1.Title }, { type: i2.FoehnPageService }, { type: i3.SupportAlertService }, { type: i4.FoehnNavigationService }, { type: i5.ApplicationInfoService }, { type: i6.GesdemEventService }, { type: i7.BreadcrumbEventService }, { type: i8.Router }, { type: i9.SessionInfo }, { type: i10.FoehnPageModalService }, { type: i11.SdkDictionaryService }, { type: i12.SdkStatisticsService }, { type: i13.DemandeExpirationService }], propDecorators: { appTitle: [{
|
|
193
193
|
type: Input
|
|
194
194
|
}], footerLinks: [{
|
|
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
220
220
|
}], routerLinkAppTitle: [{
|
|
221
221
|
type: Input
|
|
222
222
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tcGFnZS9mb2Vobi1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUl6RCxNQUFNLHFCQUFxQixHQUN2QixrSEFBa0gsQ0FBQztBQUN2SCxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBQ3ZELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFPekQsTUFBTSxPQUFPLGtCQUFrQjtJQXFGM0IsWUFDWSxhQUFvQixFQUNwQixnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxzQkFBOEMsRUFDOUMsa0JBQXNDLEVBQ3RDLGlCQUF5QyxFQUN6QyxNQUFjLEVBQ2QsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxpQkFBdUMsRUFDdkMsd0JBQWtEO1FBWmxELGtCQUFhLEdBQWIsYUFBYSxDQUFPO1FBQ3BCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FB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QUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7OEdBM1FRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDJ0QkN2Qy9CLCtpTUFvS0E7OzJGRDdIYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksWUFBWTsrZEFNdEIsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQVdOLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFPTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBT04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLG1DQUFtQztzQkFEbEMsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQnJlYWRjcnVtYkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLWJyZWFkY3J1bWIvYnJlYWRjcnVtYi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuQ29uZmlybU1vZGFsQ29udGVudCB9IGZyb20gJy4uL2ZvZWhuLWNvbmZpcm0tbW9kYWwvZm9laG4tY29uZmlybS1tb2RhbC1jb250ZW50JztcbmltcG9ydCB7IEZvb3RlckxpbmsgfSBmcm9tICcuLi9mb2Vobi1mb290ZXIvZm9vdGVyLWxpbmsudHlwZSc7XG5pbXBvcnQgeyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tbmF2aWdhdGlvbi9mb2Vobi1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5QYWdlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tcGFnZS9mb2Vobi1wYWdlLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEV0YXBlSW5mbyB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka1N0YXRpc3RpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN0YXRpc3RpY3Mvc2RrLXN0YXRpc3RpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwb3J0QWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN1cHBvcnQtYWxlcnQvc3VwcG9ydC1hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IHN1cHBvcnRlZEJyb3dzZXJzIH0gZnJvbSAnLi4vc3VwcG9ydGVkLWJyb3dzZXInO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4vZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IERlbWFuZGVFeHBpcmF0aW9uU2VydmljZSB9IGZyb20gJy4vZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2RlbWFuZGUtZXhwaXJhdGlvbi5zZXJ2aWNlJztcblxuY29uc3QgTEVBVklOR19BTEVSVF9DT05URU5UID1cbiAgICAnQ2UgY2hhbmdlbWVudCBkZSBwYWdlIGVudHJhaW5lIHVuZSBwZXJ0ZSBkZXMgZG9ubsOpZXMgbm9uIHNhdXZlZ2FyZMOpZXMuPGJyLz5Tb3VoYWl0ZXotdm91cyBxdWFuZCBtw6ptZSBjb250aW51ZXIgPyc7XG5jb25zdCBMRUFWSU5HX0FMRVJUX09LID0gJ1BvdXJzdWl2cmUgc2FucyBzYXV2ZWdhcmRlcic7XG5jb25zdCBMRUFWSU5HX0FMRVJUX0NBTkNFTCA9ICdSZXRvdXJuZXIgw6AgbGEgcHJlc3RhdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLXBhZ2UuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgYXBwVGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgZm9vdGVyTGlua3M6IEZvb3RlckxpbmtbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydEFsZXJ0RW5hYmxlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGRyYWZ0c0VuYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydEFsZXJ0VXJsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRyYWZ0c1VybDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBldGFwZUlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHVzZXJDb25uZWN0ZWRBc0Rpc3BsYXllZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0YXR1c1Byb2dyZXNzQmFySGlkZGVuOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBjb25maXJtTGVhdmluZ0FsZXJ0OiBGb2VobkNvbmZpcm1Nb2RhbENvbnRlbnQgPSB7XG4gICAgICAgIGh0bWxDb250ZW50OiBMRUFWSU5HX0FMRVJUX0NPTlRFTlQsXG4gICAgICAgIG9rQnV0dG9uTGFiZWw6IExFQVZJTkdfQUxFUlRfT0ssXG4gICAgICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiBMRUFWSU5HX0FMRVJUX0NBTkNFTFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gJ2ZhbHNlJywgaGlkZSB0aGUgZGVmYXVsdCBDb250YWN0IGxpbmsgaW4gdGhlIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dEZWZhdWx0Q29udGFjdEZvb3RlckxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgR3VpZGUgbGluayBpbiB0aGUgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRHdWlkZUZvb3RlckxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgVGVybXMgb2YgdXNlIGxpbmsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93RGVmYXVsdFRlcm1PZlVzZUxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgU2VjdXJpdHkgQmVzdCBQcmFjdGljZSBsaW5rLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRTZWN1cml0eUJlc3RQcmFjdGljZUxpbmsgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICByb3V0ZXJMaW5rQXBwVGl0bGU6IHN0cmluZztcblxuICAgIHBhZ2VUaXRsZTogc3RyaW5nO1xuXG4gICAgaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBkaXNwbGF5VXNlckNhdGVnb3J5OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b246IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBsb2dpbk1lc3NhZ2VzSGlkZGVuID0gZmFsc2U7XG5cbiAgICBpc0Jyb3dzZXJTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cbiAgICBpc0FwcGxlUGxhdGZvcm06IGJvb2xlYW47XG5cbiAgICBicm93c2VyTGlua1RpdGxlUHJlZml4ID1cbiAgICAgICAgJ0xpZW4gcG91ciBsZSB0w6lsw6ljaGFyZ2VtZW50IGR1IG5hdmlnYXRldXIgaW50ZXJuZXQnO1xuXG4gICAgYnJvd3Nlck5vdFN1cHBvcnRlZEJ5cGFzcyA9IGZhbHNlO1xuXG4gICAgZGlzcGxheURlbWFuZGVFeHBpcmF0aW9uVGltZXI6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGJsb2NrZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF90aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3VwcG9ydEFsZXJ0U2VydmljZTogU3VwcG9ydEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmb2Vobk5hdmlnYXRpb25TZXJ2aWNlOiBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtRXZlbnRTZXJ2aWNlOiBHZXNkZW1FdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJFdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZU1vZGFsU2VydmljZTogRm9laG5QYWdlTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNka0RpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdGF0aXN0aWNzU2VydmljZTogU2RrU3RhdGlzdGljc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlOiBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5oYXNCbG9ja2luZ1N1cHBvcnRBbGVydCA9XG4gICAgICAgICAgICBzdXBwb3J0QWxlcnRTZXJ2aWNlLmdldEhhc0F0TGVhc3RPbmVCbG9ja2luZ0FsZXJ0KCk7XG5cbiAgICAgICAgdGhpcy5ibG9ja2VkU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmZvZWhuUGFnZVNlcnZpY2UuZm9laG5QYWdlT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgLy8gRW5zdXJlcyB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsdWUgaW4gdGhlIG9ic2VydmFibGUuXG4gICAgICAgICAgICBtZXJnZShvZihmYWxzZSksIHRoaXMuaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQpXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIF0pLnN1YnNjcmliZSgoW3RpdGxlLCBibG9ja2VkXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGJsb2NrZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgnUHJlc3RhdGlvbiBpbmRpc3BvbmlibGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSh0aXRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmlzQnJvd3NlclN1cHBvcnRlZCA9IHN1cHBvcnRlZEJyb3dzZXJzLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICAgIHRoaXMuaXNBcHBsZVBsYXRmb3JtID0gLyhNYWN8aVBob25lfGlQb2R8aVBhZCkvaS50ZXN0KFxuICAgICAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudFxuICAgICAgICApO1xuXG4gICAgICAgIHN0YXRpc3RpY3NTZXJ2aWNlLnRyYWNrKCk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5RGVtYW5kZUV4cGlyYXRpb25UaW1lciA9XG4gICAgICAgICAgICB0aGlzLmRlbWFuZGVFeHBpcmF0aW9uU2VydmljZS5zaG91bGREaXNwbGF5RXhwaXJhdGlvblRpbWVyTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSAnTmF2aWdhdGV1ciBub24gc3VwcG9ydMOpJztcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5zZXRQYWdlVGl0bGUocGFnZVRpdGxlKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0Q3VycmVudEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBudWxsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwYWdlVGl0bGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNJbml0aWFsU3RlcCA9IHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5jdXJyZW50RXRhcGVJbmZvLnBpcGUoXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRFdGFwZUluZm86IEV0YXBlSW5mbykgPT5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV0YXBlSW5mbyAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyRXRhcGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyUHJlc3RhdGlvblxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGNvbnN0IG5hdmlnYXRpb25VcGRhdGU6IE9ic2VydmFibGU8YW55PiA9IG9mICh0cnVlKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uVXBkYXRlOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlcyB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsdWUgaW4gdGhlIG9ic2VydmFibGUuXG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25BbmRJbml0ID0gbWVyZ2Uob2YodHJ1ZSksIG5hdmlnYXRpb25VcGRhdGUpO1xuICAgICAgICBjb25zdCBmb3JtVHJhbnNtaXR0ZWQgPSBtZXJnZShcbiAgICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZS5mb3JtVHJhbnNtaXR0ZWRPYnNlcnZhYmxlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlVc2VyQ2F0ZWdvcnkgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN0ZXAsXG4gICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaGFzQmVlbkluaXRpYWxpemVkKCksXG4gICAgICAgICAgICBmb3JtVHJhbnNtaXR0ZWQsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uQW5kSW5pdFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLCAvLyB3aXRob3V0IGRlYm91bmNlVGltZSwgdGhlIG91dGNvbWUgaXMgbGVzcyBlZmZlY3RpdmUuLi5cbiAgICAgICAgICAgIG1hcCgoW2luaXRpYWxTdGVwLCBuYXZTZXJ2aWNlSW5pdGlhbGl6ZWQsIGJhY2tlbmRSZXNwb25zZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmF2U2VydmljZUluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RQYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5pc0ZpcnN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0UGFnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaXNMYXN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50Um91dGVEZWZpbmVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRDdXJyZW50Um91dGVJbmRleCgpICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9laG5QYWdlU2VydmljZS5pc1VzZXJDYXRlZ29yeVZpc2libGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0UGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJDb25uZWN0ZWRBc0Rpc3BsYXllZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGVwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmRSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVudFJvdXRlRGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZvcm1Jbml0aWFsaXphdGlvbk9ic2VydmFibGUgPSBtZXJnZShcbiAgICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZS5mb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlKClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93U2VjdXJlZEFyZWFMb2dpbkJ1dHRvbiA9IG9mKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICBmb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm8uZGF0YSxcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuY3VycmVudEV0YXBlSW5mb1xuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksIC8vIHdpdGhvdXQgZGVib3VuY2VUaW1lLCB0aGUgb3V0Y29tZSBpcyBsZXNzIGVmZmVjdGl2ZS4uLlxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Jbml0aWFsaXphdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25JbmZvRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFdGFwZUluZm9cbiAgICAgICAgICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb25uZWN0ZWRDeWJlck9ySWFtID0gISFzZXNzaW9uSW5mb0RhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RQYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaXNMYXN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29ubmVjdGVkQ3liZXJPcklhbSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjdXJyZW50RXRhcGVJbmZvLmRlcGxveWVlQ3liZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIWZvcm1Jbml0aWFsaXphdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBldGFwZUlkQ2hhbmdlID0gY2hhbmdlcy5ldGFwZUlkO1xuICAgICAgICBpZiAoZXRhcGVJZENoYW5nZSAmJiBldGFwZUlkQ2hhbmdlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb2VoblBhZ2VTZXJ2aWNlLnNldEN1cnJlbnRFdGFwZUlkKGV0YXBlSWRDaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcFRpdGxlQ2hhbmdlID0gY2hhbmdlcy5hcHBUaXRsZTtcbiAgICAgICAgaWYgKGFwcFRpdGxlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl90aXRsZVNlcnZpY2Uuc2V0VGl0bGUoYXBwVGl0bGVDaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ibG9ja2VkU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZ1bGxMb2dpblVybCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2VoblBhZ2VNb2RhbFNlcnZpY2UuYnVpbGRTZWxmUmVkaXJlY3Rpb25UaHJvdWdoQ3liZXJMb2dpbigpO1xuICAgIH1cblxuICAgIGdldEZ1bGxMb2dpbk1lc3NhZ2UoXG4gICAgICAgIGRlY2lzaW9uRWxlY3Ryb25pcXVlQXZhaWxhYmxlOiBib29sZWFuXG4gICAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKGRlY2lzaW9uRWxlY3Ryb25pcXVlQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZGtEaWN0aW9uYXJ5U2VydmljZS5nZXRLZXkoJ3VzZS1sb2dpbi50ZXh0JyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZGtEaWN0aW9uYXJ5U2VydmljZS5nZXRLZXkoXG4gICAgICAgICAgICAgICAgICAgICd1c2UtbG9naW4udGV4dC5kZWNpc2lvbi1lbGVjdHJvbmlxdWUtYXZhaWxhYmxlJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoW2xvZ2luTXNnLCBkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZU1zZ10pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtsb2dpbk1zZ308YnIvPjxici8+JHtkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZU1zZ31gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZGtEaWN0aW9uYXJ5U2VydmljZS5nZXRLZXkoJ3VzZS1sb2dpbi50ZXh0Jyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYWdlVGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZSA9IHRpdGxlO1xuICAgIH1cbn1cbiIsIjxmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXJcbiAgICAqbmdJZj1cIihkaXNwbGF5RGVtYW5kZUV4cGlyYXRpb25UaW1lciB8IGFzeW5jKSA9PT0gdHJ1ZVwiXG4gICAgaWQ9XCJmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXJcIlxuPjwvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyPlxuPGZvZWhuLWhlYWRlclxuICAgIGlkPVwiZm9laG5faGVhZGVyXCJcbiAgICBbdGl0bGVdPVwiYXBwVGl0bGVcIlxuICAgIFtyb3V0ZXJMaW5rQXBwVGl0bGVdPVwicm91dGVyTGlua0FwcFRpdGxlXCJcbiAgICBbc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b25dPVwic2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b24gfCBhc3luY1wiXG4+PC9mb2Vobi1oZWFkZXI+XG48Zm9laG4tZ3Jvd2wgaWQ9XCJmb2Vobl9ncm93bFwiPjwvZm9laG4tZ3Jvd2w+XG48ZGl2IGNsYXNzPVwidmQtYmctcGF0dGVybi1ncmF5XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8Zm9laG4tYnJlYWRjcnVtYlxuICAgICAgICAgICAgW2NvbmZpcm1MZWF2aW5nQWxlcnRdPVwiY29uZmlybUxlYXZpbmdBbGVydFwiXG4gICAgICAgID48L2ZvZWhuLWJyZWFkY3J1bWI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxtYWluIGlkPVwibWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2ZC1iZy1wYXR0ZXJuLWdyYXlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPCEtLSBGaXggYW5ub3lpbmcgZmxpY2tlcmluZyB3aGVuIHRoZSBwYWdlIGxvYWRzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgxIG10LTBcIiAqbmdJZj1cIiFwYWdlVGl0bGVcIj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgIDxoMVxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0wXCJcbiAgICAgICAgICAgICAgICBpZD1cInBhZ2UtdGl0bGVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiISFwYWdlVGl0bGVcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicGFnZVRpdGxlXCJcbiAgICAgICAgICAgID48L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxmb2Vobi1zdGF0dXMtcHJvZ3Jlc3MtYmFyXG4gICAgICAgIFtoaWRkZW5dPVwiXG4gICAgICAgICAgICBzdGF0dXNQcm9ncmVzc0JhckhpZGRlbiB8fCAhIShoYXNCbG9ja2luZ1N1cHBvcnRBbGVydCB8IGFzeW5jKVxuICAgICAgICBcIlxuICAgID48L2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXI+XG5cbiAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cIiFpc0Jyb3dzZXJTdXBwb3J0ZWRcIlxuICAgICAgICBjbGFzcz1cImNvbnRhaW5lciBhbGVydCBhbGVydC1kYW5nZXJcIlxuICAgICAgICBpZD1cImJyb3dzZXJfbm90X3N1cHBvcnRlZF9ibG9ja1wiXG4gICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgPlxuICAgICAgICA8cCBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuYnJvd3Nlci1ub3Qtc3VwcG9ydGVkJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmJyb3dzZXItZG93bmxvYWQtaW52aXRhdGlvbicgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0FwcGxlUGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnJvd3NlckxpbmtUaXRsZVByZWZpeCArICcgRWRnZSdcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9mci1jaC93aW5kb3dzL21pY3Jvc29mdC1lZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEVkZ2VcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmV4dGVybmFsLWxpbmsuc3JPbmx5JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD48L2ZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBcHBsZVBsYXRmb3JtXCI+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIFNhZmFyaSdcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9kb3dubG9hZHMvc2FmYXJpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFNhZmFyaVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIEZpcmVmb3gnXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubW96aWxsYS5vcmcvZnIvZmlyZWZveC9cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRmlyZWZveFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmV4dGVybmFsLWxpbmsuc3JPbmx5JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD48L2ZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuYnJvd3Nlci1kb3dubG9hZC1saXN0Lm91JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJicm93c2VyTGlua1RpdGxlUHJlZml4ICsgJyBDaHJvbWUnXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbnRsL2ZyL2Nocm9tZS9cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ2hyb21lXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cImJyb3dzZXJfbm90X3N1cHBvcnRlZF9ieXBhc3NcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsb2F0LWVuZCBidG4gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWJyb3dzZXJOb3RTdXBwb3J0ZWRCeXBhc3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnJvd3Nlck5vdFN1cHBvcnRlZEJ5cGFzcyA9IHRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1wYWdlLmNvbnRpbnVlLXdpdGgtc2FtZS1icm93c2VyJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNkay1zdXBwb3J0LWFsZXJ0LWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cInN1cHBvcnRBbGVydEVuYWJsZWRcIlxuICAgICAgICBbZXRhcGVJZF09XCJldGFwZUlkXCJcbiAgICAgICAgW3N1cHBvcnRBbGVydFVybF09XCJzdXBwb3J0QWxlcnRVcmxcIlxuICAgID48L3Nkay1zdXBwb3J0LWFsZXJ0LWNvbnRhaW5lcj5cbiAgICA8c2RrLWRyYWZ0cy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJkcmFmdHNFbmFibGVkXCJcbiAgICAgICAgW2V0YXBlSWRdPVwiZXRhcGVJZFwiXG4gICAgICAgIFtkcmFmdHNVcmxdPVwiZHJhZnRzVXJsXCJcbiAgICA+PC9zZGstZHJhZnRzLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAhKGhhc0Jsb2NraW5nU3VwcG9ydEFsZXJ0IHwgYXN5bmMpICYmXG4gICAgICAgICAgICAoaXNCcm93c2VyU3VwcG9ydGVkIHx8IGJyb3dzZXJOb3RTdXBwb3J0ZWRCeXBhc3MpXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIG10LTVcIiBpZD1cInBhZ2VfY29udGVudFwiPlxuICAgICAgICAgICAgPGZvZWhuLXVzZXItY29ubmVjdGVkLWFzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5VXNlckNhdGVnb3J5IHwgYXN5bmNcIlxuICAgICAgICAgICAgPjwvZm9laG4tdXNlci1jb25uZWN0ZWQtYXM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG48L21haW4+XG48Zm9laG4tZm9vdGVyXG4gICAgaWQ9XCJmb2Vobl9mb290ZXJcIlxuICAgIFtsaW5rc109XCJmb290ZXJMaW5rc1wiXG4gICAgW3Nob3dEZWZhdWx0Q29udGFjdExpbmtdPVwic2hvd0RlZmF1bHRDb250YWN0Rm9vdGVyTGlua1wiXG4gICAgW3Nob3dEZWZhdWx0R3VpZGVMaW5rXT1cInNob3dEZWZhdWx0R3VpZGVGb290ZXJMaW5rXCJcbiAgICBbc2hvd0RlZmF1bHRUZXJtT2ZVc2VMaW5rXT1cInNob3dEZWZhdWx0VGVybU9mVXNlTGlua1wiXG4gICAgW3Nob3dEZWZhdWx0U2VjdXJpdHlCZXN0UHJhY3RpY2VMaW5rXT1cInNob3dEZWZhdWx0U2VjdXJpdHlCZXN0UHJhY3RpY2VMaW5rXCJcbj48L2ZvZWhuLWZvb3Rlcj5cbjxmb2Vobi1wYWdlLW1vZGFsPjwvZm9laG4tcGFnZS1tb2RhbD5cbjxmb2Vobi1jb25maXJtLW1vZGFsPjwvZm9laG4tY29uZmlybS1tb2RhbD5cbjxmb2Vobi10cmFuc21pdC13YWl0aW5nLW1vZGFsPjwvZm9laG4tdHJhbnNtaXQtd2FpdGluZy1tb2RhbD5cbiJdfQ==
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tcGFnZS9mb2Vobi1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUl6RCxNQUFNLHFCQUFxQixHQUN2QixrSEFBa0gsQ0FBQztBQUN2SCxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBQ3ZELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFPekQsTUFBTSxPQUFPLGtCQUFrQjtJQXFGM0IsWUFDWSxhQUFvQixFQUNwQixnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxzQkFBOEMsRUFDOUMsa0JBQXNDLEVBQ3RDLGlCQUF5QyxFQUN6QyxNQUFjLEVBQ2QsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxpQkFBdUMsRUFDdkMsd0JBQWtEO1FBWmxELGtCQUFhLEdBQWIsYUFBYSxDQUFPO1FBQ3BCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FB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QUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7OEdBM1FRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDJ0QkN2Qy9CLG91TUF5S0E7OzJGRGxJYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksWUFBWTsrZEFNdEIsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQVdOLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFPTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBT04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLG1DQUFtQztzQkFEbEMsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQnJlYWRjcnVtYkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLWJyZWFkY3J1bWIvYnJlYWRjcnVtYi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuQ29uZmlybU1vZGFsQ29udGVudCB9IGZyb20gJy4uL2ZvZWhuLWNvbmZpcm0tbW9kYWwvZm9laG4tY29uZmlybS1tb2RhbC1jb250ZW50JztcbmltcG9ydCB7IEZvb3RlckxpbmsgfSBmcm9tICcuLi9mb2Vobi1mb290ZXIvZm9vdGVyLWxpbmsudHlwZSc7XG5pbXBvcnQgeyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tbmF2aWdhdGlvbi9mb2Vobi1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5QYWdlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tcGFnZS9mb2Vobi1wYWdlLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEV0YXBlSW5mbyB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka1N0YXRpc3RpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN0YXRpc3RpY3Mvc2RrLXN0YXRpc3RpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwb3J0QWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN1cHBvcnQtYWxlcnQvc3VwcG9ydC1hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IHN1cHBvcnRlZEJyb3dzZXJzIH0gZnJvbSAnLi4vc3VwcG9ydGVkLWJyb3dzZXInO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4vZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IERlbWFuZGVFeHBpcmF0aW9uU2VydmljZSB9IGZyb20gJy4vZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2RlbWFuZGUtZXhwaXJhdGlvbi5zZXJ2aWNlJztcblxuY29uc3QgTEVBVklOR19BTEVSVF9DT05URU5UID1cbiAgICAnQ2UgY2hhbmdlbWVudCBkZSBwYWdlIGVudHJhaW5lIHVuZSBwZXJ0ZSBkZXMgZG9ubsOpZXMgbm9uIHNhdXZlZ2FyZMOpZXMuPGJyLz5Tb3VoYWl0ZXotdm91cyBxdWFuZCBtw6ptZSBjb250aW51ZXIgPyc7XG5jb25zdCBMRUFWSU5HX0FMRVJUX09LID0gJ1BvdXJzdWl2cmUgc2FucyBzYXV2ZWdhcmRlcic7XG5jb25zdCBMRUFWSU5HX0FMRVJUX0NBTkNFTCA9ICdSZXRvdXJuZXIgw6AgbGEgcHJlc3RhdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLXBhZ2UuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgYXBwVGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgZm9vdGVyTGlua3M6IEZvb3RlckxpbmtbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydEFsZXJ0RW5hYmxlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGRyYWZ0c0VuYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydEFsZXJ0VXJsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRyYWZ0c1VybDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBldGFwZUlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHVzZXJDb25uZWN0ZWRBc0Rpc3BsYXllZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0YXR1c1Byb2dyZXNzQmFySGlkZGVuOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBjb25maXJtTGVhdmluZ0FsZXJ0OiBGb2VobkNvbmZpcm1Nb2RhbENvbnRlbnQgPSB7XG4gICAgICAgIGh0bWxDb250ZW50OiBMRUFWSU5HX0FMRVJUX0NPTlRFTlQsXG4gICAgICAgIG9rQnV0dG9uTGFiZWw6IExFQVZJTkdfQUxFUlRfT0ssXG4gICAgICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiBMRUFWSU5HX0FMRVJUX0NBTkNFTFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gJ2ZhbHNlJywgaGlkZSB0aGUgZGVmYXVsdCBDb250YWN0IGxpbmsgaW4gdGhlIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dEZWZhdWx0Q29udGFjdEZvb3RlckxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgR3VpZGUgbGluayBpbiB0aGUgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRHdWlkZUZvb3RlckxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgVGVybXMgb2YgdXNlIGxpbmsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93RGVmYXVsdFRlcm1PZlVzZUxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgU2VjdXJpdHkgQmVzdCBQcmFjdGljZSBsaW5rLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRTZWN1cml0eUJlc3RQcmFjdGljZUxpbmsgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICByb3V0ZXJMaW5rQXBwVGl0bGU6IHN0cmluZztcblxuICAgIHBhZ2VUaXRsZTogc3RyaW5nO1xuXG4gICAgaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBkaXNwbGF5VXNlckNhdGVnb3J5OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b246IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBsb2dpbk1lc3NhZ2VzSGlkZGVuID0gZmFsc2U7XG5cbiAgICBpc0Jyb3dzZXJTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cbiAgICBpc0FwcGxlUGxhdGZvcm06IGJvb2xlYW47XG5cbiAgICBicm93c2VyTGlua1RpdGxlUHJlZml4ID1cbiAgICAgICAgJ0xpZW4gcG91ciBsZSB0w6lsw6ljaGFyZ2VtZW50IGR1IG5hdmlnYXRldXIgaW50ZXJuZXQnO1xuXG4gICAgYnJvd3Nlck5vdFN1cHBvcnRlZEJ5cGFzcyA9IGZhbHNlO1xuXG4gICAgZGlzcGxheURlbWFuZGVFeHBpcmF0aW9uVGltZXI6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGJsb2NrZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF90aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3VwcG9ydEFsZXJ0U2VydmljZTogU3VwcG9ydEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmb2Vobk5hdmlnYXRpb25TZXJ2aWNlOiBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtRXZlbnRTZXJ2aWNlOiBHZXNkZW1FdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJFdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZU1vZGFsU2VydmljZTogRm9laG5QYWdlTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNka0RpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdGF0aXN0aWNzU2VydmljZTogU2RrU3RhdGlzdGljc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlOiBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5oYXNCbG9ja2luZ1N1cHBvcnRBbGVydCA9XG4gICAgICAgICAgICBzdXBwb3J0QWxlcnRTZXJ2aWNlLmdldEhhc0F0TGVhc3RPbmVCbG9ja2luZ0FsZXJ0KCk7XG5cbiAgICAgICAgdGhpcy5ibG9ja2VkU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmZvZWhuUGFnZVNlcnZpY2UuZm9laG5QYWdlT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgLy8gRW5zdXJlcyB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsdWUgaW4gdGhlIG9ic2VydmFibGUuXG4gICAgICAgICAgICBtZXJnZShvZihmYWxzZSksIHRoaXMuaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQpXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIF0pLnN1YnNjcmliZSgoW3RpdGxlLCBibG9ja2VkXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGJsb2NrZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgnUHJlc3RhdGlvbiBpbmRpc3BvbmlibGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSh0aXRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmlzQnJvd3NlclN1cHBvcnRlZCA9IHN1cHBvcnRlZEJyb3dzZXJzLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICAgIHRoaXMuaXNBcHBsZVBsYXRmb3JtID0gLyhNYWN8aVBob25lfGlQb2R8aVBhZCkvaS50ZXN0KFxuICAgICAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudFxuICAgICAgICApO1xuXG4gICAgICAgIHN0YXRpc3RpY3NTZXJ2aWNlLnRyYWNrKCk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5RGVtYW5kZUV4cGlyYXRpb25UaW1lciA9XG4gICAgICAgICAgICB0aGlzLmRlbWFuZGVFeHBpcmF0aW9uU2VydmljZS5zaG91bGREaXNwbGF5RXhwaXJhdGlvblRpbWVyTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSAnTmF2aWdhdGV1ciBub24gc3VwcG9ydMOpJztcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5zZXRQYWdlVGl0bGUocGFnZVRpdGxlKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0Q3VycmVudEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBudWxsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwYWdlVGl0bGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNJbml0aWFsU3RlcCA9IHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5jdXJyZW50RXRhcGVJbmZvLnBpcGUoXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRFdGFwZUluZm86IEV0YXBlSW5mbykgPT5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV0YXBlSW5mbyAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyRXRhcGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyUHJlc3RhdGlvblxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGNvbnN0IG5hdmlnYXRpb25VcGRhdGU6IE9ic2VydmFibGU8YW55PiA9IG9mICh0cnVlKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uVXBkYXRlOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlcyB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsdWUgaW4gdGhlIG9ic2VydmFibGUuXG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25BbmRJbml0ID0gbWVyZ2Uob2YodHJ1ZSksIG5hdmlnYXRpb25VcGRhdGUpO1xuICAgICAgICBjb25zdCBmb3JtVHJhbnNtaXR0ZWQgPSBtZXJnZShcbiAgICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZS5mb3JtVHJhbnNtaXR0ZWRPYnNlcnZhYmxlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlVc2VyQ2F0ZWdvcnkgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN0ZXAsXG4gICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaGFzQmVlbkluaXRpYWxpemVkKCksXG4gICAgICAgICAgICBmb3JtVHJhbnNtaXR0ZWQsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uQW5kSW5pdFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLCAvLyB3aXRob3V0IGRlYm91bmNlVGltZSwgdGhlIG91dGNvbWUgaXMgbGVzcyBlZmZlY3RpdmUuLi5cbiAgICAgICAgICAgIG1hcCgoW2luaXRpYWxTdGVwLCBuYXZTZXJ2aWNlSW5pdGlhbGl6ZWQsIGJhY2tlbmRSZXNwb25zZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmF2U2VydmljZUluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RQYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5pc0ZpcnN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0UGFnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaXNMYXN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50Um91dGVEZWZpbmVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRDdXJyZW50Um91dGVJbmRleCgpICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9laG5QYWdlU2VydmljZS5pc1VzZXJDYXRlZ29yeVZpc2libGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0UGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJDb25uZWN0ZWRBc0Rpc3BsYXllZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGVwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmRSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVudFJvdXRlRGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZvcm1Jbml0aWFsaXphdGlvbk9ic2VydmFibGUgPSBtZXJnZShcbiAgICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZS5mb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlKClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93U2VjdXJlZEFyZWFMb2dpbkJ1dHRvbiA9IG9mKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICBmb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm8uZGF0YSxcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuY3VycmVudEV0YXBlSW5mb1xuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksIC8vIHdpdGhvdXQgZGVib3VuY2VUaW1lLCB0aGUgb3V0Y29tZSBpcyBsZXNzIGVmZmVjdGl2ZS4uLlxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Jbml0aWFsaXphdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25JbmZvRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFdGFwZUluZm9cbiAgICAgICAgICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb25uZWN0ZWRDeWJlck9ySWFtID0gISFzZXNzaW9uSW5mb0RhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RQYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaXNMYXN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29ubmVjdGVkQ3liZXJPcklhbSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjdXJyZW50RXRhcGVJbmZvLmRlcGxveWVlQ3liZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIWZvcm1Jbml0aWFsaXphdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBldGFwZUlkQ2hhbmdlID0gY2hhbmdlcy5ldGFwZUlkO1xuICAgICAgICBpZiAoZXRhcGVJZENoYW5nZSAmJiBldGFwZUlkQ2hhbmdlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb2VoblBhZ2VTZXJ2aWNlLnNldEN1cnJlbnRFdGFwZUlkKGV0YXBlSWRDaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcFRpdGxlQ2hhbmdlID0gY2hhbmdlcy5hcHBUaXRsZTtcbiAgICAgICAgaWYgKGFwcFRpdGxlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl90aXRsZVNlcnZpY2Uuc2V0VGl0bGUoYXBwVGl0bGVDaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ibG9ja2VkU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZ1bGxMb2dpblVybCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2VoblBhZ2VNb2RhbFNlcnZpY2UuYnVpbGRTZWxmUmVkaXJlY3Rpb25UaHJvdWdoQ3liZXJMb2dpbigpO1xuICAgIH1cblxuICAgIGdldEZ1bGxMb2dpbk1lc3NhZ2UoXG4gICAgICAgIGRlY2lzaW9uRWxlY3Ryb25pcXVlQXZhaWxhYmxlOiBib29sZWFuXG4gICAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKGRlY2lzaW9uRWxlY3Ryb25pcXVlQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zZGtEaWN0aW9uYXJ5U2VydmljZS5nZXRLZXkoJ3VzZS1sb2dpbi50ZXh0JyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZGtEaWN0aW9uYXJ5U2VydmljZS5nZXRLZXkoXG4gICAgICAgICAgICAgICAgICAgICd1c2UtbG9naW4udGV4dC5kZWNpc2lvbi1lbGVjdHJvbmlxdWUtYXZhaWxhYmxlJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoW2xvZ2luTXNnLCBkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZU1zZ10pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtsb2dpbk1zZ308YnIvPjxici8+JHtkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZU1zZ31gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZGtEaWN0aW9uYXJ5U2VydmljZS5nZXRLZXkoJ3VzZS1sb2dpbi50ZXh0Jyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYWdlVGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZSA9IHRpdGxlO1xuICAgIH1cbn1cbiIsIjxmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXJcbiAgICAqbmdJZj1cIihkaXNwbGF5RGVtYW5kZUV4cGlyYXRpb25UaW1lciB8IGFzeW5jKSA9PT0gdHJ1ZVwiXG4gICAgaWQ9XCJmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXJcIlxuPjwvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyPlxuPGZvZWhuLWhlYWRlclxuICAgIGlkPVwiZm9laG5faGVhZGVyXCJcbiAgICBbdGl0bGVdPVwiYXBwVGl0bGVcIlxuICAgIFtyb3V0ZXJMaW5rQXBwVGl0bGVdPVwicm91dGVyTGlua0FwcFRpdGxlXCJcbiAgICBbc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b25dPVwic2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b24gfCBhc3luY1wiXG4+PC9mb2Vobi1oZWFkZXI+XG48Zm9laG4tZ3Jvd2wgaWQ9XCJmb2Vobl9ncm93bFwiPjwvZm9laG4tZ3Jvd2w+XG48ZGl2IGNsYXNzPVwidmQtYmctcGF0dGVybi1ncmF5XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8Zm9laG4tYnJlYWRjcnVtYlxuICAgICAgICAgICAgW2NvbmZpcm1MZWF2aW5nQWxlcnRdPVwiY29uZmlybUxlYXZpbmdBbGVydFwiXG4gICAgICAgID48L2ZvZWhuLWJyZWFkY3J1bWI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxtYWluIGlkPVwibWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2ZC1iZy1wYXR0ZXJuLWdyYXlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPCEtLSBGaXggYW5ub3lpbmcgZmxpY2tlcmluZyB3aGVuIHRoZSBwYWdlIGxvYWRzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgxIG10LTBcIiAqbmdJZj1cIiFwYWdlVGl0bGVcIj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgIDxoMVxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0wXCJcbiAgICAgICAgICAgICAgICBpZD1cInBhZ2UtdGl0bGVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiISFwYWdlVGl0bGVcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicGFnZVRpdGxlXCJcbiAgICAgICAgICAgID48L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxmb2Vobi1zdGF0dXMtcHJvZ3Jlc3MtYmFyXG4gICAgICAgIFtoaWRkZW5dPVwiXG4gICAgICAgICAgICBzdGF0dXNQcm9ncmVzc0JhckhpZGRlbiB8fCAhIShoYXNCbG9ja2luZ1N1cHBvcnRBbGVydCB8IGFzeW5jKVxuICAgICAgICBcIlxuICAgID48L2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXI+XG5cbiAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cIiFpc0Jyb3dzZXJTdXBwb3J0ZWRcIlxuICAgICAgICBjbGFzcz1cImNvbnRhaW5lciBhbGVydCBhbGVydC1kYW5nZXJcIlxuICAgICAgICBpZD1cImJyb3dzZXJfbm90X3N1cHBvcnRlZF9ibG9ja1wiXG4gICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgPlxuICAgICAgICA8cCBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuYnJvd3Nlci1ub3Qtc3VwcG9ydGVkJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmJyb3dzZXItZG93bmxvYWQtaW52aXRhdGlvbicgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0FwcGxlUGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnJvd3NlckxpbmtUaXRsZVByZWZpeCArICcgRWRnZSdcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9mci1jaC93aW5kb3dzL21pY3Jvc29mdC1lZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgRWRnZVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FwcGxlUGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnJvd3NlckxpbmtUaXRsZVByZWZpeCArICcgU2FmYXJpJ1wiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3N1cHBvcnQuYXBwbGUuY29tL2Rvd25sb2Fkcy9zYWZhcmlcIlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBTYWZhcmlcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmV4dGVybmFsLWxpbmsuc3JPbmx5JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD48L2ZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJicm93c2VyTGlua1RpdGxlUHJlZml4ICsgJyBGaXJlZm94J1wiXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2ZyL2ZpcmVmb3gvXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBGaXJlZm94XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB7eyAnZm9laG4tcGFnZS5icm93c2VyLWRvd25sb2FkLWxpc3Qub3UnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIENocm9tZSdcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGUuY29tL2ludGwvZnIvY2hyb21lL1wiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQ2hyb21lXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cImJyb3dzZXJfbm90X3N1cHBvcnRlZF9ieXBhc3NcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbG9hdC1lbmQgYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFicm93c2VyTm90U3VwcG9ydGVkQnlwYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJyb3dzZXJOb3RTdXBwb3J0ZWRCeXBhc3MgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS5jb250aW51ZS13aXRoLXNhbWUtYnJvd3NlcicgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZGstc3VwcG9ydC1hbGVydC1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJzdXBwb3J0QWxlcnRFbmFibGVkXCJcbiAgICAgICAgW2V0YXBlSWRdPVwiZXRhcGVJZFwiXG4gICAgICAgIFtzdXBwb3J0QWxlcnRVcmxdPVwic3VwcG9ydEFsZXJ0VXJsXCJcbiAgICA+PC9zZGstc3VwcG9ydC1hbGVydC1jb250YWluZXI+XG4gICAgPHNkay1kcmFmdHMtY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiZHJhZnRzRW5hYmxlZFwiXG4gICAgICAgIFtldGFwZUlkXT1cImV0YXBlSWRcIlxuICAgICAgICBbZHJhZnRzVXJsXT1cImRyYWZ0c1VybFwiXG4gICAgPjwvc2RrLWRyYWZ0cy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgIShoYXNCbG9ja2luZ1N1cHBvcnRBbGVydCB8IGFzeW5jKSAmJlxuICAgICAgICAgICAgKGlzQnJvd3NlclN1cHBvcnRlZCB8fCBicm93c2VyTm90U3VwcG9ydGVkQnlwYXNzKVxuICAgICAgICBcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBtdC01XCIgaWQ9XCJwYWdlX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxmb2Vobi11c2VyLWNvbm5lY3RlZC1hc1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGlzcGxheVVzZXJDYXRlZ29yeSB8IGFzeW5jXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9tYWluPlxuPGZvZWhuLWZvb3RlclxuICAgIGlkPVwiZm9laG5fZm9vdGVyXCJcbiAgICBbbGlua3NdPVwiZm9vdGVyTGlua3NcIlxuICAgIFtzaG93RGVmYXVsdENvbnRhY3RMaW5rXT1cInNob3dEZWZhdWx0Q29udGFjdEZvb3RlckxpbmtcIlxuICAgIFtzaG93RGVmYXVsdEd1aWRlTGlua109XCJzaG93RGVmYXVsdEd1aWRlRm9vdGVyTGlua1wiXG4gICAgW3Nob3dEZWZhdWx0VGVybU9mVXNlTGlua109XCJzaG93RGVmYXVsdFRlcm1PZlVzZUxpbmtcIlxuICAgIFtzaG93RGVmYXVsdFNlY3VyaXR5QmVzdFByYWN0aWNlTGlua109XCJzaG93RGVmYXVsdFNlY3VyaXR5QmVzdFByYWN0aWNlTGlua1wiXG4+PC9mb2Vobi1mb290ZXI+XG48Zm9laG4tcGFnZS1tb2RhbD48L2ZvZWhuLXBhZ2UtbW9kYWw+XG48Zm9laG4tY29uZmlybS1tb2RhbD48L2ZvZWhuLWNvbmZpcm0tbW9kYWw+XG48Zm9laG4tdHJhbnNtaXQtd2FpdGluZy1tb2RhbD48L2ZvZWhuLXRyYW5zbWl0LXdhaXRpbmctbW9kYWw+XG4iXX0=
|