@taiga-ui/core 2.37.0 → 2.37.1

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
- {"__symbolic":"module","version":4,"metadata":{"TuiDropdownBoxComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":43,"character":1},"arguments":[{"selector":"tui-dropdown-box","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":47,"character":21},"member":"Default"},"providers":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":48,"character":16}],"animations":[{"__symbolic":"reference","module":"@taiga-ui/core/animations","name":"tuiDropdownAnimation","line":49,"character":17}],"template":"<div\n #activeZone=\"tuiActiveZone\"\n class=\"wrapper\"\n [tuiOverscroll]=\"overscroll\"\n [tuiMode]=\"null\"\n [tuiActiveZoneParent]=\"directive.activeZone\"\n>\n <tui-scrollbar class=\"scroll\">\n <div tabindex=\"0\" (focus)=\"onTopFocus()\"></div>\n <div\n #content\n polymorpheus-outlet\n class=\"content\"\n [content]=\"directive.content\"\n [context]=\"getContext(directive.context, activeZone)\"\n ></div>\n <div tabindex=\"0\" (focus)=\"onBottomFocus()\"></div>\n </tui-scrollbar>\n</div>\n","styles":[":host{z-index:0;box-shadow:0 .5rem 1rem rgba(0,0,0,.16);position:absolute;top:0;left:0;display:flex;background-color:#fff;background-color:var(--tui-elevation-01);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-base-03);box-sizing:border-box}:host.ng-animating{pointer-events:none}.content{display:flex;flex-direction:column;max-height:100%}.wrapper{flex-grow:1;max-width:100%;max-height:inherit;overflow:visible}.scroll{height:100%}"]}]}],"members":{"dropdownAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":67,"character":5},"arguments":["@tuiDropdownAnimation"]}]}],"contentElementRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":70,"character":5},"arguments":["content",{"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":33}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":74,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":74,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":76,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":76,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":77,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_DROPDOWN_DIRECTIVE","line":77,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":78,"character":9},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"WINDOW","line":78,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":79,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":79,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":80,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk/abstract/portal-host","name":"AbstractTuiPortalHostComponent","line":80,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":82,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_ANIMATION_OPTIONS","line":82,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":83,"character":9},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"ANIMATION_FRAME","line":83,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":75,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":76,"character":32},{"__symbolic":"reference","module":"@taiga-ui/core/interfaces","name":"TuiDropdown","line":77,"character":60},{"__symbolic":"error","message":"Could not resolve type","line":78,"character":52,"context":{"typeName":"Window"},"module":"./dropdown-box.component"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":79,"character":68,"context":{"typeName":"HTMLElement"},"module":"./dropdown-box.component"}]},{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDropdownHostComponent","line":81,"character":37},{"__symbolic":"reference","module":"@angular/animations","name":"AnimationOptions","line":82,"character":65},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"number"}]}]}],"getContext":[{"__symbolic":"method","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":100,"character":5}]}],"ngAfterViewChecked":[{"__symbolic":"method"}],"onTopFocus":[{"__symbolic":"method"}],"onBottomFocus":[{"__symbolic":"method"}],"inModal":[{"__symbolic":"property","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":122,"character":5}]}],"calculatePositionAndSize":[{"__symbolic":"method"}],"getFinalAlign":[{"__symbolic":"method"}],"calculateHorizontalPosition":[{"__symbolic":"method"}],"calculateVerticalPosition":[{"__symbolic":"method"}],"getFinalDirection":[{"__symbolic":"method"}],"calculateWidth":[{"__symbolic":"method"}],"moveFocusOutside":[{"__symbolic":"method"}]}},"TuiDropdownBoxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiActiveZoneModule","line":10,"character":8},{"__symbolic":"reference","module":"@tinkoff/ng-polymorpheus","name":"PolymorpheusModule","line":11,"character":8},{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiOverscrollModule","line":12,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core/components/scrollbar","name":"TuiScrollbarModule","line":13,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core/directives/mode","name":"TuiModeModule","line":14,"character":8}],"entryComponents":[{"__symbolic":"reference","name":"TuiDropdownBoxComponent"}],"declarations":[{"__symbolic":"reference","name":"TuiDropdownBoxComponent"}],"exports":[{"__symbolic":"reference","name":"TuiDropdownBoxComponent"}]}]}],"members":{}}},"origins":{"TuiDropdownBoxComponent":"./dropdown-box.component","TuiDropdownBoxModule":"./dropdown-box.module"},"importAs":"@taiga-ui/core/components/dropdown-box"}
1
+ {"__symbolic":"module","version":4,"metadata":{"TuiDropdownBoxComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":43,"character":1},"arguments":[{"selector":"tui-dropdown-box","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":47,"character":21},"member":"Default"},"providers":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":48,"character":16}],"animations":[{"__symbolic":"reference","module":"@taiga-ui/core/animations","name":"tuiDropdownAnimation","line":49,"character":17}],"template":"<div\n #activeZone=\"tuiActiveZone\"\n class=\"wrapper\"\n [tuiOverscroll]=\"overscroll\"\n [tuiMode]=\"null\"\n [tuiActiveZoneParent]=\"directive.activeZone\"\n>\n <tui-scrollbar class=\"scroll\">\n <div tabindex=\"0\" (focus)=\"onTopFocus()\"></div>\n <div\n #content\n polymorpheus-outlet\n class=\"content\"\n [content]=\"directive.content\"\n [context]=\"getContext(directive.context, activeZone)\"\n ></div>\n <div tabindex=\"0\" (focus)=\"onBottomFocus()\"></div>\n </tui-scrollbar>\n</div>\n","styles":[":host{z-index:0;box-shadow:0 .5rem 1rem rgba(0,0,0,.16);position:absolute;top:0;left:0;display:flex;background-color:#fff;background-color:var(--tui-elevation-01);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-base-03);box-sizing:border-box}:host.ng-animating{pointer-events:none}.content{display:flex;flex-direction:column;max-height:100%}.wrapper{flex-grow:1;max-width:100%;max-height:inherit;overflow:visible}.scroll{height:100%}"]}]}],"members":{"dropdownAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":67,"character":5},"arguments":["@tuiDropdownAnimation"]}]}],"contentElementRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":70,"character":5},"arguments":["content",{"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":33}}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":74,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":74,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":76,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":76,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":77,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_DROPDOWN_DIRECTIVE","line":77,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":78,"character":9},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"WINDOW","line":78,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":79,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":79,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":80,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiPortalHostComponent","line":80,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":82,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_ANIMATION_OPTIONS","line":82,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":83,"character":9},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"ANIMATION_FRAME","line":83,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":75,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":76,"character":32},{"__symbolic":"reference","module":"@taiga-ui/core/interfaces","name":"TuiDropdown","line":77,"character":60},{"__symbolic":"error","message":"Could not resolve type","line":78,"character":52,"context":{"typeName":"Window"},"module":"./dropdown-box.component"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":79,"character":68,"context":{"typeName":"HTMLElement"},"module":"./dropdown-box.component"}]},{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDropdownHostComponent","line":81,"character":37},{"__symbolic":"reference","module":"@angular/animations","name":"AnimationOptions","line":82,"character":65},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"number"}]}]}],"getContext":[{"__symbolic":"method","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":100,"character":5}]}],"ngAfterViewChecked":[{"__symbolic":"method"}],"onTopFocus":[{"__symbolic":"method"}],"onBottomFocus":[{"__symbolic":"method"}],"inModal":[{"__symbolic":"property","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":122,"character":5}]}],"calculatePositionAndSize":[{"__symbolic":"method"}],"getFinalAlign":[{"__symbolic":"method"}],"calculateHorizontalPosition":[{"__symbolic":"method"}],"calculateVerticalPosition":[{"__symbolic":"method"}],"getFinalDirection":[{"__symbolic":"method"}],"calculateWidth":[{"__symbolic":"method"}],"moveFocusOutside":[{"__symbolic":"method"}]}},"TuiDropdownBoxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiActiveZoneModule","line":10,"character":8},{"__symbolic":"reference","module":"@tinkoff/ng-polymorpheus","name":"PolymorpheusModule","line":11,"character":8},{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiOverscrollModule","line":12,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core/components/scrollbar","name":"TuiScrollbarModule","line":13,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core/directives/mode","name":"TuiModeModule","line":14,"character":8}],"entryComponents":[{"__symbolic":"reference","name":"TuiDropdownBoxComponent"}],"declarations":[{"__symbolic":"reference","name":"TuiDropdownBoxComponent"}],"exports":[{"__symbolic":"reference","name":"TuiDropdownBoxComponent"}]}]}],"members":{}}},"origins":{"TuiDropdownBoxComponent":"./dropdown-box.component","TuiDropdownBoxModule":"./dropdown-box.module"},"importAs":"@taiga-ui/core/components/dropdown-box"}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"DEFAULT_MARGIN":4,"DEFAULT_MIN_HEIGHT":80,"DEFAULT_MAX_HEIGHT":400,"DEFAULT_MAX_WIDTH":600,"TUI_DECIMAL_SYMBOLS":[",","."],"DEFAULT_ICONS_PATH":{"__symbolic":"error","message":"Lambda not supported","line":2,"character":60,"module":"./default-icons-path"},"TUI_DEFAULT_MARKER_HANDLER":{"__symbolic":"error","message":"Lambda not supported","line":3,"character":60,"module":"./default-marker-handler"},"tuiEditingKeys":["Spacebar","Backspace","Delete","ArrowLeft","ArrowRight","Left","Right","End","Home"],"TUI_EXPAND_LOADED":"tui-expand-loaded","TUI_SCROLL_INTO_VIEW":"tui-scroll-into-view","TUI_SCROLLABLE":"tui-scrollable","TUI_ICON_ERROR":"tui-icon-error","MASK_CARET_TRAP":"[]","MEDIA":{"mobile":320,"tablet":600,"desktopSmall":1024,"desktopLarge":1280},"TUI_DIGIT_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":0,"character":32,"module":"./regexp"},"TUI_NON_DIGIT_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":1,"character":36,"module":"./regexp"},"TUI_NON_DIGITS_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":2,"character":37,"module":"./regexp"},"TUI_LEADING_ZEROES_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":3,"character":41,"module":"./regexp"},"TUI_LAST_PUNCTUATION_MARK_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":4,"character":48,"module":"./regexp"},"TUI_LATIN_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":5,"character":32,"module":"./regexp"},"TUI_LATIN_AND_NUMBERS_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":6,"character":44,"module":"./regexp"},"VERSION":"2.37.0"},"origins":{"DEFAULT_MARGIN":"./absolute-box-sizes","DEFAULT_MIN_HEIGHT":"./absolute-box-sizes","DEFAULT_MAX_HEIGHT":"./absolute-box-sizes","DEFAULT_MAX_WIDTH":"./absolute-box-sizes","TUI_DECIMAL_SYMBOLS":"./decimal-symbols","DEFAULT_ICONS_PATH":"./default-icons-path","TUI_DEFAULT_MARKER_HANDLER":"./default-marker-handler","tuiEditingKeys":"./editing-keys","TUI_EXPAND_LOADED":"./events","TUI_SCROLL_INTO_VIEW":"./events","TUI_SCROLLABLE":"./events","TUI_ICON_ERROR":"./events","MASK_CARET_TRAP":"./mask-caret-trap","MEDIA":"./media","TUI_DIGIT_REGEXP":"./regexp","TUI_NON_DIGIT_REGEXP":"./regexp","TUI_NON_DIGITS_REGEXP":"./regexp","TUI_LEADING_ZEROES_REGEXP":"./regexp","TUI_LAST_PUNCTUATION_MARK_REGEXP":"./regexp","TUI_LATIN_REGEXP":"./regexp","TUI_LATIN_AND_NUMBERS_REGEXP":"./regexp","VERSION":"./version"},"importAs":"@taiga-ui/core/constants"}
1
+ {"__symbolic":"module","version":4,"metadata":{"DEFAULT_MARGIN":4,"DEFAULT_MIN_HEIGHT":80,"DEFAULT_MAX_HEIGHT":400,"DEFAULT_MAX_WIDTH":600,"TUI_DECIMAL_SYMBOLS":[",","."],"DEFAULT_ICONS_PATH":{"__symbolic":"error","message":"Lambda not supported","line":2,"character":60,"module":"./default-icons-path"},"TUI_DEFAULT_MARKER_HANDLER":{"__symbolic":"error","message":"Lambda not supported","line":3,"character":60,"module":"./default-marker-handler"},"tuiEditingKeys":["Spacebar","Backspace","Delete","ArrowLeft","ArrowRight","Left","Right","End","Home"],"TUI_EXPAND_LOADED":"tui-expand-loaded","TUI_SCROLL_INTO_VIEW":"tui-scroll-into-view","TUI_SCROLLABLE":"tui-scrollable","TUI_ICON_ERROR":"tui-icon-error","MASK_CARET_TRAP":"[]","MEDIA":{"mobile":320,"tablet":600,"desktopSmall":1024,"desktopLarge":1280},"TUI_DIGIT_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":0,"character":32,"module":"./regexp"},"TUI_NON_DIGIT_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":1,"character":36,"module":"./regexp"},"TUI_NON_DIGITS_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":2,"character":37,"module":"./regexp"},"TUI_LEADING_ZEROES_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":3,"character":41,"module":"./regexp"},"TUI_LAST_PUNCTUATION_MARK_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":4,"character":48,"module":"./regexp"},"TUI_LATIN_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":5,"character":32,"module":"./regexp"},"TUI_LATIN_AND_NUMBERS_REGEXP":{"__symbolic":"error","message":"Expression form not supported","line":6,"character":44,"module":"./regexp"},"VERSION":"2.37.1"},"origins":{"DEFAULT_MARGIN":"./absolute-box-sizes","DEFAULT_MIN_HEIGHT":"./absolute-box-sizes","DEFAULT_MAX_HEIGHT":"./absolute-box-sizes","DEFAULT_MAX_WIDTH":"./absolute-box-sizes","TUI_DECIMAL_SYMBOLS":"./decimal-symbols","DEFAULT_ICONS_PATH":"./default-icons-path","TUI_DEFAULT_MARKER_HANDLER":"./default-marker-handler","tuiEditingKeys":"./editing-keys","TUI_EXPAND_LOADED":"./events","TUI_SCROLL_INTO_VIEW":"./events","TUI_SCROLLABLE":"./events","TUI_ICON_ERROR":"./events","MASK_CARET_TRAP":"./mask-caret-trap","MEDIA":"./media","TUI_DIGIT_REGEXP":"./regexp","TUI_NON_DIGIT_REGEXP":"./regexp","TUI_NON_DIGITS_REGEXP":"./regexp","TUI_LEADING_ZEROES_REGEXP":"./regexp","TUI_LAST_PUNCTUATION_MARK_REGEXP":"./regexp","TUI_LATIN_REGEXP":"./regexp","TUI_LATIN_AND_NUMBERS_REGEXP":"./regexp","VERSION":"./version"},"importAs":"@taiga-ui/core/constants"}
@@ -1 +1 @@
1
- export declare const VERSION = "2.37.0";
1
+ export declare const VERSION = "2.37.1";
@@ -1,8 +1,7 @@
1
1
  import { __decorate, __param } from "tslib";
2
2
  import { AfterViewChecked, ChangeDetectionStrategy, Component, ElementRef, HostBinding, Inject, NgZone, ViewChild, } from '@angular/core';
3
3
  import { ANIMATION_FRAME, WINDOW } from '@ng-web-apis/common';
4
- import { getClosestElement, getClosestFocusable, inRange, POLLING_TIME, px, setNativeFocused, TuiActiveZoneDirective, TuiDestroyService, TuiDropdownHostComponent, TuiOverscrollModeT, tuiPure, tuiZonefree, } from '@taiga-ui/cdk';
5
- import { AbstractTuiPortalHostComponent } from '@taiga-ui/cdk/abstract/portal-host';
4
+ import { AbstractTuiPortalHostComponent, getClosestElement, getClosestFocusable, inRange, POLLING_TIME, px, setNativeFocused, TuiActiveZoneDirective, TuiDestroyService, TuiDropdownHostComponent, TuiOverscrollModeT, tuiPure, tuiZonefree, } from '@taiga-ui/cdk';
6
5
  import { tuiDropdownAnimation } from '@taiga-ui/core/animations';
7
6
  import { DEFAULT_MARGIN, DEFAULT_MAX_WIDTH } from '@taiga-ui/core/constants';
8
7
  import { TUI_ANIMATION_OPTIONS, TUI_DROPDOWN_DIRECTIVE } from '@taiga-ui/core/tokens';
@@ -282,4 +281,4 @@ TuiDropdownBoxComponent = __decorate([
282
281
  __param(7, Inject(ANIMATION_FRAME))
283
282
  ], TuiDropdownBoxComponent);
