@dsivd/prestations-ng 15.5.13 → 16.0.0-beta1
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 +666 -1
- package/CONTRIBUTING.md +32 -1
- package/ESLINT_MIGRATION_GUIDE.md +1 -1
- package/README.md +6 -0
- package/UPGRADING_V12.md +0 -15
- package/UPGRADING_V13.md +0 -15
- package/UPGRADING_V14.md +8 -26
- package/UPGRADING_V15.md +113 -0
- package/UPGRADING_V16.md +63 -0
- package/abstract-page-component.d.ts +8 -8
- package/directives/currency-formatter.directive.d.ts +4 -1
- package/directives/iban-formatter.directive.d.ts +1 -1
- package/directives/ide-formatter.directive.d.ts +1 -1
- package/directives/ndc-formatter.directive.d.ts +1 -1
- package/dsivd-prestations-ng-v16.0.0-beta1.tgz +0 -0
- package/esm2020/abstract-page-component.mjs +223 -0
- package/esm2020/directives/currency-formatter.directive.mjs +143 -0
- package/{esm2015/directives/formatter.module.js → esm2020/directives/formatter.module.mjs} +8 -8
- package/{esm2015/directives/iban-formatter.directive.js → esm2020/directives/iban-formatter.directive.mjs} +4 -4
- package/{esm2015/directives/ide-formatter.directive.js → esm2020/directives/ide-formatter.directive.mjs} +4 -4
- package/{esm2015/directives/ndc-formatter.directive.js → esm2020/directives/ndc-formatter.directive.mjs} +4 -4
- package/{esm2015/dsivd-prestations-ng.js → esm2020/dsivd-prestations-ng.mjs} +0 -0
- package/{esm2015/foehn-address/address.type.js → esm2020/foehn-address/address.type.mjs} +1 -1
- package/esm2020/foehn-address/foehn-address.module.mjs +55 -0
- package/{esm2015/foehn-address/foehn-display-address.component.js → esm2020/foehn-address/foehn-display-address.component.mjs} +5 -9
- package/esm2020/foehn-address/foehn-input-address.component.mjs +406 -0
- package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +66 -0
- package/esm2020/foehn-address/foehn-input-foreign-street.component.mjs +55 -0
- package/esm2020/foehn-agenda/calendar.type.mjs +3 -0
- package/esm2020/foehn-agenda/current-week.type.mjs +4 -0
- package/esm2020/foehn-agenda/day-slots.type.mjs +3 -0
- package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +74 -0
- package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +242 -0
- package/esm2020/foehn-agenda/foehn-agenda.component.mjs +95 -0
- package/esm2020/foehn-agenda/foehn-agenda.module.mjs +62 -0
- package/esm2020/foehn-agenda/pagination-week.type.mjs +3 -0
- package/esm2020/foehn-agenda/selected-slot.type.mjs +3 -0
- package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +608 -0
- package/esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs +40 -0
- package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +28 -0
- package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +40 -0
- package/esm2020/foehn-boolean/foehn-boolean.module.mjs +33 -0
- package/esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs +181 -0
- package/{esm2015/foehn-breadcrumb/breadcrumb.js → esm2020/foehn-breadcrumb/breadcrumb.mjs} +0 -0
- package/esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs +80 -0
- package/esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs +19 -0
- package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +298 -0
- package/esm2020/foehn-checkables/foehn-checkables.module.mjs +68 -0
- package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +37 -0
- package/esm2020/foehn-checkables/foehn-radio.component.mjs +64 -0
- package/esm2020/foehn-checkables/foehn-select.component.mjs +53 -0
- package/{esm2015/foehn-checkables/form-select-option-group.js → esm2020/foehn-checkables/form-select-option-group.mjs} +0 -0
- package/{esm2015/foehn-checkables/form-select-option.js → esm2020/foehn-checkables/form-select-option.mjs} +0 -0
- package/{esm2015/foehn-confirm-modal/foehn-confirm-modal-content.js → esm2020/foehn-confirm-modal/foehn-confirm-modal-content.mjs} +1 -1
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +40 -0
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs +19 -0
- package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.service.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs} +4 -4
- package/esm2020/foehn-date-picker/date-picker-navigation.helper.mjs +167 -0
- package/esm2020/foehn-date-picker/date-picker.helper.mjs +132 -0
- package/{esm2015/foehn-date-picker/day-month.type.js → esm2020/foehn-date-picker/day-month.type.mjs} +0 -0
- package/{esm2015/foehn-date-picker/focused-day.type.js → esm2020/foehn-date-picker/focused-day.type.mjs} +0 -0
- package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +387 -0
- package/esm2020/foehn-date-picker/foehn-date-picker.module.mjs +40 -0
- package/{esm2015/foehn-date-picker/month-year.type.js → esm2020/foehn-date-picker/month-year.type.mjs} +0 -0
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +97 -0
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs +36 -0
- package/esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs +67 -0
- package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.module.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs} +7 -7
- package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +37 -0
- package/esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs +32 -0
- package/esm2020/foehn-footer/foehn-footer.component.mjs +130 -0
- package/{esm2015/foehn-footer/foehn-footer.module.js → esm2020/foehn-footer/foehn-footer.module.mjs} +6 -6
- package/{esm2015/foehn-footer/footer-link.type.js → esm2020/foehn-footer/footer-link.type.mjs} +0 -0
- package/esm2020/foehn-form/foehn-form.component.mjs +135 -0
- package/esm2020/foehn-form/foehn-form.module.mjs +32 -0
- package/esm2020/foehn-form/register-ng-model.service.mjs +23 -0
- package/esm2020/foehn-growl/foehn-growl.component.mjs +44 -0
- package/{esm2015/foehn-growl/foehn-growl.module.js → esm2020/foehn-growl/foehn-growl.module.mjs} +6 -6
- package/{esm2015/foehn-growl/growl-broker.service.js → esm2020/foehn-growl/growl-broker.service.mjs} +5 -5
- package/{esm2015/foehn-growl/growl-message.js → esm2020/foehn-growl/growl-message.mjs} +1 -1
- package/{esm2015/foehn-growl/growl-types.js → esm2020/foehn-growl/growl-types.mjs} +0 -0
- package/esm2020/foehn-header/foehn-header.component.mjs +68 -0
- package/esm2020/foehn-header/foehn-header.module.mjs +21 -0
- package/{esm2015/foehn-header/foehn-skip-link.component.js → esm2020/foehn-header/foehn-skip-link.component.mjs} +5 -8
- package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +44 -0
- package/esm2020/foehn-help-modal/foehn-help-modal.module.mjs +20 -0
- package/esm2020/foehn-help-modal/foehn-help-modal.type.mjs +2 -0
- package/{esm2015/foehn-icons/abstract-icon-component.js → esm2020/foehn-icons/abstract-icon-component.mjs} +5 -5
- package/esm2020/foehn-icons/foehn-icon-calendar.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-check.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-clock.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-edit.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-info-circle.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-lock.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-map-marker.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-plus-square.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-search.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-times.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs +19 -0
- package/esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs +19 -0
- package/{esm2015/foehn-icons/foehn-icons.module.js → esm2020/foehn-icons/foehn-icons.module.mjs} +20 -20
- package/esm2020/foehn-input/foehn-input-email.component.mjs +59 -0
- package/esm2020/foehn-input/foehn-input-hidden.component.mjs +55 -0
- package/esm2020/foehn-input/foehn-input-number.component.mjs +276 -0
- package/esm2020/foehn-input/foehn-input-password.component.mjs +52 -0
- package/esm2020/foehn-input/foehn-input-phone.component.mjs +92 -0
- package/{esm2015/foehn-input/foehn-input-string.component.js → esm2020/foehn-input/foehn-input-string.component.mjs} +5 -5
- package/esm2020/foehn-input/foehn-input-text.component.mjs +76 -0
- package/esm2020/foehn-input/foehn-input-textarea.component.mjs +109 -0
- package/esm2020/foehn-input/foehn-input.component.mjs +390 -0
- package/esm2020/foehn-input/foehn-input.module.mjs +93 -0
- package/{esm2015/foehn-input/pattern.const.js → esm2020/foehn-input/pattern.const.mjs} +0 -0
- package/esm2020/foehn-input-date/foehn-input-date.component.mjs +118 -0
- package/esm2020/foehn-input-date-time/foehn-input-date-time.component.mjs +143 -0
- package/esm2020/foehn-input-time/foehn-input-time.component.mjs +74 -0
- package/esm2020/foehn-list/foehn-list.component.mjs +128 -0
- package/esm2020/foehn-list/foehn-list.module.mjs +19 -0
- package/{esm2015/foehn-list/page-change-event.js → esm2020/foehn-list/page-change-event.mjs} +0 -0
- package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +122 -0
- package/{esm2015/foehn-menu-prestation/abstract-menu-page.component.js → esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs} +4 -4
- package/{esm2015/foehn-menu-prestation/abstract-page-from-menu.component.js → esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs} +4 -4
- package/esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +23 -0
- package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs} +0 -0
- package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs} +0 -0
- package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +71 -0
- package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +35 -0
- package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +51 -0
- package/esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs +59 -0
- package/{esm2015/foehn-misc/foehn-abbr.component.js → esm2020/foehn-misc/foehn-abbr.component.mjs} +5 -9
- package/{esm2015/foehn-misc/foehn-misc.module.js → esm2020/foehn-misc/foehn-misc.module.mjs} +5 -5
- package/esm2020/foehn-modal/foehn-modal.component.mjs +94 -0
- package/esm2020/foehn-modal/foehn-modal.module.mjs +21 -0
- package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +268 -0
- package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +40 -0
- package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +114 -0
- package/esm2020/foehn-nav13/foehn-input-nav13.module.mjs +32 -0
- package/esm2020/foehn-navigation/foehn-navigation.component.mjs +94 -0
- package/esm2020/foehn-navigation/foehn-navigation.module.mjs +32 -0
- package/esm2020/foehn-navigation/foehn-navigation.service.mjs +303 -0
- package/{esm2015/foehn-notfound/foehn-notfound.component.js → esm2020/foehn-notfound/foehn-notfound.component.mjs} +7 -10
- package/esm2020/foehn-notfound/foehn-notfound.module.mjs +20 -0
- package/{esm2015/foehn-page/foehn-page-counter.component.js → esm2020/foehn-page/foehn-page-counter.component.mjs} +5 -8
- package/esm2020/foehn-page/foehn-page-modal.component.mjs +53 -0
- package/{esm2015/foehn-page/foehn-page-modal.service.js → esm2020/foehn-page/foehn-page-modal.service.mjs} +4 -4
- package/esm2020/foehn-page/foehn-page.component.mjs +218 -0
- package/esm2020/foehn-page/foehn-page.module.mjs +78 -0
- package/{esm2015/foehn-page/foehn-page.service.js → esm2020/foehn-page/foehn-page.service.mjs} +4 -4
- package/esm2020/foehn-recap-section/foehn-recap-section.component.mjs +88 -0
- package/esm2020/foehn-recap-section/foehn-recap-section.module.mjs +20 -0
- package/{esm2015/foehn-recap-section/foehn-recap-section.type.js → esm2020/foehn-recap-section/foehn-recap-section.type.mjs} +0 -0
- package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs} +5 -9
- package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs} +6 -6
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +56 -0
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +20 -0
- package/esm2020/foehn-table/foehn-table-column-configuration.mjs +3 -0
- package/esm2020/foehn-table/foehn-table-page-change-event.mjs +3 -0
- package/esm2020/foehn-table/foehn-table.component.mjs +148 -0
- package/esm2020/foehn-table/foehn-table.module.mjs +32 -0
- package/esm2020/foehn-table/tableSort.mjs +3 -0
- package/esm2020/foehn-upload/abstract-foehn-uploader.component.mjs +192 -0
- package/{esm2015/foehn-upload/document-reference.js → esm2020/foehn-upload/document-reference.mjs} +0 -0
- package/esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +71 -0
- package/{esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.js → esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs} +0 -0
- package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +174 -0
- package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +40 -0
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +224 -0
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +40 -0
- package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +83 -0
- package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.type.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.type.mjs} +0 -0
- package/esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +158 -0
- package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +202 -0
- package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +44 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +75 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +21 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +62 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +3 -0
- package/{esm2015/foehn-upload/pending-upload.type.js → esm2020/foehn-upload/pending-upload.type.mjs} +1 -1
- package/esm2020/foehn-upload/uploader.helper.mjs +327 -0
- package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.component.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.component.mjs} +5 -8
- package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.module.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.module.mjs} +6 -6
- package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +96 -0
- package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +19 -0
- package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +29 -0
- package/{esm2015/foehn-validation-alerts/foehn-validation-alerts.module.js → esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs} +6 -6
- package/esm2020/form-error.mjs +2 -0
- package/esm2020/form-post-response.mjs +10 -0
- package/{esm2015/gesdem/gesdem-error-handler.service.js → esm2020/gesdem/gesdem-error-handler.service.mjs} +4 -4
- package/esm2020/gesdem/gesdem-event.service.mjs +38 -0
- package/esm2020/gesdem/gesdem-handler.service.mjs +160 -0
- package/esm2020/gesdem/gesdem-loader.guard.mjs +41 -0
- package/{esm2015/gesdem/gesdem-statut-utils.js → esm2020/gesdem/gesdem-statut-utils.mjs} +0 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +101 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +130 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs +50 -0
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +82 -0
- package/{esm2015/gesdem-action-recovery/reprise-info.js → esm2020/gesdem-action-recovery/reprise-info.mjs} +0 -0
- package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +201 -0
- package/esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs +32 -0
- package/esm2020/gesdem-error/gesdem-error.component.mjs +87 -0
- package/esm2020/gesdem-error/gesdem-error.module.mjs +36 -0
- package/esm2020/global.const.mjs +5 -0
- package/esm2020/helpers/object.helper.mjs +89 -0
- package/{esm2015/i18n-form.js → esm2020/i18n-form.mjs} +0 -0
- package/esm2020/index.mjs +263 -0
- package/{esm2015/pipes/currency.pipe.js → esm2020/pipes/currency.pipe.mjs} +4 -4
- package/{esm2015/pipes/date.pipe.js → esm2020/pipes/date.pipe.mjs} +4 -4
- package/{esm2015/pipes/formatIde.pipe.js → esm2020/pipes/formatIde.pipe.mjs} +3 -3
- package/{esm2015/pipes/pipes.module.js → esm2020/pipes/pipes.module.mjs} +7 -7
- package/{esm2015/prestations-ng-core.module.js → esm2020/prestations-ng-core.module.mjs} +7 -7
- package/esm2020/refinf/model/address-type-light.mjs +3 -0
- package/esm2020/refinf/model/canton.mjs +3 -0
- package/esm2020/refinf/model/district.mjs +3 -0
- package/esm2020/refinf/model/municipality.mjs +3 -0
- package/esm2020/refinf/model/place-of-origin.mjs +3 -0
- package/esm2020/refinf/model/postal-locality.mjs +3 -0
- package/esm2020/sdk-appinfo/application-info.mjs +14 -0
- package/esm2020/sdk-appinfo/application-info.service.mjs +104 -0
- package/{esm2015/sdk-currency/currency.helper.js → esm2020/sdk-currency/currency.helper.mjs} +3 -3
- package/esm2020/sdk-date/date.helper.mjs +100 -0
- package/esm2020/sdk-dictionary/default-dictionary.mjs +166 -0
- package/{esm2015/sdk-dictionary/sdk-dictionary.module.js → esm2020/sdk-dictionary/sdk-dictionary.module.mjs} +5 -5
- package/{esm2015/sdk-dictionary/sdk-dictionary.pipe.js → esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs} +6 -6
- package/esm2020/sdk-dictionary/sdk-dictionary.service.mjs +111 -0
- package/{esm2015/sdk-epayment/model/EPaymentParameters.js → esm2020/sdk-epayment/model/EPaymentParameters.mjs} +0 -0
- package/esm2020/sdk-epayment/sdk-epayment.component.mjs +81 -0
- package/esm2020/sdk-epayment/sdk-epayment.module.mjs +21 -0
- package/esm2020/sdk-epayment/sdk-epayment.service.mjs +52 -0
- package/{esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js → esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs} +6 -10
- package/esm2020/sdk-recaptcha/recaptcha.service.mjs +162 -0
- package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +69 -0
- package/esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs +19 -0
- package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +58 -0
- package/esm2020/sdk-redirect/redirect.component.mjs +35 -0
- package/esm2020/sdk-redirect/sdk-redirect.module.mjs +19 -0
- package/{esm2015/sdk-session-info/session-info-data.js → esm2020/sdk-session-info/session-info-data.mjs} +1 -1
- package/{esm2015/sdk-session-info/session-info-with-application.service.js → esm2020/sdk-session-info/session-info-with-application.service.mjs} +5 -5
- package/esm2020/sdk-session-info/session-info.service.mjs +50 -0
- package/esm2020/sdk-statistics/sdk-statistics.service.mjs +70 -0
- package/esm2020/sdk-support-alert/support-alert-container.component.mjs +49 -0
- package/esm2020/sdk-support-alert/support-alert.component.mjs +34 -0
- package/{esm2015/sdk-support-alert/support-alert.model.js → esm2020/sdk-support-alert/support-alert.model.mjs} +0 -0
- package/esm2020/sdk-support-alert/support-alert.module.mjs +21 -0
- package/esm2020/sdk-support-alert/support-alert.service.mjs +117 -0
- package/{esm2015/service-locator.js → esm2020/service-locator.mjs} +0 -0
- package/esm2020/supported-browser.mjs +2 -0
- package/esm2020/validation/validation-handler.service.mjs +44 -0
- package/fesm2015/dsivd-prestations-ng.mjs +13397 -0
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -0
- package/fesm2020/dsivd-prestations-ng.mjs +13372 -0
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -0
- package/foehn-address/address.type.d.ts +3 -3
- package/foehn-address/foehn-display-address.component.d.ts +1 -1
- package/foehn-address/foehn-input-address.component.d.ts +18 -8
- package/foehn-address/foehn-input-foreign-locality.component.d.ts +1 -1
- package/foehn-address/foehn-input-foreign-street.component.d.ts +1 -1
- package/foehn-agenda/calendar.type.d.ts +9 -0
- package/foehn-agenda/current-week.type.d.ts +5 -0
- package/foehn-agenda/day-slots.type.d.ts +5 -0
- package/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.d.ts +21 -0
- package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +51 -0
- package/foehn-agenda/foehn-agenda.component.d.ts +29 -0
- package/foehn-agenda/foehn-agenda.module.d.ts +17 -0
- package/foehn-agenda/pagination-week.type.d.ts +5 -0
- package/foehn-agenda/selected-slot.type.d.ts +7 -0
- package/foehn-autocomplete/foehn-autocomplete.component.d.ts +22 -6
- package/foehn-boolean/foehn-boolean-checkbox.component.d.ts +1 -1
- package/foehn-boolean/foehn-boolean-radio.component.d.ts +2 -1
- package/foehn-breadcrumb/breadcrumb-event.service.d.ts +2 -2
- package/foehn-breadcrumb/foehn-breadcrumb.component.d.ts +6 -5
- package/foehn-checkables/foehn-checkable-group.component.d.ts +8 -8
- package/foehn-checkables/foehn-checkables.module.d.ts +3 -1
- package/foehn-checkables/foehn-checkbox.component.d.ts +1 -1
- package/foehn-checkables/foehn-radio.component.d.ts +1 -1
- package/foehn-checkables/foehn-select.component.d.ts +2 -10
- package/foehn-confirm-modal/foehn-confirm-modal-content.d.ts +1 -0
- package/foehn-confirm-modal/foehn-confirm-modal.component.d.ts +2 -2
- package/foehn-date-picker/date-picker-navigation.helper.d.ts +7 -1
- package/foehn-date-picker/date-picker.helper.d.ts +3 -2
- package/foehn-date-picker/foehn-date-picker.component.d.ts +21 -10
- package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +13 -5
- package/foehn-debug-summary/foehn-debug-summary.component.d.ts +7 -5
- package/foehn-decision-electronique/foehn-decision-electronique.component.d.ts +2 -2
- package/foehn-decision-electronique/foehn-decision-electronique.module.d.ts +2 -1
- package/foehn-footer/foehn-footer.component.d.ts +4 -4
- package/foehn-form/foehn-form.component.d.ts +7 -4
- package/foehn-form/register-ng-model.service.d.ts +9 -0
- package/foehn-growl/foehn-growl.component.d.ts +3 -3
- package/foehn-growl/growl-broker.service.d.ts +1 -1
- package/foehn-header/foehn-header.component.d.ts +7 -7
- package/foehn-header/foehn-skip-link.component.d.ts +2 -2
- package/foehn-help-modal/foehn-help-modal.component.d.ts +1 -1
- package/foehn-help-modal/foehn-help-modal.type.d.ts +4 -0
- package/foehn-icons/abstract-icon-component.d.ts +1 -1
- package/foehn-icons/foehn-icon-calendar.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-check-square-o.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-check.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-down.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-left.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-right.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-chevron-up.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-clock.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-comment-dots.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-edit.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-external-link-alt.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-file-pdf.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-info-circle.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-lock.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-map-marker.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-minus-circle.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-plus-circle.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-plus-square.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-search.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-times.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-trash-alt.component.d.ts +1 -1
- package/foehn-icons/foehn-icon-unlock-alt.component.d.ts +1 -1
- package/foehn-input/foehn-input-email.component.d.ts +4 -2
- package/foehn-input/foehn-input-hidden.component.d.ts +1 -1
- package/foehn-input/foehn-input-number.component.d.ts +16 -6
- package/foehn-input/foehn-input-password.component.d.ts +1 -1
- package/foehn-input/foehn-input-phone.component.d.ts +1 -1
- package/foehn-input/foehn-input-string.component.d.ts +1 -1
- package/foehn-input/foehn-input-text.component.d.ts +1 -1
- package/foehn-input/foehn-input-textarea.component.d.ts +5 -2
- package/foehn-input/foehn-input.component.d.ts +25 -9
- package/foehn-input/foehn-input.module.d.ts +9 -6
- package/foehn-input-date/foehn-input-date.component.d.ts +10 -3
- package/foehn-input-date-time/foehn-input-date-time.component.d.ts +29 -0
- package/foehn-input-time/foehn-input-time.component.d.ts +1 -1
- package/foehn-list/foehn-list.component.d.ts +2 -3
- package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +5 -5
- package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
- package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
- package/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.d.ts +1 -1
- package/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.d.ts +3 -3
- package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.d.ts +1 -1
- package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.d.ts +2 -2
- package/foehn-misc/foehn-abbr.component.d.ts +1 -1
- package/foehn-modal/foehn-modal.component.d.ts +2 -3
- package/foehn-modal/foehn-modal.module.d.ts +3 -1
- package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.d.ts +51 -0
- package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.d.ts +13 -0
- package/foehn-nav13/foehn-input-nav13.component.d.ts +2 -1
- package/foehn-navigation/foehn-navigation.component.d.ts +2 -2
- package/foehn-navigation/foehn-navigation.service.d.ts +4 -3
- package/foehn-notfound/foehn-notfound.component.d.ts +1 -1
- package/foehn-page/foehn-page-counter.component.d.ts +1 -1
- package/foehn-page/foehn-page-modal.component.d.ts +1 -1
- package/foehn-page/foehn-page-modal.service.d.ts +1 -1
- package/foehn-page/foehn-page.component.d.ts +15 -12
- package/foehn-page/foehn-page.module.d.ts +2 -1
- package/foehn-page/foehn-page.service.d.ts +2 -2
- package/foehn-recap-section/foehn-recap-section.component.d.ts +3 -1
- package/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.d.ts +1 -1
- package/foehn-status-progress-bar/foehn-status-progress-bar.component.d.ts +23 -0
- package/foehn-status-progress-bar/foehn-status-progress-bar.module.d.ts +10 -0
- package/foehn-table/foehn-table-column-configuration.d.ts +18 -0
- package/foehn-table/foehn-table-page-change-event.d.ts +5 -0
- package/foehn-table/foehn-table.component.d.ts +33 -0
- package/foehn-table/foehn-table.module.d.ts +11 -0
- package/foehn-table/tableSort.d.ts +4 -0
- package/foehn-upload/abstract-foehn-uploader.component.d.ts +7 -7
- package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +6 -4
- package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.d.ts +6 -5
- package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.d.ts +9 -8
- package/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +6 -4
- package/foehn-upload/foehn-multi-upload/pending-upload.service.d.ts +3 -3
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +7 -4
- package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.d.ts +19 -0
- package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.d.ts +11 -0
- package/foehn-upload/foehn-upload-progress-bar/upload-progress.service.d.ts +19 -0
- package/foehn-upload/foehn-upload-progress-bar/upload-progress.type.d.ts +4 -0
- package/foehn-upload/pending-upload.type.d.ts +1 -0
- package/foehn-upload/uploader.helper.d.ts +13 -13
- package/foehn-user-connected-as/foehn-user-connected-as.component.d.ts +2 -2
- package/foehn-validation-alert-summary/foehn-validation-alert-summary.component.d.ts +2 -2
- package/foehn-validation-alerts/foehn-validation-alerts.component.d.ts +4 -4
- package/{error-template.d.ts → form-error.d.ts} +1 -1
- package/form-post-response.d.ts +17 -0
- package/gesdem/gesdem-error-handler.service.d.ts +2 -2
- package/gesdem/gesdem-event.service.d.ts +7 -7
- package/gesdem/gesdem-handler.service.d.ts +8 -6
- package/gesdem/gesdem-loader.guard.d.ts +1 -1
- package/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.d.ts +5 -5
- package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +7 -7
- package/gesdem-action-recovery/gesdem-action-recovery.service.d.ts +3 -3
- package/gesdem-confirmation/gesdem-confirmation.component.d.ts +10 -9
- package/gesdem-error/gesdem-error.component.d.ts +10 -3
- package/gesdem-error/gesdem-error.module.d.ts +2 -1
- package/global.const.d.ts +1 -0
- package/index.d.ts +102 -70
- package/package.json +34 -21
- package/pipes/currency.pipe.d.ts +1 -1
- package/pipes/date.pipe.d.ts +1 -1
- package/pipes/formatIde.pipe.d.ts +1 -1
- package/refinf/model/address-type-light.d.ts +5 -0
- package/refinf/model/canton.d.ts +4 -0
- package/refinf/model/district.d.ts +7 -0
- package/refinf/model/municipality.d.ts +8 -0
- package/refinf/model/place-of-origin.d.ts +9 -0
- package/refinf/model/postal-locality.d.ts +11 -0
- package/schematics/ng-add/index.js +10 -10
- package/schematics/ng-update/migrations/update-13_1_0/index.js +2 -2
- package/schematics/ng-update/migrations/update-13_2_0/index.js +3 -3
- package/schematics/ng-update/migrations/update-13_5_1/index.js +3 -3
- package/schematics/ng-update/migrations/update-14_5_0/index.js +2 -2
- package/schematics/update-karma-config/index.js +2 -2
- package/schematics/utility/migrate-to-karma-coverage.js +3 -3
- package/sdk-appinfo/application-info.d.ts +1 -0
- package/sdk-appinfo/application-info.service.d.ts +4 -4
- package/sdk-dictionary/sdk-dictionary.pipe.d.ts +1 -1
- package/sdk-dictionary/sdk-dictionary.service.d.ts +9 -0
- package/sdk-epayment/sdk-epayment.component.d.ts +6 -16
- package/sdk-epayment/sdk-epayment.service.d.ts +3 -6
- package/sdk-recaptcha/grecaptcha/grecaptcha.component.d.ts +2 -2
- package/sdk-recaptcha/recaptcha.service.d.ts +5 -5
- package/sdk-recaptcha/sdk-recaptcha.component.d.ts +4 -4
- package/sdk-redirect/iam-expired-interceptor.service.d.ts +3 -3
- package/sdk-redirect/redirect.component.d.ts +3 -9
- package/sdk-session-info/session-info-data.d.ts +0 -1
- package/sdk-session-info/session-info.service.d.ts +4 -4
- package/sdk-statistics/sdk-statistics.service.d.ts +22 -0
- package/sdk-support-alert/support-alert-container.component.d.ts +3 -3
- package/sdk-support-alert/support-alert.component.d.ts +1 -1
- package/sdk-support-alert/support-alert.service.d.ts +5 -4
- package/validation/validation-handler.service.d.ts +4 -4
- package/backend-response.d.ts +0 -18
- package/bundles/dsivd-prestations-ng.umd.js +0 -13188
- package/bundles/dsivd-prestations-ng.umd.js.map +0 -1
- package/dsivd-prestations-ng-v15.5.13.tgz +0 -0
- package/dsivd-prestations-ng.d.ts +0 -5
- package/esm2015/abstract-page-component.js +0 -224
- package/esm2015/backend-response.js +0 -10
- package/esm2015/directives/currency-formatter.directive.js +0 -116
- package/esm2015/error-template.js +0 -2
- package/esm2015/foehn-address/foehn-address.module.js +0 -57
- package/esm2015/foehn-address/foehn-input-address.component.js +0 -365
- package/esm2015/foehn-address/foehn-input-foreign-locality.component.js +0 -71
- package/esm2015/foehn-address/foehn-input-foreign-street.component.js +0 -60
- package/esm2015/foehn-autocomplete/foehn-autocomplete.component.js +0 -556
- package/esm2015/foehn-autocomplete/foehn-autocomplete.module.js +0 -42
- package/esm2015/foehn-boolean/foehn-boolean-checkbox.component.js +0 -32
- package/esm2015/foehn-boolean/foehn-boolean-radio.component.js +0 -41
- package/esm2015/foehn-boolean/foehn-boolean.module.js +0 -35
- package/esm2015/foehn-breadcrumb/breadcrumb-event.service.js +0 -182
- package/esm2015/foehn-breadcrumb/foehn-breadcrumb.component.js +0 -85
- package/esm2015/foehn-breadcrumb/foehn-breadcrumb.module.js +0 -19
- package/esm2015/foehn-checkables/foehn-checkable-group.component.js +0 -294
- package/esm2015/foehn-checkables/foehn-checkables.module.js +0 -62
- package/esm2015/foehn-checkables/foehn-checkbox.component.js +0 -40
- package/esm2015/foehn-checkables/foehn-radio.component.js +0 -67
- package/esm2015/foehn-checkables/foehn-select.component.js +0 -66
- package/esm2015/foehn-confirm-modal/foehn-confirm-modal.component.js +0 -42
- package/esm2015/foehn-confirm-modal/foehn-confirm-modal.module.js +0 -19
- package/esm2015/foehn-date-picker/date-picker-navigation.helper.js +0 -117
- package/esm2015/foehn-date-picker/date-picker.helper.js +0 -126
- package/esm2015/foehn-date-picker/foehn-date-picker.component.js +0 -300
- package/esm2015/foehn-date-picker/foehn-date-picker.module.js +0 -42
- package/esm2015/foehn-date-picker-button/foehn-date-picker-button.component.js +0 -74
- package/esm2015/foehn-date-picker-button/foehn-date-picker-button.module.js +0 -38
- package/esm2015/foehn-debug-summary/foehn-debug-summary.component.js +0 -61
- package/esm2015/foehn-decision-electronique/foehn-decision-electronique.component.js +0 -40
- package/esm2015/foehn-decision-electronique/foehn-decision-electronique.module.js +0 -20
- package/esm2015/foehn-footer/foehn-footer.component.js +0 -132
- package/esm2015/foehn-form/foehn-form.component.js +0 -146
- package/esm2015/foehn-form/foehn-form.module.js +0 -20
- package/esm2015/foehn-growl/foehn-growl.component.js +0 -47
- package/esm2015/foehn-header/foehn-header.component.js +0 -73
- package/esm2015/foehn-header/foehn-header.module.js +0 -21
- package/esm2015/foehn-help-modal/foehn-help-modal.component.js +0 -48
- package/esm2015/foehn-help-modal/foehn-help-modal.module.js +0 -20
- package/esm2015/foehn-help-modal/foehn-help-modal.type.js +0 -2
- package/esm2015/foehn-icons/foehn-icon-calendar.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-check-square-o.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-check.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-down.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-left.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-right.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-chevron-up.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-clock.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-comment-dots.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-edit.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-external-link-alt.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-file-pdf.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-info-circle.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-lock.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-map-marker.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-minus-circle.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-plus-circle.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-plus-square.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-search.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-times.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-trash-alt.component.js +0 -22
- package/esm2015/foehn-icons/foehn-icon-unlock-alt.component.js +0 -22
- package/esm2015/foehn-input/foehn-input-email.component.js +0 -55
- package/esm2015/foehn-input/foehn-input-hidden.component.js +0 -57
- package/esm2015/foehn-input/foehn-input-number.component.js +0 -190
- package/esm2015/foehn-input/foehn-input-password.component.js +0 -55
- package/esm2015/foehn-input/foehn-input-phone.component.js +0 -96
- package/esm2015/foehn-input/foehn-input-text.component.js +0 -80
- package/esm2015/foehn-input/foehn-input-textarea.component.js +0 -104
- package/esm2015/foehn-input/foehn-input.component.js +0 -364
- package/esm2015/foehn-input/foehn-input.module.js +0 -82
- package/esm2015/foehn-input-date/foehn-input-date.component.js +0 -94
- package/esm2015/foehn-input-time/foehn-input-time.component.js +0 -79
- package/esm2015/foehn-list/foehn-list.component.js +0 -135
- package/esm2015/foehn-list/foehn-list.module.js +0 -19
- package/esm2015/foehn-menu-prestation/abstract-list-item-detail-page.component.js +0 -122
- package/esm2015/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.js +0 -26
- package/esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.js +0 -75
- package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.js +0 -38
- package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.js +0 -54
- package/esm2015/foehn-menu-prestation/foehn-menu-prestation.module.js +0 -61
- package/esm2015/foehn-modal/foehn-modal.component.js +0 -100
- package/esm2015/foehn-modal/foehn-modal.module.js +0 -19
- package/esm2015/foehn-nav13/foehn-input-nav13.component.js +0 -98
- package/esm2015/foehn-nav13/foehn-input-nav13.module.js +0 -34
- package/esm2015/foehn-navigation/foehn-navigation.component.js +0 -98
- package/esm2015/foehn-navigation/foehn-navigation.module.js +0 -34
- package/esm2015/foehn-navigation/foehn-navigation.service.js +0 -297
- package/esm2015/foehn-notfound/foehn-notfound.module.js +0 -20
- package/esm2015/foehn-page/foehn-page-modal.component.js +0 -55
- package/esm2015/foehn-page/foehn-page.component.js +0 -214
- package/esm2015/foehn-page/foehn-page.module.js +0 -76
- package/esm2015/foehn-recap-section/foehn-recap-section.component.js +0 -88
- package/esm2015/foehn-recap-section/foehn-recap-section.module.js +0 -20
- package/esm2015/foehn-upload/abstract-foehn-uploader.component.js +0 -192
- package/esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.js +0 -62
- package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.js +0 -168
- package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.js +0 -38
- package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.js +0 -217
- package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.js +0 -38
- package/esm2015/foehn-upload/foehn-multi-upload/multi-upload.service.js +0 -76
- package/esm2015/foehn-upload/foehn-multi-upload/pending-upload.service.js +0 -157
- package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +0 -164
- package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.js +0 -42
- package/esm2015/foehn-upload/uploader.helper.js +0 -322
- package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.component.js +0 -88
- package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.module.js +0 -19
- package/esm2015/foehn-validation-alerts/foehn-validation-alerts.component.js +0 -32
- package/esm2015/gesdem/gesdem-event.service.js +0 -38
- package/esm2015/gesdem/gesdem-handler.service.js +0 -151
- package/esm2015/gesdem/gesdem-loader.guard.js +0 -40
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.js +0 -103
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.js +0 -133
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery.module.js +0 -52
- package/esm2015/gesdem-action-recovery/gesdem-action-recovery.service.js +0 -82
- package/esm2015/gesdem-confirmation/gesdem-confirmation.component.js +0 -194
- package/esm2015/gesdem-confirmation/gesdem-confirmation.module.js +0 -34
- package/esm2015/gesdem-error/gesdem-error.component.js +0 -70
- package/esm2015/gesdem-error/gesdem-error.module.js +0 -34
- package/esm2015/helpers/object.helper.js +0 -88
- package/esm2015/index.js +0 -224
- package/esm2015/sdk-appinfo/application-info.js +0 -14
- package/esm2015/sdk-appinfo/application-info.service.js +0 -111
- package/esm2015/sdk-date/date.helper.js +0 -90
- package/esm2015/sdk-dictionary/default-dictionary.js +0 -80
- package/esm2015/sdk-dictionary/sdk-dictionary.service.js +0 -96
- package/esm2015/sdk-epayment/model/EPaymentRequest.js +0 -3
- package/esm2015/sdk-epayment/sdk-epayment.component.js +0 -113
- package/esm2015/sdk-epayment/sdk-epayment.module.js +0 -21
- package/esm2015/sdk-epayment/sdk-epayment.service.js +0 -46
- package/esm2015/sdk-recaptcha/recaptcha.service.js +0 -162
- package/esm2015/sdk-recaptcha/sdk-recaptcha.component.js +0 -72
- package/esm2015/sdk-recaptcha/sdk-recaptcha.module.js +0 -19
- package/esm2015/sdk-redirect/iam-expired-interceptor.service.js +0 -48
- package/esm2015/sdk-redirect/redirect.component.js +0 -47
- package/esm2015/sdk-redirect/sdk-redirect.module.js +0 -19
- package/esm2015/sdk-session-info/session-info.service.js +0 -44
- package/esm2015/sdk-support-alert/support-alert-container.component.js +0 -53
- package/esm2015/sdk-support-alert/support-alert.component.js +0 -38
- package/esm2015/sdk-support-alert/support-alert.module.js +0 -21
- package/esm2015/sdk-support-alert/support-alert.service.js +0 -113
- package/esm2015/supported-browser.js +0 -2
- package/esm2015/validation/validation-handler.service.js +0 -44
- package/fesm2015/dsivd-prestations-ng.js +0 -11618
- package/fesm2015/dsivd-prestations-ng.js.map +0 -1
- package/sdk-epayment/model/EPaymentRequest.d.ts +0 -5
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, of } from 'rxjs';
|
|
3
|
+
import { debounceTime, distinctUntilChanged, first, map, shareReplay, switchMap } from 'rxjs/operators';
|
|
4
|
+
import { FoehnInputComponent } from '../foehn-input/foehn-input.component';
|
|
5
|
+
import { FoehnInputForeignLocalityComponent } from './foehn-input-foreign-locality.component';
|
|
6
|
+
import { FoehnInputForeignStreetComponent } from './foehn-input-foreign-street.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "../sdk-dictionary/sdk-dictionary.service";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "../foehn-autocomplete/foehn-autocomplete.component";
|
|
12
|
+
import * as i5 from "../foehn-input/foehn-input-text.component";
|
|
13
|
+
import * as i6 from "../foehn-validation-alerts/foehn-validation-alerts.component";
|
|
14
|
+
import * as i7 from "./foehn-input-foreign-locality.component";
|
|
15
|
+
import * as i8 from "./foehn-input-foreign-street.component";
|
|
16
|
+
import * as i9 from "../sdk-dictionary/sdk-dictionary.pipe";
|
|
17
|
+
// eslint-disable max-classes-per-file
|
|
18
|
+
export const SWISS_ISO_ID = 'CH';
|
|
19
|
+
export class StreetNumber {
|
|
20
|
+
}
|
|
21
|
+
const isDefined = (value) => value === true || value === false;
|
|
22
|
+
export class FoehnInputAddressComponent extends FoehnInputComponent {
|
|
23
|
+
constructor(httpClient, ngZone, dictionaryService) {
|
|
24
|
+
super();
|
|
25
|
+
this.httpClient = httpClient;
|
|
26
|
+
this.ngZone = ngZone;
|
|
27
|
+
this.dictionaryService = dictionaryService;
|
|
28
|
+
this.countriesUrl = 'api/refinf/countries';
|
|
29
|
+
this.isOnlySwiss = true;
|
|
30
|
+
this.showPostOfficeBoxText = false;
|
|
31
|
+
this.showAdressLines = true;
|
|
32
|
+
this.showAdressLine1 = true;
|
|
33
|
+
this.showAdressLine2 = true;
|
|
34
|
+
this.countryRequired = true;
|
|
35
|
+
this.swissNpaLocalityRequired = true;
|
|
36
|
+
this.streetNumberRequired = false;
|
|
37
|
+
this.foreignZipCodeRequired = true;
|
|
38
|
+
this.foreignLocalityRequired = true;
|
|
39
|
+
this.foreignStreetNumberRequired = false;
|
|
40
|
+
this.addressLine1Required = false;
|
|
41
|
+
this.addressLine2Required = false;
|
|
42
|
+
this.withCompanyLocalities = false;
|
|
43
|
+
this.streetCustomErrors = {};
|
|
44
|
+
this.iso2IdSubject = new BehaviorSubject(null);
|
|
45
|
+
this.zipCodeIdSubject = new BehaviorSubject(null);
|
|
46
|
+
this.estrIdSubject = new BehaviorSubject(null);
|
|
47
|
+
this.identity = (n) => n;
|
|
48
|
+
this.countryIdentity = (country) => country.iso2Id;
|
|
49
|
+
this.localityIdentity = (loc) => loc.postalLocalityHistoryId;
|
|
50
|
+
this.streetIdentity = (street) => street.estrid;
|
|
51
|
+
this.streetGenerator = (longName) => ({
|
|
52
|
+
estrid: null,
|
|
53
|
+
longName
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
super.ngOnInit();
|
|
58
|
+
if (!this.showPostOfficeBoxText) {
|
|
59
|
+
this.streetCustomErrors.AtLeastOneNotNull = this.dictionaryService.getKeySync('errors.NotNull');
|
|
60
|
+
}
|
|
61
|
+
this.countries = this.getCountries();
|
|
62
|
+
this.localities = this.iso2IdSubject.pipe(distinctUntilChanged(),
|
|
63
|
+
// The list of localities, or an empty array as the default value.
|
|
64
|
+
switchMap(iso2Id => this.getLocalities(iso2Id)), shareReplay(1));
|
|
65
|
+
this.streets = combineLatest([
|
|
66
|
+
this.zipCodeIdSubject,
|
|
67
|
+
this.localities
|
|
68
|
+
]).pipe(
|
|
69
|
+
// The zipCodeId when locality changes or match locality (postalLocalityHistoryId) from model
|
|
70
|
+
map(([zipCodeId, localities]) => zipCodeId ||
|
|
71
|
+
this.extractLocalityZipCodeId(localities, this.locality)), debounceTime(0), distinctUntilChanged(),
|
|
72
|
+
// The list of streets or a default value to an empty array
|
|
73
|
+
switchMap(zipCodeId => this.getStreetsFor(zipCodeId)), shareReplay(1));
|
|
74
|
+
this.streetNumbers = combineLatest([
|
|
75
|
+
this.estrIdSubject,
|
|
76
|
+
this.streets
|
|
77
|
+
]).pipe(
|
|
78
|
+
// The estrid when street changes or match street (longName) from model
|
|
79
|
+
map(([estrid, streets]) => estrid || this.extractStreetEstrid(streets, this.street)), debounceTime(0), distinctUntilChanged(),
|
|
80
|
+
// The list of streets or a default value to an empty array
|
|
81
|
+
switchMap(estrid => this.getStreetNumberFor(estrid)),
|
|
82
|
+
// Some street might not have an name, RefInf sometimes returns weird data.
|
|
83
|
+
map(values => values.filter(streetNumber => !!streetNumber.name)), map(values => {
|
|
84
|
+
const collator = new Intl.Collator(undefined, {
|
|
85
|
+
numeric: true,
|
|
86
|
+
sensitivity: 'base'
|
|
87
|
+
});
|
|
88
|
+
return values.sort((a, b) => collator.compare(a.name, b.name));
|
|
89
|
+
}), shareReplay(1));
|
|
90
|
+
// eslint-disable-next-line rxjs-angular/prefer-async-pipe
|
|
91
|
+
this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
this.clearAutocompletesWhenCountryIsUnappropriatedToComponentConfiguration();
|
|
94
|
+
this.setDefaultCountry();
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
updateAddress() {
|
|
99
|
+
const validValue = this.getValidValue();
|
|
100
|
+
if (typeof validValue !== 'undefined') {
|
|
101
|
+
this.updateNgModel(validValue);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
handleUserInput() {
|
|
105
|
+
const validValue = this.getValidValue();
|
|
106
|
+
if (typeof validValue !== 'undefined') {
|
|
107
|
+
this.handleChange(validValue);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
onModelChange(value) {
|
|
111
|
+
if (value) {
|
|
112
|
+
this.country = value.country;
|
|
113
|
+
this.locality = value.locality;
|
|
114
|
+
this.street = value.street;
|
|
115
|
+
this.houseNumber = value.houseNumber;
|
|
116
|
+
this.postOfficeBoxText = value.postOfficeBoxText;
|
|
117
|
+
this.addressLine1 = value.addressLine1;
|
|
118
|
+
this.addressLine2 = value.addressLine2;
|
|
119
|
+
}
|
|
120
|
+
else if (!value) {
|
|
121
|
+
this.locality = null;
|
|
122
|
+
this.street = null;
|
|
123
|
+
this.houseNumber = null;
|
|
124
|
+
this.postOfficeBoxText = null;
|
|
125
|
+
this.addressLine1 = null;
|
|
126
|
+
this.addressLine2 = null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
isSwiss() {
|
|
130
|
+
return !!(this.isOnlySwiss ||
|
|
131
|
+
(this.country && this.country.iso2Id === SWISS_ISO_ID));
|
|
132
|
+
}
|
|
133
|
+
userInputCountry() {
|
|
134
|
+
this.zipCodeIdSubject.next(null);
|
|
135
|
+
this.estrIdSubject.next(null);
|
|
136
|
+
this.locality = null;
|
|
137
|
+
this.street = null;
|
|
138
|
+
this.houseNumber = null;
|
|
139
|
+
this.postOfficeBoxText = null;
|
|
140
|
+
this.addressLine1 = null;
|
|
141
|
+
this.addressLine2 = null;
|
|
142
|
+
this.updateAddress();
|
|
143
|
+
this.handleUserInput();
|
|
144
|
+
}
|
|
145
|
+
userInputLocality(locality) {
|
|
146
|
+
if (!locality) {
|
|
147
|
+
this.zipCodeIdSubject.next(null);
|
|
148
|
+
}
|
|
149
|
+
// Always reset suggestion list of houseNumber when locality changes
|
|
150
|
+
this.estrIdSubject.next(null);
|
|
151
|
+
this.street = null;
|
|
152
|
+
this.houseNumber = null;
|
|
153
|
+
this.updateAddress();
|
|
154
|
+
this.handleUserInput();
|
|
155
|
+
}
|
|
156
|
+
userInputStreet(street) {
|
|
157
|
+
if (!street) {
|
|
158
|
+
this.estrIdSubject.next(null);
|
|
159
|
+
}
|
|
160
|
+
this.houseNumber = null;
|
|
161
|
+
this.handleUserInput();
|
|
162
|
+
}
|
|
163
|
+
countryUpdated(country) {
|
|
164
|
+
// No double-binding on country in view to ensure we update properly model
|
|
165
|
+
this.country = country;
|
|
166
|
+
this.updateAddress();
|
|
167
|
+
if (!country) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const { iso2Id } = country;
|
|
171
|
+
this.iso2IdSubject.next(iso2Id);
|
|
172
|
+
}
|
|
173
|
+
getLocalityDisplayedName(locality) {
|
|
174
|
+
if (!locality) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
return `${locality.zipCode} ${locality.longName}`;
|
|
178
|
+
}
|
|
179
|
+
localityUpdated(locality) {
|
|
180
|
+
// No double-binding on locality in view to ensure we update properly model
|
|
181
|
+
this.locality = locality;
|
|
182
|
+
this.updateAddress();
|
|
183
|
+
if (!locality) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const { zipCodeId } = locality;
|
|
187
|
+
this.zipCodeIdSubject.next(zipCodeId);
|
|
188
|
+
}
|
|
189
|
+
streetUpdated(street) {
|
|
190
|
+
// No double-binding on street in view to ensure we update properly model
|
|
191
|
+
this.street = street;
|
|
192
|
+
this.updateAddress();
|
|
193
|
+
if (!street) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const { estrid } = street;
|
|
197
|
+
this.estrIdSubject.next(estrid);
|
|
198
|
+
}
|
|
199
|
+
isStreetRequired() {
|
|
200
|
+
if (isDefined(this.streetRequired)) {
|
|
201
|
+
// respect overriden value
|
|
202
|
+
return this.streetRequired;
|
|
203
|
+
}
|
|
204
|
+
if (!this.showPostOfficeBoxText) {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
return !this.postOfficeBoxText || !!this.street;
|
|
208
|
+
}
|
|
209
|
+
isForeignStreetRequired() {
|
|
210
|
+
if (isDefined(this.foreignStreetRequired)) {
|
|
211
|
+
// respect overriden value
|
|
212
|
+
return this.foreignStreetRequired;
|
|
213
|
+
}
|
|
214
|
+
if (!this.showPostOfficeBoxText) {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
return !this.postOfficeBoxText || !!this.street;
|
|
218
|
+
}
|
|
219
|
+
isPostOfficeBoxTextRequired() {
|
|
220
|
+
if (isDefined(this.postOfficeBoxTextRequired)) {
|
|
221
|
+
// respect overriden value
|
|
222
|
+
return this.postOfficeBoxTextRequired;
|
|
223
|
+
}
|
|
224
|
+
return !this.street || !!this.postOfficeBoxText;
|
|
225
|
+
}
|
|
226
|
+
getCountries() {
|
|
227
|
+
return this.httpClient.get(this.countriesUrl);
|
|
228
|
+
}
|
|
229
|
+
getLocalities(iso2Id) {
|
|
230
|
+
if (iso2Id !== SWISS_ISO_ID) {
|
|
231
|
+
return of([]);
|
|
232
|
+
}
|
|
233
|
+
const queryParams = !!this.withCompanyLocalities
|
|
234
|
+
? '?withCompanyLocalities=true'
|
|
235
|
+
: '';
|
|
236
|
+
if (!!this.specifiedCanton) {
|
|
237
|
+
return this.httpClient.get(`api/refinf/locality/${this.specifiedCanton}${queryParams}`);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
return this.httpClient.get(`api/refinf/locality/all${queryParams}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
getStreetNumberFor(estrid) {
|
|
244
|
+
if (!estrid) {
|
|
245
|
+
return of([]);
|
|
246
|
+
}
|
|
247
|
+
const url = `api/refinf/addresses/${estrid}`;
|
|
248
|
+
return this.httpClient.get(url);
|
|
249
|
+
}
|
|
250
|
+
getStreetsFor(zipCodeId) {
|
|
251
|
+
if (!zipCodeId) {
|
|
252
|
+
return of([]);
|
|
253
|
+
}
|
|
254
|
+
const url = `api/refinf/streets/${zipCodeId}`;
|
|
255
|
+
return this.httpClient.get(url);
|
|
256
|
+
}
|
|
257
|
+
clearAutocompletesWhenCountryIsUnappropriatedToComponentConfiguration() {
|
|
258
|
+
if (this.isModelEmpty()) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (this.isOnlySwiss &&
|
|
262
|
+
this.country &&
|
|
263
|
+
this.country.iso2Id !== SWISS_ISO_ID) {
|
|
264
|
+
// Do not remove this warning. Needed for debugging at all time.
|
|
265
|
+
console.warn(
|
|
266
|
+
// eslint-disable-next-line max-len
|
|
267
|
+
`Country address was '${this.country.iso2Id}'. Only swiss is asked in component 'foehn-input-address' configuration. Address model resetted.`);
|
|
268
|
+
this.clearAutocompletes();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
setDefaultCountry() {
|
|
272
|
+
if (this.isOnlySwiss || !this.country || !this.country.iso2Id) {
|
|
273
|
+
this.country = {
|
|
274
|
+
iso2Id: SWISS_ISO_ID,
|
|
275
|
+
shortNameFr: 'Suisse'
|
|
276
|
+
};
|
|
277
|
+
this.iso2IdSubject.next(SWISS_ISO_ID);
|
|
278
|
+
this.updateAddress();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
clearAutocompletes() {
|
|
282
|
+
this.country = null;
|
|
283
|
+
this.street = null;
|
|
284
|
+
this.locality = null;
|
|
285
|
+
this.houseNumber = null;
|
|
286
|
+
// No updateAddress() here because done in setDefaultCountry()
|
|
287
|
+
}
|
|
288
|
+
extractLocalityZipCodeId(localities, localityToMatch) {
|
|
289
|
+
if (localityToMatch && localityToMatch.postalLocalityHistoryId) {
|
|
290
|
+
const matched = localities.find((locality) => locality.postalLocalityHistoryId ===
|
|
291
|
+
localityToMatch.postalLocalityHistoryId);
|
|
292
|
+
if (matched) {
|
|
293
|
+
return matched.zipCodeId;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
extractStreetEstrid(streets, streetToMatch) {
|
|
299
|
+
if (streetToMatch && streetToMatch.longName) {
|
|
300
|
+
const matched = streets.find((street) => street.longName === streetToMatch.longName);
|
|
301
|
+
if (matched) {
|
|
302
|
+
return matched.estrid;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return null;
|
|
306
|
+
}
|
|
307
|
+
getValidValue() {
|
|
308
|
+
if (this.isModelEmpty()) {
|
|
309
|
+
if (this.model_ !== undefined) {
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
country: this.country,
|
|
316
|
+
locality: this.getValidLocality(this.locality),
|
|
317
|
+
street: this.street,
|
|
318
|
+
houseNumber: this.houseNumber,
|
|
319
|
+
postOfficeBoxText: this.postOfficeBoxText,
|
|
320
|
+
addressLine1: this.addressLine1,
|
|
321
|
+
addressLine2: this.addressLine2
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
getValidLocality(value) {
|
|
325
|
+
// PRESTAKIT-352: Need a fake 'postalLocalityHistoryId' for individual errors on 'zipCode' and 'longName'
|
|
326
|
+
if (!this.isSwiss() && !value) {
|
|
327
|
+
return { postalLocalityHistoryId: '-1' };
|
|
328
|
+
}
|
|
329
|
+
return value;
|
|
330
|
+
}
|
|
331
|
+
isModelEmpty() {
|
|
332
|
+
return (this.isEmpty(this.country) &&
|
|
333
|
+
this.isEmpty(this.locality) &&
|
|
334
|
+
this.isEmpty(this.street) &&
|
|
335
|
+
this.isEmpty(this.houseNumber) &&
|
|
336
|
+
this.isEmpty(this.postOfficeBoxText) &&
|
|
337
|
+
this.isEmpty(this.addressLine1) &&
|
|
338
|
+
this.isEmpty(this.addressLine2));
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
FoehnInputAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnInputAddressComponent, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }, { token: i2.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
342
|
+
FoehnInputAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: FoehnInputAddressComponent, selector: "foehn-input-address", inputs: { countriesUrl: "countriesUrl", isOnlySwiss: "isOnlySwiss", showPostOfficeBoxText: "showPostOfficeBoxText", showAdressLines: "showAdressLines", showAdressLine1: "showAdressLine1", showAdressLine2: "showAdressLine2", specifiedCanton: "specifiedCanton", countryRequired: "countryRequired", swissNpaLocalityRequired: "swissNpaLocalityRequired", streetRequired: "streetRequired", streetNumberRequired: "streetNumberRequired", foreignZipCodeRequired: "foreignZipCodeRequired", foreignLocalityRequired: "foreignLocalityRequired", foreignStreetRequired: "foreignStreetRequired", foreignStreetNumberRequired: "foreignStreetNumberRequired", postOfficeBoxTextRequired: "postOfficeBoxTextRequired", addressLine1Required: "addressLine1Required", addressLine2Required: "addressLine2Required", withCompanyLocalities: "withCompanyLocalities" }, providers: [
|
|
343
|
+
{
|
|
344
|
+
provide: FoehnInputComponent,
|
|
345
|
+
useExisting: forwardRef(() => FoehnInputAddressComponent),
|
|
346
|
+
multi: true
|
|
347
|
+
}
|
|
348
|
+
], viewQueries: [{ propertyName: "foreignLocalityComponent", first: true, predicate: FoehnInputForeignLocalityComponent, descendants: true }, { propertyName: "foreignStreetComponent", first: true, predicate: FoehnInputForeignStreetComponent, descendants: true }, { propertyName: "foreignHouseNumber", first: true, predicate: ["foreignHouseNumber"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n [attr.id]=\"buildId() + 'Container'\"\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [tabIndex]=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-autocomplete\n *ngIf=\"!isOnlySwiss\"\n [label]=\"'foehn-input-address.country.label' | fromDictionary\"\n [elements]=\"countries | async\"\n elementLabel=\"shortNameFr\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"countryIdentity\"\n (modelChange)=\"countryUpdated($event)\"\n (userInput)=\"userInputCountry()\"\n [model]=\"country\"\n [name]=\"name + '.country'\"\n [required]=\"countryRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <ng-container *ngIf=\"isSwiss()\">\n <foehn-autocomplete\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [elements]=\"localities | async\"\n [elementLabel]=\"getLocalityDisplayedName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"localityIdentity\"\n (modelChange)=\"localityUpdated($event)\"\n (userInput)=\"userInputLocality($event)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [allowCustomValue]=\"disabled\"\n [required]=\"swissNpaLocalityRequired\"\n [disabled]=\"!country || disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [elements]=\"streets | async\"\n elementLabel=\"longName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"streetIdentity\"\n (modelChange)=\"streetUpdated($event)\"\n [model]=\"street\"\n [name]=\"name + '.street'\"\n [allowCustomValue]=\"true\"\n [customValueModelGenerator]=\"streetGenerator\"\n [required]=\"isStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n (userInput)=\"userInputStreet($event)\"\n [disabled]=\"!country || disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [elements]=\"streetNumbers | async\"\n elementLabel=\"name\"\n elementValue=\"name\"\n [(model)]=\"houseNumber\"\n [name]=\"name + '.houseNumber'\"\n [allowCustomValue]=\"true\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [disabled]=\"!country || disabled\"\n ></foehn-autocomplete>\n </ng-container>\n\n <ng-container *ngIf=\"!isSwiss()\">\n <!--\n Component <foehn-input-foreign-locality> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'locality' when NULL or on 'zipCode' and 'longName' model inside component when EMPTY\n - Hide label from component because we need label from children to be displayed (isLabelSrOnly: true)\n - required and disabled params are transmitted to children\n -->\n <foehn-input-foreign-locality\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [name]=\"name + '.locality'\"\n [(model)]=\"locality\"\n [zipCodeRequired]=\"foreignZipCodeRequired\"\n [localityRequired]=\"foreignLocalityRequired\"\n [isLabelSrOnly]=\"true\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-locality>\n <!--\n Component <foehn-input-foreign-street> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'street' when NULL or on 'longName' model inside component when EMPTY\n - required, helpText, isLabelSrOnly and disabled params are transmitted to children\n -->\n <foehn-input-foreign-street\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [name]=\"name + '.street'\"\n [(model)]=\"street\"\n [required]=\"isForeignStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-street>\n\n <foehn-input-text\n #foreignHouseNumber\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [name]=\"name + '.houseNumber'\"\n [(model)]=\"houseNumber\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"foreignStreetNumberRequired\"\n ></foehn-input-text>\n </ng-container>\n\n <foehn-input-text\n *ngIf=\"showPostOfficeBoxText\"\n [(model)]=\"postOfficeBoxText\"\n [helpText]=\"\n 'foehn-input-address.postOfficeBoxText.help-text'\n | fromDictionary\n \"\n [label]=\"\n 'foehn-input-address.postOfficeBoxText.label' | fromDictionary\n \"\n [name]=\"name + '.postOfficeBoxText'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"isPostOfficeBoxTextRequired()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine1\"\n [(model)]=\"addressLine1\"\n [label]=\"'foehn-input-address.addressLine1.label' | fromDictionary\"\n [name]=\"name + '.addressLine1'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine1Required\"\n [autocomplete]=\"'address-line2'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine2\"\n [(model)]=\"addressLine2\"\n [label]=\"'foehn-input-address.addressLine2.label' | fromDictionary\"\n [name]=\"name + '.addressLine2'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine2Required\"\n [autocomplete]=\"'address-line3'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "customValueModelGenerator", "itemHeightInSuggestionListInPx", "elementSuggestionLabel", "caseSensitiveSearch", "disabled"] }, { kind: "component", type: i5.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i6.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i7.FoehnInputForeignLocalityComponent, selector: "foehn-input-foreign-locality", inputs: ["localityRequired", "zipCodeRequired"] }, { kind: "component", type: i8.FoehnInputForeignStreetComponent, selector: "foehn-input-foreign-street" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.SdkDictionaryPipe, name: "fromDictionary" }] });
|
|
349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnInputAddressComponent, decorators: [{
|
|
350
|
+
type: Component,
|
|
351
|
+
args: [{ selector: 'foehn-input-address', providers: [
|
|
352
|
+
{
|
|
353
|
+
provide: FoehnInputComponent,
|
|
354
|
+
useExisting: forwardRef(() => FoehnInputAddressComponent),
|
|
355
|
+
multi: true
|
|
356
|
+
}
|
|
357
|
+
], template: "<div\n [attr.id]=\"buildId() + 'Container'\"\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [tabIndex]=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-autocomplete\n *ngIf=\"!isOnlySwiss\"\n [label]=\"'foehn-input-address.country.label' | fromDictionary\"\n [elements]=\"countries | async\"\n elementLabel=\"shortNameFr\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"countryIdentity\"\n (modelChange)=\"countryUpdated($event)\"\n (userInput)=\"userInputCountry()\"\n [model]=\"country\"\n [name]=\"name + '.country'\"\n [required]=\"countryRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <ng-container *ngIf=\"isSwiss()\">\n <foehn-autocomplete\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [elements]=\"localities | async\"\n [elementLabel]=\"getLocalityDisplayedName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"localityIdentity\"\n (modelChange)=\"localityUpdated($event)\"\n (userInput)=\"userInputLocality($event)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [allowCustomValue]=\"disabled\"\n [required]=\"swissNpaLocalityRequired\"\n [disabled]=\"!country || disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [elements]=\"streets | async\"\n elementLabel=\"longName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"streetIdentity\"\n (modelChange)=\"streetUpdated($event)\"\n [model]=\"street\"\n [name]=\"name + '.street'\"\n [allowCustomValue]=\"true\"\n [customValueModelGenerator]=\"streetGenerator\"\n [required]=\"isStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n (userInput)=\"userInputStreet($event)\"\n [disabled]=\"!country || disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [elements]=\"streetNumbers | async\"\n elementLabel=\"name\"\n elementValue=\"name\"\n [(model)]=\"houseNumber\"\n [name]=\"name + '.houseNumber'\"\n [allowCustomValue]=\"true\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [disabled]=\"!country || disabled\"\n ></foehn-autocomplete>\n </ng-container>\n\n <ng-container *ngIf=\"!isSwiss()\">\n <!--\n Component <foehn-input-foreign-locality> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'locality' when NULL or on 'zipCode' and 'longName' model inside component when EMPTY\n - Hide label from component because we need label from children to be displayed (isLabelSrOnly: true)\n - required and disabled params are transmitted to children\n -->\n <foehn-input-foreign-locality\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [name]=\"name + '.locality'\"\n [(model)]=\"locality\"\n [zipCodeRequired]=\"foreignZipCodeRequired\"\n [localityRequired]=\"foreignLocalityRequired\"\n [isLabelSrOnly]=\"true\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-locality>\n <!--\n Component <foehn-input-foreign-street> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'street' when NULL or on 'longName' model inside component when EMPTY\n - required, helpText, isLabelSrOnly and disabled params are transmitted to children\n -->\n <foehn-input-foreign-street\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [name]=\"name + '.street'\"\n [(model)]=\"street\"\n [required]=\"isForeignStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-street>\n\n <foehn-input-text\n #foreignHouseNumber\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [name]=\"name + '.houseNumber'\"\n [(model)]=\"houseNumber\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"foreignStreetNumberRequired\"\n ></foehn-input-text>\n </ng-container>\n\n <foehn-input-text\n *ngIf=\"showPostOfficeBoxText\"\n [(model)]=\"postOfficeBoxText\"\n [helpText]=\"\n 'foehn-input-address.postOfficeBoxText.help-text'\n | fromDictionary\n \"\n [label]=\"\n 'foehn-input-address.postOfficeBoxText.label' | fromDictionary\n \"\n [name]=\"name + '.postOfficeBoxText'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"isPostOfficeBoxTextRequired()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine1\"\n [(model)]=\"addressLine1\"\n [label]=\"'foehn-input-address.addressLine1.label' | fromDictionary\"\n [name]=\"name + '.addressLine1'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine1Required\"\n [autocomplete]=\"'address-line2'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine2\"\n [(model)]=\"addressLine2\"\n [label]=\"'foehn-input-address.addressLine2.label' | fromDictionary\"\n [name]=\"name + '.addressLine2'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine2Required\"\n [autocomplete]=\"'address-line3'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </fieldset>\n</div>\n" }]
|
|
358
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.NgZone }, { type: i2.SdkDictionaryService }]; }, propDecorators: { foreignLocalityComponent: [{
|
|
359
|
+
type: ViewChild,
|
|
360
|
+
args: [FoehnInputForeignLocalityComponent, { static: false }]
|
|
361
|
+
}], foreignStreetComponent: [{
|
|
362
|
+
type: ViewChild,
|
|
363
|
+
args: [FoehnInputForeignStreetComponent, { static: false }]
|
|
364
|
+
}], foreignHouseNumber: [{
|
|
365
|
+
type: ViewChild,
|
|
366
|
+
args: ['foreignHouseNumber', { static: false }]
|
|
367
|
+
}], countriesUrl: [{
|
|
368
|
+
type: Input
|
|
369
|
+
}], isOnlySwiss: [{
|
|
370
|
+
type: Input
|
|
371
|
+
}], showPostOfficeBoxText: [{
|
|
372
|
+
type: Input
|
|
373
|
+
}], showAdressLines: [{
|
|
374
|
+
type: Input
|
|
375
|
+
}], showAdressLine1: [{
|
|
376
|
+
type: Input
|
|
377
|
+
}], showAdressLine2: [{
|
|
378
|
+
type: Input
|
|
379
|
+
}], specifiedCanton: [{
|
|
380
|
+
type: Input
|
|
381
|
+
}], countryRequired: [{
|
|
382
|
+
type: Input
|
|
383
|
+
}], swissNpaLocalityRequired: [{
|
|
384
|
+
type: Input
|
|
385
|
+
}], streetRequired: [{
|
|
386
|
+
type: Input
|
|
387
|
+
}], streetNumberRequired: [{
|
|
388
|
+
type: Input
|
|
389
|
+
}], foreignZipCodeRequired: [{
|
|
390
|
+
type: Input
|
|
391
|
+
}], foreignLocalityRequired: [{
|
|
392
|
+
type: Input
|
|
393
|
+
}], foreignStreetRequired: [{
|
|
394
|
+
type: Input
|
|
395
|
+
}], foreignStreetNumberRequired: [{
|
|
396
|
+
type: Input
|
|
397
|
+
}], postOfficeBoxTextRequired: [{
|
|
398
|
+
type: Input
|
|
399
|
+
}], addressLine1Required: [{
|
|
400
|
+
type: Input
|
|
401
|
+
}], addressLine2Required: [{
|
|
402
|
+
type: Input
|
|
403
|
+
}], withCompanyLocalities: [{
|
|
404
|
+
type: Input
|
|
405
|
+
}] } });
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1pbnB1dC1hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWlucHV0LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUNILFlBQVksRUFDWixvQkFBb0IsRUFDcEIsS0FBSyxFQUNMLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJM0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBRTFGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRWpDLE1BQU0sT0FBTyxZQUFZO0NBRXhCO0FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUMxQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUM7QUFhdEMsTUFBTSxPQUFPLDBCQUNULFNBQVEsbUJBQTRCO0lBdUZwQyxZQUNZLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZCxpQkFBdUM7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QUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO3lKQU1ELHdCQUF3QjtzQkFEdkIsU0FBUzt1QkFBQyxrQ0FBa0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSWhFLHNCQUFzQjtzQkFEckIsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTlELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSWxELFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBSU4sMkJBQTJCO3NCQUQxQixLQUFLO2dCQUlOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlyc3QsXG4gICAgbWFwLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN3aXRjaE1hcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkcmVzcywgQ291bnRyeSwgTG9jYWxpdHksIFN0cmVldCB9IGZyb20gJy4vYWRkcmVzcy50eXBlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRGb3JlaWduTG9jYWxpdHlDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHkuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC1mb3JlaWduLXN0cmVldC5jb21wb25lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZSBtYXgtY2xhc3Nlcy1wZXItZmlsZVxuZXhwb3J0IGNvbnN0IFNXSVNTX0lTT19JRCA9ICdDSCc7XG5cbmV4cG9ydCBjbGFzcyBTdHJlZXROdW1iZXIge1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuY29uc3QgaXNEZWZpbmVkID0gKHZhbHVlOiBib29sZWFuKTogYm9vbGVhbiA9PlxuICAgIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1hZGRyZXNzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0QWRkcmVzc0NvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0QWRkcmVzc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxBZGRyZXNzPlxuICAgIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKEZvZWhuSW5wdXRGb3JlaWduTG9jYWxpdHlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudDogRm9laG5JbnB1dEZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGZvcmVpZ25TdHJlZXRDb21wb25lbnQ6IEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9yZWlnbkhvdXNlTnVtYmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZm9yZWlnbkhvdXNlTnVtYmVyOiBGb2VobklucHV0VGV4dENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY291bnRyaWVzVXJsID0gJ2FwaS9yZWZpbmYvY291bnRyaWVzJztcblxuICAgIEBJbnB1dCgpXG4gICAgaXNPbmx5U3dpc3MgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93UG9zdE9mZmljZUJveFRleHQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmVzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmUxID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmUyID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3BlY2lmaWVkQ2FudG9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNvdW50cnlSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN3aXNzTnBhTG9jYWxpdHlSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0cmVldFJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBzdHJlZXROdW1iZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBmb3JlaWduWmlwQ29kZVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnbkxvY2FsaXR5UmVxdWlyZWQgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBmb3JlaWduU3RyZWV0UmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGZvcmVpZ25TdHJlZXROdW1iZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwb3N0T2ZmaWNlQm94VGV4dFJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBhZGRyZXNzTGluZTFSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBhZGRyZXNzTGluZTJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB3aXRoQ29tcGFueUxvY2FsaXRpZXMgPSBmYWxzZTtcblxuICAgIGNvdW50cnk6IENvdW50cnk7XG4gICAgbG9jYWxpdHk6IExvY2FsaXR5O1xuICAgIHN0cmVldDogU3RyZWV0O1xuICAgIGhvdXNlTnVtYmVyOiBzdHJpbmc7XG4gICAgcG9zdE9mZmljZUJveFRleHQ6IHN0cmluZztcbiAgICBhZGRyZXNzTGluZTE6IHN0cmluZztcbiAgICBhZGRyZXNzTGluZTI6IHN0cmluZztcblxuICAgIGNvdW50cmllczogT2JzZXJ2YWJsZTxDb3VudHJ5W10+O1xuICAgIGxvY2FsaXRpZXM6IE9ic2VydmFibGU8TG9jYWxpdHlbXT47XG4gICAgc3RyZWV0czogT2JzZXJ2YWJsZTxTdHJlZXRbXT47XG4gICAgc3RyZWV0TnVtYmVyczogT2JzZXJ2YWJsZTxTdHJlZXROdW1iZXJbXT47XG5cbiAgICBzdHJlZXRDdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIHByaXZhdGUgaXNvMklkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcbiAgICBwcml2YXRlIHppcENvZGVJZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gICAgcHJpdmF0ZSBlc3RySWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpZGVudGl0eSA9IDxUPihuOiBUKTogVCA9PiBuO1xuICAgIGNvdW50cnlJZGVudGl0eSA9IChjb3VudHJ5OiBDb3VudHJ5KTogc3RyaW5nID0+IGNvdW50cnkuaXNvMklkO1xuICAgIGxvY2FsaXR5SWRlbnRpdHkgPSAobG9jOiBMb2NhbGl0eSk6IHN0cmluZyA9PiBsb2MucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQ7XG4gICAgc3RyZWV0SWRlbnRpdHkgPSAoc3RyZWV0OiBTdHJlZXQpOiBzdHJpbmcgPT4gc3RyZWV0LmVzdHJpZDtcbiAgICBzdHJlZXRHZW5lcmF0b3IgPSAobG9uZ05hbWU6IHN0cmluZyk6IFN0cmVldCA9PiAoe1xuICAgICAgICBlc3RyaWQ6IG51bGwsXG4gICAgICAgIGxvbmdOYW1lXG4gICAgfSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2hvd1Bvc3RPZmZpY2VCb3hUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLnN0cmVldEN1c3RvbUVycm9ycy5BdExlYXN0T25lTm90TnVsbCA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAnZXJyb3JzLk5vdE51bGwnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmdldENvdW50cmllcygpO1xuXG4gICAgICAgIHRoaXMubG9jYWxpdGllcyA9IHRoaXMuaXNvMklkU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIC8vIFRoZSBsaXN0IG9mIGxvY2FsaXRpZXMsIG9yIGFuIGVtcHR5IGFycmF5IGFzIHRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAgICAgICAgc3dpdGNoTWFwKGlzbzJJZCA9PiB0aGlzLmdldExvY2FsaXRpZXMoaXNvMklkKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RyZWV0cyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0LFxuICAgICAgICAgICAgdGhpcy5sb2NhbGl0aWVzXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAvLyBUaGUgemlwQ29kZUlkIHdoZW4gbG9jYWxpdHkgY2hhbmdlcyBvciBtYXRjaCBsb2NhbGl0eSAocG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQpIGZyb20gbW9kZWxcbiAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAoW3ppcENvZGVJZCwgbG9jYWxpdGllc10pID0+XG4gICAgICAgICAgICAgICAgICAgIHppcENvZGVJZCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3RMb2NhbGl0eVppcENvZGVJZChsb2NhbGl0aWVzLCB0aGlzLmxvY2FsaXR5KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAvLyBUaGUgbGlzdCBvZiBzdHJlZXRzIG9yIGEgZGVmYXVsdCB2YWx1ZSB0byBhbiBlbXB0eSBhcnJheVxuICAgICAgICAgICAgc3dpdGNoTWFwKHppcENvZGVJZCA9PiB0aGlzLmdldFN0cmVldHNGb3IoemlwQ29kZUlkKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RyZWV0TnVtYmVycyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5lc3RySWRTdWJqZWN0LFxuICAgICAgICAgICAgdGhpcy5zdHJlZXRzXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAvLyBUaGUgZXN0cmlkIHdoZW4gc3RyZWV0IGNoYW5nZXMgb3IgbWF0Y2ggc3RyZWV0IChsb25nTmFtZSkgZnJvbSBtb2RlbFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChbZXN0cmlkLCBzdHJlZXRzXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXN0cmlkIHx8IHRoaXMuZXh0cmFjdFN0cmVldEVzdHJpZChzdHJlZXRzLCB0aGlzLnN0cmVldClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgLy8gVGhlIGxpc3Qgb2Ygc3RyZWV0cyBvciBhIGRlZmF1bHQgdmFsdWUgdG8gYW4gZW1wdHkgYXJyYXlcbiAgICAgICAgICAgIHN3aXRjaE1hcChlc3RyaWQgPT4gdGhpcy5nZXRTdHJlZXROdW1iZXJGb3IoZXN0cmlkKSksXG4gICAgICAgICAgICAvLyBTb21lIHN0cmVldCBtaWdodCBub3QgaGF2ZSBhbiBuYW1lLCBSZWZJbmYgc29tZXRpbWVzIHJldHVybnMgd2VpcmQgZGF0YS5cbiAgICAgICAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLmZpbHRlcihzdHJlZXROdW1iZXIgPT4gISFzdHJlZXROdW1iZXIubmFtZSkpLFxuICAgICAgICAgICAgbWFwKHZhbHVlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sbGF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcih1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtZXJpYzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2Vuc2l0aXZpdHk6ICdiYXNlJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuc29ydCgoYSwgYikgPT4gY29sbGF0b3IuY29tcGFyZShhLm5hbWUsIGIubmFtZSkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQXV0b2NvbXBsZXRlc1doZW5Db3VudHJ5SXNVbmFwcHJvcHJpYXRlZFRvQ29tcG9uZW50Q29uZmlndXJhdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENvdW50cnkoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBZGRyZXNzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50cnkgPSB2YWx1ZS5jb3VudHJ5O1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IHZhbHVlLmxvY2FsaXR5O1xuICAgICAgICAgICAgdGhpcy5zdHJlZXQgPSB2YWx1ZS5zdHJlZXQ7XG4gICAgICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gdmFsdWUuaG91c2VOdW1iZXI7XG4gICAgICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gdmFsdWUucG9zdE9mZmljZUJveFRleHQ7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NMaW5lMSA9IHZhbHVlLmFkZHJlc3NMaW5lMTtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUyID0gdmFsdWUuYWRkcmVzc0xpbmUyO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnN0cmVldCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucG9zdE9mZmljZUJveFRleHQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTEgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTd2lzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgICAgdGhpcy5pc09ubHlTd2lzcyB8fFxuICAgICAgICAgICAgKHRoaXMuY291bnRyeSAmJiB0aGlzLmNvdW50cnkuaXNvMklkID09PSBTV0lTU19JU09fSUQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0Q291bnRyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuZXN0cklkU3ViamVjdC5uZXh0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubG9jYWxpdHkgPSBudWxsO1xuICAgICAgICB0aGlzLnN0cmVldCA9IG51bGw7XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZGRyZXNzTGluZTEgPSBudWxsO1xuICAgICAgICB0aGlzLmFkZHJlc3NMaW5lMiA9IG51bGw7XG5cbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0TG9jYWxpdHkobG9jYWxpdHk6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFsb2NhbGl0eSkge1xuICAgICAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx3YXlzIHJlc2V0IHN1Z2dlc3Rpb24gbGlzdCBvZiBob3VzZU51bWJlciB3aGVuIGxvY2FsaXR5IGNoYW5nZXNcbiAgICAgICAgdGhpcy5lc3RySWRTdWJqZWN0Lm5leHQobnVsbCk7XG5cbiAgICAgICAgdGhpcy5zdHJlZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcblxuICAgICAgICB0aGlzLnVwZGF0ZUFkZHJlc3MoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICB9XG5cbiAgICB1c2VySW5wdXRTdHJlZXQoc3RyZWV0OiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGlmICghc3RyZWV0KSB7XG4gICAgICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICB9XG5cbiAgICBjb3VudHJ5VXBkYXRlZChjb3VudHJ5OiBDb3VudHJ5KTogdm9pZCB7XG4gICAgICAgIC8vIE5vIGRvdWJsZS1iaW5kaW5nIG9uIGNvdW50cnkgaW4gdmlldyB0byBlbnN1cmUgd2UgdXBkYXRlIHByb3Blcmx5IG1vZGVsXG4gICAgICAgIHRoaXMuY291bnRyeSA9IGNvdW50cnk7XG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuXG4gICAgICAgIGlmICghY291bnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBpc28ySWQgfSA9IGNvdW50cnk7XG4gICAgICAgIHRoaXMuaXNvMklkU3ViamVjdC5uZXh0KGlzbzJJZCk7XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxpdHlEaXNwbGF5ZWROYW1lKGxvY2FsaXR5OiBMb2NhbGl0eSk6IHN0cmluZyB8IHZvaWQge1xuICAgICAgICBpZiAoIWxvY2FsaXR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7bG9jYWxpdHkuemlwQ29kZX0gJHtsb2NhbGl0eS5sb25nTmFtZX1gO1xuICAgIH1cblxuICAgIGxvY2FsaXR5VXBkYXRlZChsb2NhbGl0eTogTG9jYWxpdHkpOiB2b2lkIHtcbiAgICAgICAgLy8gTm8gZG91YmxlLWJpbmRpbmcgb24gbG9jYWxpdHkgaW4gdmlldyB0byBlbnN1cmUgd2UgdXBkYXRlIHByb3Blcmx5IG1vZGVsXG4gICAgICAgIHRoaXMubG9jYWxpdHkgPSBsb2NhbGl0eTtcbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG5cbiAgICAgICAgaWYgKCFsb2NhbGl0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyB6aXBDb2RlSWQgfSA9IGxvY2FsaXR5O1xuICAgICAgICB0aGlzLnppcENvZGVJZFN1YmplY3QubmV4dCh6aXBDb2RlSWQpO1xuICAgIH1cblxuICAgIHN0cmVldFVwZGF0ZWQoc3RyZWV0OiBTdHJlZXQpOiB2b2lkIHtcbiAgICAgICAgLy8gTm8gZG91YmxlLWJpbmRpbmcgb24gc3RyZWV0IGluIHZpZXcgdG8gZW5zdXJlIHdlIHVwZGF0ZSBwcm9wZXJseSBtb2RlbFxuICAgICAgICB0aGlzLnN0cmVldCA9IHN0cmVldDtcbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG5cbiAgICAgICAgaWYgKCFzdHJlZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZXN0cmlkIH0gPSBzdHJlZXQ7XG4gICAgICAgIHRoaXMuZXN0cklkU3ViamVjdC5uZXh0KGVzdHJpZCk7XG4gICAgfVxuXG4gICAgaXNTdHJlZXRSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLnN0cmVldFJlcXVpcmVkKSkge1xuICAgICAgICAgICAgLy8gcmVzcGVjdCBvdmVycmlkZW4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmVldFJlcXVpcmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnNob3dQb3N0T2ZmaWNlQm94VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMucG9zdE9mZmljZUJveFRleHQgfHwgISF0aGlzLnN0cmVldDtcbiAgICB9XG5cbiAgICBpc0ZvcmVpZ25TdHJlZXRSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLmZvcmVpZ25TdHJlZXRSZXF1aXJlZCkpIHtcbiAgICAgICAgICAgIC8vIHJlc3BlY3Qgb3ZlcnJpZGVuIHZhbHVlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JlaWduU3RyZWV0UmVxdWlyZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2hvd1Bvc3RPZmZpY2VCb3hUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhdGhpcy5wb3N0T2ZmaWNlQm94VGV4dCB8fCAhIXRoaXMuc3RyZWV0O1xuICAgIH1cblxuICAgIGlzUG9zdE9mZmljZUJveFRleHRSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLnBvc3RPZmZpY2VCb3hUZXh0UmVxdWlyZWQpKSB7XG4gICAgICAgICAgICAvLyByZXNwZWN0IG92ZXJyaWRlbiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdE9mZmljZUJveFRleHRSZXF1aXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXRoaXMuc3RyZWV0IHx8ICEhdGhpcy5wb3N0T2ZmaWNlQm94VGV4dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvdW50cmllcygpOiBPYnNlcnZhYmxlPENvdW50cnlbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxDb3VudHJ5W10+KHRoaXMuY291bnRyaWVzVXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsaXRpZXMoaXNvMklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExvY2FsaXR5W10+IHtcbiAgICAgICAgaWYgKGlzbzJJZCAhPT0gU1dJU1NfSVNPX0lEKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSAhIXRoaXMud2l0aENvbXBhbnlMb2NhbGl0aWVzXG4gICAgICAgICAgICA/ICc/d2l0aENvbXBhbnlMb2NhbGl0aWVzPXRydWUnXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGlmICghIXRoaXMuc3BlY2lmaWVkQ2FudG9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxMb2NhbGl0eVtdPihcbiAgICAgICAgICAgICAgICBgYXBpL3JlZmluZi9sb2NhbGl0eS8ke3RoaXMuc3BlY2lmaWVkQ2FudG9ufSR7cXVlcnlQYXJhbXN9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PExvY2FsaXR5W10+KFxuICAgICAgICAgICAgICAgIGBhcGkvcmVmaW5mL2xvY2FsaXR5L2FsbCR7cXVlcnlQYXJhbXN9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3RyZWV0TnVtYmVyRm9yKGVzdHJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTdHJlZXROdW1iZXJbXT4ge1xuICAgICAgICBpZiAoIWVzdHJpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvcmVmaW5mL2FkZHJlc3Nlcy8ke2VzdHJpZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxTdHJlZXROdW1iZXJbXT4odXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0cmVldHNGb3IoemlwQ29kZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFN0cmVldFtdPiB7XG4gICAgICAgIGlmICghemlwQ29kZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9yZWZpbmYvc3RyZWV0cy8ke3ppcENvZGVJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxTdHJlZXRbXT4odXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQXV0b2NvbXBsZXRlc1doZW5Db3VudHJ5SXNVbmFwcHJvcHJpYXRlZFRvQ29tcG9uZW50Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNPbmx5U3dpc3MgJiZcbiAgICAgICAgICAgIHRoaXMuY291bnRyeSAmJlxuICAgICAgICAgICAgdGhpcy5jb3VudHJ5LmlzbzJJZCAhPT0gU1dJU1NfSVNPX0lEXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gRG8gbm90IHJlbW92ZSB0aGlzIHdhcm5pbmcuIE5lZWRlZCBmb3IgZGVidWdnaW5nIGF0IGFsbCB0aW1lLlxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICAgICAgYENvdW50cnkgYWRkcmVzcyB3YXMgJyR7dGhpcy5jb3VudHJ5LmlzbzJJZH0nLiBPbmx5IHN3aXNzIGlzIGFza2VkIGluIGNvbXBvbmVudCAnZm9laG4taW5wdXQtYWRkcmVzcycgY29uZmlndXJhdGlvbi4gQWRkcmVzcyBtb2RlbCByZXNldHRlZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jbGVhckF1dG9jb21wbGV0ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdENvdW50cnkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT25seVN3aXNzIHx8ICF0aGlzLmNvdW50cnkgfHwgIXRoaXMuY291bnRyeS5pc28ySWQpIHtcbiAgICAgICAgICAgIHRoaXMuY291bnRyeSA9IHtcbiAgICAgICAgICAgICAgICBpc28ySWQ6IFNXSVNTX0lTT19JRCxcbiAgICAgICAgICAgICAgICBzaG9ydE5hbWVGcjogJ1N1aXNzZSdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmlzbzJJZFN1YmplY3QubmV4dChTV0lTU19JU09fSUQpO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFkZHJlc3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJBdXRvY29tcGxldGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdW50cnkgPSBudWxsO1xuICAgICAgICB0aGlzLnN0cmVldCA9IG51bGw7XG4gICAgICAgIHRoaXMubG9jYWxpdHkgPSBudWxsO1xuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgLy8gTm8gdXBkYXRlQWRkcmVzcygpIGhlcmUgYmVjYXVzZSBkb25lIGluIHNldERlZmF1bHRDb3VudHJ5KClcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RMb2NhbGl0eVppcENvZGVJZChcbiAgICAgICAgbG9jYWxpdGllczogTG9jYWxpdHlbXSxcbiAgICAgICAgbG9jYWxpdHlUb01hdGNoOiBMb2NhbGl0eVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmIChsb2NhbGl0eVRvTWF0Y2ggJiYgbG9jYWxpdHlUb01hdGNoLnBvc3RhbExvY2FsaXR5SGlzdG9yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gbG9jYWxpdGllcy5maW5kKFxuICAgICAgICAgICAgICAgIChsb2NhbGl0eTogTG9jYWxpdHkpID0+XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5LnBvc3RhbExvY2FsaXR5SGlzdG9yeUlkID09PVxuICAgICAgICAgICAgICAgICAgICBsb2NhbGl0eVRvTWF0Y2gucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVkLnppcENvZGVJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdFN0cmVldEVzdHJpZChcbiAgICAgICAgc3RyZWV0czogU3RyZWV0W10sXG4gICAgICAgIHN0cmVldFRvTWF0Y2g6IFN0cmVldFxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmIChzdHJlZXRUb01hdGNoICYmIHN0cmVldFRvTWF0Y2gubG9uZ05hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBzdHJlZXRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHN0cmVldDogU3RyZWV0KSA9PiBzdHJlZXQubG9uZ05hbWUgPT09IHN0cmVldFRvTWF0Y2gubG9uZ05hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVkLmVzdHJpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZSgpOiBBZGRyZXNzIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kZWxFbXB0eSgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3VudHJ5OiB0aGlzLmNvdW50cnksXG4gICAgICAgICAgICBsb2NhbGl0eTogdGhpcy5nZXRWYWxpZExvY2FsaXR5KHRoaXMubG9jYWxpdHkpLFxuICAgICAgICAgICAgc3RyZWV0OiB0aGlzLnN0cmVldCxcbiAgICAgICAgICAgIGhvdXNlTnVtYmVyOiB0aGlzLmhvdXNlTnVtYmVyLFxuICAgICAgICAgICAgcG9zdE9mZmljZUJveFRleHQ6IHRoaXMucG9zdE9mZmljZUJveFRleHQsXG4gICAgICAgICAgICBhZGRyZXNzTGluZTE6IHRoaXMuYWRkcmVzc0xpbmUxLFxuICAgICAgICAgICAgYWRkcmVzc0xpbmUyOiB0aGlzLmFkZHJlc3NMaW5lMlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRMb2NhbGl0eSh2YWx1ZTogTG9jYWxpdHkpOiBMb2NhbGl0eSB7XG4gICAgICAgIC8vIFBSRVNUQUtJVC0zNTI6IE5lZWQgYSBmYWtlICdwb3N0YWxMb2NhbGl0eUhpc3RvcnlJZCcgZm9yIGluZGl2aWR1YWwgZXJyb3JzIG9uICd6aXBDb2RlJyBhbmQgJ2xvbmdOYW1lJ1xuICAgICAgICBpZiAoIXRoaXMuaXNTd2lzcygpICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgcG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQ6ICctMScgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW9kZWxFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLmNvdW50cnkpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5sb2NhbGl0eSkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLnN0cmVldCkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLmhvdXNlTnVtYmVyKSAmJlxuICAgICAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMucG9zdE9mZmljZUJveFRleHQpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5hZGRyZXNzTGluZTEpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5hZGRyZXNzTGluZTIpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdDb250YWluZXInXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4+XG4gICAgPGZpZWxkc2V0XG4gICAgICAgIGNsYXNzPVwibWItM1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZ2V0RGVzY3JpYmVkQnkoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBudWxsXCJcbiAgICA+XG4gICAgICAgIDxsZWdlbmQgKm5nSWY9XCIhIWxhYmVsXCIgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6ICd2ZC1wJ1wiPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGVnZW5kPlxuXG4gICAgICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxmb2Vobi1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzT25seVN3aXNzXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5jb3VudHJ5LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgIFtlbGVtZW50c109XCJjb3VudHJpZXMgfCBhc3luY1wiXG4gICAgICAgICAgICBlbGVtZW50TGFiZWw9XCJzaG9ydE5hbWVGclwiXG4gICAgICAgICAgICBbZWxlbWVudFZhbHVlXT1cImlkZW50aXR5XCJcbiAgICAgICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJjb3VudHJ5SWRlbnRpdHlcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNvdW50cnlVcGRhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRDb3VudHJ5KClcIlxuICAgICAgICAgICAgW21vZGVsXT1cImNvdW50cnlcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuY291bnRyeSdcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImNvdW50cnlSZXF1aXJlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+PC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU3dpc3MoKVwiPlxuICAgICAgICAgICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5sb2NhbGl0eS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cImxvY2FsaXRpZXMgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRMYWJlbF09XCJnZXRMb2NhbGl0eURpc3BsYXllZE5hbWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50VmFsdWVdPVwiaWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJsb2NhbGl0eUlkZW50aXR5XCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwibG9jYWxpdHlVcGRhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0TG9jYWxpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cImxvY2FsaXR5XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5sb2NhbGl0eSdcIlxuICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbVZhbHVlXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwic3dpc3NOcGFMb2NhbGl0eVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgPjwvZm9laG4tYXV0b2NvbXBsZXRlPlxuXG4gICAgICAgICAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cInN0cmVldHMgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgZWxlbWVudExhYmVsPVwibG9uZ05hbWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50VmFsdWVdPVwiaWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJzdHJlZXRJZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInN0cmVldFVwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cInN0cmVldFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuc3RyZWV0J1wiXG4gICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tVmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JdPVwic3RyZWV0R2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNTdHJlZXRSZXF1aXJlZCgpXCJcbiAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5oZWxwLXRleHQnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21FcnJvcnNdPVwic3RyZWV0Q3VzdG9tRXJyb3JzXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dFN0cmVldCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgPjwvZm9laG4tYXV0b2NvbXBsZXRlPlxuXG4gICAgICAgICAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5ob3VzZU51bWJlci5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cInN0cmVldE51bWJlcnMgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgZWxlbWVudExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgZWxlbWVudFZhbHVlPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiaG91c2VOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmhvdXNlTnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tVmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5ob3VzZU51bWJlci5oZWxwLXRleHQnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJzdHJlZXROdW1iZXJSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1N3aXNzKClcIj5cbiAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgIENvbXBvbmVudCA8Zm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eT4gaXMgc3BlY2lhbCBiZWNhdXNlIHdlIHVzZSB0aGUgc2FtZSBtb2RlbCB3aGVuIHN3aXNzIG9yIGZvcmVpZ25lci5cbiAgICAgICAgICAgIFRvIGRvIHNvLCB3ZSBuZWVkOlxuICAgICAgICAgICAgICAgIC0gRXJyb3JzIHdpbGwgYmUgYmluZCBvbiAnbG9jYWxpdHknIHdoZW4gTlVMTCBvciBvbiAnemlwQ29kZScgYW5kICdsb25nTmFtZScgbW9kZWwgaW5zaWRlIGNvbXBvbmVudCB3aGVuIEVNUFRZXG4gICAgICAgICAgICAgICAgLSBIaWRlIGxhYmVsIGZyb20gY29tcG9uZW50IGJlY2F1c2Ugd2UgbmVlZCBsYWJlbCBmcm9tIGNoaWxkcmVuIHRvIGJlIGRpc3BsYXllZCAoaXNMYWJlbFNyT25seTogdHJ1ZSlcbiAgICAgICAgICAgICAgICAtIHJlcXVpcmVkIGFuZCBkaXNhYmxlZCBwYXJhbXMgYXJlIHRyYW5zbWl0dGVkIHRvIGNoaWxkcmVuXG4gICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8Zm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5sb2NhbGl0eS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9jYWxpdHknXCJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJsb2NhbGl0eVwiXG4gICAgICAgICAgICAgICAgW3ppcENvZGVSZXF1aXJlZF09XCJmb3JlaWduWmlwQ29kZVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxpdHlSZXF1aXJlZF09XCJmb3JlaWduTG9jYWxpdHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHk+XG4gICAgICAgICAgICA8IS0tXG4gICAgICAgICAgICBDb21wb25lbnQgPGZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0PiBpcyBzcGVjaWFsIGJlY2F1c2Ugd2UgdXNlIHRoZSBzYW1lIG1vZGVsIHdoZW4gc3dpc3Mgb3IgZm9yZWlnbmVyLlxuICAgICAgICAgICAgVG8gZG8gc28sIHdlIG5lZWQ6XG4gICAgICAgICAgICAgICAgLSBFcnJvcnMgd2lsbCBiZSBiaW5kIG9uICdzdHJlZXQnIHdoZW4gTlVMTCBvciBvbiAnbG9uZ05hbWUnIG1vZGVsIGluc2lkZSBjb21wb25lbnQgd2hlbiBFTVBUWVxuICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQsIGhlbHBUZXh0LCBpc0xhYmVsU3JPbmx5IGFuZCBkaXNhYmxlZCAgcGFyYW1zIGFyZSB0cmFuc21pdHRlZCB0byBjaGlsZHJlblxuICAgICAgICAgICAgIC0tPlxuICAgICAgICAgICAgPGZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0XG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuc3RyZWV0J1wiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic3RyZWV0XCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNGb3JlaWduU3RyZWV0UmVxdWlyZWQoKVwiXG4gICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5zdHJlZXQuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JzXT1cInN0cmVldEN1c3RvbUVycm9yc1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0PlxuXG4gICAgICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICNmb3JlaWduSG91c2VOdW1iZXJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5ob3VzZU51bWJlcidcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImhvdXNlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmhlbHAtdGV4dCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZm9yZWlnblN0cmVldE51bWJlclJlcXVpcmVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dQb3N0T2ZmaWNlQm94VGV4dFwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJwb3N0T2ZmaWNlQm94VGV4dFwiXG4gICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MucG9zdE9mZmljZUJveFRleHQuaGVscC10ZXh0J1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnBvc3RPZmZpY2VCb3hUZXh0LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcucG9zdE9mZmljZUJveFRleHQnXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNQb3N0T2ZmaWNlQm94VGV4dFJlcXVpcmVkKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93QWRyZXNzTGluZXMgJiYgc2hvd0FkcmVzc0xpbmUxXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3NMaW5lMVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3MuYWRkcmVzc0xpbmUxLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmFkZHJlc3NMaW5lMSdcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJhZGRyZXNzTGluZTFSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidhZGRyZXNzLWxpbmUyJ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dBZHJlc3NMaW5lcyAmJiBzaG93QWRyZXNzTGluZTJcIlxuICAgICAgICAgICAgWyhtb2RlbCldPVwiYWRkcmVzc0xpbmUyXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5hZGRyZXNzTGluZTIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuYWRkcmVzc0xpbmUyJ1wiXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImFkZHJlc3NMaW5lMlJlcXVpcmVkXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2FkZHJlc3MtbGluZTMnXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG4gICAgPC9maWVsZHNldD5cbjwvZGl2PlxuIl19
|