@skyux/lookup 13.11.4 → 13.12.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-lookup.mjs","sources":["../tmp-esm2022/lib/modules/shared/sky-lookup-resources.module.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-input.directive.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.js","../tmp-esm2022/lib/modules/shared/sky-lookup-string-utils.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-adapter.service.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete-default-search-function.js","../tmp-esm2022/lib/modules/autocomplete/types/autocomplete-message-type.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete.component.js","../tmp-esm2022/lib/modules/autocomplete/autocomplete.module.js","../tmp-esm2022/lib/modules/country-field/clone-country-data.js","../tmp-esm2022/lib/modules/country-field/types/country-field-context-token.js","../tmp-esm2022/lib/modules/country-field/country-field.component.js","../tmp-esm2022/lib/modules/country-field/country-field.module.js","../tmp-esm2022/lib/modules/search/search-adapter.service.js","../tmp-esm2022/lib/modules/search/search.component.js","../tmp-esm2022/lib/modules/search/search.module.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal-item-selected.pipe.js","../tmp-esm2022/lib/modules/selection-modal/types/selection-modal-context.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal.component.js","../tmp-esm2022/lib/modules/selection-modal/types/selection-modal-instance.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal.service.js","../tmp-esm2022/lib/modules/lookup/lookup-adapter.service.js","../tmp-esm2022/lib/modules/lookup/lookup-autocomplete-adapter.js","../tmp-esm2022/lib/modules/lookup/types/lookup-show-more-native-picker-context.js","../tmp-esm2022/lib/modules/lookup/lookup-show-more-modal.component.js","../tmp-esm2022/lib/modules/lookup/lookup.component.js","../tmp-esm2022/lib/modules/lookup/lookup.module.js","../tmp-esm2022/lib/modules/lookup/types/lookup-select-mode.js","../tmp-esm2022/lib/modules/lookup/types/lookup-show-more-custom-picker-context.js","../tmp-esm2022/lib/modules/selection-modal/selection-modal.module.js","../tmp-esm2022/skyux-lookup.js"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_multiple_results: { message: '{0} results available.' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\n skyux_autocomplete_one_result: { message: 'One result available.' },\n skyux_autocomplete_show_all: { message: 'Show all' },\n skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n skyux_country_field_dropdown_hint_text: {\n message: 'Type to search for a country',\n },\n skyux_country_field_search_placeholder: { message: 'Search for a country' },\n skyux_lookup_search_button_show_more: {\n message: 'Show all search results',\n },\n skyux_lookup_show_more_add: { message: 'New' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Add {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: 'Showing {1} items, with {0} selected.',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Select all {0}',\n },\n skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Clear all selected {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Show only selected {0}',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title: { message: 'Select {0}' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_show_more_select_context: { message: 'Select {0}' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n skyux_search_aria_label_descriptor: { message: 'Search {0}' },\n skyux_search_dismiss: { message: 'Dismiss search' },\n skyux_search_label: { message: 'Search items' },\n skyux_search_open: { message: 'Open search' },\n skyux_search_placeholder: { message: 'Find in this list' },\n },\n 'FR-CA': {\n skyux_autocomplete_add: { message: 'Nouveau' },\n skyux_autocomplete_multiple_results: {\n message: '{0} résultats disponibles.',\n },\n skyux_autocomplete_no_results: { message: 'Aucune correspondance trouvée' },\n skyux_autocomplete_one_result: { message: 'Un résultat disponible.' },\n skyux_autocomplete_show_all: { message: 'Afficher tout' },\n skyux_autocomplete_show_all_count: { message: 'Afficher tout {0}' },\n skyux_autocomplete_show_matches_count: {\n message: 'Afficher les correspondances ({0})',\n },\n skyux_country_field_dropdown_hint_text: { message: 'Recherchez un pays' },\n skyux_country_field_search_placeholder: { message: 'Rechercher un pays' },\n skyux_lookup_search_button_show_more: {\n message: 'Afficher tous les résultats de la recherche',\n },\n skyux_lookup_show_more_add: { message: 'Nouveau' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Ajouter {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: '{1} éléments affichés, avec {0} sélectionné(s).',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Sélectionner tout {0}',\n },\n skyux_lookup_show_more_select_all_button_title: {\n message: 'Sélectionner tout',\n },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Supprimer tous les éléments sélectionnés {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Effacer tout' },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Montrer seulement ce qui est sélectionné {0}',\n },\n skyux_lookup_show_more_cancel: { message: 'Annuler' },\n skyux_lookup_show_more_modal_title: { message: 'Sélectionner {0}' },\n skyux_lookup_show_more_no_results: {\n message: 'Aucune correspondance trouvée',\n },\n skyux_lookup_show_more_select: { message: 'Sélectionner' },\n skyux_lookup_show_more_select_context: { message: 'Sélectionner {0}' },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n skyux_search_aria_label_descriptor: { message: 'Rechercher {0}' },\n skyux_search_dismiss: { message: 'Omettre la recherche' },\n skyux_search_label: { message: 'Rechercher des articles' },\n skyux_search_open: { message: 'Ouvrir la recherche' },\n skyux_search_placeholder: { message: 'Trouver dans cette liste' },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyLookupResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2hhcmVkL3NreS1sb29rdXAtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1Asc0JBQXNCLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1FBQzFDLG1DQUFtQyxFQUFFLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFO1FBQzFFLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1FBQzlELDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFO1FBQ25FLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRTtRQUNwRCxpQ0FBaUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7UUFDOUQscUNBQXFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUU7UUFDeEUsc0NBQXNDLEVBQUU7WUFDdEMsT0FBTyxFQUFFLDhCQUE4QjtTQUN4QztRQUNELHNDQUFzQyxFQUFFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFO1FBQzNFLG9DQUFvQyxFQUFFO1lBQ3BDLE9BQU8sRUFBRSx5QkFBeUI7U0FDbkM7UUFDRCwwQkFBMEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDOUMsNENBQTRDLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO1FB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QUN0RSwyQkFBMkIsRUFBRSxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRTtRQUNyRSxrQ0FBa0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRTtRQUNqRSxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRTtRQUN6RCxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRTtRQUMxRCxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtRQUNyRCx3QkFBd0IsRUFBRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRTtLQUNsRTtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCOytHQUF4Qix3QkFBd0I7Z0hBQXhCLHdCQUF3QixZQUZ6QixhQUFhO2dIQUVaLHdCQUF3QixZQUZ6QixhQUFhOzs0RkFFWix3QkFBd0I7a0JBSHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG4vKipcbiAqIE5PVElDRTogRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhXG4gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnlcbiAqIHRoZSAnbmcgZ2VuZXJhdGUgQHNreXV4L2kxOG46bGliLXJlc291cmNlcy1tb2R1bGUgbGliL21vZHVsZXMvc2hhcmVkL3NreS1sb29rdXAnIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IFJlY29yZDxzdHJpbmcsIFNreUxpYlJlc291cmNlcz4gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9hdXRvY29tcGxldGVfYWRkOiB7IG1lc3NhZ2U6ICdOZXcnIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX211bHRpcGxlX3Jlc3VsdHM6IHsgbWVzc2FnZTogJ3swfSByZXN1bHRzIGF2YWlsYWJsZS4nIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX25vX3Jlc3VsdHM6IHsgbWVzc2FnZTogJ05vIG1hdGNoZXMgZm91bmQnIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX29uZV9yZXN1bHQ6IHsgbWVzc2FnZTogJ09uZSByZXN1bHQgYXZhaWxhYmxlLicgfSxcbiAgICBza3l1eF9hdXRvY29tcGxldGVfc2hvd19hbGw6IHsgbWVzc2FnZTogJ1Nob3cgYWxsJyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9zaG93X2FsbF9jb3VudDogeyBtZXNzYWdlOiAnU2hvdyBhbGwgezB9JyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9zaG93X21hdGNoZXNfY291bnQ6IHsgbWVzc2FnZTogJ1Nob3cgbWF0Y2hlcyAoezB9KScgfSxcbiAgICBza3l1eF9jb3VudHJ5X2ZpZWxkX2Ryb3Bkb3duX2hpbnRfdGV4dDoge1xuICAgICAgbWVzc2FnZTogJ1R5cGUgdG8gc2VhcmNoIGZvciBhIGNvdW50cnknLFxuICAgIH0sXG4gICAgc2t5dXhfY291bnRyeV9maWVsZF9zZWFyY2hfcGxhY2Vob2xkZXI6IHsgbWVzc2FnZTogJ1NlYXJjaCBmb3IgYSBjb3VudHJ5JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zZWFyY2hfYnV0dG9uX3Nob3dfbW9yZToge1xuICAgICAgbWVzc2FnZTogJ1Nob3cgYWxsIHNlYXJjaCByZXN1bHRzJyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkOiB7IG1lc3NhZ2U6ICdOZXcnIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9hZGRfYnV0dG9uX2FyaWFfbGFiZWw6IHsgbWVzc2FnZTogJ0FkZCB7MH0nIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9kaXNwbGF5ZWRfaXRlbXNfdXBkYXRlZDoge1xuICAgICAgbWVzc2FnZTogJ1Nob3dpbmcgezF9IGl0ZW1zLCB3aXRoIHswfSBzZWxlY3RlZC4nLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3RfYWxsX2J1dHRvbl9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IGFsbCB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3RfYWxsX2J1dHRvbl90aXRsZTogeyBtZXNzYWdlOiAnU2VsZWN0IGFsbCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fYXJpYV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0NsZWFyIGFsbCBzZWxlY3RlZCB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jbGVhcl9hbGxfYnV0dG9uX3RpdGxlOiB7IG1lc3NhZ2U6ICdDbGVhciBhbGwnIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zaG93X3NlbGVjdGVkX29wdGlvbl90aXRsZToge1xuICAgICAgbWVzc2FnZTogJ1Nob3cgb25seSBzZWxlY3RlZCB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jYW5jZWw6IHsgbWVzc2FnZTogJ0NhbmNlbCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlOiB7IG1lc3NhZ2U6ICdTZWxlY3QgezB9JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfbm9fcmVzdWx0czogeyBtZXNzYWdlOiAnTm8gbWF0Y2hlcyBmb3VuZCcgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdDogeyBtZXNzYWdlOiAnU2VsZWN0JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2NvbnRleHQ6IHsgbWVzc2FnZTogJ1NlbGVjdCB7MH0nIH0sXG4gICAgc2t5dXhfbG9va3VwX3Rva2Vuc19zdW1tYXJ5OiB7IG1lc3NhZ2U6ICd7MH0gaXRlbXMgc2VsZWN0ZWQnIH0sXG4gICAgc2t5dXhfc2VhcmNoX2FyaWFfbGFiZWxfZGVzY3JpcHRvcjogeyBtZXNzYWdlOiAnU2VhcmNoIHswfScgfSxcbiAgICBza3l1eF9zZWFyY2hfZGlzbWlzczogeyBtZXNzYWdlOiAnRGlzbWlzcyBzZWFyY2gnIH0sXG4gICAgc2t5dXhfc2VhcmNoX2xhYmVsOiB7IG1lc3NhZ2U6ICdTZWFyY2ggaXRlbXMnIH0sXG4gICAgc2t5dXhfc2VhcmNoX29wZW46IHsgbWVzc2FnZTogJ09wZW4gc2VhcmNoJyB9LFxuICAgIHNreXV4X3NlYXJjaF9wbGFjZWhvbGRlcjogeyBtZXNzYWdlOiAnRmluZCBpbiB0aGlzIGxpc3QnIH0sXG4gIH0sXG4gICdGUi1DQSc6IHtcbiAgICBza3l1eF9hdXRvY29tcGxldGVfYWRkOiB7IG1lc3NhZ2U6ICdOb3V2ZWF1JyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9tdWx0aXBsZV9yZXN1bHRzOiB7XG4gICAgICBtZXNzYWdlOiAnezB9wqByw6lzdWx0YXRzIGRpc3BvbmlibGVzLicsXG4gICAgfSxcbiAgICBza3l1eF9hdXRvY29tcGxldGVfbm9fcmVzdWx0czogeyBtZXNzYWdlOiAnQXVjdW5lIGNvcnJlc3BvbmRhbmNlIHRyb3V2w6llJyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9vbmVfcmVzdWx0OiB7IG1lc3NhZ2U6ICdVbiByw6lzdWx0YXQgZGlzcG9uaWJsZS4nIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfYWxsOiB7IG1lc3NhZ2U6ICdBZmZpY2hlciB0b3V0JyB9LFxuICAgIHNreXV4X2F1dG9jb21wbGV0ZV9zaG93X2FsbF9jb3VudDogeyBtZXNzYWdlOiAnQWZmaWNoZXIgdG91dCB7MH0nIH0sXG4gICAgc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfbWF0Y2hlc19jb3VudDoge1xuICAgICAgbWVzc2FnZTogJ0FmZmljaGVyIGxlcyBjb3JyZXNwb25kYW5jZXMgKHswfSknLFxuICAgIH0sXG4gICAgc2t5dXhfY291bnRyeV9maWVsZF9kcm9wZG93bl9oaW50X3RleHQ6IHsgbWVzc2FnZTogJ1JlY2hlcmNoZXogdW4gcGF5cycgfSxcbiAgICBza3l1eF9jb3VudHJ5X2ZpZWxkX3NlYXJjaF9wbGFjZWhvbGRlcjogeyBtZXNzYWdlOiAnUmVjaGVyY2hlciB1biBwYXlzJyB9LFxuICAgIHNreXV4X2xvb2t1cF9zZWFyY2hfYnV0dG9uX3Nob3dfbW9yZToge1xuICAgICAgbWVzc2FnZTogJ0FmZmljaGVyIHRvdXMgbGVzIHLDqXN1bHRhdHMgZGUgbGEgcmVjaGVyY2hlJyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkOiB7IG1lc3NhZ2U6ICdOb3V2ZWF1JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkX2J1dHRvbl9hcmlhX2xhYmVsOiB7IG1lc3NhZ2U6ICdBam91dGVyIHswfScgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX2Rpc3BsYXllZF9pdGVtc191cGRhdGVkOiB7XG4gICAgICBtZXNzYWdlOiAnezF9wqDDqWzDqW1lbnRzIGFmZmljaMOpcywgYXZlYyB7MH0gc8OpbGVjdGlvbm7DqShzKS4nLFxuICAgIH0sXG4gICAgc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3RfYWxsX2J1dHRvbl9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU8OpbGVjdGlvbm5lciB0b3V0IHswfScsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlOiB7XG4gICAgICBtZXNzYWdlOiAnU8OpbGVjdGlvbm5lciB0b3V0JyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfY2xlYXJfYWxsX2J1dHRvbl9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU3VwcHJpbWVyIHRvdXMgbGVzIMOpbMOpbWVudHMgc8OpbGVjdGlvbm7DqXMgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfY2xlYXJfYWxsX2J1dHRvbl90aXRsZTogeyBtZXNzYWdlOiAnRWZmYWNlciB0b3V0JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfc2hvd19zZWxlY3RlZF9vcHRpb25fdGl0bGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdNb250cmVyIHNldWxlbWVudCBjZSBxdWkgZXN0IHPDqWxlY3Rpb25uw6kgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfY2FuY2VsOiB7IG1lc3NhZ2U6ICdBbm51bGVyJyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfbW9kYWxfdGl0bGU6IHsgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXIgezB9JyB9LFxuICAgIHNreXV4X2xvb2t1cF9zaG93X21vcmVfbm9fcmVzdWx0czoge1xuICAgICAgbWVzc2FnZTogJ0F1Y3VuZSBjb3JyZXNwb25kYW5jZSB0cm91dsOpZScsXG4gICAgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdDogeyBtZXNzYWdlOiAnU8OpbGVjdGlvbm5lcicgfSxcbiAgICBza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9jb250ZXh0OiB7IG1lc3NhZ2U6ICdTw6lsZWN0aW9ubmVyIHswfScgfSxcbiAgICBza3l1eF9sb29rdXBfdG9rZW5zX3N1bW1hcnk6IHsgbWVzc2FnZTogJ3swfSBhcnRpY2xlcyBzw6lsZWN0aW9ubsOpcycgfSxcbiAgICBza3l1eF9zZWFyY2hfYXJpYV9sYWJlbF9kZXNjcmlwdG9yOiB7IG1lc3NhZ2U6ICdSZWNoZXJjaGVyIHswfScgfSxcbiAgICBza3l1eF9zZWFyY2hfZGlzbWlzczogeyBtZXNzYWdlOiAnT21ldHRyZSBsYSByZWNoZXJjaGUnIH0sXG4gICAgc2t5dXhfc2VhcmNoX2xhYmVsOiB7IG1lc3NhZ2U6ICdSZWNoZXJjaGVyIGRlcyBhcnRpY2xlcycgfSxcbiAgICBza3l1eF9zZWFyY2hfb3BlbjogeyBtZXNzYWdlOiAnT3V2cmlyIGxhIHJlY2hlcmNoZScgfSxcbiAgICBza3l1eF9zZWFyY2hfcGxhY2Vob2xkZXI6IHsgbWVzc2FnZTogJ1Ryb3V2ZXIgZGFucyBjZXR0ZSBsaXN0ZScgfSxcbiAgfSxcbn07XG5cblNreUxpYlJlc291cmNlc1NlcnZpY2UuYWRkUmVzb3VyY2VzKFJFU09VUkNFUyk7XG5cbi8qKlxuICogSW1wb3J0IGludG8gYW55IGNvbXBvbmVudCBsaWJyYXJ5IG1vZHVsZSB0aGF0IG5lZWRzIHRvIHVzZSByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbU2t5STE4bk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB7fVxuIl19","import { Directive, ElementRef, Input, Renderer2, forwardRef, inject, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\nexport class SkyAutocompleteInputDirective {\n /**\n * The value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n set autocompleteAttribute(value) {\n if (!value) {\n this.#_autocompleteAttribute = 'off';\n }\n else {\n this.#_autocompleteAttribute = value;\n }\n this.#renderer.setAttribute(this.#elementRef.nativeElement, 'autocomplete', this.#_autocompleteAttribute);\n }\n get autocompleteAttribute() {\n return this.#_autocompleteAttribute || 'off';\n }\n /**\n * Whether to disable the autocomplete field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value ?? false;\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'disabled', value);\n }\n get disabled() {\n return this.#_disabled;\n }\n get blur() {\n return this.#blurObs;\n }\n get displayWith() {\n return this.#_displayWith;\n }\n set displayWith(value) {\n this.#_displayWith = value;\n this.inputTextValue = this.#getValueByKey();\n }\n get focus() {\n return this.#focusObs;\n }\n get inputTextValue() {\n return this.#elementRef.nativeElement.value;\n }\n set inputTextValue(value) {\n this.#elementRef.nativeElement.value = value || '';\n }\n get textChanges() {\n return this.#textChangesObs;\n }\n get value() {\n return this.#_value;\n }\n set value(value) {\n const isNewValue = value !== this.#_value;\n /* istanbul ignore else */\n if (isNewValue) {\n this.#_value = value;\n this.inputTextValue = this.#getValueByKey();\n this.onChange(this.#_value);\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isFirstChange && this.#control) {\n this.#control.markAsPristine();\n }\n if (this.#isFirstChange && this.#_value) {\n this.#isFirstChange = false;\n }\n }\n }\n #blur;\n #blurObs;\n #control;\n #elementRef;\n #focus;\n #focusObs;\n #isFirstChange;\n #ngUnsubscribe;\n #renderer;\n #textChanges;\n #textChangesObs;\n #_autocompleteAttribute;\n #_disabled;\n #_displayWith;\n #_value;\n constructor() {\n this.#elementRef = inject(ElementRef);\n this.#isFirstChange = true;\n this.#ngUnsubscribe = new Subject();\n this.#renderer = inject(Renderer2);\n this.#_disabled = false;\n this.#_displayWith = '';\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChange = () => { };\n this.#blur = new Subject();\n this.#focus = new Subject();\n this.#textChanges = new Subject();\n this.#blurObs = this.#blur.asObservable();\n this.#focusObs = this.#focus.asObservable();\n this.#textChangesObs = this.#textChanges.asObservable();\n }\n ngOnInit() {\n const element = this.#elementRef.nativeElement;\n this.#setAttributes(this.#elementRef);\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#textChanges.next({\n value: this.#elementRef.nativeElement.value,\n });\n }\n });\n observableFromEvent(element, 'blur')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#blur.next();\n }\n });\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#focus.next();\n }\n });\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (!this.disabled) {\n this.#isFirstChange = false;\n }\n });\n }\n ngOnDestroy() {\n this.#blur.complete();\n this.#textChanges.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n writeValue(value) {\n this.value = value;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n restoreInputTextValueToPreviousState() {\n const modelValue = this.#getValueByKey();\n // If the search field contains text, make sure that the value\n // matches the selected descriptor key.\n if (this.inputTextValue !== modelValue) {\n this.inputTextValue = modelValue;\n }\n this.onTouched();\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n return null;\n }\n // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n setActiveDescendant(descendantId) {\n if (descendantId) {\n this.#renderer.setAttribute(this.#elementRef.nativeElement, 'aria-activedescendant', descendantId);\n }\n else {\n this.#renderer.removeAttribute(this.#elementRef.nativeElement, 'aria-activedescendant');\n }\n }\n /**\n * Used to connect the input to the overlay.\n */\n setAriaControls(overlayId) {\n if (overlayId) {\n this.#renderer.setAttribute(this.#elementRef.nativeElement, 'aria-controls', overlayId);\n }\n else {\n this.#renderer.removeAttribute(this.#elementRef.nativeElement, 'aria-controls');\n }\n }\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange(value) { }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched() { }\n #setAttributes(elementRef) {\n const element = elementRef.nativeElement;\n this.#renderer.setAttribute(element, 'autocomplete', this.autocompleteAttribute);\n this.#renderer.setAttribute(element, 'autocapitalize', 'none');\n this.#renderer.setAttribute(element, 'autocorrect', 'off');\n this.#renderer.setAttribute(element, 'spellcheck', 'false');\n this.#renderer.addClass(element, 'sky-form-control');\n }\n #getValueByKey() {\n return this.value ? this.value[this.displayWith] : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyAutocompleteInputDirective, isStandalone: false, selector: \"input[skyAutocomplete], textarea[skyAutocomplete]\", inputs: { autocompleteAttribute: \"autocompleteAttribute\", disabled: \"disabled\" }, providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { autocompleteAttribute: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJM0MsTUFBTSwrQkFBK0IsR0FBRztJQUN0QyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNkJBQTZCLENBQUM7SUFDNUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRztJQUNqQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO0lBQzVELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQU9GLE1BQU0sT0FBTyw2QkFBNkI7SUFHeEM7Ozs7T0FJRztJQUNILElBQ1cscUJBQXFCLENBQUMsS0FBeUI7UUFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyx1QkFBdUIs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Q0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7K0dBL1JVLDZCQUE2QjttR0FBN0IsNkJBQTZCLG1MQUg3QixDQUFDLCtCQUErQixFQUFFLDBCQUEwQixDQUFDOzs0RkFHN0QsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtREFBbUQ7b0JBQzdELFNBQVMsRUFBRSxDQUFDLCtCQUErQixFQUFFLDBCQUEwQixDQUFDO29CQUN4RSxVQUFVLEVBQUUsS0FBSztpQkFDbEI7O3NCQVNFLEtBQUs7O3NCQXdCTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlSW5wdXRUZXh0Q2hhbmdlIH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtaW5wdXQtdGV4dC1jaGFuZ2UnO1xuXG5jb25zdCBTS1lfQVVUT0NPTVBMRVRFX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9BVVRPQ09NUExFVEVfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbc2t5QXV0b2NvbXBsZXRlXSwgdGV4dGFyZWFbc2t5QXV0b2NvbXBsZXRlXScsXG4gIHByb3ZpZGVyczogW1NLWV9BVVRPQ09NUExFVEVfVkFMVUVfQUNDRVNTT1IsIFNLWV9BVVRPQ09NUExFVEVfVkFMSURBVE9SXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICogQGRlZmF1bHQgXCJvZmZcIlxuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggb25seSBzdXBwb3J0cyBicm93c2VyIGF1dG9maWxsIG9uIGNvbXBvbmVudHMgd2hlcmUgdGhlIGRpcmVjdCBpbnB1dCBtYXRjaGVzIHRoZSByZXR1cm4gdmFsdWUuIFRoaXMgaW5wdXQgbWF5IG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQgZHVlIHRvIHRoZSBkcm9wZG93biBzZWxlY3Rpb24gaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGF1dG9jb21wbGV0ZUF0dHJpYnV0ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy4jX2F1dG9jb21wbGV0ZUF0dHJpYnV0ZSA9ICdvZmYnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfYXV0b2NvbXBsZXRlQXR0cmlidXRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2F1dG9jb21wbGV0ZScsXG4gICAgICB0aGlzLiNfYXV0b2NvbXBsZXRlQXR0cmlidXRlLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUF0dHJpYnV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlQXR0cmlidXRlIHx8ICdvZmYnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdkaXNhYmxlZCcsXG4gICAgICB2YWx1ZSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBibHVyKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNibHVyT2JzO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5V2l0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfZGlzcGxheVdpdGg7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc3BsYXlXaXRoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiNfZGlzcGxheVdpdGggPSB2YWx1ZTtcbiAgICB0aGlzLmlucHV0VGV4dFZhbHVlID0gdGhpcy4jZ2V0VmFsdWVCeUtleSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmb2N1cygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNPYnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0VGV4dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaW5wdXRUZXh0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0Q2hhbmdlcygpOiBPYnNlcnZhYmxlPFNreUF1dG9jb21wbGV0ZUlucHV0VGV4dENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLiN0ZXh0Q2hhbmdlc09icztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgaXNOZXdWYWx1ZSA9IHZhbHVlICE9PSB0aGlzLiNfdmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaW5wdXRUZXh0VmFsdWUgPSB0aGlzLiNnZXRWYWx1ZUJ5S2V5KCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG5cbiAgICAgIC8vIERvIG5vdCBtYXJrIHRoZSBmaWVsZCBhcyBcImRpcnR5XCJcbiAgICAgIC8vIGlmIHRoZSBmaWVsZCBoYXMgYmVlbiBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUuXG4gICAgICBpZiAodGhpcy4jaXNGaXJzdENoYW5nZSAmJiB0aGlzLiNjb250cm9sKSB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI2lzRmlyc3RDaGFuZ2UgJiYgdGhpcy4jX3ZhbHVlKSB7XG4gICAgICAgIHRoaXMuI2lzRmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjYmx1cjogU3ViamVjdDx2b2lkPjtcblxuICAjYmx1ck9iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAjY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICNmb2N1czogU3ViamVjdDx2b2lkPjtcblxuICAjZm9jdXNPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI2lzRmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAjdGV4dENoYW5nZXM6IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlSW5wdXRUZXh0Q2hhbmdlPjtcblxuICAjdGV4dENoYW5nZXNPYnM6IE9ic2VydmFibGU8U2t5QXV0b2NvbXBsZXRlSW5wdXRUZXh0Q2hhbmdlPjtcblxuICAjX2F1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAjX2Rpc3BsYXlXaXRoID0gJyc7XG5cbiAgI192YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2JsdXIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI2ZvY3VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLiN0ZXh0Q2hhbmdlcyA9IG5ldyBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZUlucHV0VGV4dENoYW5nZT4oKTtcblxuICAgIHRoaXMuI2JsdXJPYnMgPSB0aGlzLiNibHVyLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI2ZvY3VzT2JzID0gdGhpcy4jZm9jdXMuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jdGV4dENoYW5nZXNPYnMgPSB0aGlzLiN0ZXh0Q2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4jc2V0QXR0cmlidXRlcyh0aGlzLiNlbGVtZW50UmVmKTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZWxlbWVudCwgJ2lucHV0JylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLiN0ZXh0Q2hhbmdlcy5uZXh0KHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChlbGVtZW50LCAnYmx1cicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy4jYmx1ci5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChlbGVtZW50LCAnZm9jdXMnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2ZvY3VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGVsZW1lbnQsICdjaGFuZ2UnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2lzRmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYmx1ci5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RleHRDaGFuZ2VzLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy4jZ2V0VmFsdWVCeUtleSgpO1xuXG4gICAgLy8gSWYgdGhlIHNlYXJjaCBmaWVsZCBjb250YWlucyB0ZXh0LCBtYWtlIHN1cmUgdGhhdCB0aGUgdmFsdWVcbiAgICAvLyBtYXRjaGVzIHRoZSBzZWxlY3RlZCBkZXNjcmlwdG9yIGtleS5cbiAgICBpZiAodGhpcy5pbnB1dFRleHRWYWx1ZSAhPT0gbW9kZWxWYWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dFRleHRWYWx1ZSA9IG1vZGVsVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuI2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wgPSBjb250cm9sO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFNlZTogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy8ja2JkX2ZvY3VzX2FjdGl2ZWRlc2NlbmRhbnRcbiAgcHVibGljIHNldEFjdGl2ZURlc2NlbmRhbnQoZGVzY2VuZGFudElkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGRlc2NlbmRhbnRJZCkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLFxuICAgICAgICBkZXNjZW5kYW50SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGNvbm5lY3QgdGhlIGlucHV0IHRvIHRoZSBvdmVybGF5LlxuICAgKi9cbiAgcHVibGljIHNldEFyaWFDb250cm9scyhvdmVybGF5SWQ6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3ZlcmxheUlkKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnLFxuICAgICAgICBvdmVybGF5SWQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoXG4gICAgICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBBbmd1bGFyIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0cyB0aGVzZSBtZXRob2RzLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvbkNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7fVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblRvdWNoZWQoKTogdm9pZCB7fVxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblZhbGlkYXRvckNoYW5nZSA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICNzZXRBdHRyaWJ1dGVzKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgZWxlbWVudCxcbiAgICAgICdhdXRvY29tcGxldGUnLFxuICAgICAgdGhpcy5hdXRvY29tcGxldGVBdHRyaWJ1dGUsXG4gICAgKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2F1dG9jYXBpdGFsaXplJywgJ25vbmUnKTtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2F1dG9jb3JyZWN0JywgJ29mZicpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnc3BlbGxjaGVjaycsICdmYWxzZScpO1xuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG4gIH1cblxuICAjZ2V0VmFsdWVCeUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZVt0aGlzLmRpc3BsYXlXaXRoXSA6ICcnO1xuICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyAutocompleteSearchAsyncDisabledPipe {\n transform(searchAsync, searchAsyncDisabled) {\n return searchAsyncDisabled || searchAsync.observers.length === 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteSearchAsyncDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteSearchAsyncDisabledPipe, isStandalone: false, name: \"skyAutocompleteSearchAsyncDisabled\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteSearchAsyncDisabledPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyAutocompleteSearchAsyncDisabled',\n standalone: false,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1kaXNhYmxlZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtZGlzYWJsZWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBSWxFOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNDQUFzQztJQUMxQyxTQUFTLENBQ2QsV0FBeUQsRUFDekQsbUJBQXdDO1FBRXhDLE9BQU8sbUJBQW1CLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7K0dBTlUsc0NBQXNDOzZHQUF0QyxzQ0FBc0M7OzRGQUF0QyxzQ0FBc0M7a0JBSmxELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG9DQUFvQztvQkFDMUMsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNEaXNhYmxlZCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0Rpc2FibGVkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIHNlYXJjaEFzeW5jOiBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzPixcbiAgICBzZWFyY2hBc3luY0Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VhcmNoQXN5bmNEaXNhYmxlZCB8fCBzZWFyY2hBc3luYy5vYnNlcnZlcnMubGVuZ3RoID09PSAwO1xuICB9XG59XG4iXX0=","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value) {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWxvb2t1cC1zdHJpbmctdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWxvb2t1cC1zdHJpbmctdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWE7SUFDL0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZW1vdmVzIGRpYWNyaXRpY2FsIGNoYXJhY3RlcnMgZnJvbSBzdHJpbmdzIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggdGhlaXIgbm9ybWFsaXplZCBlcXVpdmFsZW50LlxuICogRm9yIGV4YW1wbGU6IMOoIGJlY29tZXMgZSwgw4UgYmVjb21lcyBBLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRGlhY3JpdGljcyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xufVxuIl19","import { Injectable, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\n/**\n * @internal\n */\nexport class SkyAutocompleteAdapterService {\n #coreAdapterService;\n #renderer;\n constructor(coreAdapterService, rendererFactory) {\n this.#coreAdapterService = coreAdapterService;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n /**\n * Adds the className for the provided element.\n */\n addCSSClass(element, className) {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.addClass(element, className);\n }\n }\n getOverlayFocusableElements(overlay) {\n return this.#coreAdapterService.getFocusableChildren(\n /* Sanity check - calling function also has null check */\n /* istanbul ignore next */\n overlay?.componentRef.location.nativeElement, { ignoreTabIndex: true });\n }\n /**\n * Removes the className for the provided element.\n */\n removeCSSClass(element, className) {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.removeClass(element, className);\n }\n }\n setDropdownWidth(elementRef, dropdownRef, isInputBox) {\n // `setTimeout` ensures that the input box size is correct when grabbing the width. When the input is initially focused a parent's `overflow-y: auto` value can cause the width to be incorrect during initial rendering.\n setTimeout(() => {\n const parentElement = isInputBox\n ? elementRef.nativeElement.closest('.sky-input-box')\n : elementRef.nativeElement;\n if (parentElement) {\n const width = parentElement.getBoundingClientRect().width;\n this.#renderer.setStyle(dropdownRef.nativeElement, 'width', `${width}px`);\n }\n });\n }\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n setTabIndex(element, tabIndex) {\n element.tabIndex = tabIndex;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteAdapterService, deps: [{ token: i1.SkyCoreAdapterService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SkyCoreAdapterService }, { type: i0.RendererFactory2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEdBR1gsTUFBTSxlQUFlLENBQUM7OztBQUd2Qjs7R0FFRztBQUVILE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsbUJBQW1CLENBQXdCO0lBRTNDLFNBQVMsQ0FBWTtJQUVyQixZQUNFLGtCQUF5QyxFQUN6QyxlQUFpQztRQUVqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBb0IsRUFBRSxTQUFpQjtRQUN4RCxrQkFBa0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFTSwyQkFBMkIsQ0FDaEMsT0FBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CO1FBQ2xELHlEQUF5RDtRQUN6RCwwQkFBMEI7UUFDMUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUM1QyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxPQUFvQixFQUFFLFNBQWlCO1FBQzNELGtCQUFrQjtRQUNsQiwwQkFBMEI7UUFDMUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUNyQixVQUFzQixFQUN0QixXQUF1QixFQUN2QixVQUFtQjtRQUVuQix5TkFBeU47UUFDek4sVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sYUFBYSxHQUFHLFVBQVU7Z0JBQzlCLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDN0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIsV0FBVyxDQUFDLGFBQWEsRUFDekIsT0FBTyxFQUNQLEdBQUcsS0FBSyxJQUFJLENBQ2IsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxPQUFvQixFQUFFLFFBQWdCO1FBQ3ZELE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7K0dBeEVVLDZCQUE2QjttSEFBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSwgU2t5T3ZlcmxheUluc3RhbmNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlQWRhcHRlclNlcnZpY2Uge1xuICAjY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICApIHtcbiAgICB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UgPSBjb3JlQWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBjbGFzc05hbWUgZm9yIHRoZSBwcm92aWRlZCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZENTU0NsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cyhcbiAgICBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UsXG4gICk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgICAvKiBTYW5pdHkgY2hlY2sgLSBjYWxsaW5nIGZ1bmN0aW9uIGFsc28gaGFzIG51bGwgY2hlY2sgKi9cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBvdmVybGF5Py5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCxcbiAgICAgIHsgaWdub3JlVGFiSW5kZXg6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGNsYXNzTmFtZSBmb3IgdGhlIHByb3ZpZGVkIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlQ1NTQ2xhc3MoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RHJvcGRvd25XaWR0aChcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGRyb3Bkb3duUmVmOiBFbGVtZW50UmVmLFxuICAgIGlzSW5wdXRCb3g6IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIC8vIGBzZXRUaW1lb3V0YCBlbnN1cmVzIHRoYXQgdGhlIGlucHV0IGJveCBzaXplIGlzIGNvcnJlY3Qgd2hlbiBncmFiYmluZyB0aGUgd2lkdGguIFdoZW4gdGhlIGlucHV0IGlzIGluaXRpYWxseSBmb2N1c2VkIGEgcGFyZW50J3MgYG92ZXJmbG93LXk6IGF1dG9gIHZhbHVlIGNhbiBjYXVzZSB0aGUgd2lkdGggdG8gYmUgaW5jb3JyZWN0IGR1cmluZyBpbml0aWFsIHJlbmRlcmluZy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBpc0lucHV0Qm94XG4gICAgICAgID8gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5za3ktaW5wdXQtYm94JylcbiAgICAgICAgOiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGRyb3Bkb3duUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICBgJHt3aWR0aH1weGAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYHRhYkluZGV4YCBvZiB0aGUgYGVsZW1lbnRgIHRvIHRoZSBwcm92aWRlZCBgdGFiSW5kZXhgLlxuICAgKi9cbiAgcHVibGljIHNldFRhYkluZGV4KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IHRhYkluZGV4O1xuICB9XG59XG4iXX0=","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\nexport function skyAutocompleteDefaultSearchFunction(options) {\n const filterData = function (searchText, data, args) {\n return data.filter((item) => {\n if (!options.searchFilters || !options.searchFilters.length) {\n return true;\n }\n // Find the first failing filter (we can skip the others if one fails).\n const failedFilter = options.searchFilters.find((filter) => {\n return !filter.call({}, searchText, item, args);\n });\n return failedFilter === undefined;\n });\n };\n const search = function (searchText, data, args) {\n const results = [];\n /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n const filteredData = filterData(searchText, data, args);\n for (let i = 0, n = filteredData.length; i < n; i++) {\n const result = filteredData[i];\n const isMatch = options.propertiesToSearch.find((property) => {\n let value = (result[property] || '').toString();\n value = normalizeDiacritics(value).toUpperCase();\n return value.indexOf(searchTextNormalized) > -1;\n });\n if (isMatch) {\n results.push(result);\n }\n }\n return results;\n };\n return search;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWRlZmF1bHQtc2VhcmNoLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQVF4RSxNQUFNLFVBQVUsb0NBQW9DLENBQ2xELE9BQW9EO0lBRXBELE1BQU0sVUFBVSxHQUFHLFVBQ2pCLFVBQWtCLEVBQ2xCLElBQVcsRUFDWCxJQUFnQztRQUVoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELHVFQUF1RTtZQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDN0MsQ0FBQyxNQUEyQyxFQUFFLEVBQUU7Z0JBQzlDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FDRixDQUFDO1lBRUYsT0FBTyxZQUFZLEtBQUssU0FBUyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsVUFDYixVQUFrQixFQUNsQixJQUFXLEVBQ1gsSUFBZ0M7UUFFaEMsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBRTFCLDZFQUE2RTtRQUM3RSx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtnQkFDbkUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hELEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplRGlhY3JpdGljcyB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXN0cmluZy11dGlscyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbi1vcHRpb25zJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFyZ3MgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXJncyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbic7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlciB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1maWx0ZXInO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25SZXNwb25zZSB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1yZXNwb25zZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24oXG4gIG9wdGlvbnM6IFNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbk9wdGlvbnMsXG4pOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB7XG4gIGNvbnN0IGZpbHRlckRhdGEgPSBmdW5jdGlvbiAoXG4gICAgc2VhcmNoVGV4dDogc3RyaW5nLFxuICAgIGRhdGE6IGFueVtdLFxuICAgIGFyZ3M/OiBTa3lBdXRvY29tcGxldGVTZWFyY2hBcmdzLFxuICApOiBhbnlbXSB7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghb3B0aW9ucy5zZWFyY2hGaWx0ZXJzIHx8ICFvcHRpb25zLnNlYXJjaEZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIHRoZSBmaXJzdCBmYWlsaW5nIGZpbHRlciAod2UgY2FuIHNraXAgdGhlIG90aGVycyBpZiBvbmUgZmFpbHMpLlxuICAgICAgY29uc3QgZmFpbGVkRmlsdGVyID0gb3B0aW9ucy5zZWFyY2hGaWx0ZXJzLmZpbmQoXG4gICAgICAgIChmaWx0ZXI6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuICFmaWx0ZXIuY2FsbCh7fSwgc2VhcmNoVGV4dCwgaXRlbSwgYXJncyk7XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gZmFpbGVkRmlsdGVyID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2VhcmNoID0gZnVuY3Rpb24gKFxuICAgIHNlYXJjaFRleHQ6IHN0cmluZyxcbiAgICBkYXRhOiBhbnlbXSxcbiAgICBhcmdzPzogU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXJncyxcbiAgKTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25SZXNwb25zZSB7XG4gICAgY29uc3QgcmVzdWx0czogYW55W10gPSBbXTtcblxuICAgIC8qIFNhbml0eSBjaGVjayAtIGF1dG9jb21wbGV0ZSB3aWxsIG5vdCBjYWxsIHNlYXJjaCB3aXRoIGVtcHR5IHNlYXJjaCB0ZXh0ICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFzZWFyY2hUZXh0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hUZXh0Tm9ybWFsaXplZCA9IG5vcm1hbGl6ZURpYWNyaXRpY3Moc2VhcmNoVGV4dCkudG9VcHBlckNhc2UoKTtcblxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IGZpbHRlckRhdGEoc2VhcmNoVGV4dCwgZGF0YSwgYXJncyk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGZpbHRlcmVkRGF0YS5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbHRlcmVkRGF0YVtpXTtcbiAgICAgIGNvbnN0IGlzTWF0Y2ggPSBvcHRpb25zLnByb3BlcnRpZXNUb1NlYXJjaC5maW5kKChwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IChyZXN1bHRbcHJvcGVydHldIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgICB2YWx1ZSA9IG5vcm1hbGl6ZURpYWNyaXRpY3ModmFsdWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaFRleHROb3JtYWxpemVkKSA+IC0xO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIHJldHVybiBzZWFyY2g7XG59XG4iXX0=","/**\n * @internal\n */\nexport var SkyAutocompleteMessageType;\n(function (SkyAutocompleteMessageType) {\n /**\n * Closes the dropdown.\n */\n SkyAutocompleteMessageType[SkyAutocompleteMessageType[\"CloseDropdown\"] = 0] = \"CloseDropdown\";\n /**\n * Repositions the dropdown.\n */\n SkyAutocompleteMessageType[SkyAutocompleteMessageType[\"RepositionDropdown\"] = 1] = \"RepositionDropdown\";\n})(SkyAutocompleteMessageType || (SkyAutocompleteMessageType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksMEJBVVg7QUFWRCxXQUFZLDBCQUEwQjtJQUNwQzs7T0FFRztJQUNILDZGQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsdUdBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQVZXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFVckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZW51bSBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSB7XG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgQ2xvc2VEcm9wZG93biA9IDAsXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRpb25zIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIFJlcG9zaXRpb25Ecm9wZG93biA9IDEsXG59XG4iXX0=","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EnvironmentInjector, EventEmitter, Inject, Input, Optional, Output, TemplateRef, ViewChild, booleanAttribute, inject, input, } from '@angular/core';\nimport { SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyLiveAnnouncerService, } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { BehaviorSubject, Subject, from, fromEvent as observableFromEvent, of, } from 'rxjs';\nimport { debounceTime, delay, map, startWith, switchMap, take, takeUntil, } from 'rxjs/operators';\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"./autocomplete-adapter.service\";\nimport * as i3 from \"@skyux/forms\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/indicators\";\nimport * as i6 from \"@skyux/icon\";\nimport * as i7 from \"@skyux/theme\";\nimport * as i8 from \"@skyux/i18n\";\nimport * as i9 from \"./autocomplete-search-async-disabled.pipe\";\nlet uniqueId = 0;\nexport class SkyAutocompleteComponent {\n /**\n * The static data source for the autocomplete component to search\n * when users enter text. For a dynamic data source, such as an array that\n * changes due to server calls, use `search` or `searchAsync` instead.\n * You can specify static data, such as an array of objects,\n * or you can pull data from a database.\n */\n set data(value) {\n this.#_data = value ?? [];\n }\n get data() {\n return this.#_data;\n }\n /**\n * How many milliseconds to wait before searching while users\n * enter text in the autocomplete field.\n * @default 0\n */\n set debounceTime(value) {\n this.#_debounceTime = value ?? 0;\n }\n get debounceTime() {\n return this.#_debounceTime;\n }\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n set descriptorProperty(value) {\n this.#_descriptorProperty = value || 'name';\n }\n get descriptorProperty() {\n return this.#_descriptorProperty;\n }\n /**\n * @internal\n * Whether to display a button in the dropdown that opens a picker where users can view all options.\n */\n set enableShowMore(value) {\n this.#_enableShowMore = !!value;\n this.#updateIsResultsVisible();\n }\n get enableShowMore() {\n return this.#_enableShowMore;\n }\n /**\n * The observable of `SkyAutocompleteMessage` that can close the dropdown.\n * @internal\n */\n set messageStream(value) {\n this.#_messageStream = value ?? new Subject();\n this.#initMessageStream();\n }\n get messageStream() {\n return this.#_messageStream;\n }\n /**\n * The object properties to search.\n * @default [\"name\"]\n * @deprecated We recommend against using this property. To search specific properties, use the `searchAsync` event instead.\n */\n set propertiesToSearch(value) {\n this.#_propertiesToSearch = value ?? ['name'];\n this.#updateDefaultSearchOptions();\n }\n get propertiesToSearch() {\n return this.#_propertiesToSearch;\n }\n /**\n * The function that dynamically manages the data to display in search results when users\n * change the text in the autocomplete field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated We recommend against using this property. To call a remote data source, use the `searchAsync` event instead.\n */\n set search(value) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n get search() {\n return this.#_search;\n }\n /**\n * The minimum number of characters that users must enter before\n * the autocomplete component searches the data source and displays search\n * results in the dropdown list.\n * @default 1\n */\n set searchTextMinimumCharacters(value) {\n this.#_searchTextMinimumCharacters = value && value > 0 ? value : 1;\n }\n get searchTextMinimumCharacters() {\n return this.#_searchTextMinimumCharacters;\n }\n /**\n * The array of functions to call against each search result. This filters\n * the search results when using the `data` input and the default search function.\n * When the `search` property specifies a custom search function, you must\n * manually apply filters inside that function. The function must return `true`\n * or `false` for each result to indicate whether to display it in the dropdown list.\n *\n * @deprecated We recommend against using this property. To filter results, use the `searchAsync` event instead.\n */\n set searchFilters(value) {\n this.#_searchFilters = value;\n this.#updateDefaultSearchOptions();\n }\n get searchFilters() {\n return this.#_searchFilters;\n }\n /**\n * The maximum number of search results to display in the dropdown list.\n * By default, the component displays all matching results.\n */\n set searchResultsLimit(value) {\n this.#_searchResultsLimit = value || 0;\n }\n get searchResultsLimit() {\n return this.#_searchResultsLimit;\n }\n /**\n * @internal\n * Whether to display a button that lets users add options to the data source.\n * @default false\n */\n set showAddButton(value) {\n this.#_showAddButton = !!value;\n this.#updateIsResultsVisible();\n }\n get showAddButton() {\n return this.#_showAddButton;\n }\n //#endregion\n //#region template_properties\n get searchResults() {\n return this.#_searchResults || [];\n }\n set searchResults(value) {\n this.#_searchResults = value;\n }\n get highlightText() {\n return this.#_highlightText || [];\n }\n set highlightText(value) {\n this.#_highlightText = value;\n }\n get showActionsArea() {\n return !!this.showAddButton || !!this.enableShowMore;\n }\n //#endregion\n set inputDirective(directive) {\n if (!directive) {\n throw Error([\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' '));\n }\n if (this.#_inputDirective !== directive) {\n // Unsubscribe from old subscriptions on any previous input directive\n this.#inputDirectiveUnsubscribe.next();\n this.#_inputDirective = directive;\n this.#_inputDirective.displayWith = this.descriptorProperty;\n this.#_inputDirective.textChanges\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe), debounceTime(this.debounceTime), switchMap((change) => {\n this.isSearchingAsync = true;\n return of(change);\n }))\n .subscribe((change) => {\n this.#searchTextChanged(change.value);\n });\n // We delay this listener by 25ms to give things watching the value time to respond (such as the search button).\n this.#_inputDirective.blur\n .pipe(delay(25), takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n directive.restoreInputTextValueToPreviousState();\n this.#closeDropdown();\n this.#cancelCurrentSearch();\n directive.onTouched();\n this.#hasFocus = false;\n this.#liveAnnounceService.clear();\n });\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.#hasFocus = true;\n if (this.showActionsArea || this.dropdownHintText) {\n this.#openDropdown();\n }\n });\n }\n }\n get inputDirective() {\n return this.#_inputDirective;\n }\n set resultsRef(value) {\n if (value) {\n this.#_resultsRef = value;\n this.#destroyAffixer();\n this.#createAffixer();\n }\n }\n get resultsRef() {\n return this.#_resultsRef;\n }\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n #activeElementIndex;\n #adapterService;\n #affixer;\n #affixService;\n #changeDetector;\n #elementRef;\n #environmentInjector;\n #liveAnnounceService;\n #libResourceService;\n #hasFocus;\n #inputBoxHostSvc;\n #inputDirectiveUnsubscribe;\n #messageStreamSub;\n #ngUnsubscribe;\n #overlay;\n #overlayService;\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n #overlayFocusableElements;\n #currentSearchSub;\n #isResultsVisible;\n #zIndex;\n #_data;\n #_debounceTime;\n #_descriptorProperty;\n #_enableShowMore;\n #_highlightText;\n #_inputDirective;\n #_messageStream;\n #_propertiesToSearch;\n #_resultsRef;\n #_search;\n #_searchFilters;\n #_searchResults;\n #_searchResultsLimit;\n #_searchTextMinimumCharacters;\n #_showAddButton;\n constructor(changeDetector, elementRef, affixService, adapterService, overlayService, inputBoxHostSvc, stackingContext) {\n /**\n * @internal\n * Allows async search to be disabled even when a listener is specified for\n * the `searchAsync` output.\n * @default false\n */\n this.searchAsyncDisabled = false;\n /**\n * When using `searchAsync`, allows the user to specify arbitrary\n * values not in the search results. This only works in combination\n * with `searchAsync`.\n * @default false\n */\n this.allowAnyValue = input(false, ...(ngDevMode ? [{ debugName: \"allowAnyValue\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * Highlights the search text in each search result. Set this to `false`\n * when your search returns results that aren't exact text matches, such as\n * returning \"Bob\" for \"Robert.\"\n * @default true\n */\n this.highlightSearchText = input(true, ...(ngDevMode ? [{ debugName: \"highlightSearchText\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * @internal\n * Fires when users select the button to add options to the data source.\n */\n this.addClick = new EventEmitter();\n /**\n * @internal\n * Fires when users select the button to view all options.\n */\n this.showMoreClick = new EventEmitter();\n /**\n * Fires when users select items in the dropdown list.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n this.searchAsync = new EventEmitter();\n /**\n * @internal\n */\n this.openChange = new EventEmitter();\n this.isOpen = false;\n this.searchText = '';\n this.isSearchingAsync = false;\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n this.#activeElementIndex = -1;\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#liveAnnounceService = inject(SkyLiveAnnouncerService);\n this.#libResourceService = inject(SkyLibResourcesService);\n this.#hasFocus = false;\n this.#inputDirectiveUnsubscribe = new Subject();\n this.#ngUnsubscribe = new Subject();\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n this.#overlayFocusableElements = [];\n this.#isResultsVisible = new BehaviorSubject(false);\n this.#_data = [];\n this.#_debounceTime = 0;\n this.#_descriptorProperty = 'name';\n this.#_enableShowMore = false;\n this.#_messageStream = new Subject();\n this.#_propertiesToSearch = ['name'];\n this.#_searchResultsLimit = 0;\n this.#_searchTextMinimumCharacters = 1;\n this.#_showAddButton = false;\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n this.#adapterService = adapterService;\n this.#overlayService = overlayService;\n this.#inputBoxHostSvc = inputBoxHostSvc;\n this.#zIndex = stackingContext?.zIndex;\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n const id = ++uniqueId;\n this.resultsListId = `sky-autocomplete-list-${id}`;\n this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n this.isResultsVisible = this.#isResultsVisible.asObservable();\n }\n ngAfterViewInit() {\n this.#addInputEventListeners();\n }\n ngOnDestroy() {\n this.#cancelCurrentSearch();\n this.#inputDirectiveUnsubscribe.next();\n this.#inputDirectiveUnsubscribe.complete();\n this.#isResultsVisible.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.openChange.complete();\n }\n addButtonClicked() {\n this.addClick.emit();\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n handleKeydown(event) {\n /* Sanity check */\n /* istanbul ignore else */\n if (event.key) {\n const key = event.key.toLowerCase();\n const activeElement = this.#getActiveElement();\n const activeElementId = activeElement?.id;\n const targetIsSearchResult = this.searchResults.find((r) => r.elementId === activeElementId);\n switch (key) {\n case 'enter':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n }\n else {\n this.#resetSearch();\n }\n }\n else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('click'));\n }\n }\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'tab':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n }\n else {\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n }\n this.#closeDropdown();\n break;\n case 'escape':\n this.#closeDropdown();\n break;\n case 'arrowdown':\n case 'down':\n this.#removeFocusedClass();\n if (this.#activeElementIndex ===\n this.#overlayFocusableElements.length - 1 ||\n this.#activeElementIndex === -1) {\n this.#activeElementIndex = 0;\n }\n else {\n this.#activeElementIndex = this.#activeElementIndex + 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'arrowup':\n case 'up':\n this.#removeFocusedClass();\n if (this.#activeElementIndex <= 0) {\n this.#activeElementIndex =\n this.#overlayFocusableElements.length - 1;\n }\n else {\n this.#activeElementIndex = this.#activeElementIndex - 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n }\n #announceResults() {\n this.#libResourceService\n .getStrings({\n noResults: 'skyux_autocomplete_no_results',\n singleCountResult: 'skyux_autocomplete_one_result',\n multipleCountResults: [\n 'skyux_autocomplete_multiple_results',\n this.searchResultsCount,\n ],\n })\n .pipe(take(1))\n .subscribe((localizedStrings) => {\n let announcementString = '';\n if (this.searchResultsCount && this.searchResultsCount > 0) {\n announcementString =\n this.searchResultsCount === 1\n ? localizedStrings.singleCountResult\n : localizedStrings.multipleCountResults;\n this.#liveAnnounceService.announce(announcementString);\n }\n else if (this.searchResultsCount === 0) {\n this.#liveAnnounceService.announce(localizedStrings.noResults);\n }\n });\n }\n moreButtonClicked() {\n this.showMoreClick.emit({ inputValue: this.searchText });\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n onResultClick(id, event) {\n this.#selectSearchResultById(id);\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n }\n else {\n this.#resetSearch();\n }\n event.preventDefault();\n event.stopPropagation();\n }\n onResultMouseMove(id) {\n if (id !== this.#activeElementIndex) {\n this.#removeFocusedClass();\n this.#activeElementIndex = id;\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n }\n }\n isElementFocused(ref) {\n return ref === this.#overlayFocusableElements[this.#activeElementIndex];\n }\n #searchTextChanged(searchText) {\n if (this.#hasFocus) {\n this.#openDropdown();\n if (!searchText?.trim()) {\n this.#handleEmptySearchText();\n return;\n }\n const isLongEnough = searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n this.searchText = searchText.trim();\n this.#updateIsResultsVisible();\n if (isLongEnough && isDifferent) {\n this.#performSearchAndUpdateResults();\n }\n else {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n }\n else {\n this.isSearchingAsync = false;\n }\n }\n #handleEmptySearchText() {\n // Emit selectionChange if value has been cleared.\n if (this.inputDirective && this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({ selectedItem: undefined });\n }\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n }\n else {\n this.#resetSearch();\n }\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n #performSearchAndUpdateResults() {\n this.#cancelCurrentSearch();\n this.#currentSearchSub = this.#performSearch().subscribe({\n next: (result) => {\n const items = result?.items?.filter((item) => {\n return item && this.descriptorProperty in item;\n });\n this.searchResults =\n items?.map((r, i) => {\n const result = {\n elementId: `${this.resultsListId}-item-${i}`,\n data: r,\n };\n return result;\n }) || [];\n this.searchResultsCount = result?.totalCount || 0;\n this.#displayResultsDropdown();\n },\n complete: () => {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n },\n });\n }\n #displayResultsDropdown() {\n this.highlightText = this.#getHighlightText(this.searchText);\n this.#removeFocusedClass();\n this.#removeActiveDescendant();\n if (this.searchResults.length > 0) {\n this.#activeElementIndex = 0;\n }\n else {\n this.#activeElementIndex = -1;\n }\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n // Safety check\n /* istanbul ignore else */\n if (this.isOpen) {\n // Let the results populate in the DOM before recalculating placement.\n setTimeout(() => {\n if (this.#affixer) {\n this.#affixer.reaffix();\n this.#changeDetector.detectChanges();\n this.#initOverlayFocusableElements();\n }\n });\n }\n else {\n this.#openDropdown();\n this.#changeDetector.markForCheck();\n }\n }\n #performSearch() {\n if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n const searchAsyncArgs = {\n displayType: 'popover',\n offset: 0,\n searchText: this.searchText,\n };\n this.searchAsync.emit(searchAsyncArgs);\n return this.allowAnyValue()\n ? this.#combineSearchTextWithResult(searchAsyncArgs)\n : searchAsyncArgs.result?.pipe(take(1)) || of(undefined);\n }\n const result = this.searchOrDefault(this.searchText, this.data, {\n context: 'popover',\n });\n if (result instanceof Array) {\n return of({ items: result, totalCount: result.length });\n }\n return from(result).pipe(map((items) => {\n return { items, totalCount: items.length };\n }));\n }\n #combineSearchTextWithResult(searchAsyncArgs) {\n const searchTextItem = { [this.descriptorProperty]: this.searchText };\n const searchTextResult = { items: [searchTextItem], totalCount: 1 };\n if (searchAsyncArgs.result) {\n return searchAsyncArgs.result.pipe(take(1), map((result) => {\n if (result.items.some((item) => item[this.descriptorProperty] === this.searchText)) {\n return result;\n }\n // Include a result for the current search text as the first option\n // if no exact match is found in the results.\n return { ...result, items: [searchTextItem, ...result.items] };\n }), \n // Display the current search text immediately while async results load.\n startWith(searchTextResult));\n }\n return of(searchTextResult);\n }\n #cancelCurrentSearch() {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n }\n }\n /**\n * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n */\n #getHighlightText(searchText) {\n if (this.highlightSearchText()) {\n const normalizedSearchText = normalizeDiacritics(searchText)\n .toLocaleUpperCase()\n .trim();\n if (!normalizedSearchText) {\n return [];\n }\n let matchesToHighlight = [];\n for (let i = 0, n = this.searchResults.length; i < n; i++) {\n const value = this.searchResults[i].data[this.descriptorProperty]\n .toString()\n .toLocaleUpperCase();\n const normalizedDataValue = normalizeDiacritics(value);\n let offset = 0;\n let index;\n while ((index = normalizedDataValue.indexOf(normalizedSearchText, offset)) >\n -1) {\n const matchedString = value.slice(index, index + searchText.length);\n offset = index + searchText.length;\n matchesToHighlight = matchesToHighlight.concat(matchedString);\n }\n }\n // Remove any duplicates from the array.\n return [...new Set(matchesToHighlight)];\n }\n return [];\n }\n #selectSearchResultById(id) {\n const result = this.searchResults.find((r) => r.elementId === id);\n /* istanbul ignore else */\n if (result) {\n const data = result.data;\n this.searchText = data[this.descriptorProperty];\n if (this.inputDirective) {\n this.inputDirective.value = data;\n }\n this.selectionChange.emit({ selectedItem: data });\n }\n }\n #openDropdown() {\n if (!this.#overlay && this.resultsTemplateRef) {\n const overlay = this.#overlayService.create({\n enableClose: false,\n enablePointerEvents: true,\n environmentInjector: this.#environmentInjector,\n wrapperClass: this.wrapperClass,\n });\n if (this.#zIndex) {\n this.#zIndex.pipe(takeUntil(overlay.closed)).subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n overlay.attachTemplate(this.resultsTemplateRef);\n this.#overlay = overlay;\n this.isOpen = true;\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n this.#updateAriaControls();\n this.#initOverlayFocusableElements();\n this.#announceResults();\n this.openChange.emit(true);\n }\n }\n #closeDropdown() {\n this.#resetSearch();\n this.isOpen = false;\n this.#destroyOverlay();\n this.#removeActiveDescendant();\n this.#updateAriaControls();\n this.#changeDetector.markForCheck();\n this.openChange.emit(false);\n }\n #setActiveDescendant() {\n const activeElement = this.#overlayFocusableElements[this.#activeElementIndex];\n /* Sanity check */\n /* istanbul ignore else */\n if (activeElement && this.inputDirective) {\n this.inputDirective.setActiveDescendant(activeElement.id);\n }\n }\n #removeActiveDescendant() {\n if (this.inputDirective) {\n this.inputDirective.setActiveDescendant(null);\n }\n }\n #updateAriaControls() {\n if (this.inputDirective) {\n this.inputDirective.setAriaControls(this.#overlay?.id || null);\n }\n }\n #resetSearch() {\n this.searchResults = [];\n this.searchText = '';\n this.highlightText = [];\n this.#removeFocusedClass();\n this.#activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.#removeActiveDescendant();\n this.#initOverlayFocusableElements();\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n }\n #addInputEventListeners() {\n const element = this.#elementRef.nativeElement;\n observableFromEvent(element, 'keydown')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n this.handleKeydown(event);\n });\n observableFromEvent(window, 'resize')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen && this.resultsRef) {\n this.#adapterService.setDropdownWidth(this.#elementRef, this.resultsRef, !!this.#inputBoxHostSvc);\n }\n });\n }\n #destroyOverlay() {\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n #createAffixer() {\n /* Sanity check */\n /* istanbul ignore else */\n if (!this.#affixer && this.resultsRef) {\n const affixer = this.#affixService.createAffixer(this.resultsRef);\n this.#adapterService.setDropdownWidth(this.#elementRef, this.resultsRef, !!this.#inputBoxHostSvc);\n affixer.affixTo(this.#elementRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n isSticky: true,\n placement: 'below',\n horizontalAlignment: 'left',\n });\n this.#affixer = affixer;\n }\n }\n #destroyAffixer() {\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #initMessageStream() {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n this.#messageStreamSub = undefined;\n }\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message) => {\n switch (message.type) {\n case SkyAutocompleteMessageType.CloseDropdown:\n this.#closeDropdown();\n break;\n case SkyAutocompleteMessageType.RepositionDropdown:\n // Settimeout waits for changes in DOM (e.g., tokens being removed)\n setTimeout(() => {\n /* istanbul ignore else */\n if (this.#affixer) {\n this.#affixer.reaffix();\n }\n });\n break;\n }\n });\n }\n #initOverlayFocusableElements() {\n // Wait for dropdown elements to render.\n setTimeout(() => {\n if (this.#overlay) {\n this.#overlayFocusableElements =\n this.#adapterService.getOverlayFocusableElements(this.#overlay);\n this.#overlayFocusableElements.forEach((el) => {\n this.#adapterService.setTabIndex(el, -1);\n });\n this.#addFocusedClass();\n this.#announceResults();\n }\n });\n }\n #getActiveElement() {\n return this.#overlayFocusableElements[this.#activeElementIndex];\n }\n #removeFocusedClass() {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.removeCSSClass(this.#overlayFocusableElements[this.#activeElementIndex], 'sky-autocomplete-descendant-focus');\n }\n }\n #addFocusedClass() {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.addCSSClass(this.#overlayFocusableElements[this.#activeElementIndex], 'sky-autocomplete-descendant-focus');\n this.#setActiveDescendant();\n }\n }\n #updateDefaultSearchOptions() {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n #updateIsResultsVisible() {\n const isResultsVisible = !!this.searchText &&\n (!this.showActionsArea || this.searchResults.length > 0);\n if (isResultsVisible !== this.#isResultsVisible.getValue()) {\n this.#isResultsVisible.next(isResultsVisible);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyAffixService }, { token: i2.SkyAutocompleteAdapterService }, { token: i1.SkyOverlayService }, { token: i3.SkyInputBoxHostService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyAutocompleteComponent, isStandalone: false, selector: \"sky-autocomplete\", inputs: { ariaLabelledBy: { classPropertyName: \"ariaLabelledBy\", publicName: \"ariaLabelledBy\", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: \"data\", publicName: \"data\", isSignal: false, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: \"debounceTime\", publicName: \"debounceTime\", isSignal: false, isRequired: false, transformFunction: null }, descriptorProperty: { classPropertyName: \"descriptorProperty\", publicName: \"descriptorProperty\", isSignal: false, isRequired: false, transformFunction: null }, dropdownHintText: { classPropertyName: \"dropdownHintText\", publicName: \"dropdownHintText\", isSignal: false, isRequired: false, transformFunction: null }, enableShowMore: { classPropertyName: \"enableShowMore\", publicName: \"enableShowMore\", isSignal: false, isRequired: false, transformFunction: null }, messageStream: { classPropertyName: \"messageStream\", publicName: \"messageStream\", isSignal: false, isRequired: false, transformFunction: null }, wrapperClass: { classPropertyName: \"wrapperClass\", publicName: \"wrapperClass\", isSignal: false, isRequired: false, transformFunction: null }, propertiesToSearch: { classPropertyName: \"propertiesToSearch\", publicName: \"propertiesToSearch\", isSignal: false, isRequired: false, transformFunction: null }, search: { classPropertyName: \"search\", publicName: \"search\", isSignal: false, isRequired: false, transformFunction: null }, searchResultTemplate: { classPropertyName: \"searchResultTemplate\", publicName: \"searchResultTemplate\", isSignal: false, isRequired: false, transformFunction: null }, searchTextMinimumCharacters: { classPropertyName: \"searchTextMinimumCharacters\", publicName: \"searchTextMinimumCharacters\", isSignal: false, isRequired: false, transformFunction: null }, searchFilters: { classPropertyName: \"searchFilters\", publicName: \"searchFilters\", isSignal: false, isRequired: false, transformFunction: null }, searchResultsLimit: { classPropertyName: \"searchResultsLimit\", publicName: \"searchResultsLimit\", isSignal: false, isRequired: false, transformFunction: null }, showAddButton: { classPropertyName: \"showAddButton\", publicName: \"showAddButton\", isSignal: false, isRequired: false, transformFunction: null }, noResultsFoundText: { classPropertyName: \"noResultsFoundText\", publicName: \"noResultsFoundText\", isSignal: false, isRequired: false, transformFunction: null }, searchAsyncDisabled: { classPropertyName: \"searchAsyncDisabled\", publicName: \"searchAsyncDisabled\", isSignal: false, isRequired: false, transformFunction: null }, allowAnyValue: { classPropertyName: \"allowAnyValue\", publicName: \"allowAnyValue\", isSignal: true, isRequired: false, transformFunction: null }, highlightSearchText: { classPropertyName: \"highlightSearchText\", publicName: \"highlightSearchText\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addClick: \"addClick\", showMoreClick: \"showMoreClick\", selectionChange: \"selectionChange\", searchAsync: \"searchAsync\", openChange: \"openChange\" }, providers: [SkyAutocompleteAdapterService], queries: [{ propertyName: \"inputDirective\", first: true, predicate: SkyAutocompleteInputDirective, descendants: true }], viewQueries: [{ propertyName: \"resultsTemplateRef\", first: true, predicate: [\"resultsTemplateRef\"], descendants: true, read: TemplateRef }, { propertyName: \"resultsRef\", first: true, predicate: [\"resultsRef\"], descendants: true, read: ElementRef }], ngImport: i0, template: \"<div\\n aria-autocomplete=\\\"list\\\"\\n aria-haspopup=\\\"listbox\\\"\\n class=\\\"sky-autocomplete\\\"\\n role=\\\"combobox\\\"\\n [attr.aria-expanded]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-controls]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n ? resultsListId\\n : null\\n \\\"\\n [attr.id]=\\\"resultsWrapperId\\\"\\n>\\n <ng-content />\\n</div>\\n\\n<ng-template #resultsTemplateRef>\\n <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\\n <div\\n #resultsRef\\n class=\\\"sky-autocomplete-results-container\\\"\\n [attr.id]=\\\"resultsListId\\\"\\n [skyThemeClass]=\\\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\\\"\\n (mousedown)=\\\"$event.preventDefault()\\\"\\n (keydown)=\\\"handleKeydown($event)\\\"\\n >\\n @if (isSearchingAsync && !allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n } @else {\\n @if (isResultsVisible | async) {\\n <div\\n class=\\\"sky-autocomplete-results\\\"\\n role=\\\"listbox\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n >\\n @for (result of searchResults; track result.data; let i = $index) {\\n @if (\\n (!searchResultsLimit || i < searchResultsLimit) &&\\n !(enableShowMore && i >= 5)\\n ) {\\n <div\\n #searchResultEl\\n class=\\\"sky-autocomplete-result\\\"\\n role=\\\"option\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-selected]=\\\"isElementFocused(searchResultEl)\\\"\\n [attr.data-descriptor-value]=\\\"result.data[descriptorProperty]\\\"\\n [attr.id]=\\\"result.elementId\\\"\\n [skyHighlight]=\\\"highlightText\\\"\\n (click)=\\\"onResultClick(result.elementId, $event)\\\"\\n (mousemove)=\\\"onResultMouseMove(i)\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n searchResultTemplate || defaultSearchResultTemplate;\\n context: { item: result.data }\\n \\\"\\n />\\n </div>\\n }\\n }\\n @if (isSearchingAsync && allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n }\\n @if (searchResults.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-autocomplete-no-results\\\">\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n </div>\\n } @else if (dropdownHintText) {\\n <div class=\\\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\\\">\\n {{ dropdownHintText }}\\n </div>\\n }\\n @if (showActionsArea) {\\n <div class=\\\"sky-autocomplete-actions\\\">\\n @if (enableShowMore && (!searchText || searchResults.length > 0)) {\\n <button\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\\\"\\n type=\\\"button\\\"\\n (click)=\\\"moreButtonClicked()\\\"\\n >\\n @if (\\n !(\\n searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\\n ) &&\\n searchResults.length === 0 &&\\n !searchText\\n ) {\\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\\n }\\n @if (\\n (searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\\n !searchText\\n ) {\\n {{\\n 'skyux_autocomplete_show_all_count'\\n | skyLibResources\\n : (data.length | skyNumeric: { truncate: false })\\n }}\\n }\\n @if (searchText) {\\n {{\\n 'skyux_autocomplete_show_matches_count'\\n | skyLibResources\\n : (searchResultsCount === undefined\\n ? data.length\\n : (searchResultsCount\\n | skyNumeric: { truncate: false }))\\n }}\\n }\\n </button>\\n }\\n @if (searchText && searchResults.length === 0) {\\n <div\\n class=\\\"sky-font-deemphasized sky-autocomplete-actions-no-results\\\"\\n >\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n @if (showAddButton) {\\n <button\\n #addButtonEl\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\\\"\\n tabindex=\\\"0\\\"\\n type=\\\"button\\\"\\n [class.focused]=\\\"isElementFocused(addButtonEl)\\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_autocomplete_add' | skyLibResources }}\\n </button>\\n }\\n </div>\\n }\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #defaultSearchResultTemplate let-item=\\\"item\\\">\\n {{ item[descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-autocomplete-results-container:not(.sky-theme-modern *){--sky-override-autocomplete-actions-add-icon-padding-right: 5px;--sky-override-autocomplete-actions-no-results-line-height: normal;--sky-override-autocomplete-actions-no-results-padding: 7px 13px;--sky-override-autocomplete-actions-top-border: 1px solid #cdcfd2;--sky-override-autocomplete-dropdown-hint-text-line-height: normal;--sky-override-autocomplete-dropdown-hint-text-padding: 7px 13px;--sky-override-autocomplete-no-results-font-size: 15px;--sky-override-autocomplete-no-results-padding: 5px 10px 5px 10px;--sky-override-autocomplete-result-background-color: transparent;--sky-override-autocomplete-result-border-radius: 0;--sky-override-autocomplete-result-box-shadow: none;--sky-override-autocomplete-result-focus-background-color: #eeeeef;--sky-override-autocomplete-result-focus-box-shadow: none;--sky-override-autocomplete-result-margin-bottom: 4px;--sky-override-autocomplete-result-padding: 3px 20px;--sky-override-autocomplete-results-container-background-color: #ffffff;--sky-override-autocomplete-results-container-border-radius: 0;--sky-override-autocomplete-results-no-results-padding: 4px;--sky-override-autocomplete-results-padding: 4px}:host-context(sky-input-box) :host{width:100%}.sky-autocomplete-results-container{position:fixed;background-color:var(--sky-override-autocomplete-results-container-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-autocomplete-results-container-border-radius, var(--sky-border-radius-m))}.sky-autocomplete-results-waiting{height:70px}.sky-autocomplete-results{display:flex;flex-direction:column;padding:var(--sky-override-autocomplete-results-padding, var(--sky-comp-dropdown-menu-space-inset-top) 0 var(--sky-comp-dropdown-menu-space-inset-bottom));overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}.sky-autocomplete-results:has(.sky-autocomplete-no-results){padding:var(--sky-override-autocomplete-results-no-results-padding, 0)}.sky-autocomplete-result{background-color:var(--sky-override-autocomplete-result-background-color, var(--sky-color-background-action-tertiary-base));border-radius:var(--sky-override-autocomplete-result-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-autocomplete-result-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base));margin-bottom:var(--sky-override-autocomplete-result-margin-bottom, var(--sky-space-gap-action_group-s));padding:var(--sky-override-autocomplete-result-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));cursor:pointer}.sky-autocomplete-result:last-child{margin-bottom:0}.sky-autocomplete-no-results{padding:var(--sky-override-autocomplete-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));font-size:var(--sky-override-autocomplete-no-results-font-size, inherit)}.sky-autocomplete-actions{border-top:var(--sky-override-autocomplete-actions-top-border, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}.sky-autocomplete-actions .sky-autocomplete-action{border:none}.sky-autocomplete-actions .sky-autocomplete-actions-no-results{display:inline-block;padding:var(--sky-override-autocomplete-actions-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-actions-no-results-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-dropdown-hint-text{display:inline-block;padding:var(--sky-override-autocomplete-dropdown-hint-text-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-dropdown-hint-text-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-action-add{float:right}.sky-autocomplete-action-add sky-icon{padding-right:var(--sky-override-autocomplete-actions-add-icon-padding-right, var(--sky-space-gap-icon-s))}.sky-autocomplete-descendant-focus:not(.sky-autocomplete-action){background-color:var(--sky-override-autocomplete-result-focus-background-color, inherit)}.sky-autocomplete-descendant-focus.sky-autocomplete-action{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-autocomplete-descendant-focus{border:none;box-shadow:var(--sky-override-autocomplete-result-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i5.SkyTextHighlightDirective, selector: \"[skyHighlight]\", inputs: [\"skyHighlight\"] }, { kind: \"component\", type: i6.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i7.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"component\", type: i5.λ14, selector: \"sky-wait\", inputs: [\"ariaLabel\", \"isWaiting\", \"isFullPage\", \"isNonBlocking\", \"screenReaderCompletedText\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i8.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"pipe\", type: i1.SkyNumericPipe, name: \"skyNumeric\" }, { kind: \"pipe\", type: i9.SkyAutocompleteSearchAsyncDisabledPipe, name: \"skyAutocompleteSearchAsyncDisabled\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-autocomplete', providers: [SkyAutocompleteAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div\\n aria-autocomplete=\\\"list\\\"\\n aria-haspopup=\\\"listbox\\\"\\n class=\\\"sky-autocomplete\\\"\\n role=\\\"combobox\\\"\\n [attr.aria-expanded]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.aria-controls]=\\\"\\n isOpen &&\\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\\n ? resultsListId\\n : null\\n \\\"\\n [attr.id]=\\\"resultsWrapperId\\\"\\n>\\n <ng-content />\\n</div>\\n\\n<ng-template #resultsTemplateRef>\\n <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\\n <div\\n #resultsRef\\n class=\\\"sky-autocomplete-results-container\\\"\\n [attr.id]=\\\"resultsListId\\\"\\n [skyThemeClass]=\\\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\\\"\\n (mousedown)=\\\"$event.preventDefault()\\\"\\n (keydown)=\\\"handleKeydown($event)\\\"\\n >\\n @if (isSearchingAsync && !allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n } @else {\\n @if (isResultsVisible | async) {\\n <div\\n class=\\\"sky-autocomplete-results\\\"\\n role=\\\"listbox\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n >\\n @for (result of searchResults; track result.data; let i = $index) {\\n @if (\\n (!searchResultsLimit || i < searchResultsLimit) &&\\n !(enableShowMore && i >= 5)\\n ) {\\n <div\\n #searchResultEl\\n class=\\\"sky-autocomplete-result\\\"\\n role=\\\"option\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-selected]=\\\"isElementFocused(searchResultEl)\\\"\\n [attr.data-descriptor-value]=\\\"result.data[descriptorProperty]\\\"\\n [attr.id]=\\\"result.elementId\\\"\\n [skyHighlight]=\\\"highlightText\\\"\\n (click)=\\\"onResultClick(result.elementId, $event)\\\"\\n (mousemove)=\\\"onResultMouseMove(i)\\\"\\n >\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n searchResultTemplate || defaultSearchResultTemplate;\\n context: { item: result.data }\\n \\\"\\n />\\n </div>\\n }\\n }\\n @if (isSearchingAsync && allowAnyValue()) {\\n <div class=\\\"sky-autocomplete-results-waiting\\\">\\n <sky-wait [isWaiting]=\\\"true\\\" />\\n </div>\\n }\\n @if (searchResults.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-autocomplete-no-results\\\">\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n </div>\\n } @else if (dropdownHintText) {\\n <div class=\\\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\\\">\\n {{ dropdownHintText }}\\n </div>\\n }\\n @if (showActionsArea) {\\n <div class=\\\"sky-autocomplete-actions\\\">\\n @if (enableShowMore && (!searchText || searchResults.length > 0)) {\\n <button\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\\\"\\n type=\\\"button\\\"\\n (click)=\\\"moreButtonClicked()\\\"\\n >\\n @if (\\n !(\\n searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\\n ) &&\\n searchResults.length === 0 &&\\n !searchText\\n ) {\\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\\n }\\n @if (\\n (searchAsync\\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\\n !searchText\\n ) {\\n {{\\n 'skyux_autocomplete_show_all_count'\\n | skyLibResources\\n : (data.length | skyNumeric: { truncate: false })\\n }}\\n }\\n @if (searchText) {\\n {{\\n 'skyux_autocomplete_show_matches_count'\\n | skyLibResources\\n : (searchResultsCount === undefined\\n ? data.length\\n : (searchResultsCount\\n | skyNumeric: { truncate: false }))\\n }}\\n }\\n </button>\\n }\\n @if (searchText && searchResults.length === 0) {\\n <div\\n class=\\\"sky-font-deemphasized sky-autocomplete-actions-no-results\\\"\\n >\\n {{\\n noResultsFoundText ||\\n ('skyux_autocomplete_no_results' | skyLibResources)\\n }}\\n </div>\\n }\\n @if (showAddButton) {\\n <button\\n #addButtonEl\\n class=\\\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\\\"\\n tabindex=\\\"0\\\"\\n type=\\\"button\\\"\\n [class.focused]=\\\"isElementFocused(addButtonEl)\\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_autocomplete_add' | skyLibResources }}\\n </button>\\n }\\n </div>\\n }\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #defaultSearchResultTemplate let-item=\\\"item\\\">\\n {{ item[descriptorProperty] }}\\n</ng-template>\\n\", styles: [\".sky-autocomplete-results-container:not(.sky-theme-modern *){--sky-override-autocomplete-actions-add-icon-padding-right: 5px;--sky-override-autocomplete-actions-no-results-line-height: normal;--sky-override-autocomplete-actions-no-results-padding: 7px 13px;--sky-override-autocomplete-actions-top-border: 1px solid #cdcfd2;--sky-override-autocomplete-dropdown-hint-text-line-height: normal;--sky-override-autocomplete-dropdown-hint-text-padding: 7px 13px;--sky-override-autocomplete-no-results-font-size: 15px;--sky-override-autocomplete-no-results-padding: 5px 10px 5px 10px;--sky-override-autocomplete-result-background-color: transparent;--sky-override-autocomplete-result-border-radius: 0;--sky-override-autocomplete-result-box-shadow: none;--sky-override-autocomplete-result-focus-background-color: #eeeeef;--sky-override-autocomplete-result-focus-box-shadow: none;--sky-override-autocomplete-result-margin-bottom: 4px;--sky-override-autocomplete-result-padding: 3px 20px;--sky-override-autocomplete-results-container-background-color: #ffffff;--sky-override-autocomplete-results-container-border-radius: 0;--sky-override-autocomplete-results-no-results-padding: 4px;--sky-override-autocomplete-results-padding: 4px}:host-context(sky-input-box) :host{width:100%}.sky-autocomplete-results-container{position:fixed;background-color:var(--sky-override-autocomplete-results-container-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-autocomplete-results-container-border-radius, var(--sky-border-radius-m))}.sky-autocomplete-results-waiting{height:70px}.sky-autocomplete-results{display:flex;flex-direction:column;padding:var(--sky-override-autocomplete-results-padding, var(--sky-comp-dropdown-menu-space-inset-top) 0 var(--sky-comp-dropdown-menu-space-inset-bottom));overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}.sky-autocomplete-results:has(.sky-autocomplete-no-results){padding:var(--sky-override-autocomplete-results-no-results-padding, 0)}.sky-autocomplete-result{background-color:var(--sky-override-autocomplete-result-background-color, var(--sky-color-background-action-tertiary-base));border-radius:var(--sky-override-autocomplete-result-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-autocomplete-result-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base));margin-bottom:var(--sky-override-autocomplete-result-margin-bottom, var(--sky-space-gap-action_group-s));padding:var(--sky-override-autocomplete-result-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));cursor:pointer}.sky-autocomplete-result:last-child{margin-bottom:0}.sky-autocomplete-no-results{padding:var(--sky-override-autocomplete-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) var(--sky-comp-dropdown-option-space-inset-right) var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));font-size:var(--sky-override-autocomplete-no-results-font-size, inherit)}.sky-autocomplete-actions{border-top:var(--sky-override-autocomplete-actions-top-border, var(--sky-border-width-divider) var(--sky-border-style-divider) var(--sky-color-border-divider))}.sky-autocomplete-actions .sky-autocomplete-action{border:none}.sky-autocomplete-actions .sky-autocomplete-actions-no-results{display:inline-block;padding:var(--sky-override-autocomplete-actions-no-results-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-actions-no-results-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-dropdown-hint-text{display:inline-block;padding:var(--sky-override-autocomplete-dropdown-hint-text-padding, var(--sky-comp-dropdown-option-space-inset-top) 0 var(--sky-comp-dropdown-option-space-inset-bottom) var(--sky-comp-dropdown-option-space-inset-left));line-height:var(--sky-override-autocomplete-dropdown-hint-text-line-height, var(--sky-font-line_height-body-m))}.sky-autocomplete-action-add{float:right}.sky-autocomplete-action-add sky-icon{padding-right:var(--sky-override-autocomplete-actions-add-icon-padding-right, var(--sky-space-gap-icon-s))}.sky-autocomplete-descendant-focus:not(.sky-autocomplete-action){background-color:var(--sky-override-autocomplete-result-focus-background-color, inherit)}.sky-autocomplete-descendant-focus.sky-autocomplete-action{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-autocomplete-descendant-focus{border:none;box-shadow:var(--sky-override-autocomplete-result-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyAffixService }, { type: i2.SkyAutocompleteAdapterService }, { type: i1.SkyOverlayService }, { type: i3.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_STACKING_CONTEXT]\n }] }], propDecorators: { ariaLabelledBy: [{\n type: Input\n }], data: [{\n type: Input\n }], debounceTime: [{\n type: Input\n }], descriptorProperty: [{\n type: Input\n }], dropdownHintText: [{\n type: Input\n }], enableShowMore: [{\n type: Input\n }], messageStream: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], propertiesToSearch: [{\n type: Input\n }], search: [{\n type: Input\n }], searchResultTemplate: [{\n type: Input\n }], searchTextMinimumCharacters: [{\n type: Input\n }], searchFilters: [{\n type: Input\n }], searchResultsLimit: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], noResultsFoundText: [{\n type: Input\n }], searchAsyncDisabled: [{\n type: Input\n }], allowAnyValue: [{ type: i0.Input, args: [{ isSignal: true, alias: \"allowAnyValue\", required: false }] }], highlightSearchText: [{ type: i0.Input, args: [{ isSignal: true, alias: \"highlightSearchText\", required: false }] }], addClick: [{\n type: Output\n }], showMoreClick: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], searchAsync: [{\n type: Output\n }], openChange: [{\n type: Output\n }], inputDirective: [{\n type: ContentChild,\n args: [SkyAutocompleteInputDirective]\n }], resultsTemplateRef: [{\n type: ViewChild,\n args: ['resultsTemplateRef', { read: TemplateRef }]\n }], resultsRef: [{\n type: ViewChild,\n args: ['resultsRef', { read: ElementRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsRUFHdEIsdUJBQXVCLEdBSXhCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFFUCxJQUFJLEVBQ0osU0FBUyxJQUFJLG1CQUFtQixFQUNoQyxFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7O0FBZ0IvRSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFVakIsTUFBTSxPQUFPLHdCQUF3QjtJQVduQzs7Ozs7O09BTUc7SUFDSCxJQUNXLElBQUksQ0FBQyxLQUF3QjtRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csWUFBWSxDQUFDLEtBQXlCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csa0JBQWtCLENBQUMsS0FBeUI7UUFDckQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssSUFBSSxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFTRDs7O09BR0c7SUFDSCxJQUNXLGNBQWMsQ0FBQyxLQUEwQjtRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNXLGFBQWEsQ0FBQyxLQUFrRDtRQUN6RSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUN0RSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBUUQ7Ozs7T0FJRztJQUNILElBQ1csa0JBQWtCLENBQUMsS0FBMkI7UUFDdkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFDVyxNQUFNLENBQUMsS0FBZ0Q7UUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWU7WUFDbEIsS0FBSztnQkFDTCxvQ0FBb0MsQ0FBQztvQkFDbkMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtvQkFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUNsQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFVRDs7Ozs7T0FLRztJQUNILElBQ1csMkJBQTJCLENBQUMsS0FBeUI7UUFDOUQsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBVywyQkFBMkI7UUFDcEMsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFDVyxhQUFhLENBQ3RCLEtBQXdEO1FBRXhELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTdCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFHdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNXLGtCQUFrQixDQUFDLEtBQXlCO1FBQ3JELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csYUFBYSxDQUFDLEtBQTBCO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBbUVELFlBQVk7SUFFWiw2QkFBNkI7SUFFN0IsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsYUFBYSxDQUFDLEtBQW9DO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxhQUFhLENBQUMsS0FBZTtRQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBVUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDdkQsQ0FBQztJQU1ELFlBQVk7SUFFWixJQUNXLGNBQWMsQ0FDdkIsU0FBb0Q7UUFFcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxLQUFLLENBQ1Q7Z0JBQ0UsK0RBQStEO2dCQUMvRCxpRUFBaUU7Z0JBQ2pFLHdDQUF3QzthQUN6QyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDWixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUVsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUU1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVztpQkFDOUIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFDMUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDL0IsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUNIO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1lBRUwsZ0hBQWdIO1lBQ2hILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJO2lCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztpQkFDM0QsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxTQUFTLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7aUJBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7aUJBQ2hELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBS0QsSUFDVyxVQUFVLENBQUMsS0FBNkI7UUFDakQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFNRDs7T0FFRztJQUNILG1CQUFtQixDQUFNO0lBRXpCLGVBQWUsQ0FBZ0M7SUFFL0MsUUFBUSxDQUF5QjtJQUVqQyxhQUFhLENBQWtCO0lBRS9CLGVBQWUsQ0FBb0I7SUFFbkMsV0FBVyxDQUFhO0lBRWYsb0JBQW9CLENBQStCO0lBRW5ELG9CQUFvQixDQUFtQztJQUV2RCxtQkFBbUIsQ0FBa0M7SUFFOUQsU0FBUyxDQUFTO0lBRWxCLGdCQUFnQixDQUFxQztJQUVyRCwwQkFBMEIsQ0FBdUI7SUFFakQsaUJBQWlCLENBQTJCO0lBRTVDLGNBQWMsQ0FBdUI7SUFFckMsUUFBUSxDQUFpQztJQUV6QyxlQUFlLENBQW9CO0lBRW5DOzs7O09BSUc7SUFDSCx5QkFBeUIsQ0FBcUI7SUFFOUMsaUJBQWlCLENBQTJCO0lBRTVDLGlCQUFpQixDQUF1QztJQUV4RCxPQUFPLENBQWlDO0lBRXhDLE1BQU0sQ0FBYTtJQUVuQixjQUFjLENBQUs7SUFFbkIsb0JBQW9CLENBQVU7SUFFOUIsZ0JBQWdCLENBQVM7SUFFekIsZUFBZSxDQUF1QjtJQUV0QyxnQkFBZ0IsQ0FBNEM7SUFFNUQsZUFBZSxDQUF5QztJQUV4RCxvQkFBb0IsQ0FBWTtJQUVoQyxZQUFZLENBQXlCO0lBRXJDLFFBQVEsQ0FBNEM7SUFFcEQsZUFBZSxDQUFvRDtJQUVuRSxlQUFlLENBQTRDO0lBRTNELG9CQUFvQixDQUFLO0lBRXpCLDZCQUE2QixDQUFLO0lBRWxDLGVBQWUsQ0FBUztJQUV4QixZQUNFLGNBQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLFlBQTZCLEVBQzdCLGNBQTZDLEVBQzdDLGNBQWlDLEVBQ3JCLGVBQXdDLEVBR3BELGVBQW9DO1FBelF0Qzs7Ozs7V0FLRztRQUVJLHdCQUFtQixHQUF3QixLQUFLLENBQUM7UUFFeEQ7Ozs7O1dBS0c7UUFDSSxrQkFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLGlEQUFJLFNBQVMsRUFBRSxnQkFBZ0IsT0FBN0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDO1FBRXJFOzs7OztXQUtHO1FBQ0ksd0JBQW1CLEdBQUcsS0FBSyxDQUFDLElBQUksdURBQUksU0FBUyxFQUFFLGdCQUFnQixPQUE3QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFDLENBQUM7UUFFMUU7OztXQUdHO1FBRUksYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFM0M7OztXQUdHO1FBRUksa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUV2RTs7V0FFRztRQUVJLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWtDLENBQUM7UUFFNUU7OztXQUdHO1FBRUksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBa0MsQ0FBQztRQUV4RTs7V0FFRztRQUVJLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBc0J6QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBTWYsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQU1oQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUF3RmhDOztXQUVHO1FBQ0gsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFZaEIseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFbkQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFdkQsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFOUQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUlsQiwrQkFBMEIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSWpELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU1yQzs7OztXQUlHO1FBQ0gsOEJBQXlCLEdBQWtCLEVBQUUsQ0FBQztRQUk5QyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUl4RCxXQUFNLEdBQVUsRUFBRSxDQUFDO1FBRW5CLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQUU5QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFNekIsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUV4RCx5QkFBb0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBVWhDLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUV6QixrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFFbEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFhdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsRUFBRSxNQUFNLENBQUM7UUFFdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxvQ0FBb0MsQ0FBQztZQUMxRCxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUM1QixhQUFhLEVBQUUsU0FBUztTQUN6QixDQUFDLENBQUM7UUFFSCxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUF5QixFQUFFLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsNEJBQTRCLEVBQUUsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQjtRQUN2QyxrQkFBa0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLGVBQWUsR0FBRyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ2xELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FDdkMsQ0FBQztZQUVGLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ1osS0FBSyxPQUFPO29CQUNWLElBQUksb0JBQW9CLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUNwRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3hCLENBQUM7NkJBQU0sQ0FBQzs0QkFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQ3RCLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksYUFBYSxFQUFFLENBQUM7NEJBQ2xCLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsQ0FBQztvQkFDSCxDQUFDO29CQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN4QixNQUFNO2dCQUVSLEtBQUssS0FBSztvQkFDUixJQUFJLG9CQUFvQixFQUFFLENBQUM7d0JBQ3pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDaEQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLG9DQUFvQyxFQUFFLENBQUM7d0JBQzdELENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3RCLE1BQU07Z0JBRVIsS0FBSyxRQUFRO29CQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsTUFBTTtnQkFFUixLQUFLLFdBQVcsQ0FBQztnQkFDakIsS0FBSyxNQUFNO29CQUNULElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUMzQixJQUNFLElBQUksQ0FBQyxtQkFBbUI7d0JBQ3RCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxFQUMvQixDQUFDO3dCQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7b0JBQy9CLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztvQkFDMUQsQ0FBQztvQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLE1BQU07Z0JBRVIsS0FBSyxTQUFTLENBQUM7Z0JBQ2YsS0FBSyxJQUFJO29CQUNQLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUMzQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLG1CQUFtQjs0QkFDdEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQzlDLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztvQkFDMUQsQ0FBQztvQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsbUJBQW1CO2FBQ3JCLFVBQVUsQ0FBQztZQUNWLFNBQVMsRUFBRSwrQkFBK0I7WUFDMUMsaUJBQWlCLEVBQUUsK0JBQStCO1lBQ2xELG9CQUFvQixFQUFFO2dCQUNwQixxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxrQkFBa0I7YUFDeEI7U0FDRixDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDOUIsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzRCxrQkFBa0I7b0JBQ2hCLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxDQUFDO3dCQUMzQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCO3dCQUNwQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxFQUFVLEVBQUUsS0FBaUI7UUFDaEQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFVO1FBQ2pDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEdBQWdCO1FBQ3RDLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBOEI7UUFDL0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlCLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxZQUFZLEdBQ2hCLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDO1lBQ3hELE1BQU0sV0FBVyxHQUFHLFVBQVUsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBRW5ELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBRS9CLElBQUksWUFBWSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsOEJBQThCO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZELElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNmLE1BQU0sS0FBSyxHQUNULE1BQU0sRUFBRSxLQUNULEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2pCLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxhQUFhO29CQUNoQixLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNsQixNQUFNLE1BQU0sR0FBZ0M7NEJBQzFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLFNBQVMsQ0FBQyxFQUFFOzRCQUM1QyxJQUFJLEVBQUUsQ0FBQzt5QkFDUixDQUFDO3dCQUNGLE9BQU8sTUFBTSxDQUFDO29CQUNoQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRVgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDO2dCQUVsRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEMsZUFBZTtRQUNmLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixzRUFBc0U7WUFDdEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7Z0JBQ3ZDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkUsTUFBTSxlQUFlLEdBQW1DO2dCQUN0RCxXQUFXLEVBQUUsU0FBUztnQkFDdEIsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzVCLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUV2QyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsZUFBZSxDQUFDO2dCQUNwRCxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM5RCxPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDLENBQUM7UUFFSCxJQUFJLE1BQU0sWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsNEJBQTRCLENBQzFCLGVBQStDO1FBRS9DLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEUsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUVwRSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2IsSUFDRyxNQUFNLENBQUMsS0FBa0MsQ0FBQyxJQUFJLENBQzdDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FDNUQsRUFDRCxDQUFDO29CQUNELE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDO2dCQUVELG1FQUFtRTtnQkFDbkUsNkNBQTZDO2dCQUM3QyxPQUFPLEVBQUUsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakUsQ0FBQyxDQUFDO1lBQ0Ysd0VBQXdFO1lBQ3hFLFNBQVMsQ0FBbUMsZ0JBQWdCLENBQUMsQ0FDOUQsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsVUFBa0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDO2lCQUN6RCxpQkFBaUIsRUFBRTtpQkFDbkIsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsSUFBSSxrQkFBa0IsR0FBYSxFQUFFLENBQUM7WUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO3FCQUM5RCxRQUFRLEVBQUU7cUJBQ1YsaUJBQWlCLEVBQVksQ0FBQztnQkFDakMsTUFBTSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFdkQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksS0FBYSxDQUFDO2dCQUNsQixPQUNFLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDbkUsQ0FBQyxDQUFDLEVBQ0YsQ0FBQztvQkFDRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwRSxNQUFNLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7b0JBQ25DLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztZQUNILENBQUM7WUFFRCx3Q0FBd0M7WUFDeEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFVO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLDBCQUEwQjtRQUMxQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNoRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ25DLENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxXQUFXLEVBQUUsS0FBSztnQkFDbEIsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtnQkFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2hDLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ2hFLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzRCxrQkFBa0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUUvQyxtQkFBbUIsQ0FBZ0IsT0FBTyxFQUFFLFNBQVMsQ0FBQzthQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUwsbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsMEJBQTBCO1lBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQ25DLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FDeEIsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLGtCQUFrQjtRQUNsQiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVsRSxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsVUFBVSxFQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQ3hCLENBQUM7WUFFRixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO2dCQUM5QyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtnQkFDL0MsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixtQkFBbUIsRUFBRSxNQUFNO2FBQzVCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhO2FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQixLQUFLLDBCQUEwQixDQUFDLGFBQWE7b0JBQzNDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsTUFBTTtnQkFDUixLQUFLLDBCQUEwQixDQUFDLGtCQUFrQjtvQkFDaEQsbUVBQW1FO29CQUNuRSxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLDBCQUEwQjt3QkFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQzFCLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw2QkFBNkI7UUFDM0Isd0NBQXdDO1FBQ3hDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLHlCQUF5QjtvQkFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUNqQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQ3hELG1DQUFtQyxDQUNwQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUM5QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQ3hELG1DQUFtQyxDQUNwQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCwyQkFBMkI7UUFDekIsb0RBQW9EO1FBQ3BELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxvQ0FBb0MsQ0FBQztnQkFDMUQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE1BQU0sZ0JBQWdCLEdBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQzsrR0Eva0NVLHdCQUF3QixnUEE4ZHpCLG9CQUFvQjttR0E5ZG5CLHdCQUF3QixraUdBSnhCLENBQUMsNkJBQTZCLENBQUMsc0VBMFQ1Qiw2QkFBNkIscUpBOERGLFdBQVcsbUdBR25CLFVBQVUsNkJDM2M3QyxzbExBZ0tBOzs0RkQ1RWEsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLGtCQUFrQixhQUdqQixDQUFDLDZCQUE2QixDQUFDLG1CQUN6Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OzBCQThkZCxRQUFROzswQkFDUixRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQjs7c0JBcmQ3QixLQUFLOztzQkFTTCxLQUFLOztzQkFjTCxLQUFLOztzQkFjTCxLQUFLOztzQkFhTCxLQUFLOztzQkFPTCxLQUFLOztzQkFhTCxLQUFLOztzQkFhTCxLQUFLOztzQkFRTCxLQUFLOztzQkFrQkwsS0FBSzs7c0JBb0JMLEtBQUs7O3NCQVNMLEtBQUs7O3NCQWtCTCxLQUFLOztzQkFtQkwsS0FBSzs7c0JBY0wsS0FBSzs7c0JBYUwsS0FBSzs7c0JBU0wsS0FBSzs7c0JBdUJMLE1BQU07O3NCQU9OLE1BQU07O3NCQU1OLE1BQU07O3NCQU9OLE1BQU07O3NCQU1OLE1BQU07O3NCQXlDTixZQUFZO3VCQUFDLDZCQUE2Qjs7c0JBOEQxQyxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTs7c0JBR3JELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNLWV9TVEFDS0lOR19DT05URVhULFxuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreUFmZml4ZXIsXG4gIFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxuICBTa3lTdGFja2luZ0NvbnRleHQsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIGZyb20sXG4gIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50LFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRlbGF5LFxuICBtYXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgbm9ybWFsaXplRGlhY3JpdGljcyB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXN0cmluZy11dGlscyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbiB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWRlZmF1bHQtc2VhcmNoLWZ1bmN0aW9uJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jUmVzdWx0IH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWFzeW5jLXJlc3VsdCc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbic7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlciB9IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1maWx0ZXInO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MgfSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zaG93LW1vcmUtYXJncyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHQge1xuICBlbGVtZW50SWQ6IHN0cmluZztcbiAgZGF0YTogYW55O1xufVxuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgLy8jcmVnaW9uIHB1YmxpY19hcGlcblxuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgYXV0b2NvbXBsZXRlIHRleHQgaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgc3RhdGljIGRhdGEgc291cmNlIGZvciB0aGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCB0byBzZWFyY2hcbiAgICogd2hlbiB1c2VycyBlbnRlciB0ZXh0LiBGb3IgYSBkeW5hbWljIGRhdGEgc291cmNlLCBzdWNoIGFzIGFuIGFycmF5IHRoYXRcbiAgICogY2hhbmdlcyBkdWUgdG8gc2VydmVyIGNhbGxzLCB1c2UgYHNlYXJjaGAgb3IgYHNlYXJjaEFzeW5jYCBpbnN0ZWFkLlxuICAgKiBZb3UgY2FuIHNwZWNpZnkgc3RhdGljIGRhdGEsIHN1Y2ggYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyxcbiAgICogb3IgeW91IGNhbiBwdWxsIGRhdGEgZnJvbSBhIGRhdGFiYXNlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kYXRhID0gdmFsdWUgPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLiNfZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc2VhcmNoaW5nIHdoaWxlIHVzZXJzXG4gICAqIGVudGVyIHRleHQgaW4gdGhlIGF1dG9jb21wbGV0ZSBmaWVsZC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kZWJvdW5jZVRpbWUgPSB2YWx1ZSA/PyAwO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX2RlYm91bmNlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHByb3BlcnR5IHRvIGRpc3BsYXkgaW4gdGhlIHRleHQgaW5wdXQgYWZ0ZXIgdXNlcnNcbiAgICogc2VsZWN0IGFuIGl0ZW0gaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEBkZWZhdWx0IFwibmFtZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlc2NyaXB0b3JQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rlc2NyaXB0b3JQcm9wZXJ0eSA9IHZhbHVlIHx8ICduYW1lJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRvclByb3BlcnR5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19kZXNjcmlwdG9yUHJvcGVydHk7XG4gIH1cblxuICAvKipcbiAgICogSGludCB0ZXh0IHRvIHNob3cgaW4gdGhlIGRyb3Bkb3duXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRyb3Bkb3duSGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiBpbiB0aGUgZHJvcGRvd24gdGhhdCBvcGVucyBhIHBpY2tlciB3aGVyZSB1c2VycyBjYW4gdmlldyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW5hYmxlU2hvd01vcmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZW5hYmxlU2hvd01vcmUgPSAhIXZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGVuYWJsZVNob3dNb3JlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZW5hYmxlU2hvd01vcmU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG9ic2VydmFibGUgb2YgYFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VgIHRoYXQgY2FuIGNsb3NlIHRoZSBkcm9wZG93bi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lc3NhZ2VTdHJlYW0odmFsdWU6IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWVzc2FnZVN0cmVhbSA9IHZhbHVlID8/IG5ldyBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+KCk7XG4gICAgdGhpcy4jaW5pdE1lc3NhZ2VTdHJlYW0oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVzc2FnZVN0cmVhbSgpOiBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy4jX21lc3NhZ2VTdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd3JhcHBlckNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgcHJvcGVydGllcyB0byBzZWFyY2guXG4gICAqIEBkZWZhdWx0IFtcIm5hbWVcIl1cbiAgICogQGRlcHJlY2F0ZWQgV2UgcmVjb21tZW5kIGFnYWluc3QgdXNpbmcgdGhpcyBwcm9wZXJ0eS4gVG8gc2VhcmNoIHNwZWNpZmljIHByb3BlcnRpZXMsIHVzZSB0aGUgYHNlYXJjaEFzeW5jYCBldmVudCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwcm9wZXJ0aWVzVG9TZWFyY2godmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Byb3BlcnRpZXNUb1NlYXJjaCA9IHZhbHVlID8/IFsnbmFtZSddO1xuXG4gICAgdGhpcy4jdXBkYXRlRGVmYXVsdFNlYXJjaE9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvcGVydGllc1RvU2VhcmNoKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy4jX3Byb3BlcnRpZXNUb1NlYXJjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBkeW5hbWljYWxseSBtYW5hZ2VzIHRoZSBkYXRhIHRvIGRpc3BsYXkgaW4gc2VhcmNoIHJlc3VsdHMgd2hlbiB1c2Vyc1xuICAgKiBjaGFuZ2UgdGhlIHRleHQgaW4gdGhlIGF1dG9jb21wbGV0ZSBmaWVsZC4gVGhlIHNlYXJjaCBmdW5jdGlvbiBtdXN0IHJldHVyblxuICAgKiBhbiBhcnJheSBvciBhIHByb21pc2Ugb2YgYW4gYXJyYXkuIFRoZSBgc2VhcmNoYCBwcm9wZXJ0eSBpcyBwYXJ0aWN1bGFybHlcbiAgICogdXNlZnVsIHdoZW4gdGhlIGRhdGEgc291cmNlIGRvZXMgbm90IGxpdmUgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBUbyBjYWxsIGEgcmVtb3RlIGRhdGEgc291cmNlLCB1c2UgdGhlIGBzZWFyY2hBc3luY2AgZXZlbnQgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoKHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWFyY2ggPSB2YWx1ZTtcbiAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCA9XG4gICAgICB2YWx1ZSB8fFxuICAgICAgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiB0aGlzLnByb3BlcnRpZXNUb1NlYXJjaCxcbiAgICAgICAgc2VhcmNoRmlsdGVyczogdGhpcy5zZWFyY2hGaWx0ZXJzLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaCgpOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2g7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHRoYXQgZm9ybWF0cyBlYWNoIHNlYXJjaCByZXN1bHQgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIFRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50IGluamVjdHMgc2VhcmNoIHJlc3VsdCB2YWx1ZXMgaW50byB0aGUgdGVtcGxhdGVcbiAgICogYXMgYGl0ZW1gIHZhcmlhYmxlcyB0aGF0IHJlZmVyZW5jZSBhbGwgb2YgdGhlIG9iamVjdCBwcm9wZXJ0aWVzIG9mIHRoZSBzZWFyY2ggcmVzdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdXNlcnMgbXVzdCBlbnRlciBiZWZvcmVcbiAgICogdGhlIGF1dG9jb21wbGV0ZSBjb21wb25lbnQgc2VhcmNoZXMgdGhlIGRhdGEgc291cmNlIGFuZCBkaXNwbGF5cyBzZWFyY2hcbiAgICogcmVzdWx0cyBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnModmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPSB2YWx1ZSAmJiB2YWx1ZSA+IDAgPyB2YWx1ZSA6IDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZ2FpbnN0IGVhY2ggc2VhcmNoIHJlc3VsdC4gVGhpcyBmaWx0ZXJzXG4gICAqIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHVzaW5nIHRoZSBgZGF0YWAgaW5wdXQgYW5kIHRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbi5cbiAgICogIFdoZW4gdGhlIGBzZWFyY2hgIHByb3BlcnR5IHNwZWNpZmllcyBhIGN1c3RvbSBzZWFyY2ggZnVuY3Rpb24sIHlvdSBtdXN0XG4gICAqIG1hbnVhbGx5IGFwcGx5IGZpbHRlcnMgaW5zaWRlIHRoYXQgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBtdXN0IHJldHVybiBgdHJ1ZWBcbiAgICogb3IgYGZhbHNlYCBmb3IgZWFjaCByZXN1bHQgdG8gaW5kaWNhdGUgd2hldGhlciB0byBkaXNwbGF5IGl0IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBXZSByZWNvbW1lbmQgYWdhaW5zdCB1c2luZyB0aGlzIHByb3BlcnR5LiBUbyBmaWx0ZXIgcmVzdWx0cywgdXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaEZpbHRlcnMoXG4gICAgdmFsdWU6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyW10gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19zZWFyY2hGaWx0ZXJzID0gdmFsdWU7XG5cbiAgICB0aGlzLiN1cGRhdGVEZWZhdWx0U2VhcmNoT3B0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hGaWx0ZXJzKCk6XG4gICAgfCBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlcltdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VhcmNoRmlsdGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2VhcmNoIHJlc3VsdHMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCBkaXNwbGF5cyBhbGwgbWF0Y2hpbmcgcmVzdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoUmVzdWx0c0xpbWl0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2VhcmNoUmVzdWx0c0xpbWl0ID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0c0xpbWl0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2hSZXN1bHRzTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiB0aGF0IGxldHMgdXNlcnMgYWRkIG9wdGlvbnMgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzaG93QWRkQnV0dG9uKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Nob3dBZGRCdXR0b24gPSAhIXZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNob3dBZGRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zaG93QWRkQnV0dG9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBubyBzZWFyY2ggcmVzdWx0cyBhcmUgZm91bmQuXG4gICAqIEBkZWZhdWx0IFwiTm8gbWF0Y2hlcyBmb3VuZFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9SZXN1bHRzRm91bmRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBBbGxvd3MgYXN5bmMgc2VhcmNoIHRvIGJlIGRpc2FibGVkIGV2ZW4gd2hlbiBhIGxpc3RlbmVyIGlzIHNwZWNpZmllZCBmb3JcbiAgICogdGhlIGBzZWFyY2hBc3luY2Agb3V0cHV0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaEFzeW5jRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiB1c2luZyBgc2VhcmNoQXN5bmNgLCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBhcmJpdHJhcnlcbiAgICogdmFsdWVzIG5vdCBpbiB0aGUgc2VhcmNoIHJlc3VsdHMuIFRoaXMgb25seSB3b3JrcyBpbiBjb21iaW5hdGlvblxuICAgKiB3aXRoIGBzZWFyY2hBc3luY2AuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWMgYWxsb3dBbnlWYWx1ZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgc2VhcmNoIHRleHQgaW4gZWFjaCBzZWFyY2ggcmVzdWx0LiBTZXQgdGhpcyB0byBgZmFsc2VgXG4gICAqIHdoZW4geW91ciBzZWFyY2ggcmV0dXJucyByZXN1bHRzIHRoYXQgYXJlbid0IGV4YWN0IHRleHQgbWF0Y2hlcywgc3VjaCBhc1xuICAgKiByZXR1cm5pbmcgXCJCb2JcIiBmb3IgXCJSb2JlcnQuXCJcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcHVibGljIGhpZ2hsaWdodFNlYXJjaFRleHQgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG9wdGlvbnMgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gdmlldyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2hvd01vcmVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCBpdGVtcyBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgZW50ZXIgbmV3IHNlYXJjaCBpbmZvcm1hdGlvbiBhbmQgYWxsb3dzIHJlc3VsdHMgdG8gYmVcbiAgICogcmV0dXJuZWQgdmlhIGFuIG9ic2VydmFibGUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlYXJjaEFzeW5jID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiB0ZW1wbGF0ZV9wcm9wZXJ0aWVzXG5cbiAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRzKCk6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlYXJjaFJlc3VsdHMgfHwgW107XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlYXJjaFJlc3VsdHModmFsdWU6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdKSB7XG4gICAgdGhpcy4jX3NlYXJjaFJlc3VsdHMgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlnaGxpZ2h0VGV4dCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19oaWdobGlnaHRUZXh0IHx8IFtdO1xuICB9XG5cbiAgcHVibGljIHNldCBoaWdobGlnaHRUZXh0KHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuI19oaWdobGlnaHRUZXh0ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlc3VsdHNMaXN0SWQ6IHN0cmluZztcblxuICBwdWJsaWMgcmVzdWx0c1dyYXBwZXJJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgcHVibGljIGdldCBzaG93QWN0aW9uc0FyZWEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zaG93QWRkQnV0dG9uIHx8ICEhdGhpcy5lbmFibGVTaG93TW9yZTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlYXJjaGluZ0FzeW5jID0gZmFsc2U7XG5cbiAgcHVibGljIHNlYXJjaFJlc3VsdHNDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIEBDb250ZW50Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpXG4gIHB1YmxpYyBzZXQgaW5wdXREaXJlY3RpdmUoXG4gICAgZGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKCFkaXJlY3RpdmUpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBbXG4gICAgICAgICAgJ1RoZSBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgcmVxdWlyZXMgYSBDb250ZW50Q2hpbGQgaW5wdXQgb3InLFxuICAgICAgICAgICd0ZXh0YXJlYSBib3VuZCB3aXRoIHRoZSBTa3lBdXRvY29tcGxldGUgZGlyZWN0aXZlLiBGb3IgZXhhbXBsZTonLFxuICAgICAgICAgICdgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2t5QXV0b2NvbXBsZXRlPmAuJyxcbiAgICAgICAgXS5qb2luKCcgJyksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNfaW5wdXREaXJlY3RpdmUgIT09IGRpcmVjdGl2ZSkge1xuICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBvbGQgc3Vic2NyaXB0aW9ucyBvbiBhbnkgcHJldmlvdXMgaW5wdXQgZGlyZWN0aXZlXG4gICAgICB0aGlzLiNpbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgICAgdGhpcy4jX2lucHV0RGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXG4gICAgICB0aGlzLiNfaW5wdXREaXJlY3RpdmUuZGlzcGxheVdpdGggPSB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eTtcblxuICAgICAgdGhpcy4jX2lucHV0RGlyZWN0aXZlLnRleHRDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiNpbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzU2VhcmNoaW5nQXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIG9mKGNoYW5nZSk7XG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy4jc2VhcmNoVGV4dENoYW5nZWQoY2hhbmdlLnZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIC8vIFdlIGRlbGF5IHRoaXMgbGlzdGVuZXIgYnkgMjVtcyB0byBnaXZlIHRoaW5ncyB3YXRjaGluZyB0aGUgdmFsdWUgdGltZSB0byByZXNwb25kIChzdWNoIGFzIHRoZSBzZWFyY2ggYnV0dG9uKS5cbiAgICAgIHRoaXMuI19pbnB1dERpcmVjdGl2ZS5ibHVyXG4gICAgICAgIC5waXBlKGRlbGF5KDI1KSwgdGFrZVVudGlsKHRoaXMuI2lucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBkaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgICAgICAgdGhpcy4jY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIHRoaXMuI2NhbmNlbEN1cnJlbnRTZWFyY2goKTtcbiAgICAgICAgICBkaXJlY3RpdmUub25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy4jaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VTZXJ2aWNlLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNfaW5wdXREaXJlY3RpdmUuZm9jdXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNoYXNGb2N1cyA9IHRydWU7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0FjdGlvbnNBcmVhIHx8IHRoaXMuZHJvcGRvd25IaW50VGV4dCkge1xuICAgICAgICAgICAgdGhpcy4jb3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0RGlyZWN0aXZlKCk6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lucHV0RGlyZWN0aXZlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgncmVzdWx0c1RlbXBsYXRlUmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgcmVzdWx0c1RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdyZXN1bHRzUmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBzZXQgcmVzdWx0c1JlZih2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX3Jlc3VsdHNSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lBZmZpeGVyKCk7XG4gICAgICB0aGlzLiNjcmVhdGVBZmZpeGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCByZXN1bHRzUmVmKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfcmVzdWx0c1JlZjtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hPckRlZmF1bHQ6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uO1xuXG4gIHByb3RlY3RlZCBpc1Jlc3VsdHNWaXNpYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJbmRleCB0aGF0IGluZGljYXRlcyB3aGljaCBkZXNjZW5kYW50IG9mIHRoZSBvdmVybGF5IGN1cnJlbnRseSBoYXMgZm9jdXMuXG4gICAqL1xuICAjYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG5cbiAgI2FkYXB0ZXJTZXJ2aWNlOiBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZTtcblxuICAjYWZmaXhlcjogU2t5QWZmaXhlciB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2U7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjZWxlbWVudFJlZjogRWxlbWVudFJlZjtcblxuICByZWFkb25seSAjZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblxuICByZWFkb25seSAjbGl2ZUFubm91bmNlU2VydmljZSA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgI2xpYlJlc291cmNlU2VydmljZSA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcblxuICAjaGFzRm9jdXMgPSBmYWxzZTtcblxuICAjaW5wdXRCb3hIb3N0U3ZjOiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gICNpbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjbWVzc2FnZVN0cmVhbVN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlIHwgdW5kZWZpbmVkO1xuXG4gICNvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIEVsZW1lbnRzIHdpdGhpbiB0aGUgYXV0b2NvbXBsZXRlIGRyb3Bkb3duIHRoYXQgYXJlIGZvY3VzYWJsZS5cbiAgICogVGhlc2UgYXJlIHR5cGljYWxseSB0aGUgc2VhcmNoIHJlc3VsdHMgYW5kIGFjdGlvbiBidXR0b25zLCBidXQgY291bGQgYWxzbyBiZVxuICAgKiBlbGVtZW50cyBwcm92aWRlZCBpbiB0aGUgY29uc3VtZXIncyBvd24gdGVtcGxhdGUuXG4gICAqL1xuICAjb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgI2N1cnJlbnRTZWFyY2hTdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAjaXNSZXN1bHRzVmlzaWJsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICN6SW5kZXg6IE9ic2VydmFibGU8bnVtYmVyPiB8IHVuZGVmaW5lZDtcblxuICAjX2RhdGE6IGFueVtdID0gW107XG5cbiAgI19kZWJvdW5jZVRpbWUgPSAwO1xuXG4gICNfZGVzY3JpcHRvclByb3BlcnR5ID0gJ25hbWUnO1xuXG4gICNfZW5hYmxlU2hvd01vcmUgPSBmYWxzZTtcblxuICAjX2hpZ2hsaWdodFRleHQ6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gICNfaW5wdXREaXJlY3RpdmU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG4gICNfbWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+KCk7XG5cbiAgI19wcm9wZXJ0aWVzVG9TZWFyY2ggPSBbJ25hbWUnXTtcblxuICAjX3Jlc3VsdHNSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI19zZWFyY2g6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNfc2VhcmNoRmlsdGVyczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJbXSB8IHVuZGVmaW5lZDtcblxuICAjX3NlYXJjaFJlc3VsdHM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdIHwgdW5kZWZpbmVkO1xuXG4gICNfc2VhcmNoUmVzdWx0c0xpbWl0ID0gMDtcblxuICAjX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyA9IDE7XG5cbiAgI19zaG93QWRkQnV0dG9uID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgYWRhcHRlclNlcnZpY2U6IFNreUF1dG9jb21wbGV0ZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBpbnB1dEJveEhvc3RTdmM/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChTS1lfU1RBQ0tJTkdfQ09OVEVYVClcbiAgICBzdGFja2luZ0NvbnRleHQ/OiBTa3lTdGFja2luZ0NvbnRleHQsXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jYWZmaXhTZXJ2aWNlID0gYWZmaXhTZXJ2aWNlO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICB0aGlzLiNpbnB1dEJveEhvc3RTdmMgPSBpbnB1dEJveEhvc3RTdmM7XG4gICAgdGhpcy4jekluZGV4ID0gc3RhY2tpbmdDb250ZXh0Py56SW5kZXg7XG5cbiAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCA9IHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbih7XG4gICAgICBwcm9wZXJ0aWVzVG9TZWFyY2g6IFsnbmFtZSddLFxuICAgICAgc2VhcmNoRmlsdGVyczogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaWQgPSArK3VuaXF1ZUlkO1xuICAgIHRoaXMucmVzdWx0c0xpc3RJZCA9IGBza3ktYXV0b2NvbXBsZXRlLWxpc3QtJHtpZH1gO1xuICAgIHRoaXMucmVzdWx0c1dyYXBwZXJJZCA9IGBza3ktYXV0b2NvbXBsZXRlLXdyYXBwZXItJHtpZH1gO1xuICAgIHRoaXMuaXNSZXN1bHRzVmlzaWJsZSA9IHRoaXMuI2lzUmVzdWx0c1Zpc2libGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2FkZElucHV0RXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNjYW5jZWxDdXJyZW50U2VhcmNoKCk7XG4gICAgdGhpcy4jaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2lzUmVzdWx0c1Zpc2libGUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5lbWl0KCk7XG4gICAgaWYgKHRoaXMuaW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgfVxuICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZXZlbnQua2V5KSB7XG4gICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLiNnZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50SWQgPSBhY3RpdmVFbGVtZW50Py5pZDtcbiAgICAgIGNvbnN0IHRhcmdldElzU2VhcmNoUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHRzLmZpbmQoXG4gICAgICAgIChyKSA9PiByLmVsZW1lbnRJZCA9PT0gYWN0aXZlRWxlbWVudElkLFxuICAgICAgKTtcblxuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICAgIGlmICh0YXJnZXRJc1NlYXJjaFJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy4jc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChhY3RpdmVFbGVtZW50SWQpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhICYmICF0aGlzLmRyb3Bkb3duSGludFRleHQpIHtcbiAgICAgICAgICAgICAgdGhpcy4jY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy4jcmVzZXRTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgICAgaWYgKHRhcmdldElzU2VhcmNoUmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLiNzZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGFjdGl2ZUVsZW1lbnRJZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgICAgdGhpcy4jY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgIHRoaXMuI3JlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9PT1cbiAgICAgICAgICAgICAgdGhpcy4jb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDEgfHxcbiAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9PT0gLTFcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9IHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCArIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuI2FkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgICB0aGlzLiNyZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICBpZiAodGhpcy4jYWN0aXZlRWxlbWVudEluZGV4IDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCA9XG4gICAgICAgICAgICAgIHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiNhZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNhbm5vdW5jZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgdGhpcy4jbGliUmVzb3VyY2VTZXJ2aWNlXG4gICAgICAuZ2V0U3RyaW5ncyh7XG4gICAgICAgIG5vUmVzdWx0czogJ3NreXV4X2F1dG9jb21wbGV0ZV9ub19yZXN1bHRzJyxcbiAgICAgICAgc2luZ2xlQ291bnRSZXN1bHQ6ICdza3l1eF9hdXRvY29tcGxldGVfb25lX3Jlc3VsdCcsXG4gICAgICAgIG11bHRpcGxlQ291bnRSZXN1bHRzOiBbXG4gICAgICAgICAgJ3NreXV4X2F1dG9jb21wbGV0ZV9tdWx0aXBsZV9yZXN1bHRzJyxcbiAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHNDb3VudCxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxpemVkU3RyaW5ncykgPT4ge1xuICAgICAgICBsZXQgYW5ub3VuY2VtZW50U3RyaW5nID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFJlc3VsdHNDb3VudCAmJiB0aGlzLnNlYXJjaFJlc3VsdHNDb3VudCA+IDApIHtcbiAgICAgICAgICBhbm5vdW5jZW1lbnRTdHJpbmcgPVxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzQ291bnQgPT09IDFcbiAgICAgICAgICAgICAgPyBsb2NhbGl6ZWRTdHJpbmdzLnNpbmdsZUNvdW50UmVzdWx0XG4gICAgICAgICAgICAgIDogbG9jYWxpemVkU3RyaW5ncy5tdWx0aXBsZUNvdW50UmVzdWx0cztcbiAgICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VTZXJ2aWNlLmFubm91bmNlKGFubm91bmNlbWVudFN0cmluZyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hSZXN1bHRzQ291bnQgPT09IDApIHtcbiAgICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VTZXJ2aWNlLmFubm91bmNlKGxvY2FsaXplZFN0cmluZ3Mubm9SZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbW9yZUJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TW9yZUNsaWNrLmVtaXQoeyBpbnB1dFZhbHVlOiB0aGlzLnNlYXJjaFRleHQgfSk7XG4gICAgaWYgKHRoaXMuaW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgfVxuICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc3VsdENsaWNrKGlkOiBzdHJpbmcsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy4jc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChpZCk7XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhICYmICF0aGlzLmRyb3Bkb3duSGludFRleHQpIHtcbiAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVzZXRTZWFyY2goKTtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG9uUmVzdWx0TW91c2VNb3ZlKGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaWQgIT09IHRoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleCkge1xuICAgICAgdGhpcy4jcmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICB0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPSBpZDtcbiAgICAgIHRoaXMuI2FkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzRWxlbWVudEZvY3VzZWQocmVmOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZWYgPT09IHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXhdO1xuICB9XG5cbiAgI3NlYXJjaFRleHRDaGFuZ2VkKHNlYXJjaFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNoYXNGb2N1cykge1xuICAgICAgdGhpcy4jb3BlbkRyb3Bkb3duKCk7XG4gICAgICBpZiAoIXNlYXJjaFRleHQ/LnRyaW0oKSkge1xuICAgICAgICB0aGlzLiNoYW5kbGVFbXB0eVNlYXJjaFRleHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0xvbmdFbm91Z2ggPVxuICAgICAgICBzZWFyY2hUZXh0Lmxlbmd0aCA+PSB0aGlzLnNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycztcbiAgICAgIGNvbnN0IGlzRGlmZmVyZW50ID0gc2VhcmNoVGV4dCAhPT0gdGhpcy5zZWFyY2hUZXh0O1xuXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuI3VwZGF0ZUlzUmVzdWx0c1Zpc2libGUoKTtcblxuICAgICAgaWYgKGlzTG9uZ0Vub3VnaCAmJiBpc0RpZmZlcmVudCkge1xuICAgICAgICB0aGlzLiNwZXJmb3JtU2VhcmNoQW5kVXBkYXRlUmVzdWx0cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc1NlYXJjaGluZ0FzeW5jID0gZmFsc2U7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzU2VhcmNoaW5nQXN5bmMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAjaGFuZGxlRW1wdHlTZWFyY2hUZXh0KCk6IHZvaWQge1xuICAgIC8vIEVtaXQgc2VsZWN0aW9uQ2hhbmdlIGlmIHZhbHVlIGhhcyBiZWVuIGNsZWFyZWQuXG4gICAgaWYgKHRoaXMuaW5wdXREaXJlY3RpdmUgJiYgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoeyBzZWxlY3RlZEl0ZW06IHVuZGVmaW5lZCB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhICYmICF0aGlzLmRyb3Bkb3duSGludFRleHQpIHtcbiAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVzZXRTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2VhcmNoaW5nQXN5bmMgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNwZXJmb3JtU2VhcmNoQW5kVXBkYXRlUmVzdWx0cygpOiB2b2lkIHtcbiAgICB0aGlzLiNjYW5jZWxDdXJyZW50U2VhcmNoKCk7XG5cbiAgICB0aGlzLiNjdXJyZW50U2VhcmNoU3ViID0gdGhpcy4jcGVyZm9ybVNlYXJjaCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gKFxuICAgICAgICAgIHJlc3VsdD8uaXRlbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB8IHVuZGVmaW5lZFxuICAgICAgICApPy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbSAmJiB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSBpbiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHMgPVxuICAgICAgICAgIGl0ZW1zPy5tYXAoKHIsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0ID0ge1xuICAgICAgICAgICAgICBlbGVtZW50SWQ6IGAke3RoaXMucmVzdWx0c0xpc3RJZH0taXRlbS0ke2l9YCxcbiAgICAgICAgICAgICAgZGF0YTogcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0c0NvdW50ID0gcmVzdWx0Py50b3RhbENvdW50IHx8IDA7XG5cbiAgICAgICAgdGhpcy4jZGlzcGxheVJlc3VsdHNEcm9wZG93bigpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTZWFyY2hpbmdBc3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAjZGlzcGxheVJlc3VsdHNEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZ2hsaWdodFRleHQgPSB0aGlzLiNnZXRIaWdobGlnaHRUZXh0KHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgdGhpcy4jcmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgdGhpcy4jcmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIGlmICh0aGlzLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgfVxuXG4gICAgdGhpcy4jdXBkYXRlSXNSZXN1bHRzVmlzaWJsZSgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gU2FmZXR5IGNoZWNrXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIC8vIExldCB0aGUgcmVzdWx0cyBwb3B1bGF0ZSBpbiB0aGUgRE9NIGJlZm9yZSByZWNhbGN1bGF0aW5nIHBsYWNlbWVudC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgICAgIHRoaXMuI2FmZml4ZXIucmVhZmZpeCgpO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLiNpbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNvcGVuRHJvcGRvd24oKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gICNwZXJmb3JtU2VhcmNoKCk6IE9ic2VydmFibGU8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoQXN5bmNEaXNhYmxlZCAmJiB0aGlzLnNlYXJjaEFzeW5jLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWFyY2hBc3luY0FyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyA9IHtcbiAgICAgICAgZGlzcGxheVR5cGU6ICdwb3BvdmVyJyxcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNlYXJjaEFzeW5jLmVtaXQoc2VhcmNoQXN5bmNBcmdzKTtcblxuICAgICAgcmV0dXJuIHRoaXMuYWxsb3dBbnlWYWx1ZSgpXG4gICAgICAgID8gdGhpcy4jY29tYmluZVNlYXJjaFRleHRXaXRoUmVzdWx0KHNlYXJjaEFzeW5jQXJncylcbiAgICAgICAgOiBzZWFyY2hBc3luY0FyZ3MucmVzdWx0Py5waXBlKHRha2UoMSkpIHx8IG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hPckRlZmF1bHQodGhpcy5zZWFyY2hUZXh0LCB0aGlzLmRhdGEsIHtcbiAgICAgIGNvbnRleHQ6ICdwb3BvdmVyJyxcbiAgICB9KTtcblxuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IHJlc3VsdCwgdG90YWxDb3VudDogcmVzdWx0Lmxlbmd0aCB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShyZXN1bHQpLnBpcGUoXG4gICAgICBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgIHJldHVybiB7IGl0ZW1zLCB0b3RhbENvdW50OiBpdGVtcy5sZW5ndGggfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAjY29tYmluZVNlYXJjaFRleHRXaXRoUmVzdWx0KFxuICAgIHNlYXJjaEFzeW5jQXJnczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNBcmdzLFxuICApOiBPYnNlcnZhYmxlPFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jUmVzdWx0PiB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dEl0ZW0gPSB7IFt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV06IHRoaXMuc2VhcmNoVGV4dCB9O1xuICAgIGNvbnN0IHNlYXJjaFRleHRSZXN1bHQgPSB7IGl0ZW1zOiBbc2VhcmNoVGV4dEl0ZW1dLCB0b3RhbENvdW50OiAxIH07XG5cbiAgICBpZiAoc2VhcmNoQXN5bmNBcmdzLnJlc3VsdCkge1xuICAgICAgcmV0dXJuIHNlYXJjaEFzeW5jQXJncy5yZXN1bHQucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAocmVzdWx0Lml0ZW1zIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXSkuc29tZShcbiAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW1bdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldID09PSB0aGlzLnNlYXJjaFRleHQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEluY2x1ZGUgYSByZXN1bHQgZm9yIHRoZSBjdXJyZW50IHNlYXJjaCB0ZXh0IGFzIHRoZSBmaXJzdCBvcHRpb25cbiAgICAgICAgICAvLyBpZiBubyBleGFjdCBtYXRjaCBpcyBmb3VuZCBpbiB0aGUgcmVzdWx0cy5cbiAgICAgICAgICByZXR1cm4geyAuLi5yZXN1bHQsIGl0ZW1zOiBbc2VhcmNoVGV4dEl0ZW0sIC4uLnJlc3VsdC5pdGVtc10gfTtcbiAgICAgICAgfSksXG4gICAgICAgIC8vIERpc3BsYXkgdGhlIGN1cnJlbnQgc2VhcmNoIHRleHQgaW1tZWRpYXRlbHkgd2hpbGUgYXN5bmMgcmVzdWx0cyBsb2FkLlxuICAgICAgICBzdGFydFdpdGg8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNSZXN1bHQ+KHNlYXJjaFRleHRSZXN1bHQpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Yoc2VhcmNoVGV4dFJlc3VsdCk7XG4gIH1cblxuICAjY2FuY2VsQ3VycmVudFNlYXJjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VycmVudFNlYXJjaFN1Yikge1xuICAgICAgdGhpcy4jY3VycmVudFNlYXJjaFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy4jY3VycmVudFNlYXJjaFN1YiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGV4dCB0byBoaWdobGlnaHQgYmFzZWQgb24gZXhhY3QgbWF0Y2hlcywgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGVzLCBhbmQgbWF0Y2hlcyBmb3IgY29ycmVzcG9uZGluZyBkaWFjcml0aWNhbCBjaGFyYWN0ZXJzIChhIHdpbGwgbWF0Y2ggw6ApLlxuICAgKi9cbiAgI2dldEhpZ2hsaWdodFRleHQoc2VhcmNoVGV4dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLmhpZ2hsaWdodFNlYXJjaFRleHQoKSkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaFRleHQgPSBub3JtYWxpemVEaWFjcml0aWNzKHNlYXJjaFRleHQpXG4gICAgICAgIC50b0xvY2FsZVVwcGVyQ2FzZSgpXG4gICAgICAgIC50cmltKCk7XG4gICAgICBpZiAoIW5vcm1hbGl6ZWRTZWFyY2hUZXh0KSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgbGV0IG1hdGNoZXNUb0hpZ2hsaWdodDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5zZWFyY2hSZXN1bHRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VhcmNoUmVzdWx0c1tpXS5kYXRhW3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XVxuICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgLnRvTG9jYWxlVXBwZXJDYXNlKCkgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0YVZhbHVlID0gbm9ybWFsaXplRGlhY3JpdGljcyh2YWx1ZSk7XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyO1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgKGluZGV4ID0gbm9ybWFsaXplZERhdGFWYWx1ZS5pbmRleE9mKG5vcm1hbGl6ZWRTZWFyY2hUZXh0LCBvZmZzZXQpKSA+XG4gICAgICAgICAgLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hlZFN0cmluZyA9IHZhbHVlLnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgICBvZmZzZXQgPSBpbmRleCArIHNlYXJjaFRleHQubGVuZ3RoO1xuICAgICAgICAgIG1hdGNoZXNUb0hpZ2hsaWdodCA9IG1hdGNoZXNUb0hpZ2hsaWdodC5jb25jYXQobWF0Y2hlZFN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIGFueSBkdXBsaWNhdGVzIGZyb20gdGhlIGFycmF5LlxuICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KG1hdGNoZXNUb0hpZ2hsaWdodCldO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gICNzZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaFJlc3VsdHMuZmluZCgocikgPT4gci5lbGVtZW50SWQgPT09IGlkKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQuZGF0YTtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IGRhdGFbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgaWYgKHRoaXMuaW5wdXREaXJlY3RpdmUpIHtcbiAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSA9IGRhdGE7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHsgc2VsZWN0ZWRJdGVtOiBkYXRhIH0pO1xuICAgIH1cbiAgfVxuXG4gICNvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNvdmVybGF5ICYmIHRoaXMucmVzdWx0c1RlbXBsYXRlUmVmKSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gdGhpcy4jb3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLiNlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLiN6SW5kZXgpIHtcbiAgICAgICAgdGhpcy4jekluZGV4LnBpcGUodGFrZVVudGlsKG92ZXJsYXkuY2xvc2VkKSkuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICBvdmVybGF5LmNvbXBvbmVudFJlZi5pbnN0YW5jZS56SW5kZXggPSB6SW5kZXgudG9TdHJpbmcoMTApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLnJlc3VsdHNUZW1wbGF0ZVJlZik7XG5cbiAgICAgIHRoaXMuI292ZXJsYXkgPSBvdmVybGF5O1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgdGhpcy4jdXBkYXRlSXNSZXN1bHRzVmlzaWJsZSgpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLiN1cGRhdGVBcmlhQ29udHJvbHMoKTtcbiAgICAgIHRoaXMuI2luaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTtcbiAgICAgIHRoaXMuI2Fubm91bmNlUmVzdWx0cygpO1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgI2Nsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXRTZWFyY2goKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIHRoaXMuI3VwZGF0ZUFyaWFDb250cm9scygpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gICNzZXRBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPVxuICAgICAgdGhpcy4jb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleF07XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoYWN0aXZlRWxlbWVudCAmJiB0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnNldEFjdGl2ZURlc2NlbmRhbnQoYWN0aXZlRWxlbWVudC5pZCk7XG4gICAgfVxuICB9XG5cbiAgI3JlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUuc2V0QWN0aXZlRGVzY2VuZGFudChudWxsKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQXJpYUNvbnRyb2xzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnNldEFyaWFDb250cm9scyh0aGlzLiNvdmVybGF5Py5pZCB8fCBudWxsKTtcbiAgICB9XG4gIH1cblxuICAjcmVzZXRTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzID0gW107XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5oaWdobGlnaHRUZXh0ID0gW107XG4gICAgdGhpcy4jcmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzQ291bnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jcmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIHRoaXMuI2luaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTtcbiAgICB0aGlzLiN1cGRhdGVJc1Jlc3VsdHNWaXNpYmxlKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjYWRkSW5wdXRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxLZXlib2FyZEV2ZW50PihlbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd24oZXZlbnQpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMucmVzdWx0c1JlZikge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldERyb3Bkb3duV2lkdGgoXG4gICAgICAgICAgICB0aGlzLiNlbGVtZW50UmVmLFxuICAgICAgICAgICAgdGhpcy5yZXN1bHRzUmVmLFxuICAgICAgICAgICAgISF0aGlzLiNpbnB1dEJveEhvc3RTdmMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI292ZXJsYXkpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNsb3NlKHRoaXMuI292ZXJsYXkpO1xuICAgICAgdGhpcy4jb3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jYWZmaXhlciAmJiB0aGlzLnJlc3VsdHNSZWYpIHtcbiAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLiNhZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcih0aGlzLnJlc3VsdHNSZWYpO1xuXG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXREcm9wZG93bldpZHRoKFxuICAgICAgICB0aGlzLiNlbGVtZW50UmVmLFxuICAgICAgICB0aGlzLnJlc3VsdHNSZWYsXG4gICAgICAgICEhdGhpcy4jaW5wdXRCb3hIb3N0U3ZjLFxuICAgICAgKTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgICAgZW5hYmxlQXV0b0ZpdDogdHJ1ZSxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2xlZnQnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNpbml0TWVzc2FnZVN0cmVhbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbWVzc2FnZVN0cmVhbVN1Yikge1xuICAgICAgdGhpcy4jbWVzc2FnZVN0cmVhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy4jbWVzc2FnZVN0cmVhbVN1YiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0aGlzLiNtZXNzYWdlU3RyZWFtU3ViID0gdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5DbG9zZURyb3Bkb3duOlxuICAgICAgICAgICAgdGhpcy4jY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5SZXBvc2l0aW9uRHJvcGRvd246XG4gICAgICAgICAgICAvLyBTZXR0aW1lb3V0IHdhaXRzIGZvciBjaGFuZ2VzIGluIERPTSAoZS5nLiwgdG9rZW5zIGJlaW5nIHJlbW92ZWQpXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNhZmZpeGVyLnJlYWZmaXgoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAvLyBXYWl0IGZvciBkcm9wZG93biBlbGVtZW50cyB0byByZW5kZXIuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy4jb3ZlcmxheSkge1xuICAgICAgICB0aGlzLiNvdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMgPVxuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cyh0aGlzLiNvdmVybGF5KTtcbiAgICAgICAgdGhpcy4jb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0VGFiSW5kZXgoZWwsIC0xKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuI2FkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgICB0aGlzLiNhbm5vdW5jZVJlc3VsdHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gICNnZXRBY3RpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuI2FjdGl2ZUVsZW1lbnRJbmRleF07XG4gIH1cblxuICAjcmVtb3ZlRm9jdXNlZENsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlQ1NTQ2xhc3MoXG4gICAgICAgIHRoaXMuI292ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLiNhY3RpdmVFbGVtZW50SW5kZXhdLFxuICAgICAgICAnc2t5LWF1dG9jb21wbGV0ZS1kZXNjZW5kYW50LWZvY3VzJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI2FkZEZvY3VzZWRDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jYWN0aXZlRWxlbWVudEluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmFkZENTU0NsYXNzKFxuICAgICAgICB0aGlzLiNvdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy4jYWN0aXZlRWxlbWVudEluZGV4XSxcbiAgICAgICAgJ3NreS1hdXRvY29tcGxldGUtZGVzY2VuZGFudC1mb2N1cycsXG4gICAgICApO1xuICAgICAgdGhpcy4jc2V0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVEZWZhdWx0U2VhcmNoT3B0aW9ucygpOiB2b2lkIHtcbiAgICAvLyBSZXNldCBkZWZhdWx0IHNlYXJjaCBpZiBpdCBpcyB3aGF0IGlzIGJlaW5nIHVzZWQuXG4gICAgaWYgKHRoaXMuc2VhcmNoICE9PSB0aGlzLnNlYXJjaE9yRGVmYXVsdCkge1xuICAgICAgdGhpcy5zZWFyY2hPckRlZmF1bHQgPSBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24oe1xuICAgICAgICBwcm9wZXJ0aWVzVG9TZWFyY2g6IHRoaXMucHJvcGVydGllc1RvU2VhcmNoLFxuICAgICAgICBzZWFyY2hGaWx0ZXJzOiB0aGlzLnNlYXJjaEZpbHRlcnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlSXNSZXN1bHRzVmlzaWJsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1Jlc3VsdHNWaXNpYmxlID1cbiAgICAgICEhdGhpcy5zZWFyY2hUZXh0ICYmXG4gICAgICAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhIHx8IHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwKTtcbiAgICBpZiAoaXNSZXN1bHRzVmlzaWJsZSAhPT0gdGhpcy4jaXNSZXN1bHRzVmlzaWJsZS5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLiNpc1Jlc3VsdHNWaXNpYmxlLm5leHQoaXNSZXN1bHRzVmlzaWJsZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlXCJcbiAgcm9sZT1cImNvbWJvYm94XCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJcbiAgICBpc09wZW4gJiZcbiAgICAoc2hvd0FjdGlvbnNBcmVhIHx8IGRyb3Bkb3duSGludFRleHQgfHwgKGlzUmVzdWx0c1Zpc2libGUgfCBhc3luYykpXG4gIFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwiXG4gICAgaXNPcGVuICYmXG4gICAgKHNob3dBY3Rpb25zQXJlYSB8fCBkcm9wZG93bkhpbnRUZXh0IHx8IChpc1Jlc3VsdHNWaXNpYmxlIHwgYXN5bmMpKVxuICAgICAgPyByZXN1bHRzTGlzdElkXG4gICAgICA6IG51bGxcbiAgXCJcbiAgW2F0dHIuaWRdPVwicmVzdWx0c1dyYXBwZXJJZFwiXG4+XG4gIDxuZy1jb250ZW50IC8+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNyZXN1bHRzVGVtcGxhdGVSZWY+XG4gIDwhLS0gV2UgZG8gbm90IHdhbnQgdGhlIGJsdXIgdG8gZmlyZSBoZXJlIHNvIHRoYXQgdGhlIGRyb3Bkb3duIGRvZXMgbm90IGNsb3NlLiBUaGlzIGlzIHdoeSB3ZSBhcmUgcHJldmVudGluZyB0aGUgbW91c2Vkb3duIGRlZmF1bHQuIC0tPlxuICA8ZGl2XG4gICAgI3Jlc3VsdHNSZWZcbiAgICBjbGFzcz1cInNreS1hdXRvY29tcGxldGUtcmVzdWx0cy1jb250YWluZXJcIlxuICAgIFthdHRyLmlkXT1cInJlc3VsdHNMaXN0SWRcIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cInsgJ3NreS1zaGFkb3cnOiAnZGVmYXVsdCcsICdza3ktZWxldmF0aW9uLTQnOiAnbW9kZXJuJyB9XCJcbiAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlkb3duKCRldmVudClcIlxuICA+XG4gICAgQGlmIChpc1NlYXJjaGluZ0FzeW5jICYmICFhbGxvd0FueVZhbHVlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlLXJlc3VsdHMtd2FpdGluZ1wiPlxuICAgICAgICA8c2t5LXdhaXQgW2lzV2FpdGluZ109XCJ0cnVlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIChpc1Jlc3VsdHNWaXNpYmxlIHwgYXN5bmMpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1yZXN1bHRzXCJcbiAgICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKHJlc3VsdCBvZiBzZWFyY2hSZXN1bHRzOyB0cmFjayByZXN1bHQuZGF0YTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICghc2VhcmNoUmVzdWx0c0xpbWl0IHx8IGkgPCBzZWFyY2hSZXN1bHRzTGltaXQpICYmXG4gICAgICAgICAgICAgICEoZW5hYmxlU2hvd01vcmUgJiYgaSA+PSA1KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAjc2VhcmNoUmVzdWx0RWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS1hdXRvY29tcGxldGUtcmVzdWx0XCJcbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNFbGVtZW50Rm9jdXNlZChzZWFyY2hSZXN1bHRFbClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZGVzY3JpcHRvci12YWx1ZV09XCJyZXN1bHQuZGF0YVtkZXNjcmlwdG9yUHJvcGVydHldXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJyZXN1bHQuZWxlbWVudElkXCJcbiAgICAgICAgICAgICAgICBbc2t5SGlnaGxpZ2h0XT1cImhpZ2hsaWdodFRleHRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlc3VsdENsaWNrKHJlc3VsdC5lbGVtZW50SWQsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChtb3VzZW1vdmUpPVwib25SZXN1bHRNb3VzZU1vdmUoaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0VGVtcGxhdGUgfHwgZGVmYXVsdFNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IHJlc3VsdC5kYXRhIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaXNTZWFyY2hpbmdBc3luYyAmJiBhbGxvd0FueVZhbHVlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlLXJlc3VsdHMtd2FpdGluZ1wiPlxuICAgICAgICAgICAgICA8c2t5LXdhaXQgW2lzV2FpdGluZ109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHNlYXJjaFJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1hdXRvY29tcGxldGUtbm8tcmVzdWx0c1wiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIG5vUmVzdWx0c0ZvdW5kVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgKCdza3l1eF9hdXRvY29tcGxldGVfbm9fcmVzdWx0cycgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoZHJvcGRvd25IaW50VGV4dCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1kcm9wZG93bi1oaW50LXRleHQgc2t5LWZvbnQtZGVlbXBoYXNpemVkXCI+XG4gICAgICAgICAge3sgZHJvcGRvd25IaW50VGV4dCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlLWFjdGlvbnNcIj5cbiAgICAgICAgICBAaWYgKGVuYWJsZVNob3dNb3JlICYmICghc2VhcmNoVGV4dCB8fCBzZWFyY2hSZXN1bHRzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWF1dG9jb21wbGV0ZS1hY3Rpb24gc2t5LWF1dG9jb21wbGV0ZS1hY3Rpb24tbW9yZSBza3ktYnRuIHNreS1idG4tbGlua1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibW9yZUJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzeW5jXG4gICAgICAgICAgICAgICAgICB8IHNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jRGlzYWJsZWQ6IHNlYXJjaEFzeW5jRGlzYWJsZWRcbiAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0cy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAhc2VhcmNoVGV4dFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB7eyAnc2t5dXhfYXV0b2NvbXBsZXRlX3Nob3dfYWxsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgKHNlYXJjaEFzeW5jXG4gICAgICAgICAgICAgICAgICB8IHNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jRGlzYWJsZWQ6IHNlYXJjaEFzeW5jRGlzYWJsZWQpICYmXG4gICAgICAgICAgICAgICAgIXNlYXJjaFRleHRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9hdXRvY29tcGxldGVfc2hvd19hbGxfY291bnQnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICAgICAgOiAoZGF0YS5sZW5ndGggfCBza3lOdW1lcmljOiB7IHRydW5jYXRlOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9hdXRvY29tcGxldGVfc2hvd19tYXRjaGVzX2NvdW50J1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgICAgIDogKHNlYXJjaFJlc3VsdHNDb3VudCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoc2VhcmNoUmVzdWx0c0NvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBza3lOdW1lcmljOiB7IHRydW5jYXRlOiBmYWxzZSB9KSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChzZWFyY2hUZXh0ICYmIHNlYXJjaFJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1hdXRvY29tcGxldGUtYWN0aW9ucy1uby1yZXN1bHRzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBub1Jlc3VsdHNGb3VuZFRleHQgfHxcbiAgICAgICAgICAgICAgICAgICgnc2t5dXhfYXV0b2NvbXBsZXRlX25vX3Jlc3VsdHMnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc2hvd0FkZEJ1dHRvbikge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAjYWRkQnV0dG9uRWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYXV0b2NvbXBsZXRlLWFjdGlvbiBza3ktYXV0b2NvbXBsZXRlLWFjdGlvbi1hZGQgc2t5LWJ0biBza3ktYnRuLWxpbmtcIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiaXNFbGVtZW50Rm9jdXNlZChhZGRCdXR0b25FbClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQnV0dG9uQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiYWRkXCIgLz5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2F1dG9jb21wbGV0ZV9hZGQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRTZWFyY2hSZXN1bHRUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAge3sgaXRlbVtkZXNjcmlwdG9yUHJvcGVydHldIH19XG48L25nLXRlbXBsYXRlPlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyIdModule, SkyNumericModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyAutocompleteModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteModule, declarations: [SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutocompleteSearchAsyncDisabledPipe], imports: [CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule], exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteModule, imports: [CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutocompleteSearchAsyncDisabledPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQXNCcEUsTUFBTSxPQUFPLHFCQUFxQjsrR0FBckIscUJBQXFCO2dIQUFyQixxQkFBcUIsaUJBbEI5Qix3QkFBd0I7WUFDeEIsNkJBQTZCO1lBQzdCLHNDQUFzQyxhQUd0QyxZQUFZO1lBQ1osV0FBVztZQUNYLGNBQWM7WUFDZCxzQkFBc0I7WUFDdEIsYUFBYTtZQUNiLFdBQVc7WUFDWCx3QkFBd0I7WUFDeEIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxhQUFhLGFBRUwsd0JBQXdCLEVBQUUsNkJBQTZCO2dIQUV0RCxxQkFBcUIsWUFiOUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2Qsc0JBQXNCO1lBQ3RCLGFBQWE7WUFDYixXQUFXO1lBQ1gsd0JBQXdCO1lBQ3hCLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsYUFBYTs7NEZBSUoscUJBQXFCO2tCQXBCakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4Qiw2QkFBNkI7d0JBQzdCLHNDQUFzQztxQkFDdkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3dCQUNkLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsNkJBQTZCLENBQUM7aUJBQ25FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFmZml4TW9kdWxlLCBTa3lJZE1vZHVsZSwgU2t5TnVtZXJpY01vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUZXh0SGlnaGxpZ2h0TW9kdWxlLCBTa3lXYWl0TW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNEaXNhYmxlZFBpcGUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtZGlzYWJsZWQucGlwZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsXG4gICAgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNEaXNhYmxlZFBpcGUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5VGV4dEhpZ2hsaWdodE1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUlkTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lOdW1lcmljTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVdhaXRNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lBdXRvY29tcGxldGVDb21wb25lbnQsIFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlTW9kdWxlIHt9XG4iXX0=","/**\n * Clone the country data for each component instance to avoid overwriting\n * the global country data.\n */\nexport function cloneCountryData(data) {\n const clone = [...data];\n return clone.map((country) => {\n const mapped = {\n iso2: country.iso2,\n dialCode: country.dialCode,\n name: country.name,\n priority: country.priority,\n };\n if (country.areaCodes) {\n mapped.areaCodes = [...country.areaCodes];\n }\n return mapped;\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUtY291bnRyeS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC9jbG9uZS1jb3VudHJ5LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWU7SUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUEyQjtZQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7U0FDM0IsQ0FBQztRQUVGLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb3VudHJ5IH0gZnJvbSAnaW50bC10ZWwtaW5wdXQvZGF0YSc7XG5cbmltcG9ydCB0eXBlIHsgU2t5Q291bnRyeUZpZWxkQ291bnRyeSB9IGZyb20gJy4vdHlwZXMvY291bnRyeSc7XG5cbi8qKlxuICogQ2xvbmUgdGhlIGNvdW50cnkgZGF0YSBmb3IgZWFjaCBjb21wb25lbnQgaW5zdGFuY2UgdG8gYXZvaWQgb3ZlcndyaXRpbmdcbiAqIHRoZSBnbG9iYWwgY291bnRyeSBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVDb3VudHJ5RGF0YShkYXRhOiBDb3VudHJ5W10pOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5W10ge1xuICBjb25zdCBjbG9uZSA9IFsuLi5kYXRhXTtcblxuICByZXR1cm4gY2xvbmUubWFwKChjb3VudHJ5KSA9PiB7XG4gICAgY29uc3QgbWFwcGVkOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5ID0ge1xuICAgICAgaXNvMjogY291bnRyeS5pc28yLFxuICAgICAgZGlhbENvZGU6IGNvdW50cnkuZGlhbENvZGUsXG4gICAgICBuYW1lOiBjb3VudHJ5Lm5hbWUsXG4gICAgICBwcmlvcml0eTogY291bnRyeS5wcmlvcml0eSxcbiAgICB9O1xuXG4gICAgaWYgKGNvdW50cnkuYXJlYUNvZGVzKSB7XG4gICAgICBtYXBwZWQuYXJlYUNvZGVzID0gWy4uLmNvdW50cnkuYXJlYUNvZGVzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwcGVkO1xuICB9KTtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/**\n * @internal\n */\nexport const SKY_COUNTRY_FIELD_CONTEXT = new InjectionToken('SkyCountryFieldContext');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC1jb250ZXh0LXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC90eXBlcy9jb3VudHJ5LWZpZWxkLWNvbnRleHQtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUNwQyxJQUFJLGNBQWMsQ0FBeUIsd0JBQXdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUNvdW50cnlGaWVsZENvbnRleHQgfSBmcm9tICcuL2NvdW50cnktZmllbGQtY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBTS1lfQ09VTlRSWV9GSUVMRF9DT05URVhUID1cbiAgbmV3IEluamVjdGlvblRva2VuPFNreUNvdW50cnlGaWVsZENvbnRleHQ+KCdTa3lDb3VudHJ5RmllbGRDb250ZXh0Jyk7XG4iXX0=","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation, forwardRef, inject, } from '@angular/core';\nimport { NG_VALIDATORS, NgControl, NgModel, UntypedFormControl, } from '@angular/forms';\nimport intlTelInput from 'intl-tel-input';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { cloneCountryData } from './clone-country-data';\nimport { SKY_COUNTRY_FIELD_CONTEXT } from './types/country-field-context-token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/forms\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"../autocomplete/autocomplete.component\";\nimport * as i5 from \"../autocomplete/autocomplete-input.directive\";\nimport * as i6 from \"@skyux/i18n\";\nconst DEFAULT_COUNTRY_CODE = 'us';\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\nlet uniqueId = 0;\nexport class SkyCountryFieldComponent {\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country code for the default country.\n * When search results include the default country, it appears at the top of the list.\n * @default \"us\"\n */\n set defaultCountry(value) {\n if (!value) {\n value = DEFAULT_COUNTRY_CODE;\n }\n if (value !== this.#_defaultCountry) {\n this.#_defaultCountry = value.toLowerCase();\n this.#defaultCountryData = this.countries.find((country) => country.iso2 === this.#_defaultCountry);\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n }\n }\n get defaultCountry() {\n return this.#_defaultCountry;\n }\n /**\n * Whether to disable the country field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(isDisabled) {\n this.#_disabled = isDisabled ?? false;\n if (isDisabled) {\n this.countrySearchFormControl.disable();\n }\n else {\n this.countrySearchFormControl.enable();\n }\n this.#changeDetector.markForCheck();\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country codes for the countries that users can select. By default, all countries are available.\n */\n set supportedCountryISOs(value) {\n // Ensure all values are the same case.\n if (Array.isArray(value)) {\n value = value.map((v) => v.toLowerCase());\n }\n this.#_supportedCountryISOs = value;\n this.#setupCountries();\n }\n get supportedCountryISOs() {\n return this.#_supportedCountryISOs || [];\n }\n set selectedCountry(newCountry) {\n if (!this.#countriesAreEqual(this.selectedCountry, newCountry)) {\n const newCountryIso = newCountry?.iso2;\n if (newCountryIso) {\n const isoCountry = this.countries.find((country) => country.iso2 === newCountryIso);\n if (isoCountry) {\n newCountry = isoCountry;\n }\n }\n this.#_selectedCountry = newCountry;\n this.#sortCountriesWithSelectedAndDefault(newCountry);\n this.#internalFormChange = true;\n this.countrySearchFormControl.setValue(this.selectedCountry);\n if (!this.#isInitialChange) {\n this.onChange(newCountry);\n this.onTouched();\n this.selectedCountryChange.emit(newCountry);\n }\n else if (this.#ngControl?.control) {\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n this.#ngControl.control.markAsPristine();\n }\n this.#isInitialChange = false;\n /**\n * The if statement is complex. The control type check ensures that\n * we only watch for the initial time through this function on reactive forms. However,\n * template forms will send through `null` and then `undefined` on empty initialization\n * so we have to check for when the non-null pass through happens.\n */\n }\n else if (!(this.#ngControl instanceof NgModel) || newCountry !== null) {\n this.#isInitialChange = false;\n }\n }\n get selectedCountry() {\n return this.#_selectedCountry;\n }\n #changeDetector;\n #defaultCountryData;\n #injector;\n #internalFormChange;\n #isInitialChange;\n #ngControl;\n #ngUnsubscribe;\n #_defaultCountry;\n #_disabled;\n #_selectedCountry;\n #_supportedCountryISOs;\n constructor(changeDetector, injector, inputBoxHostSvc) {\n this.inputBoxHostSvc = inputBoxHostSvc;\n /**\n * Fires when the selected country changes.\n */\n this.selectedCountryChange = new EventEmitter();\n /**\n * Fires when the country field is focused out.\n * @internal\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n this.countryFieldFocusout = new EventEmitter();\n this.countries = [];\n this.searchTextMinimumCharacters = 2;\n this.context = inject(SKY_COUNTRY_FIELD_CONTEXT, {\n optional: true,\n });\n this.#internalFormChange = false;\n this.#isInitialChange = true;\n this.#ngControl = null;\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n this.onChange = (value) => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouched = () => { };\n this.#changeDetector = changeDetector;\n this.#injector = injector;\n this.inputId = `sky-country-field-input-${uniqueId++}`;\n this.#setupCountries();\n this.countrySearchFormControl = new UntypedFormControl();\n }\n /**\n * Angular lifecycle hook for when the component is initialized\n * @internal\n */\n ngOnInit() {\n this.#updateInputBox();\n this.#ngControl = this.#injector.get(NgControl, null);\n if (this.#ngControl) {\n this.#ngControl.valueAccessor = this;\n }\n else {\n /**\n * The initial change boolean is to determine if the form is setting the value. When no form\n * is present we don't want to ignore the first change.\n */\n this.#isInitialChange = false;\n }\n if (!this.defaultCountry) {\n this.defaultCountry = DEFAULT_COUNTRY_CODE;\n }\n this.countrySearchFormControl.valueChanges\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newValue) => {\n if (newValue && !this.#internalFormChange) {\n this.selectedCountry = newValue;\n }\n });\n this.#changeDetector.markForCheck();\n }\n /**\n * Angular lifecycle hook for when the component is destructed.\n * @internal\n */\n ngOnDestroy() {\n this.selectedCountryChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Sets the component's touched value when the autocomplete is blurred\n * @internal\n */\n onAutocompleteBlur() {\n this.onTouched();\n }\n /**\n * Sets the country to validate against based on the county's iso2 code.\n * @param newCountry The International Organization for Standardization's two-letter code\n * for the default country.\n * @internal\n */\n onCountrySelected(newCountry) {\n if (newCountry.selectedItem) {\n this.writeValue(this.countries.find((countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2));\n }\n else {\n this.writeValue(undefined);\n }\n }\n /**\n * Called when the Autocomplete textarea loses focus\n * @internal\n */\n onAutocompleteFocusout(e) {\n this.countryFieldFocusout.emit(e);\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n // Allows Angular to disable the input.\n setDisabledState(disabled) {\n this.disabled = disabled;\n }\n validate(control) {\n if (control.value) {\n if ((this.supportedCountryISOs &&\n this.supportedCountryISOs.length > 0 &&\n this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n !this.countries.find((country) => country.iso2 === control.value.iso2)) {\n return { unsupportedCountry: true };\n }\n }\n return null;\n }\n writeValue(value) {\n this.selectedCountry = value;\n this.#changeDetector.markForCheck();\n }\n onFocus($event) {\n $event.target.select();\n }\n #countriesAreEqual(country1, country2) {\n if (country1 && country2) {\n return country1.iso2 === country2.iso2;\n }\n // NOTE: We are doing this in this way because template forms will send through `null`\n // and then `undefined` on empty initialization. These are functionally equivalent but will\n // not pass a standard triple equals check.\n return !country1 && !country2;\n }\n #countriesEqual(a, b) {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n #setupCountries() {\n this.countries = cloneCountryData(intlTelInput.getCountryData());\n /* istanbul ignore else */\n if (!this.context?.inPhoneField) {\n /**\n * The library we get the country data from includes extra phone properties.\n * We want to remove these unless we are in a phone field\n */\n this.countries.forEach((country) => {\n delete country.dialCode;\n delete country.areaCodes;\n delete country.priority;\n });\n }\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n this.countries = this.countries.filter((country) => {\n return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n });\n }\n }\n #sortCountriesWithSelectedAndDefault(selectedCountry) {\n let selectedCountryIndex;\n let selectedCountryData;\n const sortedNewCountries = this.countries.sort((a, b) => {\n if (((this.#defaultCountryData &&\n this.#countriesEqual(a, this.#defaultCountryData)) ||\n (a.name && b.name && a.name < b.name)) &&\n (!this.#defaultCountryData ||\n !this.#countriesEqual(this.#defaultCountryData, b))) {\n return -1;\n }\n else {\n return 1;\n }\n });\n if (selectedCountry) {\n // Note: We are looking up this data here to ensure we are using the official data from the\n // library and not the data provided by the user on initialization of the component\n const foundCountry = this.countries.find((country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase());\n if (foundCountry) {\n selectedCountryData = foundCountry;\n selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n if (selectedCountryIndex >= 0) {\n this.countries.splice(selectedCountryIndex, 1);\n sortedNewCountries.splice(0, 0, selectedCountryData);\n }\n }\n }\n this.countries = sortedNewCountries;\n }\n #updateInputBox() {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.inputId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCountryFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.SkyInputBoxHostService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyCountryFieldComponent, isStandalone: false, selector: \"sky-country-field\", inputs: { autocompleteAttribute: \"autocompleteAttribute\", defaultCountry: \"defaultCountry\", disabled: \"disabled\", supportedCountryISOs: \"supportedCountryISOs\" }, outputs: { selectedCountryChange: \"selectedCountryChange\", countryFieldFocusout: \"countryFieldFocusout\" }, providers: [SKY_COUNTRY_FIELD_VALIDATOR], viewQueries: [{ propertyName: \"countrySearchAutocompleteDirective\", first: true, predicate: SkyAutocompleteInputDirective, descendants: true }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <span\\n class=\\\"sky-country-field-container\\\"\\n [ngClass]=\\\"{\\n 'sky-country-field-disabled': disabled\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"inputBoxHostSvc?.labelId ?? inputId\\\"\\n [data]=\\\"countries\\\"\\n [dropdownHintText]=\\\"\\n 'skyux_country_field_dropdown_hint_text' | skyLibResources\\n \\\"\\n [propertiesToSearch]=\\\"['name', 'iso2']\\\"\\n [searchResultTemplate]=\\\"countrySearchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n (selectionChange)=\\\"onCountrySelected($event)\\\"\\n >\\n <div class=\\\"sky-country-field-input\\\">\\n <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\\n <textarea\\n class=\\\"sky-form-control\\\"\\n name=\\\"selectedCountry\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"\\n context?.inPhoneField\\n ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n : inputBoxHostSvc?.labelText\\n ? undefined\\n : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"inputId\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [formControl]=\\\"countrySearchFormControl\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (focusout)=\\\"onAutocompleteFocusout($event)\\\"\\n ></textarea>\\n </div>\\n </sky-autocomplete>\\n </span>\\n</ng-template>\\n\\n<ng-template #countrySearchResultTemplate let-item=\\\"item\\\">\\n <div class=\\\"sky-country-field-search-result-flag\\\">\\n <div [ngClass]=\\\"'iti__flag iti__' + item.iso2.toLowerCase()\\\"></div>\\n </div>\\n <div class=\\\"sky-country-field-search-result-info\\\">\\n {{ item.name }}\\n @if (context?.inPhoneField) {\\n <span\\n class=\\\"sky-font-deemphasized sky-country-field-search-result-dial-code\\\"\\n >\\n {{ item.dialCode }}\\n </span>\\n }\\n </div>\\n</ng-template>\\n\", styles: [\":root{--iti-hover-color: rgba(0, 0, 0, .05);--iti-border-color: #ccc;--iti-dialcode-color: #999;--iti-dropdown-bg: white;--iti-spacer-horizontal: 8px;--iti-flag-height: 12px;--iti-flag-width: 16px;--iti-border-width: 1px;--iti-arrow-height: 4px;--iti-arrow-width: 6px;--iti-triangle-border: calc(var(--iti-arrow-width) / 2);--iti-arrow-padding: 6px;--iti-arrow-color: #555;--iti-path-flags-1x: url(data:image/webp;base64,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);--iti-path-flags-2x: url(data:image/webp;base64,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);--iti-path-globe-1x: url(data:image/webp;base64,UklGRvoBAABXRUJQVlA4TO4BAAAvE8AEENXIkiRZtZu7H33ql07cqTlilvbz9i4tosSMZma27zWzHRGyIEk2bcu2bdvGn23btm3btm3btm0/m5PqAEkLTYYwxTPAW84Tl6wNgmvIqptKKH9nYAr4xle+TML/BDI2LSg6QHKT/nngE4+ZMIUePUGeTvly+YoV8F1DtkGUzlfst2LUKTX6PaWZeMWiDqN6PgcciGa2boYPmxlR5bIIL5l6RVyDYMXmY1f10pGb7PmAN6sRTBTN3N9C9Zi/LbVhlL+Oo2M7RxoE/a4+/nDjeBrSVwtGYXGGMIrUbJzCU1LgFftP9K1hkpOXmBim30cIJ1hgOkSwMhYCMgmaw7rXcfT5/wQcFhrcuaOEBuq5ytYblLPBEhV0Aq/ZqcDn/6RUDgrUL0/0UZgK/p+rR8/4nZAqFfuXA6TbtFQyJSe4gpj6T19a5q+HLEkox0mlWXvbIGbuJw28fkozjybhT5oXHNY4py5rH1CflcyeB1fId9wXDAvFmz/8m6AE/8TgYzEVGoRMCKUhND7PQho7jGo1utkdV559cm3llGFs3sxBZrmGbEExop91jyfg5G7BmCCi6evNaSDFBrG3vyaRNzt+HJ9kQpVbgj+xFUoNgr3abxqGfH3WfQq9lp5UZPRW74ZbFgpq+EGo67dUAQ==);--iti-path-globe-2x: url(data:image/webp;base64,UklGRlwFAABXRUJQVlA4TE8FAAAvJ8AJEEfHKJIkKdmcgvjj3wwill7QwKhtJEnOnIDmv/zJLAdGbSNJcuYENP/lT2Y5OGwjSZHmtL3wTFl9tp8SM/9xz47Ctm2b7mnwDggKFNd77jgHyxhIYVvLQBDEHEBKRQBIOXzQpAhiBQCIAMaIAACHhAQHIMFhhRkSRt1hlRIYDAZDhiE3CVrBS2gFkZGRYdA6mjQQBYAv6yOZSVAQCoPWMCWBIBQKwtCCUBANFARBlChBfPCG/dZUjxJECYJQECU+KGFQEC1YdN/NSUNRTDm4osQBGUwFjDFCBOYRo9QWxAmPlKQECRERMbVLCZapZ0owSrnz3hb6/P8auL9vAwr7/xeS5EV9q2sWU2vbtjla27Zt28akprq6a3bPtm2np87eJIvePUzd9fvoXkT0fwK4Vwdo8t6qyQW+O7Tn4k7NAdvi/jMR0fGpwhglhZBKm3B0pzvg3JcDrUuMEn7SDaUIRTLhhqb/AbDvw+bbJToMEq5QflFfv+QhJVPxcmkm/Ih9TzZfFxk/CJUnP7zMykJqnhsqQ51M6tTv2Pdgc/GKCuKmaI96HlhVAJy4vWVWWgRSfYJ9l4jv+4aB0F15Td3kH1YW4DiMnEJHGSaFOoOdw4LxOhCqPTf0JvLys6I8Wv/9BeeuhEkZfE+UZfNSOumqT+CArgHwbBHZw+ZB00AGeiYxIKKudH2zDxg97VK7FxdO6+9Pmt3l4J/bZR58rtyEOY6dtdhcMbPh2jsyNKr3mNnDy+c8Pig0od5wGXakg7DYgYgfU5648s0fC0Ljv9SigQVrHwUafXVgmNE92zBBBeYjsHn5L6Emz/6776EnxwJUsqKADMDmq8fG/T16fujr7lhknhheLG4PPwFD15IXs2xWFWBZVj4ndDW+fDItPRncssi75Fxv/iHQQL2PDbkg4k/zP/BfgfR1axxy59PM/IYdsypZWUCUiTlck2/zTz4fm3LzqkNlxxnzW+A4fK4vkbNrIbn7bgVoKn3djQu90krrllynQ1g7v2rpjUYsfeR6tdLSaqV5w5fR6E5+k8BVT/0aqqSXDAdV4wvpCplTCJnbFTLb9dTEHjoQQiTMC7Ah3PPuwbffOfD+xP4d3s7uMGDC+wcOvrs7kVKTZ6m4EMIVfn1O61JyrnuU3EM3A3znefrp142f5cnmnDXNyXecPFYUYNt2pVUlvot//qWFDszz9aTrCuGpQVX4Wn+KAw6rCrAgw/eqLZXQVQfmXZ5QnnCF2wrwdlJ5F8DhC1MP/itRnhv+wmHji7hpT+x0tekziRw7jxUF2LZznX3xOydH3e5fVhYWO5QOlClPzYFX9EMD65P9bBHZ16fLq7dHfrlal5vO2LxuKkTcfABvjZDxwsWvf9hs7pCv2ry5cowvB2/8iosq5YraWHw7JCxLyaAWZPoUrilMaRMKo8WwpQv0z2AXqnLzLA42H5gKEVcTuM76RfDtpVrzh9b5oTp0e5SI+Topy78hAzFm6QqRMN2gugNYLH0EoHF6Pyw3vm+OYQMRlwPpCd+sAep/WQ1OPGZZ13lO0ugpE0+m1xGRbdNKe67wzTN3Nouw3yfw03WH+nrnqUAnEul5YOXA5o20L4SnAiXjoX6f7Pm6RIeBl14EGe4a8VLad4UnvZTwysxR2DtOumEiUOpliLi7FWNb2vOEK4QQnnyoIav+Ko9XhGbUF1gZ7tWKcVBLX+T05HkOGmn0iA4WjsW9Ww6ny3WiTAjhyd41WWfGrv4sAof7t/l+ppGJlFeR7oBVr4kF2BYP0oYjDxsZpjuTsQDHsXjAUYxrrwwe9gGWRRRZ3CcA);--iti-flag-sprite-width: 3904px;--iti-flag-sprite-height: 12px;--iti-mobile-popup-margin: 30px}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti__a11y-text{width:1px;height:1px;clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute}.iti input.iti__tel-input,.iti input.iti__tel-input[type=text],.iti input.iti__tel-input[type=tel]{position:relative;z-index:0;margin:0!important}.iti__country-container{position:absolute;top:0;bottom:0;padding:var(--iti-border-width)}.iti__selected-country{z-index:1;position:relative;display:flex;align-items:center;height:100%;background:none;border:0;margin:0;padding:0;font-family:inherit;font-size:inherit;color:inherit;border-radius:0;font-weight:inherit;line-height:inherit;text-decoration:none}.iti__selected-country-primary{display:flex;align-items:center;height:100%;padding:0 var(--iti-arrow-padding) 0 var(--iti-spacer-horizontal)}.iti__arrow{margin-left:var(--iti-arrow-padding);width:0;height:0;border-left:var(--iti-triangle-border) solid transparent;border-right:var(--iti-triangle-border) solid transparent;border-top:var(--iti-arrow-height) solid var(--iti-arrow-color)}[dir=rtl] .iti__arrow{margin-right:var(--iti-arrow-padding);margin-left:0}.iti__arrow--up{border-top:none;border-bottom:var(--iti-arrow-height) solid var(--iti-arrow-color)}.iti__dropdown-content{border-radius:3px;background-color:var(--iti-dropdown-bg)}.iti--inline-dropdown .iti__dropdown-content{position:absolute;z-index:2;margin-top:3px;margin-left:calc(var(--iti-border-width) * -1);border:var(--iti-border-width) solid var(--iti-border-color);box-shadow:1px 1px 4px #0003}.iti__search-input{width:100%;border-width:0;border-radius:3px}.iti__search-input+.iti__country-list{border-top:1px solid var(--iti-border-color)}.iti__country-list{list-style:none;padding:0;margin:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti--inline-dropdown .iti__country-list{max-height:185px}.iti--flexible-dropdown-width .iti__country-list{white-space:nowrap}@media (max-width: 500px){.iti--flexible-dropdown-width .iti__country-list{white-space:normal}}.iti__country{display:flex;align-items:center;padding:8px var(--iti-spacer-horizontal);outline:none}.iti__dial-code{color:var(--iti-dialcode-color)}.iti__country.iti__highlight{background-color:var(--iti-hover-color)}.iti__country-list .iti__flag,.iti__country-name{margin-right:var(--iti-spacer-horizontal)}[dir=rtl] .iti__country-list .iti__flag,[dir=rtl] .iti__country-name{margin-right:0;margin-left:var(--iti-spacer-horizontal)}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover button{cursor:pointer}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country-primary:hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country:has(+.iti__dropdown-content:hover) .iti__selected-country-primary{background-color:var(--iti-hover-color)}.iti .iti__selected-dial-code{margin-left:4px}[dir=rtl] .iti .iti__selected-dial-code{margin-left:0;margin-right:4px}.iti--container{position:fixed;top:-1000px;left:-1000px;z-index:1060;padding:var(--iti-border-width)}.iti--container:hover{cursor:pointer}.iti--fullscreen-popup.iti--container{background-color:#00000080;inset:0;position:fixed;padding:var(--iti-mobile-popup-margin);display:flex;flex-direction:column;justify-content:flex-start}.iti--fullscreen-popup .iti__dropdown-content{display:flex;flex-direction:column;max-height:100%;position:relative}.iti--fullscreen-popup .iti__country{padding:10px;line-height:1.5em}.iti__flag{--iti-flag-offset: 100px;height:var(--iti-flag-height);width:var(--iti-flag-width);border-radius:1px;box-shadow:0 0 1px #888;background-image:var(--iti-path-flags-1x);background-repeat:no-repeat;background-position:var(--iti-flag-offset) 0;background-size:var(--iti-flag-sprite-width) var(--iti-flag-sprite-height)}.iti__ac{--iti-flag-offset: 0px}.iti__ad{--iti-flag-offset: -16px}.iti__ae{--iti-flag-offset: -32px}.iti__af{--iti-flag-offset: -48px}.iti__ag{--iti-flag-offset: -64px}.iti__ai{--iti-flag-offset: -80px}.iti__al{--iti-flag-offset: -96px}.iti__am{--iti-flag-offset: -112px}.iti__ao{--iti-flag-offset: -128px}.iti__ar{--iti-flag-offset: -144px}.iti__as{--iti-flag-offset: -160px}.iti__at{--iti-flag-offset: -176px}.iti__au{--iti-flag-offset: -192px}.iti__aw{--iti-flag-offset: -208px}.iti__ax{--iti-flag-offset: -224px}.iti__az{--iti-flag-offset: -240px}.iti__ba{--iti-flag-offset: -256px}.iti__bb{--iti-flag-offset: -272px}.iti__bd{--iti-flag-offset: -288px}.iti__be{--iti-flag-offset: -304px}.iti__bf{--iti-flag-offset: -320px}.iti__bg{--iti-flag-offset: -336px}.iti__bh{--iti-flag-offset: -352px}.iti__bi{--iti-flag-offset: -368px}.iti__bj{--iti-flag-offset: -384px}.iti__bl{--iti-flag-offset: -400px}.iti__bm{--iti-flag-offset: -416px}.iti__bn{--iti-flag-offset: -432px}.iti__bo{--iti-flag-offset: -448px}.iti__bq{--iti-flag-offset: -464px}.iti__br{--iti-flag-offset: -480px}.iti__bs{--iti-flag-offset: -496px}.iti__bt{--iti-flag-offset: -512px}.iti__bw{--iti-flag-offset: -528px}.iti__by{--iti-flag-offset: -544px}.iti__bz{--iti-flag-offset: -560px}.iti__ca{--iti-flag-offset: -576px}.iti__cc{--iti-flag-offset: -592px}.iti__cd{--iti-flag-offset: -608px}.iti__cf{--iti-flag-offset: -624px}.iti__cg{--iti-flag-offset: -640px}.iti__ch{--iti-flag-offset: -656px}.iti__ci{--iti-flag-offset: -672px}.iti__ck{--iti-flag-offset: -688px}.iti__cl{--iti-flag-offset: -704px}.iti__cm{--iti-flag-offset: -720px}.iti__cn{--iti-flag-offset: -736px}.iti__co{--iti-flag-offset: -752px}.iti__cr{--iti-flag-offset: -768px}.iti__cu{--iti-flag-offset: -784px}.iti__cv{--iti-flag-offset: -800px}.iti__cw{--iti-flag-offset: -816px}.iti__cx{--iti-flag-offset: -832px}.iti__cy{--iti-flag-offset: -848px}.iti__cz{--iti-flag-offset: -864px}.iti__de{--iti-flag-offset: -880px}.iti__dj{--iti-flag-offset: -896px}.iti__dk{--iti-flag-offset: -912px}.iti__dm{--iti-flag-offset: -928px}.iti__do{--iti-flag-offset: -944px}.iti__dz{--iti-flag-offset: -960px}.iti__ec{--iti-flag-offset: -976px}.iti__ee{--iti-flag-offset: -992px}.iti__eg{--iti-flag-offset: -1008px}.iti__eh{--iti-flag-offset: -1024px}.iti__er{--iti-flag-offset: -1040px}.iti__es{--iti-flag-offset: -1056px}.iti__et{--iti-flag-offset: -1072px}.iti__fi{--iti-flag-offset: -1088px}.iti__fj{--iti-flag-offset: -1104px}.iti__fk{--iti-flag-offset: -1120px}.iti__fm{--iti-flag-offset: -1136px}.iti__fo{--iti-flag-offset: -1152px}.iti__fr{--iti-flag-offset: -1168px}.iti__ga{--iti-flag-offset: -1184px}.iti__gb{--iti-flag-offset: -1200px}.iti__gd{--iti-flag-offset: -1216px}.iti__ge{--iti-flag-offset: -1232px}.iti__gf{--iti-flag-offset: -1248px}.iti__gg{--iti-flag-offset: -1264px}.iti__gh{--iti-flag-offset: -1280px}.iti__gi{--iti-flag-offset: -1296px}.iti__gl{--iti-flag-offset: -1312px}.iti__gm{--iti-flag-offset: -1328px}.iti__gn{--iti-flag-offset: -1344px}.iti__gp{--iti-flag-offset: -1360px}.iti__gq{--iti-flag-offset: -1376px}.iti__gr{--iti-flag-offset: -1392px}.iti__gt{--iti-flag-offset: -1408px}.iti__gu{--iti-flag-offset: -1424px}.iti__gw{--iti-flag-offset: -1440px}.iti__gy{--iti-flag-offset: -1456px}.iti__hk{--iti-flag-offset: -1472px}.iti__hn{--iti-flag-offset: -1488px}.iti__hr{--iti-flag-offset: -1504px}.iti__ht{--iti-flag-offset: -1520px}.iti__hu{--iti-flag-offset: -1536px}.iti__id{--iti-flag-offset: -1552px}.iti__ie{--iti-flag-offset: -1568px}.iti__il{--iti-flag-offset: -1584px}.iti__im{--iti-flag-offset: -1600px}.iti__in{--iti-flag-offset: -1616px}.iti__io{--iti-flag-offset: -1632px}.iti__iq{--iti-flag-offset: -1648px}.iti__ir{--iti-flag-offset: -1664px}.iti__is{--iti-flag-offset: -1680px}.iti__it{--iti-flag-offset: -1696px}.iti__je{--iti-flag-offset: -1712px}.iti__jm{--iti-flag-offset: -1728px}.iti__jo{--iti-flag-offset: -1744px}.iti__jp{--iti-flag-offset: -1760px}.iti__ke{--iti-flag-offset: -1776px}.iti__kg{--iti-flag-offset: -1792px}.iti__kh{--iti-flag-offset: -1808px}.iti__ki{--iti-flag-offset: -1824px}.iti__km{--iti-flag-offset: -1840px}.iti__kn{--iti-flag-offset: -1856px}.iti__kp{--iti-flag-offset: -1872px}.iti__kr{--iti-flag-offset: -1888px}.iti__kw{--iti-flag-offset: -1904px}.iti__ky{--iti-flag-offset: -1920px}.iti__kz{--iti-flag-offset: -1936px}.iti__la{--iti-flag-offset: -1952px}.iti__lb{--iti-flag-offset: -1968px}.iti__lc{--iti-flag-offset: -1984px}.iti__li{--iti-flag-offset: -2000px}.iti__lk{--iti-flag-offset: -2016px}.iti__lr{--iti-flag-offset: -2032px}.iti__ls{--iti-flag-offset: -2048px}.iti__lt{--iti-flag-offset: -2064px}.iti__lu{--iti-flag-offset: -2080px}.iti__lv{--iti-flag-offset: -2096px}.iti__ly{--iti-flag-offset: -2112px}.iti__ma{--iti-flag-offset: -2128px}.iti__mc{--iti-flag-offset: -2144px}.iti__md{--iti-flag-offset: -2160px}.iti__me{--iti-flag-offset: -2176px}.iti__mf{--iti-flag-offset: -2192px}.iti__mg{--iti-flag-offset: -2208px}.iti__mh{--iti-flag-offset: -2224px}.iti__mk{--iti-flag-offset: -2240px}.iti__ml{--iti-flag-offset: -2256px}.iti__mm{--iti-flag-offset: -2272px}.iti__mn{--iti-flag-offset: -2288px}.iti__mo{--iti-flag-offset: -2304px}.iti__mp{--iti-flag-offset: -2320px}.iti__mq{--iti-flag-offset: -2336px}.iti__mr{--iti-flag-offset: -2352px}.iti__ms{--iti-flag-offset: -2368px}.iti__mt{--iti-flag-offset: -2384px}.iti__mu{--iti-flag-offset: -2400px}.iti__mv{--iti-flag-offset: -2416px}.iti__mw{--iti-flag-offset: -2432px}.iti__mx{--iti-flag-offset: -2448px}.iti__my{--iti-flag-offset: -2464px}.iti__mz{--iti-flag-offset: -2480px}.iti__na{--iti-flag-offset: -2496px}.iti__nc{--iti-flag-offset: -2512px}.iti__ne{--iti-flag-offset: -2528px}.iti__nf{--iti-flag-offset: -2544px}.iti__ng{--iti-flag-offset: -2560px}.iti__ni{--iti-flag-offset: -2576px}.iti__nl{--iti-flag-offset: -2592px}.iti__no{--iti-flag-offset: -2608px}.iti__np{--iti-flag-offset: -2624px}.iti__nr{--iti-flag-offset: -2640px}.iti__nu{--iti-flag-offset: -2656px}.iti__nz{--iti-flag-offset: -2672px}.iti__om{--iti-flag-offset: -2688px}.iti__pa{--iti-flag-offset: -2704px}.iti__pe{--iti-flag-offset: -2720px}.iti__pf{--iti-flag-offset: -2736px}.iti__pg{--iti-flag-offset: -2752px}.iti__ph{--iti-flag-offset: -2768px}.iti__pk{--iti-flag-offset: -2784px}.iti__pl{--iti-flag-offset: -2800px}.iti__pm{--iti-flag-offset: -2816px}.iti__pr{--iti-flag-offset: -2832px}.iti__ps{--iti-flag-offset: -2848px}.iti__pt{--iti-flag-offset: -2864px}.iti__pw{--iti-flag-offset: -2880px}.iti__py{--iti-flag-offset: -2896px}.iti__qa{--iti-flag-offset: -2912px}.iti__re{--iti-flag-offset: -2928px}.iti__ro{--iti-flag-offset: -2944px}.iti__rs{--iti-flag-offset: -2960px}.iti__ru{--iti-flag-offset: -2976px}.iti__rw{--iti-flag-offset: -2992px}.iti__sa{--iti-flag-offset: -3008px}.iti__sb{--iti-flag-offset: -3024px}.iti__sc{--iti-flag-offset: -3040px}.iti__sd{--iti-flag-offset: -3056px}.iti__se{--iti-flag-offset: -3072px}.iti__sg{--iti-flag-offset: -3088px}.iti__sh{--iti-flag-offset: -3104px}.iti__si{--iti-flag-offset: -3120px}.iti__sj{--iti-flag-offset: -3136px}.iti__sk{--iti-flag-offset: -3152px}.iti__sl{--iti-flag-offset: -3168px}.iti__sm{--iti-flag-offset: -3184px}.iti__sn{--iti-flag-offset: -3200px}.iti__so{--iti-flag-offset: -3216px}.iti__sr{--iti-flag-offset: -3232px}.iti__ss{--iti-flag-offset: -3248px}.iti__st{--iti-flag-offset: -3264px}.iti__sv{--iti-flag-offset: -3280px}.iti__sx{--iti-flag-offset: -3296px}.iti__sy{--iti-flag-offset: -3312px}.iti__sz{--iti-flag-offset: -3328px}.iti__tc{--iti-flag-offset: -3344px}.iti__td{--iti-flag-offset: -3360px}.iti__tg{--iti-flag-offset: -3376px}.iti__th{--iti-flag-offset: -3392px}.iti__tj{--iti-flag-offset: -3408px}.iti__tk{--iti-flag-offset: -3424px}.iti__tl{--iti-flag-offset: -3440px}.iti__tm{--iti-flag-offset: -3456px}.iti__tn{--iti-flag-offset: -3472px}.iti__to{--iti-flag-offset: -3488px}.iti__tr{--iti-flag-offset: -3504px}.iti__tt{--iti-flag-offset: -3520px}.iti__tv{--iti-flag-offset: -3536px}.iti__tw{--iti-flag-offset: -3552px}.iti__tz{--iti-flag-offset: -3568px}.iti__ua{--iti-flag-offset: -3584px}.iti__ug{--iti-flag-offset: -3600px}.iti__us{--iti-flag-offset: -3616px}.iti__uy{--iti-flag-offset: -3632px}.iti__uz{--iti-flag-offset: -3648px}.iti__va{--iti-flag-offset: -3664px}.iti__vc{--iti-flag-offset: -3680px}.iti__ve{--iti-flag-offset: -3696px}.iti__vg{--iti-flag-offset: -3712px}.iti__vi{--iti-flag-offset: -3728px}.iti__vn{--iti-flag-offset: -3744px}.iti__vu{--iti-flag-offset: -3760px}.iti__wf{--iti-flag-offset: -3776px}.iti__ws{--iti-flag-offset: -3792px}.iti__xk{--iti-flag-offset: -3808px}.iti__ye{--iti-flag-offset: -3824px}.iti__yt{--iti-flag-offset: -3840px}.iti__za{--iti-flag-offset: -3856px}.iti__zm{--iti-flag-offset: -3872px}.iti__zw{--iti-flag-offset: -3888px}.iti__globe{background-image:var(--iti-path-globe-1x);background-size:contain;background-position:right;box-shadow:none;height:19px}@media (min-resolution: 2x){.iti__flag{background-image:var(--iti-path-flags-2x)}.iti__globe{background-image:var(--iti-path-globe-2x)}}.sky-country-field-container:not(.sky-theme-modern *){--sky-override-country-field-disabled-input-background-color: #cdcfd2;--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-autocomplete-result:has(.sky-country-field-search-result-flag):not(.sky-theme-modern *){--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-phone-info-font-size: 15px;--sky-override-country-field-search-result-dial-code-padding-left: 0;--sky-override-country-field-search-result-info-padding-left: 29px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-country-field-country-btn+.sky-form-control{border-left:none}.sky-country-field-container{width:100%}.sky-autocomplete-result:has(.sky-country-field-search-result-flag){position:relative}.sky-country-field-search-result-flag{display:flex;align-items:center;position:absolute;bottom:0;height:100%}.sky-country-field-search-result-info{padding-left:var(--sky-override-country-field-search-result-info-padding-left, calc(var(--sky-size-icon-s) + var(--sky-space-gap-icon-m)))}.sky-country-field-search-result-dial-code.sky-font-deemphasized{font-size:var(--sky-override-country-field-phone-info-font-size, inherit);padding-left:var(--sky-override-country-field-search-result-dial-code-padding-left, var(--sky-space-gap-label-s))}.sky-country-field-disabled .sky-country-field-input{cursor:default;background-color:var(--sky-override-country-field-disabled-input-background-color, transparent)}.sky-country-field-input{cursor:text;display:flex;position:relative}.sky-country-field-input textarea{overflow:hidden;resize:none!important;white-space:nowrap}:host(.ng-invalid.ng-touched) .sky-country-field-input textarea{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-country-field-search-result-flag .iti__flag{background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/2.0.1/assets/images/intl-tel-input/flags@2x.webp)!important;max-width:var(--sky-override-country-field-max-width, inherit);max-height:var(--sky-override-country-field-max-height, inherit);transform:var(--sky-override-country-field-transform, inherit)}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i3.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i4.SkyAutocompleteComponent, selector: \"sky-autocomplete\", inputs: [\"ariaLabelledBy\", \"data\", \"debounceTime\", \"descriptorProperty\", \"dropdownHintText\", \"enableShowMore\", \"messageStream\", \"wrapperClass\", \"propertiesToSearch\", \"search\", \"searchResultTemplate\", \"searchTextMinimumCharacters\", \"searchFilters\", \"searchResultsLimit\", \"showAddButton\", \"noResultsFoundText\", \"searchAsyncDisabled\", \"allowAnyValue\", \"highlightSearchText\"], outputs: [\"addClick\", \"showMoreClick\", \"selectionChange\", \"searchAsync\", \"openChange\"] }, { kind: \"directive\", type: i5.SkyAutocompleteInputDirective, selector: \"input[skyAutocomplete], textarea[skyAutocomplete]\", inputs: [\"autocompleteAttribute\", \"disabled\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i6.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCountryFieldComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-country-field', providers: [SKY_COUNTRY_FIELD_VALIDATOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <span\\n class=\\\"sky-country-field-container\\\"\\n [ngClass]=\\\"{\\n 'sky-country-field-disabled': disabled\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"inputBoxHostSvc?.labelId ?? inputId\\\"\\n [data]=\\\"countries\\\"\\n [dropdownHintText]=\\\"\\n 'skyux_country_field_dropdown_hint_text' | skyLibResources\\n \\\"\\n [propertiesToSearch]=\\\"['name', 'iso2']\\\"\\n [searchResultTemplate]=\\\"countrySearchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n (selectionChange)=\\\"onCountrySelected($event)\\\"\\n >\\n <div class=\\\"sky-country-field-input\\\">\\n <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\\n <textarea\\n class=\\\"sky-form-control\\\"\\n name=\\\"selectedCountry\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"\\n context?.inPhoneField\\n ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n : inputBoxHostSvc?.labelText\\n ? undefined\\n : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"inputId\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [formControl]=\\\"countrySearchFormControl\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (focusout)=\\\"onAutocompleteFocusout($event)\\\"\\n ></textarea>\\n </div>\\n </sky-autocomplete>\\n </span>\\n</ng-template>\\n\\n<ng-template #countrySearchResultTemplate let-item=\\\"item\\\">\\n <div class=\\\"sky-country-field-search-result-flag\\\">\\n <div [ngClass]=\\\"'iti__flag iti__' + item.iso2.toLowerCase()\\\"></div>\\n </div>\\n <div class=\\\"sky-country-field-search-result-info\\\">\\n {{ item.name }}\\n @if (context?.inPhoneField) {\\n <span\\n class=\\\"sky-font-deemphasized sky-country-field-search-result-dial-code\\\"\\n >\\n {{ item.dialCode }}\\n </span>\\n }\\n </div>\\n</ng-template>\\n\", styles: [\":root{--iti-hover-color: rgba(0, 0, 0, .05);--iti-border-color: #ccc;--iti-dialcode-color: #999;--iti-dropdown-bg: white;--iti-spacer-horizontal: 8px;--iti-flag-height: 12px;--iti-flag-width: 16px;--iti-border-width: 1px;--iti-arrow-height: 4px;--iti-arrow-width: 6px;--iti-triangle-border: calc(var(--iti-arrow-width) / 2);--iti-arrow-padding: 6px;--iti-arrow-color: #555;--iti-path-flags-1x: url(data:image/webp;base64,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);--iti-path-flags-2x: url(data:image/webp;base64,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);--iti-path-globe-1x: url(data:image/webp;base64,UklGRvoBAABXRUJQVlA4TO4BAAAvE8AEENXIkiRZtZu7H33ql07cqTlilvbz9i4tosSMZma27zWzHRGyIEk2bcu2bdvGn23btm3btm3btm0/m5PqAEkLTYYwxTPAW84Tl6wNgmvIqptKKH9nYAr4xle+TML/BDI2LSg6QHKT/nngE4+ZMIUePUGeTvly+YoV8F1DtkGUzlfst2LUKTX6PaWZeMWiDqN6PgcciGa2boYPmxlR5bIIL5l6RVyDYMXmY1f10pGb7PmAN6sRTBTN3N9C9Zi/LbVhlL+Oo2M7RxoE/a4+/nDjeBrSVwtGYXGGMIrUbJzCU1LgFftP9K1hkpOXmBim30cIJ1hgOkSwMhYCMgmaw7rXcfT5/wQcFhrcuaOEBuq5ytYblLPBEhV0Aq/ZqcDn/6RUDgrUL0/0UZgK/p+rR8/4nZAqFfuXA6TbtFQyJSe4gpj6T19a5q+HLEkox0mlWXvbIGbuJw28fkozjybhT5oXHNY4py5rH1CflcyeB1fId9wXDAvFmz/8m6AE/8TgYzEVGoRMCKUhND7PQho7jGo1utkdV559cm3llGFs3sxBZrmGbEExop91jyfg5G7BmCCi6evNaSDFBrG3vyaRNzt+HJ9kQpVbgj+xFUoNgr3abxqGfH3WfQq9lp5UZPRW74ZbFgpq+EGo67dUAQ==);--iti-path-globe-2x: url(data:image/webp;base64,UklGRlwFAABXRUJQVlA4TE8FAAAvJ8AJEEfHKJIkKdmcgvjj3wwill7QwKhtJEnOnIDmv/zJLAdGbSNJcuYENP/lT2Y5OGwjSZHmtL3wTFl9tp8SM/9xz47Ctm2b7mnwDggKFNd77jgHyxhIYVvLQBDEHEBKRQBIOXzQpAhiBQCIAMaIAACHhAQHIMFhhRkSRt1hlRIYDAZDhiE3CVrBS2gFkZGRYdA6mjQQBYAv6yOZSVAQCoPWMCWBIBQKwtCCUBANFARBlChBfPCG/dZUjxJECYJQECU+KGFQEC1YdN/NSUNRTDm4osQBGUwFjDFCBOYRo9QWxAmPlKQECRERMbVLCZapZ0owSrnz3hb6/P8auL9vAwr7/xeS5EV9q2sWU2vbtjla27Zt28akprq6a3bPtm2np87eJIvePUzd9fvoXkT0fwK4Vwdo8t6qyQW+O7Tn4k7NAdvi/jMR0fGpwhglhZBKm3B0pzvg3JcDrUuMEn7SDaUIRTLhhqb/AbDvw+bbJToMEq5QflFfv+QhJVPxcmkm/Ih9TzZfFxk/CJUnP7zMykJqnhsqQ51M6tTv2Pdgc/GKCuKmaI96HlhVAJy4vWVWWgRSfYJ9l4jv+4aB0F15Td3kH1YW4DiMnEJHGSaFOoOdw4LxOhCqPTf0JvLys6I8Wv/9BeeuhEkZfE+UZfNSOumqT+CArgHwbBHZw+ZB00AGeiYxIKKudH2zDxg97VK7FxdO6+9Pmt3l4J/bZR58rtyEOY6dtdhcMbPh2jsyNKr3mNnDy+c8Pig0od5wGXakg7DYgYgfU5648s0fC0Ljv9SigQVrHwUafXVgmNE92zBBBeYjsHn5L6Emz/6776EnxwJUsqKADMDmq8fG/T16fujr7lhknhheLG4PPwFD15IXs2xWFWBZVj4ndDW+fDItPRncssi75Fxv/iHQQL2PDbkg4k/zP/BfgfR1axxy59PM/IYdsypZWUCUiTlck2/zTz4fm3LzqkNlxxnzW+A4fK4vkbNrIbn7bgVoKn3djQu90krrllynQ1g7v2rpjUYsfeR6tdLSaqV5w5fR6E5+k8BVT/0aqqSXDAdV4wvpCplTCJnbFTLb9dTEHjoQQiTMC7Ah3PPuwbffOfD+xP4d3s7uMGDC+wcOvrs7kVKTZ6m4EMIVfn1O61JyrnuU3EM3A3znefrp142f5cnmnDXNyXecPFYUYNt2pVUlvot//qWFDszz9aTrCuGpQVX4Wn+KAw6rCrAgw/eqLZXQVQfmXZ5QnnCF2wrwdlJ5F8DhC1MP/itRnhv+wmHji7hpT+x0tekziRw7jxUF2LZznX3xOydH3e5fVhYWO5QOlClPzYFX9EMD65P9bBHZ16fLq7dHfrlal5vO2LxuKkTcfABvjZDxwsWvf9hs7pCv2ry5cowvB2/8iosq5YraWHw7JCxLyaAWZPoUrilMaRMKo8WwpQv0z2AXqnLzLA42H5gKEVcTuM76RfDtpVrzh9b5oTp0e5SI+Topy78hAzFm6QqRMN2gugNYLH0EoHF6Pyw3vm+OYQMRlwPpCd+sAep/WQ1OPGZZ13lO0ugpE0+m1xGRbdNKe67wzTN3Nouw3yfw03WH+nrnqUAnEul5YOXA5o20L4SnAiXjoX6f7Pm6RIeBl14EGe4a8VLad4UnvZTwysxR2DtOumEiUOpliLi7FWNb2vOEK4QQnnyoIav+Ko9XhGbUF1gZ7tWKcVBLX+T05HkOGmn0iA4WjsW9Ww6ny3WiTAjhyd41WWfGrv4sAof7t/l+ppGJlFeR7oBVr4kF2BYP0oYjDxsZpjuTsQDHsXjAUYxrrwwe9gGWRRRZ3CcA);--iti-flag-sprite-width: 3904px;--iti-flag-sprite-height: 12px;--iti-mobile-popup-margin: 30px}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti__a11y-text{width:1px;height:1px;clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute}.iti input.iti__tel-input,.iti input.iti__tel-input[type=text],.iti input.iti__tel-input[type=tel]{position:relative;z-index:0;margin:0!important}.iti__country-container{position:absolute;top:0;bottom:0;padding:var(--iti-border-width)}.iti__selected-country{z-index:1;position:relative;display:flex;align-items:center;height:100%;background:none;border:0;margin:0;padding:0;font-family:inherit;font-size:inherit;color:inherit;border-radius:0;font-weight:inherit;line-height:inherit;text-decoration:none}.iti__selected-country-primary{display:flex;align-items:center;height:100%;padding:0 var(--iti-arrow-padding) 0 var(--iti-spacer-horizontal)}.iti__arrow{margin-left:var(--iti-arrow-padding);width:0;height:0;border-left:var(--iti-triangle-border) solid transparent;border-right:var(--iti-triangle-border) solid transparent;border-top:var(--iti-arrow-height) solid var(--iti-arrow-color)}[dir=rtl] .iti__arrow{margin-right:var(--iti-arrow-padding);margin-left:0}.iti__arrow--up{border-top:none;border-bottom:var(--iti-arrow-height) solid var(--iti-arrow-color)}.iti__dropdown-content{border-radius:3px;background-color:var(--iti-dropdown-bg)}.iti--inline-dropdown .iti__dropdown-content{position:absolute;z-index:2;margin-top:3px;margin-left:calc(var(--iti-border-width) * -1);border:var(--iti-border-width) solid var(--iti-border-color);box-shadow:1px 1px 4px #0003}.iti__search-input{width:100%;border-width:0;border-radius:3px}.iti__search-input+.iti__country-list{border-top:1px solid var(--iti-border-color)}.iti__country-list{list-style:none;padding:0;margin:0;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti--inline-dropdown .iti__country-list{max-height:185px}.iti--flexible-dropdown-width .iti__country-list{white-space:nowrap}@media (max-width: 500px){.iti--flexible-dropdown-width .iti__country-list{white-space:normal}}.iti__country{display:flex;align-items:center;padding:8px var(--iti-spacer-horizontal);outline:none}.iti__dial-code{color:var(--iti-dialcode-color)}.iti__country.iti__highlight{background-color:var(--iti-hover-color)}.iti__country-list .iti__flag,.iti__country-name{margin-right:var(--iti-spacer-horizontal)}[dir=rtl] .iti__country-list .iti__flag,[dir=rtl] .iti__country-name{margin-right:0;margin-left:var(--iti-spacer-horizontal)}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])):hover button{cursor:pointer}.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country-primary:hover,.iti--allow-dropdown .iti__country-container:not(:has(+input[disabled])):not(:has(+input[readonly])) .iti__selected-country:has(+.iti__dropdown-content:hover) .iti__selected-country-primary{background-color:var(--iti-hover-color)}.iti .iti__selected-dial-code{margin-left:4px}[dir=rtl] .iti .iti__selected-dial-code{margin-left:0;margin-right:4px}.iti--container{position:fixed;top:-1000px;left:-1000px;z-index:1060;padding:var(--iti-border-width)}.iti--container:hover{cursor:pointer}.iti--fullscreen-popup.iti--container{background-color:#00000080;inset:0;position:fixed;padding:var(--iti-mobile-popup-margin);display:flex;flex-direction:column;justify-content:flex-start}.iti--fullscreen-popup .iti__dropdown-content{display:flex;flex-direction:column;max-height:100%;position:relative}.iti--fullscreen-popup .iti__country{padding:10px;line-height:1.5em}.iti__flag{--iti-flag-offset: 100px;height:var(--iti-flag-height);width:var(--iti-flag-width);border-radius:1px;box-shadow:0 0 1px #888;background-image:var(--iti-path-flags-1x);background-repeat:no-repeat;background-position:var(--iti-flag-offset) 0;background-size:var(--iti-flag-sprite-width) var(--iti-flag-sprite-height)}.iti__ac{--iti-flag-offset: 0px}.iti__ad{--iti-flag-offset: -16px}.iti__ae{--iti-flag-offset: -32px}.iti__af{--iti-flag-offset: -48px}.iti__ag{--iti-flag-offset: -64px}.iti__ai{--iti-flag-offset: -80px}.iti__al{--iti-flag-offset: -96px}.iti__am{--iti-flag-offset: -112px}.iti__ao{--iti-flag-offset: -128px}.iti__ar{--iti-flag-offset: -144px}.iti__as{--iti-flag-offset: -160px}.iti__at{--iti-flag-offset: -176px}.iti__au{--iti-flag-offset: -192px}.iti__aw{--iti-flag-offset: -208px}.iti__ax{--iti-flag-offset: -224px}.iti__az{--iti-flag-offset: -240px}.iti__ba{--iti-flag-offset: -256px}.iti__bb{--iti-flag-offset: -272px}.iti__bd{--iti-flag-offset: -288px}.iti__be{--iti-flag-offset: -304px}.iti__bf{--iti-flag-offset: -320px}.iti__bg{--iti-flag-offset: -336px}.iti__bh{--iti-flag-offset: -352px}.iti__bi{--iti-flag-offset: -368px}.iti__bj{--iti-flag-offset: -384px}.iti__bl{--iti-flag-offset: -400px}.iti__bm{--iti-flag-offset: -416px}.iti__bn{--iti-flag-offset: -432px}.iti__bo{--iti-flag-offset: -448px}.iti__bq{--iti-flag-offset: -464px}.iti__br{--iti-flag-offset: -480px}.iti__bs{--iti-flag-offset: -496px}.iti__bt{--iti-flag-offset: -512px}.iti__bw{--iti-flag-offset: -528px}.iti__by{--iti-flag-offset: -544px}.iti__bz{--iti-flag-offset: -560px}.iti__ca{--iti-flag-offset: -576px}.iti__cc{--iti-flag-offset: -592px}.iti__cd{--iti-flag-offset: -608px}.iti__cf{--iti-flag-offset: -624px}.iti__cg{--iti-flag-offset: -640px}.iti__ch{--iti-flag-offset: -656px}.iti__ci{--iti-flag-offset: -672px}.iti__ck{--iti-flag-offset: -688px}.iti__cl{--iti-flag-offset: -704px}.iti__cm{--iti-flag-offset: -720px}.iti__cn{--iti-flag-offset: -736px}.iti__co{--iti-flag-offset: -752px}.iti__cr{--iti-flag-offset: -768px}.iti__cu{--iti-flag-offset: -784px}.iti__cv{--iti-flag-offset: -800px}.iti__cw{--iti-flag-offset: -816px}.iti__cx{--iti-flag-offset: -832px}.iti__cy{--iti-flag-offset: -848px}.iti__cz{--iti-flag-offset: -864px}.iti__de{--iti-flag-offset: -880px}.iti__dj{--iti-flag-offset: -896px}.iti__dk{--iti-flag-offset: -912px}.iti__dm{--iti-flag-offset: -928px}.iti__do{--iti-flag-offset: -944px}.iti__dz{--iti-flag-offset: -960px}.iti__ec{--iti-flag-offset: -976px}.iti__ee{--iti-flag-offset: -992px}.iti__eg{--iti-flag-offset: -1008px}.iti__eh{--iti-flag-offset: -1024px}.iti__er{--iti-flag-offset: -1040px}.iti__es{--iti-flag-offset: -1056px}.iti__et{--iti-flag-offset: -1072px}.iti__fi{--iti-flag-offset: -1088px}.iti__fj{--iti-flag-offset: -1104px}.iti__fk{--iti-flag-offset: -1120px}.iti__fm{--iti-flag-offset: -1136px}.iti__fo{--iti-flag-offset: -1152px}.iti__fr{--iti-flag-offset: -1168px}.iti__ga{--iti-flag-offset: -1184px}.iti__gb{--iti-flag-offset: -1200px}.iti__gd{--iti-flag-offset: -1216px}.iti__ge{--iti-flag-offset: -1232px}.iti__gf{--iti-flag-offset: -1248px}.iti__gg{--iti-flag-offset: -1264px}.iti__gh{--iti-flag-offset: -1280px}.iti__gi{--iti-flag-offset: -1296px}.iti__gl{--iti-flag-offset: -1312px}.iti__gm{--iti-flag-offset: -1328px}.iti__gn{--iti-flag-offset: -1344px}.iti__gp{--iti-flag-offset: -1360px}.iti__gq{--iti-flag-offset: -1376px}.iti__gr{--iti-flag-offset: -1392px}.iti__gt{--iti-flag-offset: -1408px}.iti__gu{--iti-flag-offset: -1424px}.iti__gw{--iti-flag-offset: -1440px}.iti__gy{--iti-flag-offset: -1456px}.iti__hk{--iti-flag-offset: -1472px}.iti__hn{--iti-flag-offset: -1488px}.iti__hr{--iti-flag-offset: -1504px}.iti__ht{--iti-flag-offset: -1520px}.iti__hu{--iti-flag-offset: -1536px}.iti__id{--iti-flag-offset: -1552px}.iti__ie{--iti-flag-offset: -1568px}.iti__il{--iti-flag-offset: -1584px}.iti__im{--iti-flag-offset: -1600px}.iti__in{--iti-flag-offset: -1616px}.iti__io{--iti-flag-offset: -1632px}.iti__iq{--iti-flag-offset: -1648px}.iti__ir{--iti-flag-offset: -1664px}.iti__is{--iti-flag-offset: -1680px}.iti__it{--iti-flag-offset: -1696px}.iti__je{--iti-flag-offset: -1712px}.iti__jm{--iti-flag-offset: -1728px}.iti__jo{--iti-flag-offset: -1744px}.iti__jp{--iti-flag-offset: -1760px}.iti__ke{--iti-flag-offset: -1776px}.iti__kg{--iti-flag-offset: -1792px}.iti__kh{--iti-flag-offset: -1808px}.iti__ki{--iti-flag-offset: -1824px}.iti__km{--iti-flag-offset: -1840px}.iti__kn{--iti-flag-offset: -1856px}.iti__kp{--iti-flag-offset: -1872px}.iti__kr{--iti-flag-offset: -1888px}.iti__kw{--iti-flag-offset: -1904px}.iti__ky{--iti-flag-offset: -1920px}.iti__kz{--iti-flag-offset: -1936px}.iti__la{--iti-flag-offset: -1952px}.iti__lb{--iti-flag-offset: -1968px}.iti__lc{--iti-flag-offset: -1984px}.iti__li{--iti-flag-offset: -2000px}.iti__lk{--iti-flag-offset: -2016px}.iti__lr{--iti-flag-offset: -2032px}.iti__ls{--iti-flag-offset: -2048px}.iti__lt{--iti-flag-offset: -2064px}.iti__lu{--iti-flag-offset: -2080px}.iti__lv{--iti-flag-offset: -2096px}.iti__ly{--iti-flag-offset: -2112px}.iti__ma{--iti-flag-offset: -2128px}.iti__mc{--iti-flag-offset: -2144px}.iti__md{--iti-flag-offset: -2160px}.iti__me{--iti-flag-offset: -2176px}.iti__mf{--iti-flag-offset: -2192px}.iti__mg{--iti-flag-offset: -2208px}.iti__mh{--iti-flag-offset: -2224px}.iti__mk{--iti-flag-offset: -2240px}.iti__ml{--iti-flag-offset: -2256px}.iti__mm{--iti-flag-offset: -2272px}.iti__mn{--iti-flag-offset: -2288px}.iti__mo{--iti-flag-offset: -2304px}.iti__mp{--iti-flag-offset: -2320px}.iti__mq{--iti-flag-offset: -2336px}.iti__mr{--iti-flag-offset: -2352px}.iti__ms{--iti-flag-offset: -2368px}.iti__mt{--iti-flag-offset: -2384px}.iti__mu{--iti-flag-offset: -2400px}.iti__mv{--iti-flag-offset: -2416px}.iti__mw{--iti-flag-offset: -2432px}.iti__mx{--iti-flag-offset: -2448px}.iti__my{--iti-flag-offset: -2464px}.iti__mz{--iti-flag-offset: -2480px}.iti__na{--iti-flag-offset: -2496px}.iti__nc{--iti-flag-offset: -2512px}.iti__ne{--iti-flag-offset: -2528px}.iti__nf{--iti-flag-offset: -2544px}.iti__ng{--iti-flag-offset: -2560px}.iti__ni{--iti-flag-offset: -2576px}.iti__nl{--iti-flag-offset: -2592px}.iti__no{--iti-flag-offset: -2608px}.iti__np{--iti-flag-offset: -2624px}.iti__nr{--iti-flag-offset: -2640px}.iti__nu{--iti-flag-offset: -2656px}.iti__nz{--iti-flag-offset: -2672px}.iti__om{--iti-flag-offset: -2688px}.iti__pa{--iti-flag-offset: -2704px}.iti__pe{--iti-flag-offset: -2720px}.iti__pf{--iti-flag-offset: -2736px}.iti__pg{--iti-flag-offset: -2752px}.iti__ph{--iti-flag-offset: -2768px}.iti__pk{--iti-flag-offset: -2784px}.iti__pl{--iti-flag-offset: -2800px}.iti__pm{--iti-flag-offset: -2816px}.iti__pr{--iti-flag-offset: -2832px}.iti__ps{--iti-flag-offset: -2848px}.iti__pt{--iti-flag-offset: -2864px}.iti__pw{--iti-flag-offset: -2880px}.iti__py{--iti-flag-offset: -2896px}.iti__qa{--iti-flag-offset: -2912px}.iti__re{--iti-flag-offset: -2928px}.iti__ro{--iti-flag-offset: -2944px}.iti__rs{--iti-flag-offset: -2960px}.iti__ru{--iti-flag-offset: -2976px}.iti__rw{--iti-flag-offset: -2992px}.iti__sa{--iti-flag-offset: -3008px}.iti__sb{--iti-flag-offset: -3024px}.iti__sc{--iti-flag-offset: -3040px}.iti__sd{--iti-flag-offset: -3056px}.iti__se{--iti-flag-offset: -3072px}.iti__sg{--iti-flag-offset: -3088px}.iti__sh{--iti-flag-offset: -3104px}.iti__si{--iti-flag-offset: -3120px}.iti__sj{--iti-flag-offset: -3136px}.iti__sk{--iti-flag-offset: -3152px}.iti__sl{--iti-flag-offset: -3168px}.iti__sm{--iti-flag-offset: -3184px}.iti__sn{--iti-flag-offset: -3200px}.iti__so{--iti-flag-offset: -3216px}.iti__sr{--iti-flag-offset: -3232px}.iti__ss{--iti-flag-offset: -3248px}.iti__st{--iti-flag-offset: -3264px}.iti__sv{--iti-flag-offset: -3280px}.iti__sx{--iti-flag-offset: -3296px}.iti__sy{--iti-flag-offset: -3312px}.iti__sz{--iti-flag-offset: -3328px}.iti__tc{--iti-flag-offset: -3344px}.iti__td{--iti-flag-offset: -3360px}.iti__tg{--iti-flag-offset: -3376px}.iti__th{--iti-flag-offset: -3392px}.iti__tj{--iti-flag-offset: -3408px}.iti__tk{--iti-flag-offset: -3424px}.iti__tl{--iti-flag-offset: -3440px}.iti__tm{--iti-flag-offset: -3456px}.iti__tn{--iti-flag-offset: -3472px}.iti__to{--iti-flag-offset: -3488px}.iti__tr{--iti-flag-offset: -3504px}.iti__tt{--iti-flag-offset: -3520px}.iti__tv{--iti-flag-offset: -3536px}.iti__tw{--iti-flag-offset: -3552px}.iti__tz{--iti-flag-offset: -3568px}.iti__ua{--iti-flag-offset: -3584px}.iti__ug{--iti-flag-offset: -3600px}.iti__us{--iti-flag-offset: -3616px}.iti__uy{--iti-flag-offset: -3632px}.iti__uz{--iti-flag-offset: -3648px}.iti__va{--iti-flag-offset: -3664px}.iti__vc{--iti-flag-offset: -3680px}.iti__ve{--iti-flag-offset: -3696px}.iti__vg{--iti-flag-offset: -3712px}.iti__vi{--iti-flag-offset: -3728px}.iti__vn{--iti-flag-offset: -3744px}.iti__vu{--iti-flag-offset: -3760px}.iti__wf{--iti-flag-offset: -3776px}.iti__ws{--iti-flag-offset: -3792px}.iti__xk{--iti-flag-offset: -3808px}.iti__ye{--iti-flag-offset: -3824px}.iti__yt{--iti-flag-offset: -3840px}.iti__za{--iti-flag-offset: -3856px}.iti__zm{--iti-flag-offset: -3872px}.iti__zw{--iti-flag-offset: -3888px}.iti__globe{background-image:var(--iti-path-globe-1x);background-size:contain;background-position:right;box-shadow:none;height:19px}@media (min-resolution: 2x){.iti__flag{background-image:var(--iti-path-flags-2x)}.iti__globe{background-image:var(--iti-path-globe-2x)}}.sky-country-field-container:not(.sky-theme-modern *){--sky-override-country-field-disabled-input-background-color: #cdcfd2;--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-autocomplete-result:has(.sky-country-field-search-result-flag):not(.sky-theme-modern *){--sky-override-country-field-max-height: 13px;--sky-override-country-field-max-width: 25px;--sky-override-country-field-phone-info-font-size: 15px;--sky-override-country-field-search-result-dial-code-padding-left: 0;--sky-override-country-field-search-result-info-padding-left: 29px;--sky-override-country-field-transform: scaleX(1.25) translateX(2px)}.sky-country-field-country-btn+.sky-form-control{border-left:none}.sky-country-field-container{width:100%}.sky-autocomplete-result:has(.sky-country-field-search-result-flag){position:relative}.sky-country-field-search-result-flag{display:flex;align-items:center;position:absolute;bottom:0;height:100%}.sky-country-field-search-result-info{padding-left:var(--sky-override-country-field-search-result-info-padding-left, calc(var(--sky-size-icon-s) + var(--sky-space-gap-icon-m)))}.sky-country-field-search-result-dial-code.sky-font-deemphasized{font-size:var(--sky-override-country-field-phone-info-font-size, inherit);padding-left:var(--sky-override-country-field-search-result-dial-code-padding-left, var(--sky-space-gap-label-s))}.sky-country-field-disabled .sky-country-field-input{cursor:default;background-color:var(--sky-override-country-field-disabled-input-background-color, transparent)}.sky-country-field-input{cursor:text;display:flex;position:relative}.sky-country-field-input textarea{overflow:hidden;resize:none!important;white-space:nowrap}:host(.ng-invalid.ng-touched) .sky-country-field-input textarea{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-country-field-search-result-flag .iti__flag{background-image:url(https://sky.blackbaudcdn.net/static/skyux-public-assets/2.0.1/assets/images/intl-tel-input/flags@2x.webp)!important;max-width:var(--sky-override-country-field-max-width, inherit);max-height:var(--sky-override-country-field-max-height, inherit);transform:var(--sky-override-country-field-transform, inherit)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }], propDecorators: { autocompleteAttribute: [{\n type: Input\n }], defaultCountry: [{\n type: Input\n }], disabled: [{\n type: Input\n }], supportedCountryISOs: [{\n type: Input\n }], selectedCountryChange: [{\n type: Output\n }], countryFieldFocusout: [{\n type: Output\n }], countrySearchAutocompleteDirective: [{\n type: ViewChild,\n args: [SkyAutocompleteInputDirective]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsU0FBUyxFQUNULE9BQU8sRUFDUCxrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUc3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7QUFFaEYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFFbEMsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdB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OytCQUNFLG1CQUFtQixhQUdsQixDQUFDLDJCQUEyQixDQUFDLG1CQUN2Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLEtBQUs7OzBCQXFNZCxRQUFROztzQkEzTFYsS0FBSzs7c0JBU0wsS0FBSzs7c0JBMEJMLEtBQUs7O3NCQXFCTCxLQUFLOztzQkFrQkwsTUFBTTs7c0JBU04sTUFBTTs7c0JBVU4sU0FBUzt1QkFBQyw2QkFBNkI7O3NCQStEdkMsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOZ0NvbnRyb2wsXG4gIE5nTW9kZWwsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IGludGxUZWxJbnB1dCBmcm9tICdpbnRsLXRlbC1pbnB1dCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcblxuaW1wb3J0IHsgY2xvbmVDb3VudHJ5RGF0YSB9IGZyb20gJy4vY2xvbmUtY291bnRyeS1kYXRhJztcbmltcG9ydCB7IFNreUNvdW50cnlGaWVsZENvdW50cnkgfSBmcm9tICcuL3R5cGVzL2NvdW50cnknO1xuaW1wb3J0IHsgU2t5Q291bnRyeUZpZWxkQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvY291bnRyeS1maWVsZC1jb250ZXh0JztcbmltcG9ydCB7IFNLWV9DT1VOVFJZX0ZJRUxEX0NPTlRFWFQgfSBmcm9tICcuL3R5cGVzL2NvdW50cnktZmllbGQtY29udGV4dC10b2tlbic7XG5cbmNvbnN0IERFRkFVTFRfQ09VTlRSWV9DT0RFID0gJ3VzJztcblxuY29uc3QgU0tZX0NPVU5UUllfRklFTERfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lDb3VudHJ5RmllbGRDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jb3VudHJ5LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cnktZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NLWV9DT1VOVFJZX0ZJRUxEX1ZBTElEQVRPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Q291bnRyeUZpZWxkQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgT25Jbml0LCBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIEhUTUwgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIHRoZSBmb3JtIGlucHV0LlxuICAgKiBAZGVmYXVsdCAnb2ZmJ1xuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggb25seSBzdXBwb3J0cyBicm93c2VyIGF1dG9maWxsIG9uIGNvbXBvbmVudHMgd2hlcmUgdGhlIGRpcmVjdCBpbnB1dCBtYXRjaGVzIHRoZSByZXR1cm4gdmFsdWUuIFRoaXMgaW5wdXQgbWF5IG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQgZHVlIHRvIHRoZSBkcm9wZG93biBzZWxlY3Rpb24gaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBbSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiBBbHBoYSAyXShodHRwczovL3d3dy5uYXRpb25zb25saW5lLm9yZy9vbmV3b3JsZC9jb3VudHJ5X2NvZGVfbGlzdC5odG0pXG4gICAqIGNvdW50cnkgY29kZSBmb3IgdGhlIGRlZmF1bHQgY291bnRyeS5cbiAgICogV2hlbiBzZWFyY2ggcmVzdWx0cyBpbmNsdWRlIHRoZSBkZWZhdWx0IGNvdW50cnksIGl0IGFwcGVhcnMgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC5cbiAgICogQGRlZmF1bHQgXCJ1c1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlZmF1bHRDb3VudHJ5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IERFRkFVTFRfQ09VTlRSWV9DT0RFO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2RlZmF1bHRDb3VudHJ5KSB7XG4gICAgICB0aGlzLiNfZGVmYXVsdENvdW50cnkgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICB0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEgPSB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSB0aGlzLiNfZGVmYXVsdENvdW50cnksXG4gICAgICApO1xuXG4gICAgICB0aGlzLiNzb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdCh0aGlzLnNlbGVjdGVkQ291bnRyeSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0Q291bnRyeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGVmYXVsdENvdW50cnk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBjb3VudHJ5IGZpZWxkIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IGlzRGlzYWJsZWQgPz8gZmFsc2U7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgW0ludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24gQWxwaGEgMl0oaHR0cHM6Ly93d3cubmF0aW9uc29ubGluZS5vcmcvb25ld29ybGQvY291bnRyeV9jb2RlX2xpc3QuaHRtKVxuICAgKiBjb3VudHJ5IGNvZGVzIGZvciB0aGUgY291bnRyaWVzIHRoYXQgdXNlcnMgY2FuIHNlbGVjdC4gQnkgZGVmYXVsdCwgYWxsIGNvdW50cmllcyBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdXBwb3J0ZWRDb3VudHJ5SVNPcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAvLyBFbnN1cmUgYWxsIHZhbHVlcyBhcmUgdGhlIHNhbWUgY2FzZS5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh2KSA9PiB2LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHRoaXMuI19zdXBwb3J0ZWRDb3VudHJ5SVNPcyA9IHZhbHVlO1xuICAgIHRoaXMuI3NldHVwQ291bnRyaWVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1cHBvcnRlZENvdW50cnlJU09zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy4jX3N1cHBvcnRlZENvdW50cnlJU09zIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHNlbGVjdGVkIGNvdW50cnkgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U2t5Q291bnRyeUZpZWxkQ291bnRyeT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2t5Q291bnRyeUZpZWxkQ291bnRyeT4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgY291bnRyeSBmaWVsZCBpcyBmb2N1c2VkIG91dC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICAvLyBUT0RPOiByZW1vdmUgdGhpcyBpZiBubyBsb25nZXIgbmVlZGVkIGFmdGVyIGEgc2NhbGFibGUgZm9jdXMgbW9uaXRvciBzZXJ2aWNlIGlzIGltcGxlbWVudGVkXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY291bnRyeUZpZWxkRm9jdXNvdXQ6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIHB1YmxpYyBjb3VudHJpZXM6IFNreUNvdW50cnlGaWVsZENvdW50cnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuICBwdWJsaWMgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzID0gMjtcblxuICBAVmlld0NoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKVxuICBwdWJsaWMgY291bnRyeVNlYXJjaEF1dG9jb21wbGV0ZURpcmVjdGl2ZTpcbiAgICB8IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZENvdW50cnkobmV3Q291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdGhpcy4jY291bnRyaWVzQXJlRXF1YWwodGhpcy5zZWxlY3RlZENvdW50cnksIG5ld0NvdW50cnkpKSB7XG4gICAgICBjb25zdCBuZXdDb3VudHJ5SXNvID0gbmV3Q291bnRyeT8uaXNvMjtcbiAgICAgIGlmIChuZXdDb3VudHJ5SXNvKSB7XG4gICAgICAgIGNvbnN0IGlzb0NvdW50cnkgPSB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAgIChjb3VudHJ5KSA9PiBjb3VudHJ5LmlzbzIgPT09IG5ld0NvdW50cnlJc28sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzb0NvdW50cnkpIHtcbiAgICAgICAgICBuZXdDb3VudHJ5ID0gaXNvQ291bnRyeTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLiNfc2VsZWN0ZWRDb3VudHJ5ID0gbmV3Q291bnRyeTtcblxuICAgICAgdGhpcy4jc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQobmV3Q291bnRyeSk7XG5cbiAgICAgIHRoaXMuI2ludGVybmFsRm9ybUNoYW5nZSA9IHRydWU7XG4gICAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkQ291bnRyeSk7XG5cbiAgICAgIGlmICghdGhpcy4jaXNJbml0aWFsQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UobmV3Q291bnRyeSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnlDaGFuZ2UuZW1pdChuZXdDb3VudHJ5KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4jbmdDb250cm9sPy5jb250cm9sKSB7XG4gICAgICAgIC8vIERvIG5vdCBtYXJrIHRoZSBmaWVsZCBhcyBcImRpcnR5XCJcbiAgICAgICAgLy8gaWYgdGhlIGZpZWxkIGhhcyBiZWVuIGluaXRpYWxpemVkIHdpdGggYSB2YWx1ZS5cbiAgICAgICAgdGhpcy4jbmdDb250cm9sLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIGlmIHN0YXRlbWVudCBpcyBjb21wbGV4LiBUaGUgY29udHJvbCB0eXBlIGNoZWNrIGVuc3VyZXMgdGhhdFxuICAgICAgICogd2Ugb25seSB3YXRjaCBmb3IgdGhlIGluaXRpYWwgdGltZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gb24gcmVhY3RpdmUgZm9ybXMuIEhvd2V2ZXIsXG4gICAgICAgKiB0ZW1wbGF0ZSBmb3JtcyB3aWxsIHNlbmQgdGhyb3VnaCBgbnVsbGAgYW5kIHRoZW4gYHVuZGVmaW5lZGAgb24gZW1wdHkgaW5pdGlhbGl6YXRpb25cbiAgICAgICAqIHNvIHdlIGhhdmUgdG8gY2hlY2sgZm9yIHdoZW4gdGhlIG5vbi1udWxsIHBhc3MgdGhyb3VnaCBoYXBwZW5zLlxuICAgICAgICovXG4gICAgfSBlbHNlIGlmICghKHRoaXMuI25nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWwpIHx8IG5ld0NvdW50cnkgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuI2lzSW5pdGlhbENoYW5nZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRDb3VudHJ5KCk6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0ZWRDb3VudHJ5O1xuICB9XG5cbiAgcHVibGljIGNvbnRleHQ6IFNreUNvdW50cnlGaWVsZENvbnRleHQgfCBudWxsID0gaW5qZWN0KFxuICAgIFNLWV9DT1VOVFJZX0ZJRUxEX0NPTlRFWFQsXG4gICAge1xuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICBwdWJsaWMgaW5wdXRJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYXJpYURlc2NyaWJlZEJ5OiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICNkZWZhdWx0Q291bnRyeURhdGE6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQ7XG5cbiAgI2luamVjdG9yOiBJbmplY3RvcjtcblxuICAjaW50ZXJuYWxGb3JtQ2hhbmdlID0gZmFsc2U7XG5cbiAgI2lzSW5pdGlhbENoYW5nZSA9IHRydWU7XG5cbiAgI25nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfZGVmYXVsdENvdW50cnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI19zZWxlY3RlZENvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQ7XG5cbiAgI19zdXBwb3J0ZWRDb3VudHJ5SVNPczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNpbmplY3RvciA9IGluamVjdG9yO1xuXG4gICAgdGhpcy5pbnB1dElkID0gYHNreS1jb3VudHJ5LWZpZWxkLWlucHV0LSR7dW5pcXVlSWQrK31gO1xuXG4gICAgdGhpcy4jc2V0dXBDb3VudHJpZXMoKTtcblxuICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVJbnB1dEJveCgpO1xuXG4gICAgdGhpcy4jbmdDb250cm9sID0gdGhpcy4jaW5qZWN0b3IuZ2V0PE5nQ29udHJvbCB8IG51bGw+KFxuICAgICAgTmdDb250cm9sIGFzIHVua25vd24gYXMgVHlwZTxOZ0NvbnRyb2w+LFxuICAgICAgbnVsbCxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuI25nQ29udHJvbCkge1xuICAgICAgdGhpcy4jbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBpbml0aWFsIGNoYW5nZSBib29sZWFuIGlzIHRvIGRldGVybWluZSBpZiB0aGUgZm9ybSBpcyBzZXR0aW5nIHRoZSB2YWx1ZS4gV2hlbiBubyBmb3JtXG4gICAgICAgKiBpcyBwcmVzZW50IHdlIGRvbid0IHdhbnQgdG8gaWdub3JlIHRoZSBmaXJzdCBjaGFuZ2UuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuI2lzSW5pdGlhbENoYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kZWZhdWx0Q291bnRyeSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q291bnRyeSA9IERFRkFVTFRfQ09VTlRSWV9DT0RFO1xuICAgIH1cblxuICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICYmICF0aGlzLiNpbnRlcm5hbEZvcm1DaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rIGZvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJ1Y3RlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnlDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgdG91Y2hlZCB2YWx1ZSB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgYmx1cnJlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZUJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb3VudHJ5IHRvIHZhbGlkYXRlIGFnYWluc3QgYmFzZWQgb24gdGhlIGNvdW50eSdzIGlzbzIgY29kZS5cbiAgICogQHBhcmFtIG5ld0NvdW50cnkgVGhlIEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24ncyB0d28tbGV0dGVyIGNvZGVcbiAgICogZm9yIHRoZSBkZWZhdWx0IGNvdW50cnkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG9uQ291bnRyeVNlbGVjdGVkKG5ld0NvdW50cnk6IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSk6IHZvaWQge1xuICAgIGlmIChuZXdDb3VudHJ5LnNlbGVjdGVkSXRlbSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKFxuICAgICAgICB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAgIChjb3VudHJ5SW5mbykgPT4gY291bnRyeUluZm8uaXNvMiA9PT0gbmV3Q291bnRyeS5zZWxlY3RlZEl0ZW0uaXNvMixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgQXV0b2NvbXBsZXRlIHRleHRhcmVhIGxvc2VzIGZvY3VzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlRm9jdXNvdXQoZTogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRyeUZpZWxkRm9jdXNvdXQuZW1pdChlKTtcbiAgfVxuXG4gIC8vIEFuZ3VsYXIgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RzIHRoZXNlIG1ldGhvZHMuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpOiB2b2lkID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHVibGljIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKFxuICAgIGZuOiAodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpID0+IHZvaWQsXG4gICk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byBkaXNhYmxlIHRoZSBpbnB1dC5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICh0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zICYmXG4gICAgICAgICAgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5pbmRleE9mKGNvbnRyb2wudmFsdWUuaXNvMikgPCAwKSB8fFxuICAgICAgICAhdGhpcy5jb3VudHJpZXMuZmluZCgoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSBjb250cm9sLnZhbHVlLmlzbzIpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHsgdW5zdXBwb3J0ZWRDb3VudHJ5OiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAoJGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS5zZWxlY3QoKTtcbiAgfVxuXG4gICNjb3VudHJpZXNBcmVFcXVhbChcbiAgICBjb3VudHJ5MTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCxcbiAgICBjb3VudHJ5MjogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCxcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvdW50cnkxICYmIGNvdW50cnkyKSB7XG4gICAgICByZXR1cm4gY291bnRyeTEuaXNvMiA9PT0gY291bnRyeTIuaXNvMjtcbiAgICB9XG5cbiAgICAvLyBOT1RFOiBXZSBhcmUgZG9pbmcgdGhpcyBpbiAgdGhpcyB3YXkgYmVjYXVzZSB0ZW1wbGF0ZSBmb3JtcyB3aWxsIHNlbmQgdGhyb3VnaCBgbnVsbGBcbiAgICAvLyBhbmQgdGhlbiBgdW5kZWZpbmVkYCBvbiBlbXB0eSBpbml0aWFsaXphdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGJ1dCB3aWxsXG4gICAgLy8gbm90IHBhc3MgYSBzdGFuZGFyZCB0cmlwbGUgZXF1YWxzIGNoZWNrLlxuICAgIHJldHVybiAhY291bnRyeTEgJiYgIWNvdW50cnkyO1xuICB9XG5cbiAgI2NvdW50cmllc0VxdWFsKFxuICAgIGE6IFNreUNvdW50cnlGaWVsZENvdW50cnksXG4gICAgYjogU2t5Q291bnRyeUZpZWxkQ291bnRyeSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEuaXNvMiA9PT0gYi5pc28yICYmIGEubmFtZSA9PT0gYi5uYW1lO1xuICB9XG5cbiAgI3NldHVwQ291bnRyaWVzKCk6IHZvaWQge1xuICAgIHRoaXMuY291bnRyaWVzID0gY2xvbmVDb3VudHJ5RGF0YShpbnRsVGVsSW5wdXQuZ2V0Q291bnRyeURhdGEoKSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5jb250ZXh0Py5pblBob25lRmllbGQpIHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGxpYnJhcnkgd2UgZ2V0IHRoZSBjb3VudHJ5IGRhdGEgZnJvbSBpbmNsdWRlcyBleHRyYSBwaG9uZSBwcm9wZXJ0aWVzLlxuICAgICAgICogV2Ugd2FudCB0byByZW1vdmUgdGhlc2UgdW5sZXNzIHdlIGFyZSBpbiBhIHBob25lIGZpZWxkXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY291bnRyaWVzLmZvckVhY2goKGNvdW50cnkpID0+IHtcbiAgICAgICAgZGVsZXRlIGNvdW50cnkuZGlhbENvZGU7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LmFyZWFDb2RlcztcbiAgICAgICAgZGVsZXRlIGNvdW50cnkucHJpb3JpdHk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiNzb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdCh0aGlzLnNlbGVjdGVkQ291bnRyeSk7XG5cbiAgICBpZiAodGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcyAmJiB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMuZmlsdGVyKFxuICAgICAgICAoY291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmluZGV4T2YoY291bnRyeS5pc28yKSA+PSAwO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQoXG4gICAgc2VsZWN0ZWRDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRDb3VudHJ5SW5kZXg6IG51bWJlcjtcbiAgICBsZXQgc2VsZWN0ZWRDb3VudHJ5RGF0YTogU2t5Q291bnRyeUZpZWxkQ291bnRyeTtcblxuICAgIGNvbnN0IHNvcnRlZE5ld0NvdW50cmllcyA9IHRoaXMuY291bnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKCh0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEgJiZcbiAgICAgICAgICB0aGlzLiNjb3VudHJpZXNFcXVhbChhLCB0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEpKSB8fFxuICAgICAgICAgIChhLm5hbWUgJiYgYi5uYW1lICYmIGEubmFtZSA8IGIubmFtZSkpICYmXG4gICAgICAgICghdGhpcy4jZGVmYXVsdENvdW50cnlEYXRhIHx8XG4gICAgICAgICAgIXRoaXMuI2NvdW50cmllc0VxdWFsKHRoaXMuI2RlZmF1bHRDb3VudHJ5RGF0YSwgYikpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0ZWRDb3VudHJ5KSB7XG4gICAgICAvLyBOb3RlOiBXZSBhcmUgbG9va2luZyB1cCB0aGlzIGRhdGEgaGVyZSB0byBlbnN1cmUgd2UgYXJlIHVzaW5nIHRoZSBvZmZpY2lhbCBkYXRhIGZyb20gdGhlXG4gICAgICAvLyBsaWJyYXJ5IGFuZCBub3QgdGhlIGRhdGEgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb24gaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNvbXBvbmVudFxuICAgICAgY29uc3QgZm91bmRDb3VudHJ5ID0gdGhpcy5jb3VudHJpZXMuZmluZChcbiAgICAgICAgKGNvdW50cnkpID0+IGNvdW50cnkuaXNvMiA9PT0gc2VsZWN0ZWRDb3VudHJ5LmlzbzIudG9Mb2NhbGVMb3dlckNhc2UoKSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChmb3VuZENvdW50cnkpIHtcbiAgICAgICAgc2VsZWN0ZWRDb3VudHJ5RGF0YSA9IGZvdW5kQ291bnRyeTtcbiAgICAgICAgc2VsZWN0ZWRDb3VudHJ5SW5kZXggPSB0aGlzLmNvdW50cmllcy5pbmRleE9mKHNlbGVjdGVkQ291bnRyeURhdGEpO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZENvdW50cnlJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdGhpcy5jb3VudHJpZXMuc3BsaWNlKHNlbGVjdGVkQ291bnRyeUluZGV4LCAxKTtcbiAgICAgICAgICBzb3J0ZWROZXdDb3VudHJpZXMuc3BsaWNlKDAsIDAsIHNlbGVjdGVkQ291bnRyeURhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudHJpZXMgPSBzb3J0ZWROZXdDb3VudHJpZXM7XG4gIH1cblxuICAjdXBkYXRlSW5wdXRCb3goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pbnB1dElkID0gdGhpcy5pbnB1dEJveEhvc3RTdmMuY29udHJvbElkO1xuICAgICAgdGhpcy5hcmlhRGVzY3JpYmVkQnkgPSB0aGlzLmlucHV0Qm94SG9zdFN2Yy5hcmlhRGVzY3JpYmVkQnk7XG5cbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKCFpbnB1dEJveEhvc3RTdmMpIHtcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIiAvPlxufVxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJza3ktY291bnRyeS1maWVsZC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktY291bnRyeS1maWVsZC1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gID5cbiAgICA8c2t5LWF1dG9jb21wbGV0ZVxuICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImlucHV0Qm94SG9zdFN2Yz8ubGFiZWxJZCA/PyBpbnB1dElkXCJcbiAgICAgIFtkYXRhXT1cImNvdW50cmllc1wiXG4gICAgICBbZHJvcGRvd25IaW50VGV4dF09XCJcbiAgICAgICAgJ3NreXV4X2NvdW50cnlfZmllbGRfZHJvcGRvd25faGludF90ZXh0JyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICAgIFtwcm9wZXJ0aWVzVG9TZWFyY2hdPVwiWyduYW1lJywgJ2lzbzInXVwiXG4gICAgICBbc2VhcmNoUmVzdWx0VGVtcGxhdGVdPVwiY291bnRyeVNlYXJjaFJlc3VsdFRlbXBsYXRlXCJcbiAgICAgIFtzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNdPVwic2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25Db3VudHJ5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1jb3VudHJ5LWZpZWxkLWlucHV0XCI+XG4gICAgICAgIDwhLS0gVGhlIGNoZWNrIGZvciBsYWJlbCB0ZXh0IG9uIHRoZSBhcmlhLWxhYmVsIGlzIHRvIGFsbG93IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aGlsZSBhbHNvIHJlc3BlY3RpbmcgbGFiZWwgdGV4dCBmdW5jdGlvbmFsaXR5LiAtLT5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRDb3VudHJ5XCJcbiAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfCBhc3luY1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGNvbnRleHQ/LmluUGhvbmVGaWVsZFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfY291bnRyeV9maWVsZF9kcm9wZG93bl9oaW50X3RleHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICA6IGlucHV0Qm94SG9zdFN2Yz8ubGFiZWxUZXh0XG4gICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6ICgnc2t5dXhfY291bnRyeV9maWVsZF9kcm9wZG93bl9oaW50X3RleHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZUF0dHJpYnV0ZV09XCJhdXRvY29tcGxldGVBdHRyaWJ1dGVcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2xcIlxuICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAoZm9jdXNvdXQpPVwib25BdXRvY29tcGxldGVGb2N1c291dCgkZXZlbnQpXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NreS1hdXRvY29tcGxldGU+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY291bnRyeVNlYXJjaFJlc3VsdFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwic2t5LWNvdW50cnktZmllbGQtc2VhcmNoLXJlc3VsdC1mbGFnXCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCInaXRpX19mbGFnIGl0aV9fJyArIGl0ZW0uaXNvMi50b0xvd2VyQ2FzZSgpXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2t5LWNvdW50cnktZmllbGQtc2VhcmNoLXJlc3VsdC1pbmZvXCI+XG4gICAge3sgaXRlbS5uYW1lIH19XG4gICAgQGlmIChjb250ZXh0Py5pblBob25lRmllbGQpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1jb3VudHJ5LWZpZWxkLXNlYXJjaC1yZXN1bHQtZGlhbC1jb2RlXCJcbiAgICAgID5cbiAgICAgICAge3sgaXRlbS5kaWFsQ29kZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyCountryFieldComponent } from './country-field.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyCountryFieldModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCountryFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCountryFieldModule, declarations: [SkyCountryFieldComponent], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule], exports: [SkyCountryFieldComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCountryFieldModule, imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCountryFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyCountryFieldComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBZXJFLE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLGlCQVpqQix3QkFBd0IsYUFFckMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGFBQWE7WUFDYix3QkFBd0I7WUFDeEIsY0FBYyxhQUVOLHdCQUF3QjtnSEFFdkIscUJBQXFCLFlBVjlCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGNBQWM7OzRGQUlMLHFCQUFxQjtrQkFiakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDeEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlJztcbmltcG9ydCB7IFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lDb3VudHJ5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvdW50cnktZmllbGQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5Q291bnRyeUZpZWxkQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNreUF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreUNvdW50cnlGaWVsZENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvdW50cnlGaWVsZE1vZHVsZSB7fVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkySearchAdapterService {\n #renderer;\n constructor(renderer) {\n this.#renderer = renderer;\n }\n selectInput(searchEl) {\n this.#getInputEl(searchEl).select();\n }\n focusInput(searchEl) {\n this.#getInputEl(searchEl).focus();\n }\n startInputAnimation(searchEl) {\n const buttonWidth = this.#getSearchOpenButtonEl(searchEl).clientWidth;\n const offsetWidth = this.#getSearchContainerEl(searchEl).offsetLeft;\n const minWidth = buttonWidth + offsetWidth;\n this.#getInputContainerEl(searchEl).style.minWidth =\n minWidth.toString() + 'px';\n this.#renderer.setStyle(this.#getInputContainerEl(searchEl), 'min-width', minWidth.toString() + 'px');\n }\n endInputAnimation(searchEl) {\n this.#renderer.setStyle(this.#getInputContainerEl(searchEl), 'min-width', '');\n }\n #getInputContainerEl(searchEl) {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n #getSearchOpenButtonEl(searchEl) {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n #getSearchContainerEl(searchEl) {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n #getInputEl(searchEl) {\n return searchEl.nativeElement.querySelector('input');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchAdapterService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Renderer2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2gtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBRWxFOztHQUVHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxTQUFTLENBQVk7SUFFckIsWUFBWSxRQUFtQjtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQW9CO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxRQUFvQjtRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxRQUFvQjtRQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEUsTUFBTSxRQUFRLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDaEQsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUNuQyxXQUFXLEVBQ1gsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUFvQjtRQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUNuQyxXQUFXLEVBQ1gsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBb0I7UUFDdkMsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFvQjtRQUN6QyxPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQW9CO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9CO1FBQzlCLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FwRFUsdUJBQXVCO21IQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVNlYXJjaEFkYXB0ZXJTZXJ2aWNlIHtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SW5wdXQoc2VhcmNoRWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNnZXRJbnB1dEVsKHNlYXJjaEVsKS5zZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0lucHV0KHNlYXJjaEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jZ2V0SW5wdXRFbChzZWFyY2hFbCkuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydElucHV0QW5pbWF0aW9uKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgYnV0dG9uV2lkdGggPSB0aGlzLiNnZXRTZWFyY2hPcGVuQnV0dG9uRWwoc2VhcmNoRWwpLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFdpZHRoID0gdGhpcy4jZ2V0U2VhcmNoQ29udGFpbmVyRWwoc2VhcmNoRWwpLm9mZnNldExlZnQ7XG4gICAgY29uc3QgbWluV2lkdGggPSBidXR0b25XaWR0aCArIG9mZnNldFdpZHRoO1xuXG4gICAgdGhpcy4jZ2V0SW5wdXRDb250YWluZXJFbChzZWFyY2hFbCkuc3R5bGUubWluV2lkdGggPVxuICAgICAgbWluV2lkdGgudG9TdHJpbmcoKSArICdweCc7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuI2dldElucHV0Q29udGFpbmVyRWwoc2VhcmNoRWwpLFxuICAgICAgJ21pbi13aWR0aCcsXG4gICAgICBtaW5XaWR0aC50b1N0cmluZygpICsgJ3B4JyxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGVuZElucHV0QW5pbWF0aW9uKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLiNnZXRJbnB1dENvbnRhaW5lckVsKHNlYXJjaEVsKSxcbiAgICAgICdtaW4td2lkdGgnLFxuICAgICAgJycsXG4gICAgKTtcbiAgfVxuXG4gICNnZXRJbnB1dENvbnRhaW5lckVsKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBzZWFyY2hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktc2VhcmNoLWlucHV0LWNvbnRhaW5lcicpO1xuICB9XG5cbiAgI2dldFNlYXJjaE9wZW5CdXR0b25FbChzZWFyY2hFbDogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gc2VhcmNoRWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LXNlYXJjaC1idG4tb3BlbicpO1xuICB9XG5cbiAgI2dldFNlYXJjaENvbnRhaW5lckVsKHNlYXJjaEVsOiBFbGVtZW50UmVmKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBzZWFyY2hFbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5za3ktc2VhcmNoLWNvbnRhaW5lcicpO1xuICB9XG5cbiAgI2dldElucHV0RWwoc2VhcmNoRWw6IEVsZW1lbnRSZWYpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gc2VhcmNoRWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICB9XG59XG4iXX0=","import { animate, state, style, transition, trigger, } from '@angular/animations';\nimport { Component, DestroyRef, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { SkyContentInfoProvider, SkyMediaQueryService, } from '@skyux/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { SkySearchAdapterService } from './search-adapter.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./search-adapter.service\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@skyux/forms\";\nimport * as i4 from \"@angular/forms\";\nimport * as i5 from \"@skyux/icon\";\nimport * as i6 from \"@skyux/theme\";\nimport * as i7 from \"@skyux/core\";\nimport * as i8 from \"@skyux/i18n\";\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\nexport class SkySearchComponent {\n /**\n * The expand mode for the search input. The valid options\n * include `\"responsive\"` to collapse the search input into a button on\n * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n * @default \"responsive\"\n */\n set expandMode(value) {\n this.#_expandMode = value ?? EXPAND_MODE_RESPONSIVE;\n }\n get expandMode() {\n return this.#_expandMode;\n }\n /**\n * How many milliseconds to wait before searching after users enter text in the search input.\n * @default 0\n */\n set debounceTime(value) {\n this.#_debounceTime = value ?? 0;\n this.#setupSearchChangedEvent();\n }\n get debounceTime() {\n return this.#_debounceTime;\n }\n /**\n * Whether to disable the search.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value ?? false;\n }\n get disabled() {\n return this.#_disabled;\n }\n #changeRef;\n #contentInfoProvider;\n #elRef;\n #manualFocus;\n #searchAdapter;\n #searchUpdated;\n #searchUpdatedSub;\n #_debounceTime;\n #_disabled;\n #_expandMode;\n #destroyRef;\n #mediaQuerySvc;\n #breakpoint;\n constructor(elRef, searchAdapter, changeRef) {\n /**\n * Fires when the search text is applied.\n */\n this.searchApply = new EventEmitter();\n /**\n * Fires when the search text is changed.\n */\n this.searchChange = new EventEmitter();\n /**\n * Fires when the search text is cleared.\n */\n this.searchClear = new EventEmitter();\n this.clearButtonShown = false;\n this.dismissButtonShown = false;\n this.inputAnimate = INPUT_SHOWN_STATE;\n this.isCollapsible = true;\n this.isFullWidth = false;\n this.mobileSearchShown = false;\n this.searchButtonShown = false;\n this.#contentInfoProvider = inject(SkyContentInfoProvider, { optional: true });\n this.#manualFocus = false;\n this.#searchUpdated = new Subject();\n this.#_debounceTime = 0;\n this.#_disabled = false;\n this.#_expandMode = EXPAND_MODE_RESPONSIVE;\n this.#destroyRef = inject(DestroyRef);\n this.#mediaQuerySvc = inject(SkyMediaQueryService);\n this.#breakpoint = toSignal(this.#mediaQuerySvc.breakpointChange);\n this.#elRef = elRef;\n this.#searchAdapter = searchAdapter;\n this.#changeRef = changeRef;\n this.contentInfoObs = this.#contentInfoProvider?.getInfo();\n }\n ngOnInit() {\n if (this.#searchShouldCollapse()) {\n this.#mediaQuerySvc.breakpointChange\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((breakpoint) => {\n this.#mediaQueryCallback(breakpoint);\n });\n }\n this.#setupSearchChangedEvent();\n }\n ngOnChanges(changes) {\n if (this.#expandModeBindingChanged(changes)) {\n switch (this.expandMode) {\n case EXPAND_MODE_NONE:\n this.isCollapsible = false;\n this.isFullWidth = false;\n break;\n case EXPAND_MODE_FIT:\n this.isCollapsible = false;\n this.isFullWidth = true;\n break;\n default:\n this.isCollapsible = true;\n this.isFullWidth = false;\n break;\n }\n }\n if (this.#searchBindingChanged(changes)) {\n this.#searchUpdated.next(this.searchText ?? '');\n this.clearButtonShown = !!(this.searchText && this.searchText !== '');\n if (this.#shouldOpenInput()) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n }\n this.#changeRef.detectChanges();\n }\n clearSearchText() {\n this.searchText = '';\n this.clearButtonShown = false;\n this.#searchAdapter.focusInput(this.#elRef);\n this.#searchUpdated.next(this.searchText);\n this.searchApply.emit(this.searchText);\n this.searchClear.emit();\n }\n enterPress(event, searchText) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n applySearchText(searchText) {\n // Double check that search text is defined before attempting to trim off whitespace\n if (searchText) {\n searchText = searchText.trim();\n }\n if (searchText !== this.searchText) {\n this.searchText = searchText;\n }\n this.clearButtonShown = !!(searchText && searchText !== '');\n if (searchText && searchText !== '') {\n this.#searchAdapter.selectInput(this.#elRef);\n }\n this.searchApply.emit(searchText);\n }\n searchTextChanged(searchText) {\n this.searchText = searchText;\n this.#searchUpdated.next(searchText);\n }\n toggleSearchInput(showInput) {\n if (this.#searchShouldCollapse()) {\n this.#manualFocus = true;\n if (showInput) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n else {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n }\n }\n inputAnimationStart(event) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.startInputAnimation(this.#elRef);\n if (event.toState === INPUT_SHOWN_STATE && this.#breakpoint() === 'xs') {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n inputAnimationEnd(event) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.endInputAnimation(this.#elRef);\n const breakpoint = this.#breakpoint();\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs';\n if ((event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs') ||\n breakpoint !== 'xs') {\n this.mobileSearchShown = false;\n }\n setTimeout(() => {\n if (this.#manualFocus && !this.searchButtonShown) {\n this.#searchAdapter.focusInput(this.#elRef);\n this.#manualFocus = false;\n }\n });\n }\n }\n ngOnDestroy() {\n this.#searchUpdated.complete();\n this.#searchUpdatedSub?.unsubscribe();\n }\n #searchBindingChanged(changes) {\n return (changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue);\n }\n #expandModeBindingChanged(changes) {\n return (changes['expandMode'] &&\n changes['expandMode'].previousValue !== changes['expandMode'].currentValue);\n }\n #shouldOpenInput() {\n return (this.searchText !== '' &&\n this.#breakpoint() === 'xs' &&\n this.#searchShouldCollapse());\n }\n #mediaQueryCallback(breakpoint) {\n if (this.#searchShouldCollapse()) {\n if (breakpoint === 'xs') {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n else {\n this.mobileSearchShown = false;\n }\n }\n this.#changeRef.markForCheck();\n }\n #searchShouldCollapse() {\n return ((this.isCollapsible || this.isCollapsible === undefined) &&\n this.isFullWidth !== true);\n }\n #setupSearchChangedEvent() {\n this.#searchUpdatedSub?.unsubscribe();\n this.#searchUpdatedSub = this.#searchUpdated\n .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n .subscribe((value) => {\n this.searchChange.emit(value);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchComponent, deps: [{ token: i0.ElementRef }, { token: i1.SkySearchAdapterService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkySearchComponent, isStandalone: false, selector: \"sky-search\", inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", searchText: \"searchText\", expandMode: \"expandMode\", debounceTime: \"debounceTime\", disabled: \"disabled\", placeholderText: \"placeholderText\" }, outputs: { searchApply: \"searchApply\", searchChange: \"searchChange\", searchClear: \"searchClear\" }, providers: [SkySearchAdapterService], usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"sky-search-container\\\">\\n <div class=\\\"sky-search-button-container\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_open' | skyLibResources\\\"\\n [hidden]=\\\"!searchButtonShown\\\"\\n [ngClass]=\\\"{ 'sky-search-btn-open-applied': clearButtonShown }\\\"\\n (click)=\\\"toggleSearchInput(true)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </div>\\n <div\\n class=\\\"sky-search-dismiss-container\\\"\\n [hidden]=\\\"searchButtonShown\\\"\\n [ngClass]=\\\"{\\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\\n }\\\"\\n >\\n <div class=\\\"sky-search-item-input\\\">\\n <div\\n class=\\\"sky-search-input-container\\\"\\n [@inputState]=\\\"inputAnimate\\\"\\n [ngClass]=\\\"{\\n 'sky-search-input-container-has-value': searchText?.trim()\\n }\\\"\\n (@inputState.start)=\\\"inputAnimationStart($event)\\\"\\n (@inputState.done)=\\\"inputAnimationEnd($event)\\\"\\n >\\n <sky-input-box [disabled]=\\\"disabled\\\">\\n <input\\n #searchInput=\\\"skyId\\\"\\n class=\\\"sky-form-control sky-search-input sky-rounded-corners\\\"\\n type=\\\"text\\\"\\n skyId\\n [attr.aria-label]=\\\"\\n ariaLabelledBy\\n ? undefined\\n : ariaLabel ||\\n ((contentInfoObs | async)?.descriptor?.type === 'text'\\n ? ('skyux_search_aria_label_descriptor'\\n | skyLibResources\\n : (contentInfoObs | async)?.descriptor?.value)\\n : ('skyux_search_label' | skyLibResources))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.placeholder]=\\\"\\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n [ngModel]=\\\"searchText\\\"\\n (keyup)=\\\"enterPress($event, searchText)\\\"\\n (ngModelChange)=\\\"searchTextChanged($event)\\\"\\n />\\n <span\\n class=\\\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\\\"\\n [hidden]=\\\"!clearButtonShown\\\"\\n >\\n <button\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"clearSearchText()\\\"\\n >\\n <sky-icon iconName=\\\"close\\\" />\\n </button>\\n </span>\\n <span\\n *skyThemeIf=\\\"'default'\\\"\\n class=\\\"sky-input-group-btn sky-input-box-btn-inset\\\"\\n >\\n <button\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_label' | skyLibResources\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"applySearchText(searchText)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </span>\\n <div\\n *skyThemeIf=\\\"'modern'\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-input-group-icon sky-input-box-icon-inset-left\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </div>\\n </sky-input-box>\\n </div>\\n </div>\\n <div class=\\\"sky-search-item-dismiss\\\">\\n @if (mobileSearchShown) {\\n <button\\n class=\\\"sky-btn sky-search-btn-dismiss\\\"\\n type=\\\"button\\\"\\n [attr.title]=\\\"'skyux_search_dismiss' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-btn-icon-borderless': 'modern'\\n }\\\"\\n (click)=\\\"toggleSearchInput(false)\\\"\\n >\\n <sky-icon *skyThemeIf=\\\"'default'\\\" iconName=\\\"chevron-left\\\" />\\n <sky-icon *skyThemeIf=\\\"'modern'\\\" iconName=\\\"chevron-double-left\\\" />\\n </button>\\n }\\n </div>\\n </div>\\n</div>\\n\\n<ng-template #searchIconTemplate>\\n <sky-icon iconName=\\\"search\\\" />\\n</ng-template>\\n\", styles: [\".sky-search-container:not(.sky-theme-modern *){--sky-override-search-applied-background-color: #fff;--sky-override-search-applied-border: 2px solid #72bf44;--sky-override-search-applied-box-shadow: none;--sky-override-search-applied-color: #72bf44;--sky-override-search-applied-mobile-button-horizontal-padding: 11px;--sky-override-search-applied-mobile-button-vertical-padding: 5px;--sky-override-search-clear-padding-right: 6px;--sky-override-search-container-padding: 5px;--sky-override-search-mobile-background-color: #ffffff;--sky-override-search-mobile-button-horizontal-padding: 12px;--sky-override-search-mobile-button-vertical-padding: 6px;--sky-override-search-mobile-font-size: 15px}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-apply{padding-left:6px}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-clear{padding-right:var(--sky-override-search-clear-padding-right)}sky-search .sky-search-input-container .sky-input-group-btn>button:focus{z-index:3}sky-search .sky-search-input-container{min-width:auto}sky-search .sky-responsive-container-xs .sky-search-input-container,sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:auto}@media (min-width: 768px){sky-search .sky-search-input-container{min-width:300px}}sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:300px}@media (max-width: 767px){sky-search .sky-search-input,sky-search .sky-search-btn-apply,sky-search .sky-search-btn-clear{font-size:var(--sky-override-search-mobile-font-size, var(--sky-font-size-body-m))}}sky-search .sky-btn.sky-search-btn-open{padding-top:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open{padding-top:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open,sky-search .sky-search-btn-open-applied .sky-btn.sky-search-btn-open:hover{background-color:var(--sky-override-search-applied-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-search-applied-border, none);box-shadow:var(--sky-override-search-applied-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-override-search-applied-color, var(--sky-color-border-selected)));color:var(--sky-override-search-applied-color, var(--sky-color-icon-action))}sky-search .sky-search-dismiss-container{display:flex}sky-search .sky-search-item-dismiss{flex-shrink:0;display:flex}sky-search .sky-search-item-dismiss>.sky-btn{border-color:transparent}sky-search .sky-search-item-input{flex-grow:1;display:flex}sky-search .sky-search-dismiss-absolute{align-items:center;position:absolute;background-color:var(--sky-override-search-mobile-background-color, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)));inset:0;padding:var(--sky-override-search-container-padding, var(--sky-comp-search-space-offset-top) var(--sky-comp-search-space-offset-right) var(--sky-comp-search-space-offset-bottom) var(--sky-comp-search-space-offset-left));z-index:1}.sky-theme-modern sky-search sky-input-box{--sky-comp-override-input-box-group-background-color: var( --sky-color-background-action-secondary-base );--sky-comp-override-input-box-group-background-color-active: var( --sky-color-background-action-secondary-active );--sky-comp-override-input-box-group-background-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-comp-override-input-box-group-background-color-focused: var( --sky-color-background-action-secondary-focus );--sky-comp-override-input-box-group-background-color-hover: var( --sky-color-background-action-secondary-hover )}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn{height:calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-top) + var(--sky-comp-search-space-inset-bottom));width:calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-left) + var(--sky-comp-search-space-inset-right))}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:var(--sky-color-icon-default);font-size:inherit}.sky-theme-modern sky-search .sky-search-btn-dismiss{color:var(--sky-color-icon-default);padding:var(--sky-comp-button-toolbar-space-inset-top) var(--sky-comp-button-toolbar-space-inset-right) var(--sky-comp-button-toolbar-space-inset-bottom) var(--sky-comp-button-toolbar-space-inset-left)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-disabled .sky-input-box-group .sky-input-box-group-form-control .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-disabled )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-base );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-base )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:hover:not(.sky-input-box-group-form-control-focus,:has(:active)) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-hover );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-hover )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control.sky-input-box-group-form-control-focus:not(:has(:active)) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-focus );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-focus )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:has(:active) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-active );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-active )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{box-shadow:inset 0 0 0 var(--sky-border-width-input-base) var(--sky-color-border-selected),var(--sky-elevation-action-toolbar-base);--sky-comp-override-input-box-group-background-color: var( --sky-color-background-selected-soft )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(:focus-within:not(:active)) .sky-form-group input{color:var(--sky-color-text-selected)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 var(--sky-space-gap-icon-m)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-group-icon .sky-icon{color:var(--sky-color-icon-default)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input{width:auto;padding:var(--sky-comp-search-space-inset-top) var(--sky-comp-search-space-inset-right) var(--sky-comp-search-space-inset-bottom) 0;margin:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{font-style:var(--sky-font-style-body-s);color:var(--sky-color-text-deemphasized);font-weight:var(--bb-font-weight-regular)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input:focus::placeholder{color:transparent}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i3.λ10, selector: \"sky-input-box\", inputs: [\"hasErrors\", \"disabled\", \"labelText\", \"characterLimit\", \"stacked\", \"helpPopoverTitle\", \"helpPopoverContent\", \"helpKey\", \"hintText\"] }, { kind: \"directive\", type: i4.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i6.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"directive\", type: i6.λ3, selector: \"[skyThemeIf]\", inputs: [\"skyThemeIf\"] }, { kind: \"directive\", type: i7.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i8.SkyLibResourcesPipe, name: \"skyLibResources\" }], animations: [\n trigger('inputState', [\n state(INPUT_HIDDEN_STATE, style({\n opacity: 0,\n width: 0,\n })),\n state(INPUT_SHOWN_STATE, style({\n opacity: 1,\n width: '100%',\n })),\n transition('* <=> *', animate('150ms')),\n ]),\n ], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-search', encapsulation: ViewEncapsulation.None, animations: [\n trigger('inputState', [\n state(INPUT_HIDDEN_STATE, style({\n opacity: 0,\n width: 0,\n })),\n state(INPUT_SHOWN_STATE, style({\n opacity: 1,\n width: '100%',\n })),\n transition('* <=> *', animate('150ms')),\n ]),\n ], providers: [SkySearchAdapterService], standalone: false, template: \"<div class=\\\"sky-search-container\\\">\\n <div class=\\\"sky-search-button-container\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_open' | skyLibResources\\\"\\n [hidden]=\\\"!searchButtonShown\\\"\\n [ngClass]=\\\"{ 'sky-search-btn-open-applied': clearButtonShown }\\\"\\n (click)=\\\"toggleSearchInput(true)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </div>\\n <div\\n class=\\\"sky-search-dismiss-container\\\"\\n [hidden]=\\\"searchButtonShown\\\"\\n [ngClass]=\\\"{\\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\\n }\\\"\\n >\\n <div class=\\\"sky-search-item-input\\\">\\n <div\\n class=\\\"sky-search-input-container\\\"\\n [@inputState]=\\\"inputAnimate\\\"\\n [ngClass]=\\\"{\\n 'sky-search-input-container-has-value': searchText?.trim()\\n }\\\"\\n (@inputState.start)=\\\"inputAnimationStart($event)\\\"\\n (@inputState.done)=\\\"inputAnimationEnd($event)\\\"\\n >\\n <sky-input-box [disabled]=\\\"disabled\\\">\\n <input\\n #searchInput=\\\"skyId\\\"\\n class=\\\"sky-form-control sky-search-input sky-rounded-corners\\\"\\n type=\\\"text\\\"\\n skyId\\n [attr.aria-label]=\\\"\\n ariaLabelledBy\\n ? undefined\\n : ariaLabel ||\\n ((contentInfoObs | async)?.descriptor?.type === 'text'\\n ? ('skyux_search_aria_label_descriptor'\\n | skyLibResources\\n : (contentInfoObs | async)?.descriptor?.value)\\n : ('skyux_search_label' | skyLibResources))\\n \\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.placeholder]=\\\"\\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n [ngModel]=\\\"searchText\\\"\\n (keyup)=\\\"enterPress($event, searchText)\\\"\\n (ngModelChange)=\\\"searchTextChanged($event)\\\"\\n />\\n <span\\n class=\\\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\\\"\\n [hidden]=\\\"!clearButtonShown\\\"\\n >\\n <button\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"clearSearchText()\\\"\\n >\\n <sky-icon iconName=\\\"close\\\" />\\n </button>\\n </span>\\n <span\\n *skyThemeIf=\\\"'default'\\\"\\n class=\\\"sky-input-group-btn sky-input-box-btn-inset\\\"\\n >\\n <button\\n class=\\\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"'skyux_search_label' | skyLibResources\\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"applySearchText(searchText)\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </button>\\n </span>\\n <div\\n *skyThemeIf=\\\"'modern'\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-input-group-icon sky-input-box-icon-inset-left\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"searchIconTemplate\\\" />\\n </div>\\n </sky-input-box>\\n </div>\\n </div>\\n <div class=\\\"sky-search-item-dismiss\\\">\\n @if (mobileSearchShown) {\\n <button\\n class=\\\"sky-btn sky-search-btn-dismiss\\\"\\n type=\\\"button\\\"\\n [attr.title]=\\\"'skyux_search_dismiss' | skyLibResources\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-btn-icon-borderless': 'modern'\\n }\\\"\\n (click)=\\\"toggleSearchInput(false)\\\"\\n >\\n <sky-icon *skyThemeIf=\\\"'default'\\\" iconName=\\\"chevron-left\\\" />\\n <sky-icon *skyThemeIf=\\\"'modern'\\\" iconName=\\\"chevron-double-left\\\" />\\n </button>\\n }\\n </div>\\n </div>\\n</div>\\n\\n<ng-template #searchIconTemplate>\\n <sky-icon iconName=\\\"search\\\" />\\n</ng-template>\\n\", styles: [\".sky-search-container:not(.sky-theme-modern *){--sky-override-search-applied-background-color: #fff;--sky-override-search-applied-border: 2px solid #72bf44;--sky-override-search-applied-box-shadow: none;--sky-override-search-applied-color: #72bf44;--sky-override-search-applied-mobile-button-horizontal-padding: 11px;--sky-override-search-applied-mobile-button-vertical-padding: 5px;--sky-override-search-clear-padding-right: 6px;--sky-override-search-container-padding: 5px;--sky-override-search-mobile-background-color: #ffffff;--sky-override-search-mobile-button-horizontal-padding: 12px;--sky-override-search-mobile-button-vertical-padding: 6px;--sky-override-search-mobile-font-size: 15px}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-apply{padding-left:6px}sky-search .sky-input-group-btn .sky-btn.sky-search-btn-clear{padding-right:var(--sky-override-search-clear-padding-right)}sky-search .sky-search-input-container .sky-input-group-btn>button:focus{z-index:3}sky-search .sky-search-input-container{min-width:auto}sky-search .sky-responsive-container-xs .sky-search-input-container,sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:auto}@media (min-width: 768px){sky-search .sky-search-input-container{min-width:300px}}sky-search .sky-responsive-container-sm .sky-search-input-container,sky-search .sky-responsive-container-md .sky-search-input-container,sky-search .sky-responsive-container-lg .sky-search-input-container{min-width:300px}@media (max-width: 767px){sky-search .sky-search-input,sky-search .sky-search-btn-apply,sky-search .sky-search-btn-clear{font-size:var(--sky-override-search-mobile-font-size, var(--sky-font-size-body-m))}}sky-search .sky-btn.sky-search-btn-open{padding-top:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open{padding-top:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-top));padding-bottom:var(--sky-override-search-applied-mobile-button-vertical-padding, var(--sky-comp-button-space-inset-bottom));padding-left:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-left));padding-right:var(--sky-override-search-applied-mobile-button-horizontal-padding, var(--sky-comp-button-space-inset-right))}sky-search .sky-search-btn-open-applied.sky-search-btn-open,sky-search .sky-search-btn-open-applied .sky-btn.sky-search-btn-open:hover{background-color:var(--sky-override-search-applied-background-color, var(--sky-color-background-selected-soft));border:var(--sky-override-search-applied-border, none);box-shadow:var(--sky-override-search-applied-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-override-search-applied-color, var(--sky-color-border-selected)));color:var(--sky-override-search-applied-color, var(--sky-color-icon-action))}sky-search .sky-search-dismiss-container{display:flex}sky-search .sky-search-item-dismiss{flex-shrink:0;display:flex}sky-search .sky-search-item-dismiss>.sky-btn{border-color:transparent}sky-search .sky-search-item-input{flex-grow:1;display:flex}sky-search .sky-search-dismiss-absolute{align-items:center;position:absolute;background-color:var(--sky-override-search-mobile-background-color, var(--sky-comp-override-list-header-background-color, var(--sky-background-color-page-default)));inset:0;padding:var(--sky-override-search-container-padding, var(--sky-comp-search-space-offset-top) var(--sky-comp-search-space-offset-right) var(--sky-comp-search-space-offset-bottom) var(--sky-comp-search-space-offset-left));z-index:1}.sky-theme-modern sky-search sky-input-box{--sky-comp-override-input-box-group-background-color: var( --sky-color-background-action-secondary-base );--sky-comp-override-input-box-group-background-color-active: var( --sky-color-background-action-secondary-active );--sky-comp-override-input-box-group-background-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-comp-override-input-box-group-background-color-focused: var( --sky-color-background-action-secondary-focus );--sky-comp-override-input-box-group-background-color-hover: var( --sky-color-background-action-secondary-hover )}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn{height:calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-top) + var(--sky-comp-search-space-inset-bottom));width:calc(var(--sky-font-line_height-input-val) * var(--sky-font-size-input-val) + var(--sky-comp-search-space-inset-left) + var(--sky-comp-search-space-inset-right))}.sky-theme-modern sky-search .sky-input-box .sky-input-group-btn .sky-btn.sky-search-btn .sky-icon.sky-i-close{color:var(--sky-color-icon-default);font-size:inherit}.sky-theme-modern sky-search .sky-search-btn-dismiss{color:var(--sky-color-icon-default);padding:var(--sky-comp-button-toolbar-space-inset-top) var(--sky-comp-button-toolbar-space-inset-right) var(--sky-comp-button-toolbar-space-inset-bottom) var(--sky-comp-button-toolbar-space-inset-left)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-disabled .sky-input-box-group .sky-input-box-group-form-control .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-disabled )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-base );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-base )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:hover:not(.sky-input-box-group-form-control-focus,:has(:active)) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-hover );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-hover )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control.sky-input-box-group-form-control-focus:not(:has(:active)) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-focus );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-focus )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:has(:active) .sky-form-group{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-action-secondary-active );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-action-toolbar-active )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(.sky-input-box-group-form-control-focus,:hover) .sky-form-group{box-shadow:inset 0 0 0 var(--sky-border-width-input-base) var(--sky-color-border-selected),var(--sky-elevation-action-toolbar-base);--sky-comp-override-input-box-group-background-color: var( --sky-color-background-selected-soft )}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container.sky-search-input-container-has-value .sky-input-box-group-form-control:not(:focus-within:not(:active)) .sky-form-group input{color:var(--sky-color-text-selected)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 var(--sky-space-gap-icon-m)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-group-icon .sky-icon{color:var(--sky-color-icon-default)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input{width:auto;padding:var(--sky-comp-search-space-inset-top) var(--sky-comp-search-space-inset-right) var(--sky-comp-search-space-inset-bottom) 0;margin:0}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input::placeholder{font-style:var(--sky-font-style-body-s);color:var(--sky-color-text-deemphasized);font-weight:var(--bb-font-weight-regular)}.sky-theme-modern sky-search .sky-search-container .sky-search-input-container .sky-input-box-group .sky-form-group .sky-input-box-form-group-inner input:focus::placeholder{color:transparent}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkySearchAdapterService }, { type: i0.ChangeDetectorRef }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], searchApply: [{\n type: Output\n }], searchChange: [{\n type: Output\n }], searchClear: [{\n type: Output\n }], searchText: [{\n type: Input\n }], expandMode: [{\n type: Input\n }], debounceTime: [{\n type: Input\n }], disabled: [{\n type: Input\n }], placeholderText: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFHTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQUVuRSxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLFlBQVksQ0FBQztBQUM1QyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7QUE2QmhDLE1B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LE1BQU07O3NCQU1OLEtBQUs7O3NCQVVMLEtBQUs7O3NCQWFMLEtBQUs7O3NCQWNMLEtBQUs7O3NCQWNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbmltYXRpb25FdmVudCxcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgU2t5QnJlYWtwb2ludCxcbiAgU2t5Q29udGVudEluZm8sXG4gIFNreUNvbnRlbnRJbmZvUHJvdmlkZXIsXG4gIFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3NlYXJjaC1hZGFwdGVyLnNlcnZpY2UnO1xuXG5jb25zdCBJTlBVVF9TSE9XTl9TVEFURSA9ICdpbnB1dFNob3duJztcbmNvbnN0IElOUFVUX0hJRERFTl9TVEFURSA9ICdpbnB1dEhpZGRlbic7XG5jb25zdCBFWFBBTkRfTU9ERV9SRVNQT05TSVZFID0gJ3Jlc3BvbnNpdmUnO1xuY29uc3QgRVhQQU5EX01PREVfRklUID0gJ2ZpdCc7XG5jb25zdCBFWFBBTkRfTU9ERV9OT05FID0gJ25vbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5wdXRTdGF0ZScsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICBJTlBVVF9ISURERU5fU1RBVEUsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgSU5QVVRfU0hPV05fU1RBVEUsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPD0+IConLCBhbmltYXRlKCcxNTBtcycpKSxcbiAgICBdKSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbU2t5U2VhcmNoQWRhcHRlclNlcnZpY2VdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHNlYXJjaCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBzZWFyY2ggaW5wdXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIFVzZSBhIGNvbnRleHQtc2Vuc2l0aXZlIGxhYmVsLCBzdWNoIGFzIFwiU2VhcmNoIGNvbnN0aXR1ZW50cy5cIiBDb250ZXh0IGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHdoZW4gbXVsdGlwbGUgc2VhcmNoIGlucHV0cyBhcmUgaW4gY2xvc2UgcHJveGltaXR5LlxuICAgKiBJbiB0b29sYmFycywgc2VhcmNoIGlucHV0cyB1c2UgdGhlIGBsaXN0RGVzY3JpcHRvcmAgdG8gcHJvdmlkZSBjb250ZXh0LCBhbmQgdGhlIEFSSUEgbGFiZWwgZGVmYXVsdHMgdG8gXCJTZWFyY2ggPGxpc3REZXNjcmlwdG9yPi5cIlxuICAgKiBJZiB0aGUgYm94IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGVsZW1lbnQgSUQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHNlYXJjaC4gVGhpcyBzZXRzIHRoZSBzZWFyY2gncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGJveCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWFyY2ggdGV4dCBpcyBhcHBsaWVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWFyY2hBcHBseSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWFyY2ggdGV4dCBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWFyY2hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VhcmNoIHRleHQgaXMgY2xlYXJlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VhcmNoQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgc2VhcmNoIGNyaXRlcmlhIGZvciB0aGUgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwYW5kIG1vZGUgZm9yIHRoZSBzZWFyY2ggaW5wdXQuIFRoZSB2YWxpZCBvcHRpb25zXG4gICAqIGluY2x1ZGUgYFwicmVzcG9uc2l2ZVwiYCB0byBjb2xsYXBzZSB0aGUgc2VhcmNoIGlucHV0IGludG8gYSBidXR0b24gb25cbiAgICogbW9iaWxlIGRldmljZXMsIGBcIm5vbmVcImAgdG8gKm5vdCogY29sbGFwc2UgdGhlIHNlYXJjaCBpbnB1dCBvbiBtb2JpbGVcbiAgICogZGV2aWNlcywgYW5kIGBcImZpdFwiYCB0byBleHRlbmQgdGhlIHNlYXJjaCBpbnB1dCB0byBmaXQgdGhlIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IFwicmVzcG9uc2l2ZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGV4cGFuZE1vZGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19leHBhbmRNb2RlID0gdmFsdWUgPz8gRVhQQU5EX01PREVfUkVTUE9OU0lWRTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhwYW5kTW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfZXhwYW5kTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc2VhcmNoaW5nIGFmdGVyIHVzZXJzIGVudGVyIHRleHQgaW4gdGhlIHNlYXJjaCBpbnB1dC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kZWJvdW5jZVRpbWUgPSB2YWx1ZSA/PyAwO1xuICAgIHRoaXMuI3NldHVwU2VhcmNoQ2hhbmdlZEV2ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgc2VhcmNoLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgc2VhcmNoIGlucHV0IHVudGlsIHVzZXJzXG4gICAqIGVudGVyIHNlYXJjaCBjcml0ZXJpYS5cbiAgICogQGRlZmF1bHQgXCJGaW5kIGluIHRoaXMgbGlzdFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNsZWFyQnV0dG9uU2hvd24gPSBmYWxzZTtcblxuICBwdWJsaWMgZGlzbWlzc0J1dHRvblNob3duID0gZmFsc2U7XG5cbiAgcHVibGljIGlucHV0QW5pbWF0ZTogc3RyaW5nID0gSU5QVVRfU0hPV05fU1RBVEU7XG5cbiAgcHVibGljIGlzQ29sbGFwc2libGUgPSB0cnVlO1xuXG4gIHB1YmxpYyBpc0Z1bGxXaWR0aCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBtb2JpbGVTZWFyY2hTaG93biA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZWFyY2hCdXR0b25TaG93biA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBjb250ZW50SW5mb09iczogT2JzZXJ2YWJsZTxTa3lDb250ZW50SW5mbz4gfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI2NvbnRlbnRJbmZvUHJvdmlkZXIgPSBpbmplY3QoU2t5Q29udGVudEluZm9Qcm92aWRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG5cbiAgI21hbnVhbEZvY3VzID0gZmFsc2U7XG5cbiAgI3NlYXJjaEFkYXB0ZXI6IFNreVNlYXJjaEFkYXB0ZXJTZXJ2aWNlO1xuXG4gICNzZWFyY2hVcGRhdGVkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICNzZWFyY2hVcGRhdGVkU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI19kZWJvdW5jZVRpbWUgPSAwO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAjX2V4cGFuZE1vZGUgPSBFWFBBTkRfTU9ERV9SRVNQT05TSVZFO1xuXG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICByZWFkb25seSAjbWVkaWFRdWVyeVN2YyA9IGluamVjdChTa3lNZWRpYVF1ZXJ5U2VydmljZSk7XG4gIHJlYWRvbmx5ICNicmVha3BvaW50ID0gdG9TaWduYWwodGhpcy4jbWVkaWFRdWVyeVN2Yy5icmVha3BvaW50Q2hhbmdlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBzZWFyY2hBZGFwdGVyOiBTa3lTZWFyY2hBZGFwdGVyU2VydmljZSxcbiAgICBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLiNlbFJlZiA9IGVsUmVmO1xuICAgIHRoaXMuI3NlYXJjaEFkYXB0ZXIgPSBzZWFyY2hBZGFwdGVyO1xuICAgIHRoaXMuI2NoYW5nZVJlZiA9IGNoYW5nZVJlZjtcblxuICAgIHRoaXMuY29udGVudEluZm9PYnMgPSB0aGlzLiNjb250ZW50SW5mb1Byb3ZpZGVyPy5nZXRJbmZvKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3NlYXJjaFNob3VsZENvbGxhcHNlKCkpIHtcbiAgICAgIHRoaXMuI21lZGlhUXVlcnlTdmMuYnJlYWtwb2ludENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKGJyZWFrcG9pbnQpID0+IHtcbiAgICAgICAgICB0aGlzLiNtZWRpYVF1ZXJ5Q2FsbGJhY2soYnJlYWtwb2ludCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuI3NldHVwU2VhcmNoQ2hhbmdlZEV2ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNleHBhbmRNb2RlQmluZGluZ0NoYW5nZWQoY2hhbmdlcykpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5leHBhbmRNb2RlKSB7XG4gICAgICAgIGNhc2UgRVhQQU5EX01PREVfTk9ORTpcbiAgICAgICAgICB0aGlzLmlzQ29sbGFwc2libGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzRnVsbFdpZHRoID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRVhQQU5EX01PREVfRklUOlxuICAgICAgICAgIHRoaXMuaXNDb2xsYXBzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNGdWxsV2lkdGggPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuaXNDb2xsYXBzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc0Z1bGxXaWR0aCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLiNzZWFyY2hCaW5kaW5nQ2hhbmdlZChjaGFuZ2VzKSkge1xuICAgICAgdGhpcy4jc2VhcmNoVXBkYXRlZC5uZXh0KHRoaXMuc2VhcmNoVGV4dCA/PyAnJyk7XG4gICAgICB0aGlzLmNsZWFyQnV0dG9uU2hvd24gPSAhISh0aGlzLnNlYXJjaFRleHQgJiYgdGhpcy5zZWFyY2hUZXh0ICE9PSAnJyk7XG4gICAgICBpZiAodGhpcy4jc2hvdWxkT3BlbklucHV0KCkpIHtcbiAgICAgICAgdGhpcy5pbnB1dEFuaW1hdGUgPSBJTlBVVF9TSE9XTl9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy4jY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlYXJjaFRleHQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5jbGVhckJ1dHRvblNob3duID0gZmFsc2U7XG5cbiAgICB0aGlzLiNzZWFyY2hBZGFwdGVyLmZvY3VzSW5wdXQodGhpcy4jZWxSZWYpO1xuICAgIHRoaXMuI3NlYXJjaFVwZGF0ZWQubmV4dCh0aGlzLnNlYXJjaFRleHQpO1xuXG4gICAgdGhpcy5zZWFyY2hBcHBseS5lbWl0KHRoaXMuc2VhcmNoVGV4dCk7XG5cbiAgICB0aGlzLnNlYXJjaENsZWFyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRlclByZXNzKFxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgIHNlYXJjaFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ051bXBhZEVudGVyJykge1xuICAgICAgdGhpcy5hcHBseVNlYXJjaFRleHQoc2VhcmNoVGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFwcGx5U2VhcmNoVGV4dChzZWFyY2hUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAvLyBEb3VibGUgY2hlY2sgdGhhdCBzZWFyY2ggdGV4dCBpcyBkZWZpbmVkIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHRyaW0gb2ZmIHdoaXRlc3BhY2VcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xuICAgICAgc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQudHJpbSgpO1xuICAgIH1cblxuICAgIGlmIChzZWFyY2hUZXh0ICE9PSB0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCdXR0b25TaG93biA9ICEhKHNlYXJjaFRleHQgJiYgc2VhcmNoVGV4dCAhPT0gJycpO1xuICAgIGlmIChzZWFyY2hUZXh0ICYmIHNlYXJjaFRleHQgIT09ICcnKSB7XG4gICAgICB0aGlzLiNzZWFyY2hBZGFwdGVyLnNlbGVjdElucHV0KHRoaXMuI2VsUmVmKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaEFwcGx5LmVtaXQoc2VhcmNoVGV4dCk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoVGV4dENoYW5nZWQoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcbiAgICB0aGlzLiNzZWFyY2hVcGRhdGVkLm5leHQoc2VhcmNoVGV4dCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VhcmNoSW5wdXQoc2hvd0lucHV0OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3NlYXJjaFNob3VsZENvbGxhcHNlKCkpIHtcbiAgICAgIHRoaXMuI21hbnVhbEZvY3VzID0gdHJ1ZTtcbiAgICAgIGlmIChzaG93SW5wdXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEFuaW1hdGUgPSBJTlBVVF9TSE9XTl9TVEFURTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5wdXRBbmltYXRlID0gSU5QVVRfSElEREVOX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnB1dEFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNzZWFyY2hTaG91bGRDb2xsYXBzZSgpKSB7XG4gICAgICB0aGlzLiNzZWFyY2hBZGFwdGVyLnN0YXJ0SW5wdXRBbmltYXRpb24odGhpcy4jZWxSZWYpO1xuXG4gICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gSU5QVVRfU0hPV05fU1RBVEUgJiYgdGhpcy4jYnJlYWtwb2ludCgpID09PSAneHMnKSB7XG4gICAgICAgIHRoaXMubW9iaWxlU2VhcmNoU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnNlYXJjaEJ1dHRvblNob3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlucHV0QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNzZWFyY2hTaG91bGRDb2xsYXBzZSgpKSB7XG4gICAgICB0aGlzLiNzZWFyY2hBZGFwdGVyLmVuZElucHV0QW5pbWF0aW9uKHRoaXMuI2VsUmVmKTtcblxuICAgICAgY29uc3QgYnJlYWtwb2ludCA9IHRoaXMuI2JyZWFrcG9pbnQoKTtcblxuICAgICAgdGhpcy5zZWFyY2hCdXR0b25TaG93biA9XG4gICAgICAgIGV2ZW50LnRvU3RhdGUgPT09IElOUFVUX0hJRERFTl9TVEFURSAmJiBicmVha3BvaW50ID09PSAneHMnO1xuXG4gICAgICBpZiAoXG4gICAgICAgIChldmVudC50b1N0YXRlID09PSBJTlBVVF9ISURERU5fU1RBVEUgJiYgYnJlYWtwb2ludCA9PT0gJ3hzJykgfHxcbiAgICAgICAgYnJlYWtwb2ludCAhPT0gJ3hzJ1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMubW9iaWxlU2VhcmNoU2hvd24gPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiNtYW51YWxGb2N1cyAmJiAhdGhpcy5zZWFyY2hCdXR0b25TaG93bikge1xuICAgICAgICAgIHRoaXMuI3NlYXJjaEFkYXB0ZXIuZm9jdXNJbnB1dCh0aGlzLiNlbFJlZik7XG4gICAgICAgICAgdGhpcy4jbWFudWFsRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3NlYXJjaFVwZGF0ZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzZWFyY2hVcGRhdGVkU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgI3NlYXJjaEJpbmRpbmdDaGFuZ2VkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgY2hhbmdlc1snc2VhcmNoVGV4dCddICYmXG4gICAgICBjaGFuZ2VzWydzZWFyY2hUZXh0J10ucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlc1snc2VhcmNoVGV4dCddLmN1cnJlbnRWYWx1ZVxuICAgICk7XG4gIH1cblxuICAjZXhwYW5kTW9kZUJpbmRpbmdDaGFuZ2VkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgY2hhbmdlc1snZXhwYW5kTW9kZSddICYmXG4gICAgICBjaGFuZ2VzWydleHBhbmRNb2RlJ10ucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlc1snZXhwYW5kTW9kZSddLmN1cnJlbnRWYWx1ZVxuICAgICk7XG4gIH1cblxuICAjc2hvdWxkT3BlbklucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNlYXJjaFRleHQgIT09ICcnICYmXG4gICAgICB0aGlzLiNicmVha3BvaW50KCkgPT09ICd4cycgJiZcbiAgICAgIHRoaXMuI3NlYXJjaFNob3VsZENvbGxhcHNlKClcbiAgICApO1xuICB9XG5cbiAgI21lZGlhUXVlcnlDYWxsYmFjayhicmVha3BvaW50OiBTa3lCcmVha3BvaW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3NlYXJjaFNob3VsZENvbGxhcHNlKCkpIHtcbiAgICAgIGlmIChicmVha3BvaW50ID09PSAneHMnKSB7XG4gICAgICAgIHRoaXMuaW5wdXRBbmltYXRlID0gSU5QVVRfSElEREVOX1NUQVRFO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlucHV0QW5pbWF0ZSAhPT0gSU5QVVRfU0hPV05fU1RBVEUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEFuaW1hdGUgPSBJTlBVVF9TSE9XTl9TVEFURTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9iaWxlU2VhcmNoU2hvd24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI3NlYXJjaFNob3VsZENvbGxhcHNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5pc0NvbGxhcHNpYmxlIHx8IHRoaXMuaXNDb2xsYXBzaWJsZSA9PT0gdW5kZWZpbmVkKSAmJlxuICAgICAgdGhpcy5pc0Z1bGxXaWR0aCAhPT0gdHJ1ZVxuICAgICk7XG4gIH1cblxuICAjc2V0dXBTZWFyY2hDaGFuZ2VkRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jc2VhcmNoVXBkYXRlZFN1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuI3NlYXJjaFVwZGF0ZWRTdWIgPSB0aGlzLiNzZWFyY2hVcGRhdGVkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1zZWFyY2gtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJza3ktc2VhcmNoLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvbiBza3ktc2VhcmNoLWJ0bi1vcGVuXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfc2VhcmNoX29wZW4nIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIFtoaWRkZW5dPVwiIXNlYXJjaEJ1dHRvblNob3duXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1zZWFyY2gtYnRuLW9wZW4tYXBwbGllZCc6IGNsZWFyQnV0dG9uU2hvd24gfVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlU2VhcmNoSW5wdXQodHJ1ZSlcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hJY29uVGVtcGxhdGVcIiAvPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXNlYXJjaC1kaXNtaXNzLWNvbnRhaW5lclwiXG4gICAgW2hpZGRlbl09XCJzZWFyY2hCdXR0b25TaG93blwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1zZWFyY2gtZGlzbWlzcy1hYnNvbHV0ZSc6IG1vYmlsZVNlYXJjaFNob3duIHx8IGlzRnVsbFdpZHRoXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXNlYXJjaC1pdGVtLWlucHV0XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2t5LXNlYXJjaC1pbnB1dC1jb250YWluZXJcIlxuICAgICAgICBbQGlucHV0U3RhdGVdPVwiaW5wdXRBbmltYXRlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktc2VhcmNoLWlucHV0LWNvbnRhaW5lci1oYXMtdmFsdWUnOiBzZWFyY2hUZXh0Py50cmltKClcbiAgICAgICAgfVwiXG4gICAgICAgIChAaW5wdXRTdGF0ZS5zdGFydCk9XCJpbnB1dEFuaW1hdGlvblN0YXJ0KCRldmVudClcIlxuICAgICAgICAoQGlucHV0U3RhdGUuZG9uZSk9XCJpbnB1dEFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pbnB1dC1ib3ggW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjc2VhcmNoSW5wdXQ9XCJza3lJZFwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2wgc2t5LXNlYXJjaC1pbnB1dCBza3ktcm91bmRlZC1jb3JuZXJzXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICBhcmlhTGFiZWxsZWRCeVxuICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiBhcmlhTGFiZWwgfHxcbiAgICAgICAgICAgICAgICAgICgoY29udGVudEluZm9PYnMgfCBhc3luYyk/LmRlc2NyaXB0b3I/LnR5cGUgPT09ICd0ZXh0J1xuICAgICAgICAgICAgICAgICAgICA/ICgnc2t5dXhfc2VhcmNoX2FyaWFfbGFiZWxfZGVzY3JpcHRvcidcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAoY29udGVudEluZm9PYnMgfCBhc3luYyk/LmRlc2NyaXB0b3I/LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6ICgnc2t5dXhfc2VhcmNoX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcykpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlclRleHQgfHwgKCdza3l1eF9zZWFyY2hfcGxhY2Vob2xkZXInIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJlbnRlclByZXNzKCRldmVudCwgc2VhcmNoVGV4dClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoVGV4dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuIHNreS1pbnB1dC1ncm91cC1jbGVhciBza3ktaW5wdXQtYm94LWJ0bi1pbnNldFwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiFjbGVhckJ1dHRvblNob3duXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LXNlYXJjaC1idG4gc2t5LXNlYXJjaC1idG4tY2xlYXJcIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaFRleHQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cImNsb3NlXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuIHNreS1pbnB1dC1ib3gtYnRuLWluc2V0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LXNlYXJjaC1idG4gc2t5LXNlYXJjaC1idG4tYXBwbHlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfc2VhcmNoX2xhYmVsJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVNlYXJjaFRleHQoc2VhcmNoVGV4dClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoSWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1pY29uIHNreS1pbnB1dC1ib3gtaWNvbi1pbnNldC1sZWZ0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VhcmNoSWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS1zZWFyY2gtaXRlbS1kaXNtaXNzXCI+XG4gICAgICBAaWYgKG1vYmlsZVNlYXJjaFNob3duKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LXNlYXJjaC1idG4tZGlzbWlzc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ3NreXV4X3NlYXJjaF9kaXNtaXNzJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3NreS1idG4taWNvbi1ib3JkZXJsZXNzJzogJ21vZGVybidcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VhcmNoSW5wdXQoZmFsc2UpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb25OYW1lPVwiY2hldnJvbi1sZWZ0XCIgLz5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb25OYW1lPVwiY2hldnJvbi1kb3VibGUtbGVmdFwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaEljb25UZW1wbGF0ZT5cbiAgPHNreS1pY29uIGljb25OYW1lPVwic2VhcmNoXCIgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkySearchComponent } from './search.component';\nimport * as i0 from \"@angular/core\";\nexport class SkySearchModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchModule, declarations: [SkySearchComponent], imports: [CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule], exports: [SkySearchComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchModule, imports: [CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySearchModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkySearchComponent],\n imports: [\n CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule,\n ],\n exports: [SkySearchComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9zZWFyY2gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBZXhELE1BQU0sT0FBTyxlQUFlOytHQUFmLGVBQWU7Z0hBQWYsZUFBZSxpQkFaWCxrQkFBa0IsYUFFL0IsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQix3QkFBd0I7WUFDeEIsV0FBVztZQUNYLGFBQWE7WUFDYixjQUFjO1lBQ2QsV0FBVyxhQUVILGtCQUFrQjtnSEFFakIsZUFBZSxZQVZ4QixZQUFZO1lBQ1osaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWM7WUFDZCxXQUFXOzs0RkFJRixlQUFlO2tCQWIzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLHdCQUF3Qjt3QkFDeEIsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsV0FBVztxQkFDWjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWxvb2t1cC1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2guY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5U2VhcmNoQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lJbnB1dEJveE1vZHVsZSxcbiAgICBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreVNlYXJjaENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVNlYXJjaE1vZHVsZSB7fVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkySelectionModalItemSelectedPipe {\n transform(id, selectedIdMap) {\n return selectedIdMap.has(id);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalItemSelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalItemSelectedPipe, isStandalone: true, name: \"skySelectionModalItemSelected\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalItemSelectedPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skySelectionModalItemSelected',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWl0ZW0tc2VsZWN0ZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwtaXRlbS1zZWxlY3RlZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUVwRDs7R0FFRztBQUlILE1BQU0sT0FBTyxpQ0FBaUM7SUFDckMsU0FBUyxDQUFDLEVBQVcsRUFBRSxhQUFvQztRQUNoRSxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0FIVSxpQ0FBaUM7NkdBQWpDLGlDQUFpQzs7NEZBQWpDLGlDQUFpQztrQkFIN0MsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsK0JBQStCO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5U2VsZWN0aW9uTW9kYWxJdGVtU2VsZWN0ZWQnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbEl0ZW1TZWxlY3RlZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybShpZDogdW5rbm93biwgc2VsZWN0ZWRJZE1hcDogTWFwPHVua25vd24sIHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlbGVjdGVkSWRNYXAuaGFzKGlkKTtcbiAgfVxufVxuIl19","/**\n * @internal\n * Context for the selection modal. These values are provided by the selection modal service.\n */\nexport class SkySelectionModalContext {\n constructor(descriptorProperty, idProperty, initialSearch, initialValue, searchAsync, selectMode, selectionDescriptor, showAddButton, userConfig) {\n this.descriptorProperty = descriptorProperty;\n this.idProperty = idProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.searchAsync = searchAsync;\n this.selectMode = selectMode;\n this.selectionDescriptor = selectionDescriptor;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9zZWxlY3Rpb24tbW9kYWwvdHlwZXMvc2VsZWN0aW9uLW1vZGFsLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQW1CbkMsWUFDRSxrQkFBMEIsRUFDMUIsVUFBa0IsRUFDbEIsYUFBcUIsRUFDckIsWUFBdUIsRUFDdkIsV0FBK0MsRUFDL0MsVUFBbUMsRUFDbkMsbUJBQTJCLEVBQzNCLGFBQXNCLEVBQ3RCLFVBQStDO1FBRS9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWFzeW5jLWZ1bmN0aW9uJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIH0gZnJvbSAnLi4vLi4vbG9va3VwL3R5cGVzL2xvb2t1cC1zZWxlY3QtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vbG9va3VwL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtbmF0aXZlLXBpY2tlci1jb25maWcnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQ29udGV4dCBmb3IgdGhlIHNlbGVjdGlvbiBtb2RhbC4gVGhlc2UgdmFsdWVzIGFyZSBwcm92aWRlZCBieSB0aGUgc2VsZWN0aW9uIG1vZGFsIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQge1xuICBwdWJsaWMgZGVzY3JpcHRvclByb3BlcnR5OiBzdHJpbmc7XG5cbiAgcHVibGljIGlkUHJvcGVydHk6IHN0cmluZztcblxuICBwdWJsaWMgaW5pdGlhbFNlYXJjaDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpbml0aWFsVmFsdWU6IHVua25vd25bXTtcblxuICBwdWJsaWMgc2VhcmNoQXN5bmM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jRnVuY3Rpb247XG5cbiAgcHVibGljIHNlbGVjdGlvbkRlc2NyaXB0b3I6IHN0cmluZztcblxuICBwdWJsaWMgc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGU7XG5cbiAgcHVibGljIHNob3dBZGRCdXR0b246IGJvb2xlYW47XG5cbiAgcHVibGljIHVzZXJDb25maWc6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGRlc2NyaXB0b3JQcm9wZXJ0eTogc3RyaW5nLFxuICAgIGlkUHJvcGVydHk6IHN0cmluZyxcbiAgICBpbml0aWFsU2VhcmNoOiBzdHJpbmcsXG4gICAgaW5pdGlhbFZhbHVlOiB1bmtub3duW10sXG4gICAgc2VhcmNoQXN5bmM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jRnVuY3Rpb24sXG4gICAgc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUsXG4gICAgc2VsZWN0aW9uRGVzY3JpcHRvcjogc3RyaW5nLFxuICAgIHNob3dBZGRCdXR0b246IGJvb2xlYW4sXG4gICAgdXNlckNvbmZpZzogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb25maWcsXG4gICkge1xuICAgIHRoaXMuZGVzY3JpcHRvclByb3BlcnR5ID0gZGVzY3JpcHRvclByb3BlcnR5O1xuICAgIHRoaXMuaWRQcm9wZXJ0eSA9IGlkUHJvcGVydHk7XG4gICAgdGhpcy5pbml0aWFsU2VhcmNoID0gaW5pdGlhbFNlYXJjaDtcbiAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLnNlYXJjaEFzeW5jID0gc2VhcmNoQXN5bmM7XG4gICAgdGhpcy5zZWxlY3RNb2RlID0gc2VsZWN0TW9kZTtcbiAgICB0aGlzLnNlbGVjdGlvbkRlc2NyaXB0b3IgPSBzZWxlY3Rpb25EZXNjcmlwdG9yO1xuICAgIHRoaXMuc2hvd0FkZEJ1dHRvbiA9IHNob3dBZGRCdXR0b247XG4gICAgdGhpcy51c2VyQ29uZmlnID0gdXNlckNvbmZpZztcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';\nimport { SkyIdService, SkyLiveAnnouncerService, SkyViewkeeperModule, } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/icon\";\nimport * as i4 from \"@skyux/lists\";\nimport * as i5 from \"@skyux/modals\";\nimport * as i6 from \"../search/search.component\";\nimport * as i7 from \"@skyux/layout\";\nimport * as i8 from \"@skyux/indicators\";\nimport * as i9 from \"@skyux/core\";\nimport * as i10 from \"@skyux/i18n\";\n/**\n * @internal\n */\nexport class SkySelectionModalComponent {\n #continuationData;\n #currentSearchSub;\n #ngUnsubscribe;\n #offset;\n #changeDetector;\n #idSvc;\n #liveAnnouncerSvc;\n #resourcesSvc;\n constructor() {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n this.addClick = new Subject();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.displayedItems = [];\n this.hasMoreItems = false;\n this.isLoadingMore = false;\n this.isSearching = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.items = [];\n this.onlyShowSelected = false;\n this.repeaterItemTemplate = null;\n this.selectedIdMap = new Map();\n this.#ngUnsubscribe = new Subject();\n this.#offset = 0;\n this.context = inject(SkySelectionModalContext);\n this.modalInstance = inject(SkyModalInstance);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#idSvc = inject(SkyIdService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.id = this.#idSvc.generateId();\n }\n ngOnInit() {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n this.#createInitialSelectedItemsMap();\n this.#loadSearchResults();\n }\n ngOnDestroy() {\n this.#cancelCurrentSearch();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n addButtonClicked() {\n this.addClick.next();\n }\n clearAll() {\n this.selectedIdMap = new Map(this.selectedIdMap);\n // Only deselect items that have been loaded; items that would be loaded\n // after an infinite scroll event should remain selected.\n for (const item of this.items) {\n this.selectedIdMap.delete(item[this.context.idProperty]);\n }\n this.updateDisplayedItems();\n this.#changeDetector.markForCheck();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n itemClick(selectedItem) {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addItem(itemToAdd) {\n // Add the selected item, then perform the search again in case the\n // newly-added item should be displayed as a search results.\n this.#offset = 0;\n this.onItemSelect(true, itemToAdd);\n this.#loadSearchResults();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onItemSelect(newSelectState, itemToSelect) {\n const itemId = itemToSelect[this.context.idProperty];\n // Create a new Map so the pipe transform will execute on the next\n // change detection cycle.\n this.selectedIdMap = new Map(this.selectedIdMap);\n if (this.context.selectMode === 'single') {\n if (newSelectState) {\n this.selectedIdMap.clear();\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n }\n else {\n if (newSelectState) {\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n else {\n this.selectedIdMap.delete(itemId);\n }\n }\n this.updateDisplayedItems();\n }\n searchApplied(searchText) {\n this.#offset = 0;\n this.searchText = searchText;\n this.#loadSearchResults();\n }\n selectAll() {\n this.selectedIdMap = new Map();\n for (const item of this.items) {\n this.selectedIdMap.set(item[this.context.idProperty], item);\n }\n this.updateDisplayedItems();\n }\n infiniteScrollEnd() {\n this.#cancelCurrentSearch();\n /* Sanity check - else case would only happen if this was called directly */\n /* istanbul ignore else */\n if (this.hasMoreItems) {\n this.isLoadingMore = true;\n this.#performSearch((result) => {\n this.items = this.items.concat(result.items);\n this.updateDisplayedItems();\n this.isLoadingMore = false;\n });\n }\n }\n save() {\n const selectedItems = Array.from(this.selectedIdMap.values(), (itemData, index) => ({\n index,\n itemData,\n })).sort((a, b) => {\n return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n ? -1\n : 1;\n });\n this.modalInstance.save(selectedItems);\n }\n updateDisplayedItems() {\n const selectedItems = this.items.filter((item) => this.selectedIdMap.has(item[this.context.idProperty]));\n if (this.onlyShowSelected) {\n if (!this.searchText) {\n this.displayedItems = Array.from(this.selectedIdMap.values());\n }\n else {\n this.displayedItems = selectedItems;\n }\n }\n else {\n this.displayedItems = this.items;\n }\n setTimeout(() => {\n this.#announceSelectionState(selectedItems.length, this.displayedItems.length);\n this.#changeDetector.markForCheck();\n });\n }\n #loadSearchResults() {\n this.#cancelCurrentSearch();\n this.isSearching = true;\n this.#performSearch((result) => {\n this.isSearching = false;\n this.items = result.items;\n });\n this.#changeDetector.markForCheck();\n }\n #createInitialSelectedItemsMap() {\n this.selectedIdMap = new Map(this.context.initialValue.map((item) => [\n item[this.context.idProperty],\n item,\n ]));\n }\n #performSearch(processResults) {\n this.#currentSearchSub = this.context\n .searchAsync({\n displayType: 'modal',\n offset: this.#offset,\n searchText: this.searchText || '',\n continuationData: this.#continuationData,\n })\n .pipe(take(1))\n .subscribe((result) => {\n processResults(result);\n this.#continuationData = result.continuationData;\n this.hasMoreItems = result.hasMore || false;\n this.#offset = this.items.length;\n this.updateDisplayedItems();\n this.#changeDetector.markForCheck();\n });\n }\n #cancelCurrentSearch() {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n this.isLoadingMore = false;\n this.isSearching = false;\n }\n }\n #announceSelectionState(selectedItemCount, displayedItemCount) {\n this.#resourcesSvc\n .getString('skyux_lookup_show_more_displayed_items_updated', selectedItemCount.toString(), displayedItemCount.toString())\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkySelectionModalComponent, isStandalone: true, selector: \"sky-selection-modal\", ngImport: i0, template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <sky-wait [isWaiting]=\\\"isSearching\\\" />\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [labelText]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDisplayedItems()\\\"\\n />\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (!isSearching && displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater\\n class=\\\"sky-lookup-show-more-repeater\\\"\\n expandMode=\\\"none\\\"\\n [ngClass]=\\\"{ 'hover-rows': context.selectMode === 'single' }\\\"\\n >\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n #repeaterItem\\n [isSelected]=\\\"\\n item[context.idProperty]\\n | skySelectionModalItemSelected: selectedIdMap\\n \\\"\\n [itemName]=\\\"item[context.descriptorProperty]\\\"\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: {\\n item: item,\\n checkboxId:\\n context.selectMode === 'multiple'\\n ? 'sky-checkbox-' +\\n repeaterItem.contentId +\\n '-item-checkbox-input'\\n : undefined\\n }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"hasMoreItems && (!onlyShowSelected || !!searchText)\\\"\\n [loading]=\\\"isLoadingMore\\\"\\n (scrollEnd)=\\\"infiniteScrollEnd()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [disabled]=\\\"isSearching\\\"\\n (click)=\\\"save()\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\" let-checkboxId=\\\"checkboxId\\\">\\n @if (checkboxId) {\\n <label class=\\\"selection-modal-item-label\\\" [attr.for]=\\\"checkboxId\\\">{{\\n item[context.descriptorProperty]\\n }}</label>\\n } @else {\\n {{ item[context.descriptorProperty] }}\\n }\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-modal:not(.sky-theme-modern *){--sky-override-selection-modal-no-results-padding: 20px 0}.sky-lookup-show-more-no-results{padding:var(--sky-override-selection-modal-no-results-padding, var(--sky-space-inset-vertical-top-xl) var(--sky-space-inset-vertical-right-xl) var(--sky-space-inset-vertical-bottom-xl) var(--sky-space-inset-vertical-left-xl))}label.selection-modal-item-label{display:block}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: SkyCheckboxModule }, { kind: \"component\", type: i2.λ3, selector: \"sky-checkbox\", inputs: [\"label\", \"labelledBy\", \"id\", \"disabled\", \"tabindex\", \"name\", \"helpPopoverContent\", \"helpPopoverTitle\", \"iconName\", \"checkboxType\", \"checked\", \"indeterminate\", \"required\", \"labelText\", \"labelHidden\", \"hintText\", \"stacked\", \"helpKey\"], outputs: [\"change\", \"checkedChange\", \"disabledChange\", \"indeterminateChange\"] }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i3.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"ngmodule\", type: SkyInfiniteScrollModule }, { kind: \"component\", type: i4.λ6, selector: \"sky-infinite-scroll\", inputs: [\"enabled\", \"loading\"], outputs: [\"scrollEnd\"] }, { kind: \"ngmodule\", type: SkyLookupResourcesModule }, { kind: \"ngmodule\", type: SkyModalModule }, { kind: \"component\", type: i5.λ5, selector: \"sky-modal\", inputs: [\"formErrors\", \"headingText\", \"helpKey\", \"helpPopoverContent\", \"helpPopoverTitle\", \"ariaRole\", \"tiledBody\", \"ariaDescribedBy\", \"ariaLabelledBy\", \"layout\"] }, { kind: \"component\", type: i5.λ2, selector: \"sky-modal-content\" }, { kind: \"component\", type: i5.λ3, selector: \"sky-modal-footer\" }, { kind: \"component\", type: i5.λ4, selector: \"sky-modal-header\" }, { kind: \"ngmodule\", type: SkyRepeaterModule }, { kind: \"component\", type: i4.λ11, selector: \"sky-repeater\", inputs: [\"activeIndex\", \"ariaLabel\", \"reorderable\", \"expandMode\"], outputs: [\"activeIndexChange\", \"orderChange\"] }, { kind: \"component\", type: i4.λ10, selector: \"sky-repeater-item\", inputs: [\"disabled\", \"itemName\", \"inlineFormConfig\", \"inlineFormTemplate\", \"isExpanded\", \"isSelected\", \"reorderable\", \"selectable\", \"showInlineForm\", \"tag\"], outputs: [\"collapse\", \"expand\", \"inlineFormClose\", \"isSelectedChange\"] }, { kind: \"component\", type: i4.λ8, selector: \"sky-repeater-item-content\" }, { kind: \"ngmodule\", type: SkySearchModule }, { kind: \"component\", type: i6.SkySearchComponent, selector: \"sky-search\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"searchText\", \"expandMode\", \"debounceTime\", \"disabled\", \"placeholderText\"], outputs: [\"searchApply\", \"searchChange\", \"searchClear\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"ngmodule\", type: SkyToolbarModule }, { kind: \"component\", type: i7.λ37, selector: \"sky-toolbar\", inputs: [\"listDescriptor\"] }, { kind: \"component\", type: i7.λ39, selector: \"sky-toolbar-item\" }, { kind: \"component\", type: i7.λ38, selector: \"sky-toolbar-section\" }, { kind: \"component\", type: i7.λ40, selector: \"sky-toolbar-view-actions\" }, { kind: \"ngmodule\", type: SkyWaitModule }, { kind: \"component\", type: i8.λ14, selector: \"sky-wait\", inputs: [\"ariaLabel\", \"isWaiting\", \"isFullPage\", \"isNonBlocking\", \"screenReaderCompletedText\"] }, { kind: \"ngmodule\", type: SkyViewkeeperModule }, { kind: \"directive\", type: i9.λ3, selector: \"[skyViewkeeper]\", inputs: [\"skyViewkeeper\", \"skyViewkeeperOmitShadow\"] }, { kind: \"pipe\", type: i10.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"pipe\", type: SkySelectionModalItemSelectedPipe, name: \"skySelectionModalItemSelected\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-selection-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySelectionModalItemSelectedPipe,\n SkyThemeModule,\n SkyToolbarModule,\n SkyWaitModule,\n SkyViewkeeperModule,\n ], template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <sky-wait [isWaiting]=\\\"isSearching\\\" />\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [labelText]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDisplayedItems()\\\"\\n />\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (!isSearching && displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater\\n class=\\\"sky-lookup-show-more-repeater\\\"\\n expandMode=\\\"none\\\"\\n [ngClass]=\\\"{ 'hover-rows': context.selectMode === 'single' }\\\"\\n >\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n #repeaterItem\\n [isSelected]=\\\"\\n item[context.idProperty]\\n | skySelectionModalItemSelected: selectedIdMap\\n \\\"\\n [itemName]=\\\"item[context.descriptorProperty]\\\"\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: {\\n item: item,\\n checkboxId:\\n context.selectMode === 'multiple'\\n ? 'sky-checkbox-' +\\n repeaterItem.contentId +\\n '-item-checkbox-input'\\n : undefined\\n }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"hasMoreItems && (!onlyShowSelected || !!searchText)\\\"\\n [loading]=\\\"isLoadingMore\\\"\\n (scrollEnd)=\\\"infiniteScrollEnd()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.selectionDescriptor\\n \\\"\\n [disabled]=\\\"isSearching\\\"\\n (click)=\\\"save()\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\" let-checkboxId=\\\"checkboxId\\\">\\n @if (checkboxId) {\\n <label class=\\\"selection-modal-item-label\\\" [attr.for]=\\\"checkboxId\\\">{{\\n item[context.descriptorProperty]\\n }}</label>\\n } @else {\\n {{ item[context.descriptorProperty] }}\\n }\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-modal:not(.sky-theme-modern *){--sky-override-selection-modal-no-results-padding: 20px 0}.sky-lookup-show-more-no-results{padding:var(--sky-override-selection-modal-no-results-padding, var(--sky-space-inset-vertical-top-xl) var(--sky-space-inset-vertical-right-xl) var(--sky-space-inset-vertical-bottom-xl) var(--sky-space-inset-vertical-left-xl))}label.selection-modal-item-label{display:block}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2VsZWN0aW9uLW1vZGFsL3NlbGVjdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFnQixN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QUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBNVFVLDBCQUEwQjttR0FBMUIsMEJBQTBCLCtFQzFEdkMsbzFNQW1MQSw0ZER4SUksWUFBWSxtU0FDWixpQkFBaUIsOFpBQ2pCLGFBQWEscUlBQ2IsdUJBQXVCLDJKQUN2Qix3QkFBd0IsOEJBQ3hCLGNBQWMsb2NBQ2QsaUJBQWlCLG9rQkFDakIsZUFBZSx1UkFFZixjQUFjLDhCQUNkLGdCQUFnQiw0VUFDaEIsYUFBYSx5TEFDYixtQkFBbUIsMk5BSm5CLGlDQUFpQzs7NEZBT3hCLDBCQUEwQjtrQkFyQnRDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGlDQUFpQzt3QkFDakMsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsbUJBQW1CO3FCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5SWRTZXJ2aWNlLFxuICBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSxcbiAgU2t5Vmlld2tlZXBlck1vZHVsZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lXYWl0TW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuaW1wb3J0IHsgU2t5SW5maW5pdGVTY3JvbGxNb2R1bGUsIFNreVJlcGVhdGVyTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xpc3RzJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UsIFNreU1vZGFsTW9kdWxlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoTW9kdWxlIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5TG9va3VwUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1sb29rdXAtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsSXRlbVNlbGVjdGVkUGlwZSB9IGZyb20gJy4vc2VsZWN0aW9uLW1vZGFsLWl0ZW0tc2VsZWN0ZWQucGlwZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQgfSBmcm9tICcuL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi90eXBlcy9zZWxlY3Rpb24tbW9kYWwtc2VhcmNoLXJlc3VsdCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1zZWxlY3Rpb24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0aW9uLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUNoZWNrYm94TW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgU2t5TG9va3VwUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreU1vZGFsTW9kdWxlLFxuICAgIFNreVJlcGVhdGVyTW9kdWxlLFxuICAgIFNreVNlYXJjaE1vZHVsZSxcbiAgICBTa3lTZWxlY3Rpb25Nb2RhbEl0ZW1TZWxlY3RlZFBpcGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gICAgU2t5VG9vbGJhck1vZHVsZSxcbiAgICBTa3lXYWl0TW9kdWxlLFxuICAgIFNreVZpZXdrZWVwZXJNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVNlbGVjdGlvbk1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG5ldyBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgcHVibGljIGFkZENsaWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgZGlzcGxheWVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGhhc01vcmVJdGVtcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGFzc29jaWF0ZSB0aGlzIG1vZGFsIHdpdGggaXRzIG93bmluZyBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIGlzTG9hZGluZ01vcmUgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNTZWFyY2hpbmcgPSBmYWxzZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgaXRlbXM6IGFueVtdID0gW107XG5cbiAgcHVibGljIG9ubHlTaG93U2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVwZWF0ZXJJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc2VsZWN0ZWRJZE1hcCA9IG5ldyBNYXA8dW5rbm93biwgdW5rbm93bj4oKTtcblxuICAjY29udGludWF0aW9uRGF0YTogdW5rbm93bjtcblxuICAjY3VycmVudFNlYXJjaFN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb2Zmc2V0ID0gMDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dCA9IGluamVjdChTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kYWxJbnN0YW5jZSA9IGluamVjdChTa3lNb2RhbEluc3RhbmNlKTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2lkU3ZjID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyU3ZjID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJJdGVtVGVtcGxhdGUgPSB0aGlzLmNvbnRleHQudXNlckNvbmZpZy5pdGVtVGVtcGxhdGUgfHwgbnVsbDtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmNvbnRleHQuaW5pdGlhbFNlYXJjaDtcblxuICAgIHRoaXMuI2NyZWF0ZUluaXRpYWxTZWxlY3RlZEl0ZW1zTWFwKCk7XG4gICAgdGhpcy4jbG9hZFNlYXJjaFJlc3VsdHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNjYW5jZWxDdXJyZW50U2VhcmNoKCk7XG5cbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENsaWNrLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSWRNYXAgPSBuZXcgTWFwKHRoaXMuc2VsZWN0ZWRJZE1hcCk7XG5cbiAgICAvLyBPbmx5IGRlc2VsZWN0IGl0ZW1zIHRoYXQgaGF2ZSBiZWVuIGxvYWRlZDsgaXRlbXMgdGhhdCB3b3VsZCBiZSBsb2FkZWRcbiAgICAvLyBhZnRlciBhbiBpbmZpbml0ZSBzY3JvbGwgZXZlbnQgc2hvdWxkIHJlbWFpbiBzZWxlY3RlZC5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgdGhpcy5zZWxlY3RlZElkTWFwLmRlbGV0ZShpdGVtW3RoaXMuY29udGV4dC5pZFByb3BlcnR5XSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEaXNwbGF5ZWRJdGVtcygpO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgaXRlbUNsaWNrKHNlbGVjdGVkSXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5vbkl0ZW1TZWxlY3QoIXNlbGVjdGVkSXRlbS5zZWxlY3RlZCwgc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgYWRkSXRlbShpdGVtVG9BZGQ6IGFueSk6IHZvaWQge1xuICAgIC8vIEFkZCB0aGUgc2VsZWN0ZWQgaXRlbSwgdGhlbiBwZXJmb3JtIHRoZSBzZWFyY2ggYWdhaW4gaW4gY2FzZSB0aGVcbiAgICAvLyBuZXdseS1hZGRlZCBpdGVtIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgYSBzZWFyY2ggcmVzdWx0cy5cbiAgICB0aGlzLiNvZmZzZXQgPSAwO1xuICAgIHRoaXMub25JdGVtU2VsZWN0KHRydWUsIGl0ZW1Ub0FkZCk7XG4gICAgdGhpcy4jbG9hZFNlYXJjaFJlc3VsdHMoKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3QobmV3U2VsZWN0U3RhdGU6IGJvb2xlYW4sIGl0ZW1Ub1NlbGVjdDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUlkID0gaXRlbVRvU2VsZWN0W3RoaXMuY29udGV4dC5pZFByb3BlcnR5XTtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyBNYXAgc28gdGhlIHBpcGUgdHJhbnNmb3JtIHdpbGwgZXhlY3V0ZSBvbiB0aGUgbmV4dFxuICAgIC8vIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAgdGhpcy5zZWxlY3RlZElkTWFwID0gbmV3IE1hcCh0aGlzLnNlbGVjdGVkSWRNYXApO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgaWYgKG5ld1NlbGVjdFN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZE1hcC5jbGVhcigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSWRNYXAuc2V0KGl0ZW1JZCwgaXRlbVRvU2VsZWN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5ld1NlbGVjdFN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZE1hcC5zZXQoaXRlbUlkLCBpdGVtVG9TZWxlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkTWFwLmRlbGV0ZShpdGVtSWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkSXRlbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hBcHBsaWVkKHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI29mZnNldCA9IDA7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcblxuICAgIHRoaXMuI2xvYWRTZWFyY2hSZXN1bHRzKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJZE1hcCA9IG5ldyBNYXAoKTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRNYXAuc2V0KGl0ZW1bdGhpcy5jb250ZXh0LmlkUHJvcGVydHldLCBpdGVtKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURpc3BsYXllZEl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgaW5maW5pdGVTY3JvbGxFbmQoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FuY2VsQ3VycmVudFNlYXJjaCgpO1xuXG4gICAgLyogU2FuaXR5IGNoZWNrIC0gZWxzZSBjYXNlIHdvdWxkIG9ubHkgaGFwcGVuIGlmIHRoaXMgd2FzIGNhbGxlZCBkaXJlY3RseSAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaGFzTW9yZUl0ZW1zKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZ01vcmUgPSB0cnVlO1xuXG4gICAgICB0aGlzLiNwZXJmb3JtU2VhcmNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuY29uY2F0KHJlc3VsdC5pdGVtcyk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWRJdGVtcygpO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnNlbGVjdGVkSWRNYXAudmFsdWVzKCksXG4gICAgICAoaXRlbURhdGEsIGluZGV4KSA9PiAoe1xuICAgICAgICBpbmRleCxcbiAgICAgICAgaXRlbURhdGEsXG4gICAgICB9KSxcbiAgICApLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zLmluZGV4T2YoYS5pdGVtRGF0YSkgPCB0aGlzLml0ZW1zLmluZGV4T2YoYi5pdGVtRGF0YSlcbiAgICAgICAgPyAtMVxuICAgICAgICA6IDE7XG4gICAgfSk7XG5cbiAgICB0aGlzLm1vZGFsSW5zdGFuY2Uuc2F2ZShzZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEaXNwbGF5ZWRJdGVtcygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICB0aGlzLnNlbGVjdGVkSWRNYXAuaGFzKGl0ZW1bdGhpcy5jb250ZXh0LmlkUHJvcGVydHldKSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMub25seVNob3dTZWxlY3RlZCkge1xuICAgICAgaWYgKCF0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRJdGVtcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZElkTWFwLnZhbHVlcygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2Fubm91bmNlU2VsZWN0aW9uU3RhdGUoXG4gICAgICAgIHNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgICB0aGlzLmRpc3BsYXllZEl0ZW1zLmxlbmd0aCxcbiAgICAgICk7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gICNsb2FkU2VhcmNoUmVzdWx0cygpOiB2b2lkIHtcbiAgICB0aGlzLiNjYW5jZWxDdXJyZW50U2VhcmNoKCk7XG5cbiAgICB0aGlzLmlzU2VhcmNoaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuI3BlcmZvcm1TZWFyY2goKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5pc1NlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5pdGVtcyA9IHJlc3VsdC5pdGVtcztcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI2NyZWF0ZUluaXRpYWxTZWxlY3RlZEl0ZW1zTWFwKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJZE1hcCA9IG5ldyBNYXAoXG4gICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlLm1hcCgoaXRlbSkgPT4gW1xuICAgICAgICAoaXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5jb250ZXh0LmlkUHJvcGVydHldLFxuICAgICAgICBpdGVtLFxuICAgICAgXSksXG4gICAgKTtcbiAgfVxuXG4gICNwZXJmb3JtU2VhcmNoKFxuICAgIHByb2Nlc3NSZXN1bHRzOiAocmVzdWx0OiBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdCkgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy4jY3VycmVudFNlYXJjaFN1YiA9IHRoaXMuY29udGV4dFxuICAgICAgLnNlYXJjaEFzeW5jKHtcbiAgICAgICAgZGlzcGxheVR5cGU6ICdtb2RhbCcsXG4gICAgICAgIG9mZnNldDogdGhpcy4jb2Zmc2V0LFxuICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQgfHwgJycsXG4gICAgICAgIGNvbnRpbnVhdGlvbkRhdGE6IHRoaXMuI2NvbnRpbnVhdGlvbkRhdGEsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBwcm9jZXNzUmVzdWx0cyhyZXN1bHQpO1xuXG4gICAgICAgIHRoaXMuI2NvbnRpbnVhdGlvbkRhdGEgPSByZXN1bHQuY29udGludWF0aW9uRGF0YTtcbiAgICAgICAgdGhpcy5oYXNNb3JlSXRlbXMgPSByZXN1bHQuaGFzTW9yZSB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy4jb2Zmc2V0ID0gdGhpcy5pdGVtcy5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWRJdGVtcygpO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICAjY2FuY2VsQ3VycmVudFNlYXJjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VycmVudFNlYXJjaFN1Yikge1xuICAgICAgdGhpcy4jY3VycmVudFNlYXJjaFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy4jY3VycmVudFNlYXJjaFN1YiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZSA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1NlYXJjaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICNhbm5vdW5jZVNlbGVjdGlvblN0YXRlKFxuICAgIHNlbGVjdGVkSXRlbUNvdW50OiBudW1iZXIsXG4gICAgZGlzcGxheWVkSXRlbUNvdW50OiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfZGlzcGxheWVkX2l0ZW1zX3VwZGF0ZWQnLFxuICAgICAgICBzZWxlY3RlZEl0ZW1Db3VudC50b1N0cmluZygpLFxuICAgICAgICBkaXNwbGF5ZWRJdGVtQ291bnQudG9TdHJpbmcoKSxcbiAgICAgIClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXNvdXJjZVN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKHJlc291cmNlU3RyaW5nKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsXG4gIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWxcIlxuICBbYXR0ci5pZF09XCJpZFwiXG4gIFtuZ0NsYXNzXT1cIidza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC0nICsgY29udGV4dC5zZWxlY3RNb2RlXCJcbj5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAgQGlmIChjb250ZXh0LnVzZXJDb25maWc/LnRpdGxlKSB7XG4gICAgICB7eyBjb250ZXh0LnVzZXJDb25maWcudGl0bGUgfX1cbiAgICB9IEBlbHNlIHtcbiAgICAgIHt7XG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgIH19XG4gICAgfVxuICA8L3NreS1tb2RhbC1oZWFkZXI+XG4gIDxza3ktbW9kYWwtY29udGVudFxuICAgIFtza3lWaWV3a2VlcGVyXT1cIlsnLnNreS1sb29rdXAtc2hvdy1tb3JlLXRvb2xiYXItd3JhcHBlciddXCJcbiAgPlxuICAgIDxza3ktd2FpdCBbaXNXYWl0aW5nXT1cImlzU2VhcmNoaW5nXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtdG9vbGJhci13cmFwcGVyXCI+XG4gICAgICA8c2t5LXRvb2xiYXJcbiAgICAgICAgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC10b29sYmFyXCJcbiAgICAgICAgW2xpc3REZXNjcmlwdG9yXT1cImNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclwiXG4gICAgICA+XG4gICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICAgICAgW2RlYm91bmNlVGltZV09XCIyNTBcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgKHNlYXJjaEFwcGx5KT1cInNlYXJjaEFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgQGlmIChjb250ZXh0LnNob3dBZGRCdXR0b24pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkX2J1dHRvbl9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogY29udGV4dC5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQnV0dG9uQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cImFkZFwiIC8+XG4gICAgICAgICAgICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPC9za3ktdG9vbGJhcj5cbiAgICAgIEBpZiAoY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIDxza3ktdG9vbGJhciBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLW11bHRpc2VsZWN0LXRvb2xiYXJcIj5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zZWxlY3QtYWxsLWJ0blwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGwoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2FsbF9idXR0b25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtY2xlYXItYWxsLWJ0blwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgICA8c2t5LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogY29udGV4dC5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cIm9ubHlTaG93U2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRGlzcGxheWVkSXRlbXMoKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICAgIDwvc2t5LXRvb2xiYXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmICghaXNTZWFyY2hpbmcgJiYgZGlzcGxheWVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1sb29rdXAtc2hvdy1tb3JlLW5vLXJlc3VsdHNcIj5cbiAgICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfbm9fcmVzdWx0cycgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8c2t5LXJlcGVhdGVyXG4gICAgICBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLXJlcGVhdGVyXCJcbiAgICAgIGV4cGFuZE1vZGU9XCJub25lXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2hvdmVyLXJvd3MnOiBjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnIH1cIlxuICAgID5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZGlzcGxheWVkSXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtXG4gICAgICAgICAgI3JlcGVhdGVySXRlbVxuICAgICAgICAgIFtpc1NlbGVjdGVkXT1cIlxuICAgICAgICAgICAgaXRlbVtjb250ZXh0LmlkUHJvcGVydHldXG4gICAgICAgICAgICAgIHwgc2t5U2VsZWN0aW9uTW9kYWxJdGVtU2VsZWN0ZWQ6IHNlbGVjdGVkSWRNYXBcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtpdGVtTmFtZV09XCJpdGVtW2NvbnRleHQuZGVzY3JpcHRvclByb3BlcnR5XVwiXG4gICAgICAgICAgW3NlbGVjdGFibGVdPVwiY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXCJcbiAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAoaXNTZWxlY3RlZENoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByZXBlYXRlckl0ZW1UZW1wbGF0ZSA/PyBkZWZhdWx0SXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICAgICAgICBjaGVja2JveElkOlxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcbiAgICAgICAgICAgICAgICAgICAgICA/ICdza3ktY2hlY2tib3gtJyArXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlckl0ZW0uY29udGVudElkICtcbiAgICAgICAgICAgICAgICAgICAgICAgICctaXRlbS1jaGVja2JveC1pbnB1dCdcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbS1jb250ZW50PlxuICAgICAgICA8L3NreS1yZXBlYXRlci1pdGVtPlxuICAgICAgfVxuICAgIDwvc2t5LXJlcGVhdGVyPlxuICAgIDxza3ktaW5maW5pdGUtc2Nyb2xsXG4gICAgICBbZW5hYmxlZF09XCJoYXNNb3JlSXRlbXMgJiYgKCFvbmx5U2hvd1NlbGVjdGVkIHx8ICEhc2VhcmNoVGV4dClcIlxuICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nTW9yZVwiXG4gICAgICAoc2Nyb2xsRW5kKT1cImluZmluaXRlU2Nyb2xsRW5kKClcIlxuICAgIC8+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdCBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zYXZlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2NvbnRleHQnXG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1NlYXJjaGluZ1wiXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICA+XG4gICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9zZWxlY3QnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1jbG9zZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJtb2RhbEluc3RhbmNlLmNsb3NlKClcIlxuICAgID5cbiAgICAgIHt7ICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NhbmNlbCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9za3ktbW9kYWwtZm9vdGVyPlxuPC9za3ktbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY2hlY2tib3hJZD1cImNoZWNrYm94SWRcIj5cbiAgQGlmIChjaGVja2JveElkKSB7XG4gICAgPGxhYmVsIGNsYXNzPVwic2VsZWN0aW9uLW1vZGFsLWl0ZW0tbGFiZWxcIiBbYXR0ci5mb3JdPVwiY2hlY2tib3hJZFwiPnt7XG4gICAgICBpdGVtW2NvbnRleHQuZGVzY3JpcHRvclByb3BlcnR5XVxuICAgIH19PC9sYWJlbD5cbiAgfSBAZWxzZSB7XG4gICAge3sgaXRlbVtjb250ZXh0LmRlc2NyaXB0b3JQcm9wZXJ0eV0gfX1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { Subject } from 'rxjs';\n/**\n * Represents an instance of a selection modal.\n */\nexport class SkySelectionModalInstance {\n /**\n * An event that the selection modal instance emits when it closes.\n * It emits a `SkySelectionModalCloseArgs` object with a `selectedItems` property that includes\n * items selected by users on close or save and a `reason` property that indicates\n * whether the selection modal was saved or closed without saving.\n * The `reason` property accepts `\"cancel\"`, `\"close\"`, and `\"save\"`.\n */\n get closed() {\n return this.#closedObs;\n }\n /**\n * @internal\n */\n get itemAdded() {\n return this.#itemAddedObs;\n }\n #closed = new Subject();\n #closedObs;\n #itemAdded = new Subject();\n #itemAddedObs;\n constructor(id) {\n this.id = id;\n this.#closedObs = this.#closed.asObservable();\n this.#itemAddedObs = this.#itemAdded.asObservable();\n }\n /**\n * @internal\n */\n close(args) {\n this.#closed.next(args);\n this.#closed.complete();\n }\n /**\n * @internal\n */\n addItem(itemToAdd) {\n this.#itemAdded.next(itemToAdd);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvc2VsZWN0aW9uLW1vZGFsL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTNDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7Ozs7O09BTUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBT0QsT0FBTyxHQUFHLElBQUksT0FBTyxFQUE4QixDQUFDO0lBQ3BELFVBQVUsQ0FBeUM7SUFDbkQsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFDcEMsYUFBYSxDQUFzQjtJQUVuQyxZQUFZLEVBQVU7UUFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFnQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxTQUFrQjtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsQ2xvc2VBcmdzIH0gZnJvbSAnLi9zZWxlY3Rpb24tbW9kYWwtY2xvc2UtYXJncyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpbnN0YW5jZSBvZiBhIHNlbGVjdGlvbiBtb2RhbC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2Uge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCB0aGUgc2VsZWN0aW9uIG1vZGFsIGluc3RhbmNlIGVtaXRzIHdoZW4gaXQgY2xvc2VzLlxuICAgKiBJdCBlbWl0cyBhIGBTa3lTZWxlY3Rpb25Nb2RhbENsb3NlQXJnc2Agb2JqZWN0IHdpdGggYSBgc2VsZWN0ZWRJdGVtc2AgcHJvcGVydHkgdGhhdCBpbmNsdWRlc1xuICAgKiBpdGVtcyBzZWxlY3RlZCBieSB1c2VycyBvbiBjbG9zZSBvciBzYXZlIGFuZCBhIGByZWFzb25gIHByb3BlcnR5IHRoYXQgaW5kaWNhdGVzXG4gICAqIHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBtb2RhbCB3YXMgc2F2ZWQgb3IgY2xvc2VkIHdpdGhvdXQgc2F2aW5nLlxuICAgKiBUaGUgYHJlYXNvbmAgcHJvcGVydHkgYWNjZXB0cyBgXCJjYW5jZWxcImAsIGBcImNsb3NlXCJgLCBhbmQgYFwic2F2ZVwiYC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2xvc2VkKCk6IE9ic2VydmFibGU8U2t5U2VsZWN0aW9uTW9kYWxDbG9zZUFyZ3M+IHtcbiAgICByZXR1cm4gdGhpcy4jY2xvc2VkT2JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGdldCBpdGVtQWRkZWQoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuI2l0ZW1BZGRlZE9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gICNjbG9zZWQgPSBuZXcgU3ViamVjdDxTa3lTZWxlY3Rpb25Nb2RhbENsb3NlQXJncz4oKTtcbiAgI2Nsb3NlZE9iczogT2JzZXJ2YWJsZTxTa3lTZWxlY3Rpb25Nb2RhbENsb3NlQXJncz47XG4gICNpdGVtQWRkZWQgPSBuZXcgU3ViamVjdDx1bmtub3duPigpO1xuICAjaXRlbUFkZGVkT2JzOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICB0aGlzLiNjbG9zZWRPYnMgPSB0aGlzLiNjbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jaXRlbUFkZGVkT2JzID0gdGhpcy4jaXRlbUFkZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGNsb3NlKGFyZ3M6IFNreVNlbGVjdGlvbk1vZGFsQ2xvc2VBcmdzKTogdm9pZCB7XG4gICAgdGhpcy4jY2xvc2VkLm5leHQoYXJncyk7XG4gICAgdGhpcy4jY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWRkSXRlbShpdGVtVG9BZGQ6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLiNpdGVtQWRkZWQubmV4dChpdGVtVG9BZGQpO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkySelectionModalComponent } from './selection-modal.component';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalInstance } from './types/selection-modal-instance';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/modals\";\n/**\n * Displays a modal for selecting one or more values.\n */\nexport class SkySelectionModalService {\n #modalSvc;\n constructor(modalSvc) {\n this.#modalSvc = modalSvc;\n }\n /**\n * Opens the selection modal.\n * @param args Parameters for the selection modal.\n */\n open(args) {\n const initialValue = args.value;\n const context = new SkySelectionModalContext(args.descriptorProperty, args.idProperty, args.initialSearch || '', initialValue || [], (searchArgs) => {\n return args.searchAsync({\n offset: searchArgs.offset,\n searchText: searchArgs.searchText,\n continuationData: searchArgs.continuationData,\n });\n }, args.selectMode, args.selectionDescriptor ||\n (args.selectMode === 'single' ? 'item' : 'items'), args.showAddButton || false, {\n itemTemplate: args.itemTemplate,\n title: args.title,\n });\n const modalInstance = this.#modalSvc.open(SkySelectionModalComponent, {\n providers: [\n {\n provide: SkySelectionModalContext,\n useValue: context,\n },\n ],\n size: 'large',\n wrapperClass: args.wrapperClass,\n });\n const instance = new SkySelectionModalInstance(modalInstance.componentInstance.id);\n instance.itemAdded\n .pipe(takeUntil(modalInstance.closed))\n .subscribe((item) => {\n modalInstance.componentInstance.addItem(item);\n });\n modalInstance.closed.subscribe((modalCloseArgs) => {\n let closeArgs;\n switch (modalCloseArgs.reason) {\n case 'save':\n closeArgs = {\n reason: 'save',\n selectedItems: modalCloseArgs.data.map((item) => item.itemData),\n };\n break;\n case 'cancel':\n closeArgs = { reason: 'cancel' };\n break;\n default:\n closeArgs = { reason: 'close' };\n }\n instance.close(closeArgs);\n });\n const selectionModal = modalInstance.componentInstance;\n selectionModal.addClick\n .pipe(takeUntil(modalInstance.closed))\n .subscribe(() => {\n if (args.addClick) {\n const addArgs = {\n itemAdded(args) {\n selectionModal.addItem(args.item);\n },\n };\n args.addClick(addArgs);\n }\n });\n return instance;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalService, deps: [{ token: i1.SkyModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyModalService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9zZWxlY3Rpb24tbW9kYWwvc2VsZWN0aW9uLW1vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQUc3RTs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsU0FBUyxDQUFrQjtJQUUzQixZQUFZLFFBQXlCO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxJQUFJLENBQUMsSUFBK0I7UUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUVoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLHdCQUF3QixDQUMxQyxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQ3hCLFlBQVksSUFBSSxFQUFFLEVBQ2xCLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtnQkFDekIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO2dCQUNqQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO2FBQzlDLENBQWlELENBQUM7UUFDckQsQ0FBQyxFQUNELElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLG1CQUFtQjtZQUN0QixDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNuRCxJQUFJLENBQUMsYUFBYSxJQUFJLEtBQUssRUFDM0I7WUFDRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQ0YsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ3BFLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxRQUFRLEVBQUUsT0FBTztpQkFDbEI7YUFDRjtZQUNELElBQUksRUFBRSxPQUFPO1lBQ2IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLElBQUkseUJBQXlCLENBQzVDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQ25DLENBQUM7UUFFRixRQUFRLENBQUMsU0FBUzthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFTCxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ2hELElBQUksU0FBcUMsQ0FBQztZQUUxQyxRQUFRLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsS0FBSyxNQUFNO29CQUNULFNBQVMsR0FBRzt3QkFDVixNQUFNLEVBQUUsTUFBTTt3QkFDZCxhQUFhLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ3BDLENBQUMsSUFBMkIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDL0M7cUJBQ0YsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ2pDLE1BQU07Z0JBQ1I7b0JBQ0UsU0FBUyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLENBQUM7WUFFRCxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBRXZELGNBQWMsQ0FBQyxRQUFRO2FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxPQUFPLEdBQXVDO29CQUNsRCxTQUFTLENBQUMsSUFBSTt3QkFDWixjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEMsQ0FBQztpQkFDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzsrR0FoR1Usd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jUmVzdWx0IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtYXN5bmMtcmVzdWx0JztcblxuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxBZGRDbGlja0V2ZW50QXJncyB9IGZyb20gJy4vdHlwZXMvc2VsZWN0aW9uLW1vZGFsLWFkZC1jbGljay1ldmVudC1hcmdzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsQ2xvc2VBcmdzIH0gZnJvbSAnLi90eXBlcy9zZWxlY3Rpb24tbW9kYWwtY2xvc2UtYXJncyc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQgfSBmcm9tICcuL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UgfSBmcm9tICcuL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbE9wZW5BcmdzIH0gZnJvbSAnLi90eXBlcy9zZWxlY3Rpb24tbW9kYWwtb3Blbi1hcmdzJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhIG1vZGFsIGZvciBzZWxlY3Rpbmcgb25lIG9yIG1vcmUgdmFsdWVzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VsZWN0aW9uTW9kYWxTZXJ2aWNlIHtcbiAgI21vZGFsU3ZjOiBTa3lNb2RhbFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IobW9kYWxTdmM6IFNreU1vZGFsU2VydmljZSkge1xuICAgIHRoaXMuI21vZGFsU3ZjID0gbW9kYWxTdmM7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIHNlbGVjdGlvbiBtb2RhbC5cbiAgICogQHBhcmFtIGFyZ3MgUGFyYW1ldGVycyBmb3IgdGhlIHNlbGVjdGlvbiBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBvcGVuKGFyZ3M6IFNreVNlbGVjdGlvbk1vZGFsT3BlbkFyZ3MpOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBhcmdzLnZhbHVlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBTa3lTZWxlY3Rpb25Nb2RhbENvbnRleHQoXG4gICAgICBhcmdzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGFyZ3MuaWRQcm9wZXJ0eSxcbiAgICAgIGFyZ3MuaW5pdGlhbFNlYXJjaCB8fCAnJyxcbiAgICAgIGluaXRpYWxWYWx1ZSB8fCBbXSxcbiAgICAgIChzZWFyY2hBcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBhcmdzLnNlYXJjaEFzeW5jKHtcbiAgICAgICAgICBvZmZzZXQ6IHNlYXJjaEFyZ3Mub2Zmc2V0LFxuICAgICAgICAgIHNlYXJjaFRleHQ6IHNlYXJjaEFyZ3Muc2VhcmNoVGV4dCxcbiAgICAgICAgICBjb250aW51YXRpb25EYXRhOiBzZWFyY2hBcmdzLmNvbnRpbnVhdGlvbkRhdGEsXG4gICAgICAgIH0pIGFzIE9ic2VydmFibGU8U2t5QXV0b2NvbXBsZXRlU2VhcmNoQXN5bmNSZXN1bHQ+O1xuICAgICAgfSxcbiAgICAgIGFyZ3Muc2VsZWN0TW9kZSxcbiAgICAgIGFyZ3Muc2VsZWN0aW9uRGVzY3JpcHRvciB8fFxuICAgICAgICAoYXJncy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJyA/ICdpdGVtJyA6ICdpdGVtcycpLFxuICAgICAgYXJncy5zaG93QWRkQnV0dG9uIHx8IGZhbHNlLFxuICAgICAge1xuICAgICAgICBpdGVtVGVtcGxhdGU6IGFyZ3MuaXRlbVRlbXBsYXRlLFxuICAgICAgICB0aXRsZTogYXJncy50aXRsZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IG1vZGFsSW5zdGFuY2UgPSB0aGlzLiNtb2RhbFN2Yy5vcGVuKFNreVNlbGVjdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFNreVNlbGVjdGlvbk1vZGFsQ29udGV4dCxcbiAgICAgICAgICB1c2VWYWx1ZTogY29udGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgd3JhcHBlckNsYXNzOiBhcmdzLndyYXBwZXJDbGFzcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNreVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoXG4gICAgICBtb2RhbEluc3RhbmNlLmNvbXBvbmVudEluc3RhbmNlLmlkLFxuICAgICk7XG5cbiAgICBpbnN0YW5jZS5pdGVtQWRkZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbChtb2RhbEluc3RhbmNlLmNsb3NlZCkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtKSA9PiB7XG4gICAgICAgIG1vZGFsSW5zdGFuY2UuY29tcG9uZW50SW5zdGFuY2UuYWRkSXRlbShpdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgbW9kYWxJbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKChtb2RhbENsb3NlQXJncykgPT4ge1xuICAgICAgbGV0IGNsb3NlQXJnczogU2t5U2VsZWN0aW9uTW9kYWxDbG9zZUFyZ3M7XG5cbiAgICAgIHN3aXRjaCAobW9kYWxDbG9zZUFyZ3MucmVhc29uKSB7XG4gICAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICAgIGNsb3NlQXJncyA9IHtcbiAgICAgICAgICAgIHJlYXNvbjogJ3NhdmUnLFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogbW9kYWxDbG9zZUFyZ3MuZGF0YS5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiB7IGl0ZW1EYXRhOiB1bmtub3duIH0pID0+IGl0ZW0uaXRlbURhdGEsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgICAgY2xvc2VBcmdzID0geyByZWFzb246ICdjYW5jZWwnIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2xvc2VBcmdzID0geyByZWFzb246ICdjbG9zZScgfTtcbiAgICAgIH1cblxuICAgICAgaW5zdGFuY2UuY2xvc2UoY2xvc2VBcmdzKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGlvbk1vZGFsID0gbW9kYWxJbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZTtcblxuICAgIHNlbGVjdGlvbk1vZGFsLmFkZENsaWNrXG4gICAgICAucGlwZSh0YWtlVW50aWwobW9kYWxJbnN0YW5jZS5jbG9zZWQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmFkZENsaWNrKSB7XG4gICAgICAgICAgY29uc3QgYWRkQXJnczogU2t5U2VsZWN0aW9uTW9kYWxBZGRDbGlja0V2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIGl0ZW1BZGRlZChhcmdzKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGFsLmFkZEl0ZW0oYXJncy5pdGVtKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGFyZ3MuYWRkQ2xpY2soYWRkQXJncyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyLookupAdapterService {\n focusInput(elRef) {\n const inputEl = elRef.nativeElement.querySelector('.sky-lookup-input');\n /* Sanity check */\n /* istanbul ignore else */\n if (inputEl) {\n inputEl.focus();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupAdapterService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAtYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQUMzQixVQUFVLENBQUMsS0FBaUI7UUFDakMsTUFBTSxPQUFPLEdBQ1gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV6RCxrQkFBa0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7K0dBVlUsdUJBQXVCO21IQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBBZGFwdGVyU2VydmljZSB7XG4gIHB1YmxpYyBmb2N1c0lucHV0KGVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbDogSFRNTEVsZW1lbnQgPVxuICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LWxvb2t1cC1pbnB1dCcpO1xuXG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgaW5wdXRFbC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19","import { Directive, EventEmitter, Input, Output, } from '@angular/core';\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyLookupAutocompleteAdapter {\n constructor() {\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable. The event is also fired\n * when the \"Show more\" picker is opened without search text.\n */\n this.searchAsync = new EventEmitter();\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n this.#_descriptorProperty = 'name';\n this.#_propertiesToSearch = ['name'];\n }\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n set descriptorProperty(value) {\n this.#_descriptorProperty = value || 'name';\n }\n get descriptorProperty() {\n return this.#_descriptorProperty;\n }\n /**\n * The array of object properties to search when utilizing the `data` property and the built-in search function.\n * @default [\"name\"]\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n set propertiesToSearch(value) {\n this.#_propertiesToSearch = value ?? ['name'];\n this.#updateDefaultSearchOptions();\n }\n get propertiesToSearch() {\n return this.#_propertiesToSearch;\n }\n /**\n * The function that dynamically manages the data to display in search results when users\n * change the text in the lookup field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n set search(value) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n get search() {\n return this.#_search;\n }\n /**\n * The array of functions to call against each search result in order\n * to filter the search results when using the `data` input and the default search function. When\n * using a custom search function via the `search` property filters must be\n * applied manually inside that function. The function must return `true` or\n * `false` for each result to indicate whether to display it in the dropdown list.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n set searchFilters(value) {\n this.#_searchFilters = value;\n this.#updateDefaultSearchOptions();\n }\n get searchFilters() {\n return this.#_searchFilters;\n }\n #_descriptorProperty;\n #_propertiesToSearch;\n #_search;\n #_searchFilters;\n #updateDefaultSearchOptions() {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupAutocompleteAdapter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyLookupAutocompleteAdapter, isStandalone: true, inputs: { debounceTime: \"debounceTime\", descriptorProperty: \"descriptorProperty\", propertiesToSearch: \"propertiesToSearch\", search: \"search\", searchResultTemplate: \"searchResultTemplate\", searchTextMinimumCharacters: \"searchTextMinimumCharacters\", searchFilters: \"searchFilters\", searchResultsLimit: \"searchResultsLimit\" }, outputs: { searchAsync: \"searchAsync\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupAutocompleteAdapter, decorators: [{\n type: Directive\n }], propDecorators: { debounceTime: [{\n type: Input\n }], descriptorProperty: [{\n type: Input\n }], propertiesToSearch: [{\n type: Input\n }], search: [{\n type: Input\n }], searchResultTemplate: [{\n type: Input\n }], searchTextMinimumCharacters: [{\n type: Input\n }], searchFilters: [{\n type: Input\n }], searchResultsLimit: [{\n type: Input\n }], searchAsync: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWF1dG9jb21wbGV0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC1hdXRvY29tcGxldGUtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOztBQUs1Rzs7R0FFRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFEekM7UUE4R0U7Ozs7V0FJRztRQUVJLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtDLENBQUM7UUFFakUsb0JBQWUsR0FBRyxvQ0FBb0MsQ0FBQztZQUM1RCxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUM1QixhQUFhLEVBQUUsU0FBUztTQUN6QixDQUFDLENBQUM7UUFFSCx5QkFBb0IsR0FBRyxNQUFNLENBQUM7UUFFOUIseUJBQW9CLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQWVqQztJQWxJQzs7OztPQUlHO0lBQ0gsSUFDVyxrQkFBa0IsQ0FBQyxLQUF5QjtRQUNyRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUNXLGtCQUFrQixDQUFDLEtBQTJCO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQWdEO1FBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlO1lBQ2xCLEtBQUs7Z0JBQ0wsb0NBQW9DLENBQUM7b0JBQ25DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtpQkFDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBbUJEOzs7Ozs7O09BT0c7SUFDSCxJQUNXLGFBQWEsQ0FDdEIsS0FBd0Q7UUFFeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFFN0IsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUd0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQXVCRCxvQkFBb0IsQ0FBVTtJQUU5QixvQkFBb0IsQ0FBWTtJQUVoQyxRQUFRLENBQTRDO0lBRXBELGVBQWUsQ0FBb0Q7SUFFbkUsMkJBQTJCO1FBQ3pCLG9EQUFvRDtRQUNwRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsb0NBQW9DLENBQUM7Z0JBQzFELGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQzNDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzsrR0ExSVUsNEJBQTRCO21HQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFNBQVM7O3NCQU9QLEtBQUs7O3NCQVFMLEtBQUs7O3NCQWNMLEtBQUs7O3NCQWtCTCxLQUFLOztzQkFvQkwsS0FBSzs7c0JBU0wsS0FBSzs7c0JBV0wsS0FBSzs7c0JBb0JMLEtBQUs7O3NCQVFMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24gfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWRlZmF1bHQtc2VhcmNoLWZ1bmN0aW9uJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWFzeW5jLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24gfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbic7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlciB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWZ1bmN0aW9uLWZpbHRlcic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXIge1xuICAvKipcbiAgICogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNlYXJjaGluZyB3aGlsZSB1c2Vyc1xuICAgKiBlbnRlciB0ZXh0IGluIHRoZSBsb29rdXAgZmllbGQuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWJvdW5jZVRpbWU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCBwcm9wZXJ0eSB0byBkaXNwbGF5IGluIHRoZSB0ZXh0IGlucHV0IGFmdGVyIHVzZXJzXG4gICAqIHNlbGVjdCBhbiBpdGVtIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBAZGVmYXVsdCBcIm5hbWVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZXNjcmlwdG9yUHJvcGVydHkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kZXNjcmlwdG9yUHJvcGVydHkgPSB2YWx1ZSB8fCAnbmFtZSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0b3JQcm9wZXJ0eSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfZGVzY3JpcHRvclByb3BlcnR5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhcnJheSBvZiBvYmplY3QgcHJvcGVydGllcyB0byBzZWFyY2ggd2hlbiB1dGlsaXppbmcgdGhlIGBkYXRhYCBwcm9wZXJ0eSBhbmQgdGhlIGJ1aWx0LWluIHNlYXJjaCBmdW5jdGlvbi5cbiAgICogQGRlZmF1bHQgW1wibmFtZVwiXVxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBzZWFyY2hBc3luY2AgZXZlbnQgZW1pdHRlciBhbmQgY2FsbGJhY2sgaW5zdGVhZCB0byBwcm92aWRlIGRhdGEgdG8gdGhlIGxvb2t1cCBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb3BlcnRpZXNUb1NlYXJjaCh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfcHJvcGVydGllc1RvU2VhcmNoID0gdmFsdWUgPz8gWyduYW1lJ107XG5cbiAgICB0aGlzLiN1cGRhdGVEZWZhdWx0U2VhcmNoT3B0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9wZXJ0aWVzVG9TZWFyY2goKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLiNfcHJvcGVydGllc1RvU2VhcmNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IGR5bmFtaWNhbGx5IG1hbmFnZXMgdGhlIGRhdGEgdG8gZGlzcGxheSBpbiBzZWFyY2ggcmVzdWx0cyB3aGVuIHVzZXJzXG4gICAqIGNoYW5nZSB0aGUgdGV4dCBpbiB0aGUgbG9va3VwIGZpZWxkLiBUaGUgc2VhcmNoIGZ1bmN0aW9uIG11c3QgcmV0dXJuXG4gICAqIGFuIGFycmF5IG9yIGEgcHJvbWlzZSBvZiBhbiBhcnJheS4gVGhlIGBzZWFyY2hgIHByb3BlcnR5IGlzIHBhcnRpY3VsYXJseVxuICAgKiB1c2VmdWwgd2hlbiB0aGUgZGF0YSBzb3VyY2UgZG9lcyBub3QgbGl2ZSBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYHNlYXJjaEFzeW5jYCBldmVudCBlbWl0dGVyIGFuZCBjYWxsYmFjayBpbnN0ZWFkIHRvIHByb3ZpZGUgc2VhcmNoZWQgZGF0YSB0byB0aGUgbG9va3VwIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoKHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWFyY2ggPSB2YWx1ZTtcbiAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCA9XG4gICAgICB2YWx1ZSB8fFxuICAgICAgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiB0aGlzLnByb3BlcnRpZXNUb1NlYXJjaCxcbiAgICAgICAgc2VhcmNoRmlsdGVyczogdGhpcy5zZWFyY2hGaWx0ZXJzLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaCgpOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2g7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHRoYXQgZm9ybWF0cyBlYWNoIG9wdGlvbiBpbiB0aGUgZHJvcGRvd24gbGlzdC4gVGhlIGxvb2t1cCBjb21wb25lbnRcbiAgICogaW5qZWN0cyB2YWx1ZXMgaW50byB0aGUgdGVtcGxhdGUgYXMgYGl0ZW1gIHZhcmlhYmxlcyB0aGF0IHJlZmVyZW5jZSBhbGwgb2YgdGhlIG9iamVjdFxuICAgKiBwcm9wZXJ0aWVzIG9mIHRoZSBzZWFyY2ggcmVzdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdXNlcnMgbXVzdCBlbnRlciBiZWZvcmVcbiAgICogdGhlIGxvb2t1cCBjb21wb25lbnQgc2VhcmNoZXMgdGhlIGRhdGEgc291cmNlIGFuZCBkaXNwbGF5cyBzZWFyY2ggcmVzdWx0c1xuICAgKiBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYWdhaW5zdCBlYWNoIHNlYXJjaCByZXN1bHQgaW4gb3JkZXJcbiAgICogdG8gZmlsdGVyIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHVzaW5nIHRoZSBgZGF0YWAgaW5wdXQgYW5kIHRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbi4gV2hlblxuICAgKiB1c2luZyBhIGN1c3RvbSBzZWFyY2ggZnVuY3Rpb24gdmlhIHRoZSBgc2VhcmNoYCBwcm9wZXJ0eSBmaWx0ZXJzIG11c3QgYmVcbiAgICogYXBwbGllZCBtYW51YWxseSBpbnNpZGUgdGhhdCBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGB0cnVlYCBvclxuICAgKiBgZmFsc2VgIGZvciBlYWNoIHJlc3VsdCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGRpc3BsYXkgaXQgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYHNlYXJjaEFzeW5jYCBldmVudCBlbWl0dGVyIGFuZCBjYWxsYmFjayBpbnN0ZWFkIHRvIHByb3ZpZGUgc2VhcmNoZWQgZGF0YSB0byB0aGUgbG9va3VwIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoRmlsdGVycyhcbiAgICB2YWx1ZTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgdGhpcy4jX3NlYXJjaEZpbHRlcnMgPSB2YWx1ZTtcblxuICAgIHRoaXMuI3VwZGF0ZURlZmF1bHRTZWFyY2hPcHRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaEZpbHRlcnMoKTpcbiAgICB8IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyW11cbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWFyY2hGaWx0ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93blxuICAgKiBsaXN0LiBCeSBkZWZhdWx0LCB0aGUgbG9va3VwIGNvbXBvbmVudCBkaXNwbGF5cyBhbGwgbWF0Y2hpbmcgcmVzdWx0cy5cbiAgICogVGhpcyBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0IG9uIHRoZSByZXN1bHRzIGluIHRoZSBcIlNob3cgbW9yZVwiIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRzTGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBlbnRlciBuZXcgc2VhcmNoIGluZm9ybWF0aW9uIGFuZCBhbGxvd3MgcmVzdWx0cyB0byBiZVxuICAgKiByZXR1cm5lZCB2aWEgYW4gb2JzZXJ2YWJsZS4gVGhlIGV2ZW50IGlzIGFsc28gZmlyZWRcbiAgICogd2hlbiB0aGUgXCJTaG93IG1vcmVcIiBwaWNrZXIgaXMgb3BlbmVkIHdpdGhvdXQgc2VhcmNoIHRleHQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlYXJjaEFzeW5jID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3M+KCk7XG5cbiAgcHVibGljIHNlYXJjaE9yRGVmYXVsdCA9IHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbih7XG4gICAgcHJvcGVydGllc1RvU2VhcmNoOiBbJ25hbWUnXSxcbiAgICBzZWFyY2hGaWx0ZXJzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gICNfZGVzY3JpcHRvclByb3BlcnR5ID0gJ25hbWUnO1xuXG4gICNfcHJvcGVydGllc1RvU2VhcmNoID0gWyduYW1lJ107XG5cbiAgI19zZWFyY2g6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNfc2VhcmNoRmlsdGVyczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJbXSB8IHVuZGVmaW5lZDtcblxuICAjdXBkYXRlRGVmYXVsdFNlYXJjaE9wdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgZGVmYXVsdCBzZWFyY2ggaWYgaXQgaXMgd2hhdCBpcyBiZWluZyB1c2VkLlxuICAgIGlmICh0aGlzLnNlYXJjaCAhPT0gdGhpcy5zZWFyY2hPckRlZmF1bHQpIHtcbiAgICAgIHRoaXMuc2VhcmNoT3JEZWZhdWx0ID0gc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiB0aGlzLnByb3BlcnRpZXNUb1NlYXJjaCxcbiAgICAgICAgc2VhcmNoRmlsdGVyczogdGhpcy5zZWFyY2hGaWx0ZXJzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n constructor(descriptorProperty, initialSearch, initialValue, items, search, selectMode, showAddButton, userConfig) {\n this.descriptorProperty = descriptorProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.items = items;\n this.search = search;\n this.selectMode = selectMode;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9DQUFvQztJQWlCL0MsWUFDRSxrQkFBMEIsRUFDMUIsYUFBcUIsRUFDckIsWUFBbUIsRUFDbkIsS0FBWSxFQUNaLE1BQXFDLEVBQ3JDLFVBQW1DLEVBQ25DLGFBQXNCLEVBQ3RCLFVBQStDO1FBRS9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWZ1bmN0aW9uJztcblxuaW1wb3J0IHsgU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfSBmcm9tICcuL2xvb2t1cC1zZWxlY3QtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLW5hdGl2ZS1waWNrZXItY29uZmlnJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIENvbnRleHQgZm9yIHRoZSBzaG93IG1vcmUgbmF0aXZlIHBpY2tlci4gVGhlc2UgdmFsdWVzIGFyZSBwcm92aWRlZCBieSB0aGUgbG9va3VwIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB7XG4gIHB1YmxpYyBkZXNjcmlwdG9yUHJvcGVydHk6IHN0cmluZztcblxuICBwdWJsaWMgaW5pdGlhbFNlYXJjaDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpbml0aWFsVmFsdWU6IGFueVtdO1xuXG4gIHB1YmxpYyBpdGVtczogYW55W107XG5cbiAgcHVibGljIHNlYXJjaDogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb247XG5cbiAgcHVibGljIHNlbGVjdE1vZGU6IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlO1xuXG4gIHB1YmxpYyBzaG93QWRkQnV0dG9uOiBib29sZWFuO1xuXG4gIHB1YmxpYyB1c2VyQ29uZmlnOiBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHN0cmluZyxcbiAgICBpbml0aWFsU2VhcmNoOiBzdHJpbmcsXG4gICAgaW5pdGlhbFZhbHVlOiBhbnlbXSxcbiAgICBpdGVtczogYW55W10sXG4gICAgc2VhcmNoOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbixcbiAgICBzZWxlY3RNb2RlOiBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZSxcbiAgICBzaG93QWRkQnV0dG9uOiBib29sZWFuLFxuICAgIHVzZXJDb25maWc6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29uZmlnLFxuICApIHtcbiAgICB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSA9IGRlc2NyaXB0b3JQcm9wZXJ0eTtcbiAgICB0aGlzLmluaXRpYWxTZWFyY2ggPSBpbml0aWFsU2VhcmNoO1xuICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlO1xuICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLnNlYXJjaCA9IHNlYXJjaDtcbiAgICB0aGlzLnNlbGVjdE1vZGUgPSBzZWxlY3RNb2RlO1xuICAgIHRoaXMuc2hvd0FkZEJ1dHRvbiA9IHNob3dBZGRCdXR0b247XG4gICAgdGhpcy51c2VyQ29uZmlnID0gdXNlckNvbmZpZztcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';\nimport { SkyIdService, SkyLiveAnnouncerService, SkyViewkeeperModule, } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { Subject, take } from 'rxjs';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/icon\";\nimport * as i4 from \"@skyux/lists\";\nimport * as i5 from \"@skyux/modals\";\nimport * as i6 from \"../search/search.component\";\nimport * as i7 from \"@skyux/layout\";\nimport * as i8 from \"@skyux/core\";\nimport * as i9 from \"@skyux/i18n\";\n/**\n * @internal\n * Internal component to implement the native picker.\n */\nexport class SkyLookupShowMoreModalComponent {\n #itemIndex;\n #ngUnsubscribe;\n #changeDetector;\n #idSvc;\n #liveAnnouncerSvc;\n #resourcesSvc;\n constructor() {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n this.addClick = new Subject();\n this.items = [];\n this.itemsLoading = false;\n this.dataManagerConfig = {\n sortOptions: [\n {\n id: 'az',\n label: 'Alphabetical (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Alphabetical (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n this.displayedItems = [];\n this.itemsHaveMore = false;\n this.onlyShowSelected = false;\n this.repeaterItemTemplate = null;\n this.searchText = '';\n this.selectedItems = [];\n this.#itemIndex = 0;\n this.#ngUnsubscribe = new Subject();\n this.modalInstance = inject(SkyModalInstance);\n this.context = inject(SkyLookupShowMoreNativePickerContext);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#idSvc = inject(SkyIdService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.id = this.#idSvc.generateId();\n }\n ngAfterViewInit() {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n void this.addItems();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n addButtonClicked() {\n this.addClick.next();\n }\n async addItems() {\n this.itemsLoading = true;\n if (!this.items || this.items.length === 0) {\n const selectedItems = this.selectedItems.slice();\n this.items = this.context.items.map((item) => {\n return {\n value: item,\n selected: false,\n };\n });\n this.items.forEach((item) => {\n const isInitialValue = this.context.initialValue === item.value;\n const initialIsArray = Array.isArray(this.context.initialValue);\n const initialValueContainsItem = this.context.initialValue.findIndex((initialItem) => initialItem === item.value) >= 0;\n if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n item.selected = true;\n const itemIndex = this.items.indexOf(item);\n if (selectedItems.findIndex((selectedItem) => selectedItem.index === itemIndex) < 0) {\n selectedItems.push({ index: itemIndex, itemData: item.value });\n }\n }\n });\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n // if onlyShowSelected is checked, then only iterate through the initial selection\n const items = this.onlyShowSelected\n ? this.items.filter((item) => item.selected)\n : this.items;\n this.#itemIndex = this.#itemIndex + 10;\n const searchedItems = await this.searchItems(items);\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n }\n else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n this.#announceSelectionState(this.selectedItems.length, this.displayedItems.length);\n this.#changeDetector.markForCheck();\n }\n async clearAll() {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n itemClick(selectedItem) {\n if (this.context.selectMode === 'single') {\n void this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n onItemSelect(newSelectState, itemToSelect) {\n const items = this.items;\n if (this.context.selectMode === 'single') {\n /* Sanity check - single select mode should only alow for a `true` select state */\n /* istanbul ignore else */\n if (newSelectState) {\n itemToSelect.selected = true;\n items.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n this.displayedItems.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n const itemIndex = items.findIndex((item) => item.value === itemToSelect.value);\n this.selectedItems = [\n { index: itemIndex, itemData: items[itemIndex].value },\n ];\n }\n }\n else {\n const selectedItems = this.selectedItems;\n const allItemsIndex = items.findIndex((item) => item.value === itemToSelect.value);\n const selectedItemsIndex = selectedItems.findIndex((selectedItem) => selectedItem.index === allItemsIndex);\n if (newSelectState && selectedItemsIndex === -1) {\n selectedItems.push({\n index: allItemsIndex,\n itemData: items[allItemsIndex].value,\n });\n }\n else if (!newSelectState && selectedItemsIndex !== -1) {\n selectedItems.splice(selectedItemsIndex, 1);\n }\n this.selectedItems = selectedItems;\n }\n void this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n searchApplied(searchText) {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.#itemIndex = 10;\n this.modalInstance.scrollContentToTop();\n }\n this.searchText = searchText;\n this.itemsLoading = true;\n this.#changeDetector.detectChanges();\n // We need to ensure that the scroll event makes it all the way through the infinite scroll workflow before updating the data state.\n // Without this, the infinite scroll can add items improperly because it can see the above scroll after the items finish searching.\n setTimeout(() => {\n void this.updateDataState();\n }, 100);\n }\n searchItems(items) {\n const searchText = this.searchText;\n if (searchText) {\n const resultValues = this.context.search(searchText, items.map((item) => {\n return item.value;\n }), { context: 'modal' });\n if (resultValues instanceof Array) {\n const result = items.filter((item) => resultValues.indexOf(item.value) >= 0);\n return Promise.resolve(result);\n }\n else {\n return resultValues.then((values) => {\n const result = items.filter((item) => values.indexOf(item.value) >= 0);\n return Promise.resolve(result);\n });\n }\n }\n else {\n return Promise.resolve(items);\n }\n }\n async selectAll() {\n const items = this.items;\n const selectedItems = this.selectedItems;\n this.displayedItems.forEach((item) => {\n if (!item.selected) {\n item.selected = true;\n const index = items.indexOf(item);\n /* istanbul ignore else */\n if (selectedItems.findIndex((selectedItem) => selectedItem.index === index) < 0) {\n selectedItems.push({\n index: index,\n itemData: items[index].value,\n });\n }\n }\n });\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n async updateDataState() {\n const items = this.items;\n const selectedItems = this.selectedItems;\n items?.forEach((item, index) => {\n item.selected =\n selectedItems.findIndex((selectedItem) => selectedItem.index === index) !== -1;\n });\n let searchedItems = await this.searchItems(items);\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\n }\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n }\n else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n this.#announceSelectionState(selectedItems.length, this.displayedItems.length);\n this.#changeDetector.markForCheck();\n }\n async updateItemData(data) {\n this.context.items = data;\n this.items = [];\n this.#itemIndex = 10;\n this.selectedItems.forEach((selectedItem) => {\n this.context.items.forEach((item, index) => {\n if (selectedItem.itemData === item) {\n selectedItem.index = index;\n }\n });\n });\n await this.addItems();\n this.#changeDetector.markForCheck();\n }\n #announceSelectionState(selectedItemCount, displayedItemCount) {\n this.#resourcesSvc\n .getString('skyux_lookup_show_more_displayed_items_updated', selectedItemCount.toString(), displayedItemCount.toString())\n .pipe(take(1))\n .subscribe((resourcesString) => {\n this.#liveAnnouncerSvc.announce(resourcesString);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupShowMoreModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyLookupShowMoreModalComponent, isStandalone: true, selector: \"sky-lookup-show-more-modal\", ngImport: i0, template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.userConfig.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [labelText]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDataState()\\\"\\n />\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater class=\\\"sky-lookup-show-more-repeater\\\" expandMode=\\\"none\\\">\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n #repeaterItem\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n [(isSelected)]=\\\"item.selected\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: {\\n item: item.value,\\n checkboxId:\\n context.selectMode === 'multiple'\\n ? 'sky-checkbox-' +\\n repeaterItem.contentId +\\n '-item-checkbox-input'\\n : undefined\\n }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"itemsHaveMore\\\"\\n [loading]=\\\"itemsLoading\\\"\\n (scrollEnd)=\\\"addItems()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"modalInstance.save(selectedItems)\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\" let-checkboxId=\\\"checkboxId\\\">\\n @if (checkboxId) {\\n <label class=\\\"selection-modal-item-label\\\" [attr.for]=\\\"checkboxId\\\">{{\\n item[context.descriptorProperty]\\n }}</label>\\n } @else {\\n {{ item[context.descriptorProperty] }}\\n }\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}label.selection-modal-item-label{display:block}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: SkyCheckboxModule }, { kind: \"component\", type: i2.λ3, selector: \"sky-checkbox\", inputs: [\"label\", \"labelledBy\", \"id\", \"disabled\", \"tabindex\", \"name\", \"helpPopoverContent\", \"helpPopoverTitle\", \"iconName\", \"checkboxType\", \"checked\", \"indeterminate\", \"required\", \"labelText\", \"labelHidden\", \"hintText\", \"stacked\", \"helpKey\"], outputs: [\"change\", \"checkedChange\", \"disabledChange\", \"indeterminateChange\"] }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i3.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"ngmodule\", type: SkyInfiniteScrollModule }, { kind: \"component\", type: i4.λ6, selector: \"sky-infinite-scroll\", inputs: [\"enabled\", \"loading\"], outputs: [\"scrollEnd\"] }, { kind: \"ngmodule\", type: SkyLookupResourcesModule }, { kind: \"ngmodule\", type: SkyModalModule }, { kind: \"component\", type: i5.λ5, selector: \"sky-modal\", inputs: [\"formErrors\", \"headingText\", \"helpKey\", \"helpPopoverContent\", \"helpPopoverTitle\", \"ariaRole\", \"tiledBody\", \"ariaDescribedBy\", \"ariaLabelledBy\", \"layout\"] }, { kind: \"component\", type: i5.λ2, selector: \"sky-modal-content\" }, { kind: \"component\", type: i5.λ3, selector: \"sky-modal-footer\" }, { kind: \"component\", type: i5.λ4, selector: \"sky-modal-header\" }, { kind: \"ngmodule\", type: SkyRepeaterModule }, { kind: \"component\", type: i4.λ11, selector: \"sky-repeater\", inputs: [\"activeIndex\", \"ariaLabel\", \"reorderable\", \"expandMode\"], outputs: [\"activeIndexChange\", \"orderChange\"] }, { kind: \"component\", type: i4.λ10, selector: \"sky-repeater-item\", inputs: [\"disabled\", \"itemName\", \"inlineFormConfig\", \"inlineFormTemplate\", \"isExpanded\", \"isSelected\", \"reorderable\", \"selectable\", \"showInlineForm\", \"tag\"], outputs: [\"collapse\", \"expand\", \"inlineFormClose\", \"isSelectedChange\"] }, { kind: \"component\", type: i4.λ8, selector: \"sky-repeater-item-content\" }, { kind: \"ngmodule\", type: SkySearchModule }, { kind: \"component\", type: i6.SkySearchComponent, selector: \"sky-search\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"searchText\", \"expandMode\", \"debounceTime\", \"disabled\", \"placeholderText\"], outputs: [\"searchApply\", \"searchChange\", \"searchClear\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"ngmodule\", type: SkyToolbarModule }, { kind: \"component\", type: i7.λ37, selector: \"sky-toolbar\", inputs: [\"listDescriptor\"] }, { kind: \"component\", type: i7.λ39, selector: \"sky-toolbar-item\" }, { kind: \"component\", type: i7.λ38, selector: \"sky-toolbar-section\" }, { kind: \"component\", type: i7.λ40, selector: \"sky-toolbar-view-actions\" }, { kind: \"ngmodule\", type: SkyViewkeeperModule }, { kind: \"directive\", type: i8.λ3, selector: \"[skyViewkeeper]\", inputs: [\"skyViewkeeper\", \"skyViewkeeperOmitShadow\"] }, { kind: \"pipe\", type: i9.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupShowMoreModalComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-lookup-show-more-modal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n ], template: \"<sky-modal\\n class=\\\"sky-lookup-show-more-modal\\\"\\n [attr.id]=\\\"id\\\"\\n [ngClass]=\\\"'sky-lookup-show-more-modal-' + context.selectMode\\\"\\n>\\n <sky-modal-header>\\n @if (context.userConfig?.title) {\\n {{ context.userConfig.title }}\\n } @else {\\n {{\\n 'skyux_lookup_show_more_modal_title'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n }}\\n }\\n </sky-modal-header>\\n <sky-modal-content\\n [skyViewkeeper]=\\\"['.sky-lookup-show-more-toolbar-wrapper']\\\"\\n >\\n <div class=\\\"sky-lookup-show-more-toolbar-wrapper\\\">\\n <sky-toolbar\\n class=\\\"sky-lookup-show-more-modal-toolbar\\\"\\n [listDescriptor]=\\\"context.userConfig.selectionDescriptor\\\"\\n >\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <sky-search\\n [debounceTime]=\\\"250\\\"\\n [searchText]=\\\"searchText\\\"\\n (searchApply)=\\\"searchApplied($event)\\\"\\n />\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n @if (context.showAddButton) {\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_add_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"addButtonClicked()\\\"\\n >\\n <sky-icon iconName=\\\"add\\\" />\\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\\n </button>\\n }\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n @if (context.selectMode === 'multiple') {\\n <sky-toolbar class=\\\"sky-lookup-show-more-modal-multiselect-toolbar\\\">\\n <sky-toolbar-section>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"selectAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_select_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-item>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_clear_all_button_aria_label'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"clearAll()\\\"\\n >\\n {{\\n 'skyux_lookup_show_more_clear_all_button_title'\\n | skyLibResources\\n }}\\n </button>\\n </sky-toolbar-item>\\n <sky-toolbar-view-actions>\\n <sky-checkbox\\n [labelText]=\\\"\\n 'skyux_lookup_show_more_show_selected_option_title'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n [(checked)]=\\\"onlyShowSelected\\\"\\n (change)=\\\"updateDataState()\\\"\\n />\\n </sky-toolbar-view-actions>\\n </sky-toolbar-section>\\n </sky-toolbar>\\n }\\n </div>\\n @if (displayedItems.length === 0) {\\n <div class=\\\"sky-font-deemphasized sky-lookup-show-more-no-results\\\">\\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\\n </div>\\n }\\n <sky-repeater class=\\\"sky-lookup-show-more-repeater\\\" expandMode=\\\"none\\\">\\n @for (item of displayedItems; track item) {\\n <sky-repeater-item\\n #repeaterItem\\n [selectable]=\\\"context.selectMode === 'multiple'\\\"\\n [(isSelected)]=\\\"item.selected\\\"\\n (click)=\\\"itemClick(item)\\\"\\n (keyup.enter)=\\\"itemClick(item)\\\"\\n (isSelectedChange)=\\\"onItemSelect($event, item)\\\"\\n >\\n <sky-repeater-item-content>\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n repeaterItemTemplate ?? defaultItemTemplate;\\n context: {\\n item: item.value,\\n checkboxId:\\n context.selectMode === 'multiple'\\n ? 'sky-checkbox-' +\\n repeaterItem.contentId +\\n '-item-checkbox-input'\\n : undefined\\n }\\n \\\"\\n />\\n </sky-repeater-item-content>\\n </sky-repeater-item>\\n }\\n </sky-repeater>\\n <sky-infinite-scroll\\n [enabled]=\\\"itemsHaveMore\\\"\\n [loading]=\\\"itemsLoading\\\"\\n (scrollEnd)=\\\"addItems()\\\"\\n />\\n </sky-modal-content>\\n <sky-modal-footer>\\n <button\\n class=\\\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_show_more_select_context'\\n | skyLibResources: context.userConfig.selectionDescriptor\\n \\\"\\n (click)=\\\"modalInstance.save(selectedItems)\\\"\\n >\\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\\n </button>\\n <button\\n class=\\\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\\\"\\n type=\\\"button\\\"\\n (click)=\\\"modalInstance.close()\\\"\\n >\\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\\n </button>\\n </sky-modal-footer>\\n</sky-modal>\\n\\n<ng-template #defaultItemTemplate let-item=\\\"item\\\" let-checkboxId=\\\"checkboxId\\\">\\n @if (checkboxId) {\\n <label class=\\\"selection-modal-item-label\\\" [attr.for]=\\\"checkboxId\\\">{{\\n item[context.descriptorProperty]\\n }}</label>\\n } @else {\\n {{ item[context.descriptorProperty] }}\\n }\\n</ng-template>\\n\", styles: [\".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}label.selection-modal-item-label{display:block}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUdULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxl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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FyV1UsK0JBQStCO21HQUEvQiwrQkFBK0Isc0ZDckQ1Qyxzak1BeUtBLDZTRGpJSSxZQUFZLG1TQUNaLGlCQUFpQiw4WkFDakIsYUFBYSxxSUFDYix1QkFBdUIsMkpBQ3ZCLHdCQUF3Qiw4QkFDeEIsY0FBYyxvY0FDZCxpQkFBaUIsb2tCQUNqQixlQUFlLHVSQUNmLGNBQWMsOEJBQ2QsZ0JBQWdCLDRVQUNoQixtQkFBbUI7OzRGQUdWLCtCQUErQjtrQkFuQjNDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUlkU2VydmljZSxcbiAgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UsXG4gIFNreVZpZXdrZWVwZXJNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUNoZWNrYm94TW9kdWxlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuaW1wb3J0IHsgU2t5SW5maW5pdGVTY3JvbGxNb2R1bGUsIFNreVJlcGVhdGVyTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xpc3RzJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UsIFNreU1vZGFsTW9kdWxlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoTW9kdWxlIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5TG9va3VwUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1sb29rdXAtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogSW50ZXJuYWwgY29tcG9uZW50IHRvIGltcGxlbWVudCB0aGUgbmF0aXZlIHBpY2tlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvb2t1cC1zaG93LW1vcmUtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5Q2hlY2tib3hNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lJbmZpbml0ZVNjcm9sbE1vZHVsZSxcbiAgICBTa3lMb29rdXBSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5TW9kYWxNb2R1bGUsXG4gICAgU2t5UmVwZWF0ZXJNb2R1bGUsXG4gICAgU2t5U2VhcmNoTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICAgIFNreVRvb2xiYXJNb2R1bGUsXG4gICAgU2t5Vmlld2tlZXBlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG5ldyBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgcHVibGljIGFkZENsaWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogVXNlZCB0byBhc3NvY2lhdGUgdGhpcyBtb2RhbCB3aXRoIGl0cyBvd25pbmcgbG9va3VwIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpdGVtczogYW55W10gPSBbXTtcblxuICBwdWJsaWMgaXRlbXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGRhdGFNYW5hZ2VyQ29uZmlnID0ge1xuICAgIHNvcnRPcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnYXonLFxuICAgICAgICBsYWJlbDogJ0FscGhhYmV0aWNhbCAoQSAtIFopJyxcbiAgICAgICAgZGVzY2VuZGluZzogZmFsc2UsXG4gICAgICAgIHByb3BlcnR5TmFtZTogJ25hbWUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICd6YScsXG4gICAgICAgIGxhYmVsOiAnQWxwaGFiZXRpY2FsIChaIC0gQSknLFxuICAgICAgICBkZXNjZW5kaW5nOiB0cnVlLFxuICAgICAgICBwcm9wZXJ0eU5hbWU6ICduYW1lJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICBwdWJsaWMgZGlzcGxheWVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGl0ZW1zSGF2ZU1vcmUgPSBmYWxzZTtcblxuICBwdWJsaWMgb25seVNob3dTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZXBlYXRlckl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgc2VhcmNoVGV4dCA9ICcnO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiB7IGluZGV4OiBudW1iZXI7IGl0ZW1EYXRhOiBhbnkgfVtdID0gW107XG5cbiAgI2l0ZW1JbmRleCA9IDA7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kYWxJbnN0YW5jZSA9IGluamVjdChTa3lNb2RhbEluc3RhbmNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3QoU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0KTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2lkU3ZjID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyU3ZjID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlcGVhdGVySXRlbVRlbXBsYXRlID0gdGhpcy5jb250ZXh0LnVzZXJDb25maWcuaXRlbVRlbXBsYXRlIHx8IG51bGw7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5jb250ZXh0LmluaXRpYWxTZWFyY2g7XG4gICAgdm9pZCB0aGlzLmFkZEl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSXRlbXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pdGVtc0xvYWRpbmcgPSB0cnVlO1xuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogYW55W10gPSB0aGlzLnNlbGVjdGVkSXRlbXMuc2xpY2UoKTtcblxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuY29udGV4dC5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzSW5pdGlhbFZhbHVlOiBib29sZWFuID1cbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlID09PSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGluaXRpYWxJc0FycmF5OiBib29sZWFuID0gQXJyYXkuaXNBcnJheShcbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW5pdGlhbFZhbHVlLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWVDb250YWluc0l0ZW06IGJvb2xlYW4gPVxuICAgICAgICAgIHRoaXMuY29udGV4dC5pbml0aWFsVmFsdWUuZmluZEluZGV4KFxuICAgICAgICAgICAgKGluaXRpYWxJdGVtOiBhbnkpID0+IGluaXRpYWxJdGVtID09PSBpdGVtLnZhbHVlLFxuICAgICAgICAgICkgPj0gMDtcblxuICAgICAgICBpZiAoaXNJbml0aWFsVmFsdWUgfHwgKGluaXRpYWxJc0FycmF5ICYmIGluaXRpYWxWYWx1ZUNvbnRhaW5zSXRlbSkpIHtcbiAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gaXRlbUluZGV4LFxuICAgICAgICAgICAgKSA8IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCh7IGluZGV4OiBpdGVtSW5kZXgsIGl0ZW1EYXRhOiBpdGVtLnZhbHVlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gaWYgb25seVNob3dTZWxlY3RlZCBpcyBjaGVja2VkLCB0aGVuIG9ubHkgaXRlcmF0ZSB0aHJvdWdoIHRoZSBpbml0aWFsIHNlbGVjdGlvblxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5vbmx5U2hvd1NlbGVjdGVkXG4gICAgICA/IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNlbGVjdGVkKVxuICAgICAgOiB0aGlzLml0ZW1zO1xuXG4gICAgdGhpcy4jaXRlbUluZGV4ID0gdGhpcy4jaXRlbUluZGV4ICsgMTA7XG5cbiAgICBjb25zdCBzZWFyY2hlZEl0ZW1zID0gYXdhaXQgdGhpcy5zZWFyY2hJdGVtcyhpdGVtcyk7XG5cbiAgICB0aGlzLmRpc3BsYXllZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5zbGljZSgwLCB0aGlzLiNpdGVtSW5kZXgpO1xuXG4gICAgaWYgKHRoaXMuI2l0ZW1JbmRleCA+IHNlYXJjaGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtc0hhdmVNb3JlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pdGVtc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuI2Fubm91bmNlU2VsZWN0aW9uU3RhdGUoXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5sZW5ndGgsXG4gICAgKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNsZWFyQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGlzcGxheWVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlRGF0YVN0YXRlKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaXRlbUNsaWNrKHNlbGVjdGVkSXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdm9pZCB0aGlzLm9uSXRlbVNlbGVjdCghc2VsZWN0ZWRJdGVtLnNlbGVjdGVkLCBzZWxlY3RlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3QobmV3U2VsZWN0U3RhdGU6IGJvb2xlYW4sIGl0ZW1Ub1NlbGVjdDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dC5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgLyogU2FuaXR5IGNoZWNrIC0gc2luZ2xlIHNlbGVjdCBtb2RlIHNob3VsZCBvbmx5IGFsb3cgZm9yIGEgYHRydWVgIHNlbGVjdCBzdGF0ZSAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSkge1xuICAgICAgICBpdGVtVG9TZWxlY3Quc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0udmFsdWUgIT09IGl0ZW1Ub1NlbGVjdC52YWx1ZSkge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnZhbHVlICE9PSBpdGVtVG9TZWxlY3QudmFsdWUpIHtcbiAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGl0ZW1Ub1NlbGVjdC52YWx1ZSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW1xuICAgICAgICAgIHsgaW5kZXg6IGl0ZW1JbmRleCwgaXRlbURhdGE6IGl0ZW1zW2l0ZW1JbmRleF0udmFsdWUgfSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtczogeyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogYW55IH1bXSA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcztcbiAgICAgIGNvbnN0IGFsbEl0ZW1zSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBpdGVtVG9TZWxlY3QudmFsdWUsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtc0luZGV4ID0gc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pbmRleCA9PT0gYWxsSXRlbXNJbmRleCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChuZXdTZWxlY3RTdGF0ZSAmJiBzZWxlY3RlZEl0ZW1zSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGFsbEl0ZW1zSW5kZXgsXG4gICAgICAgICAgaXRlbURhdGE6IGl0ZW1zW2FsbEl0ZW1zSW5kZXhdLnZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoIW5ld1NlbGVjdFN0YXRlICYmIHNlbGVjdGVkSXRlbXNJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5zcGxpY2Uoc2VsZWN0ZWRJdGVtc0luZGV4LCAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICB9XG5cbiAgICB2b2lkIHRoaXMudXBkYXRlRGF0YVN0YXRlKCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoQXBwbGllZChzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlYXJjaFRleHQgIT09IHNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuI2l0ZW1JbmRleCA9IDEwO1xuICAgICAgdGhpcy5tb2RhbEluc3RhbmNlLnNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xuICAgIHRoaXMuaXRlbXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzY3JvbGwgZXZlbnQgbWFrZXMgaXQgYWxsIHRoZSB3YXkgdGhyb3VnaCB0aGUgaW5maW5pdGUgc2Nyb2xsIHdvcmtmbG93IGJlZm9yZSB1cGRhdGluZyB0aGUgZGF0YSBzdGF0ZS5cbiAgICAvLyBXaXRob3V0IHRoaXMsIHRoZSBpbmZpbml0ZSBzY3JvbGwgY2FuIGFkZCBpdGVtcyBpbXByb3Blcmx5IGJlY2F1c2UgaXQgY2FuIHNlZSB0aGUgYWJvdmUgc2Nyb2xsIGFmdGVyIHRoZSBpdGVtcyBmaW5pc2ggc2VhcmNoaW5nLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoSXRlbXMoaXRlbXM6IGFueVtdKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaFRleHQ7XG5cbiAgICBpZiAoc2VhcmNoVGV4dCkge1xuICAgICAgY29uc3QgcmVzdWx0VmFsdWVzID0gdGhpcy5jb250ZXh0LnNlYXJjaChcbiAgICAgICAgc2VhcmNoVGV4dCxcbiAgICAgICAgaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gICAgICAgIH0pLFxuICAgICAgICB7IGNvbnRleHQ6ICdtb2RhbCcgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHRWYWx1ZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW0pID0+IHJlc3VsdFZhbHVlcy5pbmRleE9mKGl0ZW0udmFsdWUpID49IDAsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHRWYWx1ZXMudGhlbigodmFsdWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+IHZhbHVlcy5pbmRleE9mKGl0ZW0udmFsdWUpID49IDAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VsZWN0QWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcztcblxuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXM6IHsgaW5kZXg6IG51bWJlcjsgaXRlbURhdGE6IGFueSB9W10gPVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmluZGV4T2YoaXRlbSk7XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAgICAgKHNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmluZGV4ID09PSBpbmRleCxcbiAgICAgICAgICApIDwgMFxuICAgICAgICApIHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgaXRlbURhdGE6IGl0ZW1zW2luZGV4XS52YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcztcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURhdGFTdGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXM7XG5cbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zOiB7IGluZGV4OiBudW1iZXI7IGl0ZW1EYXRhOiBhbnkgfVtdID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcztcblxuICAgIGl0ZW1zPy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPVxuICAgICAgICBzZWxlY3RlZEl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaW5kZXggPT09IGluZGV4LFxuICAgICAgICApICE9PSAtMTtcbiAgICB9KTtcblxuICAgIGxldCBzZWFyY2hlZEl0ZW1zID0gYXdhaXQgdGhpcy5zZWFyY2hJdGVtcyhpdGVtcyk7XG5cbiAgICBpZiAodGhpcy5vbmx5U2hvd1NlbGVjdGVkKSB7XG4gICAgICBzZWFyY2hlZEl0ZW1zID0gc2VhcmNoZWRJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkSXRlbXMgPSBzZWFyY2hlZEl0ZW1zLnNsaWNlKDAsIHRoaXMuI2l0ZW1JbmRleCk7XG5cbiAgICBpZiAodGhpcy4jaXRlbUluZGV4ID4gc2VhcmNoZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXRlbXNIYXZlTW9yZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zSGF2ZU1vcmUgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy4jYW5ub3VuY2VTZWxlY3Rpb25TdGF0ZShcbiAgICAgIHNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgdGhpcy5kaXNwbGF5ZWRJdGVtcy5sZW5ndGgsXG4gICAgKTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUl0ZW1EYXRhKGRhdGE6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb250ZXh0Lml0ZW1zID0gZGF0YTtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gICAgdGhpcy4jaXRlbUluZGV4ID0gMTA7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKHNlbGVjdGVkSXRlbSkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0Lml0ZW1zLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtLml0ZW1EYXRhID09PSBpdGVtKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5hZGRJdGVtcygpO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjYW5ub3VuY2VTZWxlY3Rpb25TdGF0ZShcbiAgICBzZWxlY3RlZEl0ZW1Db3VudDogbnVtYmVyLFxuICAgIGRpc3BsYXllZEl0ZW1Db3VudDogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNvdXJjZXNTdmNcbiAgICAgIC5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2Rpc3BsYXllZF9pdGVtc191cGRhdGVkJyxcbiAgICAgICAgc2VsZWN0ZWRJdGVtQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgZGlzcGxheWVkSXRlbUNvdW50LnRvU3RyaW5nKCksXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzU3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuI2xpdmVBbm5vdW5jZXJTdmMuYW5ub3VuY2UocmVzb3VyY2VzU3RyaW5nKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8c2t5LW1vZGFsXG4gIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWxcIlxuICBbYXR0ci5pZF09XCJpZFwiXG4gIFtuZ0NsYXNzXT1cIidza3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC0nICsgY29udGV4dC5zZWxlY3RNb2RlXCJcbj5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAgQGlmIChjb250ZXh0LnVzZXJDb25maWc/LnRpdGxlKSB7XG4gICAgICB7eyBjb250ZXh0LnVzZXJDb25maWcudGl0bGUgfX1cbiAgICB9IEBlbHNlIHtcbiAgICAgIHt7XG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX21vZGFsX3RpdGxlJ1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgfX1cbiAgICB9XG4gIDwvc2t5LW1vZGFsLWhlYWRlcj5cbiAgPHNreS1tb2RhbC1jb250ZW50XG4gICAgW3NreVZpZXdrZWVwZXJdPVwiWycuc2t5LWxvb2t1cC1zaG93LW1vcmUtdG9vbGJhci13cmFwcGVyJ11cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS1sb29rdXAtc2hvdy1tb3JlLXRvb2xiYXItd3JhcHBlclwiPlxuICAgICAgPHNreS10b29sYmFyXG4gICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtdG9vbGJhclwiXG4gICAgICAgIFtsaXN0RGVzY3JpcHRvcl09XCJjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclwiXG4gICAgICA+XG4gICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICAgICAgW2RlYm91bmNlVGltZV09XCIyNTBcIlxuICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgKHNlYXJjaEFwcGx5KT1cInNlYXJjaEFwcGxpZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgQGlmIChjb250ZXh0LnNob3dBZGRCdXR0b24pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfYWRkX2J1dHRvbl9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogY29udGV4dC51c2VyQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRCdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiYWRkXCIgLz5cbiAgICAgICAgICAgICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9hZGQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICA8L3NreS10b29sYmFyPlxuICAgICAgQGlmIChjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgPHNreS10b29sYmFyIGNsYXNzPVwic2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtbXVsdGlzZWxlY3QtdG9vbGJhclwiPlxuICAgICAgICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLXNlbGVjdC1hbGwtYnRuXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfc2VsZWN0X2FsbF9idXR0b25fYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNvbnRleHQudXNlckNvbmZpZy5zZWxlY3Rpb25EZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLWNsZWFyLWFsbC1idG5cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9jbGVhcl9hbGxfYnV0dG9uX2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX2NsZWFyX2FsbF9idXR0b25fdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICAgICAgICA8c2t5LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX3RpdGxlJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogY29udGV4dC51c2VyQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFsoY2hlY2tlZCldPVwib25seVNob3dTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVEYXRhU3RhdGUoKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICAgIDwvc2t5LXRvb2xiYXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChkaXNwbGF5ZWRJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktZm9udC1kZWVtcGhhc2l6ZWQgc2t5LWxvb2t1cC1zaG93LW1vcmUtbm8tcmVzdWx0c1wiPlxuICAgICAgICB7eyAnc2t5dXhfbG9va3VwX3Nob3dfbW9yZV9ub19yZXN1bHRzJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxza3ktcmVwZWF0ZXIgY2xhc3M9XCJza3ktbG9va3VwLXNob3ctbW9yZS1yZXBlYXRlclwiIGV4cGFuZE1vZGU9XCJub25lXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIGRpc3BsYXllZEl0ZW1zOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIDxza3ktcmVwZWF0ZXItaXRlbVxuICAgICAgICAgICNyZXBlYXRlckl0ZW1cbiAgICAgICAgICBbc2VsZWN0YWJsZV09XCJjb250ZXh0LnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSdcIlxuICAgICAgICAgIFsoaXNTZWxlY3RlZCldPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIml0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgICAgKGlzU2VsZWN0ZWRDaGFuZ2UpPVwib25JdGVtU2VsZWN0KCRldmVudCwgaXRlbSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcmVwZWF0ZXJJdGVtVGVtcGxhdGUgPz8gZGVmYXVsdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgY2hlY2tib3hJZDpcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnc2t5LWNoZWNrYm94LScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZXJJdGVtLmNvbnRlbnRJZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnLWl0ZW0tY2hlY2tib3gtaW5wdXQnXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudD5cbiAgICAgICAgPC9za3ktcmVwZWF0ZXItaXRlbT5cbiAgICAgIH1cbiAgICA8L3NreS1yZXBlYXRlcj5cbiAgICA8c2t5LWluZmluaXRlLXNjcm9sbFxuICAgICAgW2VuYWJsZWRdPVwiaXRlbXNIYXZlTW9yZVwiXG4gICAgICBbbG9hZGluZ109XCJpdGVtc0xvYWRpbmdcIlxuICAgICAgKHNjcm9sbEVuZCk9XCJhZGRJdGVtcygpXCJcbiAgICAvPlxuICA8L3NreS1tb2RhbC1jb250ZW50PlxuICA8c2t5LW1vZGFsLWZvb3Rlcj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5IHNreS1tYXJnaW4taW5saW5lLWNvbXBhY3Qgc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtc2F2ZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdF9jb250ZXh0J1xuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBjb250ZXh0LnVzZXJDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvclxuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJtb2RhbEluc3RhbmNlLnNhdmUoc2VsZWN0ZWRJdGVtcylcIlxuICAgID5cbiAgICAgIHt7ICdza3l1eF9sb29rdXBfc2hvd19tb3JlX3NlbGVjdCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLWNsb3NlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm1vZGFsSW5zdGFuY2UuY2xvc2UoKVwiXG4gICAgPlxuICAgICAge3sgJ3NreXV4X2xvb2t1cF9zaG93X21vcmVfY2FuY2VsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvYnV0dG9uPlxuICA8L3NreS1tb2RhbC1mb290ZXI+XG48L3NreS1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1jaGVja2JveElkPVwiY2hlY2tib3hJZFwiPlxuICBAaWYgKGNoZWNrYm94SWQpIHtcbiAgICA8bGFiZWwgY2xhc3M9XCJzZWxlY3Rpb24tbW9kYWwtaXRlbS1sYWJlbFwiIFthdHRyLmZvcl09XCJjaGVja2JveElkXCI+e3tcbiAgICAgIGl0ZW1bY29udGV4dC5kZXNjcmlwdG9yUHJvcGVydHldXG4gICAgfX08L2xhYmVsPlxuICB9IEBlbHNlIHtcbiAgICB7eyBpdGVtW2NvbnRleHQuZGVzY3JpcHRvclByb3BlcnR5XSB9fVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewEncapsulation, booleanAttribute, inject, } from '@angular/core';\nimport { SkyAppWindowRef, SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyTokensMessageType, } from '@skyux/indicators';\nimport { SkyModalService } from '@skyux/modals';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkySelectionModalService } from '../selection-modal/selection-modal.service';\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"../autocomplete/autocomplete.component\";\nimport * as i6 from \"../autocomplete/autocomplete-input.directive\";\nimport * as i7 from \"@skyux/icon\";\nimport * as i8 from \"@skyux/indicators\";\nimport * as i9 from \"@skyux/i18n\";\nexport class SkyLookupComponent extends SkyLookupAutocompleteAdapter {\n /**\n * The data source for the lookup component to search when users\n * enter text. You can specify static data, such as an array of objects, or\n * you can pull data from a database.\n *\n * @default []\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n set data(value) {\n this.#_data = value;\n if (this.#openNativePicker && !this.#hasSearchAsync()) {\n this.#openNativePicker.componentInstance.updateItemData(value);\n }\n }\n get data() {\n return this.#_data || [];\n }\n /**\n * Whether the lookup field is required.\n * @default false\n */\n set required(value) {\n this.#_required = value;\n this.inputBoxHostSvc?.setRequired(value);\n }\n get required() {\n return this.#_required;\n }\n /**\n * The ability for users to select one option or multiple options.\n * @default \"multiple\"\n */\n set selectMode(value) {\n const multipleToSingle = value === 'single' && this.selectMode === 'multiple';\n this.#_selectMode = value;\n this.#updateForSelectMode();\n if (multipleToSingle) {\n const value = this.#getValue();\n if (value?.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.#setValue([value[0]], { emitEvent: true });\n this.#changeDetector.detectChanges();\n });\n }\n }\n }\n get selectMode() {\n return this.#_selectMode || 'multiple';\n }\n get tokens() {\n return this.#_tokens;\n }\n set tokens(tokens) {\n const value = this.#getValue();\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && value.length > 5) {\n this.#resourcesService\n .getString('skyux_lookup_tokens_summary', value.length.toString())\n .pipe(take(1))\n .subscribe((label) => {\n this.#_tokens = [\n {\n value: { [this.descriptorProperty]: label },\n },\n ];\n this.#changeDetector.markForCheck();\n });\n }\n else {\n this.#_tokens = tokens;\n this.#changeDetector.markForCheck();\n }\n }\n /**\n * @internal\n * @deprecated This is exposed for unit tests only; refactor unit tests to\n * derive the control value a different way.\n */\n get value() {\n return this.#getValue();\n }\n set autocompleteInputDirective(value) {\n this.#_autocompleteInputDirective = value;\n this.#updateForSelectMode();\n }\n get autocompleteInputDirective() {\n return this.#_autocompleteInputDirective;\n }\n #idle;\n #markForTokenFocusOnKeyUp;\n #ngUnsubscribe;\n #notifyChange;\n #notifyTouched;\n #openNativePicker;\n #openSelectionModal;\n #_required;\n #_autocompleteInputDirective;\n #_data;\n #_selectMode;\n #_tokens;\n #_value;\n #adapter;\n #changeDetector;\n #elementRef;\n #idService;\n #logSvc;\n #modalService;\n #resourcesService;\n #selectionModalSvc;\n #windowRef;\n #getValue() {\n return this.#_value ? this.#_value : [];\n }\n #setValue(newValue, options) {\n this.#_value = newValue;\n if (this.selectMode === 'multiple' && !this.#pickerModalOpen()) {\n this.tokens = this.#parseTokens(newValue);\n }\n if (options.emitEvent) {\n this.#notifyChange?.(this.#_value);\n }\n this.#updateForSelectMode();\n }\n constructor(ngControl, inputBoxHostSvc, themeSvc) {\n super();\n this.inputBoxHostSvc = inputBoxHostSvc;\n this.themeSvc = themeSvc;\n /**\n * Whether to disable the lookup field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n this.disabled = false;\n /**\n * Whether to enable users to open a picker where they can view all options.\n * @default false\n */\n this.enableShowMore = false;\n /**\n * Whether to display a button that lets users add options to the list.\n * @default false\n */\n this.showAddButton = false;\n /**\n * Fires when users select the button to add options to the list.\n */\n this.addClick = new EventEmitter();\n /**\n * @internal\n */\n this.openChange = new EventEmitter();\n /**\n * @internal\n */\n this.selectionModalOpenChange = new EventEmitter();\n this.autocompleteController = new Subject();\n this.isInputFocused = false;\n this.tokensController = new Subject();\n this.#idle = new Subject();\n this.#markForTokenFocusOnKeyUp = false;\n this.#ngUnsubscribe = new Subject();\n this.#_required = false;\n this.#adapter = inject(SkyLookupAdapterService);\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#elementRef = inject(ElementRef);\n this.#idService = inject(SkyIdService);\n this.#logSvc = inject(SkyLogService);\n this.#modalService = inject(SkyModalService);\n this.#resourcesService = inject(SkyLibResourcesService);\n this.#selectionModalSvc = inject(SkySelectionModalService);\n this.#windowRef = inject(SkyAppWindowRef);\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n ngOnInit() {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.controlId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n });\n this.inputBoxHostSvc?.setRequired(this.required);\n }\n else {\n this.controlId = this.#idService.generateId();\n }\n /* istanbul ignore else */\n if (this.themeSvc) {\n // This is required for the autocomplete directive to be set after elements\n // are rearranged when switching themes.\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngAfterViewInit() {\n if (!this.disabled) {\n this.#addEventListeners();\n }\n }\n ngOnDestroy() {\n this.#removeEventListeners();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.addClick.complete();\n this.openChange.complete();\n this.tokensController.complete();\n }\n addButtonClicked() {\n this.addClick.emit({\n itemAdded: (args) => this.#onAddButtonComplete(args),\n });\n }\n onAutocompleteSelectionChange(change) {\n if (change.selectedItem) {\n this.#addToSelected(change.selectedItem);\n }\n else {\n this.#setValue([], { emitEvent: true });\n }\n }\n onAutocompleteBlur() {\n this.#notifyTouched?.();\n }\n onTokensChange(change) {\n if (!change) {\n return;\n }\n if (this.tokens !== change) {\n if (change.length === 0) {\n this.#focusInput();\n }\n this.tokens = change;\n const value = change.map((token) => {\n return token.value;\n });\n this.#setValue(value, { emitEvent: true });\n }\n }\n onTokensFocusIndexOverRange() {\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#focusInput();\n });\n }\n onTokensKeyUp(event) {\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Backspace':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n event.preventDefault();\n break;\n case 'Del':\n case 'Delete':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n });\n event.preventDefault();\n break;\n }\n }\n }\n onTokensRendered() {\n this.#sendAutocompleteMessage(SkyAutocompleteMessageType.RepositionDropdown);\n }\n writeValue(value) {\n // Since we are dealing with arrays - clone the array being sent in to ensure we aren't modifying a consumers outer array\n this.#setValue(value ? value.slice() : [], { emitEvent: false });\n }\n registerOnChange(fn) {\n this.#notifyChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n // Allows Angular to disable the input.\n setDisabledState(disabled) {\n this.#removeEventListeners();\n if (!disabled) {\n this.#addEventListeners();\n }\n this.disabled = disabled;\n this.#changeDetector.markForCheck();\n }\n clearSearchText() {\n if (this.autocompleteInputDirective) {\n this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = '';\n }\n }\n // Handles when to focus on the tokens.\n // Check for empty search text on keydown, before the escape key is fully pressed.\n // (Otherwise, a single character being escaped would register as empty on keyup.)\n // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n inputKeydown(event) {\n const value = event.target.value;\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n if (value) {\n this.#markForTokenFocusOnKeyUp = false;\n }\n else {\n this.#markForTokenFocusOnKeyUp = true;\n }\n break;\n default:\n }\n }\n }\n inputKeyup(event) {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n this.clearSearchText();\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n /* istanbul ignore else */\n if (this.#markForTokenFocusOnKeyUp) {\n this.#sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n event.preventDefault();\n }\n break;\n default:\n }\n event.stopPropagation();\n }\n }\n onSearchButtonClick() {\n /*istanbul ignore next*/\n if (this.disabled) {\n return;\n }\n this.#sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n let isValueInTextBox = false;\n if (this.selectMode === 'single') {\n isValueInTextBox =\n this.autocompleteInputDirective?.value &&\n this.autocompleteInputDirective.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n let searchValue = '';\n if (!isValueInTextBox && this.autocompleteInputDirective) {\n searchValue = this.autocompleteInputDirective.inputTextValue;\n }\n this.openPicker(searchValue);\n this.autocompleteInputDirective?.restoreInputTextValueToPreviousState();\n }\n onShowMoreClick(event) {\n /* Sanity check */\n /* istanbul ignore else*/\n if (event) {\n this.openPicker(event.inputValue);\n }\n }\n openPicker(initialSearch) {\n if (this.showMoreConfig?.customPicker) {\n this.showMorePickerId = undefined;\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch,\n initialValue: this.#getValue(),\n });\n }\n else {\n const initialValue = this.#getValue();\n this.selectionModalOpenChange.emit(true);\n if (this.#hasSearchAsync()) {\n this.#openSelectionModal =\n this.#createSelectionModalInstance(initialSearch);\n this.showMorePickerId = this.#openSelectionModal.id;\n this.#openSelectionModal.closed.subscribe((closeArgs) => {\n this.#processPickerResult(closeArgs.reason === 'save'\n ? closeArgs.selectedItems\n : initialValue);\n this.selectionModalOpenChange.emit(false);\n });\n }\n else {\n this.#openNativePicker =\n this.#createNativePickerInstance(initialSearch);\n this.showMorePickerId = this.#openNativePicker.componentInstance.id;\n this.#openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n this.#openNativePicker.closed.subscribe((closeArgs) => {\n let selectedItems;\n if (closeArgs.reason === 'save') {\n selectedItems = [];\n this.data.forEach((item, dataIndex) => {\n if (closeArgs.data.some((savedItem) => {\n return savedItem.index === dataIndex;\n })) {\n selectedItems.push(item);\n }\n });\n }\n else {\n selectedItems = initialValue;\n }\n this.#processPickerResult(selectedItems);\n this.selectionModalOpenChange.emit(false);\n });\n this.#changeDetector.markForCheck();\n }\n }\n }\n onAutocompleteOpenChange($event) {\n if ($event) {\n this.openChange.emit(true);\n }\n else if (!this.#pickerModalOpen()) {\n this.openChange.emit(false);\n }\n }\n onFocus($event) {\n $event.target.select();\n }\n #createSelectionModalInstance(initialSearch) {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n if (this.idProperty === undefined) {\n this.#logSvc.error(\"The lookup component's 'idProperty' input is required when `enableShowMore` and 'searchAsync' are used together.\");\n }\n return this.#selectionModalSvc.open({\n descriptorProperty: this.descriptorProperty,\n idProperty: this.idProperty,\n searchAsync: (args) => {\n const searchAsyncArgs = {\n displayType: 'modal',\n offset: args.offset,\n searchText: args.searchText,\n continuationData: args.continuationData,\n };\n this.searchAsync.emit(searchAsyncArgs);\n return searchAsyncArgs.result;\n },\n selectMode: this.selectMode,\n addClick: () => {\n this.addButtonClicked();\n },\n initialSearch,\n itemTemplate: modalConfig.itemTemplate,\n selectionDescriptor: modalConfig.selectionDescriptor,\n showAddButton: this.showAddButton,\n title: modalConfig.title,\n value: initialValue,\n wrapperClass: this.wrapperClass,\n });\n }\n #createNativePickerInstance(initialSearch) {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n if (!modalConfig.selectionDescriptor) {\n modalConfig.selectionDescriptor =\n this.selectMode === 'single' ? 'item' : 'items';\n }\n const contextProviderValue = new SkyLookupShowMoreNativePickerContext(this.descriptorProperty, initialSearch, initialValue, this.data, this.searchOrDefault, this.selectMode, this.showAddButton, modalConfig);\n return this.#modalService.open(SkyLookupShowMoreModalComponent, {\n providers: [\n {\n provide: SkyLookupShowMoreNativePickerContext,\n useValue: contextProviderValue,\n },\n {\n provide: SkyLookupAdapterService,\n useValue: this.#adapter,\n },\n ],\n size: 'large',\n wrapperClass: this.wrapperClass,\n });\n }\n #processPickerResult(selectedItems) {\n this.#openSelectionModal = undefined;\n this.#openNativePicker = undefined;\n this.showMorePickerId = undefined;\n /* istanbul ignore next */\n selectedItems = selectedItems || [];\n this.#setValue(selectedItems, { emitEvent: true });\n this.#focusInput();\n this.#changeDetector.markForCheck();\n }\n onSearchAsync(args) {\n this.searchAsync.emit(args);\n }\n #addToSelected(item) {\n const value = this.#getValue();\n let selectedItems;\n if (this.selectMode === 'single') {\n selectedItems = [item];\n }\n else {\n selectedItems = value;\n const idProperty = this.idProperty || '';\n // If items have a unique identifier, don't allow the same item to be added twice.\n if (!this.idProperty ||\n !value.some((existingItem) => existingItem[idProperty] === item[idProperty])) {\n selectedItems.push(item);\n }\n this.clearSearchText();\n }\n this.#setValue(selectedItems, { emitEvent: true });\n }\n #addEventListeners() {\n this.#idle = new Subject();\n this.#focusInputOnHostClick();\n }\n #removeEventListeners() {\n this.#idle.next();\n this.#idle.complete();\n }\n #focusInputOnHostClick() {\n let hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n const documentObj = this.#windowRef.nativeWindow.document;\n // Handles focusing the input when the host is clicked.\n // The input should NOT be focused if other elements (tokens, etc.)\n // are currently focused or being tabbed through.\n observableFromEvent(documentObj, 'click')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n this.#changeDetector.markForCheck();\n });\n observableFromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n this.#changeDetector.markForCheck();\n });\n if (hostElement) {\n observableFromEvent(hostElement, 'mouseup')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n const classList = documentObj.activeElement.classList;\n if (!classList || !classList.contains('sky-token')) {\n this.#focusInput();\n }\n });\n }\n }\n #focusInput() {\n if (this.lookupWrapperRef) {\n this.#adapter.focusInput(this.lookupWrapperRef);\n }\n }\n #onAddButtonComplete(args) {\n if (this.#openSelectionModal) {\n // Notify the selection modal of the new item. The selection\n // modal will decide whether the new item should be added\n // to the value when the user confirms or cancels the\n // selection modal.\n this.#openSelectionModal.addItem(args.item);\n }\n else {\n let addItemToValue;\n if (this.#hasSearchAsync()) {\n addItemToValue = true;\n }\n else {\n if (args.data) {\n this.data = args.data;\n }\n if (this.data.indexOf(args.item) >= 0) {\n if (this.#openNativePicker) {\n // Notify the picker of the new item. The picker will\n // decide whether the new item should be added to the\n // value when the user confirms or cancels the picker.\n this.#openNativePicker\n .componentInstance.onItemSelect(true, { value: args.item, selected: false });\n }\n else {\n addItemToValue = true;\n }\n }\n }\n if (addItemToValue) {\n const oldValue = this.#getValue();\n const newValue = this.selectMode === 'multiple'\n ? oldValue.concat(args.item)\n : [args.item];\n this.#setValue(newValue, { emitEvent: true });\n }\n }\n }\n #parseTokens(data) {\n return data.map((item) => {\n return {\n value: item,\n };\n });\n }\n #sendAutocompleteMessage(type) {\n this.autocompleteController.next({ type });\n }\n #sendTokensMessage(type) {\n this.tokensController.next({ type });\n }\n #updateForSelectMode() {\n if (this.autocompleteInputDirective) {\n if (this.selectMode === 'single') {\n const value = this.#getValue();\n this.autocompleteInputDirective.value = value && value[0];\n }\n else {\n this.clearSearchText();\n }\n }\n }\n #hasSearchAsync() {\n return this.searchAsync.observers.length > 0;\n }\n #pickerModalOpen() {\n return !!(this.#openNativePicker || this.#openSelectionModal);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyLookupComponent, isStandalone: false, selector: \"sky-lookup\", inputs: { ariaLabel: \"ariaLabel\", ariaLabelledBy: \"ariaLabelledBy\", autocompleteAttribute: \"autocompleteAttribute\", data: \"data\", disabled: [\"disabled\", \"disabled\", booleanAttribute], required: [\"required\", \"required\", booleanAttribute], enableShowMore: [\"enableShowMore\", \"enableShowMore\", booleanAttribute], placeholderText: \"placeholderText\", idProperty: \"idProperty\", showAddButton: [\"showAddButton\", \"showAddButton\", booleanAttribute], showMoreConfig: \"showMoreConfig\", selectMode: \"selectMode\", wrapperClass: \"wrapperClass\" }, outputs: { addClick: \"addClick\", openChange: \"openChange\", selectionModalOpenChange: \"selectionModalOpenChange\" }, providers: [SkyLookupAdapterService], viewQueries: [{ propertyName: \"autocompleteInputDirective\", first: true, predicate: SkyAutocompleteInputDirective, descendants: true, read: SkyAutocompleteInputDirective }, { propertyName: \"showMoreButtonTemplateRef\", first: true, predicate: [\"showMoreButtonTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"lookupWrapperRef\", first: true, predicate: [\"lookupWrapper\"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <div\\n #lookupWrapper\\n class=\\\"sky-lookup\\\"\\n [ngClass]=\\\"{\\n 'sky-lookup-focused': isInputFocused,\\n 'sky-lookup-disabled': disabled,\\n 'sky-lookup-single': selectMode === 'single'\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"ariaLabelledBy || inputBoxHostSvc?.labelId\\\"\\n [attr.data-sky-lookup-show-more-picker-id]=\\\"showMorePickerId\\\"\\n [data]=\\\"data\\\"\\n [debounceTime]=\\\"debounceTime\\\"\\n [descriptorProperty]=\\\"descriptorProperty\\\"\\n [enableShowMore]=\\\"enableShowMore\\\"\\n [messageStream]=\\\"autocompleteController\\\"\\n [propertiesToSearch]=\\\"propertiesToSearch\\\"\\n [search]=\\\"searchOrDefault\\\"\\n [searchAsyncDisabled]=\\\"searchAsync.observers.length === 0\\\"\\n [searchFilters]=\\\"searchFilters\\\"\\n [searchResultsLimit]=\\\"searchResultsLimit\\\"\\n [searchResultTemplate]=\\\"searchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n [showAddButton]=\\\"showAddButton\\\"\\n [wrapperClass]=\\\"wrapperClass\\\"\\n (addClick)=\\\"addButtonClicked()\\\"\\n (searchAsync)=\\\"onSearchAsync($event)\\\"\\n (selectionChange)=\\\"onAutocompleteSelectionChange($event)\\\"\\n (showMoreClick)=\\\"onShowMoreClick($event)\\\"\\n (openChange)=\\\"onAutocompleteOpenChange($event)\\\"\\n >\\n <div class=\\\"sky-lookup-search-flex-wrapper\\\">\\n <div\\n class=\\\"sky-lookup-search\\\"\\n [ngClass]=\\\"{\\n 'sky-field-status-active': isInputFocused && !disabled\\n }\\\"\\n >\\n @if (selectMode === 'multiple') {\\n <sky-tokens\\n class=\\\"sky-lookup-tokens\\\"\\n [disabled]=\\\"disabled\\\"\\n [displayWith]=\\\"descriptorProperty\\\"\\n [focusable]=\\\"false\\\"\\n [messageStream]=\\\"tokensController\\\"\\n [trackWith]=\\\"idProperty\\\"\\n [tokens]=\\\"tokens\\\"\\n (keyup)=\\\"onTokensKeyUp($event)\\\"\\n (tokensChange)=\\\"onTokensChange($event)\\\"\\n (tokensRendered)=\\\"onTokensRendered()\\\"\\n (tokenSelected)=\\\"enableShowMore ? openPicker('') : undefined\\\"\\n (focusIndexOverRange)=\\\"onTokensFocusIndexOverRange()\\\"\\n >\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (keydown)=\\\"inputKeydown($event)\\\"\\n (keyup)=\\\"inputKeyup($event)\\\"\\n ></textarea>\\n </sky-tokens>\\n } @else if (selectMode === 'single') {\\n <div class=\\\"sky-lookup-single-control\\\">\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n ></textarea>\\n </div>\\n }\\n </div>\\n @if (!inputBoxHostSvc && enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"showMoreButtonTemplateRef\\\" />\\n }\\n </div>\\n </sky-autocomplete>\\n </div>\\n</ng-template>\\n\\n<ng-template #showMoreButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"{ 'sky-btn-disabled': disabled }\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_search_button_show_more' | skyLibResources\\n \\\"\\n (click)=\\\"onSearchButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"search\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\", styles: [\".sky-lookup:not(.sky-theme-modern *){--sky-override-lookup-form-control-background-color: transparent;--sky-override-lookup-input-box-margin-top: 0;--sky-override-lookup-input-box-padding-top: 0;--sky-override-lookup-input-box-search-background-color: inherit;--sky-override-lookup-input-box-search-padding: 6px 12px 5px 3px;--sky-override-lookup-input-box-tokens-align-items: baseline;--sky-override-lookup-input-box-tokens-content-padding-left: 10px;--sky-override-lookup-search-background-color: #ffffff;--sky-override-lookup-search-border: 1px solid #cdcfd2;--sky-override-lookup-search-disabled-background-color: #cdcfd2;--sky-override-lookup-search-line-height: 1.428571429em;--sky-override-lookup-single-control-padding-left: 7px;--sky-override-lookup-textarea-padding-left: 0;--sky-override-lookup-token-margin-top: 0;--sky-override-lookup-tokens-margin-top: -5px;--sky-override-lookup-tokens-padding-left: 0;--sky-override-lookup-tokens-row-gap: 0}.sky-lookup .sky-lookup-input.sky-form-control{resize:none;box-sizing:content-box;overflow:hidden;padding:0;background-color:var(--sky-override-lookup-form-control-background-color, inherit);border:0}.sky-lookup .sky-lookup-input.sky-form-control:focus{outline:none;box-shadow:none}.sky-lookup .sky-lookup-search-flex-wrapper{display:flex}.sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-search-disabled-background-color, inherit)}.sky-lookup sky-tokens.sky-lookup-tokens:focus{outline:none}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{row-gap:var(--sky-override-lookup-tokens-row-gap, var(--sky-space-gap-action_group-s));margin-top:var(--sky-override-lookup-tokens-margin-top, -6px);margin-bottom:-5px}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{flex-basis:100px;padding-top:5px;padding-bottom:5px;padding-left:10px}.sky-lookup .sky-lookup-single-control{display:flex;padding-left:var(--sky-override-lookup-single-control-padding-left, inherit);width:100%}.sky-lookup-search{cursor:text;background-color:var(--sky-override-lookup-search-background-color, inherit);line-height:var(--sky-override-lookup-search-line-height, inherit);padding:6px 12px 6px 3px;flex-grow:1}.sky-lookup-search:not(.sky-field-status-active){border:var(--sky-override-lookup-search-border, var(--sky-border-width-input-base) solid var(--sky-color-border-action-input-base))}.sky-lookup-disabled .sky-lookup-search{cursor:default}.sky-lookup-focused .sky-tokens-content{flex-basis:100px}.sky-lookup-single sky-tokens.sky-lookup-tokens sky-token{display:none}sky-lookup.ng-invalid.ng-touched .sky-lookup-search{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}sky-input-box .sky-lookup{width:100%;margin-top:var(--sky-override-lookup-input-box-margin-top, calc(-1 * (var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom))));padding-top:var(--sky-override-lookup-input-box-padding-top, calc(var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom)))}sky-input-box .sky-lookup .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-background-color, transparent);border:none;padding:var(--sky-override-lookup-input-box-search-padding, inherit);width:100%}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens:has(sky-token){padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left))}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens:has(sky-token){padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left))}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}.sky-theme-modern sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i5.SkyAutocompleteComponent, selector: \"sky-autocomplete\", inputs: [\"ariaLabelledBy\", \"data\", \"debounceTime\", \"descriptorProperty\", \"dropdownHintText\", \"enableShowMore\", \"messageStream\", \"wrapperClass\", \"propertiesToSearch\", \"search\", \"searchResultTemplate\", \"searchTextMinimumCharacters\", \"searchFilters\", \"searchResultsLimit\", \"showAddButton\", \"noResultsFoundText\", \"searchAsyncDisabled\", \"allowAnyValue\", \"highlightSearchText\"], outputs: [\"addClick\", \"showMoreClick\", \"selectionChange\", \"searchAsync\", \"openChange\"] }, { kind: \"directive\", type: i6.SkyAutocompleteInputDirective, selector: \"input[skyAutocomplete], textarea[skyAutocomplete]\", inputs: [\"autocompleteAttribute\", \"disabled\"] }, { kind: \"component\", type: i7.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"component\", type: i8.λ13, selector: \"sky-tokens\", inputs: [\"disabled\", \"dismissible\", \"displayWith\", \"trackWith\", \"focusable\", \"tokens\", \"messageStream\"], outputs: [\"focusIndexOverRange\", \"focusIndexUnderRange\", \"tokenSelected\", \"tokensChange\", \"tokensRendered\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i9.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-lookup', providers: [SkyLookupAdapterService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"@if (!inputBoxHostSvc) {\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n}\\n\\n<ng-template #inputTemplateRef>\\n <div\\n #lookupWrapper\\n class=\\\"sky-lookup\\\"\\n [ngClass]=\\\"{\\n 'sky-lookup-focused': isInputFocused,\\n 'sky-lookup-disabled': disabled,\\n 'sky-lookup-single': selectMode === 'single'\\n }\\\"\\n >\\n <sky-autocomplete\\n [ariaLabelledBy]=\\\"ariaLabelledBy || inputBoxHostSvc?.labelId\\\"\\n [attr.data-sky-lookup-show-more-picker-id]=\\\"showMorePickerId\\\"\\n [data]=\\\"data\\\"\\n [debounceTime]=\\\"debounceTime\\\"\\n [descriptorProperty]=\\\"descriptorProperty\\\"\\n [enableShowMore]=\\\"enableShowMore\\\"\\n [messageStream]=\\\"autocompleteController\\\"\\n [propertiesToSearch]=\\\"propertiesToSearch\\\"\\n [search]=\\\"searchOrDefault\\\"\\n [searchAsyncDisabled]=\\\"searchAsync.observers.length === 0\\\"\\n [searchFilters]=\\\"searchFilters\\\"\\n [searchResultsLimit]=\\\"searchResultsLimit\\\"\\n [searchResultTemplate]=\\\"searchResultTemplate\\\"\\n [searchTextMinimumCharacters]=\\\"searchTextMinimumCharacters\\\"\\n [showAddButton]=\\\"showAddButton\\\"\\n [wrapperClass]=\\\"wrapperClass\\\"\\n (addClick)=\\\"addButtonClicked()\\\"\\n (searchAsync)=\\\"onSearchAsync($event)\\\"\\n (selectionChange)=\\\"onAutocompleteSelectionChange($event)\\\"\\n (showMoreClick)=\\\"onShowMoreClick($event)\\\"\\n (openChange)=\\\"onAutocompleteOpenChange($event)\\\"\\n >\\n <div class=\\\"sky-lookup-search-flex-wrapper\\\">\\n <div\\n class=\\\"sky-lookup-search\\\"\\n [ngClass]=\\\"{\\n 'sky-field-status-active': isInputFocused && !disabled\\n }\\\"\\n >\\n @if (selectMode === 'multiple') {\\n <sky-tokens\\n class=\\\"sky-lookup-tokens\\\"\\n [disabled]=\\\"disabled\\\"\\n [displayWith]=\\\"descriptorProperty\\\"\\n [focusable]=\\\"false\\\"\\n [messageStream]=\\\"tokensController\\\"\\n [trackWith]=\\\"idProperty\\\"\\n [tokens]=\\\"tokens\\\"\\n (keyup)=\\\"onTokensKeyUp($event)\\\"\\n (tokensChange)=\\\"onTokensChange($event)\\\"\\n (tokensRendered)=\\\"onTokensRendered()\\\"\\n (tokenSelected)=\\\"enableShowMore ? openPicker('') : undefined\\\"\\n (focusIndexOverRange)=\\\"onTokensFocusIndexOverRange()\\\"\\n >\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (keydown)=\\\"inputKeydown($event)\\\"\\n (keyup)=\\\"inputKeyup($event)\\\"\\n ></textarea>\\n </sky-tokens>\\n } @else if (selectMode === 'single') {\\n <div class=\\\"sky-lookup-single-control\\\">\\n <textarea\\n class=\\\"sky-form-control sky-lookup-input\\\"\\n rows=\\\"1\\\"\\n skyAutocomplete\\n wrap=\\\"off\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedBy | async\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"ariaLabelledBy\\\"\\n [attr.id]=\\\"controlId\\\"\\n [attr.placeholder]=\\\"placeholderText\\\"\\n [autocompleteAttribute]=\\\"autocompleteAttribute\\\"\\n [disabled]=\\\"disabled\\\"\\n (blur)=\\\"onAutocompleteBlur()\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n ></textarea>\\n </div>\\n }\\n </div>\\n @if (!inputBoxHostSvc && enableShowMore) {\\n <ng-container *ngTemplateOutlet=\\\"showMoreButtonTemplateRef\\\" />\\n }\\n </div>\\n </sky-autocomplete>\\n </div>\\n</ng-template>\\n\\n<ng-template #showMoreButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n class=\\\"sky-btn sky-btn-default\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"{ 'sky-btn-disabled': disabled }\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_lookup_search_button_show_more' | skyLibResources\\n \\\"\\n (click)=\\\"onSearchButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"search\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\", styles: [\".sky-lookup:not(.sky-theme-modern *){--sky-override-lookup-form-control-background-color: transparent;--sky-override-lookup-input-box-margin-top: 0;--sky-override-lookup-input-box-padding-top: 0;--sky-override-lookup-input-box-search-background-color: inherit;--sky-override-lookup-input-box-search-padding: 6px 12px 5px 3px;--sky-override-lookup-input-box-tokens-align-items: baseline;--sky-override-lookup-input-box-tokens-content-padding-left: 10px;--sky-override-lookup-search-background-color: #ffffff;--sky-override-lookup-search-border: 1px solid #cdcfd2;--sky-override-lookup-search-disabled-background-color: #cdcfd2;--sky-override-lookup-search-line-height: 1.428571429em;--sky-override-lookup-single-control-padding-left: 7px;--sky-override-lookup-textarea-padding-left: 0;--sky-override-lookup-token-margin-top: 0;--sky-override-lookup-tokens-margin-top: -5px;--sky-override-lookup-tokens-padding-left: 0;--sky-override-lookup-tokens-row-gap: 0}.sky-lookup .sky-lookup-input.sky-form-control{resize:none;box-sizing:content-box;overflow:hidden;padding:0;background-color:var(--sky-override-lookup-form-control-background-color, inherit);border:0}.sky-lookup .sky-lookup-input.sky-form-control:focus{outline:none;box-shadow:none}.sky-lookup .sky-lookup-search-flex-wrapper{display:flex}.sky-lookup.sky-lookup-disabled .sky-lookup-search{background-color:var(--sky-override-lookup-search-disabled-background-color, inherit)}.sky-lookup sky-tokens.sky-lookup-tokens:focus{outline:none}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{row-gap:var(--sky-override-lookup-tokens-row-gap, var(--sky-space-gap-action_group-s));margin-top:var(--sky-override-lookup-tokens-margin-top, -6px);margin-bottom:-5px}.sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{flex-basis:100px;padding-top:5px;padding-bottom:5px;padding-left:10px}.sky-lookup .sky-lookup-single-control{display:flex;padding-left:var(--sky-override-lookup-single-control-padding-left, inherit);width:100%}.sky-lookup-search{cursor:text;background-color:var(--sky-override-lookup-search-background-color, inherit);line-height:var(--sky-override-lookup-search-line-height, inherit);padding:6px 12px 6px 3px;flex-grow:1}.sky-lookup-search:not(.sky-field-status-active){border:var(--sky-override-lookup-search-border, var(--sky-border-width-input-base) solid var(--sky-color-border-action-input-base))}.sky-lookup-disabled .sky-lookup-search{cursor:default}.sky-lookup-focused .sky-tokens-content{flex-basis:100px}.sky-lookup-single sky-tokens.sky-lookup-tokens sky-token{display:none}sky-lookup.ng-invalid.ng-touched .sky-lookup-search{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}sky-input-box .sky-lookup{width:100%;margin-top:var(--sky-override-lookup-input-box-margin-top, calc(-1 * (var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom))));padding-top:var(--sky-override-lookup-input-box-padding-top, calc(var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom)))}sky-input-box .sky-lookup .sky-lookup-search{background-color:var(--sky-override-lookup-input-box-search-background-color, transparent);border:none;padding:var(--sky-override-lookup-input-box-search-padding, inherit);width:100%}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens:has(sky-token){padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left))}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}:host-context(.sky-theme-modern) sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}:host-context(.sky-theme-modern) sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}:host-context(.sky-theme-modern) sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens sky-token{z-index:1}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens{margin-top:0;margin-bottom:0;align-items:var(--sky-override-lookup-input-box-tokens-align-items, flex-start)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens:has(sky-token){padding-left:var(--sky-override-lookup-tokens-padding-left, var(--sky-comp-input-value-space-inset-left))}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens sky-token{padding-bottom:0;padding-top:0;margin-top:var(--sky-override-lookup-token-margin-top, -1px)}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content{padding-bottom:0;padding-top:0;padding-left:var(--sky-override-lookup-input-box-tokens-content-padding-left, var(--sky-space-gap-text_action-xs))}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens .sky-tokens .sky-tokens-content:first-child{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup sky-tokens.sky-lookup-tokens:has(sky-token) textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, 0)}.sky-theme-modern sky-input-box .sky-lookup.sky-lookup-single sky-tokens.sky-lookup-tokens .sky-tokens-content{padding-left:0}.sky-theme-modern sky-input-box .sky-lookup .sky-lookup-search.sky-field-status-active{box-shadow:none}.sky-theme-modern sky-input-box .sky-lookup textarea.sky-lookup-input.sky-form-control{padding-left:var(--sky-override-lookup-textarea-padding-left, var(--sky-comp-input-value-space-inset-left));resize:none}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: i2.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }], propDecorators: { ariaLabel: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], autocompleteAttribute: [{\n type: Input\n }], data: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], enableShowMore: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], placeholderText: [{\n type: Input\n }], idProperty: [{\n type: Input\n }], showAddButton: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showMoreConfig: [{\n type: Input\n }], selectMode: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], addClick: [{\n type: Output\n }], openChange: [{\n type: Output\n }], selectionModalOpenChange: [{\n type: Output\n }], autocompleteInputDirective: [{\n type: ViewChild,\n args: [SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n }]\n }], showMoreButtonTemplateRef: [{\n type: ViewChild,\n args: ['showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }], lookupWrapperRef: [{\n type: ViewChild,\n args: ['lookupWrapper', {\n read: ElementRef,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL2xvb2t1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRSxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBSTdGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxD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QUMsMkJBQTJCLEVBQUU7d0JBQ3RDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjs7c0JBR0EsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiOztzQkFHQSxTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYsIFNreUlkU2VydmljZSwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7XG4gIFNreVRva2VuLFxuICBTa3lUb2tlbnNNZXNzYWdlLFxuICBTa3lUb2tlbnNNZXNzYWdlVHlwZSxcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSwgU2t5TW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2UgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1hc3luYy1hcmdzJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNob3ctbW9yZS1hcmdzJztcbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsU2VydmljZSB9IGZyb20gJy4uL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3R5cGVzL3NlbGVjdGlvbi1tb2RhbC1pbnN0YW5jZSc7XG5cbmltcG9ydCB7IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb29rdXAtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXIgfSBmcm9tICcuL2xvb2t1cC1hdXRvY29tcGxldGUtYWRhcHRlcic7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MgfSBmcm9tICcuL3R5cGVzL2xvb2t1cC1hZGQtY2xpY2stY2FsbGJhY2stYXJncyc7XG5pbXBvcnQgeyBTa3lMb29rdXBBZGRDbGlja0V2ZW50QXJncyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLWFkZC1jbGljay1ldmVudC1hcmdzJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdE1vZGVUeXBlIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2VsZWN0LW1vZGUtdHlwZSc7XG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1jb25maWcnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2hvdy1tb3JlLW5hdGl2ZS1waWNrZXItY29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1sb29rdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9va3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9va3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBDb21wb25lbnRcbiAgZXh0ZW5kcyBTa3lMb29rdXBBdXRvY29tcGxldGVBZGFwdGVyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHR5cGVhaGVhZCBzZWFyY2ggaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBpbnB1dCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGlucHV0IGJveCBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0eXBlYWhlYWQgc2VhcmNoIGlucHV0LiBUaGlzIHNldHMgdGhlIGlucHV0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBpbnB1dCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBpbnB1dCBib3ggYGxhYmVsVGV4dGAgaW5wdXQgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIHRoZSBmb3JtIGlucHV0LlxuICAgKiBAZGVmYXVsdCAnb2ZmJ1xuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggb25seSBzdXBwb3J0cyBicm93c2VyIGF1dG9maWxsIG9uIGNvbXBvbmVudHMgd2hlcmUgdGhlIGRpcmVjdCBpbnB1dCBtYXRjaGVzIHRoZSByZXR1cm4gdmFsdWUuIFRoaXMgaW5wdXQgbWF5IG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQgZHVlIHRvIHRoZSBkcm9wZG93biBzZWxlY3Rpb24gaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGxvb2t1cCBjb21wb25lbnQgdG8gc2VhcmNoIHdoZW4gdXNlcnNcbiAgICogZW50ZXIgdGV4dC4gWW91IGNhbiBzcGVjaWZ5IHN0YXRpYyBkYXRhLCBzdWNoIGFzIGFuIGFycmF5IG9mIG9iamVjdHMsIG9yXG4gICAqIHlvdSBjYW4gcHVsbCBkYXRhIGZyb20gYSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgc2VhcmNoQXN5bmNgIGV2ZW50IGVtaXR0ZXIgYW5kIGNhbGxiYWNrIGluc3RlYWQgdG8gcHJvdmlkZSBkYXRhIHRvIHRoZSBsb29rdXAgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kYXRhID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlciAmJiAhdGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS51cGRhdGVJdGVtRGF0YSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGEgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBsb29rdXAgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsb29rdXAgZmllbGQgaXMgcmVxdWlyZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19yZXF1aXJlZCA9IHZhbHVlO1xuICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjPy5zZXRSZXF1aXJlZCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdXNlcnMgdG8gb3BlbiBhIHBpY2tlciB3aGVyZSB0aGV5IGNhbiB2aWV3IGFsbCBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBlbmFibGVTaG93TW9yZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGxvb2t1cCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlclRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG9iamVjdCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgdGhlIG9iamVjdCdzIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAgKiBTcGVjaWZ5aW5nIHRoaXMgcHJvcGVydHkgZW5hYmxlcyB0b2tlbiBhbmltYXRpb25zIGFuZCBtb3JlIGVmZmljaWVudCByZW5kZXJpbmcuXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBgZW5hYmxlU2hvd01vcmVgIGFuZCBgc2VhcmNoQXN5bmNgIHRvZ2V0aGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkUHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIHRoYXQgbGV0cyB1c2VycyBhZGQgb3B0aW9ucyB0byB0aGUgbGlzdC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2hvd0FkZEJ1dHRvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaWNrZXIgdGhhdCBkaXNwbGF5cyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93TW9yZUNvbmZpZzogU2t5TG9va3VwU2hvd01vcmVDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhYmlsaXR5IGZvciB1c2VycyB0byBzZWxlY3Qgb25lIG9wdGlvbiBvciBtdWx0aXBsZSBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBcIm11bHRpcGxlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0TW9kZSh2YWx1ZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtdWx0aXBsZVRvU2luZ2xlOiBib29sZWFuID1cbiAgICAgIHZhbHVlID09PSAnc2luZ2xlJyAmJiB0aGlzLnNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZSc7XG5cbiAgICB0aGlzLiNfc2VsZWN0TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcblxuICAgIGlmIChtdWx0aXBsZVRvU2luZ2xlKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG5cbiAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBUaGUgYHNldFRpbWVvdXRgIGlzIG5lZWRlZCB0byBhdm9pZCBhIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBlcnJvciBpbiB0ZW1wbGF0ZSBmb3Jtcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jc2V0VmFsdWUoW3ZhbHVlWzBdXSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdE1vZGUoKTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfc2VsZWN0TW9kZSB8fCAnbXVsdGlwbGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHdyYXBwZXJDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0aW9uTW9kYWxPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBnZXQgdG9rZW5zKCk6IFNreVRva2VuW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdG9rZW5zO1xuICB9XG5cbiAgcHVibGljIHNldCB0b2tlbnModG9rZW5zOiBTa3lUb2tlbltdIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gQ29sbGFwc2UgdGhlIHRva2VucyBpbnRvIGEgc2luZ2xlIHRva2VuIGlmIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCBtYW55IG9wdGlvbnMuXG4gICAgaWYgKHRoaXMuZW5hYmxlU2hvd01vcmUgJiYgdmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZVxuICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF9sb29rdXBfdG9rZW5zX3N1bW1hcnknLCB2YWx1ZS5sZW5ndGgudG9TdHJpbmcoKSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgobGFiZWwpID0+IHtcbiAgICAgICAgICB0aGlzLiNfdG9rZW5zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogeyBbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldOiBsYWJlbCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3Rva2VucyA9IHRva2VucztcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBleHBvc2VkIGZvciB1bml0IHRlc3RzIG9ubHk7IHJlZmFjdG9yIHVuaXQgdGVzdHMgdG9cbiAgICogZGVyaXZlIHRoZSBjb250cm9sIHZhbHVlIGEgZGlmZmVyZW50IHdheS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLiNnZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPigpO1xuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIHNob3dNb3JlUGlja2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHRva2Vuc0NvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuICBwcm90ZWN0ZWQgY29udHJvbElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBhcmlhRGVzY3JpYmVkQnk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLCB7XG4gICAgcmVhZDogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgcHVibGljIHNldCBhdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZShcbiAgICB2YWx1ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUoKTpcbiAgICB8IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnbG9va3VwV3JhcHBlcicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgbG9va3VwV3JhcHBlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjaWRsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbm90aWZ5Q2hhbmdlOiAoKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNvcGVuTmF0aXZlUGlja2VyOiBTa3lNb2RhbEluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAjb3BlblNlbGVjdGlvbk1vZGFsOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHwgdW5kZWZpbmVkO1xuICAjX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgI19hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG4gICNfZGF0YTogYW55W10gfCB1bmRlZmluZWQ7XG4gICNfc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZVR5cGUgfCB1bmRlZmluZWQ7XG4gICNfdG9rZW5zOiBTa3lUb2tlbltdIHwgdW5kZWZpbmVkO1xuICAjX3ZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjYWRhcHRlciA9IGluamVjdChTa3lMb29rdXBBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSAjaWRTZXJ2aWNlID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gIHJlYWRvbmx5ICNsb2dTdmMgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG4gIHJlYWRvbmx5ICNtb2RhbFNlcnZpY2UgPSBpbmplY3QoU2t5TW9kYWxTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlc1NlcnZpY2UgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG4gIHJlYWRvbmx5ICNzZWxlY3Rpb25Nb2RhbFN2YyA9IGluamVjdChTa3lTZWxlY3Rpb25Nb2RhbFNlcnZpY2UpO1xuICByZWFkb25seSAjd2luZG93UmVmID0gaW5qZWN0KFNreUFwcFdpbmRvd1JlZik7XG5cbiAgI2dldFZhbHVlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlID8gdGhpcy4jX3ZhbHVlIDogW107XG4gIH1cblxuICAjc2V0VmFsdWUobmV3VmFsdWU6IGFueVtdLCBvcHRpb25zOiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgdGhpcy4jX3ZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnICYmICF0aGlzLiNwaWNrZXJNb2RhbE9wZW4oKSkge1xuICAgICAgdGhpcy50b2tlbnMgPSB0aGlzLiNwYXJzZVRva2VucyhuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLiNub3RpZnlDaGFuZ2U/Lih0aGlzLiNfdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgbmdDb250cm9sPzogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTdmM/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5jb250cm9sSWQgPSB0aGlzLmlucHV0Qm94SG9zdFN2Yy5jb250cm9sSWQ7XG4gICAgICB0aGlzLmFyaWFEZXNjcmliZWRCeSA9IHRoaXMuaW5wdXRCb3hIb3N0U3ZjLmFyaWFEZXNjcmliZWRCeTtcblxuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTdmMucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy5lbmFibGVTaG93TW9yZVxuICAgICAgICAgID8gdGhpcy5zaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTdmM/LnNldFJlcXVpcmVkKHRoaXMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRyb2xJZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy50aGVtZVN2Yykge1xuICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGF1dG9jb21wbGV0ZSBkaXJlY3RpdmUgdG8gYmUgc2V0IGFmdGVyIGVsZW1lbnRzXG4gICAgICAvLyBhcmUgcmVhcnJhbmdlZCB3aGVuIHN3aXRjaGluZyB0aGVtZXMuXG4gICAgICB0aGlzLnRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNhZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmFkZENsaWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b2tlbnNDb250cm9sbGVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENsaWNrLmVtaXQoe1xuICAgICAgaXRlbUFkZGVkOiAoYXJnczogU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzKSA9PlxuICAgICAgICB0aGlzLiNvbkFkZEJ1dHRvbkNvbXBsZXRlKGFyZ3MpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKFxuICAgIGNoYW5nZTogU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlLFxuICApOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlLnNlbGVjdGVkSXRlbSkge1xuICAgICAgdGhpcy4jYWRkVG9TZWxlY3RlZChjaGFuZ2Uuc2VsZWN0ZWRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jc2V0VmFsdWUoW10sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZUJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNDaGFuZ2UoY2hhbmdlOiBTa3lUb2tlbltdKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMgIT09IGNoYW5nZSkge1xuICAgICAgaWYgKGNoYW5nZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy4jZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRva2VucyA9IGNoYW5nZTtcbiAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlLm1hcCgodG9rZW4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3NldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNGb2N1c0luZGV4T3ZlclJhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuUmVtb3ZlQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNUb2tlbik7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdEZWwnOlxuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIHRoaXMuI3NlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNBY3RpdmVUb2tlbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNSZW5kZXJlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZShcbiAgICAgIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLlJlcG9zaXRpb25Ecm9wZG93bixcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgLy8gU2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBhcnJheXMgLSBjbG9uZSB0aGUgYXJyYXkgYmVpbmcgc2VudCBpbiB0byBlbnN1cmUgd2UgYXJlbid0IG1vZGlmeWluZyBhIGNvbnN1bWVycyBvdXRlciBhcnJheVxuICAgIHRoaXMuI3NldFZhbHVlKHZhbHVlID8gdmFsdWUuc2xpY2UoKSA6IFtdLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQWxsb3dzIEFuZ3VsYXIgdG8gZGlzYWJsZSB0aGUgaW5wdXQuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VhcmNoVGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICAvLyBIYW5kbGVzIHdoZW4gdG8gZm9jdXMgb24gdGhlIHRva2Vucy5cbiAgLy8gQ2hlY2sgZm9yIGVtcHR5IHNlYXJjaCB0ZXh0IG9uIGtleWRvd24sIGJlZm9yZSB0aGUgZXNjYXBlIGtleSBpcyBmdWxseSBwcmVzc2VkLlxuICAvLyAoT3RoZXJ3aXNlLCBhIHNpbmdsZSBjaGFyYWN0ZXIgYmVpbmcgZXNjYXBlZCB3b3VsZCByZWdpc3RlciBhcyBlbXB0eSBvbiBrZXl1cC4pXG4gIC8vIElmIGVtcHR5IG9uIGtleWRvd24sIHNldCBhIGZsYWcgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uIGNhbiBiZSB0YWtlbiBvbiBrZXl1cC5cbiAgcHVibGljIGlucHV0S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS52YWx1ZTtcblxuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy4jbWFya0ZvclRva2VuRm9jdXNPbktleVVwID0gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI21hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnB1dEtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIGFzIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4gbXVsdGlwbGUgc2VsZWN0IG1vZGUgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdFc2MnOlxuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy4jbWFya0ZvclRva2VuRm9jdXNPbktleVVwKSB7XG4gICAgICAgICAgICB0aGlzLiNzZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c0xhc3RUb2tlbik7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy4jc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UoU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuQ2xvc2VEcm9wZG93bik7XG4gICAgbGV0IGlzVmFsdWVJblRleHRCb3ggPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgaXNWYWx1ZUluVGV4dEJveCA9XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU/LnZhbHVlICYmXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUgPT09XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZVt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgbGV0IHNlYXJjaFZhbHVlID0gJyc7XG5cbiAgICBpZiAoIWlzVmFsdWVJblRleHRCb3ggJiYgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgc2VhcmNoVmFsdWUgPSB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMub3BlblBpY2tlcihzZWFyY2hWYWx1ZSk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZT8ucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25TaG93TW9yZUNsaWNrKGV2ZW50OiBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLm9wZW5QaWNrZXIoZXZlbnQuaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5QaWNrZXIoaW5pdGlhbFNlYXJjaDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd01vcmVDb25maWc/LmN1c3RvbVBpY2tlcikge1xuICAgICAgdGhpcy5zaG93TW9yZVBpY2tlcklkID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnNob3dNb3JlQ29uZmlnLmN1c3RvbVBpY2tlci5vcGVuKHtcbiAgICAgICAgaXRlbXM6IHRoaXMuZGF0YSxcbiAgICAgICAgaW5pdGlhbFNlYXJjaCxcbiAgICAgICAgaW5pdGlhbFZhbHVlOiB0aGlzLiNnZXRWYWx1ZSgpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGFsT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuXG4gICAgICBpZiAodGhpcy4jaGFzU2VhcmNoQXN5bmMoKSkge1xuICAgICAgICB0aGlzLiNvcGVuU2VsZWN0aW9uTW9kYWwgPVxuICAgICAgICAgIHRoaXMuI2NyZWF0ZVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoaW5pdGlhbFNlYXJjaCk7XG5cbiAgICAgICAgdGhpcy5zaG93TW9yZVBpY2tlcklkID0gdGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsLmlkO1xuXG4gICAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5jbG9zZWQuc3Vic2NyaWJlKChjbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICB0aGlzLiNwcm9jZXNzUGlja2VyUmVzdWx0KFxuICAgICAgICAgICAgY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnXG4gICAgICAgICAgICAgID8gY2xvc2VBcmdzLnNlbGVjdGVkSXRlbXNcbiAgICAgICAgICAgICAgOiBpbml0aWFsVmFsdWUsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGFsT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyID1cbiAgICAgICAgICB0aGlzLiNjcmVhdGVOYXRpdmVQaWNrZXJJbnN0YW5jZShpbml0aWFsU2VhcmNoKTtcblxuICAgICAgICB0aGlzLnNob3dNb3JlUGlja2VySWQgPSB0aGlzLiNvcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlLmlkO1xuXG4gICAgICAgIHRoaXMuI29wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UuYWRkQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEJ1dHRvbkNsaWNrZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlci5jbG9zZWQuc3Vic2NyaWJlKChjbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtczogYW55W107XG5cbiAgICAgICAgICBpZiAoY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChpdGVtOiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbG9zZUFyZ3MuZGF0YS5zb21lKChzYXZlZEl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVkSXRlbS5pbmRleCA9PT0gZGF0YUluZGV4O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBpbml0aWFsVmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jcHJvY2Vzc1BpY2tlclJlc3VsdChzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGFsT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQXV0b2NvbXBsZXRlT3BlbkNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLiNwaWNrZXJNb2RhbE9wZW4oKSkge1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkZvY3VzKCRldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLnNlbGVjdCgpO1xuICB9XG5cbiAgI2NyZWF0ZVNlbGVjdGlvbk1vZGFsSW5zdGFuY2UoXG4gICAgaW5pdGlhbFNlYXJjaDogc3RyaW5nLFxuICApOiBTa3lTZWxlY3Rpb25Nb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuICAgIGNvbnN0IG1vZGFsQ29uZmlnID0gdGhpcy5zaG93TW9yZUNvbmZpZz8ubmF0aXZlUGlja2VyQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUpIHtcbiAgICAgIG1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0VGVtcGxhdGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaWRQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNsb2dTdmMuZXJyb3IoXG4gICAgICAgIFwiVGhlIGxvb2t1cCBjb21wb25lbnQncyAnaWRQcm9wZXJ0eScgaW5wdXQgaXMgcmVxdWlyZWQgd2hlbiBgZW5hYmxlU2hvd01vcmVgIGFuZCAnc2VhcmNoQXN5bmMnIGFyZSB1c2VkIHRvZ2V0aGVyLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jc2VsZWN0aW9uTW9kYWxTdmMub3Blbih7XG4gICAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHRoaXMuZGVzY3JpcHRvclByb3BlcnR5LFxuICAgICAgaWRQcm9wZXJ0eTogdGhpcy5pZFByb3BlcnR5ISxcbiAgICAgIHNlYXJjaEFzeW5jOiAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2hBc3luY0FyZ3M6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEFzeW5jQXJncyA9IHtcbiAgICAgICAgICBkaXNwbGF5VHlwZTogJ21vZGFsJyxcbiAgICAgICAgICBvZmZzZXQ6IGFyZ3Mub2Zmc2V0LFxuICAgICAgICAgIHNlYXJjaFRleHQ6IGFyZ3Muc2VhcmNoVGV4dCxcbiAgICAgICAgICBjb250aW51YXRpb25EYXRhOiBhcmdzLmNvbnRpbnVhdGlvbkRhdGEsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZWFyY2hBc3luYy5lbWl0KHNlYXJjaEFzeW5jQXJncyk7XG5cbiAgICAgICAgcmV0dXJuIHNlYXJjaEFzeW5jQXJncy5yZXN1bHQ7XG4gICAgICB9LFxuICAgICAgc2VsZWN0TW9kZTogdGhpcy5zZWxlY3RNb2RlLFxuICAgICAgYWRkQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25DbGlja2VkKCk7XG4gICAgICB9LFxuICAgICAgaW5pdGlhbFNlYXJjaCxcbiAgICAgIGl0ZW1UZW1wbGF0ZTogbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlLFxuICAgICAgc2VsZWN0aW9uRGVzY3JpcHRvcjogbW9kYWxDb25maWcuc2VsZWN0aW9uRGVzY3JpcHRvcixcbiAgICAgIHNob3dBZGRCdXR0b246IHRoaXMuc2hvd0FkZEJ1dHRvbixcbiAgICAgIHRpdGxlOiBtb2RhbENvbmZpZy50aXRsZSxcbiAgICAgIHZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICB3cmFwcGVyQ2xhc3M6IHRoaXMud3JhcHBlckNsYXNzLFxuICAgIH0pO1xuICB9XG5cbiAgI2NyZWF0ZU5hdGl2ZVBpY2tlckluc3RhbmNlKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IFNreU1vZGFsSW5zdGFuY2Uge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG4gICAgY29uc3QgbW9kYWxDb25maWcgPSB0aGlzLnNob3dNb3JlQ29uZmlnPy5uYXRpdmVQaWNrZXJDb25maWcgfHwge307XG5cbiAgICBpZiAoIW1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSkge1xuICAgICAgbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoIW1vZGFsQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgIG1vZGFsQ29uZmlnLnNlbGVjdGlvbkRlc2NyaXB0b3IgPVxuICAgICAgICB0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnID8gJ2l0ZW0nIDogJ2l0ZW1zJztcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0UHJvdmlkZXJWYWx1ZSA9IG5ldyBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQoXG4gICAgICB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgIGluaXRpYWxTZWFyY2gsXG4gICAgICBpbml0aWFsVmFsdWUsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICB0aGlzLnNlYXJjaE9yRGVmYXVsdCxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgIHRoaXMuc2hvd0FkZEJ1dHRvbixcbiAgICAgIG1vZGFsQ29uZmlnLFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy4jbW9kYWxTZXJ2aWNlLm9wZW4oU2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudCwge1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBTa3lMb29rdXBTaG93TW9yZU5hdGl2ZVBpY2tlckNvbnRleHQsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbnRleHRQcm92aWRlclZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogU2t5TG9va3VwQWRhcHRlclNlcnZpY2UsXG4gICAgICAgICAgdXNlVmFsdWU6IHRoaXMuI2FkYXB0ZXIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgIHdyYXBwZXJDbGFzczogdGhpcy53cmFwcGVyQ2xhc3MsXG4gICAgfSk7XG4gIH1cblxuICAjcHJvY2Vzc1BpY2tlclJlc3VsdChzZWxlY3RlZEl0ZW1zOiBhbnlbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNvcGVuTmF0aXZlUGlja2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd01vcmVQaWNrZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXMgfHwgW107XG5cbiAgICB0aGlzLiNzZXRWYWx1ZShzZWxlY3RlZEl0ZW1zLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hBc3luYyhhcmdzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hBc3luY0FyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEFzeW5jLmVtaXQoYXJncyk7XG4gIH1cblxuICAjYWRkVG9TZWxlY3RlZChpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI2dldFZhbHVlKCk7XG5cbiAgICBsZXQgc2VsZWN0ZWRJdGVtczogYW55W107XG5cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgc2VsZWN0ZWRJdGVtcyA9IFtpdGVtXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xuXG4gICAgICBjb25zdCBpZFByb3BlcnR5ID0gdGhpcy5pZFByb3BlcnR5IHx8ICcnO1xuXG4gICAgICAvLyBJZiBpdGVtcyBoYXZlIGEgdW5pcXVlIGlkZW50aWZpZXIsIGRvbid0IGFsbG93IHRoZSBzYW1lIGl0ZW0gdG8gYmUgYWRkZWQgdHdpY2UuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmlkUHJvcGVydHkgfHxcbiAgICAgICAgIXZhbHVlLnNvbWUoXG4gICAgICAgICAgKGV4aXN0aW5nSXRlbSkgPT4gZXhpc3RpbmdJdGVtW2lkUHJvcGVydHldID09PSBpdGVtW2lkUHJvcGVydHldLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgIH1cblxuICAgIHRoaXMuI3NldFZhbHVlKHNlbGVjdGVkSXRlbXMsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICB9XG5cbiAgI2FkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2lkbGUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMuI2ZvY3VzSW5wdXRPbkhvc3RDbGljaygpO1xuICB9XG5cbiAgI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuI2lkbGUubmV4dCgpO1xuICAgIHRoaXMuI2lkbGUuY29tcGxldGUoKTtcbiAgfVxuXG4gICNmb2N1c0lucHV0T25Ib3N0Q2xpY2soKTogdm9pZCB7XG4gICAgbGV0IGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZG9jdW1lbnRPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50O1xuXG4gICAgLy8gSGFuZGxlcyBmb2N1c2luZyB0aGUgaW5wdXQgd2hlbiB0aGUgaG9zdCBpcyBjbGlja2VkLlxuICAgIC8vIFRoZSBpbnB1dCBzaG91bGQgTk9UIGJlIGZvY3VzZWQgaWYgb3RoZXIgZWxlbWVudHMgKHRva2VucywgZXRjLilcbiAgICAvLyBhcmUgY3VycmVudGx5IGZvY3VzZWQgb3IgYmVpbmcgdGFiYmVkIHRocm91Z2guXG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50T2JqLCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgPyB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMubG9va3VwV3JhcHBlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50T2JqLCAnZm9jdXNpbicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jaWRsZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaG9zdEVsZW1lbnQgPSAhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICAgICA/IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgIDogdGhpcy5sb29rdXBXcmFwcGVyUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gaG9zdEVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGlmIChob3N0RWxlbWVudCkge1xuICAgICAgb2JzZXJ2YWJsZUZyb21FdmVudChob3N0RWxlbWVudCwgJ21vdXNldXAnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jaWRsZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50T2JqLmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICAgIGlmICghY2xhc3NMaXN0IHx8ICFjbGFzc0xpc3QuY29udGFpbnMoJ3NreS10b2tlbicpKSB7XG4gICAgICAgICAgICB0aGlzLiNmb2N1c0lucHV0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb29rdXBXcmFwcGVyUmVmKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyLmZvY3VzSW5wdXQodGhpcy5sb29rdXBXcmFwcGVyUmVmKTtcbiAgICB9XG4gIH1cblxuICAjb25BZGRCdXR0b25Db21wbGV0ZShhcmdzOiBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jb3BlblNlbGVjdGlvbk1vZGFsKSB7XG4gICAgICAvLyBOb3RpZnkgdGhlIHNlbGVjdGlvbiBtb2RhbCBvZiB0aGUgbmV3IGl0ZW0uIFRoZSBzZWxlY3Rpb25cbiAgICAgIC8vIG1vZGFsIHdpbGwgZGVjaWRlIHdoZXRoZXIgdGhlIG5ldyBpdGVtIHNob3VsZCBiZSBhZGRlZFxuICAgICAgLy8gdG8gdGhlIHZhbHVlIHdoZW4gdGhlIHVzZXIgY29uZmlybXMgb3IgY2FuY2VscyB0aGVcbiAgICAgIC8vIHNlbGVjdGlvbiBtb2RhbC5cbiAgICAgIHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbC5hZGRJdGVtKGFyZ3MuaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBhZGRJdGVtVG9WYWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHRoaXMuI2hhc1NlYXJjaEFzeW5jKCkpIHtcbiAgICAgICAgYWRkSXRlbVRvVmFsdWUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGFyZ3MuZGF0YSkge1xuICAgICAgICAgIHRoaXMuZGF0YSA9IGFyZ3MuZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGEuaW5kZXhPZihhcmdzLml0ZW0pID49IDApIHtcbiAgICAgICAgICBpZiAodGhpcy4jb3Blbk5hdGl2ZVBpY2tlcikge1xuICAgICAgICAgICAgLy8gTm90aWZ5IHRoZSBwaWNrZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGUgcGlja2VyIHdpbGxcbiAgICAgICAgICAgIC8vIGRlY2lkZSB3aGV0aGVyIHRoZSBuZXcgaXRlbSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlXG4gICAgICAgICAgICAvLyB2YWx1ZSB3aGVuIHRoZSB1c2VyIGNvbmZpcm1zIG9yIGNhbmNlbHMgdGhlIHBpY2tlci5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgdGhpcy4jb3Blbk5hdGl2ZVBpY2tlclxuICAgICAgICAgICAgICAgIC5jb21wb25lbnRJbnN0YW5jZSBhcyBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50XG4gICAgICAgICAgICApLm9uSXRlbVNlbGVjdCh0cnVlLCB7IHZhbHVlOiBhcmdzLml0ZW0sIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWRkSXRlbVRvVmFsdWUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRkSXRlbVRvVmFsdWUpIHtcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgdGhpcy5zZWxlY3RNb2RlID09PSAnbXVsdGlwbGUnXG4gICAgICAgICAgICA/IG9sZFZhbHVlLmNvbmNhdChhcmdzLml0ZW0pXG4gICAgICAgICAgICA6IFthcmdzLml0ZW1dO1xuXG4gICAgICAgIHRoaXMuI3NldFZhbHVlKG5ld1ZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjcGFyc2VUb2tlbnMoZGF0YTogYW55W10pOiBTa3lUb2tlbltdIHtcbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IGl0ZW0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgI3NlbmRBdXRvY29tcGxldGVNZXNzYWdlKHR5cGU6IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sbGVyLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgI3NlbmRUb2tlbnNNZXNzYWdlKHR5cGU6IFNreVRva2Vuc01lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy50b2tlbnNDb250cm9sbGVyLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUZvclNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHZhbHVlICYmIHZhbHVlWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjaGFzU2VhcmNoQXN5bmMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoQXN5bmMub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAjcGlja2VyTW9kYWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLiNvcGVuTmF0aXZlUGlja2VyIHx8IHRoaXMuI29wZW5TZWxlY3Rpb25Nb2RhbCk7XG4gIH1cbn1cbiIsIkBpZiAoIWlucHV0Qm94SG9zdFN2Yykge1xuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiIC8+XG59XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgICNsb29rdXBXcmFwcGVyXG4gICAgY2xhc3M9XCJza3ktbG9va3VwXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWxvb2t1cC1mb2N1c2VkJzogaXNJbnB1dEZvY3VzZWQsXG4gICAgICAnc2t5LWxvb2t1cC1kaXNhYmxlZCc6IGRpc2FibGVkLFxuICAgICAgJ3NreS1sb29rdXAtc2luZ2xlJzogc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZSdcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktYXV0b2NvbXBsZXRlXG4gICAgICBbYXJpYUxhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgaW5wdXRCb3hIb3N0U3ZjPy5sYWJlbElkXCJcbiAgICAgIFthdHRyLmRhdGEtc2t5LWxvb2t1cC1zaG93LW1vcmUtcGlja2VyLWlkXT1cInNob3dNb3JlUGlja2VySWRcIlxuICAgICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgICBbZGVib3VuY2VUaW1lXT1cImRlYm91bmNlVGltZVwiXG4gICAgICBbZGVzY3JpcHRvclByb3BlcnR5XT1cImRlc2NyaXB0b3JQcm9wZXJ0eVwiXG4gICAgICBbZW5hYmxlU2hvd01vcmVdPVwiZW5hYmxlU2hvd01vcmVcIlxuICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiYXV0b2NvbXBsZXRlQ29udHJvbGxlclwiXG4gICAgICBbcHJvcGVydGllc1RvU2VhcmNoXT1cInByb3BlcnRpZXNUb1NlYXJjaFwiXG4gICAgICBbc2VhcmNoXT1cInNlYXJjaE9yRGVmYXVsdFwiXG4gICAgICBbc2VhcmNoQXN5bmNEaXNhYmxlZF09XCJzZWFyY2hBc3luYy5vYnNlcnZlcnMubGVuZ3RoID09PSAwXCJcbiAgICAgIFtzZWFyY2hGaWx0ZXJzXT1cInNlYXJjaEZpbHRlcnNcIlxuICAgICAgW3NlYXJjaFJlc3VsdHNMaW1pdF09XCJzZWFyY2hSZXN1bHRzTGltaXRcIlxuICAgICAgW3NlYXJjaFJlc3VsdFRlbXBsYXRlXT1cInNlYXJjaFJlc3VsdFRlbXBsYXRlXCJcbiAgICAgIFtzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNdPVwic2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXCJcbiAgICAgIFtzaG93QWRkQnV0dG9uXT1cInNob3dBZGRCdXR0b25cIlxuICAgICAgW3dyYXBwZXJDbGFzc109XCJ3cmFwcGVyQ2xhc3NcIlxuICAgICAgKGFkZENsaWNrKT1cImFkZEJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAoc2VhcmNoQXN5bmMpPVwib25TZWFyY2hBc3luYygkZXZlbnQpXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25BdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoc2hvd01vcmVDbGljayk9XCJvblNob3dNb3JlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAob3BlbkNoYW5nZSk9XCJvbkF1dG9jb21wbGV0ZU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1sb29rdXAtc2VhcmNoLWZsZXgtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJza3ktbG9va3VwLXNlYXJjaFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3NreS1maWVsZC1zdGF0dXMtYWN0aXZlJzogaXNJbnB1dEZvY3VzZWQgJiYgIWRpc2FibGVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNlbGVjdE1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIDxza3ktdG9rZW5zXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWxvb2t1cC10b2tlbnNcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGVzY3JpcHRvclByb3BlcnR5XCJcbiAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFttZXNzYWdlU3RyZWFtXT1cInRva2Vuc0NvbnRyb2xsZXJcIlxuICAgICAgICAgICAgICBbdHJhY2tXaXRoXT1cImlkUHJvcGVydHlcIlxuICAgICAgICAgICAgICBbdG9rZW5zXT1cInRva2Vuc1wiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJvblRva2Vuc0tleVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAodG9rZW5zQ2hhbmdlKT1cIm9uVG9rZW5zQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAodG9rZW5zUmVuZGVyZWQpPVwib25Ub2tlbnNSZW5kZXJlZCgpXCJcbiAgICAgICAgICAgICAgKHRva2VuU2VsZWN0ZWQpPVwiZW5hYmxlU2hvd01vcmUgPyBvcGVuUGlja2VyKCcnKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIChmb2N1c0luZGV4T3ZlclJhbmdlKT1cIm9uVG9rZW5zRm9jdXNJbmRleE92ZXJSYW5nZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sIHNreS1sb29rdXAtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgICBza3lBdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICB3cmFwPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJjb250cm9sSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZUF0dHJpYnV0ZV09XCJhdXRvY29tcGxldGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25BdXRvY29tcGxldGVCbHVyKClcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImlucHV0S2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwiaW5wdXRLZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8L3NreS10b2tlbnM+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktbG9va3VwLXNpbmdsZS1jb250cm9sXCI+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbCBza3ktbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgd3JhcD1cIm9mZlwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY29udHJvbElkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVBdHRyaWJ1dGVdPVwiYXV0b2NvbXBsZXRlQXR0cmlidXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKCFpbnB1dEJveEhvc3RTdmMgJiYgZW5hYmxlU2hvd01vcmUpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvc2t5LWF1dG9jb21wbGV0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAnc2t5dXhfbG9va3VwX3NlYXJjaF9idXR0b25fc2hvd19tb3JlJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJvblNlYXJjaEJ1dHRvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cInNlYXJjaFwiIGljb25TaXplPVwibFwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTokensModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\nimport { SkyLookupComponent } from './lookup.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyLookupModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupModule, declarations: [SkyLookupComponent], imports: [CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule], exports: [SkyLookupComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupModule, imports: [CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyLookupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyLookupComponent],\n imports: [\n CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule,\n ],\n exports: [SkyLookupComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL2xvb2t1cC9sb29rdXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBY3hELE1BQU0sT0FBTyxlQUFlOytHQUFmLGVBQWU7Z0hBQWYsZUFBZSxpQkFYWCxrQkFBa0IsYUFFL0IsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxlQUFlLGFBRVAsa0JBQWtCO2dIQUVqQixlQUFlLFlBVHhCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLHdCQUF3QjtZQUN4QixjQUFjO1lBQ2QsZUFBZTs7NEZBSU4sZUFBZTtrQkFaM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUb2tlbnNNb2R1bGUgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUubW9kdWxlJztcbmltcG9ydCB7IFNreUxvb2t1cFJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbG9va3VwLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBDb21wb25lbnQgfSBmcm9tICcuL2xvb2t1cC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lMb29rdXBDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUxvb2t1cFJlc291cmNlc01vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgICBTa3lUb2tlbnNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lMb29rdXBDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBNb2R1bGUge31cbiJdfQ==","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport var SkyLookupSelectMode;\n(function (SkyLookupSelectMode) {\n /**\n * Restricts users to a single selection.\n */\n SkyLookupSelectMode[\"single\"] = \"single\";\n /**\n * Allows users to select multiple items.\n */\n SkyLookupSelectMode[\"multiple\"] = \"multiple\";\n})(SkyLookupSelectMode || (SkyLookupSelectMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlbGVjdC1tb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvbG9va3VwL3R5cGVzL2xvb2t1cC1zZWxlY3QtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxtQkFVWDtBQVZELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsd0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCw0Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVU5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBTa3lMb29rdXBTZWxlY3RNb2RlVHlwZWAgaW5zdGVhZC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZW51bSBTa3lMb29rdXBTZWxlY3RNb2RlIHtcbiAgLyoqXG4gICAqIFJlc3RyaWN0cyB1c2VycyB0byBhIHNpbmdsZSBzZWxlY3Rpb24uXG4gICAqL1xuICBzaW5nbGUgPSAnc2luZ2xlJyxcblxuICAvKipcbiAgICogQWxsb3dzIHVzZXJzIHRvIHNlbGVjdCBtdWx0aXBsZSBpdGVtcy5cbiAgICovXG4gIG11bHRpcGxlID0gJ211bHRpcGxlJyxcbn1cbiJdfQ==","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1jdXN0b20tcGlja2VyLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9sb29rdXAvdHlwZXMvbG9va3VwLXNob3ctbW9yZS1jdXN0b20tcGlja2VyLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG9DQUFvQztDQWFoRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBsYXVuY2ggYSBjdXN0b20gcGlja2VyIHdoZW4gdXNlcnMgc2VsZWN0XG4gKiB0aGUgYnV0dG9uIHRvIHZpZXcgYWxsIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBTaG93TW9yZUN1c3RvbVBpY2tlckNvbnRleHQge1xuICAvKipcbiAgICogVGhlIG9wdGlvbnMgdGhhdCB1c2VycyBjYW4gc2VsZWN0IGluIHRoZSBjdXN0b20gcGlja2VyLlxuICAgKi9cbiAgcHVibGljIGl0ZW1zITogYW55W107XG4gIC8qKlxuICAgKiBTZWFyY2ggdGV4dCB0byBmaWx0ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXN0b20gcGlja2VyLlxuICAgKi9cbiAgcHVibGljIGluaXRpYWxTZWFyY2ghOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzZWxlY3Rpb25zIGluIHRoZSBsb29rdXAgZmllbGQuXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbFZhbHVlITogYW55O1xufVxuIl19","import { NgModule } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The `SkySelectionModalModule` is no longer needed and can be removed from your application.\n * @internal\n */\nexport class SkySelectionModalModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionModalModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpDOzs7R0FHRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCO2dIQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFFBQVE7bUJBQUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhlIGBTa3lTZWxlY3Rpb25Nb2RhbE1vZHVsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSB5b3VyIGFwcGxpY2F0aW9uLlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbE1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtbG9va3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvc2t5dXgtbG9va3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["observableFromEvent","uniqueId","i2.SkyAutocompleteAdapterService","i3","i4","i6","i7","i9.SkyAutocompleteSearchAsyncDisabledPipe","i1","i2","i4.SkyAutocompleteComponent","i5.SkyAutocompleteInputDirective","i1.SkySearchAdapterService","i5","i6.SkySearchComponent","i8","i9","i10","take","i5.SkyAutocompleteComponent","i6.SkyAutocompleteInputDirective"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-lookup.mjs","sources":["../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-resources.module.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-string-utils.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-default-search-function.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/types/autocomplete-message-type.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.html","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.module.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/clone-country-data.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/types/country-field-context-token.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.module.ts","../../../../../libs/components/lookup/src/lib/modules/search/search-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.html","../../../../../libs/components/lookup/src/lib/modules/search/search.module.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal-item-selected.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/types/selection-modal-context.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/selection-modal/types/selection-modal-instance.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-select-mode.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-custom-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.module.ts","../../../../../libs/components/lookup/src/skyux-lookup.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_multiple_results: { message: '{0} results available.' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\n skyux_autocomplete_one_result: { message: 'One result available.' },\n skyux_autocomplete_show_all: { message: 'Show all' },\n skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n skyux_country_field_dropdown_hint_text: {\n message: 'Type to search for a country',\n },\n skyux_country_field_search_placeholder: { message: 'Search for a country' },\n skyux_lookup_search_button_show_more: {\n message: 'Show all search results',\n },\n skyux_lookup_show_more_add: { message: 'New' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Add {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: 'Showing {1} items, with {0} selected.',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Select all {0}',\n },\n skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Clear all selected {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Show only selected {0}',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title: { message: 'Select {0}' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_show_more_select_context: { message: 'Select {0}' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n skyux_search_aria_label_descriptor: { message: 'Search {0}' },\n skyux_search_dismiss: { message: 'Dismiss search' },\n skyux_search_label: { message: 'Search items' },\n skyux_search_open: { message: 'Open search' },\n skyux_search_placeholder: { message: 'Find in this list' },\n },\n 'FR-CA': {\n skyux_autocomplete_add: { message: 'Nouveau' },\n skyux_autocomplete_multiple_results: {\n message: '{0} résultats disponibles.',\n },\n skyux_autocomplete_no_results: { message: 'Aucune correspondance trouvée' },\n skyux_autocomplete_one_result: { message: 'Un résultat disponible.' },\n skyux_autocomplete_show_all: { message: 'Afficher tout' },\n skyux_autocomplete_show_all_count: { message: 'Afficher tout {0}' },\n skyux_autocomplete_show_matches_count: {\n message: 'Afficher les correspondances ({0})',\n },\n skyux_country_field_dropdown_hint_text: { message: 'Recherchez un pays' },\n skyux_country_field_search_placeholder: { message: 'Rechercher un pays' },\n skyux_lookup_search_button_show_more: {\n message: 'Afficher tous les résultats de la recherche',\n },\n skyux_lookup_show_more_add: { message: 'Nouveau' },\n skyux_lookup_show_more_add_button_aria_label: { message: 'Ajouter {0}' },\n skyux_lookup_show_more_displayed_items_updated: {\n message: '{1} éléments affichés, avec {0} sélectionné(s).',\n },\n skyux_lookup_show_more_select_all_button_aria_label: {\n message: 'Sélectionner tout {0}',\n },\n skyux_lookup_show_more_select_all_button_title: {\n message: 'Sélectionner tout',\n },\n skyux_lookup_show_more_clear_all_button_aria_label: {\n message: 'Supprimer tous les éléments sélectionnés {0}',\n },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Effacer tout' },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Montrer seulement ce qui est sélectionné {0}',\n },\n skyux_lookup_show_more_cancel: { message: 'Annuler' },\n skyux_lookup_show_more_modal_title: { message: 'Sélectionner {0}' },\n skyux_lookup_show_more_no_results: {\n message: 'Aucune correspondance trouvée',\n },\n skyux_lookup_show_more_select: { message: 'Sélectionner' },\n skyux_lookup_show_more_select_context: { message: 'Sélectionner {0}' },\n skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n skyux_search_aria_label_descriptor: { message: 'Rechercher {0}' },\n skyux_search_dismiss: { message: 'Omettre la recherche' },\n skyux_search_label: { message: 'Rechercher des articles' },\n skyux_search_open: { message: 'Ouvrir la recherche' },\n skyux_search_placeholder: { message: 'Trouver dans cette liste' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputTextChange } from './types/autocomplete-input-text-change';\n\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\n@Directive({\n selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n standalone: false,\n})\nexport class SkyAutocompleteInputDirective\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n /**\n * The value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n @Input()\n public set autocompleteAttribute(value: string | undefined) {\n if (!value) {\n this.#_autocompleteAttribute = 'off';\n } else {\n this.#_autocompleteAttribute = value;\n }\n\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'autocomplete',\n this.#_autocompleteAttribute,\n );\n }\n\n public get autocompleteAttribute(): string {\n return this.#_autocompleteAttribute || 'off';\n }\n\n /**\n * Whether to disable the autocomplete field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value ?? false;\n this.#renderer.setProperty(\n this.#elementRef.nativeElement,\n 'disabled',\n value,\n );\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n public get blur(): Observable<void> {\n return this.#blurObs;\n }\n\n public get displayWith(): string {\n return this.#_displayWith;\n }\n\n public set displayWith(value: string) {\n this.#_displayWith = value;\n this.inputTextValue = this.#getValueByKey();\n }\n\n public get focus(): Observable<void> {\n return this.#focusObs;\n }\n\n public get inputTextValue(): string {\n return this.#elementRef.nativeElement.value;\n }\n\n public set inputTextValue(value: string) {\n this.#elementRef.nativeElement.value = value || '';\n }\n\n public get textChanges(): Observable<SkyAutocompleteInputTextChange> {\n return this.#textChangesObs;\n }\n\n public get value(): any {\n return this.#_value;\n }\n\n public set value(value: any) {\n const isNewValue = value !== this.#_value;\n\n /* istanbul ignore else */\n if (isNewValue) {\n this.#_value = value;\n this.inputTextValue = this.#getValueByKey();\n this.onChange(this.#_value);\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isFirstChange && this.#control) {\n this.#control.markAsPristine();\n }\n\n if (this.#isFirstChange && this.#_value) {\n this.#isFirstChange = false;\n }\n }\n }\n\n #blur: Subject<void>;\n\n #blurObs: Observable<void>;\n\n #control: AbstractControl | undefined;\n\n readonly #elementRef = inject(ElementRef);\n\n #focus: Subject<void>;\n\n #focusObs: Observable<void>;\n\n #isFirstChange = true;\n\n #ngUnsubscribe = new Subject<void>();\n\n readonly #renderer = inject(Renderer2);\n\n #textChanges: Subject<SkyAutocompleteInputTextChange>;\n\n #textChangesObs: Observable<SkyAutocompleteInputTextChange>;\n\n #_autocompleteAttribute: string | undefined;\n\n #_disabled = false;\n\n #_displayWith = '';\n\n #_value: any;\n\n constructor() {\n this.#blur = new Subject<void>();\n this.#focus = new Subject<void>();\n this.#textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n this.#blurObs = this.#blur.asObservable();\n this.#focusObs = this.#focus.asObservable();\n this.#textChangesObs = this.#textChanges.asObservable();\n }\n\n public ngOnInit(): void {\n const element = this.#elementRef.nativeElement;\n\n this.#setAttributes(this.#elementRef);\n\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#textChanges.next({\n value: this.#elementRef.nativeElement.value,\n });\n }\n });\n\n observableFromEvent(element, 'blur')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#blur.next();\n }\n });\n\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n if (!this.disabled) {\n this.#focus.next();\n }\n });\n\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (!this.disabled) {\n this.#isFirstChange = false;\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.#blur.complete();\n this.#textChanges.complete();\n\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public writeValue(value: any): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn;\n }\n\n public restoreInputTextValueToPreviousState(): void {\n const modelValue = this.#getValueByKey();\n\n // If the search field contains text, make sure that the value\n // matches the selected descriptor key.\n if (this.inputTextValue !== modelValue) {\n this.inputTextValue = modelValue;\n }\n\n this.onTouched();\n }\n\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (!this.#control) {\n this.#control = control;\n }\n return null;\n }\n\n // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n public setActiveDescendant(descendantId: string | null): void {\n if (descendantId) {\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'aria-activedescendant',\n descendantId,\n );\n } else {\n this.#renderer.removeAttribute(\n this.#elementRef.nativeElement,\n 'aria-activedescendant',\n );\n }\n }\n\n /**\n * Used to connect the input to the overlay.\n */\n public setAriaControls(overlayId: string | null): void {\n if (overlayId) {\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'aria-controls',\n overlayId,\n );\n } else {\n this.#renderer.removeAttribute(\n this.#elementRef.nativeElement,\n 'aria-controls',\n );\n }\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange(value: any): void {}\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched(): void {}\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onValidatorChange = (): void => {};\n\n #setAttributes(elementRef: ElementRef): void {\n const element = elementRef.nativeElement;\n\n this.#renderer.setAttribute(\n element,\n 'autocomplete',\n this.autocompleteAttribute,\n );\n this.#renderer.setAttribute(element, 'autocapitalize', 'none');\n this.#renderer.setAttribute(element, 'autocorrect', 'off');\n this.#renderer.setAttribute(element, 'spellcheck', 'false');\n this.#renderer.addClass(element, 'sky-form-control');\n }\n\n #getValueByKey(): string {\n return this.value ? this.value[this.displayWith] : '';\n }\n}\n","import { EventEmitter, Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyAutocompleteSearchAsyncDisabled',\n standalone: false,\n})\nexport class SkyAutocompleteSearchAsyncDisabledPipe implements PipeTransform {\n public transform(\n searchAsync: EventEmitter<SkyAutocompleteSearchAsyncArgs>,\n searchAsyncDisabled: boolean | undefined,\n ): boolean {\n return searchAsyncDisabled || searchAsync.observers.length === 0;\n }\n}\n","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value: string): string {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyOverlayInstance } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAutocompleteAdapterService {\n #coreAdapterService: SkyCoreAdapterService;\n\n #renderer: Renderer2;\n\n constructor(\n coreAdapterService: SkyCoreAdapterService,\n rendererFactory: RendererFactory2,\n ) {\n this.#coreAdapterService = coreAdapterService;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Adds the className for the provided element.\n */\n public addCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.addClass(element, className);\n }\n }\n\n public getOverlayFocusableElements(\n overlay: SkyOverlayInstance,\n ): HTMLElement[] {\n return this.#coreAdapterService.getFocusableChildren(\n /* Sanity check - calling function also has null check */\n /* istanbul ignore next */\n overlay?.componentRef.location.nativeElement,\n { ignoreTabIndex: true },\n );\n }\n\n /**\n * Removes the className for the provided element.\n */\n public removeCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.#renderer.removeClass(element, className);\n }\n }\n\n public setDropdownWidth(\n elementRef: ElementRef,\n dropdownRef: ElementRef,\n isInputBox: boolean,\n ): void {\n // `setTimeout` ensures that the input box size is correct when grabbing the width. When the input is initially focused a parent's `overflow-y: auto` value can cause the width to be incorrect during initial rendering.\n setTimeout(() => {\n const parentElement = isInputBox\n ? elementRef.nativeElement.closest('.sky-input-box')\n : elementRef.nativeElement;\n if (parentElement) {\n const width = parentElement.getBoundingClientRect().width;\n this.#renderer.setStyle(\n dropdownRef.nativeElement,\n 'width',\n `${width}px`,\n );\n }\n });\n }\n\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n public setTabIndex(element: HTMLElement, tabIndex: number): void {\n element.tabIndex = tabIndex;\n }\n}\n","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteDefaultSearchFunctionOptions } from './types/autocomplete-default-search-function-options';\nimport { SkyAutocompleteSearchArgs } from './types/autocomplete-search-args';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSearchFunctionResponse } from './types/autocomplete-search-function-response';\n\nexport function skyAutocompleteDefaultSearchFunction(\n options: SkyAutocompleteDefaultSearchFunctionOptions,\n): SkyAutocompleteSearchFunction {\n const filterData = function (\n searchText: string,\n data: any[],\n args?: SkyAutocompleteSearchArgs,\n ): any[] {\n return data.filter((item: any) => {\n if (!options.searchFilters || !options.searchFilters.length) {\n return true;\n }\n\n // Find the first failing filter (we can skip the others if one fails).\n const failedFilter = options.searchFilters.find(\n (filter: SkyAutocompleteSearchFunctionFilter) => {\n return !filter.call({}, searchText, item, args);\n },\n );\n\n return failedFilter === undefined;\n });\n };\n\n const search = function (\n searchText: string,\n data: any[],\n args?: SkyAutocompleteSearchArgs,\n ): SkyAutocompleteSearchFunctionResponse {\n const results: any[] = [];\n\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n const filteredData = filterData(searchText, data, args);\n\n /* Autocomplete can now send empty text, return all filtered data in that scenario */\n if (searchText === '') {\n return filteredData;\n }\n\n for (let i = 0, n = filteredData.length; i < n; i++) {\n const result = filteredData[i];\n const isMatch = options.propertiesToSearch.find((property: string) => {\n let value = (result[property] || '').toString();\n value = normalizeDiacritics(value).toUpperCase();\n return value.indexOf(searchTextNormalized) > -1;\n });\n\n if (isMatch) {\n results.push(result);\n }\n }\n\n return results;\n };\n\n return search;\n}\n","/**\n * @internal\n */\nexport enum SkyAutocompleteMessageType {\n /**\n * Closes the dropdown.\n */\n CloseDropdown = 0,\n\n /**\n * Repositions the dropdown.\n */\n RepositionDropdown = 1,\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EnvironmentInjector,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport {\n SKY_STACKING_CONTEXT,\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyLiveAnnouncerService,\n SkyOverlayInstance,\n SkyOverlayService,\n SkyStackingContext,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n from,\n fromEvent as observableFromEvent,\n of,\n} from 'rxjs';\nimport {\n debounceTime,\n delay,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n} from 'rxjs/operators';\n\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from './types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchAsyncResult } from './types/autocomplete-search-async-result';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSelectionChange } from './types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from './types/autocomplete-show-more-args';\n\n/**\n * @internal\n */\ninterface SkyAutocompleteSearchResult {\n elementId: string;\n data: any;\n}\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [SkyAutocompleteAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyAutocompleteComponent implements OnDestroy, AfterViewInit {\n //#region public_api\n\n /**\n * The HTML element ID of the element that labels\n * the autocomplete text input. This sets the input's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n /**\n * The static data source for the autocomplete component to search\n * when users enter text. For a dynamic data source, such as an array that\n * changes due to server calls, use `search` or `searchAsync` instead.\n * You can specify static data, such as an array of objects,\n * or you can pull data from a database.\n */\n @Input()\n public set data(value: any[] | undefined) {\n this.#_data = value ?? [];\n }\n\n public get data(): any[] {\n return this.#_data;\n }\n\n /**\n * How many milliseconds to wait before searching while users\n * enter text in the autocomplete field.\n * @default 0\n */\n @Input()\n public set debounceTime(value: number | undefined) {\n this.#_debounceTime = value ?? 0;\n }\n\n public get debounceTime(): number {\n return this.#_debounceTime;\n }\n\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string | undefined) {\n this.#_descriptorProperty = value || 'name';\n }\n\n public get descriptorProperty(): string {\n return this.#_descriptorProperty;\n }\n\n /**\n * Hint text to show in the dropdown\n * @internal\n */\n @Input()\n public dropdownHintText: string | undefined;\n\n /**\n * @internal\n * Whether to display a button in the dropdown that opens a picker where users can view all options.\n */\n @Input()\n public set enableShowMore(value: boolean | undefined) {\n this.#_enableShowMore = !!value;\n this.#updateIsResultsVisible();\n }\n public get enableShowMore(): boolean {\n return this.#_enableShowMore;\n }\n\n /**\n * The observable of `SkyAutocompleteMessage` that can close the dropdown.\n * @internal\n */\n @Input()\n public set messageStream(value: Subject<SkyAutocompleteMessage> | undefined) {\n this.#_messageStream = value ?? new Subject<SkyAutocompleteMessage>();\n this.#initMessageStream();\n }\n\n public get messageStream(): Subject<SkyAutocompleteMessage> {\n return this.#_messageStream;\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass: string | undefined;\n\n /**\n * The object properties to search.\n * @default [\"name\"]\n * @deprecated We recommend against using this property. To search specific properties, use the `searchAsync` event instead.\n */\n @Input()\n public set propertiesToSearch(value: string[] | undefined) {\n this.#_propertiesToSearch = value ?? ['name'];\n\n this.#updateDefaultSearchOptions();\n }\n\n public get propertiesToSearch(): string[] {\n return this.#_propertiesToSearch;\n }\n\n /**\n * The function that dynamically manages the data to display in search results when users\n * change the text in the autocomplete field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated We recommend against using this property. To call a remote data source, use the `searchAsync` event instead.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction | undefined) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n\n public get search(): SkyAutocompleteSearchFunction | undefined {\n return this.#_search;\n }\n\n /**\n * The template that formats each search result in the dropdown list.\n * The autocomplete component injects search result values into the template\n * as `item` variables that reference all of the object properties of the search results.\n */\n @Input()\n public searchResultTemplate: TemplateRef<unknown> | undefined;\n\n /**\n * The minimum number of characters that users must enter before\n * the autocomplete component searches the data source and displays search\n * results in the dropdown list. Can be set to `0` to trigger `searchAsync` on focus\n * or return all items if using the `data` input.\n * @default 1\n */\n @Input()\n public set searchTextMinimumCharacters(value: number | undefined) {\n if (value !== undefined && value >= 0) {\n this.#_searchTextMinimumCharacters = value;\n } else {\n this.#_searchTextMinimumCharacters = 1;\n }\n }\n\n public get searchTextMinimumCharacters(): number {\n return this.#_searchTextMinimumCharacters;\n }\n\n /**\n * The array of functions to call against each search result. This filters\n * the search results when using the `data` input and the default search function.\n * When the `search` property specifies a custom search function, you must\n * manually apply filters inside that function. The function must return `true`\n * or `false` for each result to indicate whether to display it in the dropdown list.\n *\n * @deprecated We recommend against using this property. To filter results, use the `searchAsync` event instead.\n */\n @Input()\n public set searchFilters(\n value: SkyAutocompleteSearchFunctionFilter[] | undefined,\n ) {\n this.#_searchFilters = value;\n\n this.#updateDefaultSearchOptions();\n }\n\n public get searchFilters():\n | SkyAutocompleteSearchFunctionFilter[]\n | undefined {\n return this.#_searchFilters;\n }\n\n /**\n * The maximum number of search results to display in the dropdown list.\n * By default, the component displays all matching results.\n */\n @Input()\n public set searchResultsLimit(value: number | undefined) {\n this.#_searchResultsLimit = value || 0;\n }\n\n public get searchResultsLimit(): number {\n return this.#_searchResultsLimit;\n }\n\n /**\n * @internal\n * Whether to display a button that lets users add options to the data source.\n * @default false\n */\n @Input()\n public set showAddButton(value: boolean | undefined) {\n this.#_showAddButton = !!value;\n this.#updateIsResultsVisible();\n }\n public get showAddButton(): boolean {\n return this.#_showAddButton;\n }\n\n /**\n * The text to display when no search results are found.\n * @default \"No matches found\"\n */\n @Input()\n public noResultsFoundText: string | undefined;\n\n /**\n * @internal\n * Allows async search to be disabled even when a listener is specified for\n * the `searchAsync` output.\n * @default false\n */\n @Input()\n public searchAsyncDisabled: boolean | undefined = false;\n\n /**\n * When using `searchAsync`, allows the user to specify arbitrary\n * values not in the search results. This only works in combination\n * with `searchAsync`.\n * @default false\n */\n public allowAnyValue = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the search text in each search result. Set this to `false`\n * when your search returns results that aren't exact text matches, such as\n * returning \"Bob\" for \"Robert.\"\n * @default true\n */\n public highlightSearchText = input(true, { transform: booleanAttribute });\n\n /**\n * @internal\n * Fires when users select the button to add options to the data source.\n */\n @Output()\n public addClick = new EventEmitter<void>();\n\n /**\n * @internal\n * Fires when users select the button to view all options.\n */\n @Output()\n public showMoreClick = new EventEmitter<SkyAutocompleteShowMoreArgs>();\n\n /**\n * Fires when users select items in the dropdown list.\n */\n @Output()\n public selectionChange = new EventEmitter<SkyAutocompleteSelectionChange>();\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n /**\n * @internal\n */\n @Output()\n public openChange = new EventEmitter<boolean>();\n\n //#endregion\n\n //#region template_properties\n\n public get searchResults(): SkyAutocompleteSearchResult[] {\n return this.#_searchResults || [];\n }\n\n public set searchResults(value: SkyAutocompleteSearchResult[]) {\n this.#_searchResults = value;\n }\n\n public get highlightText(): string[] {\n return this.#_highlightText || [];\n }\n\n public set highlightText(value: string[]) {\n this.#_highlightText = value;\n }\n\n public isOpen = false;\n\n public resultsListId: string;\n\n public resultsWrapperId: string;\n\n public searchText = '';\n\n public get showActionsArea(): boolean {\n return !!this.showAddButton || !!this.enableShowMore;\n }\n\n public isSearchingAsync = false;\n\n public searchResultsCount: number | undefined;\n\n //#endregion\n\n @ContentChild(SkyAutocompleteInputDirective)\n public set inputDirective(\n directive: SkyAutocompleteInputDirective | undefined,\n ) {\n if (!directive) {\n throw Error(\n [\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' '),\n );\n }\n\n if (this.#_inputDirective !== directive) {\n // Unsubscribe from old subscriptions on any previous input directive\n this.#inputDirectiveUnsubscribe.next();\n\n this.#_inputDirective = directive;\n\n this.#_inputDirective.displayWith = this.descriptorProperty;\n\n this.#_inputDirective.textChanges\n .pipe(\n takeUntil(this.#inputDirectiveUnsubscribe),\n debounceTime(this.debounceTime),\n switchMap((change) => {\n this.isSearchingAsync = true;\n return of(change);\n }),\n )\n .subscribe((change) => {\n this.#searchTextChanged(change.value);\n });\n\n // We delay this listener by 25ms to give things watching the value time to respond (such as the search button).\n this.#_inputDirective.blur\n .pipe(delay(25), takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n directive.restoreInputTextValueToPreviousState();\n this.#closeDropdown();\n this.#cancelCurrentSearch();\n directive.onTouched();\n this.#hasFocus = false;\n this.#liveAnnounceService.clear();\n });\n\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.#hasFocus = true;\n if (this.showActionsArea || this.dropdownHintText) {\n this.#openDropdown();\n }\n if (this.searchTextMinimumCharacters === 0) {\n this.isSearchingAsync = true;\n this.#searchTextChanged('');\n }\n });\n }\n }\n\n public get inputDirective(): SkyAutocompleteInputDirective | undefined {\n return this.#_inputDirective;\n }\n\n @ViewChild('resultsTemplateRef', { read: TemplateRef })\n public resultsTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('resultsRef', { read: ElementRef })\n public set resultsRef(value: ElementRef | undefined) {\n if (value) {\n this.#_resultsRef = value;\n this.#destroyAffixer();\n this.#createAffixer();\n }\n }\n\n public get resultsRef(): ElementRef | undefined {\n return this.#_resultsRef;\n }\n\n public searchOrDefault: SkyAutocompleteSearchFunction;\n\n protected isResultsVisible: Observable<boolean>;\n\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n #activeElementIndex = -1;\n\n #adapterService: SkyAutocompleteAdapterService;\n\n #affixer: SkyAffixer | undefined;\n\n #affixService: SkyAffixService;\n\n #changeDetector: ChangeDetectorRef;\n\n #elementRef: ElementRef;\n\n readonly #environmentInjector = inject(EnvironmentInjector);\n\n readonly #liveAnnounceService = inject(SkyLiveAnnouncerService);\n\n readonly #libResourceService = inject(SkyLibResourcesService);\n\n #hasFocus = false;\n\n #inputBoxHostSvc: SkyInputBoxHostService | undefined;\n\n #inputDirectiveUnsubscribe = new Subject<void>();\n\n #messageStreamSub: Subscription | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #overlay: SkyOverlayInstance | undefined;\n\n #overlayService: SkyOverlayService;\n\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n #overlayFocusableElements: HTMLElement[] = [];\n\n #currentSearchSub: Subscription | undefined;\n\n #isResultsVisible = new BehaviorSubject<boolean>(false);\n\n #zIndex: Observable<number> | undefined;\n\n #_data: any[] = [];\n\n #_debounceTime = 0;\n\n #_descriptorProperty = 'name';\n\n #_enableShowMore = false;\n\n #_highlightText: string[] | undefined;\n\n #_inputDirective: SkyAutocompleteInputDirective | undefined;\n\n #_messageStream = new Subject<SkyAutocompleteMessage>();\n\n #_propertiesToSearch = ['name'];\n\n #_resultsRef: ElementRef | undefined;\n\n #_search: SkyAutocompleteSearchFunction | undefined;\n\n #_searchFilters: SkyAutocompleteSearchFunctionFilter[] | undefined;\n\n #_searchResults: SkyAutocompleteSearchResult[] | undefined;\n\n #_searchResultsLimit = 0;\n\n #_searchTextMinimumCharacters = 1;\n\n #_showAddButton = false;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elementRef: ElementRef,\n affixService: SkyAffixService,\n adapterService: SkyAutocompleteAdapterService,\n overlayService: SkyOverlayService,\n @Optional() inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional()\n @Inject(SKY_STACKING_CONTEXT)\n stackingContext?: SkyStackingContext,\n ) {\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#affixService = affixService;\n this.#adapterService = adapterService;\n this.#overlayService = overlayService;\n this.#inputBoxHostSvc = inputBoxHostSvc;\n this.#zIndex = stackingContext?.zIndex;\n\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n\n const id = ++uniqueId;\n this.resultsListId = `sky-autocomplete-list-${id}`;\n this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n this.isResultsVisible = this.#isResultsVisible.asObservable();\n }\n\n public ngAfterViewInit(): void {\n this.#addInputEventListeners();\n }\n\n public ngOnDestroy(): void {\n this.#cancelCurrentSearch();\n this.#inputDirectiveUnsubscribe.next();\n this.#inputDirectiveUnsubscribe.complete();\n this.#isResultsVisible.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.openChange.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit();\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n\n public handleKeydown(event: KeyboardEvent): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (event.key) {\n const key = event.key.toLowerCase();\n const activeElement = this.#getActiveElement();\n const activeElementId = activeElement?.id;\n const targetIsSearchResult = this.searchResults.find(\n (r) => r.elementId === activeElementId,\n );\n\n switch (key) {\n case 'enter':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n } else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('click'));\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'tab':\n if (targetIsSearchResult) {\n this.#selectSearchResultById(activeElementId);\n } else {\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n }\n\n this.#closeDropdown();\n break;\n\n case 'escape':\n this.#closeDropdown();\n break;\n\n case 'arrowdown':\n case 'down':\n this.#removeFocusedClass();\n if (\n this.#activeElementIndex ===\n this.#overlayFocusableElements.length - 1 ||\n this.#activeElementIndex === -1\n ) {\n this.#activeElementIndex = 0;\n } else {\n this.#activeElementIndex = this.#activeElementIndex + 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'arrowup':\n case 'up':\n this.#removeFocusedClass();\n if (this.#activeElementIndex <= 0) {\n this.#activeElementIndex =\n this.#overlayFocusableElements.length - 1;\n } else {\n this.#activeElementIndex = this.#activeElementIndex - 1;\n }\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n }\n\n #announceResults(): void {\n this.#libResourceService\n .getStrings({\n noResults: 'skyux_autocomplete_no_results',\n singleCountResult: 'skyux_autocomplete_one_result',\n multipleCountResults: [\n 'skyux_autocomplete_multiple_results',\n this.searchResultsCount,\n ],\n })\n .pipe(take(1))\n .subscribe((localizedStrings) => {\n let announcementString = '';\n if (this.searchResultsCount && this.searchResultsCount > 0) {\n announcementString =\n this.searchResultsCount === 1\n ? localizedStrings.singleCountResult\n : localizedStrings.multipleCountResults;\n this.#liveAnnounceService.announce(announcementString);\n } else if (this.searchResultsCount === 0) {\n this.#liveAnnounceService.announce(localizedStrings.noResults);\n }\n });\n }\n\n public moreButtonClicked(): void {\n this.showMoreClick.emit({ inputValue: this.searchText });\n if (this.inputDirective) {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n this.#closeDropdown();\n }\n\n public onResultClick(id: string, event: MouseEvent): void {\n this.#selectSearchResultById(id);\n\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onResultMouseMove(id: number): void {\n if (id !== this.#activeElementIndex) {\n this.#removeFocusedClass();\n this.#activeElementIndex = id;\n this.#addFocusedClass();\n this.#changeDetector.markForCheck();\n }\n }\n\n public isElementFocused(ref: HTMLElement): boolean {\n return ref === this.#overlayFocusableElements[this.#activeElementIndex];\n }\n\n #searchTextChanged(searchText: string | undefined): void {\n // reaffix the dropdown during searching when the wait shrinks it.\n if (this.isOpen) {\n setTimeout(() => {\n if (this.#affixer) {\n this.#affixer.reaffix();\n }\n });\n }\n if (this.#hasFocus) {\n this.#openDropdown();\n if (!searchText?.trim() && this.searchTextMinimumCharacters !== 0) {\n this.#handleEmptySearchText();\n return;\n }\n\n const trimmedSearchText = searchText?.trim() || '';\n const isLongEnough =\n trimmedSearchText.length >= this.searchTextMinimumCharacters;\n const isDifferent =\n searchText !== this.searchText ||\n (this.searchText === '' && this.searchTextMinimumCharacters === 0);\n\n this.searchText = trimmedSearchText.trim();\n this.#updateIsResultsVisible();\n\n if (isLongEnough && isDifferent) {\n this.#performSearchAndUpdateResults();\n } else {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n } else {\n this.isSearchingAsync = false;\n }\n }\n\n #handleEmptySearchText(): void {\n // Emit selectionChange if value has been cleared.\n if (this.inputDirective && this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({ selectedItem: undefined });\n }\n\n if (!this.showActionsArea && !this.dropdownHintText) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n\n #performSearchAndUpdateResults(): void {\n this.#cancelCurrentSearch();\n\n this.#currentSearchSub = this.#performSearch().subscribe({\n next: (result) => {\n const items = (\n result?.items as Record<string, unknown>[] | undefined\n )?.filter((item) => {\n return item && this.descriptorProperty in item;\n });\n\n this.searchResults =\n items?.map((r, i) => {\n const result: SkyAutocompleteSearchResult = {\n elementId: `${this.resultsListId}-item-${i}`,\n data: r,\n };\n return result;\n }) || [];\n\n this.searchResultsCount = result?.totalCount || 0;\n\n this.#displayResultsDropdown();\n },\n complete: () => {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n },\n });\n }\n\n #displayResultsDropdown(): void {\n this.highlightText = this.#getHighlightText(this.searchText);\n this.#removeFocusedClass();\n this.#removeActiveDescendant();\n if (this.searchResults.length > 0) {\n this.#activeElementIndex = 0;\n } else {\n this.#activeElementIndex = -1;\n }\n\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n\n // Safety check\n /* istanbul ignore else */\n if (this.isOpen) {\n // Let the results populate in the DOM before recalculating placement.\n setTimeout(() => {\n if (this.#affixer) {\n this.#affixer.reaffix();\n this.#changeDetector.detectChanges();\n this.#initOverlayFocusableElements();\n }\n });\n } else {\n this.#openDropdown();\n this.#changeDetector.markForCheck();\n }\n }\n\n #performSearch(): Observable<SkyAutocompleteSearchAsyncResult | undefined> {\n if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n displayType: 'popover',\n offset: 0,\n searchText: this.searchText,\n };\n\n this.searchAsync.emit(searchAsyncArgs);\n\n return this.allowAnyValue()\n ? this.#combineSearchTextWithResult(searchAsyncArgs)\n : searchAsyncArgs.result?.pipe(take(1)) || of(undefined);\n }\n\n const result = this.searchOrDefault(this.searchText, this.data, {\n context: 'popover',\n });\n\n if (result instanceof Array) {\n return of({ items: result, totalCount: result.length });\n }\n\n return from(result).pipe(\n map((items) => {\n return { items, totalCount: items.length };\n }),\n );\n }\n\n #combineSearchTextWithResult(\n searchAsyncArgs: SkyAutocompleteSearchAsyncArgs,\n ): Observable<SkyAutocompleteSearchAsyncResult> {\n const searchTextItem = { [this.descriptorProperty]: this.searchText };\n const searchTextResult = { items: [searchTextItem], totalCount: 1 };\n\n if (searchAsyncArgs.result) {\n return searchAsyncArgs.result.pipe(\n take(1),\n map((result) => {\n if (\n (result.items as Record<string, string>[]).some(\n (item) => item[this.descriptorProperty] === this.searchText,\n )\n ) {\n return result;\n }\n\n // Include a result for the current search text as the first option\n // if no exact match is found in the results.\n return { ...result, items: [searchTextItem, ...result.items] };\n }),\n // Display the current search text immediately while async results load.\n startWith<SkyAutocompleteSearchAsyncResult>(searchTextResult),\n );\n }\n\n return of(searchTextResult);\n }\n\n #cancelCurrentSearch(): void {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n }\n }\n\n /**\n * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n */\n #getHighlightText(searchText: string): string[] {\n if (this.highlightSearchText()) {\n const normalizedSearchText = normalizeDiacritics(searchText)\n .toLocaleUpperCase()\n .trim();\n if (!normalizedSearchText) {\n return [];\n }\n\n let matchesToHighlight: string[] = [];\n for (let i = 0, n = this.searchResults.length; i < n; i++) {\n const value = this.searchResults[i].data[this.descriptorProperty]\n .toString()\n .toLocaleUpperCase() as string;\n const normalizedDataValue = normalizeDiacritics(value);\n\n let offset = 0;\n let index: number;\n while (\n (index = normalizedDataValue.indexOf(normalizedSearchText, offset)) >\n -1\n ) {\n const matchedString = value.slice(index, index + searchText.length);\n offset = index + searchText.length;\n matchesToHighlight = matchesToHighlight.concat(matchedString);\n }\n }\n\n // Remove any duplicates from the array.\n return [...new Set(matchesToHighlight)];\n }\n\n return [];\n }\n\n #selectSearchResultById(id: string): void {\n const result = this.searchResults.find((r) => r.elementId === id);\n /* istanbul ignore else */\n if (result) {\n const data = result.data;\n this.searchText = data[this.descriptorProperty];\n if (this.inputDirective) {\n this.inputDirective.value = data;\n }\n this.selectionChange.emit({ selectedItem: data });\n }\n }\n\n #openDropdown(): void {\n if (!this.#overlay && this.resultsTemplateRef) {\n const overlay = this.#overlayService.create({\n enableClose: false,\n enablePointerEvents: true,\n environmentInjector: this.#environmentInjector,\n wrapperClass: this.wrapperClass,\n });\n\n if (this.#zIndex) {\n this.#zIndex.pipe(takeUntil(overlay.closed)).subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n\n overlay.attachTemplate(this.resultsTemplateRef);\n\n this.#overlay = overlay;\n this.isOpen = true;\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n this.#updateAriaControls();\n this.#initOverlayFocusableElements();\n this.#announceResults();\n this.openChange.emit(true);\n }\n }\n\n #closeDropdown(): void {\n this.#resetSearch();\n this.isOpen = false;\n this.#destroyOverlay();\n this.#removeActiveDescendant();\n this.#updateAriaControls();\n this.#changeDetector.markForCheck();\n this.openChange.emit(false);\n }\n\n #setActiveDescendant(): void {\n const activeElement =\n this.#overlayFocusableElements[this.#activeElementIndex];\n /* Sanity check */\n /* istanbul ignore else */\n if (activeElement && this.inputDirective) {\n this.inputDirective.setActiveDescendant(activeElement.id);\n }\n }\n\n #removeActiveDescendant(): void {\n if (this.inputDirective) {\n this.inputDirective.setActiveDescendant(null);\n }\n }\n\n #updateAriaControls(): void {\n if (this.inputDirective) {\n this.inputDirective.setAriaControls(this.#overlay?.id || null);\n }\n }\n\n #resetSearch(): void {\n this.searchResults = [];\n this.searchText = '';\n this.highlightText = [];\n this.#removeFocusedClass();\n this.#activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.#removeActiveDescendant();\n this.#initOverlayFocusableElements();\n this.#updateIsResultsVisible();\n this.#changeDetector.markForCheck();\n }\n\n #addInputEventListeners(): void {\n const element = this.#elementRef.nativeElement;\n\n observableFromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n this.handleKeydown(event);\n });\n\n observableFromEvent(window, 'resize')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen && this.resultsRef) {\n this.#adapterService.setDropdownWidth(\n this.#elementRef,\n this.resultsRef,\n !!this.#inputBoxHostSvc,\n );\n }\n });\n }\n\n #destroyOverlay(): void {\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n\n #createAffixer(): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (!this.#affixer && this.resultsRef) {\n const affixer = this.#affixService.createAffixer(this.resultsRef);\n\n this.#adapterService.setDropdownWidth(\n this.#elementRef,\n this.resultsRef,\n !!this.#inputBoxHostSvc,\n );\n\n affixer.affixTo(this.#elementRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n isSticky: true,\n placement: 'below',\n horizontalAlignment: 'left',\n });\n\n this.#affixer = affixer;\n }\n }\n\n #destroyAffixer(): void {\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n\n #initMessageStream(): void {\n if (this.#messageStreamSub) {\n this.#messageStreamSub.unsubscribe();\n this.#messageStreamSub = undefined;\n }\n\n this.#messageStreamSub = this.messageStream\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((message) => {\n switch (message.type) {\n case SkyAutocompleteMessageType.CloseDropdown:\n this.#closeDropdown();\n break;\n case SkyAutocompleteMessageType.RepositionDropdown:\n // Settimeout waits for changes in DOM (e.g., tokens being removed)\n setTimeout(() => {\n /* istanbul ignore else */\n if (this.#affixer) {\n this.#affixer.reaffix();\n }\n });\n break;\n }\n });\n }\n\n #initOverlayFocusableElements(): void {\n // Wait for dropdown elements to render.\n setTimeout(() => {\n if (this.#overlay) {\n this.#overlayFocusableElements =\n this.#adapterService.getOverlayFocusableElements(this.#overlay);\n this.#overlayFocusableElements.forEach((el) => {\n this.#adapterService.setTabIndex(el, -1);\n });\n this.#addFocusedClass();\n this.#announceResults();\n }\n });\n }\n\n #getActiveElement(): HTMLElement {\n return this.#overlayFocusableElements[this.#activeElementIndex];\n }\n\n #removeFocusedClass(): void {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.removeCSSClass(\n this.#overlayFocusableElements[this.#activeElementIndex],\n 'sky-autocomplete-descendant-focus',\n );\n }\n }\n\n #addFocusedClass(): void {\n if (this.#activeElementIndex > -1) {\n this.#adapterService.addCSSClass(\n this.#overlayFocusableElements[this.#activeElementIndex],\n 'sky-autocomplete-descendant-focus',\n );\n this.#setActiveDescendant();\n }\n }\n\n #updateDefaultSearchOptions(): void {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n\n #updateIsResultsVisible(): void {\n const isResultsVisible =\n (!!this.searchText || this.searchTextMinimumCharacters === 0) &&\n (!this.showActionsArea || this.searchResults.length > 0);\n if (isResultsVisible !== this.#isResultsVisible.getValue()) {\n this.#isResultsVisible.next(isResultsVisible);\n }\n }\n}\n","<div\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n class=\"sky-autocomplete\"\n role=\"combobox\"\n [attr.aria-expanded]=\"\n isOpen &&\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-controls]=\"\n isOpen &&\n (showActionsArea || dropdownHintText || (isResultsVisible | async))\n ? resultsListId\n : null\n \"\n [attr.id]=\"resultsWrapperId\"\n>\n <ng-content />\n</div>\n\n<ng-template #resultsTemplateRef>\n <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\n <div\n #resultsRef\n class=\"sky-autocomplete-results-container\"\n [attr.id]=\"resultsListId\"\n [skyThemeClass]=\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\"\n (mousedown)=\"$event.preventDefault()\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (isSearchingAsync && !allowAnyValue()) {\n <div class=\"sky-autocomplete-results-waiting\">\n <sky-wait [isWaiting]=\"true\" />\n </div>\n } @else {\n @if (isResultsVisible | async) {\n <div\n class=\"sky-autocomplete-results\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n >\n @for (result of searchResults; track result.data; let i = $index) {\n @if (\n (!searchResultsLimit || i < searchResultsLimit) &&\n !(enableShowMore && i >= 5)\n ) {\n <div\n #searchResultEl\n class=\"sky-autocomplete-result\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"isElementFocused(searchResultEl)\"\n [attr.data-descriptor-value]=\"result.data[descriptorProperty]\"\n [attr.id]=\"result.elementId\"\n [skyHighlight]=\"highlightText\"\n (click)=\"onResultClick(result.elementId, $event)\"\n (mousemove)=\"onResultMouseMove(i)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchResultTemplate || defaultSearchResultTemplate;\n context: { item: result.data }\n \"\n />\n </div>\n }\n }\n @if (isSearchingAsync && allowAnyValue()) {\n <div class=\"sky-autocomplete-results-waiting\">\n <sky-wait [isWaiting]=\"true\" />\n </div>\n }\n @if (searchResults.length === 0) {\n <div class=\"sky-font-deemphasized sky-autocomplete-no-results\">\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n }\n </div>\n } @else if (dropdownHintText) {\n <div class=\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\">\n {{ dropdownHintText }}\n </div>\n }\n @if (showActionsArea) {\n <div class=\"sky-autocomplete-actions\">\n @if (\n enableShowMore &&\n (searchTextMinimumCharacters === 0 ||\n !searchText ||\n searchResults.length > 0)\n ) {\n <button\n class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n type=\"button\"\n (click)=\"moreButtonClicked()\"\n >\n @if (\n !(\n searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\n ) &&\n searchResults.length === 0 &&\n !searchText &&\n searchTextMinimumCharacters !== 0\n ) {\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n }\n @if (\n ((searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) ||\n (searchTextMinimumCharacters === 0 &&\n searchResultsCount !== undefined &&\n searchResultsCount > 0)) &&\n !searchText\n ) {\n {{\n 'skyux_autocomplete_show_all_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount\n | skyNumeric: { truncate: false }))\n }}\n }\n @if (searchText) {\n {{\n 'skyux_autocomplete_show_matches_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount\n | skyNumeric: { truncate: false }))\n }}\n }\n </button>\n }\n @if (\n (searchText || searchTextMinimumCharacters === 0) &&\n searchResults.length === 0\n ) {\n <div\n class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n }\n @if (showAddButton) {\n <button\n #addButtonEl\n class=\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\"\n tabindex=\"0\"\n type=\"button\"\n [class.focused]=\"isElementFocused(addButtonEl)\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon iconName=\"add\" />\n {{ 'skyux_autocomplete_add' | skyLibResources }}\n </button>\n }\n </div>\n }\n }\n </div>\n</ng-template>\n\n<ng-template #defaultSearchResultTemplate let-item=\"item\">\n {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyIdModule, SkyNumericModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n declarations: [\n SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutocompleteSearchAsyncDisabledPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\n","import { type Country } from 'intl-tel-input/data';\n\nimport type { SkyCountryFieldCountry } from './types/country';\n\n/**\n * Clone the country data for each component instance to avoid overwriting\n * the global country data.\n */\nexport function cloneCountryData(data: Country[]): SkyCountryFieldCountry[] {\n const clone = [...data];\n\n return clone.map((country) => {\n const mapped: SkyCountryFieldCountry = {\n iso2: country.iso2,\n dialCode: country.dialCode,\n name: country.name,\n priority: country.priority,\n };\n\n if (country.areaCodes) {\n mapped.areaCodes = [...country.areaCodes];\n }\n\n return mapped;\n });\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyCountryFieldContext } from './country-field-context';\n\n/**\n * @internal\n */\nexport const SKY_COUNTRY_FIELD_CONTEXT =\n new InjectionToken<SkyCountryFieldContext>('SkyCountryFieldContext');\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NgControl,\n NgModel,\n UntypedFormControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport intlTelInput from 'intl-tel-input';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\n\nimport { cloneCountryData } from './clone-country-data';\nimport { SkyCountryFieldCountry } from './types/country';\nimport { SkyCountryFieldContext } from './types/country-field-context';\nimport { SKY_COUNTRY_FIELD_CONTEXT } from './types/country-field-context-token';\n\nconst DEFAULT_COUNTRY_CODE = 'us';\n\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-country-field',\n templateUrl: './country-field.component.html',\n styleUrls: ['./country-field.component.scss'],\n providers: [SKY_COUNTRY_FIELD_VALIDATOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkyCountryFieldComponent\n implements ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n /**\n * The value for the HTML `autocomplete` attribute on the form input.\n * @default 'off'\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n @Input()\n public autocompleteAttribute: string | undefined;\n\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country code for the default country.\n * When search results include the default country, it appears at the top of the list.\n * @default \"us\"\n */\n @Input()\n public set defaultCountry(value: string | undefined) {\n if (!value) {\n value = DEFAULT_COUNTRY_CODE;\n }\n\n if (value !== this.#_defaultCountry) {\n this.#_defaultCountry = value.toLowerCase();\n\n this.#defaultCountryData = this.countries.find(\n (country) => country.iso2 === this.#_defaultCountry,\n );\n\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n }\n }\n\n public get defaultCountry(): string | undefined {\n return this.#_defaultCountry;\n }\n\n /**\n * Whether to disable the country field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean | undefined) {\n this.#_disabled = isDisabled ?? false;\n\n if (isDisabled) {\n this.countrySearchFormControl.disable();\n } else {\n this.countrySearchFormControl.enable();\n }\n\n this.#changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country codes for the countries that users can select. By default, all countries are available.\n */\n @Input()\n public set supportedCountryISOs(value: string[] | undefined) {\n // Ensure all values are the same case.\n if (Array.isArray(value)) {\n value = value.map((v) => v.toLowerCase());\n }\n\n this.#_supportedCountryISOs = value;\n this.#setupCountries();\n }\n\n public get supportedCountryISOs(): string[] {\n return this.#_supportedCountryISOs || [];\n }\n\n /**\n * Fires when the selected country changes.\n */\n @Output()\n public selectedCountryChange: EventEmitter<SkyCountryFieldCountry> =\n new EventEmitter<SkyCountryFieldCountry>();\n\n /**\n * Fires when the country field is focused out.\n * @internal\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n @Output()\n public countryFieldFocusout: EventEmitter<FocusEvent> =\n new EventEmitter<FocusEvent>();\n\n public countries: SkyCountryFieldCountry[] = [];\n\n public countrySearchFormControl: UntypedFormControl;\n\n public searchTextMinimumCharacters = 2;\n\n @ViewChild(SkyAutocompleteInputDirective)\n public countrySearchAutocompleteDirective:\n | SkyAutocompleteInputDirective\n | undefined;\n\n public set selectedCountry(newCountry: SkyCountryFieldCountry | undefined) {\n if (!this.#countriesAreEqual(this.selectedCountry, newCountry)) {\n const newCountryIso = newCountry?.iso2;\n if (newCountryIso) {\n const isoCountry = this.countries.find(\n (country) => country.iso2 === newCountryIso,\n );\n\n if (isoCountry) {\n newCountry = isoCountry;\n }\n }\n\n this.#_selectedCountry = newCountry;\n\n this.#sortCountriesWithSelectedAndDefault(newCountry);\n\n this.#internalFormChange = true;\n this.countrySearchFormControl.setValue(this.selectedCountry);\n\n if (!this.#isInitialChange) {\n this.onChange(newCountry);\n this.onTouched();\n\n this.selectedCountryChange.emit(newCountry);\n } else if (this.#ngControl?.control) {\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n this.#ngControl.control.markAsPristine();\n }\n\n this.#isInitialChange = false;\n\n /**\n * The if statement is complex. The control type check ensures that\n * we only watch for the initial time through this function on reactive forms. However,\n * template forms will send through `null` and then `undefined` on empty initialization\n * so we have to check for when the non-null pass through happens.\n */\n } else if (!(this.#ngControl instanceof NgModel) || newCountry !== null) {\n this.#isInitialChange = false;\n }\n }\n\n public get selectedCountry(): SkyCountryFieldCountry | undefined {\n return this.#_selectedCountry;\n }\n\n public context: SkyCountryFieldContext | null = inject(\n SKY_COUNTRY_FIELD_CONTEXT,\n {\n optional: true,\n },\n );\n\n public inputId: string;\n protected ariaDescribedBy: Observable<string | undefined> | undefined;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #defaultCountryData: SkyCountryFieldCountry | undefined;\n\n #injector: Injector;\n\n #internalFormChange = false;\n\n #isInitialChange = true;\n\n #ngControl: NgControl | null = null;\n\n #ngUnsubscribe = new Subject<void>();\n\n #_defaultCountry: string | undefined;\n\n #_disabled = false;\n\n #_selectedCountry: SkyCountryFieldCountry | undefined;\n\n #_supportedCountryISOs: string[] | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n ) {\n this.#changeDetector = changeDetector;\n this.#injector = injector;\n\n this.inputId = `sky-country-field-input-${uniqueId++}`;\n\n this.#setupCountries();\n\n this.countrySearchFormControl = new UntypedFormControl();\n }\n\n /**\n * Angular lifecycle hook for when the component is initialized\n * @internal\n */\n public ngOnInit(): void {\n this.#updateInputBox();\n\n this.#ngControl = this.#injector.get<NgControl | null>(\n NgControl as unknown as Type<NgControl>,\n null,\n );\n\n if (this.#ngControl) {\n this.#ngControl.valueAccessor = this;\n } else {\n /**\n * The initial change boolean is to determine if the form is setting the value. When no form\n * is present we don't want to ignore the first change.\n */\n this.#isInitialChange = false;\n }\n\n if (!this.defaultCountry) {\n this.defaultCountry = DEFAULT_COUNTRY_CODE;\n }\n\n this.countrySearchFormControl.valueChanges\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newValue) => {\n if (newValue && !this.#internalFormChange) {\n this.selectedCountry = newValue;\n }\n });\n this.#changeDetector.markForCheck();\n }\n\n /**\n * Angular lifecycle hook for when the component is destructed.\n * @internal\n */\n public ngOnDestroy(): void {\n this.selectedCountryChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Sets the component's touched value when the autocomplete is blurred\n * @internal\n */\n public onAutocompleteBlur(): void {\n this.onTouched();\n }\n\n /**\n * Sets the country to validate against based on the county's iso2 code.\n * @param newCountry The International Organization for Standardization's two-letter code\n * for the default country.\n * @internal\n */\n public onCountrySelected(newCountry: SkyAutocompleteSelectionChange): void {\n if (newCountry.selectedItem) {\n this.writeValue(\n this.countries.find(\n (countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2,\n ),\n );\n } else {\n this.writeValue(undefined);\n }\n }\n\n /**\n * Called when the Autocomplete textarea loses focus\n * @internal\n */\n public onAutocompleteFocusout(e: FocusEvent): void {\n this.countryFieldFocusout.emit(e);\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n public onChange = (value: SkyCountryFieldCountry | undefined): void => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = (): void => {};\n\n public registerOnChange(\n fn: (value: SkyCountryFieldCountry | undefined) => void,\n ): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (control.value) {\n if (\n (this.supportedCountryISOs &&\n this.supportedCountryISOs.length > 0 &&\n this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n !this.countries.find((country) => country.iso2 === control.value.iso2)\n ) {\n return { unsupportedCountry: true };\n }\n }\n\n return null;\n }\n\n public writeValue(value: SkyCountryFieldCountry | undefined): void {\n this.selectedCountry = value;\n this.#changeDetector.markForCheck();\n }\n\n protected onFocus($event: FocusEvent): void {\n ($event.target as HTMLTextAreaElement).select();\n }\n\n #countriesAreEqual(\n country1: SkyCountryFieldCountry | undefined,\n country2: SkyCountryFieldCountry | undefined,\n ): boolean {\n if (country1 && country2) {\n return country1.iso2 === country2.iso2;\n }\n\n // NOTE: We are doing this in this way because template forms will send through `null`\n // and then `undefined` on empty initialization. These are functionally equivalent but will\n // not pass a standard triple equals check.\n return !country1 && !country2;\n }\n\n #countriesEqual(\n a: SkyCountryFieldCountry,\n b: SkyCountryFieldCountry,\n ): boolean {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n\n #setupCountries(): void {\n this.countries = cloneCountryData(intlTelInput.getCountryData());\n\n /* istanbul ignore else */\n if (!this.context?.inPhoneField) {\n /**\n * The library we get the country data from includes extra phone properties.\n * We want to remove these unless we are in a phone field\n */\n this.countries.forEach((country) => {\n delete country.dialCode;\n delete country.areaCodes;\n delete country.priority;\n });\n }\n\n this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n\n if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n this.countries = this.countries.filter(\n (country: SkyCountryFieldCountry) => {\n return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n },\n );\n }\n }\n\n #sortCountriesWithSelectedAndDefault(\n selectedCountry: SkyCountryFieldCountry | undefined,\n ): void {\n let selectedCountryIndex: number;\n let selectedCountryData: SkyCountryFieldCountry;\n\n const sortedNewCountries = this.countries.sort((a, b) => {\n if (\n ((this.#defaultCountryData &&\n this.#countriesEqual(a, this.#defaultCountryData)) ||\n (a.name && b.name && a.name < b.name)) &&\n (!this.#defaultCountryData ||\n !this.#countriesEqual(this.#defaultCountryData, b))\n ) {\n return -1;\n } else {\n return 1;\n }\n });\n\n if (selectedCountry) {\n // Note: We are looking up this data here to ensure we are using the official data from the\n // library and not the data provided by the user on initialization of the component\n const foundCountry = this.countries.find(\n (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase(),\n );\n\n if (foundCountry) {\n selectedCountryData = foundCountry;\n selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n\n if (selectedCountryIndex >= 0) {\n this.countries.splice(selectedCountryIndex, 1);\n sortedNewCountries.splice(0, 0, selectedCountryData);\n }\n }\n }\n\n this.countries = sortedNewCountries;\n }\n\n #updateInputBox(): void {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.inputId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n });\n }\n }\n}\n","@if (!inputBoxHostSvc) {\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\" />\n}\n\n<ng-template #inputTemplateRef>\n <span\n class=\"sky-country-field-container\"\n [ngClass]=\"{\n 'sky-country-field-disabled': disabled\n }\"\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"inputBoxHostSvc?.labelId ?? inputId\"\n [data]=\"countries\"\n [dropdownHintText]=\"\n 'skyux_country_field_dropdown_hint_text' | skyLibResources\n \"\n [propertiesToSearch]=\"['name', 'iso2']\"\n [searchResultTemplate]=\"countrySearchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n (selectionChange)=\"onCountrySelected($event)\"\n >\n <div class=\"sky-country-field-input\">\n <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\n <textarea\n class=\"sky-form-control\"\n name=\"selectedCountry\"\n rows=\"1\"\n skyAutocomplete\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"\n context?.inPhoneField\n ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\n : inputBoxHostSvc?.labelText\n ? undefined\n : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\n \"\n [attr.id]=\"inputId\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [formControl]=\"countrySearchFormControl\"\n (blur)=\"onAutocompleteBlur()\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onAutocompleteFocusout($event)\"\n ></textarea>\n </div>\n </sky-autocomplete>\n </span>\n</ng-template>\n\n<ng-template #countrySearchResultTemplate let-item=\"item\">\n <div class=\"sky-country-field-search-result-flag\">\n <div [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"></div>\n </div>\n <div class=\"sky-country-field-search-result-info\">\n {{ item.name }}\n @if (context?.inPhoneField) {\n <span\n class=\"sky-font-deemphasized sky-country-field-search-result-dial-code\"\n >\n {{ item.dialCode }}\n </span>\n }\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyCountryFieldComponent],\n})\nexport class SkyCountryFieldModule {}\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySearchAdapterService {\n #renderer: Renderer2;\n\n constructor(renderer: Renderer2) {\n this.#renderer = renderer;\n }\n\n public selectInput(searchEl: ElementRef): void {\n this.#getInputEl(searchEl).select();\n }\n\n public focusInput(searchEl: ElementRef): void {\n this.#getInputEl(searchEl).focus();\n }\n\n public startInputAnimation(searchEl: ElementRef): void {\n const buttonWidth = this.#getSearchOpenButtonEl(searchEl).clientWidth;\n const offsetWidth = this.#getSearchContainerEl(searchEl).offsetLeft;\n const minWidth = buttonWidth + offsetWidth;\n\n this.#getInputContainerEl(searchEl).style.minWidth =\n minWidth.toString() + 'px';\n\n this.#renderer.setStyle(\n this.#getInputContainerEl(searchEl),\n 'min-width',\n minWidth.toString() + 'px',\n );\n }\n\n public endInputAnimation(searchEl: ElementRef): void {\n this.#renderer.setStyle(\n this.#getInputContainerEl(searchEl),\n 'min-width',\n '',\n );\n }\n\n #getInputContainerEl(searchEl: ElementRef): HTMLElement {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n\n #getSearchOpenButtonEl(searchEl: ElementRef): HTMLElement {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n\n #getSearchContainerEl(searchEl: ElementRef): HTMLElement {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n\n #getInputEl(searchEl: ElementRef): HTMLInputElement {\n return searchEl.nativeElement.querySelector('input');\n }\n}\n","import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n SkyBreakpoint,\n SkyContentInfo,\n SkyContentInfoProvider,\n SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SkySearchAdapterService } from './search-adapter.service';\n\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\n\n@Component({\n selector: 'sky-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('inputState', [\n state(\n INPUT_HIDDEN_STATE,\n style({\n opacity: 0,\n width: 0,\n }),\n ),\n state(\n INPUT_SHOWN_STATE,\n style({\n opacity: 1,\n width: '100%',\n }),\n ),\n transition('* <=> *', animate('150ms')),\n ]),\n ],\n providers: [SkySearchAdapterService],\n standalone: false,\n})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\n /**\n * The ARIA label for the search input. This sets the search input's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * Use a context-sensitive label, such as \"Search constituents.\" Context is especially important when multiple search inputs are in close proximity.\n * In toolbars, search inputs use the `listDescriptor` to provide context, and the ARIA label defaults to \"Search <listDescriptor>.\"\n * If the box includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The HTML element ID of the element that labels\n * the search. This sets the search's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the box does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * Fires when the search text is applied.\n */\n @Output()\n public searchApply = new EventEmitter<string>();\n\n /**\n * Fires when the search text is changed.\n */\n @Output()\n public searchChange = new EventEmitter<string>();\n\n /**\n * Fires when the search text is cleared.\n */\n @Output()\n public searchClear = new EventEmitter<void>();\n\n /**\n * Default search criteria for the input.\n */\n @Input()\n public searchText: string | undefined;\n\n /**\n * The expand mode for the search input. The valid options\n * include `\"responsive\"` to collapse the search input into a button on\n * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n * @default \"responsive\"\n */\n @Input()\n public set expandMode(value: string | undefined) {\n this.#_expandMode = value ?? EXPAND_MODE_RESPONSIVE;\n }\n\n public get expandMode(): string {\n return this.#_expandMode;\n }\n\n /**\n * How many milliseconds to wait before searching after users enter text in the search input.\n * @default 0\n */\n @Input()\n public set debounceTime(value: number | undefined) {\n this.#_debounceTime = value ?? 0;\n this.#setupSearchChangedEvent();\n }\n\n public get debounceTime(): number {\n return this.#_debounceTime;\n }\n\n /**\n * Whether to disable the search.\n * @default false\n */\n @Input()\n public set disabled(value: boolean | undefined) {\n this.#_disabled = value ?? false;\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Placeholder text to display in the search input until users\n * enter search criteria.\n * @default \"Find in this list\"\n */\n @Input()\n public placeholderText: string | undefined;\n\n public clearButtonShown = false;\n\n public dismissButtonShown = false;\n\n public inputAnimate: string = INPUT_SHOWN_STATE;\n\n public isCollapsible = true;\n\n public isFullWidth = false;\n\n public mobileSearchShown = false;\n\n public searchButtonShown = false;\n\n protected contentInfoObs: Observable<SkyContentInfo> | undefined;\n\n #changeRef: ChangeDetectorRef;\n\n #contentInfoProvider = inject(SkyContentInfoProvider, { optional: true });\n\n #elRef: ElementRef;\n\n #manualFocus = false;\n\n #searchAdapter: SkySearchAdapterService;\n\n #searchUpdated = new Subject<string>();\n\n #searchUpdatedSub: Subscription | undefined;\n\n #_debounceTime = 0;\n\n #_disabled = false;\n\n #_expandMode = EXPAND_MODE_RESPONSIVE;\n\n readonly #destroyRef = inject(DestroyRef);\n readonly #mediaQuerySvc = inject(SkyMediaQueryService);\n readonly #breakpoint = toSignal(this.#mediaQuerySvc.breakpointChange);\n\n constructor(\n elRef: ElementRef,\n searchAdapter: SkySearchAdapterService,\n changeRef: ChangeDetectorRef,\n ) {\n this.#elRef = elRef;\n this.#searchAdapter = searchAdapter;\n this.#changeRef = changeRef;\n\n this.contentInfoObs = this.#contentInfoProvider?.getInfo();\n }\n\n public ngOnInit(): void {\n if (this.#searchShouldCollapse()) {\n this.#mediaQuerySvc.breakpointChange\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((breakpoint) => {\n this.#mediaQueryCallback(breakpoint);\n });\n }\n\n this.#setupSearchChangedEvent();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (this.#expandModeBindingChanged(changes)) {\n switch (this.expandMode) {\n case EXPAND_MODE_NONE:\n this.isCollapsible = false;\n this.isFullWidth = false;\n break;\n case EXPAND_MODE_FIT:\n this.isCollapsible = false;\n this.isFullWidth = true;\n break;\n default:\n this.isCollapsible = true;\n this.isFullWidth = false;\n break;\n }\n }\n\n if (this.#searchBindingChanged(changes)) {\n this.#searchUpdated.next(this.searchText ?? '');\n this.clearButtonShown = !!(this.searchText && this.searchText !== '');\n if (this.#shouldOpenInput()) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n }\n this.#changeRef.detectChanges();\n }\n\n public clearSearchText(): void {\n this.searchText = '';\n this.clearButtonShown = false;\n\n this.#searchAdapter.focusInput(this.#elRef);\n this.#searchUpdated.next(this.searchText);\n\n this.searchApply.emit(this.searchText);\n\n this.searchClear.emit();\n }\n\n public enterPress(\n event: KeyboardEvent,\n searchText: string | undefined,\n ): void {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n\n public applySearchText(searchText: string | undefined): void {\n // Double check that search text is defined before attempting to trim off whitespace\n if (searchText) {\n searchText = searchText.trim();\n }\n\n if (searchText !== this.searchText) {\n this.searchText = searchText;\n }\n this.clearButtonShown = !!(searchText && searchText !== '');\n if (searchText && searchText !== '') {\n this.#searchAdapter.selectInput(this.#elRef);\n }\n\n this.searchApply.emit(searchText);\n }\n\n public searchTextChanged(searchText: string): void {\n this.searchText = searchText;\n this.#searchUpdated.next(searchText);\n }\n\n public toggleSearchInput(showInput: boolean): void {\n if (this.#searchShouldCollapse()) {\n this.#manualFocus = true;\n if (showInput) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n }\n }\n\n public inputAnimationStart(event: AnimationEvent): void {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.startInputAnimation(this.#elRef);\n\n if (event.toState === INPUT_SHOWN_STATE && this.#breakpoint() === 'xs') {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n\n public inputAnimationEnd(event: AnimationEvent): void {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.endInputAnimation(this.#elRef);\n\n const breakpoint = this.#breakpoint();\n\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs';\n\n if (\n (event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs') ||\n breakpoint !== 'xs'\n ) {\n this.mobileSearchShown = false;\n }\n\n setTimeout(() => {\n if (this.#manualFocus && !this.searchButtonShown) {\n this.#searchAdapter.focusInput(this.#elRef);\n this.#manualFocus = false;\n }\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#searchUpdated.complete();\n this.#searchUpdatedSub?.unsubscribe();\n }\n\n #searchBindingChanged(changes: SimpleChanges): boolean {\n return (\n changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue\n );\n }\n\n #expandModeBindingChanged(changes: SimpleChanges): boolean {\n return (\n changes['expandMode'] &&\n changes['expandMode'].previousValue !== changes['expandMode'].currentValue\n );\n }\n\n #shouldOpenInput(): boolean {\n return (\n this.searchText !== '' &&\n this.#breakpoint() === 'xs' &&\n this.#searchShouldCollapse()\n );\n }\n\n #mediaQueryCallback(breakpoint: SkyBreakpoint): void {\n if (this.#searchShouldCollapse()) {\n if (breakpoint === 'xs') {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n } else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.mobileSearchShown = false;\n }\n }\n this.#changeRef.markForCheck();\n }\n\n #searchShouldCollapse(): boolean {\n return (\n (this.isCollapsible || this.isCollapsible === undefined) &&\n this.isFullWidth !== true\n );\n }\n\n #setupSearchChangedEvent(): void {\n this.#searchUpdatedSub?.unsubscribe();\n\n this.#searchUpdatedSub = this.#searchUpdated\n .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n .subscribe((value) => {\n this.searchChange.emit(value);\n });\n }\n}\n","<div class=\"sky-search-container\">\n <div class=\"sky-search-button-container\">\n <button\n class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n [hidden]=\"!searchButtonShown\"\n [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n (click)=\"toggleSearchInput(true)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n </button>\n </div>\n <div\n class=\"sky-search-dismiss-container\"\n [hidden]=\"searchButtonShown\"\n [ngClass]=\"{\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n }\"\n >\n <div class=\"sky-search-item-input\">\n <div\n class=\"sky-search-input-container\"\n [@inputState]=\"inputAnimate\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <input\n #searchInput=\"skyId\"\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n skyId\n [attr.aria-label]=\"\n ariaLabelledBy\n ? undefined\n : ariaLabel ||\n ((contentInfoObs | async)?.descriptor?.type === 'text'\n ? ('skyux_search_aria_label_descriptor'\n | skyLibResources\n : (contentInfoObs | async)?.descriptor?.value)\n : ('skyux_search_label' | skyLibResources))\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (keyup)=\"enterPress($event, searchText)\"\n (ngModelChange)=\"searchTextChanged($event)\"\n />\n <span\n class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n [hidden]=\"!clearButtonShown\"\n >\n <button\n aria-hidden=\"true\"\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"clearSearchText()\"\n >\n <sky-icon iconName=\"close\" />\n </button>\n </span>\n <span\n *skyThemeIf=\"'default'\"\n class=\"sky-input-group-btn sky-input-box-btn-inset\"\n >\n <button\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"applySearchText(searchText)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n </button>\n </span>\n <div\n *skyThemeIf=\"'modern'\"\n aria-hidden=\"true\"\n class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n @if (mobileSearchShown) {\n <button\n class=\"sky-btn sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-btn-icon-borderless': 'modern'\n }\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" iconName=\"chevron-left\" />\n <sky-icon *skyThemeIf=\"'modern'\" iconName=\"chevron-double-left\" />\n </button>\n }\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon iconName=\"search\" />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySearchComponent } from './search.component';\n\n@NgModule({\n declarations: [SkySearchComponent],\n imports: [\n CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule,\n ],\n exports: [SkySearchComponent],\n})\nexport class SkySearchModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skySelectionModalItemSelected',\n})\nexport class SkySelectionModalItemSelectedPipe implements PipeTransform {\n public transform(id: unknown, selectedIdMap: Map<unknown, unknown>): boolean {\n return selectedIdMap.has(id);\n }\n}\n","import { SkyAutocompleteSearchAsyncFunction } from '../../autocomplete/types/autocomplete-search-async-function';\nimport { SkyLookupSelectModeType } from '../../lookup/types/lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from '../../lookup/types/lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the selection modal. These values are provided by the selection modal service.\n */\nexport class SkySelectionModalContext {\n public descriptorProperty: string;\n\n public idProperty: string;\n\n public initialSearch: string;\n\n public initialValue: unknown[];\n\n public searchAsync: SkyAutocompleteSearchAsyncFunction;\n\n public selectionDescriptor: string;\n\n public selectMode: SkyLookupSelectModeType;\n\n public showAddButton: boolean;\n\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n\n constructor(\n descriptorProperty: string,\n idProperty: string,\n initialSearch: string,\n initialValue: unknown[],\n searchAsync: SkyAutocompleteSearchAsyncFunction,\n selectMode: SkyLookupSelectModeType,\n selectionDescriptor: string,\n showAddButton: boolean,\n userConfig: SkyLookupShowMoreNativePickerConfig,\n ) {\n this.descriptorProperty = descriptorProperty;\n this.idProperty = idProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.searchAsync = searchAsync;\n this.selectMode = selectMode;\n this.selectionDescriptor = selectionDescriptor;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n SkyIdService,\n SkyLiveAnnouncerService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalSearchResult } from './types/selection-modal-search-result';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-selection-modal',\n templateUrl: './selection-modal.component.html',\n styleUrls: ['./selection-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySelectionModalItemSelectedPipe,\n SkyThemeModule,\n SkyToolbarModule,\n SkyWaitModule,\n SkyViewkeeperModule,\n ],\n})\nexport class SkySelectionModalComponent implements OnInit, OnDestroy {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick = new Subject<void>();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public displayedItems: any[] = [];\n\n public hasMoreItems = false;\n\n /**\n * Used to associate this modal with its owning lookup component.\n */\n public id: string;\n\n public isLoadingMore = false;\n\n public isSearching = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public items: any[] = [];\n\n public onlyShowSelected = false;\n\n public repeaterItemTemplate: TemplateRef<unknown> | null = null;\n\n public searchText: string | undefined;\n\n public selectedIdMap = new Map<unknown, unknown>();\n\n #continuationData: unknown;\n\n #currentSearchSub: Subscription | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #offset = 0;\n\n protected readonly context = inject(SkySelectionModalContext);\n protected readonly modalInstance = inject(SkyModalInstance);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #idSvc = inject(SkyIdService);\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n constructor() {\n this.id = this.#idSvc.generateId();\n }\n\n public ngOnInit(): void {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n\n this.#createInitialSelectedItemsMap();\n this.#loadSearchResults();\n }\n\n public ngOnDestroy(): void {\n this.#cancelCurrentSearch();\n\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public clearAll(): void {\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n // Only deselect items that have been loaded; items that would be loaded\n // after an infinite scroll event should remain selected.\n for (const item of this.items) {\n this.selectedIdMap.delete(item[this.context.idProperty]);\n }\n\n this.updateDisplayedItems();\n\n this.#changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public addItem(itemToAdd: any): void {\n // Add the selected item, then perform the search again in case the\n // newly-added item should be displayed as a search results.\n this.#offset = 0;\n this.onItemSelect(true, itemToAdd);\n this.#loadSearchResults();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n const itemId = itemToSelect[this.context.idProperty];\n\n // Create a new Map so the pipe transform will execute on the next\n // change detection cycle.\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n if (this.context.selectMode === 'single') {\n if (newSelectState) {\n this.selectedIdMap.clear();\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n } else {\n if (newSelectState) {\n this.selectedIdMap.set(itemId, itemToSelect);\n } else {\n this.selectedIdMap.delete(itemId);\n }\n }\n\n this.updateDisplayedItems();\n }\n\n public searchApplied(searchText: string): void {\n this.#offset = 0;\n this.searchText = searchText;\n\n this.#loadSearchResults();\n }\n\n public selectAll(): void {\n this.selectedIdMap = new Map();\n\n for (const item of this.items) {\n this.selectedIdMap.set(item[this.context.idProperty], item);\n }\n\n this.updateDisplayedItems();\n }\n\n public infiniteScrollEnd(): void {\n this.#cancelCurrentSearch();\n\n /* Sanity check - else case would only happen if this was called directly */\n /* istanbul ignore else */\n if (this.hasMoreItems) {\n this.isLoadingMore = true;\n\n this.#performSearch((result) => {\n this.items = this.items.concat(result.items);\n\n this.updateDisplayedItems();\n\n this.isLoadingMore = false;\n });\n }\n }\n\n public save(): void {\n const selectedItems = Array.from(\n this.selectedIdMap.values(),\n (itemData, index) => ({\n index,\n itemData,\n }),\n ).sort((a, b) => {\n return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n ? -1\n : 1;\n });\n\n this.modalInstance.save(selectedItems);\n }\n\n public updateDisplayedItems(): void {\n const selectedItems = this.items.filter((item) =>\n this.selectedIdMap.has(item[this.context.idProperty]),\n );\n\n if (this.onlyShowSelected) {\n if (!this.searchText) {\n this.displayedItems = Array.from(this.selectedIdMap.values());\n } else {\n this.displayedItems = selectedItems;\n }\n } else {\n this.displayedItems = this.items;\n }\n\n setTimeout(() => {\n this.#announceSelectionState(\n selectedItems.length,\n this.displayedItems.length,\n );\n this.#changeDetector.markForCheck();\n });\n }\n\n #loadSearchResults(): void {\n this.#cancelCurrentSearch();\n\n this.isSearching = true;\n\n this.#performSearch((result) => {\n this.isSearching = false;\n this.items = result.items;\n });\n\n this.#changeDetector.markForCheck();\n }\n\n #createInitialSelectedItemsMap(): void {\n this.selectedIdMap = new Map(\n this.context.initialValue.map((item) => [\n (item as Record<string, unknown>)[this.context.idProperty],\n item,\n ]),\n );\n }\n\n #performSearch(\n processResults: (result: SkySelectionModalSearchResult) => void,\n ): void {\n this.#currentSearchSub = this.context\n .searchAsync({\n displayType: 'modal',\n offset: this.#offset,\n searchText: this.searchText || '',\n continuationData: this.#continuationData,\n })\n .pipe(take(1))\n .subscribe((result) => {\n processResults(result);\n\n this.#continuationData = result.continuationData;\n this.hasMoreItems = result.hasMore || false;\n this.#offset = this.items.length;\n\n this.updateDisplayedItems();\n\n this.#changeDetector.markForCheck();\n });\n }\n\n #cancelCurrentSearch(): void {\n if (this.#currentSearchSub) {\n this.#currentSearchSub.unsubscribe();\n this.#currentSearchSub = undefined;\n this.isLoadingMore = false;\n this.isSearching = false;\n }\n }\n\n #announceSelectionState(\n selectedItemCount: number,\n displayedItemCount: number,\n ): void {\n this.#resourcesSvc\n .getString(\n 'skyux_lookup_show_more_displayed_items_updated',\n selectedItemCount.toString(),\n displayedItemCount.toString(),\n )\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n}\n","<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n @if (context.userConfig?.title) {\n {{ context.userConfig.title }}\n } @else {\n {{\n 'skyux_lookup_show_more_modal_title'\n | skyLibResources: context.selectionDescriptor\n }}\n }\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <sky-wait [isWaiting]=\"isSearching\" />\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar\n class=\"sky-lookup-show-more-modal-toolbar\"\n [listDescriptor]=\"context.selectionDescriptor\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n />\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n @if (context.showAddButton) {\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_add_button_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon iconName=\"add\" />\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n }\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n @if (context.selectMode === 'multiple') {\n <sky-toolbar class=\"sky-lookup-show-more-modal-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_all_button_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_clear_all_button_aria_label'\n | skyLibResources: context.selectionDescriptor\n \"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [labelText]=\"\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources: context.selectionDescriptor\n \"\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDisplayedItems()\"\n />\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n }\n </div>\n @if (!isSearching && displayedItems.length === 0) {\n <div class=\"sky-font-deemphasized sky-lookup-show-more-no-results\">\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n }\n <sky-repeater\n class=\"sky-lookup-show-more-repeater\"\n expandMode=\"none\"\n [ngClass]=\"{ 'hover-rows': context.selectMode === 'single' }\"\n >\n @for (item of displayedItems; track item) {\n <sky-repeater-item\n #repeaterItem\n [isSelected]=\"\n item[context.idProperty]\n | skySelectionModalItemSelected: selectedIdMap\n \"\n [itemName]=\"item[context.descriptorProperty]\"\n [selectable]=\"context.selectMode === 'multiple'\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: {\n item: item,\n checkboxId:\n context.selectMode === 'multiple'\n ? 'sky-checkbox-' +\n repeaterItem.contentId +\n '-item-checkbox-input'\n : undefined\n }\n \"\n />\n </sky-repeater-item-content>\n </sky-repeater-item>\n }\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"hasMoreItems && (!onlyShowSelected || !!searchText)\"\n [loading]=\"isLoadingMore\"\n (scrollEnd)=\"infiniteScrollEnd()\"\n />\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_context'\n | skyLibResources: context.selectionDescriptor\n \"\n [disabled]=\"isSearching\"\n (click)=\"save()\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-checkboxId=\"checkboxId\">\n @if (checkboxId) {\n <label class=\"selection-modal-item-label\" [attr.for]=\"checkboxId\">{{\n item[context.descriptorProperty]\n }}</label>\n } @else {\n {{ item[context.descriptorProperty] }}\n }\n</ng-template>\n","import { Observable, Subject } from 'rxjs';\n\nimport { SkySelectionModalCloseArgs } from './selection-modal-close-args';\n\n/**\n * Represents an instance of a selection modal.\n */\nexport class SkySelectionModalInstance {\n /**\n * An event that the selection modal instance emits when it closes.\n * It emits a `SkySelectionModalCloseArgs` object with a `selectedItems` property that includes\n * items selected by users on close or save and a `reason` property that indicates\n * whether the selection modal was saved or closed without saving.\n * The `reason` property accepts `\"cancel\"`, `\"close\"`, and `\"save\"`.\n */\n public get closed(): Observable<SkySelectionModalCloseArgs> {\n return this.#closedObs;\n }\n\n /**\n * @internal\n */\n public get itemAdded(): Observable<unknown> {\n return this.#itemAddedObs;\n }\n\n /**\n * @internal\n */\n public id: string;\n\n #closed = new Subject<SkySelectionModalCloseArgs>();\n #closedObs: Observable<SkySelectionModalCloseArgs>;\n #itemAdded = new Subject<unknown>();\n #itemAddedObs: Observable<unknown>;\n\n constructor(id: string) {\n this.id = id;\n\n this.#closedObs = this.#closed.asObservable();\n this.#itemAddedObs = this.#itemAdded.asObservable();\n }\n\n /**\n * @internal\n */\n public close(args: SkySelectionModalCloseArgs): void {\n this.#closed.next(args);\n this.#closed.complete();\n }\n\n /**\n * @internal\n */\n public addItem(itemToAdd: unknown): void {\n this.#itemAdded.next(itemToAdd);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyModalService } from '@skyux/modals';\n\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteSearchAsyncResult } from '../autocomplete/types/autocomplete-search-async-result';\n\nimport { SkySelectionModalComponent } from './selection-modal.component';\nimport { SkySelectionModalAddClickEventArgs } from './types/selection-modal-add-click-event-args';\nimport { SkySelectionModalCloseArgs } from './types/selection-modal-close-args';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalInstance } from './types/selection-modal-instance';\nimport { SkySelectionModalOpenArgs } from './types/selection-modal-open-args';\n\n/**\n * Displays a modal for selecting one or more values.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkySelectionModalService {\n #modalSvc: SkyModalService;\n\n constructor(modalSvc: SkyModalService) {\n this.#modalSvc = modalSvc;\n }\n\n /**\n * Opens the selection modal.\n * @param args Parameters for the selection modal.\n */\n public open(args: SkySelectionModalOpenArgs): SkySelectionModalInstance {\n const initialValue = args.value;\n\n const context = new SkySelectionModalContext(\n args.descriptorProperty,\n args.idProperty,\n args.initialSearch || '',\n initialValue || [],\n (searchArgs) => {\n return args.searchAsync({\n offset: searchArgs.offset,\n searchText: searchArgs.searchText,\n continuationData: searchArgs.continuationData,\n }) as Observable<SkyAutocompleteSearchAsyncResult>;\n },\n args.selectMode,\n args.selectionDescriptor ||\n (args.selectMode === 'single' ? 'item' : 'items'),\n args.showAddButton || false,\n {\n itemTemplate: args.itemTemplate,\n title: args.title,\n },\n );\n\n const modalInstance = this.#modalSvc.open(SkySelectionModalComponent, {\n providers: [\n {\n provide: SkySelectionModalContext,\n useValue: context,\n },\n ],\n size: 'large',\n wrapperClass: args.wrapperClass,\n });\n\n const instance = new SkySelectionModalInstance(\n modalInstance.componentInstance.id,\n );\n\n instance.itemAdded\n .pipe(takeUntil(modalInstance.closed))\n .subscribe((item) => {\n modalInstance.componentInstance.addItem(item);\n });\n\n modalInstance.closed.subscribe((modalCloseArgs) => {\n let closeArgs: SkySelectionModalCloseArgs;\n\n switch (modalCloseArgs.reason) {\n case 'save':\n closeArgs = {\n reason: 'save',\n selectedItems: modalCloseArgs.data.map(\n (item: { itemData: unknown }) => item.itemData,\n ),\n };\n break;\n case 'cancel':\n closeArgs = { reason: 'cancel' };\n break;\n default:\n closeArgs = { reason: 'close' };\n }\n\n instance.close(closeArgs);\n });\n\n const selectionModal = modalInstance.componentInstance;\n\n selectionModal.addClick\n .pipe(takeUntil(modalInstance.closed))\n .subscribe(() => {\n if (args.addClick) {\n const addArgs: SkySelectionModalAddClickEventArgs = {\n itemAdded(args) {\n selectionModal.addItem(args.item);\n },\n };\n\n args.addClick(addArgs);\n }\n });\n\n return instance;\n }\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLookupAdapterService {\n public focusInput(elRef: ElementRef): void {\n const inputEl: HTMLElement =\n elRef.nativeElement.querySelector('.sky-lookup-input');\n\n /* Sanity check */\n /* istanbul ignore else */\n if (inputEl) {\n inputEl.focus();\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\n\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchFunction } from '../autocomplete/types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from '../autocomplete/types/autocomplete-search-function-filter';\n\n/**\n * @internal\n */\n@Directive()\nexport class SkyLookupAutocompleteAdapter {\n /**\n * How many milliseconds to wait before searching while users\n * enter text in the lookup field.\n * @default 0\n */\n @Input()\n public debounceTime: number | undefined;\n\n /**\n * The object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string | undefined) {\n this.#_descriptorProperty = value || 'name';\n }\n\n public get descriptorProperty(): string {\n return this.#_descriptorProperty;\n }\n\n /**\n * The array of object properties to search when utilizing the `data` property and the built-in search function.\n * @default [\"name\"]\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n @Input()\n public set propertiesToSearch(value: string[] | undefined) {\n this.#_propertiesToSearch = value ?? ['name'];\n\n this.#updateDefaultSearchOptions();\n }\n\n public get propertiesToSearch(): string[] {\n return this.#_propertiesToSearch;\n }\n\n /**\n * The function that dynamically manages the data to display in search results when users\n * change the text in the lookup field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction | undefined) {\n this.#_search = value;\n this.searchOrDefault =\n value ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n\n public get search(): SkyAutocompleteSearchFunction | undefined {\n return this.#_search;\n }\n\n /**\n * The template that formats each option in the dropdown list. The lookup component\n * injects values into the template as `item` variables that reference all of the object\n * properties of the search results.\n */\n @Input()\n public searchResultTemplate: TemplateRef<unknown> | undefined;\n\n /**\n * The minimum number of characters that users must enter before\n * the lookup component searches the data source and displays search results\n * in the dropdown list.\n * @default 1\n */\n @Input()\n public searchTextMinimumCharacters: number | undefined;\n\n /**\n * The array of functions to call against each search result in order\n * to filter the search results when using the `data` input and the default search function. When\n * using a custom search function via the `search` property filters must be\n * applied manually inside that function. The function must return `true` or\n * `false` for each result to indicate whether to display it in the dropdown list.\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n */\n @Input()\n public set searchFilters(\n value: SkyAutocompleteSearchFunctionFilter[] | undefined,\n ) {\n this.#_searchFilters = value;\n\n this.#updateDefaultSearchOptions();\n }\n\n public get searchFilters():\n | SkyAutocompleteSearchFunctionFilter[]\n | undefined {\n return this.#_searchFilters;\n }\n\n /**\n * The maximum number of search results to display in the dropdown\n * list. By default, the lookup component displays all matching results.\n * This property has no effect on the results in the \"Show more\" picker.\n */\n @Input()\n public searchResultsLimit: number | undefined;\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable. The event is also fired\n * when the \"Show more\" picker is opened without search text.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n public searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: ['name'],\n searchFilters: undefined,\n });\n\n #_descriptorProperty = 'name';\n\n #_propertiesToSearch = ['name'];\n\n #_search: SkyAutocompleteSearchFunction | undefined;\n\n #_searchFilters: SkyAutocompleteSearchFunctionFilter[] | undefined;\n\n #updateDefaultSearchOptions(): void {\n // Reset default search if it is what is being used.\n if (this.search !== this.searchOrDefault) {\n this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n });\n }\n }\n}\n","import { SkyAutocompleteSearchFunction } from '../../autocomplete/types/autocomplete-search-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n public descriptorProperty: string;\n\n public initialSearch: string;\n\n public initialValue: any[];\n\n public items: any[];\n\n public search: SkyAutocompleteSearchFunction;\n\n public selectMode: SkyLookupSelectModeType;\n\n public showAddButton: boolean;\n\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n\n constructor(\n descriptorProperty: string,\n initialSearch: string,\n initialValue: any[],\n items: any[],\n search: SkyAutocompleteSearchFunction,\n selectMode: SkyLookupSelectModeType,\n showAddButton: boolean,\n userConfig: SkyLookupShowMoreNativePickerConfig,\n ) {\n this.descriptorProperty = descriptorProperty;\n this.initialSearch = initialSearch;\n this.initialValue = initialValue;\n this.items = items;\n this.search = search;\n this.selectMode = selectMode;\n this.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n SkyIdService,\n SkyLiveAnnouncerService,\n SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Subject, take } from 'rxjs';\n\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n selector: 'sky-lookup-show-more-modal',\n templateUrl: './lookup-show-more-modal.component.html',\n styleUrls: ['./lookup-show-more-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n ],\n})\nexport class SkyLookupShowMoreModalComponent\n implements AfterViewInit, OnDestroy\n{\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick = new Subject<void>();\n\n /**\n * Used to associate this modal with its owning lookup component.\n */\n public id: string;\n\n public items: any[] = [];\n\n public itemsLoading = false;\n\n public dataManagerConfig = {\n sortOptions: [\n {\n id: 'az',\n label: 'Alphabetical (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Alphabetical (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public displayedItems: any[] = [];\n\n public itemsHaveMore = false;\n\n public onlyShowSelected = false;\n\n public repeaterItemTemplate: TemplateRef<unknown> | null = null;\n\n public searchText = '';\n\n public selectedItems: { index: number; itemData: any }[] = [];\n\n #itemIndex = 0;\n #ngUnsubscribe = new Subject<void>();\n\n protected readonly modalInstance = inject(SkyModalInstance);\n protected readonly context = inject(SkyLookupShowMoreNativePickerContext);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #idSvc = inject(SkyIdService);\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n constructor() {\n this.id = this.#idSvc.generateId();\n }\n\n public ngAfterViewInit(): void {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n void this.addItems();\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public async addItems(): Promise<void> {\n this.itemsLoading = true;\n if (!this.items || this.items.length === 0) {\n const selectedItems: any[] = this.selectedItems.slice();\n\n this.items = this.context.items.map((item) => {\n return {\n value: item,\n selected: false,\n };\n });\n\n this.items.forEach((item) => {\n const isInitialValue: boolean =\n this.context.initialValue === item.value;\n\n const initialIsArray: boolean = Array.isArray(\n this.context.initialValue,\n );\n const initialValueContainsItem: boolean =\n this.context.initialValue.findIndex(\n (initialItem: any) => initialItem === item.value,\n ) >= 0;\n\n if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n item.selected = true;\n const itemIndex = this.items.indexOf(item);\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === itemIndex,\n ) < 0\n ) {\n selectedItems.push({ index: itemIndex, itemData: item.value });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n // if onlyShowSelected is checked, then only iterate through the initial selection\n const items = this.onlyShowSelected\n ? this.items.filter((item) => item.selected)\n : this.items;\n\n this.#itemIndex = this.#itemIndex + 10;\n\n const searchedItems = await this.searchItems(items);\n\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n\n this.#announceSelectionState(\n this.selectedItems.length,\n this.displayedItems.length,\n );\n\n this.#changeDetector.markForCheck();\n }\n\n public async clearAll(): Promise<void> {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n void this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n const items = this.items;\n\n if (this.context.selectMode === 'single') {\n /* Sanity check - single select mode should only alow for a `true` select state */\n /* istanbul ignore else */\n if (newSelectState) {\n itemToSelect.selected = true;\n items.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n this.displayedItems.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n const itemIndex = items.findIndex(\n (item) => item.value === itemToSelect.value,\n );\n this.selectedItems = [\n { index: itemIndex, itemData: items[itemIndex].value },\n ];\n }\n } else {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n const allItemsIndex = items.findIndex(\n (item) => item.value === itemToSelect.value,\n );\n const selectedItemsIndex = selectedItems.findIndex(\n (selectedItem) => selectedItem.index === allItemsIndex,\n );\n\n if (newSelectState && selectedItemsIndex === -1) {\n selectedItems.push({\n index: allItemsIndex,\n itemData: items[allItemsIndex].value,\n });\n } else if (!newSelectState && selectedItemsIndex !== -1) {\n selectedItems.splice(selectedItemsIndex, 1);\n }\n\n this.selectedItems = selectedItems;\n }\n\n void this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string): void {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.#itemIndex = 10;\n this.modalInstance.scrollContentToTop();\n }\n this.searchText = searchText;\n this.itemsLoading = true;\n this.#changeDetector.detectChanges();\n\n // We need to ensure that the scroll event makes it all the way through the infinite scroll workflow before updating the data state.\n // Without this, the infinite scroll can add items improperly because it can see the above scroll after the items finish searching.\n setTimeout(() => {\n void this.updateDataState();\n }, 100);\n }\n\n public searchItems(items: any[]): Promise<any[]> {\n const searchText = this.searchText;\n\n if (searchText) {\n const resultValues = this.context.search(\n searchText,\n items.map((item) => {\n return item.value;\n }),\n { context: 'modal' },\n );\n\n if (resultValues instanceof Array) {\n const result = items.filter(\n (item) => resultValues.indexOf(item.value) >= 0,\n );\n return Promise.resolve(result);\n } else {\n return resultValues.then((values) => {\n const result = items.filter(\n (item) => values.indexOf(item.value) >= 0,\n );\n return Promise.resolve(result);\n });\n }\n } else {\n return Promise.resolve(items);\n }\n }\n\n public async selectAll(): Promise<void> {\n const items = this.items;\n\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n\n this.displayedItems.forEach((item: any) => {\n if (!item.selected) {\n item.selected = true;\n\n const index = items.indexOf(item);\n\n /* istanbul ignore else */\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index,\n ) < 0\n ) {\n selectedItems.push({\n index: index,\n itemData: items[index].value,\n });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n await this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public async updateDataState(): Promise<void> {\n const items = this.items;\n\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n\n items?.forEach((item: any, index: number) => {\n item.selected =\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index,\n ) !== -1;\n });\n\n let searchedItems = await this.searchItems(items);\n\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\n }\n\n this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n\n if (this.#itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n this.itemsLoading = false;\n\n this.#announceSelectionState(\n selectedItems.length,\n this.displayedItems.length,\n );\n\n this.#changeDetector.markForCheck();\n }\n\n public async updateItemData(data: any[]): Promise<void> {\n this.context.items = data;\n this.items = [];\n this.#itemIndex = 10;\n this.selectedItems.forEach((selectedItem) => {\n this.context.items.forEach((item: any, index: number) => {\n if (selectedItem.itemData === item) {\n selectedItem.index = index;\n }\n });\n });\n\n await this.addItems();\n\n this.#changeDetector.markForCheck();\n }\n\n #announceSelectionState(\n selectedItemCount: number,\n displayedItemCount: number,\n ): void {\n this.#resourcesSvc\n .getString(\n 'skyux_lookup_show_more_displayed_items_updated',\n selectedItemCount.toString(),\n displayedItemCount.toString(),\n )\n .pipe(take(1))\n .subscribe((resourcesString) => {\n this.#liveAnnouncerSvc.announce(resourcesString);\n });\n }\n}\n","<sky-modal\n class=\"sky-lookup-show-more-modal\"\n [attr.id]=\"id\"\n [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n <sky-modal-header>\n @if (context.userConfig?.title) {\n {{ context.userConfig.title }}\n } @else {\n {{\n 'skyux_lookup_show_more_modal_title'\n | skyLibResources: context.userConfig.selectionDescriptor\n }}\n }\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar\n class=\"sky-lookup-show-more-modal-toolbar\"\n [listDescriptor]=\"context.userConfig.selectionDescriptor\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n />\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n @if (context.showAddButton) {\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_add_button_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon iconName=\"add\" />\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n }\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n @if (context.selectMode === 'multiple') {\n <sky-toolbar class=\"sky-lookup-show-more-modal-multiselect-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_all_button_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_clear_all_button_aria_label'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [labelText]=\"\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n />\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n }\n </div>\n @if (displayedItems.length === 0) {\n <div class=\"sky-font-deemphasized sky-lookup-show-more-no-results\">\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n }\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n @for (item of displayedItems; track item) {\n <sky-repeater-item\n #repeaterItem\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n repeaterItemTemplate ?? defaultItemTemplate;\n context: {\n item: item.value,\n checkboxId:\n context.selectMode === 'multiple'\n ? 'sky-checkbox-' +\n repeaterItem.contentId +\n '-item-checkbox-input'\n : undefined\n }\n \"\n />\n </sky-repeater-item-content>\n </sky-repeater-item>\n }\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"itemsHaveMore\"\n [loading]=\"itemsLoading\"\n (scrollEnd)=\"addItems()\"\n />\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_show_more_select_context'\n | skyLibResources: context.userConfig.selectionDescriptor\n \"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-checkboxId=\"checkboxId\">\n @if (checkboxId) {\n <label class=\"selection-modal-item-label\" [attr.for]=\"checkboxId\">{{\n item[context.descriptorProperty]\n }}</label>\n } @else {\n {{ item[context.descriptorProperty] }}\n }\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef, SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport {\n SkyToken,\n SkyTokensMessage,\n SkyTokensMessageType,\n} from '@skyux/indicators';\nimport { SkyModalInstance, SkyModalService } from '@skyux/modals';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from '../autocomplete/types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from '../autocomplete/types/autocomplete-show-more-args';\nimport { SkySelectionModalService } from '../selection-modal/selection-modal.service';\nimport { SkySelectionModalInstance } from '../selection-modal/types/selection-modal-instance';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupAddCallbackArgs } from './types/lookup-add-click-callback-args';\nimport { SkyLookupAddClickEventArgs } from './types/lookup-add-click-event-args';\nimport { SkyLookupSelectModeType } from './types/lookup-select-mode-type';\nimport { SkyLookupShowMoreConfig } from './types/lookup-show-more-config';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n@Component({\n selector: 'sky-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.scss'],\n providers: [SkyLookupAdapterService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyLookupComponent\n extends SkyLookupAutocompleteAdapter\n implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n /**\n * The ARIA label for the typeahead search input. This sets the input's `aria-label` attribute to provide a text equivalent for\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use the input box `labelText` input instead.\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * The HTML element ID of the element that labels\n * the typeahead search input. This sets the input's `aria-labelledby` attribute to provide a text equivalent for\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n * @deprecated Use the input box `labelText` input instead.\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * The value to provide to the `autocomplete` attribute on the form input.\n * @default 'off'\n * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n */\n @Input()\n public autocompleteAttribute: string | undefined;\n\n /**\n * The data source for the lookup component to search when users\n * enter text. You can specify static data, such as an array of objects, or\n * you can pull data from a database.\n *\n * @default []\n * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n */\n @Input()\n public set data(value: any[] | undefined) {\n this.#_data = value;\n\n if (this.#openNativePicker && !this.#hasSearchAsync()) {\n this.#openNativePicker.componentInstance.updateItemData(value);\n }\n }\n\n public get data(): any[] {\n return this.#_data || [];\n }\n\n /**\n * Whether to disable the lookup field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public disabled = false;\n\n /**\n * Whether the lookup field is required.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set required(value: boolean) {\n this.#_required = value;\n this.inputBoxHostSvc?.setRequired(value);\n }\n\n public get required(): boolean {\n return this.#_required;\n }\n\n /**\n * Whether to enable users to open a picker where they can view all options.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public enableShowMore = false;\n\n /**\n * Placeholder text to display in the lookup field.\n */\n @Input()\n public placeholderText: string | undefined;\n\n /**\n * The object property that represents the object's unique identifier.\n * Specifying this property enables token animations and more efficient rendering.\n * This property is required when using `enableShowMore` and `searchAsync` together.\n */\n @Input()\n public idProperty: string | undefined;\n\n /**\n * Whether to display a button that lets users add options to the list.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public showAddButton = false;\n\n /**\n * Configuration options for the picker that displays all options.\n */\n @Input()\n public showMoreConfig: SkyLookupShowMoreConfig | undefined;\n\n /**\n * The ability for users to select one option or multiple options.\n * @default \"multiple\"\n */\n @Input()\n public set selectMode(value: SkyLookupSelectModeType | undefined) {\n const multipleToSingle: boolean =\n value === 'single' && this.selectMode === 'multiple';\n\n this.#_selectMode = value;\n this.#updateForSelectMode();\n\n if (multipleToSingle) {\n const value = this.#getValue();\n\n if (value?.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.#setValue([value[0]], { emitEvent: true });\n this.#changeDetector.detectChanges();\n });\n }\n }\n }\n\n public get selectMode(): SkyLookupSelectModeType {\n return this.#_selectMode || 'multiple';\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass: string | undefined;\n\n /**\n * Fires when users select the button to add options to the list.\n */\n @Output()\n public addClick = new EventEmitter<SkyLookupAddClickEventArgs>();\n\n /**\n * @internal\n */\n @Output()\n public openChange = new EventEmitter<boolean>();\n\n /**\n * @internal\n */\n @Output()\n public selectionModalOpenChange = new EventEmitter<boolean>();\n\n public get tokens(): SkyToken[] | undefined {\n return this.#_tokens;\n }\n\n public set tokens(tokens: SkyToken[] | undefined) {\n const value = this.#getValue();\n\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && value.length > 5) {\n this.#resourcesService\n .getString('skyux_lookup_tokens_summary', value.length.toString())\n .pipe(take(1))\n .subscribe((label) => {\n this.#_tokens = [\n {\n value: { [this.descriptorProperty]: label },\n },\n ];\n this.#changeDetector.markForCheck();\n });\n } else {\n this.#_tokens = tokens;\n this.#changeDetector.markForCheck();\n }\n }\n\n /**\n * @internal\n * @deprecated This is exposed for unit tests only; refactor unit tests to\n * derive the control value a different way.\n */\n public get value(): any[] {\n return this.#getValue();\n }\n\n public autocompleteController = new Subject<SkyAutocompleteMessage>();\n public isInputFocused = false;\n public showMorePickerId: string | undefined;\n public tokensController = new Subject<SkyTokensMessage>();\n protected controlId: string | undefined;\n protected ariaDescribedBy: Observable<string | undefined> | undefined;\n\n @ViewChild(SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n })\n public set autocompleteInputDirective(\n value: SkyAutocompleteInputDirective | undefined,\n ) {\n this.#_autocompleteInputDirective = value;\n this.#updateForSelectMode();\n }\n\n public get autocompleteInputDirective():\n | SkyAutocompleteInputDirective\n | undefined {\n return this.#_autocompleteInputDirective;\n }\n\n @ViewChild('showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public showMoreButtonTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('lookupWrapper', {\n read: ElementRef,\n })\n public lookupWrapperRef: ElementRef | undefined;\n\n #idle = new Subject<void>();\n #markForTokenFocusOnKeyUp = false;\n #ngUnsubscribe = new Subject<void>();\n #notifyChange: ((value: any[]) => void) | undefined;\n #notifyTouched: (() => void) | undefined;\n #openNativePicker: SkyModalInstance | undefined;\n #openSelectionModal: SkySelectionModalInstance | undefined;\n #_required = false;\n\n #_autocompleteInputDirective: SkyAutocompleteInputDirective | undefined;\n #_data: any[] | undefined;\n #_selectMode: SkyLookupSelectModeType | undefined;\n #_tokens: SkyToken[] | undefined;\n #_value: any[] | undefined;\n\n readonly #adapter = inject(SkyLookupAdapterService);\n readonly #changeDetector = inject(ChangeDetectorRef);\n readonly #elementRef = inject(ElementRef);\n readonly #idService = inject(SkyIdService);\n readonly #logSvc = inject(SkyLogService);\n readonly #modalService = inject(SkyModalService);\n readonly #resourcesService = inject(SkyLibResourcesService);\n readonly #selectionModalSvc = inject(SkySelectionModalService);\n readonly #windowRef = inject(SkyAppWindowRef);\n\n #getValue(): any[] {\n return this.#_value ? this.#_value : [];\n }\n\n #setValue(newValue: any[], options: { emitEvent: boolean }): void {\n this.#_value = newValue;\n\n if (this.selectMode === 'multiple' && !this.#pickerModalOpen()) {\n this.tokens = this.#parseTokens(newValue);\n }\n\n if (options.emitEvent) {\n this.#notifyChange?.(this.#_value);\n }\n\n this.#updateForSelectMode();\n }\n\n constructor(\n @Self() @Optional() ngControl?: NgControl,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService,\n ) {\n super();\n\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.controlId = this.inputBoxHostSvc.controlId;\n this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n });\n\n this.inputBoxHostSvc?.setRequired(this.required);\n } else {\n this.controlId = this.#idService.generateId();\n }\n\n /* istanbul ignore else */\n if (this.themeSvc) {\n // This is required for the autocomplete directive to be set after elements\n // are rearranged when switching themes.\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.disabled) {\n this.#addEventListeners();\n }\n }\n\n public ngOnDestroy(): void {\n this.#removeEventListeners();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.addClick.complete();\n this.openChange.complete();\n this.tokensController.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit({\n itemAdded: (args: SkyLookupAddCallbackArgs) =>\n this.#onAddButtonComplete(args),\n });\n }\n\n public onAutocompleteSelectionChange(\n change: SkyAutocompleteSelectionChange,\n ): void {\n if (change.selectedItem) {\n this.#addToSelected(change.selectedItem);\n } else {\n this.#setValue([], { emitEvent: true });\n }\n }\n\n public onAutocompleteBlur(): void {\n this.#notifyTouched?.();\n }\n\n public onTokensChange(change: SkyToken[]): void {\n if (!change) {\n return;\n }\n\n if (this.tokens !== change) {\n if (change.length === 0) {\n this.#focusInput();\n }\n\n this.tokens = change;\n const value = change.map((token) => {\n return token.value;\n });\n\n this.#setValue(value, { emitEvent: true });\n }\n }\n\n public onTokensFocusIndexOverRange(): void {\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#focusInput();\n });\n }\n\n public onTokensKeyUp(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Backspace':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n event.preventDefault();\n break;\n\n case 'Del':\n case 'Delete':\n this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.#windowRef.nativeWindow.setTimeout(() => {\n this.#sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n });\n event.preventDefault();\n break;\n }\n }\n }\n\n public onTokensRendered(): void {\n this.#sendAutocompleteMessage(\n SkyAutocompleteMessageType.RepositionDropdown,\n );\n }\n\n public writeValue(value: any[]): void {\n // Since we are dealing with arrays - clone the array being sent in to ensure we aren't modifying a consumers outer array\n this.#setValue(value ? value.slice() : [], { emitEvent: false });\n }\n\n public registerOnChange(fn: (value: any[]) => void): void {\n this.#notifyChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#notifyTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.#removeEventListeners();\n\n if (!disabled) {\n this.#addEventListeners();\n }\n\n this.disabled = disabled;\n this.#changeDetector.markForCheck();\n }\n\n public clearSearchText(): void {\n if (this.autocompleteInputDirective) {\n this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = '';\n }\n }\n\n // Handles when to focus on the tokens.\n // Check for empty search text on keydown, before the escape key is fully pressed.\n // (Otherwise, a single character being escaped would register as empty on keyup.)\n // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n public inputKeydown(event: KeyboardEvent): void {\n const value = (event.target as HTMLTextAreaElement).value;\n\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n if (value) {\n this.#markForTokenFocusOnKeyUp = false;\n } else {\n this.#markForTokenFocusOnKeyUp = true;\n }\n break;\n default:\n }\n }\n }\n\n public inputKeyup(event: KeyboardEvent): void {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n this.clearSearchText();\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n /* istanbul ignore else */\n if (this.#markForTokenFocusOnKeyUp) {\n this.#sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n event.preventDefault();\n }\n break;\n default:\n }\n\n event.stopPropagation();\n }\n }\n\n public onSearchButtonClick(): void {\n /*istanbul ignore next*/\n if (this.disabled) {\n return;\n }\n this.#sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n let isValueInTextBox = false;\n if (this.selectMode === 'single') {\n isValueInTextBox =\n this.autocompleteInputDirective?.value &&\n this.autocompleteInputDirective.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n\n let searchValue = '';\n\n if (!isValueInTextBox && this.autocompleteInputDirective) {\n searchValue = this.autocompleteInputDirective.inputTextValue;\n }\n\n this.openPicker(searchValue);\n this.autocompleteInputDirective?.restoreInputTextValueToPreviousState();\n }\n\n public onShowMoreClick(event: SkyAutocompleteShowMoreArgs): void {\n /* Sanity check */\n /* istanbul ignore else*/\n if (event) {\n this.openPicker(event.inputValue);\n }\n }\n\n public openPicker(initialSearch: string): void {\n if (this.showMoreConfig?.customPicker) {\n this.showMorePickerId = undefined;\n\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch,\n initialValue: this.#getValue(),\n });\n } else {\n const initialValue = this.#getValue();\n this.selectionModalOpenChange.emit(true);\n\n if (this.#hasSearchAsync()) {\n this.#openSelectionModal =\n this.#createSelectionModalInstance(initialSearch);\n\n this.showMorePickerId = this.#openSelectionModal.id;\n\n this.#openSelectionModal.closed.subscribe((closeArgs) => {\n this.#processPickerResult(\n closeArgs.reason === 'save'\n ? closeArgs.selectedItems\n : initialValue,\n );\n this.selectionModalOpenChange.emit(false);\n });\n } else {\n this.#openNativePicker =\n this.#createNativePickerInstance(initialSearch);\n\n this.showMorePickerId = this.#openNativePicker.componentInstance.id;\n\n this.#openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n\n this.#openNativePicker.closed.subscribe((closeArgs) => {\n let selectedItems: any[];\n\n if (closeArgs.reason === 'save') {\n selectedItems = [];\n\n this.data.forEach((item: any, dataIndex: number) => {\n if (\n closeArgs.data.some((savedItem: any) => {\n return savedItem.index === dataIndex;\n })\n ) {\n selectedItems.push(item);\n }\n });\n } else {\n selectedItems = initialValue;\n }\n\n this.#processPickerResult(selectedItems);\n this.selectionModalOpenChange.emit(false);\n });\n\n this.#changeDetector.markForCheck();\n }\n }\n }\n\n protected onAutocompleteOpenChange($event: boolean): void {\n if ($event) {\n this.openChange.emit(true);\n } else if (!this.#pickerModalOpen()) {\n this.openChange.emit(false);\n }\n }\n\n protected onFocus($event: FocusEvent): void {\n ($event.target as HTMLTextAreaElement).select();\n }\n\n #createSelectionModalInstance(\n initialSearch: string,\n ): SkySelectionModalInstance {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n\n if (this.idProperty === undefined) {\n this.#logSvc.error(\n \"The lookup component's 'idProperty' input is required when `enableShowMore` and 'searchAsync' are used together.\",\n );\n }\n\n return this.#selectionModalSvc.open({\n descriptorProperty: this.descriptorProperty,\n idProperty: this.idProperty!,\n searchAsync: (args) => {\n const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n displayType: 'modal',\n offset: args.offset,\n searchText: args.searchText,\n continuationData: args.continuationData,\n };\n\n this.searchAsync.emit(searchAsyncArgs);\n\n return searchAsyncArgs.result;\n },\n selectMode: this.selectMode,\n addClick: () => {\n this.addButtonClicked();\n },\n initialSearch,\n itemTemplate: modalConfig.itemTemplate,\n selectionDescriptor: modalConfig.selectionDescriptor,\n showAddButton: this.showAddButton,\n title: modalConfig.title,\n value: initialValue,\n wrapperClass: this.wrapperClass,\n });\n }\n\n #createNativePickerInstance(initialSearch: string): SkyModalInstance {\n const initialValue = this.#getValue();\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n\n if (!modalConfig.selectionDescriptor) {\n modalConfig.selectionDescriptor =\n this.selectMode === 'single' ? 'item' : 'items';\n }\n\n const contextProviderValue = new SkyLookupShowMoreNativePickerContext(\n this.descriptorProperty,\n initialSearch,\n initialValue,\n this.data,\n this.searchOrDefault,\n this.selectMode,\n this.showAddButton,\n modalConfig,\n );\n\n return this.#modalService.open(SkyLookupShowMoreModalComponent, {\n providers: [\n {\n provide: SkyLookupShowMoreNativePickerContext,\n useValue: contextProviderValue,\n },\n {\n provide: SkyLookupAdapterService,\n useValue: this.#adapter,\n },\n ],\n size: 'large',\n wrapperClass: this.wrapperClass,\n });\n }\n\n #processPickerResult(selectedItems: any[] | undefined): void {\n this.#openSelectionModal = undefined;\n this.#openNativePicker = undefined;\n this.showMorePickerId = undefined;\n\n /* istanbul ignore next */\n selectedItems = selectedItems || [];\n\n this.#setValue(selectedItems, { emitEvent: true });\n this.#focusInput();\n this.#changeDetector.markForCheck();\n }\n\n public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n this.searchAsync.emit(args);\n }\n\n #addToSelected(item: any): void {\n const value = this.#getValue();\n\n let selectedItems: any[];\n\n if (this.selectMode === 'single') {\n selectedItems = [item];\n } else {\n selectedItems = value;\n\n const idProperty = this.idProperty || '';\n\n // If items have a unique identifier, don't allow the same item to be added twice.\n if (\n !this.idProperty ||\n !value.some(\n (existingItem) => existingItem[idProperty] === item[idProperty],\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.#setValue(selectedItems, { emitEvent: true });\n }\n\n #addEventListeners(): void {\n this.#idle = new Subject();\n this.#focusInputOnHostClick();\n }\n\n #removeEventListeners(): void {\n this.#idle.next();\n this.#idle.complete();\n }\n\n #focusInputOnHostClick(): void {\n let hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n const documentObj = this.#windowRef.nativeWindow.document;\n\n // Handles focusing the input when the host is clicked.\n // The input should NOT be focused if other elements (tokens, etc.)\n // are currently focused or being tabbed through.\n\n observableFromEvent<MouseEvent>(documentObj, 'click')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n\n this.#changeDetector.markForCheck();\n });\n\n observableFromEvent<KeyboardEvent>(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(document.activeElement);\n\n this.#changeDetector.markForCheck();\n });\n\n if (hostElement) {\n observableFromEvent(hostElement, 'mouseup')\n .pipe(takeUntil(this.#idle))\n .subscribe(() => {\n const classList = documentObj.activeElement.classList;\n if (!classList || !classList.contains('sky-token')) {\n this.#focusInput();\n }\n });\n }\n }\n\n #focusInput(): void {\n if (this.lookupWrapperRef) {\n this.#adapter.focusInput(this.lookupWrapperRef);\n }\n }\n\n #onAddButtonComplete(args: SkyLookupAddCallbackArgs): void {\n if (this.#openSelectionModal) {\n // Notify the selection modal of the new item. The selection\n // modal will decide whether the new item should be added\n // to the value when the user confirms or cancels the\n // selection modal.\n this.#openSelectionModal.addItem(args.item);\n } else {\n let addItemToValue: boolean | undefined;\n\n if (this.#hasSearchAsync()) {\n addItemToValue = true;\n } else {\n if (args.data) {\n this.data = args.data;\n }\n\n if (this.data.indexOf(args.item) >= 0) {\n if (this.#openNativePicker) {\n // Notify the picker of the new item. The picker will\n // decide whether the new item should be added to the\n // value when the user confirms or cancels the picker.\n (\n this.#openNativePicker\n .componentInstance as SkyLookupShowMoreModalComponent\n ).onItemSelect(true, { value: args.item, selected: false });\n } else {\n addItemToValue = true;\n }\n }\n }\n\n if (addItemToValue) {\n const oldValue = this.#getValue();\n const newValue =\n this.selectMode === 'multiple'\n ? oldValue.concat(args.item)\n : [args.item];\n\n this.#setValue(newValue, { emitEvent: true });\n }\n }\n }\n\n #parseTokens(data: any[]): SkyToken[] {\n return data.map((item: any) => {\n return {\n value: item,\n };\n });\n }\n\n #sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n this.autocompleteController.next({ type });\n }\n\n #sendTokensMessage(type: SkyTokensMessageType): void {\n this.tokensController.next({ type });\n }\n\n #updateForSelectMode(): void {\n if (this.autocompleteInputDirective) {\n if (this.selectMode === 'single') {\n const value = this.#getValue();\n this.autocompleteInputDirective.value = value && value[0];\n } else {\n this.clearSearchText();\n }\n }\n }\n\n #hasSearchAsync(): boolean {\n return this.searchAsync.observers.length > 0;\n }\n\n #pickerModalOpen(): boolean {\n return !!(this.#openNativePicker || this.#openSelectionModal);\n }\n}\n","@if (!inputBoxHostSvc) {\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\" />\n}\n\n<ng-template #inputTemplateRef>\n <div\n #lookupWrapper\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy || inputBoxHostSvc?.labelId\"\n [attr.data-sky-lookup-show-more-picker-id]=\"showMorePickerId\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"searchOrDefault\"\n [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (searchAsync)=\"onSearchAsync($event)\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n (openChange)=\"onAutocompleteOpenChange($event)\"\n >\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n @if (selectMode === 'multiple') {\n <sky-tokens\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokensRendered)=\"onTokensRendered()\"\n (tokenSelected)=\"enableShowMore ? openPicker('') : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"inputKeydown($event)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n </sky-tokens>\n } @else if (selectMode === 'single') {\n <div class=\"sky-lookup-single-control\">\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-describedby]=\"ariaDescribedBy | async\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"controlId\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (focus)=\"onFocus($event)\"\n ></textarea>\n </div>\n }\n </div>\n @if (!inputBoxHostSvc && enableShowMore) {\n <ng-container *ngTemplateOutlet=\"showMoreButtonTemplateRef\" />\n }\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon iconName=\"search\" iconSize=\"l\" />\n </button>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTokensModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n declarations: [SkyLookupComponent],\n imports: [\n CommonModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n SkyTokensModule,\n ],\n exports: [SkyLookupComponent],\n})\nexport class SkyLookupModule {}\n","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport enum SkyLookupSelectMode {\n /**\n * Restricts users to a single selection.\n */\n single = 'single',\n\n /**\n * Allows users to select multiple items.\n */\n multiple = 'multiple',\n}\n","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n /**\n * The options that users can select in the custom picker.\n */\n public items!: any[];\n /**\n * Search text to filter the contents of the custom picker.\n */\n public initialSearch!: string;\n /**\n * The current selections in the lookup field.\n */\n public initialValue!: any;\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkySelectionModalModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkySelectionModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i4","i6","i7","i9.SkyAutocompleteSearchAsyncDisabledPipe","i1","i2","i3","i4.SkyAutocompleteComponent","i5.SkyAutocompleteInputDirective","i1.SkySearchAdapterService","i5","i6.SkySearchComponent","i8","i9","i10","take","i5.SkyAutocompleteComponent","i6.SkyAutocompleteInputDirective"],"mappings":"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"}