284
283
  export { TuiDropdownBoxComponent };
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24tYm94LyIsInNvdXJjZXMiOlsiZHJvcGRvd24tYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsWUFBWSxFQUNaLEVBQUUsRUFDRixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLE9BQU8sRUFDUCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzNFLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXBGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RDs7R0FFRztBQUNILG9CQUFvQjtBQUNw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Q0FBQTtJQUNkLFdBQUEsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDOUIsV0FBQSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDZCxXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNsQixXQUFBLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBRXRDLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDN0IsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7R0FoQ25CLHVCQUF1QixDQXNVbkM7U0F0VVksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBbmltYXRpb25PcHRpb25zfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgTmdab25lLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FOSU1BVElPTl9GUkFNRSwgV0lORE9XfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7XG4gICAgZ2V0Q2xvc2VzdEVsZW1lbnQsXG4gICAgZ2V0Q2xvc2VzdEZvY3VzYWJsZSxcbiAgICBpblJhbmdlLFxuICAgIFBPTExJTkdfVElNRSxcbiAgICBweCxcbiAgICBzZXROYXRpdmVGb2N1c2VkLFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgVHVpRHJvcGRvd25Ib3N0Q29tcG9uZW50LFxuICAgIFR1aU92ZXJzY3JvbGxNb2RlVCxcbiAgICB0dWlQdXJlLFxuICAgIHR1aVpvbmVmcmVlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7QWJzdHJhY3RUdWlQb3J0YWxIb3N0Q29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2Fic3RyYWN0L3BvcnRhbC1ob3N0JztcbmltcG9ydCB7dHVpRHJvcGRvd25BbmltYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtERUZBVUxUX01BUkdJTiwgREVGQVVMVF9NQVhfV0lEVEh9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aURyb3Bkb3duQW5pbWF0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9lbnVtcyc7XG5pbXBvcnQge1R1aUFuaW1hdGlvbk9wdGlvbnMsIFR1aURyb3Bkb3dufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7VFVJX0FOSU1BVElPTl9PUFRJT05TLCBUVUlfRFJPUERPV05fRElSRUNUSVZFfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHtUdWlIb3Jpem9udGFsRGlyZWN0aW9uLCBUdWlWZXJ0aWNhbERpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtnZXRTY3JlZW5XaWR0aH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZG9tJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbCwgdGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gc2hvdyB0ZW1wbGF0ZSBpbiBhIHBvcnRhbCB1c2luZyBkZWZhdWx0IHN0eWxlIG9mIHdoaXRlIHJvdW5kZWQgYm94IHdpdGggYSBzaGFkb3dcbiAqL1xuLy8gQGJhZCBUT0RPOiBPblB1c2hcbi8vIEFtYmllbnQgdHlwZSBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGR5bmFtaWMgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjMzOTVcbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1kcm9wZG93bi1ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1ib3gudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tYm94LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2VdLFxuICAgIGFuaW1hdGlvbnM6IFt0dWlEcm9wZG93bkFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duQm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRpb25Ub3AgPSB7XG4gICAgICAgIHZhbHVlOiBUdWlEcm9wZG93bkFuaW1hdGlvbi5GYWRlSW5Ub3AsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRpb25Cb3R0b20gPSB7XG4gICAgICAgIHZhbHVlOiBUdWlEcm9wZG93bkFuaW1hdGlvbi5GYWRlSW5Cb3R0b20sXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSXMgcHJldmlvdXMgcG9zaXRpb24gb24gdG9wICh0byBwcmV2ZW50IGp1bXBpbmcgdXAgYW5kIGRvd24gb24gc2Nyb2xsKVxuICAgICAqL1xuICAgIHByaXZhdGUgcHJldkRpcmVjdGlvbklzVG9wID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ0B0dWlEcm9wZG93bkFuaW1hdGlvbicpXG4gICAgZHJvcGRvd25BbmltYXRpb24hOiBUdWlBbmltYXRpb25PcHRpb25zO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICByZWFkb25seSBjb250ZW50RWxlbWVudFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVHVpRGVzdHJveVNlcnZpY2UpXG4gICAgICAgIGRlc3Ryb3kkOiBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAgQEluamVjdChOZ1pvbmUpIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFRVSV9EUk9QRE9XTl9ESVJFQ1RJVkUpIHJlYWRvbmx5IGRpcmVjdGl2ZTogVHVpRHJvcGRvd24sXG4gICAgICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZjogV2luZG93LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoQWJzdHJhY3RUdWlQb3J0YWxIb3N0Q29tcG9uZW50KVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnRhbEhvc3Q6IFR1aURyb3Bkb3duSG9zdENvbXBvbmVudCxcbiAgICAgICAgQEluamVjdChUVUlfQU5JTUFUSU9OX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQW5pbWF0aW9uT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChBTklNQVRJT05fRlJBTUUpIGFuaW1hdGlvbkZyYW1lJDogT2JzZXJ2YWJsZTxudW1iZXI+LFxuICAgICkge1xuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIGFuaW1hdGlvbkZyYW1lJC5waXBlKHRocm90dGxlVGltZShQT0xMSU5HX1RJTUUpKSxcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlLnJlZnJlc2gkLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMud2luZG93UmVmLCAncmVzaXplJyksXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHR1aVpvbmVmcmVlKG5nWm9uZSksIHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJzY3JvbGwoKTogVHVpT3ZlcnNjcm9sbE1vZGVUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5Nb2RhbCA/ICdhbGwnIDogJ3Njcm9sbCc7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRDb250ZXh0PFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgICAgICBjb250ZXh0PzogVCxcbiAgICAgICAgYWN0aXZlWm9uZT86IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgKTpcbiAgICAgICAgfCAoVCAmIHthY3RpdmVab25lPzogVHVpQWN0aXZlWm9uZURpcmVjdGl2ZX0pXG4gICAgICAgIHwge2FjdGl2ZVpvbmU/OiBUdWlBY3RpdmVab25lRGlyZWN0aXZlfSB7XG4gICAgICAgIHJldHVybiB7Li4uY29udGV4dCwgYWN0aXZlWm9uZX07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSgpO1xuICAgIH1cblxuICAgIG9uVG9wRm9jdXMoKSB7XG4gICAgICAgIHRoaXMubW92ZUZvY3VzT3V0c2lkZSh0cnVlKTtcbiAgICB9XG5cbiAgICBvbkJvdHRvbUZvY3VzKCkge1xuICAgICAgICB0aGlzLm1vdmVGb2N1c091dHNpZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXQgaW5Nb2RhbCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gQGF3ZnVsIFRPRE86IGdldCByaWQgb2YgY29tcG9uZW50IHRhZyBuYW1lIGRlcGVuZGVuY3lcbiAgICAgICAgcmV0dXJuICEhZ2V0Q2xvc2VzdEVsZW1lbnQodGhpcy5kaXJlY3RpdmUuaG9zdCwgJ3R1aS1kaWFsb2ctaG9zdCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUG9zaXRpb25BbmRTaXplKCkge1xuICAgICAgICBjb25zdCB7Y2xpZW50UmVjdH0gPSB0aGlzLmRpcmVjdGl2ZTtcbiAgICAgICAgY29uc3Qge3N0eWxlfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBob3N0UmVjdCA9IHRoaXMuZGlyZWN0aXZlLmZpeGVkXG4gICAgICAgICAgICA/IHRoaXMucG9ydGFsSG9zdC5maXhlZFBvc2l0aW9uT2Zmc2V0KClcbiAgICAgICAgICAgIDogdGhpcy5wb3J0YWxIb3N0LmNsaWVudFJlY3Q7XG5cbiAgICAgICAgc3R5bGUucG9zaXRpb24gPSB0aGlzLmRpcmVjdGl2ZS5maXhlZCA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnO1xuXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlVmVydGljYWxQb3NpdGlvbihzdHlsZSwgY2xpZW50UmVjdCwgaG9zdFJlY3QpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUhvcml6b250YWxQb3NpdGlvbihzdHlsZSwgY2xpZW50UmVjdCwgaG9zdFJlY3QpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVdpZHRoKHN0eWxlLCBjbGllbnRSZWN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbmFsQWxpZ24oXG4gICAgICAgIHN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLFxuICAgICAgICBkaXJlY3RpdmVSZWN0OiBDbGllbnRSZWN0LFxuICAgICk6IFR1aUhvcml6b250YWxEaXJlY3Rpb24ge1xuICAgICAgICBjb25zdCBkcm9wZG93blJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25XaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBzY3JlZW5XaWR0aCA9IGdldFNjcmVlbldpZHRoKHRoaXMud2luZG93UmVmLmRvY3VtZW50KTtcbiAgICAgICAgY29uc3QgaXNEcm9wZG93blNpemVIeXBvdGhldGljYWxseUZpdHNWaWV3cG9ydCA9XG4gICAgICAgICAgICBkaXJlY3RpdmVSZWN0LmxlZnQgKyBkcm9wZG93bldpZHRoIDwgc2NyZWVuV2lkdGggfHxcbiAgICAgICAgICAgIGRpcmVjdGl2ZVJlY3QucmlnaHQgLSBkcm9wZG93bldpZHRoID4gMDtcbiAgICAgICAgY29uc3QgaXNEcm9wZG93blNpemVBY3R1YWxseUZpdHNWaWV3cG9ydCA9XG4gICAgICAgICAgICBkcm9wZG93blJlY3QucmlnaHQgPD0gc2NyZWVuV2lkdGggJiYgZHJvcGRvd25SZWN0LmxlZnQgPj0gMDtcbiAgICAgICAgbGV0IGZpbmFsQWxpZ246IFR1aUhvcml6b250YWxEaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGl2ZS5hbGlnbjtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aXZlLmFsaWduKSB7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGlzRHJvcGRvd25TaXplSHlwb3RoZXRpY2FsbHlGaXRzVmlld3BvcnQgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25SZWN0LnJpZ2h0ID4gc2NyZWVuV2lkdGhcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxBbGlnbiA9ICdyaWdodCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgaWYgKGlzRHJvcGRvd25TaXplSHlwb3RoZXRpY2FsbHlGaXRzVmlld3BvcnQgJiYgZHJvcGRvd25SZWN0LmxlZnQgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsQWxpZ24gPSAnbGVmdCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3R5bGUucmlnaHQgPT09ICdhdXRvJyAmJiBpc0Ryb3Bkb3duU2l6ZUFjdHVhbGx5Rml0c1ZpZXdwb3J0KSB7XG4gICAgICAgICAgICBmaW5hbEFsaWduID0gJ2xlZnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0eWxlLmxlZnQgPT09ICdhdXRvJyAmJiBpc0Ryb3Bkb3duU2l6ZUFjdHVhbGx5Rml0c1ZpZXdwb3J0KSB7XG4gICAgICAgICAgICBmaW5hbEFsaWduID0gJ3JpZ2h0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaW5hbEFsaWduO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgaG9yaXpvbnRhbCBwb3NpdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHN0eWxlIGRyb3Bkb3duQm94IGVsZW1lbnRSZWYgc3R5bGVzIG9iamVjdFxuICAgICAqIEBwYXJhbSBkaXJlY3RpdmVSZWN0IENsaWVudFJlY3Qgb2YgaG9zdGluZyBkaXJlY3RpdmVcbiAgICAgKiBAcGFyYW0gaG9zdFJlY3QgQ2xpZW50UmVjdCBvZiAgcG9ydGFsIGhvc3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUhvcml6b250YWxQb3NpdGlvbihcbiAgICAgICAgc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sXG4gICAgICAgIGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QsXG4gICAgICAgIGhvc3RSZWN0OiBDbGllbnRSZWN0LFxuICAgICkge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgPyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIERFRkFVTFRfTUFSR0lOXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBNYXRoLmNlaWwoZGlyZWN0aXZlUmVjdC5sZWZ0IC0gaG9zdFJlY3QubGVmdCAtIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5mbG9vcihob3N0UmVjdC5yaWdodCAtIGRpcmVjdGl2ZVJlY3QucmlnaHQgLSBvZmZzZXQpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5nZXRGaW5hbEFsaWduKHN0eWxlLCBkaXJlY3RpdmVSZWN0KSkge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByaWdodCArIERFRkFVTFRfTUFSR0lOID4gdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aCB8fFxuICAgICAgICAgICAgICAgICAgICBpblJhbmdlKGxlZnQgKyBERUZBVUxUX01BUkdJTiwgMCwgdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9IHB4KGxlZnQpO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9IHB4KHJpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluUmFuZ2UocmlnaHQgKyBERUZBVUxUX01BUkdJTiwgMCwgdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aCkgfHxcbiAgICAgICAgICAgICAgICAgICAgbGVmdCArIERFRkFVTFRfTUFSR0lOID4gdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9IHB4KHJpZ2h0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gcHgobGVmdCk7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLnJpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB2ZXJ0aWNhbCBwb3NpdGlvbiBhbmQgaGVpZ2h0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3R5bGUgZHJvcGRvd25Cb3ggZWxlbWVudFJlZiBzdHlsZXMgb2JqZWN0XG4gICAgICogQHBhcmFtIGRpcmVjdGl2ZVJlY3QgQ2xpZW50UmVjdCBvZiBob3N0aW5nIGRpcmVjdGl2ZVxuICAgICAqIEBwYXJhbSBob3N0UmVjdCBDbGllbnRSZWN0IG9mICBwb3J0YWwgaG9zdFxuICAgICAqL1xuICAgIHByaXZhdGUgY2FsY3VsYXRlVmVydGljYWxQb3NpdGlvbihcbiAgICAgICAgc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sXG4gICAgICAgIGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QsXG4gICAgICAgIGhvc3RSZWN0OiBDbGllbnRSZWN0LFxuICAgICkge1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0aGlzLndpbmRvd1JlZi5pbm5lckhlaWdodDtcbiAgICAgICAgLy8gTWF4aW11bSBoZWlnaHQgb2YgdGhlIGJveFxuICAgICAgICBjb25zdCBib3hIZWlnaHRMaW1pdCA9IE1hdGgubWluKFxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUubWF4SGVpZ2h0LFxuICAgICAgICAgICAgd2luZG93SGVpZ2h0IC0gREVGQVVMVF9NQVJHSU4gKiAyLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgPyBERUZBVUxUX01BUkdJTiAtIGRpcmVjdGl2ZVJlY3QuaGVpZ2h0XG4gICAgICAgICAgICA6IERFRkFVTFRfTUFSR0lOICogMjtcbiAgICAgICAgY29uc3QgdG9wQXZhaWxhYmxlSGVpZ2h0ID0gZGlyZWN0aXZlUmVjdC50b3AgLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGJvdHRvbUF2YWlsYWJsZUhlaWdodCA9IHdpbmRvd0hlaWdodCAtIGRpcmVjdGl2ZVJlY3QuYm90dG9tIC0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBmaW5hbERpcmVjdGlvbiA9IHRoaXMuZ2V0RmluYWxEaXJlY3Rpb24oZGlyZWN0aXZlUmVjdCk7XG5cbiAgICAgICAgdGhpcy5wcmV2RGlyZWN0aW9uSXNUb3AgPSBmaW5hbERpcmVjdGlvbiA9PT0gJ3RvcCc7XG5cbiAgICAgICAgaWYgKGZpbmFsRGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uQm90dG9tO1xuXG4gICAgICAgICAgICBzdHlsZS5tYXhIZWlnaHQgPSBweChNYXRoLm1pbihib3hIZWlnaHRMaW1pdCwgdG9wQXZhaWxhYmxlSGVpZ2h0KSk7XG4gICAgICAgICAgICBzdHlsZS50b3AgPSAnYXV0byc7XG4gICAgICAgICAgICBzdHlsZS5ib3R0b20gPSBweChcbiAgICAgICAgICAgICAgICBob3N0UmVjdC5ib3R0b20gLSBkaXJlY3RpdmVSZWN0LnRvcCAtIERFRkFVTFRfTUFSR0lOICsgb2Zmc2V0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25BbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvblRvcDtcblxuICAgICAgICAgICAgc3R5bGUubWF4SGVpZ2h0ID0gcHgoTWF0aC5taW4oYm94SGVpZ2h0TGltaXQsIGJvdHRvbUF2YWlsYWJsZUhlaWdodCkpO1xuICAgICAgICAgICAgc3R5bGUudG9wID0gcHgoZGlyZWN0aXZlUmVjdC5ib3R0b20gLSBob3N0UmVjdC50b3AgLSBERUZBVUxUX01BUkdJTiArIG9mZnNldCk7XG4gICAgICAgICAgICBzdHlsZS5ib3R0b20gPSAnYXV0byc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbmFsRGlyZWN0aW9uKGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QpOiBUdWlWZXJ0aWNhbERpcmVjdGlvbiB8IG51bGwge1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0aGlzLndpbmRvd1JlZi5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5kaXJlY3RpdmUuc2lkZWRcbiAgICAgICAgICAgID8gREVGQVVMVF9NQVJHSU4gLSBkaXJlY3RpdmVSZWN0LmhlaWdodFxuICAgICAgICAgICAgOiBERUZBVUxUX01BUkdJTiAqIDI7XG5cbiAgICAgICAgLy8gTWF4aW11bSBzcGFjZSBhdmFpbGFibGUgb24gdG9wIGFuZCBvbiB0aGUgYm90dG9tIGluIHRoZSB2aWV3cG9ydFxuICAgICAgICBjb25zdCB0b3BBdmFpbGFibGVIZWlnaHQgPSBkaXJlY3RpdmVSZWN0LnRvcCAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgYm90dG9tQXZhaWxhYmxlSGVpZ2h0ID0gd2luZG93SGVpZ2h0IC0gZGlyZWN0aXZlUmVjdC5ib3R0b20gLSBvZmZzZXQ7XG5cbiAgICAgICAgbGV0IGZpbmFsRGlyZWN0aW9uOiBUdWlWZXJ0aWNhbERpcmVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIC8vIEdpdmVuIGRpcmVjdGlvbiBpcyBhcHBsaWVkIGlmIHdlIGNhbiBmaXQgdGhlIGJveCBpbiB0aGUgbGltaXRzIHRoYXQgd2F5XG4gICAgICAgIHN3aXRjaCAodGhpcy5kaXJlY3RpdmUuZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIGlmICh0b3BBdmFpbGFibGVIZWlnaHQgPj0gdGhpcy5kaXJlY3RpdmUubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ3RvcCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIGlmIChib3R0b21BdmFpbGFibGVIZWlnaHQgPj0gdGhpcy5kaXJlY3RpdmUubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYXhpbXVtIGhlaWdodCBvZiB0aGUgYm94XG4gICAgICAgIGNvbnN0IGJveEhlaWdodExpbWl0ID0gTWF0aC5taW4oXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5tYXhIZWlnaHQsXG4gICAgICAgICAgICB3aW5kb3dIZWlnaHQgLSBERUZBVUxUX01BUkdJTiAqIDIsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQ2hvb3NlIGRpcmVjdGlvbiBpZiBnaXZlbiBkaXJlY3Rpb24gZGlkIG5vdCBmaXRcbiAgICAgICAgaWYgKGZpbmFsRGlyZWN0aW9uID09PSBudWxsICYmIHRoaXMuY29udGVudEVsZW1lbnRSZWYpIHtcbiAgICAgICAgICAgIC8vIEJveCBoZWlnaHQgaWYgaXQgZml0cyB3aXRob3V0IHNjcm9sbFxuICAgICAgICAgICAgY29uc3QgdmlzdWFsSGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KSxcbiAgICAgICAgICAgICAgICBib3hIZWlnaHRMaW1pdCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGVub3VnaCBzcGFjZSB0byBmaXQgYmVsb3cgd2l0aG91dCBzY3JvbGwsXG4gICAgICAgICAgICAvLyBjaG9vc2UgJ2JvdHRvbScsIHVubGVzcyBpdCB3YXMgcHJldmlvdXNseSBvbiB0aGUgdG9wXG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2RGlyZWN0aW9uSXNUb3AgJiYgdG9wQXZhaWxhYmxlSGVpZ2h0ID49IHZpc3VhbEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ3RvcCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbUF2YWlsYWJsZUhlaWdodCA+PSB2aXN1YWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9ICdib3R0b20nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBDb3JuZXIgY2FzZSDigJQgc2VsZWN0IGRpcmVjdGlvbiB3aXRoIG1vcmUgc3BhY2VcbiAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbUF2YWlsYWJsZUhlaWdodCA+PSB0b3BBdmFpbGFibGVIZWlnaHQgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbmFsRGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgd2lkdGhcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHlsZSBkcm9wZG93bkJveCBlbGVtZW50UmVmIHN0eWxlcyBvYmplY3RcbiAgICAgKiBAcGFyYW0gZGlyZWN0aXZlUmVjdCBDbGllbnRSZWN0IG9mIGhvc3RpbmcgZGlyZWN0aXZlXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVXaWR0aChzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbiwgZGlyZWN0aXZlUmVjdDogQ2xpZW50UmVjdCkge1xuICAgICAgICBzdHlsZS53aWR0aCA9XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5saW1pdE1pbldpZHRoID09PSAnZml4ZWQnICYmICF0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgICAgID8gcHgoZGlyZWN0aXZlUmVjdC53aWR0aClcbiAgICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZS5saW1pdE1pbldpZHRoID09PSAnbWluJyAmJiAhdGhpcy5kaXJlY3RpdmUuc2lkZWQpIHtcbiAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gcHgoZGlyZWN0aXZlUmVjdC53aWR0aCk7XG4gICAgICAgICAgICBzdHlsZS5tYXhXaWR0aCA9IHB4KERFRkFVTFRfTUFYX1dJRFRIKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc3R5bGUubWluV2lkdGggPSAnJztcbiAgICAgICAgc3R5bGUubWF4V2lkdGggPSAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVGb2N1c091dHNpZGUocHJldmlvdXM6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qge2hvc3R9ID0gdGhpcy5kaXJlY3RpdmU7XG4gICAgICAgIGNvbnN0IHtvd25lckRvY3VtZW50fSA9IGhvc3Q7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5ib2R5IDogaG9zdDtcblxuICAgICAgICBsZXQgZm9jdXNhYmxlID0gZ2V0Q2xvc2VzdEZvY3VzYWJsZShob3N0IGFzIEhUTUxFbGVtZW50LCBwcmV2aW91cywgcm9vdCk7XG5cbiAgICAgICAgd2hpbGUgKGZvY3VzYWJsZSAhPT0gbnVsbCAmJiBob3N0LmNvbnRhaW5zKGZvY3VzYWJsZSkpIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSA9IGdldENsb3Nlc3RGb2N1c2FibGUoZm9jdXNhYmxlLCBwcmV2aW91cywgcm9vdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXNhYmxlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXROYXRpdmVGb2N1c2VkKGZvY3VzYWJsZSk7XG4gICAgfVxufVxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24tYm94LyIsInNvdXJjZXMiOlsiZHJvcGRvd24tYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLFlBQVksRUFDWixFQUFFLEVBQ0YsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixPQUFPLEVBQ1AsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUczRSxPQUFPLEVBQUMscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQ7O0dBRUc7QUFDSCxvQkFBb0I7QUFDcEIsOEZBQThGO0FBQzlGLFdBQVc7QUFTWCxJQUFhLHVC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Q0FBQyxDQUFBO0lBQzlCLFdBQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2QsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEIsV0FBQSxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQTtJQUV0QyxXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzdCLFdBQUEsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0dBaENuQix1QkFBdUIsQ0FzVW5DO1NBdFVZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5pbWF0aW9uT3B0aW9uc30gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBTklNQVRJT05fRlJBTUUsIFdJTkRPV30gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpUG9ydGFsSG9zdENvbXBvbmVudCxcbiAgICBnZXRDbG9zZXN0RWxlbWVudCxcbiAgICBnZXRDbG9zZXN0Rm9jdXNhYmxlLFxuICAgIGluUmFuZ2UsXG4gICAgUE9MTElOR19USU1FLFxuICAgIHB4LFxuICAgIHNldE5hdGl2ZUZvY3VzZWQsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICBUdWlEcm9wZG93bkhvc3RDb21wb25lbnQsXG4gICAgVHVpT3ZlcnNjcm9sbE1vZGVULFxuICAgIHR1aVB1cmUsXG4gICAgdHVpWm9uZWZyZWUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHt0dWlEcm9wZG93bkFuaW1hdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0RFRkFVTFRfTUFSR0lOLCBERUZBVUxUX01BWF9XSURUSH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpRHJvcGRvd25BbmltYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2VudW1zJztcbmltcG9ydCB7VHVpQW5pbWF0aW9uT3B0aW9ucywgVHVpRHJvcGRvd259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtUVUlfQU5JTUFUSU9OX09QVElPTlMsIFRVSV9EUk9QRE9XTl9ESVJFQ1RJVkV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge1R1aUhvcml6b250YWxEaXJlY3Rpb24sIFR1aVZlcnRpY2FsRGlyZWN0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQge2dldFNjcmVlbldpZHRofSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9kb20nO1xuaW1wb3J0IHtmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiAgVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byBzaG93IHRlbXBsYXRlIGluIGEgcG9ydGFsIHVzaW5nIGRlZmF1bHQgc3R5bGUgb2Ygd2hpdGUgcm91bmRlZCBib3ggd2l0aCBhIHNoYWRvd1xuICovXG4vLyBAYmFkIFRPRE86IE9uUHVzaFxuLy8gQW1iaWVudCB0eXBlIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgZHluYW1pYyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yMzM5NVxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWRyb3Bkb3duLWJveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWJveC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi1ib3guc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgICBwcm92aWRlcnM6IFtUdWlEZXN0cm95U2VydmljZV0sXG4gICAgYW5pbWF0aW9uczogW3R1aURyb3Bkb3duQW5pbWF0aW9uXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRHJvcGRvd25Cb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuaW1hdGlvblRvcCA9IHtcbiAgICAgICAgdmFsdWU6IFR1aURyb3Bkb3duQW5pbWF0aW9uLkZhZGVJblRvcCxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuaW1hdGlvbkJvdHRvbSA9IHtcbiAgICAgICAgdmFsdWU6IFR1aURyb3Bkb3duQW5pbWF0aW9uLkZhZGVJbkJvdHRvbSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJcyBwcmV2aW91cyBwb3NpdGlvbiBvbiB0b3AgKHRvIHByZXZlbnQganVtcGluZyB1cCBhbmQgZG93biBvbiBzY3JvbGwpXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmV2RGlyZWN0aW9uSXNUb3AgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnQHR1aURyb3Bkb3duQW5pbWF0aW9uJylcbiAgICBkcm9wZG93bkFuaW1hdGlvbiE6IFR1aUFuaW1hdGlvbk9wdGlvbnM7XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50Jywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHJlYWRvbmx5IGNvbnRlbnRFbGVtZW50UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUdWlEZXN0cm95U2VydmljZSlcbiAgICAgICAgZGVzdHJveSQ6IFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE5nWm9uZSkgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RST1BET1dOX0RJUkVDVElWRSkgcmVhZG9ubHkgZGlyZWN0aXZlOiBUdWlEcm9wZG93bixcbiAgICAgICAgQEluamVjdChXSU5ET1cpIHByaXZhdGUgcmVhZG9ubHkgd2luZG93UmVmOiBXaW5kb3csXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChBYnN0cmFjdFR1aVBvcnRhbEhvc3RDb21wb25lbnQpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcG9ydGFsSG9zdDogVHVpRHJvcGRvd25Ib3N0Q29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KFRVSV9BTklNQVRJT05fT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBBbmltYXRpb25PcHRpb25zLFxuICAgICAgICBASW5qZWN0KEFOSU1BVElPTl9GUkFNRSkgYW5pbWF0aW9uRnJhbWUkOiBPYnNlcnZhYmxlPG51bWJlcj4sXG4gICAgKSB7XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgYW5pbWF0aW9uRnJhbWUkLnBpcGUodGhyb3R0bGVUaW1lKFBPTExJTkdfVElNRSkpLFxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUucmVmcmVzaCQsXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy53aW5kb3dSZWYsICdyZXNpemUnKSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUobmdab25lKSwgdGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25BbmRTaXplKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgb3ZlcnNjcm9sbCgpOiBUdWlPdmVyc2Nyb2xsTW9kZVQge1xuICAgICAgICByZXR1cm4gdGhpcy5pbk1vZGFsID8gJ2FsbCcgOiAnc2Nyb2xsJztcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGdldENvbnRleHQ8VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICAgIGNvbnRleHQ/OiBULFxuICAgICAgICBhY3RpdmVab25lPzogVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICApOlxuICAgICAgICB8IChUICYge2FjdGl2ZVpvbmU/OiBUdWlBY3RpdmVab25lRGlyZWN0aXZlfSlcbiAgICAgICAgfCB7YWN0aXZlWm9uZT86IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmV9IHtcbiAgICAgICAgcmV0dXJuIHsuLi5jb250ZXh0LCBhY3RpdmVab25lfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25BbmRTaXplKCk7XG4gICAgfVxuXG4gICAgb25Ub3BGb2N1cygpIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNPdXRzaWRlKHRydWUpO1xuICAgIH1cblxuICAgIG9uQm90dG9tRm9jdXMoKSB7XG4gICAgICAgIHRoaXMubW92ZUZvY3VzT3V0c2lkZShmYWxzZSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldCBpbk1vZGFsKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBAYXdmdWwgVE9ETzogZ2V0IHJpZCBvZiBjb21wb25lbnQgdGFnIG5hbWUgZGVwZW5kZW5jeVxuICAgICAgICByZXR1cm4gISFnZXRDbG9zZXN0RWxlbWVudCh0aGlzLmRpcmVjdGl2ZS5ob3N0LCAndHVpLWRpYWxvZy1ob3N0Jyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoKSB7XG4gICAgICAgIGNvbnN0IHtjbGllbnRSZWN0fSA9IHRoaXMuZGlyZWN0aXZlO1xuICAgICAgICBjb25zdCB7c3R5bGV9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGhvc3RSZWN0ID0gdGhpcy5kaXJlY3RpdmUuZml4ZWRcbiAgICAgICAgICAgID8gdGhpcy5wb3J0YWxIb3N0LmZpeGVkUG9zaXRpb25PZmZzZXQoKVxuICAgICAgICAgICAgOiB0aGlzLnBvcnRhbEhvc3QuY2xpZW50UmVjdDtcblxuICAgICAgICBzdHlsZS5wb3NpdGlvbiA9IHRoaXMuZGlyZWN0aXZlLmZpeGVkID8gJ2ZpeGVkJyA6ICdhYnNvbHV0ZSc7XG5cbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWZXJ0aWNhbFBvc2l0aW9uKHN0eWxlLCBjbGllbnRSZWN0LCBob3N0UmVjdCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlSG9yaXpvbnRhbFBvc2l0aW9uKHN0eWxlLCBjbGllbnRSZWN0LCBob3N0UmVjdCk7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlV2lkdGgoc3R5bGUsIGNsaWVudFJlY3QpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmluYWxBbGlnbihcbiAgICAgICAgc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sXG4gICAgICAgIGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QsXG4gICAgKTogVHVpSG9yaXpvbnRhbERpcmVjdGlvbiB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duUmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkcm9wZG93bldpZHRoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IHNjcmVlbldpZHRoID0gZ2V0U2NyZWVuV2lkdGgodGhpcy53aW5kb3dSZWYuZG9jdW1lbnQpO1xuICAgICAgICBjb25zdCBpc0Ryb3Bkb3duU2l6ZUh5cG90aGV0aWNhbGx5Rml0c1ZpZXdwb3J0ID1cbiAgICAgICAgICAgIGRpcmVjdGl2ZVJlY3QubGVmdCArIGRyb3Bkb3duV2lkdGggPCBzY3JlZW5XaWR0aCB8fFxuICAgICAgICAgICAgZGlyZWN0aXZlUmVjdC5yaWdodCAtIGRyb3Bkb3duV2lkdGggPiAwO1xuICAgICAgICBjb25zdCBpc0Ryb3Bkb3duU2l6ZUFjdHVhbGx5Rml0c1ZpZXdwb3J0ID1cbiAgICAgICAgICAgIGRyb3Bkb3duUmVjdC5yaWdodCA8PSBzY3JlZW5XaWR0aCAmJiBkcm9wZG93blJlY3QubGVmdCA+PSAwO1xuICAgICAgICBsZXQgZmluYWxBbGlnbjogVHVpSG9yaXpvbnRhbERpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aXZlLmFsaWduO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5kaXJlY3RpdmUuYWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgaXNEcm9wZG93blNpemVIeXBvdGhldGljYWxseUZpdHNWaWV3cG9ydCAmJlxuICAgICAgICAgICAgICAgICAgICBkcm9wZG93blJlY3QucmlnaHQgPiBzY3JlZW5XaWR0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbEFsaWduID0gJ3JpZ2h0JztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICBpZiAoaXNEcm9wZG93blNpemVIeXBvdGhldGljYWxseUZpdHNWaWV3cG9ydCAmJiBkcm9wZG93blJlY3QubGVmdCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxBbGlnbiA9ICdsZWZ0JztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHlsZS5yaWdodCA9PT0gJ2F1dG8nICYmIGlzRHJvcGRvd25TaXplQWN0dWFsbHlGaXRzVmlld3BvcnQpIHtcbiAgICAgICAgICAgIGZpbmFsQWxpZ24gPSAnbGVmdCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3R5bGUubGVmdCA9PT0gJ2F1dG8nICYmIGlzRHJvcGRvd25TaXplQWN0dWFsbHlGaXRzVmlld3BvcnQpIHtcbiAgICAgICAgICAgIGZpbmFsQWxpZ24gPSAncmlnaHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbmFsQWxpZ247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyBob3Jpem9udGFsIHBvc2l0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3R5bGUgZHJvcGRvd25Cb3ggZWxlbWVudFJlZiBzdHlsZXMgb2JqZWN0XG4gICAgICogQHBhcmFtIGRpcmVjdGl2ZVJlY3QgQ2xpZW50UmVjdCBvZiBob3N0aW5nIGRpcmVjdGl2ZVxuICAgICAqIEBwYXJhbSBob3N0UmVjdCBDbGllbnRSZWN0IG9mICBwb3J0YWwgaG9zdFxuICAgICAqL1xuICAgIHByaXZhdGUgY2FsY3VsYXRlSG9yaXpvbnRhbFBvc2l0aW9uKFxuICAgICAgICBzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbixcbiAgICAgICAgZGlyZWN0aXZlUmVjdDogQ2xpZW50UmVjdCxcbiAgICAgICAgaG9zdFJlY3Q6IENsaWVudFJlY3QsXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZGlyZWN0aXZlLnNpZGVkXG4gICAgICAgICAgICA/IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgREVGQVVMVF9NQVJHSU5cbiAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbGVmdCA9IE1hdGguY2VpbChkaXJlY3RpdmVSZWN0LmxlZnQgLSBob3N0UmVjdC5sZWZ0IC0gb2Zmc2V0KTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBNYXRoLmZsb29yKGhvc3RSZWN0LnJpZ2h0IC0gZGlyZWN0aXZlUmVjdC5yaWdodCAtIG9mZnNldCk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmdldEZpbmFsQWxpZ24oc3R5bGUsIGRpcmVjdGl2ZVJlY3QpKSB7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0ICsgREVGQVVMVF9NQVJHSU4gPiB0aGlzLndpbmRvd1JlZi5pbm5lcldpZHRoIHx8XG4gICAgICAgICAgICAgICAgICAgIGluUmFuZ2UobGVmdCArIERFRkFVTFRfTUFSR0lOLCAwLCB0aGlzLndpbmRvd1JlZi5pbm5lcldpZHRoKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gcHgobGVmdCk7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLnJpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLnJpZ2h0ID0gcHgocmlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgaW5SYW5nZShyaWdodCArIERFRkFVTFRfTUFSR0lOLCAwLCB0aGlzLndpbmRvd1JlZi5pbm5lcldpZHRoKSB8fFxuICAgICAgICAgICAgICAgICAgICBsZWZ0ICsgREVGQVVMVF9NQVJHSU4gPiB0aGlzLndpbmRvd1JlZi5pbm5lcldpZHRoXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLnJpZ2h0ID0gcHgocmlnaHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUucmlnaHQgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHZlcnRpY2FsIHBvc2l0aW9uIGFuZCBoZWlnaHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHlsZSBkcm9wZG93bkJveCBlbGVtZW50UmVmIHN0eWxlcyBvYmplY3RcbiAgICAgKiBAcGFyYW0gZGlyZWN0aXZlUmVjdCBDbGllbnRSZWN0IG9mIGhvc3RpbmcgZGlyZWN0aXZlXG4gICAgICogQHBhcmFtIGhvc3RSZWN0IENsaWVudFJlY3Qgb2YgIHBvcnRhbCBob3N0XG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVWZXJ0aWNhbFBvc2l0aW9uKFxuICAgICAgICBzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbixcbiAgICAgICAgZGlyZWN0aXZlUmVjdDogQ2xpZW50UmVjdCxcbiAgICAgICAgaG9zdFJlY3Q6IENsaWVudFJlY3QsXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHRoaXMud2luZG93UmVmLmlubmVySGVpZ2h0O1xuICAgICAgICAvLyBNYXhpbXVtIGhlaWdodCBvZiB0aGUgYm94XG4gICAgICAgIGNvbnN0IGJveEhlaWdodExpbWl0ID0gTWF0aC5taW4oXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5tYXhIZWlnaHQsXG4gICAgICAgICAgICB3aW5kb3dIZWlnaHQgLSBERUZBVUxUX01BUkdJTiAqIDIsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZGlyZWN0aXZlLnNpZGVkXG4gICAgICAgICAgICA/IERFRkFVTFRfTUFSR0lOIC0gZGlyZWN0aXZlUmVjdC5oZWlnaHRcbiAgICAgICAgICAgIDogREVGQVVMVF9NQVJHSU4gKiAyO1xuICAgICAgICBjb25zdCB0b3BBdmFpbGFibGVIZWlnaHQgPSBkaXJlY3RpdmVSZWN0LnRvcCAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgYm90dG9tQXZhaWxhYmxlSGVpZ2h0ID0gd2luZG93SGVpZ2h0IC0gZGlyZWN0aXZlUmVjdC5ib3R0b20gLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGZpbmFsRGlyZWN0aW9uID0gdGhpcy5nZXRGaW5hbERpcmVjdGlvbihkaXJlY3RpdmVSZWN0KTtcblxuICAgICAgICB0aGlzLnByZXZEaXJlY3Rpb25Jc1RvcCA9IGZpbmFsRGlyZWN0aW9uID09PSAndG9wJztcblxuICAgICAgICBpZiAoZmluYWxEaXJlY3Rpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb25Cb3R0b207XG5cbiAgICAgICAgICAgIHN0eWxlLm1heEhlaWdodCA9IHB4KE1hdGgubWluKGJveEhlaWdodExpbWl0LCB0b3BBdmFpbGFibGVIZWlnaHQpKTtcbiAgICAgICAgICAgIHN0eWxlLnRvcCA9ICdhdXRvJztcbiAgICAgICAgICAgIHN0eWxlLmJvdHRvbSA9IHB4KFxuICAgICAgICAgICAgICAgIGhvc3RSZWN0LmJvdHRvbSAtIGRpcmVjdGl2ZVJlY3QudG9wIC0gREVGQVVMVF9NQVJHSU4gKyBvZmZzZXQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uVG9wO1xuXG4gICAgICAgICAgICBzdHlsZS5tYXhIZWlnaHQgPSBweChNYXRoLm1pbihib3hIZWlnaHRMaW1pdCwgYm90dG9tQXZhaWxhYmxlSGVpZ2h0KSk7XG4gICAgICAgICAgICBzdHlsZS50b3AgPSBweChkaXJlY3RpdmVSZWN0LmJvdHRvbSAtIGhvc3RSZWN0LnRvcCAtIERFRkFVTFRfTUFSR0lOICsgb2Zmc2V0KTtcbiAgICAgICAgICAgIHN0eWxlLmJvdHRvbSA9ICdhdXRvJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmluYWxEaXJlY3Rpb24oZGlyZWN0aXZlUmVjdDogQ2xpZW50UmVjdCk6IFR1aVZlcnRpY2FsRGlyZWN0aW9uIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHRoaXMud2luZG93UmVmLmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgPyBERUZBVUxUX01BUkdJTiAtIGRpcmVjdGl2ZVJlY3QuaGVpZ2h0XG4gICAgICAgICAgICA6IERFRkFVTFRfTUFSR0lOICogMjtcblxuICAgICAgICAvLyBNYXhpbXVtIHNwYWNlIGF2YWlsYWJsZSBvbiB0b3AgYW5kIG9uIHRoZSBib3R0b20gaW4gdGhlIHZpZXdwb3J0XG4gICAgICAgIGNvbnN0IHRvcEF2YWlsYWJsZUhlaWdodCA9IGRpcmVjdGl2ZVJlY3QudG9wIC0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBib3R0b21BdmFpbGFibGVIZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSBkaXJlY3RpdmVSZWN0LmJvdHRvbSAtIG9mZnNldDtcblxuICAgICAgICBsZXQgZmluYWxEaXJlY3Rpb246IFR1aVZlcnRpY2FsRGlyZWN0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgLy8gR2l2ZW4gZGlyZWN0aW9uIGlzIGFwcGxpZWQgaWYgd2UgY2FuIGZpdCB0aGUgYm94IGluIHRoZSBsaW1pdHMgdGhhdCB3YXlcbiAgICAgICAgc3dpdGNoICh0aGlzLmRpcmVjdGl2ZS5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgaWYgKHRvcEF2YWlsYWJsZUhlaWdodCA+PSB0aGlzLmRpcmVjdGl2ZS5taW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxEaXJlY3Rpb24gPSAndG9wJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgaWYgKGJvdHRvbUF2YWlsYWJsZUhlaWdodCA+PSB0aGlzLmRpcmVjdGl2ZS5taW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxEaXJlY3Rpb24gPSAnYm90dG9tJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBib3hcbiAgICAgICAgY29uc3QgYm94SGVpZ2h0TGltaXQgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlLm1heEhlaWdodCxcbiAgICAgICAgICAgIHdpbmRvd0hlaWdodCAtIERFRkFVTFRfTUFSR0lOICogMixcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBDaG9vc2UgZGlyZWN0aW9uIGlmIGdpdmVuIGRpcmVjdGlvbiBkaWQgbm90IGZpdFxuICAgICAgICBpZiAoZmluYWxEaXJlY3Rpb24gPT09IG51bGwgJiYgdGhpcy5jb250ZW50RWxlbWVudFJlZikge1xuICAgICAgICAgICAgLy8gQm94IGhlaWdodCBpZiBpdCBmaXRzIHdpdGhvdXQgc2Nyb2xsXG4gICAgICAgICAgICBjb25zdCB2aXN1YWxIZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpLFxuICAgICAgICAgICAgICAgIGJveEhlaWdodExpbWl0LFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIHRvIGZpdCBiZWxvdyB3aXRob3V0IHNjcm9sbCxcbiAgICAgICAgICAgIC8vIGNob29zZSAnYm90dG9tJywgdW5sZXNzIGl0IHdhcyBwcmV2aW91c2x5IG9uIHRoZSB0b3BcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZEaXJlY3Rpb25Jc1RvcCAmJiB0b3BBdmFpbGFibGVIZWlnaHQgPj0gdmlzdWFsSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZmluYWxEaXJlY3Rpb24gPSAndG9wJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYm90dG9tQXZhaWxhYmxlSGVpZ2h0ID49IHZpc3VhbEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIENvcm5lciBjYXNlIOKAlCBzZWxlY3QgZGlyZWN0aW9uIHdpdGggbW9yZSBzcGFjZVxuICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgYm90dG9tQXZhaWxhYmxlSGVpZ2h0ID49IHRvcEF2YWlsYWJsZUhlaWdodCA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmluYWxEaXJlY3Rpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB3aWR0aFxuICAgICAqXG4gICAgICogQHBhcmFtIHN0eWxlIGRyb3Bkb3duQm94IGVsZW1lbnRSZWYgc3R5bGVzIG9iamVjdFxuICAgICAqIEBwYXJhbSBkaXJlY3RpdmVSZWN0IENsaWVudFJlY3Qgb2YgaG9zdGluZyBkaXJlY3RpdmVcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVdpZHRoKHN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLCBkaXJlY3RpdmVSZWN0OiBDbGllbnRSZWN0KSB7XG4gICAgICAgIHN0eWxlLndpZHRoID1cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlLmxpbWl0TWluV2lkdGggPT09ICdmaXhlZCcgJiYgIXRoaXMuZGlyZWN0aXZlLnNpZGVkXG4gICAgICAgICAgICAgICAgPyBweChkaXJlY3RpdmVSZWN0LndpZHRoKVxuICAgICAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlLmxpbWl0TWluV2lkdGggPT09ICdtaW4nICYmICF0aGlzLmRpcmVjdGl2ZS5zaWRlZCkge1xuICAgICAgICAgICAgc3R5bGUubWluV2lkdGggPSBweChkaXJlY3RpdmVSZWN0LndpZHRoKTtcbiAgICAgICAgICAgIHN0eWxlLm1heFdpZHRoID0gcHgoREVGQVVMVF9NQVhfV0lEVEgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdHlsZS5taW5XaWR0aCA9ICcnO1xuICAgICAgICBzdHlsZS5tYXhXaWR0aCA9ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZUZvY3VzT3V0c2lkZShwcmV2aW91czogYm9vbGVhbikge1xuICAgICAgICBjb25zdCB7aG9zdH0gPSB0aGlzLmRpcmVjdGl2ZTtcbiAgICAgICAgY29uc3Qge293bmVyRG9jdW1lbnR9ID0gaG9zdDtcbiAgICAgICAgY29uc3Qgcm9vdCA9IG93bmVyRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LmJvZHkgOiBob3N0O1xuXG4gICAgICAgIGxldCBmb2N1c2FibGUgPSBnZXRDbG9zZXN0Rm9jdXNhYmxlKGhvc3QgYXMgSFRNTEVsZW1lbnQsIHByZXZpb3VzLCByb290KTtcblxuICAgICAgICB3aGlsZSAoZm9jdXNhYmxlICE9PSBudWxsICYmIGhvc3QuY29udGFpbnMoZm9jdXNhYmxlKSkge1xuICAgICAgICAgICAgZm9jdXNhYmxlID0gZ2V0Q2xvc2VzdEZvY3VzYWJsZShmb2N1c2FibGUsIHByZXZpb3VzLCByb290KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb2N1c2FibGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldE5hdGl2ZUZvY3VzZWQoZm9jdXNhYmxlKTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export const VERSION = '2.37.0';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMzcuMCc7XG4iXX0=
1
+ export const VERSION = '2.37.1';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMzcuMSc7XG4iXX0=
@@ -1,8 +1,7 @@
1
1
  import { __assign, __decorate, __param } from "tslib";
2
2
  import { AfterViewChecked, ChangeDetectionStrategy, Component, ElementRef, HostBinding, Inject, NgZone, ViewChild, } from '@angular/core';
3
3
  import { ANIMATION_FRAME, WINDOW } from '@ng-web-apis/common';
4
- import { getClosestElement, getClosestFocusable, inRange, POLLING_TIME, px, setNativeFocused, TuiActiveZoneDirective, TuiDestroyService, TuiDropdownHostComponent, TuiOverscrollModeT, tuiPure, tuiZonefree, } from '@taiga-ui/cdk';
5
- import { AbstractTuiPortalHostComponent } from '@taiga-ui/cdk/abstract/portal-host';
4
+ import { AbstractTuiPortalHostComponent, getClosestElement, getClosestFocusable, inRange, POLLING_TIME, px, setNativeFocused, TuiActiveZoneDirective, TuiDestroyService, TuiDropdownHostComponent, TuiOverscrollModeT, tuiPure, tuiZonefree, } from '@taiga-ui/cdk';
6
5
  import { tuiDropdownAnimation } from '@taiga-ui/core/animations';
7
6
  import { DEFAULT_MARGIN, DEFAULT_MAX_WIDTH } from '@taiga-ui/core/constants';
8
7
  import { TUI_ANIMATION_OPTIONS, TUI_DROPDOWN_DIRECTIVE } from '@taiga-ui/core/tokens';
@@ -292,4 +291,4 @@ var TuiDropdownBoxComponent = /** @class */ (function () {
292
291
  return TuiDropdownBoxComponent;
293
292
  }());
294
293
  export { TuiDropdownBoxComponent };
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24tYm94LyIsInNvdXJjZXMiOlsiZHJvcGRvd24tYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsWUFBWSxFQUNaLEVBQUUsRUFDRixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLE9BQU8sRUFDUCxXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzNFLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXBGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RDs7R0FFRztBQUNILG9CQUFvQjtBQUNw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OUIsV0FBQSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDZCxXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBRXRDLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFDN0IsV0FBQSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7T0FoQ25CLHVCQUF1QixDQXNVbkM7SUFBRCw4QkFBQztDQUFBLEFBdFVELElBc1VDO1NBdFVZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5pbWF0aW9uT3B0aW9uc30gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBTklNQVRJT05fRlJBTUUsIFdJTkRPV30gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGdldENsb3Nlc3RFbGVtZW50LFxuICAgIGdldENsb3Nlc3RGb2N1c2FibGUsXG4gICAgaW5SYW5nZSxcbiAgICBQT0xMSU5HX1RJTUUsXG4gICAgcHgsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIFR1aURyb3Bkb3duSG9zdENvbXBvbmVudCxcbiAgICBUdWlPdmVyc2Nyb2xsTW9kZVQsXG4gICAgdHVpUHVyZSxcbiAgICB0dWlab25lZnJlZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge0Fic3RyYWN0VHVpUG9ydGFsSG9zdENvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9hYnN0cmFjdC9wb3J0YWwtaG9zdCc7XG5pbXBvcnQge3R1aURyb3Bkb3duQW5pbWF0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9hbmltYXRpb25zJztcbmltcG9ydCB7REVGQVVMVF9NQVJHSU4sIERFRkFVTFRfTUFYX1dJRFRIfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlEcm9wZG93bkFuaW1hdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZW51bXMnO1xuaW1wb3J0IHtUdWlBbmltYXRpb25PcHRpb25zLCBUdWlEcm9wZG93bn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1RVSV9BTklNQVRJT05fT1BUSU9OUywgVFVJX0RST1BET1dOX0RJUkVDVElWRX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VHVpSG9yaXpvbnRhbERpcmVjdGlvbiwgVHVpVmVydGljYWxEaXJlY3Rpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB7Z2V0U2NyZWVuV2lkdGh9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL2RvbSc7XG5pbXBvcnQge2Zyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWwsIHRocm90dGxlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqICBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIHNob3cgdGVtcGxhdGUgaW4gYSBwb3J0YWwgdXNpbmcgZGVmYXVsdCBzdHlsZSBvZiB3aGl0ZSByb3VuZGVkIGJveCB3aXRoIGEgc2hhZG93XG4gKi9cbi8vIEBiYWQgVE9ETzogT25QdXNoXG4vLyBBbWJpZW50IHR5cGUgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBkeW5hbWljIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIzMzk1XG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24tYm94JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tYm94LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLWJveC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIHByb3ZpZGVyczogW1R1aURlc3Ryb3lTZXJ2aWNlXSxcbiAgICBhbmltYXRpb25zOiBbdHVpRHJvcGRvd25BbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bkJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0aW9uVG9wID0ge1xuICAgICAgICB2YWx1ZTogVHVpRHJvcGRvd25BbmltYXRpb24uRmFkZUluVG9wLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0aW9uQm90dG9tID0ge1xuICAgICAgICB2YWx1ZTogVHVpRHJvcGRvd25BbmltYXRpb24uRmFkZUluQm90dG9tLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIElzIHByZXZpb3VzIHBvc2l0aW9uIG9uIHRvcCAodG8gcHJldmVudCBqdW1waW5nIHVwIGFuZCBkb3duIG9uIHNjcm9sbClcbiAgICAgKi9cbiAgICBwcml2YXRlIHByZXZEaXJlY3Rpb25Jc1RvcCA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdAdHVpRHJvcGRvd25BbmltYXRpb24nKVxuICAgIGRyb3Bkb3duQW5pbWF0aW9uITogVHVpQW5pbWF0aW9uT3B0aW9ucztcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7cmVhZDogRWxlbWVudFJlZn0pXG4gICAgcmVhZG9ubHkgY29udGVudEVsZW1lbnRSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKVxuICAgICAgICBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUVUlfRFJPUERPV05fRElSRUNUSVZFKSByZWFkb25seSBkaXJlY3RpdmU6IFR1aURyb3Bkb3duLFxuICAgICAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dSZWY6IFdpbmRvdyxcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KEFic3RyYWN0VHVpUG9ydGFsSG9zdENvbXBvbmVudClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwb3J0YWxIb3N0OiBUdWlEcm9wZG93bkhvc3RDb21wb25lbnQsXG4gICAgICAgIEBJbmplY3QoVFVJX0FOSU1BVElPTl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEFuaW1hdGlvbk9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoQU5JTUFUSU9OX0ZSQU1FKSBhbmltYXRpb25GcmFtZSQ6IE9ic2VydmFibGU8bnVtYmVyPixcbiAgICApIHtcbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICBhbmltYXRpb25GcmFtZSQucGlwZSh0aHJvdHRsZVRpbWUoUE9MTElOR19USU1FKSksXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5yZWZyZXNoJCxcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLndpbmRvd1JlZiwgJ3Jlc2l6ZScpLFxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0dWlab25lZnJlZShuZ1pvbmUpLCB0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBvdmVyc2Nyb2xsKCk6IFR1aU92ZXJzY3JvbGxNb2RlVCB7XG4gICAgICAgIHJldHVybiB0aGlzLmluTW9kYWwgPyAnYWxsJyA6ICdzY3JvbGwnO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgZ2V0Q29udGV4dDxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICAgICAgY29udGV4dD86IFQsXG4gICAgICAgIGFjdGl2ZVpvbmU/OiBUdWlBY3RpdmVab25lRGlyZWN0aXZlLFxuICAgICk6XG4gICAgICAgIHwgKFQgJiB7YWN0aXZlWm9uZT86IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmV9KVxuICAgICAgICB8IHthY3RpdmVab25lPzogVHVpQWN0aXZlWm9uZURpcmVjdGl2ZX0ge1xuICAgICAgICByZXR1cm4gey4uLmNvbnRleHQsIGFjdGl2ZVpvbmV9O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoKTtcbiAgICB9XG5cbiAgICBvblRvcEZvY3VzKCkge1xuICAgICAgICB0aGlzLm1vdmVGb2N1c091dHNpZGUodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25Cb3R0b21Gb2N1cygpIHtcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNPdXRzaWRlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZ2V0IGluTW9kYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIEBhd2Z1bCBUT0RPOiBnZXQgcmlkIG9mIGNvbXBvbmVudCB0YWcgbmFtZSBkZXBlbmRlbmN5XG4gICAgICAgIHJldHVybiAhIWdldENsb3Nlc3RFbGVtZW50KHRoaXMuZGlyZWN0aXZlLmhvc3QsICd0dWktZGlhbG9nLWhvc3QnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSgpIHtcbiAgICAgICAgY29uc3Qge2NsaWVudFJlY3R9ID0gdGhpcy5kaXJlY3RpdmU7XG4gICAgICAgIGNvbnN0IHtzdHlsZX0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmRpcmVjdGl2ZS5maXhlZFxuICAgICAgICAgICAgPyB0aGlzLnBvcnRhbEhvc3QuZml4ZWRQb3NpdGlvbk9mZnNldCgpXG4gICAgICAgICAgICA6IHRoaXMucG9ydGFsSG9zdC5jbGllbnRSZWN0O1xuXG4gICAgICAgIHN0eWxlLnBvc2l0aW9uID0gdGhpcy5kaXJlY3RpdmUuZml4ZWQgPyAnZml4ZWQnIDogJ2Fic29sdXRlJztcblxuICAgICAgICB0aGlzLmNhbGN1bGF0ZVZlcnRpY2FsUG9zaXRpb24oc3R5bGUsIGNsaWVudFJlY3QsIGhvc3RSZWN0KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVIb3Jpem9udGFsUG9zaXRpb24oc3R5bGUsIGNsaWVudFJlY3QsIGhvc3RSZWN0KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVXaWR0aChzdHlsZSwgY2xpZW50UmVjdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaW5hbEFsaWduKFxuICAgICAgICBzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbixcbiAgICAgICAgZGlyZWN0aXZlUmVjdDogQ2xpZW50UmVjdCxcbiAgICApOiBUdWlIb3Jpem9udGFsRGlyZWN0aW9uIHtcbiAgICAgICAgY29uc3QgZHJvcGRvd25SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3Qgc2NyZWVuV2lkdGggPSBnZXRTY3JlZW5XaWR0aCh0aGlzLndpbmRvd1JlZi5kb2N1bWVudCk7XG4gICAgICAgIGNvbnN0IGlzRHJvcGRvd25TaXplSHlwb3RoZXRpY2FsbHlGaXRzVmlld3BvcnQgPVxuICAgICAgICAgICAgZGlyZWN0aXZlUmVjdC5sZWZ0ICsgZHJvcGRvd25XaWR0aCA8IHNjcmVlbldpZHRoIHx8XG4gICAgICAgICAgICBkaXJlY3RpdmVSZWN0LnJpZ2h0IC0gZHJvcGRvd25XaWR0aCA+IDA7XG4gICAgICAgIGNvbnN0IGlzRHJvcGRvd25TaXplQWN0dWFsbHlGaXRzVmlld3BvcnQgPVxuICAgICAgICAgICAgZHJvcGRvd25SZWN0LnJpZ2h0IDw9IHNjcmVlbldpZHRoICYmIGRyb3Bkb3duUmVjdC5sZWZ0ID49IDA7XG4gICAgICAgIGxldCBmaW5hbEFsaWduOiBUdWlIb3Jpem9udGFsRGlyZWN0aW9uID0gdGhpcy5kaXJlY3RpdmUuYWxpZ247XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmRpcmVjdGl2ZS5hbGlnbikge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBpc0Ryb3Bkb3duU2l6ZUh5cG90aGV0aWNhbGx5Rml0c1ZpZXdwb3J0ICYmXG4gICAgICAgICAgICAgICAgICAgIGRyb3Bkb3duUmVjdC5yaWdodCA+IHNjcmVlbldpZHRoXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsQWxpZ24gPSAncmlnaHQnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIGlmIChpc0Ryb3Bkb3duU2l6ZUh5cG90aGV0aWNhbGx5Rml0c1ZpZXdwb3J0ICYmIGRyb3Bkb3duUmVjdC5sZWZ0IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0eWxlLnJpZ2h0ID09PSAnYXV0bycgJiYgaXNEcm9wZG93blNpemVBY3R1YWxseUZpdHNWaWV3cG9ydCkge1xuICAgICAgICAgICAgZmluYWxBbGlnbiA9ICdsZWZ0JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHlsZS5sZWZ0ID09PSAnYXV0bycgJiYgaXNEcm9wZG93blNpemVBY3R1YWxseUZpdHNWaWV3cG9ydCkge1xuICAgICAgICAgICAgZmluYWxBbGlnbiA9ICdyaWdodCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmluYWxBbGlnbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIGhvcml6b250YWwgcG9zaXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHlsZSBkcm9wZG93bkJveCBlbGVtZW50UmVmIHN0eWxlcyBvYmplY3RcbiAgICAgKiBAcGFyYW0gZGlyZWN0aXZlUmVjdCBDbGllbnRSZWN0IG9mIGhvc3RpbmcgZGlyZWN0aXZlXG4gICAgICogQHBhcmFtIGhvc3RSZWN0IENsaWVudFJlY3Qgb2YgIHBvcnRhbCBob3N0XG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVIb3Jpem9udGFsUG9zaXRpb24oXG4gICAgICAgIHN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLFxuICAgICAgICBkaXJlY3RpdmVSZWN0OiBDbGllbnRSZWN0LFxuICAgICAgICBob3N0UmVjdDogQ2xpZW50UmVjdCxcbiAgICApIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5kaXJlY3RpdmUuc2lkZWRcbiAgICAgICAgICAgID8gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyBERUZBVUxUX01BUkdJTlxuICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBsZWZ0ID0gTWF0aC5jZWlsKGRpcmVjdGl2ZVJlY3QubGVmdCAtIGhvc3RSZWN0LmxlZnQgLSBvZmZzZXQpO1xuICAgICAgICBjb25zdCByaWdodCA9IE1hdGguZmxvb3IoaG9zdFJlY3QucmlnaHQgLSBkaXJlY3RpdmVSZWN0LnJpZ2h0IC0gb2Zmc2V0KTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuZ2V0RmluYWxBbGlnbihzdHlsZSwgZGlyZWN0aXZlUmVjdCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQgKyBERUZBVUxUX01BUkdJTiA+IHRoaXMud2luZG93UmVmLmlubmVyV2lkdGggfHxcbiAgICAgICAgICAgICAgICAgICAgaW5SYW5nZShsZWZ0ICsgREVGQVVMVF9NQVJHSU4sIDAsIHRoaXMud2luZG93UmVmLmlubmVyV2lkdGgpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUucmlnaHQgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUucmlnaHQgPSBweChyaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBpblJhbmdlKHJpZ2h0ICsgREVGQVVMVF9NQVJHSU4sIDAsIHRoaXMud2luZG93UmVmLmlubmVyV2lkdGgpIHx8XG4gICAgICAgICAgICAgICAgICAgIGxlZnQgKyBERUZBVUxUX01BUkdJTiA+IHRoaXMud2luZG93UmVmLmlubmVyV2lkdGhcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUucmlnaHQgPSBweChyaWdodCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9IHB4KGxlZnQpO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdmVydGljYWwgcG9zaXRpb24gYW5kIGhlaWdodFxuICAgICAqXG4gICAgICogQHBhcmFtIHN0eWxlIGRyb3Bkb3duQm94IGVsZW1lbnRSZWYgc3R5bGVzIG9iamVjdFxuICAgICAqIEBwYXJhbSBkaXJlY3RpdmVSZWN0IENsaWVudFJlY3Qgb2YgaG9zdGluZyBkaXJlY3RpdmVcbiAgICAgKiBAcGFyYW0gaG9zdFJlY3QgQ2xpZW50UmVjdCBvZiAgcG9ydGFsIGhvc3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVZlcnRpY2FsUG9zaXRpb24oXG4gICAgICAgIHN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLFxuICAgICAgICBkaXJlY3RpdmVSZWN0OiBDbGllbnRSZWN0LFxuICAgICAgICBob3N0UmVjdDogQ2xpZW50UmVjdCxcbiAgICApIHtcbiAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gdGhpcy53aW5kb3dSZWYuaW5uZXJIZWlnaHQ7XG4gICAgICAgIC8vIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBib3hcbiAgICAgICAgY29uc3QgYm94SGVpZ2h0TGltaXQgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlLm1heEhlaWdodCxcbiAgICAgICAgICAgIHdpbmRvd0hlaWdodCAtIERFRkFVTFRfTUFSR0lOICogMixcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5kaXJlY3RpdmUuc2lkZWRcbiAgICAgICAgICAgID8gREVGQVVMVF9NQVJHSU4gLSBkaXJlY3RpdmVSZWN0LmhlaWdodFxuICAgICAgICAgICAgOiBERUZBVUxUX01BUkdJTiAqIDI7XG4gICAgICAgIGNvbnN0IHRvcEF2YWlsYWJsZUhlaWdodCA9IGRpcmVjdGl2ZVJlY3QudG9wIC0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBib3R0b21BdmFpbGFibGVIZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSBkaXJlY3RpdmVSZWN0LmJvdHRvbSAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgZmluYWxEaXJlY3Rpb24gPSB0aGlzLmdldEZpbmFsRGlyZWN0aW9uKGRpcmVjdGl2ZVJlY3QpO1xuXG4gICAgICAgIHRoaXMucHJldkRpcmVjdGlvbklzVG9wID0gZmluYWxEaXJlY3Rpb24gPT09ICd0b3AnO1xuXG4gICAgICAgIGlmIChmaW5hbERpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25BbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvbkJvdHRvbTtcblxuICAgICAgICAgICAgc3R5bGUubWF4SGVpZ2h0ID0gcHgoTWF0aC5taW4oYm94SGVpZ2h0TGltaXQsIHRvcEF2YWlsYWJsZUhlaWdodCkpO1xuICAgICAgICAgICAgc3R5bGUudG9wID0gJ2F1dG8nO1xuICAgICAgICAgICAgc3R5bGUuYm90dG9tID0gcHgoXG4gICAgICAgICAgICAgICAgaG9zdFJlY3QuYm90dG9tIC0gZGlyZWN0aXZlUmVjdC50b3AgLSBERUZBVUxUX01BUkdJTiArIG9mZnNldCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb25Ub3A7XG5cbiAgICAgICAgICAgIHN0eWxlLm1heEhlaWdodCA9IHB4KE1hdGgubWluKGJveEhlaWdodExpbWl0LCBib3R0b21BdmFpbGFibGVIZWlnaHQpKTtcbiAgICAgICAgICAgIHN0eWxlLnRvcCA9IHB4KGRpcmVjdGl2ZVJlY3QuYm90dG9tIC0gaG9zdFJlY3QudG9wIC0gREVGQVVMVF9NQVJHSU4gKyBvZmZzZXQpO1xuICAgICAgICAgICAgc3R5bGUuYm90dG9tID0gJ2F1dG8nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaW5hbERpcmVjdGlvbihkaXJlY3RpdmVSZWN0OiBDbGllbnRSZWN0KTogVHVpVmVydGljYWxEaXJlY3Rpb24gfCBudWxsIHtcbiAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gdGhpcy53aW5kb3dSZWYuaW5uZXJIZWlnaHQ7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZGlyZWN0aXZlLnNpZGVkXG4gICAgICAgICAgICA/IERFRkFVTFRfTUFSR0lOIC0gZGlyZWN0aXZlUmVjdC5oZWlnaHRcbiAgICAgICAgICAgIDogREVGQVVMVF9NQVJHSU4gKiAyO1xuXG4gICAgICAgIC8vIE1heGltdW0gc3BhY2UgYXZhaWxhYmxlIG9uIHRvcCBhbmQgb24gdGhlIGJvdHRvbSBpbiB0aGUgdmlld3BvcnRcbiAgICAgICAgY29uc3QgdG9wQXZhaWxhYmxlSGVpZ2h0ID0gZGlyZWN0aXZlUmVjdC50b3AgLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGJvdHRvbUF2YWlsYWJsZUhlaWdodCA9IHdpbmRvd0hlaWdodCAtIGRpcmVjdGl2ZVJlY3QuYm90dG9tIC0gb2Zmc2V0O1xuXG4gICAgICAgIGxldCBmaW5hbERpcmVjdGlvbjogVHVpVmVydGljYWxEaXJlY3Rpb24gfCBudWxsID0gbnVsbDtcblxuICAgICAgICAvLyBHaXZlbiBkaXJlY3Rpb24gaXMgYXBwbGllZCBpZiB3ZSBjYW4gZml0IHRoZSBib3ggaW4gdGhlIGxpbWl0cyB0aGF0IHdheVxuICAgICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aXZlLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICBpZiAodG9wQXZhaWxhYmxlSGVpZ2h0ID49IHRoaXMuZGlyZWN0aXZlLm1pbkhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9ICd0b3AnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICBpZiAoYm90dG9tQXZhaWxhYmxlSGVpZ2h0ID49IHRoaXMuZGlyZWN0aXZlLm1pbkhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9ICdib3R0b20nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWF4aW11bSBoZWlnaHQgb2YgdGhlIGJveFxuICAgICAgICBjb25zdCBib3hIZWlnaHRMaW1pdCA9IE1hdGgubWluKFxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUubWF4SGVpZ2h0LFxuICAgICAgICAgICAgd2luZG93SGVpZ2h0IC0gREVGQVVMVF9NQVJHSU4gKiAyLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIENob29zZSBkaXJlY3Rpb24gaWYgZ2l2ZW4gZGlyZWN0aW9uIGRpZCBub3QgZml0XG4gICAgICAgIGlmIChmaW5hbERpcmVjdGlvbiA9PT0gbnVsbCAmJiB0aGlzLmNvbnRlbnRFbGVtZW50UmVmKSB7XG4gICAgICAgICAgICAvLyBCb3ggaGVpZ2h0IGlmIGl0IGZpdHMgd2l0aG91dCBzY3JvbGxcbiAgICAgICAgICAgIGNvbnN0IHZpc3VhbEhlaWdodCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCksXG4gICAgICAgICAgICAgICAgYm94SGVpZ2h0TGltaXQsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgdG8gZml0IGJlbG93IHdpdGhvdXQgc2Nyb2xsLFxuICAgICAgICAgICAgLy8gY2hvb3NlICdib3R0b20nLCB1bmxlc3MgaXQgd2FzIHByZXZpb3VzbHkgb24gdGhlIHRvcFxuICAgICAgICAgICAgaWYgKHRoaXMucHJldkRpcmVjdGlvbklzVG9wICYmIHRvcEF2YWlsYWJsZUhlaWdodCA+PSB2aXN1YWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9ICd0b3AnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChib3R0b21BdmFpbGFibGVIZWlnaHQgPj0gdmlzdWFsSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZmluYWxEaXJlY3Rpb24gPSAnYm90dG9tJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQ29ybmVyIGNhc2Ug4oCUIHNlbGVjdCBkaXJlY3Rpb24gd2l0aCBtb3JlIHNwYWNlXG4gICAgICAgICAgICAgICAgZmluYWxEaXJlY3Rpb24gPVxuICAgICAgICAgICAgICAgICAgICBib3R0b21BdmFpbGFibGVIZWlnaHQgPj0gdG9wQXZhaWxhYmxlSGVpZ2h0ID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaW5hbERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHdpZHRoXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3R5bGUgZHJvcGRvd25Cb3ggZWxlbWVudFJlZiBzdHlsZXMgb2JqZWN0XG4gICAgICogQHBhcmFtIGRpcmVjdGl2ZVJlY3QgQ2xpZW50UmVjdCBvZiBob3N0aW5nIGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY2FsY3VsYXRlV2lkdGgoc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sIGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QpIHtcbiAgICAgICAgc3R5bGUud2lkdGggPVxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUubGltaXRNaW5XaWR0aCA9PT0gJ2ZpeGVkJyAmJiAhdGhpcy5kaXJlY3RpdmUuc2lkZWRcbiAgICAgICAgICAgICAgICA/IHB4KGRpcmVjdGl2ZVJlY3Qud2lkdGgpXG4gICAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBpZiAodGhpcy5kaXJlY3RpdmUubGltaXRNaW5XaWR0aCA9PT0gJ21pbicgJiYgIXRoaXMuZGlyZWN0aXZlLnNpZGVkKSB7XG4gICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9IHB4KGRpcmVjdGl2ZVJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgc3R5bGUubWF4V2lkdGggPSBweChERUZBVUxUX01BWF9XSURUSCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0eWxlLm1pbldpZHRoID0gJyc7XG4gICAgICAgIHN0eWxlLm1heFdpZHRoID0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlRm9jdXNPdXRzaWRlKHByZXZpb3VzOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHtob3N0fSA9IHRoaXMuZGlyZWN0aXZlO1xuICAgICAgICBjb25zdCB7b3duZXJEb2N1bWVudH0gPSBob3N0O1xuICAgICAgICBjb25zdCByb290ID0gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuYm9keSA6IGhvc3Q7XG5cbiAgICAgICAgbGV0IGZvY3VzYWJsZSA9IGdldENsb3Nlc3RGb2N1c2FibGUoaG9zdCBhcyBIVE1MRWxlbWVudCwgcHJldmlvdXMsIHJvb3QpO1xuXG4gICAgICAgIHdoaWxlIChmb2N1c2FibGUgIT09IG51bGwgJiYgaG9zdC5jb250YWlucyhmb2N1c2FibGUpKSB7XG4gICAgICAgICAgICBmb2N1c2FibGUgPSBnZXRDbG9zZXN0Rm9jdXNhYmxlKGZvY3VzYWJsZSwgcHJldmlvdXMsIHJvb3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvY3VzYWJsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0TmF0aXZlRm9jdXNlZChmb2N1c2FibGUpO1xuICAgIH1cbn1cbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZHJvcGRvd24tYm94LyIsInNvdXJjZXMiOlsiZHJvcGRvd24tYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0gsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLFlBQVksRUFDWixFQUFFLEVBQ0YsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixPQUFPLEVBQ1AsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUczRSxPQUFPLEVBQUMscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQ7O0dBRUc7QUFDSCxvQkFBb0I7QUFDcEIsOEZBQThGO0FBQzlGLFdBQVc7QUFTWDtJQXNCSSxp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O1FBQ2QsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEIsV0FBQSxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0QyxXQUFBLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQzdCLFdBQUEsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO09BaENuQix1QkFBdUIsQ0FzVW5DO0lBQUQsOEJBQUM7Q0FBQSxBQXRVRCxJQXNVQztTQXRVWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FuaW1hdGlvbk9wdGlvbnN9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBOZ1pvbmUsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QU5JTUFUSU9OX0ZSQU1FLCBXSU5ET1d9IGZyb20gJ0BuZy13ZWItYXBpcy9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aVBvcnRhbEhvc3RDb21wb25lbnQsXG4gICAgZ2V0Q2xvc2VzdEVsZW1lbnQsXG4gICAgZ2V0Q2xvc2VzdEZvY3VzYWJsZSxcbiAgICBpblJhbmdlLFxuICAgIFBPTExJTkdfVElNRSxcbiAgICBweCxcbiAgICBzZXROYXRpdmVGb2N1c2VkLFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgVHVpRHJvcGRvd25Ib3N0Q29tcG9uZW50LFxuICAgIFR1aU92ZXJzY3JvbGxNb2RlVCxcbiAgICB0dWlQdXJlLFxuICAgIHR1aVpvbmVmcmVlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7dHVpRHJvcGRvd25BbmltYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtERUZBVUxUX01BUkdJTiwgREVGQVVMVF9NQVhfV0lEVEh9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aURyb3Bkb3duQW5pbWF0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9lbnVtcyc7XG5pbXBvcnQge1R1aUFuaW1hdGlvbk9wdGlvbnMsIFR1aURyb3Bkb3dufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9pbnRlcmZhY2VzJztcbmltcG9ydCB7VFVJX0FOSU1BVElPTl9PUFRJT05TLCBUVUlfRFJPUERPV05fRElSRUNUSVZFfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHtUdWlIb3Jpem9udGFsRGlyZWN0aW9uLCBUdWlWZXJ0aWNhbERpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtnZXRTY3JlZW5XaWR0aH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZG9tJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbCwgdGhyb3R0bGVUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gc2hvdyB0ZW1wbGF0ZSBpbiBhIHBvcnRhbCB1c2luZyBkZWZhdWx0IHN0eWxlIG9mIHdoaXRlIHJvdW5kZWQgYm94IHdpdGggYSBzaGFkb3dcbiAqL1xuLy8gQGJhZCBUT0RPOiBPblB1c2hcbi8vIEFtYmllbnQgdHlwZSBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGR5bmFtaWMgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjMzOTVcbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1kcm9wZG93bi1ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1ib3gudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tYm94LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2VdLFxuICAgIGFuaW1hdGlvbnM6IFt0dWlEcm9wZG93bkFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duQm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRpb25Ub3AgPSB7XG4gICAgICAgIHZhbHVlOiBUdWlEcm9wZG93bkFuaW1hdGlvbi5GYWRlSW5Ub3AsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRpb25Cb3R0b20gPSB7XG4gICAgICAgIHZhbHVlOiBUdWlEcm9wZG93bkFuaW1hdGlvbi5GYWRlSW5Cb3R0b20sXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSXMgcHJldmlvdXMgcG9zaXRpb24gb24gdG9wICh0byBwcmV2ZW50IGp1bXBpbmcgdXAgYW5kIGRvd24gb24gc2Nyb2xsKVxuICAgICAqL1xuICAgIHByaXZhdGUgcHJldkRpcmVjdGlvbklzVG9wID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ0B0dWlEcm9wZG93bkFuaW1hdGlvbicpXG4gICAgZHJvcGRvd25BbmltYXRpb24hOiBUdWlBbmltYXRpb25PcHRpb25zO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICByZWFkb25seSBjb250ZW50RWxlbWVudFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVHVpRGVzdHJveVNlcnZpY2UpXG4gICAgICAgIGRlc3Ryb3kkOiBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAgQEluamVjdChOZ1pvbmUpIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFRVSV9EUk9QRE9XTl9ESVJFQ1RJVkUpIHJlYWRvbmx5IGRpcmVjdGl2ZTogVHVpRHJvcGRvd24sXG4gICAgICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZjogV2luZG93LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoQWJzdHJhY3RUdWlQb3J0YWxIb3N0Q29tcG9uZW50KVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnRhbEhvc3Q6IFR1aURyb3Bkb3duSG9zdENvbXBvbmVudCxcbiAgICAgICAgQEluamVjdChUVUlfQU5JTUFUSU9OX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQW5pbWF0aW9uT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChBTklNQVRJT05fRlJBTUUpIGFuaW1hdGlvbkZyYW1lJDogT2JzZXJ2YWJsZTxudW1iZXI+LFxuICAgICkge1xuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIGFuaW1hdGlvbkZyYW1lJC5waXBlKHRocm90dGxlVGltZShQT0xMSU5HX1RJTUUpKSxcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlLnJlZnJlc2gkLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMud2luZG93UmVmLCAncmVzaXplJyksXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHR1aVpvbmVmcmVlKG5nWm9uZSksIHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJzY3JvbGwoKTogVHVpT3ZlcnNjcm9sbE1vZGVUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5Nb2RhbCA/ICdhbGwnIDogJ3Njcm9sbCc7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRDb250ZXh0PFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgICAgICBjb250ZXh0PzogVCxcbiAgICAgICAgYWN0aXZlWm9uZT86IFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgKTpcbiAgICAgICAgfCAoVCAmIHthY3RpdmVab25lPzogVHVpQWN0aXZlWm9uZURpcmVjdGl2ZX0pXG4gICAgICAgIHwge2FjdGl2ZVpvbmU/OiBUdWlBY3RpdmVab25lRGlyZWN0aXZlfSB7XG4gICAgICAgIHJldHVybiB7Li4uY29udGV4dCwgYWN0aXZlWm9uZX07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSgpO1xuICAgIH1cblxuICAgIG9uVG9wRm9jdXMoKSB7XG4gICAgICAgIHRoaXMubW92ZUZvY3VzT3V0c2lkZSh0cnVlKTtcbiAgICB9XG5cbiAgICBvbkJvdHRvbUZvY3VzKCkge1xuICAgICAgICB0aGlzLm1vdmVGb2N1c091dHNpZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXQgaW5Nb2RhbCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gQGF3ZnVsIFRPRE86IGdldCByaWQgb2YgY29tcG9uZW50IHRhZyBuYW1lIGRlcGVuZGVuY3lcbiAgICAgICAgcmV0dXJuICEhZ2V0Q2xvc2VzdEVsZW1lbnQodGhpcy5kaXJlY3RpdmUuaG9zdCwgJ3R1aS1kaWFsb2ctaG9zdCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUG9zaXRpb25BbmRTaXplKCkge1xuICAgICAgICBjb25zdCB7Y2xpZW50UmVjdH0gPSB0aGlzLmRpcmVjdGl2ZTtcbiAgICAgICAgY29uc3Qge3N0eWxlfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBob3N0UmVjdCA9IHRoaXMuZGlyZWN0aXZlLmZpeGVkXG4gICAgICAgICAgICA/IHRoaXMucG9ydGFsSG9zdC5maXhlZFBvc2l0aW9uT2Zmc2V0KClcbiAgICAgICAgICAgIDogdGhpcy5wb3J0YWxIb3N0LmNsaWVudFJlY3Q7XG5cbiAgICAgICAgc3R5bGUucG9zaXRpb24gPSB0aGlzLmRpcmVjdGl2ZS5maXhlZCA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnO1xuXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlVmVydGljYWxQb3NpdGlvbihzdHlsZSwgY2xpZW50UmVjdCwgaG9zdFJlY3QpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZUhvcml6b250YWxQb3NpdGlvbihzdHlsZSwgY2xpZW50UmVjdCwgaG9zdFJlY3QpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVdpZHRoKHN0eWxlLCBjbGllbnRSZWN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbmFsQWxpZ24oXG4gICAgICAgIHN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLFxuICAgICAgICBkaXJlY3RpdmVSZWN0OiBDbGllbnRSZWN0LFxuICAgICk6IFR1aUhvcml6b250YWxEaXJlY3Rpb24ge1xuICAgICAgICBjb25zdCBkcm9wZG93blJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25XaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBzY3JlZW5XaWR0aCA9IGdldFNjcmVlbldpZHRoKHRoaXMud2luZG93UmVmLmRvY3VtZW50KTtcbiAgICAgICAgY29uc3QgaXNEcm9wZG93blNpemVIeXBvdGhldGljYWxseUZpdHNWaWV3cG9ydCA9XG4gICAgICAgICAgICBkaXJlY3RpdmVSZWN0LmxlZnQgKyBkcm9wZG93bldpZHRoIDwgc2NyZWVuV2lkdGggfHxcbiAgICAgICAgICAgIGRpcmVjdGl2ZVJlY3QucmlnaHQgLSBkcm9wZG93bldpZHRoID4gMDtcbiAgICAgICAgY29uc3QgaXNEcm9wZG93blNpemVBY3R1YWxseUZpdHNWaWV3cG9ydCA9XG4gICAgICAgICAgICBkcm9wZG93blJlY3QucmlnaHQgPD0gc2NyZWVuV2lkdGggJiYgZHJvcGRvd25SZWN0LmxlZnQgPj0gMDtcbiAgICAgICAgbGV0IGZpbmFsQWxpZ246IFR1aUhvcml6b250YWxEaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGl2ZS5hbGlnbjtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aXZlLmFsaWduKSB7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGlzRHJvcGRvd25TaXplSHlwb3RoZXRpY2FsbHlGaXRzVmlld3BvcnQgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25SZWN0LnJpZ2h0ID4gc2NyZWVuV2lkdGhcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxBbGlnbiA9ICdyaWdodCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgaWYgKGlzRHJvcGRvd25TaXplSHlwb3RoZXRpY2FsbHlGaXRzVmlld3BvcnQgJiYgZHJvcGRvd25SZWN0LmxlZnQgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsQWxpZ24gPSAnbGVmdCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3R5bGUucmlnaHQgPT09ICdhdXRvJyAmJiBpc0Ryb3Bkb3duU2l6ZUFjdHVhbGx5Rml0c1ZpZXdwb3J0KSB7XG4gICAgICAgICAgICBmaW5hbEFsaWduID0gJ2xlZnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0eWxlLmxlZnQgPT09ICdhdXRvJyAmJiBpc0Ryb3Bkb3duU2l6ZUFjdHVhbGx5Rml0c1ZpZXdwb3J0KSB7XG4gICAgICAgICAgICBmaW5hbEFsaWduID0gJ3JpZ2h0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaW5hbEFsaWduO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgaG9yaXpvbnRhbCBwb3NpdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHN0eWxlIGRyb3Bkb3duQm94IGVsZW1lbnRSZWYgc3R5bGVzIG9iamVjdFxuICAgICAqIEBwYXJhbSBkaXJlY3RpdmVSZWN0IENsaWVudFJlY3Qgb2YgaG9zdGluZyBkaXJlY3RpdmVcbiAgICAgKiBAcGFyYW0gaG9zdFJlY3QgQ2xpZW50UmVjdCBvZiAgcG9ydGFsIGhvc3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUhvcml6b250YWxQb3NpdGlvbihcbiAgICAgICAgc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sXG4gICAgICAgIGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QsXG4gICAgICAgIGhvc3RSZWN0OiBDbGllbnRSZWN0LFxuICAgICkge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgPyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIERFRkFVTFRfTUFSR0lOXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBNYXRoLmNlaWwoZGlyZWN0aXZlUmVjdC5sZWZ0IC0gaG9zdFJlY3QubGVmdCAtIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5mbG9vcihob3N0UmVjdC5yaWdodCAtIGRpcmVjdGl2ZVJlY3QucmlnaHQgLSBvZmZzZXQpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5nZXRGaW5hbEFsaWduKHN0eWxlLCBkaXJlY3RpdmVSZWN0KSkge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByaWdodCArIERFRkFVTFRfTUFSR0lOID4gdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aCB8fFxuICAgICAgICAgICAgICAgICAgICBpblJhbmdlKGxlZnQgKyBERUZBVUxUX01BUkdJTiwgMCwgdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9IHB4KGxlZnQpO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9IHB4KHJpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluUmFuZ2UocmlnaHQgKyBERUZBVUxUX01BUkdJTiwgMCwgdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aCkgfHxcbiAgICAgICAgICAgICAgICAgICAgbGVmdCArIERFRkFVTFRfTUFSR0lOID4gdGhpcy53aW5kb3dSZWYuaW5uZXJXaWR0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5yaWdodCA9IHB4KHJpZ2h0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gcHgobGVmdCk7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLnJpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB2ZXJ0aWNhbCBwb3NpdGlvbiBhbmQgaGVpZ2h0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3R5bGUgZHJvcGRvd25Cb3ggZWxlbWVudFJlZiBzdHlsZXMgb2JqZWN0XG4gICAgICogQHBhcmFtIGRpcmVjdGl2ZVJlY3QgQ2xpZW50UmVjdCBvZiBob3N0aW5nIGRpcmVjdGl2ZVxuICAgICAqIEBwYXJhbSBob3N0UmVjdCBDbGllbnRSZWN0IG9mICBwb3J0YWwgaG9zdFxuICAgICAqL1xuICAgIHByaXZhdGUgY2FsY3VsYXRlVmVydGljYWxQb3NpdGlvbihcbiAgICAgICAgc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sXG4gICAgICAgIGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QsXG4gICAgICAgIGhvc3RSZWN0OiBDbGllbnRSZWN0LFxuICAgICkge1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0aGlzLndpbmRvd1JlZi5pbm5lckhlaWdodDtcbiAgICAgICAgLy8gTWF4aW11bSBoZWlnaHQgb2YgdGhlIGJveFxuICAgICAgICBjb25zdCBib3hIZWlnaHRMaW1pdCA9IE1hdGgubWluKFxuICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmUubWF4SGVpZ2h0LFxuICAgICAgICAgICAgd2luZG93SGVpZ2h0IC0gREVGQVVMVF9NQVJHSU4gKiAyLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgPyBERUZBVUxUX01BUkdJTiAtIGRpcmVjdGl2ZVJlY3QuaGVpZ2h0XG4gICAgICAgICAgICA6IERFRkFVTFRfTUFSR0lOICogMjtcbiAgICAgICAgY29uc3QgdG9wQXZhaWxhYmxlSGVpZ2h0ID0gZGlyZWN0aXZlUmVjdC50b3AgLSBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGJvdHRvbUF2YWlsYWJsZUhlaWdodCA9IHdpbmRvd0hlaWdodCAtIGRpcmVjdGl2ZVJlY3QuYm90dG9tIC0gb2Zmc2V0O1xuICAgICAgICBjb25zdCBmaW5hbERpcmVjdGlvbiA9IHRoaXMuZ2V0RmluYWxEaXJlY3Rpb24oZGlyZWN0aXZlUmVjdCk7XG5cbiAgICAgICAgdGhpcy5wcmV2RGlyZWN0aW9uSXNUb3AgPSBmaW5hbERpcmVjdGlvbiA9PT0gJ3RvcCc7XG5cbiAgICAgICAgaWYgKGZpbmFsRGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uQm90dG9tO1xuXG4gICAgICAgICAgICBzdHlsZS5tYXhIZWlnaHQgPSBweChNYXRoLm1pbihib3hIZWlnaHRMaW1pdCwgdG9wQXZhaWxhYmxlSGVpZ2h0KSk7XG4gICAgICAgICAgICBzdHlsZS50b3AgPSAnYXV0byc7XG4gICAgICAgICAgICBzdHlsZS5ib3R0b20gPSBweChcbiAgICAgICAgICAgICAgICBob3N0UmVjdC5ib3R0b20gLSBkaXJlY3RpdmVSZWN0LnRvcCAtIERFRkFVTFRfTUFSR0lOICsgb2Zmc2V0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25BbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvblRvcDtcblxuICAgICAgICAgICAgc3R5bGUubWF4SGVpZ2h0ID0gcHgoTWF0aC5taW4oYm94SGVpZ2h0TGltaXQsIGJvdHRvbUF2YWlsYWJsZUhlaWdodCkpO1xuICAgICAgICAgICAgc3R5bGUudG9wID0gcHgoZGlyZWN0aXZlUmVjdC5ib3R0b20gLSBob3N0UmVjdC50b3AgLSBERUZBVUxUX01BUkdJTiArIG9mZnNldCk7XG4gICAgICAgICAgICBzdHlsZS5ib3R0b20gPSAnYXV0byc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbmFsRGlyZWN0aW9uKGRpcmVjdGl2ZVJlY3Q6IENsaWVudFJlY3QpOiBUdWlWZXJ0aWNhbERpcmVjdGlvbiB8IG51bGwge1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0aGlzLndpbmRvd1JlZi5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5kaXJlY3RpdmUuc2lkZWRcbiAgICAgICAgICAgID8gREVGQVVMVF9NQVJHSU4gLSBkaXJlY3RpdmVSZWN0LmhlaWdodFxuICAgICAgICAgICAgOiBERUZBVUxUX01BUkdJTiAqIDI7XG5cbiAgICAgICAgLy8gTWF4aW11bSBzcGFjZSBhdmFpbGFibGUgb24gdG9wIGFuZCBvbiB0aGUgYm90dG9tIGluIHRoZSB2aWV3cG9ydFxuICAgICAgICBjb25zdCB0b3BBdmFpbGFibGVIZWlnaHQgPSBkaXJlY3RpdmVSZWN0LnRvcCAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgYm90dG9tQXZhaWxhYmxlSGVpZ2h0ID0gd2luZG93SGVpZ2h0IC0gZGlyZWN0aXZlUmVjdC5ib3R0b20gLSBvZmZzZXQ7XG5cbiAgICAgICAgbGV0IGZpbmFsRGlyZWN0aW9uOiBUdWlWZXJ0aWNhbERpcmVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIC8vIEdpdmVuIGRpcmVjdGlvbiBpcyBhcHBsaWVkIGlmIHdlIGNhbiBmaXQgdGhlIGJveCBpbiB0aGUgbGltaXRzIHRoYXQgd2F5XG4gICAgICAgIHN3aXRjaCAodGhpcy5kaXJlY3RpdmUuZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIGlmICh0b3BBdmFpbGFibGVIZWlnaHQgPj0gdGhpcy5kaXJlY3RpdmUubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ3RvcCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgIGlmIChib3R0b21BdmFpbGFibGVIZWlnaHQgPj0gdGhpcy5kaXJlY3RpdmUubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYXhpbXVtIGhlaWdodCBvZiB0aGUgYm94XG4gICAgICAgIGNvbnN0IGJveEhlaWdodExpbWl0ID0gTWF0aC5taW4oXG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5tYXhIZWlnaHQsXG4gICAgICAgICAgICB3aW5kb3dIZWlnaHQgLSBERUZBVUxUX01BUkdJTiAqIDIsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQ2hvb3NlIGRpcmVjdGlvbiBpZiBnaXZlbiBkaXJlY3Rpb24gZGlkIG5vdCBmaXRcbiAgICAgICAgaWYgKGZpbmFsRGlyZWN0aW9uID09PSBudWxsICYmIHRoaXMuY29udGVudEVsZW1lbnRSZWYpIHtcbiAgICAgICAgICAgIC8vIEJveCBoZWlnaHQgaWYgaXQgZml0cyB3aXRob3V0IHNjcm9sbFxuICAgICAgICAgICAgY29uc3QgdmlzdWFsSGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KSxcbiAgICAgICAgICAgICAgICBib3hIZWlnaHRMaW1pdCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGVub3VnaCBzcGFjZSB0byBmaXQgYmVsb3cgd2l0aG91dCBzY3JvbGwsXG4gICAgICAgICAgICAvLyBjaG9vc2UgJ2JvdHRvbScsIHVubGVzcyBpdCB3YXMgcHJldmlvdXNseSBvbiB0aGUgdG9wXG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2RGlyZWN0aW9uSXNUb3AgJiYgdG9wQXZhaWxhYmxlSGVpZ2h0ID49IHZpc3VhbEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGZpbmFsRGlyZWN0aW9uID0gJ3RvcCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbUF2YWlsYWJsZUhlaWdodCA+PSB2aXN1YWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9ICdib3R0b20nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBDb3JuZXIgY2FzZSDigJQgc2VsZWN0IGRpcmVjdGlvbiB3aXRoIG1vcmUgc3BhY2VcbiAgICAgICAgICAgICAgICBmaW5hbERpcmVjdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbUF2YWlsYWJsZUhlaWdodCA+PSB0b3BBdmFpbGFibGVIZWlnaHQgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbmFsRGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgd2lkdGhcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHlsZSBkcm9wZG93bkJveCBlbGVtZW50UmVmIHN0eWxlcyBvYmplY3RcbiAgICAgKiBAcGFyYW0gZGlyZWN0aXZlUmVjdCBDbGllbnRSZWN0IG9mIGhvc3RpbmcgZGlyZWN0aXZlXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVXaWR0aChzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbiwgZGlyZWN0aXZlUmVjdDogQ2xpZW50UmVjdCkge1xuICAgICAgICBzdHlsZS53aWR0aCA9XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5saW1pdE1pbldpZHRoID09PSAnZml4ZWQnICYmICF0aGlzLmRpcmVjdGl2ZS5zaWRlZFxuICAgICAgICAgICAgICAgID8gcHgoZGlyZWN0aXZlUmVjdC53aWR0aClcbiAgICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmRpcmVjdGl2ZS5saW1pdE1pbldpZHRoID09PSAnbWluJyAmJiAhdGhpcy5kaXJlY3RpdmUuc2lkZWQpIHtcbiAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gcHgoZGlyZWN0aXZlUmVjdC53aWR0aCk7XG4gICAgICAgICAgICBzdHlsZS5tYXhXaWR0aCA9IHB4KERFRkFVTFRfTUFYX1dJRFRIKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc3R5bGUubWluV2lkdGggPSAnJztcbiAgICAgICAgc3R5bGUubWF4V2lkdGggPSAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVGb2N1c091dHNpZGUocHJldmlvdXM6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qge2hvc3R9ID0gdGhpcy5kaXJlY3RpdmU7XG4gICAgICAgIGNvbnN0IHtvd25lckRvY3VtZW50fSA9IGhvc3Q7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5ib2R5IDogaG9zdDtcblxuICAgICAgICBsZXQgZm9jdXNhYmxlID0gZ2V0Q2xvc2VzdEZvY3VzYWJsZShob3N0IGFzIEhUTUxFbGVtZW50LCBwcmV2aW91cywgcm9vdCk7XG5cbiAgICAgICAgd2hpbGUgKGZvY3VzYWJsZSAhPT0gbnVsbCAmJiBob3N0LmNvbnRhaW5zKGZvY3VzYWJsZSkpIHtcbiAgICAgICAgICAgIGZvY3VzYWJsZSA9IGdldENsb3Nlc3RGb2N1c2FibGUoZm9jdXNhYmxlLCBwcmV2aW91cywgcm9vdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXNhYmxlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXROYXRpdmVGb2N1c2VkKGZvY3VzYWJsZSk7XG4gICAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
- export var VERSION = '2.37.0';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMzcuMCc7XG4iXX0=
1
+ export var VERSION = '2.37.1';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jb3JlL2NvbnN0YW50cy8iLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMzcuMSc7XG4iXX0=
@@ -1,8 +1,7 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { Inject, NgZone, ElementRef, HostBinding, ViewChild, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import { WINDOW, ANIMATION_FRAME } from '@ng-web-apis/common';
4
- import { POLLING_TIME, tuiZonefree, getClosestElement, inRange, px, getClosestFocusable, setNativeFocused, TuiDestroyService, TuiDropdownHostComponent, tuiPure, TuiActiveZoneModule, TuiOverscrollModule } from '@taiga-ui/cdk';
5
- import { AbstractTuiPortalHostComponent } from '@taiga-ui/cdk/abstract/portal-host';
4
+ import { POLLING_TIME, tuiZonefree, getClosestElement, inRange, px, getClosestFocusable, setNativeFocused, TuiDestroyService, TuiDropdownHostComponent, AbstractTuiPortalHostComponent, tuiPure, TuiActiveZoneModule, TuiOverscrollModule } from '@taiga-ui/cdk';
6
5
  import { tuiDropdownAnimation } from '@taiga-ui/core/animations';
7
6
  import { DEFAULT_MARGIN, DEFAULT_MAX_WIDTH } from '@taiga-ui/core/constants';
8
7
  import { TUI_DROPDOWN_DIRECTIVE, TUI_ANIMATION_OPTIONS } from '@taiga-ui/core/tokens';
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-dropdown-box.js","sources":["ng://@taiga-ui/core/components/dropdown-box/dropdown-box.component.ts","ng://@taiga-ui/core/components/dropdown-box/dropdown-box.module.ts","ng://@taiga-ui/core/components/dropdown-box/taiga-ui-core-components-dropdown-box.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {\n getClosestElement,\n getClosestFocusable,\n inRange,\n POLLING_TIME,\n px,\n setNativeFocused,\n TuiActiveZoneDirective,\n TuiDestroyService,\n TuiDropdownHostComponent,\n TuiOverscrollModeT,\n tuiPure,\n tuiZonefree,\n} from '@taiga-ui/cdk';\nimport {AbstractTuiPortalHostComponent} from '@taiga-ui/cdk/abstract/portal-host';\nimport {tuiDropdownAnimation} from '@taiga-ui/core/animations';\nimport {DEFAULT_MARGIN, DEFAULT_MAX_WIDTH} from '@taiga-ui/core/constants';\nimport {TuiDropdownAnimation} from '@taiga-ui/core/enums';\nimport {TuiAnimationOptions, TuiDropdown} from '@taiga-ui/core/interfaces';\nimport {TUI_ANIMATION_OPTIONS, TUI_DROPDOWN_DIRECTIVE} from '@taiga-ui/core/tokens';\nimport {TuiHorizontalDirection, TuiVerticalDirection} from '@taiga-ui/core/types';\nimport {getScreenWidth} from '@taiga-ui/core/utils/dom';\nimport {fromEvent, merge, Observable} from 'rxjs';\nimport {takeUntil, throttleTime} from 'rxjs/operators';\n\n/**\n * This component is used to show template in a portal using default style of white rounded box with a shadow\n */\n// @bad TODO: OnPush\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-dropdown-box',\n templateUrl: './dropdown-box.template.html',\n styleUrls: ['./dropdown-box.style.less'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [TuiDestroyService],\n animations: [tuiDropdownAnimation],\n})\nexport class TuiDropdownBoxComponent implements AfterViewChecked {\n private readonly animationTop = {\n value: TuiDropdownAnimation.FadeInTop,\n ...this.options,\n };\n\n private readonly animationBottom = {\n value: TuiDropdownAnimation.FadeInBottom,\n ...this.options,\n };\n\n /**\n * Is previous position on top (to prevent jumping up and down on scroll)\n */\n private prevDirectionIsTop = false;\n\n @HostBinding('@tuiDropdownAnimation')\n dropdownAnimation!: TuiAnimationOptions;\n\n @ViewChild('content', {read: ElementRef})\n readonly contentElementRef?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(TuiDestroyService)\n destroy$: TuiDestroyService,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TUI_DROPDOWN_DIRECTIVE) readonly directive: TuiDropdown,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(AbstractTuiPortalHostComponent)\n private readonly portalHost: TuiDropdownHostComponent,\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n merge(\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n this.directive.refresh$,\n fromEvent(this.windowRef, 'resize'),\n )\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(() => {\n this.calculatePositionAndSize();\n });\n }\n\n get overscroll(): TuiOverscrollModeT {\n return this.inModal ? 'all' : 'scroll';\n }\n\n @tuiPure\n getContext<T extends object>(\n context?: T,\n activeZone?: TuiActiveZoneDirective,\n ):\n | (T & {activeZone?: TuiActiveZoneDirective})\n | {activeZone?: TuiActiveZoneDirective} {\n return {...context, activeZone};\n }\n\n ngAfterViewChecked() {\n this.calculatePositionAndSize();\n }\n\n onTopFocus() {\n this.moveFocusOutside(true);\n }\n\n onBottomFocus() {\n this.moveFocusOutside(false);\n }\n\n @tuiPure\n private get inModal(): boolean {\n // @awful TODO: get rid of component tag name dependency\n return !!getClosestElement(this.directive.host, 'tui-dialog-host');\n }\n\n private calculatePositionAndSize() {\n const {clientRect} = this.directive;\n const {style} = this.elementRef.nativeElement;\n const hostRect = this.directive.fixed\n ? this.portalHost.fixedPositionOffset()\n : this.portalHost.clientRect;\n\n style.position = this.directive.fixed ? 'fixed' : 'absolute';\n\n this.calculateVerticalPosition(style, clientRect, hostRect);\n this.calculateHorizontalPosition(style, clientRect, hostRect);\n this.calculateWidth(style, clientRect);\n }\n\n private getFinalAlign(\n style: CSSStyleDeclaration,\n directiveRect: ClientRect,\n ): TuiHorizontalDirection {\n const dropdownRect = this.elementRef.nativeElement.getBoundingClientRect();\n const dropdownWidth = this.elementRef.nativeElement.offsetWidth;\n const screenWidth = getScreenWidth(this.windowRef.document);\n const isDropdownSizeHypotheticallyFitsViewport =\n directiveRect.left + dropdownWidth < screenWidth ||\n directiveRect.right - dropdownWidth > 0;\n const isDropdownSizeActuallyFitsViewport =\n dropdownRect.right <= screenWidth && dropdownRect.left >= 0;\n let finalAlign: TuiHorizontalDirection = this.directive.align;\n\n switch (this.directive.align) {\n case 'left':\n if (\n isDropdownSizeHypotheticallyFitsViewport &&\n dropdownRect.right > screenWidth\n ) {\n finalAlign = 'right';\n }\n\n break;\n case 'right':\n if (isDropdownSizeHypotheticallyFitsViewport && dropdownRect.left < 0) {\n finalAlign = 'left';\n }\n\n break;\n }\n\n if (style.right === 'auto' && isDropdownSizeActuallyFitsViewport) {\n finalAlign = 'left';\n }\n\n if (style.left === 'auto' && isDropdownSizeActuallyFitsViewport) {\n finalAlign = 'right';\n }\n\n return finalAlign;\n }\n\n /**\n * Calculates horizontal position\n *\n * @param style dropdownBox elementRef styles object\n * @param directiveRect ClientRect of hosting directive\n * @param hostRect ClientRect of portal host\n */\n private calculateHorizontalPosition(\n style: CSSStyleDeclaration,\n directiveRect: ClientRect,\n hostRect: ClientRect,\n ) {\n const offset = this.directive.sided\n ? this.elementRef.nativeElement.getBoundingClientRect().width + DEFAULT_MARGIN\n : 0;\n const left = Math.ceil(directiveRect.left - hostRect.left - offset);\n const right = Math.floor(hostRect.right - directiveRect.right - offset);\n\n switch (this.getFinalAlign(style, directiveRect)) {\n case 'left':\n if (\n right + DEFAULT_MARGIN > this.windowRef.innerWidth ||\n inRange(left + DEFAULT_MARGIN, 0, this.windowRef.innerWidth)\n ) {\n style.left = px(left);\n style.right = 'auto';\n } else {\n style.left = 'auto';\n style.right = px(right);\n }\n\n break;\n case 'right':\n if (\n inRange(right + DEFAULT_MARGIN, 0, this.windowRef.innerWidth) ||\n left + DEFAULT_MARGIN > this.windowRef.innerWidth\n ) {\n style.left = 'auto';\n style.right = px(right);\n } else {\n style.left = px(left);\n style.right = 'auto';\n }\n\n break;\n }\n }\n\n /**\n * Calculates vertical position and height\n *\n * @param style dropdownBox elementRef styles object\n * @param directiveRect ClientRect of hosting directive\n * @param hostRect ClientRect of portal host\n */\n private calculateVerticalPosition(\n style: CSSStyleDeclaration,\n directiveRect: ClientRect,\n hostRect: ClientRect,\n ) {\n const windowHeight = this.windowRef.innerHeight;\n // Maximum height of the box\n const boxHeightLimit = Math.min(\n this.directive.maxHeight,\n windowHeight - DEFAULT_MARGIN * 2,\n );\n const offset = this.directive.sided\n ? DEFAULT_MARGIN - directiveRect.height\n : DEFAULT_MARGIN * 2;\n const topAvailableHeight = directiveRect.top - offset;\n const bottomAvailableHeight = windowHeight - directiveRect.bottom - offset;\n const finalDirection = this.getFinalDirection(directiveRect);\n\n this.prevDirectionIsTop = finalDirection === 'top';\n\n if (finalDirection === 'top') {\n this.dropdownAnimation = this.animationBottom;\n\n style.maxHeight = px(Math.min(boxHeightLimit, topAvailableHeight));\n style.top = 'auto';\n style.bottom = px(\n hostRect.bottom - directiveRect.top - DEFAULT_MARGIN + offset,\n );\n } else {\n this.dropdownAnimation = this.animationTop;\n\n style.maxHeight = px(Math.min(boxHeightLimit, bottomAvailableHeight));\n style.top = px(directiveRect.bottom - hostRect.top - DEFAULT_MARGIN + offset);\n style.bottom = 'auto';\n }\n }\n\n private getFinalDirection(directiveRect: ClientRect): TuiVerticalDirection | null {\n const windowHeight = this.windowRef.innerHeight;\n const offset = this.directive.sided\n ? DEFAULT_MARGIN - directiveRect.height\n : DEFAULT_MARGIN * 2;\n\n // Maximum space available on top and on the bottom in the viewport\n const topAvailableHeight = directiveRect.top - offset;\n const bottomAvailableHeight = windowHeight - directiveRect.bottom - offset;\n\n let finalDirection: TuiVerticalDirection | null = null;\n\n // Given direction is applied if we can fit the box in the limits that way\n switch (this.directive.direction) {\n case 'top':\n if (topAvailableHeight >= this.directive.minHeight) {\n finalDirection = 'top';\n }\n\n break;\n case 'bottom':\n if (bottomAvailableHeight >= this.directive.minHeight) {\n finalDirection = 'bottom';\n }\n\n break;\n }\n\n // Maximum height of the box\n const boxHeightLimit = Math.min(\n this.directive.maxHeight,\n windowHeight - DEFAULT_MARGIN * 2,\n );\n\n // Choose direction if given direction did not fit\n if (finalDirection === null && this.contentElementRef) {\n // Box height if it fits without scroll\n const visualHeight = Math.min(\n this.contentElementRef.nativeElement.getBoundingClientRect().height +\n (this.elementRef.nativeElement.offsetHeight -\n this.elementRef.nativeElement.clientHeight),\n boxHeightLimit,\n );\n\n // If there is enough space to fit below without scroll,\n // choose 'bottom', unless it was previously on the top\n if (this.prevDirectionIsTop && topAvailableHeight >= visualHeight) {\n finalDirection = 'top';\n } else if (bottomAvailableHeight >= visualHeight) {\n finalDirection = 'bottom';\n } else {\n // Corner case — select direction with more space\n finalDirection =\n bottomAvailableHeight >= topAvailableHeight ? 'bottom' : 'top';\n }\n }\n\n return finalDirection;\n }\n\n /**\n * Calculates width\n *\n * @param style dropdownBox elementRef styles object\n * @param directiveRect ClientRect of hosting directive\n */\n private calculateWidth(style: CSSStyleDeclaration, directiveRect: ClientRect) {\n style.width =\n this.directive.limitMinWidth === 'fixed' && !this.directive.sided\n ? px(directiveRect.width)\n : '';\n\n if (this.directive.limitMinWidth === 'min' && !this.directive.sided) {\n style.minWidth = px(directiveRect.width);\n style.maxWidth = px(DEFAULT_MAX_WIDTH);\n\n return;\n }\n\n style.minWidth = '';\n style.maxWidth = '';\n }\n\n private moveFocusOutside(previous: boolean) {\n const {host} = this.directive;\n const {ownerDocument} = host;\n const root = ownerDocument ? ownerDocument.body : host;\n\n let focusable = getClosestFocusable(host as HTMLElement, previous, root);\n\n while (focusable !== null && host.contains(focusable)) {\n focusable = getClosestFocusable(focusable, previous, root);\n }\n\n if (focusable === null) {\n return;\n }\n\n setNativeFocused(focusable);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiOverscrollModule} from '@taiga-ui/cdk';\nimport {TuiScrollbarModule} from '@taiga-ui/core/components/scrollbar';\nimport {TuiModeModule} from '@taiga-ui/core/directives/mode';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDropdownBoxComponent} from './dropdown-box.component';\n\n@NgModule({\n imports: [\n TuiActiveZoneModule,\n PolymorpheusModule,\n TuiOverscrollModule,\n TuiScrollbarModule,\n TuiModeModule,\n ],\n entryComponents: [TuiDropdownBoxComponent],\n declarations: [TuiDropdownBoxComponent],\n exports: [TuiDropdownBoxComponent],\n})\nexport class TuiDropdownBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-dropdown-box.js","sources":["ng://@taiga-ui/core/components/dropdown-box/dropdown-box.component.ts","ng://@taiga-ui/core/components/dropdown-box/dropdown-box.module.ts","ng://@taiga-ui/core/components/dropdown-box/taiga-ui-core-components-dropdown-box.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {\n AbstractTuiPortalHostComponent,\n getClosestElement,\n getClosestFocusable,\n inRange,\n POLLING_TIME,\n px,\n setNativeFocused,\n TuiActiveZoneDirective,\n TuiDestroyService,\n TuiDropdownHostComponent,\n TuiOverscrollModeT,\n tuiPure,\n tuiZonefree,\n} from '@taiga-ui/cdk';\nimport {tuiDropdownAnimation} from '@taiga-ui/core/animations';\nimport {DEFAULT_MARGIN, DEFAULT_MAX_WIDTH} from '@taiga-ui/core/constants';\nimport {TuiDropdownAnimation} from '@taiga-ui/core/enums';\nimport {TuiAnimationOptions, TuiDropdown} from '@taiga-ui/core/interfaces';\nimport {TUI_ANIMATION_OPTIONS, TUI_DROPDOWN_DIRECTIVE} from '@taiga-ui/core/tokens';\nimport {TuiHorizontalDirection, TuiVerticalDirection} from '@taiga-ui/core/types';\nimport {getScreenWidth} from '@taiga-ui/core/utils/dom';\nimport {fromEvent, merge, Observable} from 'rxjs';\nimport {takeUntil, throttleTime} from 'rxjs/operators';\n\n/**\n * This component is used to show template in a portal using default style of white rounded box with a shadow\n */\n// @bad TODO: OnPush\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-dropdown-box',\n templateUrl: './dropdown-box.template.html',\n styleUrls: ['./dropdown-box.style.less'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [TuiDestroyService],\n animations: [tuiDropdownAnimation],\n})\nexport class TuiDropdownBoxComponent implements AfterViewChecked {\n private readonly animationTop = {\n value: TuiDropdownAnimation.FadeInTop,\n ...this.options,\n };\n\n private readonly animationBottom = {\n value: TuiDropdownAnimation.FadeInBottom,\n ...this.options,\n };\n\n /**\n * Is previous position on top (to prevent jumping up and down on scroll)\n */\n private prevDirectionIsTop = false;\n\n @HostBinding('@tuiDropdownAnimation')\n dropdownAnimation!: TuiAnimationOptions;\n\n @ViewChild('content', {read: ElementRef})\n readonly contentElementRef?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(TuiDestroyService)\n destroy$: TuiDestroyService,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TUI_DROPDOWN_DIRECTIVE) readonly directive: TuiDropdown,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(AbstractTuiPortalHostComponent)\n private readonly portalHost: TuiDropdownHostComponent,\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n ) {\n merge(\n animationFrame$.pipe(throttleTime(POLLING_TIME)),\n this.directive.refresh$,\n fromEvent(this.windowRef, 'resize'),\n )\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(() => {\n this.calculatePositionAndSize();\n });\n }\n\n get overscroll(): TuiOverscrollModeT {\n return this.inModal ? 'all' : 'scroll';\n }\n\n @tuiPure\n getContext<T extends object>(\n context?: T,\n activeZone?: TuiActiveZoneDirective,\n ):\n | (T & {activeZone?: TuiActiveZoneDirective})\n | {activeZone?: TuiActiveZoneDirective} {\n return {...context, activeZone};\n }\n\n ngAfterViewChecked() {\n this.calculatePositionAndSize();\n }\n\n onTopFocus() {\n this.moveFocusOutside(true);\n }\n\n onBottomFocus() {\n this.moveFocusOutside(false);\n }\n\n @tuiPure\n private get inModal(): boolean {\n // @awful TODO: get rid of component tag name dependency\n return !!getClosestElement(this.directive.host, 'tui-dialog-host');\n }\n\n private calculatePositionAndSize() {\n const {clientRect} = this.directive;\n const {style} = this.elementRef.nativeElement;\n const hostRect = this.directive.fixed\n ? this.portalHost.fixedPositionOffset()\n : this.portalHost.clientRect;\n\n style.position = this.directive.fixed ? 'fixed' : 'absolute';\n\n this.calculateVerticalPosition(style, clientRect, hostRect);\n this.calculateHorizontalPosition(style, clientRect, hostRect);\n this.calculateWidth(style, clientRect);\n }\n\n private getFinalAlign(\n style: CSSStyleDeclaration,\n directiveRect: ClientRect,\n ): TuiHorizontalDirection {\n const dropdownRect = this.elementRef.nativeElement.getBoundingClientRect();\n const dropdownWidth = this.elementRef.nativeElement.offsetWidth;\n const screenWidth = getScreenWidth(this.windowRef.document);\n const isDropdownSizeHypotheticallyFitsViewport =\n directiveRect.left + dropdownWidth < screenWidth ||\n directiveRect.right - dropdownWidth > 0;\n const isDropdownSizeActuallyFitsViewport =\n dropdownRect.right <= screenWidth && dropdownRect.left >= 0;\n let finalAlign: TuiHorizontalDirection = this.directive.align;\n\n switch (this.directive.align) {\n case 'left':\n if (\n isDropdownSizeHypotheticallyFitsViewport &&\n dropdownRect.right > screenWidth\n ) {\n finalAlign = 'right';\n }\n\n break;\n case 'right':\n if (isDropdownSizeHypotheticallyFitsViewport && dropdownRect.left < 0) {\n finalAlign = 'left';\n }\n\n break;\n }\n\n if (style.right === 'auto' && isDropdownSizeActuallyFitsViewport) {\n finalAlign = 'left';\n }\n\n if (style.left === 'auto' && isDropdownSizeActuallyFitsViewport) {\n finalAlign = 'right';\n }\n\n return finalAlign;\n }\n\n /**\n * Calculates horizontal position\n *\n * @param style dropdownBox elementRef styles object\n * @param directiveRect ClientRect of hosting directive\n * @param hostRect ClientRect of portal host\n */\n private calculateHorizontalPosition(\n style: CSSStyleDeclaration,\n directiveRect: ClientRect,\n hostRect: ClientRect,\n ) {\n const offset = this.directive.sided\n ? this.elementRef.nativeElement.getBoundingClientRect().width + DEFAULT_MARGIN\n : 0;\n const left = Math.ceil(directiveRect.left - hostRect.left - offset);\n const right = Math.floor(hostRect.right - directiveRect.right - offset);\n\n switch (this.getFinalAlign(style, directiveRect)) {\n case 'left':\n if (\n right + DEFAULT_MARGIN > this.windowRef.innerWidth ||\n inRange(left + DEFAULT_MARGIN, 0, this.windowRef.innerWidth)\n ) {\n style.left = px(left);\n style.right = 'auto';\n } else {\n style.left = 'auto';\n style.right = px(right);\n }\n\n break;\n case 'right':\n if (\n inRange(right + DEFAULT_MARGIN, 0, this.windowRef.innerWidth) ||\n left + DEFAULT_MARGIN > this.windowRef.innerWidth\n ) {\n style.left = 'auto';\n style.right = px(right);\n } else {\n style.left = px(left);\n style.right = 'auto';\n }\n\n break;\n }\n }\n\n /**\n * Calculates vertical position and height\n *\n * @param style dropdownBox elementRef styles object\n * @param directiveRect ClientRect of hosting directive\n * @param hostRect ClientRect of portal host\n */\n private calculateVerticalPosition(\n style: CSSStyleDeclaration,\n directiveRect: ClientRect,\n hostRect: ClientRect,\n ) {\n const windowHeight = this.windowRef.innerHeight;\n // Maximum height of the box\n const boxHeightLimit = Math.min(\n this.directive.maxHeight,\n windowHeight - DEFAULT_MARGIN * 2,\n );\n const offset = this.directive.sided\n ? DEFAULT_MARGIN - directiveRect.height\n : DEFAULT_MARGIN * 2;\n const topAvailableHeight = directiveRect.top - offset;\n const bottomAvailableHeight = windowHeight - directiveRect.bottom - offset;\n const finalDirection = this.getFinalDirection(directiveRect);\n\n this.prevDirectionIsTop = finalDirection === 'top';\n\n if (finalDirection === 'top') {\n this.dropdownAnimation = this.animationBottom;\n\n style.maxHeight = px(Math.min(boxHeightLimit, topAvailableHeight));\n style.top = 'auto';\n style.bottom = px(\n hostRect.bottom - directiveRect.top - DEFAULT_MARGIN + offset,\n );\n } else {\n this.dropdownAnimation = this.animationTop;\n\n style.maxHeight = px(Math.min(boxHeightLimit, bottomAvailableHeight));\n style.top = px(directiveRect.bottom - hostRect.top - DEFAULT_MARGIN + offset);\n style.bottom = 'auto';\n }\n }\n\n private getFinalDirection(directiveRect: ClientRect): TuiVerticalDirection | null {\n const windowHeight = this.windowRef.innerHeight;\n const offset = this.directive.sided\n ? DEFAULT_MARGIN - directiveRect.height\n : DEFAULT_MARGIN * 2;\n\n // Maximum space available on top and on the bottom in the viewport\n const topAvailableHeight = directiveRect.top - offset;\n const bottomAvailableHeight = windowHeight - directiveRect.bottom - offset;\n\n let finalDirection: TuiVerticalDirection | null = null;\n\n // Given direction is applied if we can fit the box in the limits that way\n switch (this.directive.direction) {\n case 'top':\n if (topAvailableHeight >= this.directive.minHeight) {\n finalDirection = 'top';\n }\n\n break;\n case 'bottom':\n if (bottomAvailableHeight >= this.directive.minHeight) {\n finalDirection = 'bottom';\n }\n\n break;\n }\n\n // Maximum height of the box\n const boxHeightLimit = Math.min(\n this.directive.maxHeight,\n windowHeight - DEFAULT_MARGIN * 2,\n );\n\n // Choose direction if given direction did not fit\n if (finalDirection === null && this.contentElementRef) {\n // Box height if it fits without scroll\n const visualHeight = Math.min(\n this.contentElementRef.nativeElement.getBoundingClientRect().height +\n (this.elementRef.nativeElement.offsetHeight -\n this.elementRef.nativeElement.clientHeight),\n boxHeightLimit,\n );\n\n // If there is enough space to fit below without scroll,\n // choose 'bottom', unless it was previously on the top\n if (this.prevDirectionIsTop && topAvailableHeight >= visualHeight) {\n finalDirection = 'top';\n } else if (bottomAvailableHeight >= visualHeight) {\n finalDirection = 'bottom';\n } else {\n // Corner case — select direction with more space\n finalDirection =\n bottomAvailableHeight >= topAvailableHeight ? 'bottom' : 'top';\n }\n }\n\n return finalDirection;\n }\n\n /**\n * Calculates width\n *\n * @param style dropdownBox elementRef styles object\n * @param directiveRect ClientRect of hosting directive\n */\n private calculateWidth(style: CSSStyleDeclaration, directiveRect: ClientRect) {\n style.width =\n this.directive.limitMinWidth === 'fixed' && !this.directive.sided\n ? px(directiveRect.width)\n : '';\n\n if (this.directive.limitMinWidth === 'min' && !this.directive.sided) {\n style.minWidth = px(directiveRect.width);\n style.maxWidth = px(DEFAULT_MAX_WIDTH);\n\n return;\n }\n\n style.minWidth = '';\n style.maxWidth = '';\n }\n\n private moveFocusOutside(previous: boolean) {\n const {host} = this.directive;\n const {ownerDocument} = host;\n const root = ownerDocument ? ownerDocument.body : host;\n\n let focusable = getClosestFocusable(host as HTMLElement, previous, root);\n\n while (focusable !== null && host.contains(focusable)) {\n focusable = getClosestFocusable(focusable, previous, root);\n }\n\n if (focusable === null) {\n return;\n }\n\n setNativeFocused(focusable);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiOverscrollModule} from '@taiga-ui/cdk';\nimport {TuiScrollbarModule} from '@taiga-ui/core/components/scrollbar';\nimport {TuiModeModule} from '@taiga-ui/core/directives/mode';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiDropdownBoxComponent} from './dropdown-box.component';\n\n@NgModule({\n imports: [\n TuiActiveZoneModule,\n PolymorpheusModule,\n TuiOverscrollModule,\n TuiScrollbarModule,\n TuiModeModule,\n ],\n entryComponents: [TuiDropdownBoxComponent],\n declarations: [TuiDropdownBoxComponent],\n exports: [TuiDropdownBoxComponent],\n})\nexport class TuiDropdownBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\/#!$%\\^&\\*;:{}=\\-_`~()]$/;
63
63
  const TUI_LATIN_REGEXP = /[A-z]/;
64
64
  const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;
65
65
 
66
- const VERSION = '2.37.0';
66
+ const VERSION = '2.37.1';
67
67
 
68
68
  /**
69
69
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.37.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAAa,cAAc,GAAG,EAAE;MACnB,kBAAkB,GAAG,GAAG;MACxB,kBAAkB,GAAG,IAAI;MACzB,iBAAiB,GAAG;;MCHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;MCEtD,kBAAkB,GAA6B,IAAI,IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI;;MCA/B,0BAA0B,GAAqB,MAAM;;MCHrD,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;MAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;MAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;MAIa,cAAc,GAAG,iBAAiB;AAE/C;;;MAGa,cAAc,GAAG;;MCpBjB,eAAe,GAAG;;ACA/B;;;;MAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;MCRT,gBAAgB,GAAG,KAAK;MACxB,oBAAoB,GAAG,KAAK;MAC5B,qBAAqB,GAAG,OAAO;MAC/B,yBAAyB,GAAG,MAAM;MAClC,gCAAgC,GAAG,mCAAmC;MACtE,gBAAgB,GAAG,QAAQ;MAC3B,4BAA4B,GAAG;;MCN/B,OAAO,GAAG;;ACAvB;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.37.1';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAAa,cAAc,GAAG,EAAE;MACnB,kBAAkB,GAAG,GAAG;MACxB,kBAAkB,GAAG,IAAI;MACzB,iBAAiB,GAAG;;MCHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;MCEtD,kBAAkB,GAA6B,IAAI,IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI;;MCA/B,0BAA0B,GAAqB,MAAM;;MCHrD,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;MAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;MAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;MAIa,cAAc,GAAG,iBAAiB;AAE/C;;;MAGa,cAAc,GAAG;;MCpBjB,eAAe,GAAG;;ACA/B;;;;MAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;MCRT,gBAAgB,GAAG,KAAK;MACxB,oBAAoB,GAAG,KAAK;MAC5B,qBAAqB,GAAG,OAAO;MAC/B,yBAAyB,GAAG,MAAM;MAClC,gCAAgC,GAAG,mCAAmC;MACtE,gBAAgB,GAAG,QAAQ;MAC3B,4BAA4B,GAAG;;MCN/B,OAAO,GAAG;;ACAvB;;;;;;"}
@@ -1,8 +1,7 @@
1
1
  import { __assign, __decorate, __param } from 'tslib';
2
2
  import { Inject, NgZone, ElementRef, HostBinding, ViewChild, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import { WINDOW, ANIMATION_FRAME } from '@ng-web-apis/common';
4
- import { POLLING_TIME, tuiZonefree, getClosestElement, inRange, px, getClosestFocusable, setNativeFocused, TuiDestroyService, TuiDropdownHostComponent, tuiPure, TuiActiveZoneModule, TuiOverscrollModule } from '@taiga-ui/cdk';
5
- import { AbstractTuiPortalHostComponent } from '@taiga-ui/cdk/abstract/portal-host';
4
+ import { POLLING_TIME, tuiZonefree, getClosestElement, inRange, px, getClosestFocusable, setNativeFocused, TuiDestroyService, TuiDropdownHostComponent, AbstractTuiPortalHostComponent, tuiPure, TuiActiveZoneModule, TuiOverscrollModule } from '@taiga-ui/cdk';
6
5
  import { tuiDropdownAnimation } from '@taiga-ui/core/animations';
7
6
  import { DEFAULT_MARGIN, DEFAULT_MAX_WIDTH } from '@taiga-ui/core/constants';
8
7
  import { TUI_DROPDOWN_DIRECTIVE, TUI_ANIMATION_OPTIONS } from '@taiga-ui/core/tokens';