@koobiq/components 18.34.0 → 18.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/_button-theme.scss +1 -0
- package/core/form-field/field-sizing-content.d.ts +21 -0
- package/core/form-field/index.d.ts +1 -0
- package/core/locales/en-US.d.ts +6 -0
- package/core/locales/es-LA.d.ts +6 -0
- package/core/locales/fa-IR.d.ts +6 -0
- package/core/locales/locale-service.d.ts +42 -0
- package/core/locales/pt-BR.d.ts +6 -0
- package/core/locales/ru-RU.d.ts +6 -0
- package/core/locales/tk-TM.d.ts +6 -0
- package/core/locales/zh-CN.d.ts +6 -0
- package/core/navbar/index.d.ts +1 -0
- package/core/navbar/rectangle-item.d.ts +14 -0
- package/core/option/option.d.ts +3 -1
- package/core/pop-up/pop-up-trigger.d.ts +2 -0
- package/core/public-api.d.ts +1 -0
- package/core/utils/dom.d.ts +9 -0
- package/core/utils/index.d.ts +1 -0
- package/core/utils/utils.d.ts +4 -0
- package/datepicker/datepicker-input.directive.d.ts +18 -7
- package/dropdown/dropdown-item.scss +1 -0
- package/dropdown/dropdown-trigger.directive.d.ts +7 -1
- package/esm2022/breadcrumbs/breadcrumbs.mjs +2 -2
- package/esm2022/button/button.component.mjs +2 -2
- package/esm2022/core/form-field/field-sizing-content.mjs +114 -0
- package/esm2022/core/form-field/index.mjs +2 -1
- package/esm2022/core/locales/en-US.mjs +7 -1
- package/esm2022/core/locales/es-LA.mjs +7 -1
- package/esm2022/core/locales/fa-IR.mjs +7 -1
- package/esm2022/core/locales/pt-BR.mjs +7 -1
- package/esm2022/core/locales/ru-RU.mjs +7 -1
- package/esm2022/core/locales/tk-TM.mjs +7 -1
- package/esm2022/core/locales/zh-CN.mjs +7 -1
- package/esm2022/core/navbar/index.mjs +2 -0
- package/esm2022/core/navbar/rectangle-item.mjs +39 -0
- package/esm2022/core/option/option.mjs +8 -4
- package/esm2022/core/pop-up/pop-up-trigger.mjs +5 -1
- package/esm2022/core/public-api.mjs +2 -1
- package/esm2022/core/utils/dom.mjs +14 -0
- package/esm2022/core/utils/index.mjs +2 -1
- package/esm2022/core/utils/utils.mjs +9 -1
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +1 -1
- package/esm2022/datepicker/datepicker-input.directive.mjs +24 -21
- package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +30 -10
- package/esm2022/file-upload/file-upload.mjs +6 -1
- package/esm2022/file-upload/multiple-file-upload.component.mjs +12 -7
- package/esm2022/file-upload/single-file-upload.component.mjs +14 -7
- package/esm2022/filter-bar/filter-bar.mjs +3 -3
- package/esm2022/filter-bar/filters.mjs +16 -4
- package/esm2022/filter-bar/pipe-add.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +9 -9
- package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
- package/esm2022/form-field/fieldset.mjs +2 -2
- package/esm2022/form-field/form-field.mjs +2 -2
- package/esm2022/navbar-ic/index.mjs +2 -0
- package/esm2022/navbar-ic/koobiq-components-navbar-ic.mjs +5 -0
- package/esm2022/navbar-ic/navbar-ic-header.mjs +58 -0
- package/esm2022/navbar-ic/navbar-ic-item.mjs +399 -0
- package/esm2022/navbar-ic/navbar-ic.animation.mjs +9 -0
- package/esm2022/navbar-ic/navbar-ic.mjs +281 -0
- package/esm2022/navbar-ic/navbar-ic.module.mjs +74 -0
- package/esm2022/navbar-ic/public-api.mjs +5 -0
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +10 -5
- package/esm2022/select/select.component.mjs +2 -2
- package/esm2022/tags/tag-list.component.mjs +24 -5
- package/esm2022/tags/tag.component.mjs +231 -22
- package/esm2022/tags/tag.module.mjs +16 -6
- package/esm2022/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/tree-select/tree-select.component.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +2 -2
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +243 -31
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +24 -22
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +31 -11
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +26 -9
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +29 -17
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +4 -4
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +800 -0
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -0
- package/fesm2022/koobiq-components-popover.mjs +11 -6
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +1 -1
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +271 -34
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +2 -2
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/file-upload/file-upload.d.ts +5 -2
- package/file-upload/multiple-file-upload.component.d.ts +3 -1
- package/file-upload/single-file-upload.component.d.ts +3 -1
- package/filter-bar/_filter-bar-theme.scss +2 -2
- package/filter-bar/filters.d.ts +1 -0
- package/form-field/form-field.scss +7 -1
- package/navbar-ic/_navbar-ic-theme.scss +81 -0
- package/navbar-ic/index.d.ts +1 -0
- package/navbar-ic/navbar-ic-divider.scss +7 -0
- package/navbar-ic/navbar-ic-header.d.ts +18 -0
- package/navbar-ic/navbar-ic-header.scss +53 -0
- package/navbar-ic/navbar-ic-item.d.ts +125 -0
- package/navbar-ic/navbar-ic-item.scss +96 -0
- package/navbar-ic/navbar-ic-tokens.scss +22 -0
- package/navbar-ic/navbar-ic.animation.d.ts +2 -0
- package/navbar-ic/navbar-ic.d.ts +103 -0
- package/navbar-ic/navbar-ic.module.d.ts +14 -0
- package/navbar-ic/navbar-ic.scss +32 -0
- package/navbar-ic/public-api.d.ts +4 -0
- package/package.json +10 -4
- package/popover/_popover-theme.scss +6 -2
- package/popover/popover-tokens.scss +2 -0
- package/popover/popover.component.d.ts +4 -1
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +3 -3
- package/tags/_tag-theme.scss +10 -1
- package/tags/tag-list.component.d.ts +10 -2
- package/tags/tag-list.scss +5 -0
- package/tags/tag.component.d.ts +78 -8
- package/tags/tag.module.d.ts +1 -1
- package/tags/tag.scss +18 -0
- package/textarea/textarea-tokens.scss +1 -1
- package/tooltip/_tooltip-theme.scss +9 -2
- package/tooltip/tooltip-tokens.scss +2 -0
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
&.kbq-disabled {
|
|
37
37
|
color: var(--kbq-#{$base-path}-states-disabled-foreground);
|
|
38
38
|
background: var(--kbq-#{$base-path}-states-disabled-background);
|
|
39
|
+
border-color: var(--kbq-#{$base-path}-states-disabled-border);
|
|
39
40
|
|
|
40
41
|
@include _icon(
|
|
41
42
|
var(--kbq-#{$base-path}-states-disabled-left-icon),
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Emulates [`field-sizing: content`](https://developer.mozilla.org/en-US/docs/Web/CSS/field-sizing) CSS property for
|
|
4
|
+
* browsers that do not support it natively.
|
|
5
|
+
*
|
|
6
|
+
* @docs-private
|
|
7
|
+
*/
|
|
8
|
+
export declare class KbqFieldSizingContent {
|
|
9
|
+
private readonly element;
|
|
10
|
+
private readonly renderer;
|
|
11
|
+
private readonly window;
|
|
12
|
+
private readonly document;
|
|
13
|
+
private readonly destroyRef;
|
|
14
|
+
constructor();
|
|
15
|
+
private emulate;
|
|
16
|
+
private setupWidth;
|
|
17
|
+
private createRuler;
|
|
18
|
+
private calculateWidth;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<KbqFieldSizingContent, never>;
|
|
20
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqFieldSizingContent, "[kbqFieldSizingContent]", ["kbqFieldSizingContent"], {}, {}, never, never, true, never>;
|
|
21
|
+
}
|
package/core/locales/en-US.d.ts
CHANGED
package/core/locales/es-LA.d.ts
CHANGED
package/core/locales/fa-IR.d.ts
CHANGED
|
@@ -136,6 +136,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
136
136
|
openText: string;
|
|
137
137
|
closeText: string;
|
|
138
138
|
};
|
|
139
|
+
navbarIc: {
|
|
140
|
+
toggle: {
|
|
141
|
+
pinButton: string;
|
|
142
|
+
collapseButton: string;
|
|
143
|
+
};
|
|
144
|
+
};
|
|
139
145
|
};
|
|
140
146
|
'zh-CN': {
|
|
141
147
|
formatters: {
|
|
@@ -263,6 +269,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
263
269
|
openText: string;
|
|
264
270
|
closeText: string;
|
|
265
271
|
};
|
|
272
|
+
navbarIc: {
|
|
273
|
+
toggle: {
|
|
274
|
+
pinButton: string;
|
|
275
|
+
collapseButton: string;
|
|
276
|
+
};
|
|
277
|
+
};
|
|
266
278
|
};
|
|
267
279
|
'es-LA': {
|
|
268
280
|
formatters: {
|
|
@@ -395,6 +407,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
395
407
|
openText: string;
|
|
396
408
|
closeText: string;
|
|
397
409
|
};
|
|
410
|
+
navbarIc: {
|
|
411
|
+
toggle: {
|
|
412
|
+
pinButton: string;
|
|
413
|
+
collapseButton: string;
|
|
414
|
+
};
|
|
415
|
+
};
|
|
398
416
|
};
|
|
399
417
|
'pt-BR': {
|
|
400
418
|
formatters: {
|
|
@@ -523,6 +541,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
523
541
|
openText: string;
|
|
524
542
|
closeText: string;
|
|
525
543
|
};
|
|
544
|
+
navbarIc: {
|
|
545
|
+
toggle: {
|
|
546
|
+
pinButton: string;
|
|
547
|
+
collapseButton: string;
|
|
548
|
+
};
|
|
549
|
+
};
|
|
526
550
|
};
|
|
527
551
|
'ru-RU': {
|
|
528
552
|
formatters: {
|
|
@@ -657,6 +681,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
657
681
|
openText: string;
|
|
658
682
|
closeText: string;
|
|
659
683
|
};
|
|
684
|
+
navbarIc: {
|
|
685
|
+
toggle: {
|
|
686
|
+
pinButton: string;
|
|
687
|
+
collapseButton: string;
|
|
688
|
+
};
|
|
689
|
+
};
|
|
660
690
|
};
|
|
661
691
|
'fa-IR': {
|
|
662
692
|
formatters: {
|
|
@@ -786,6 +816,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
786
816
|
openText: string;
|
|
787
817
|
closeText: string;
|
|
788
818
|
};
|
|
819
|
+
navbarIc: {
|
|
820
|
+
toggle: {
|
|
821
|
+
pinButton: string;
|
|
822
|
+
collapseButton: string;
|
|
823
|
+
};
|
|
824
|
+
};
|
|
789
825
|
};
|
|
790
826
|
'tk-TM': {
|
|
791
827
|
formatters: {
|
|
@@ -915,6 +951,12 @@ export declare function KBQ_DEFAULT_LOCALE_DATA_FACTORY(): {
|
|
|
915
951
|
openText: string;
|
|
916
952
|
closeText: string;
|
|
917
953
|
};
|
|
954
|
+
navbarIc: {
|
|
955
|
+
toggle: {
|
|
956
|
+
pinButton: string;
|
|
957
|
+
collapseButton: string;
|
|
958
|
+
};
|
|
959
|
+
};
|
|
918
960
|
};
|
|
919
961
|
};
|
|
920
962
|
export declare const KBQ_LOCALE_DATA: InjectionToken<any>;
|
package/core/locales/pt-BR.d.ts
CHANGED
package/core/locales/ru-RU.d.ts
CHANGED
package/core/locales/tk-TM.d.ts
CHANGED
package/core/locales/zh-CN.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './rectangle-item';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class KbqRectangleItem {
|
|
4
|
+
protected readonly isBrowser: boolean;
|
|
5
|
+
protected readonly nativeElement: any;
|
|
6
|
+
private readonly window;
|
|
7
|
+
readonly state: Subject<void>;
|
|
8
|
+
get collapsed(): boolean;
|
|
9
|
+
set collapsed(value: boolean);
|
|
10
|
+
private _collapsed;
|
|
11
|
+
getOuterElementWidth(): number;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<KbqRectangleItem, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqRectangleItem, never, never, {}, {}, never, never, true, never>;
|
|
14
|
+
}
|
package/core/option/option.d.ts
CHANGED
|
@@ -78,6 +78,8 @@ export declare class KbqOption extends KbqOptionBase implements AfterViewChecked
|
|
|
78
78
|
* select's trigger.
|
|
79
79
|
*/
|
|
80
80
|
get viewValue(): string;
|
|
81
|
+
set viewValue(value: string);
|
|
82
|
+
private _viewValue;
|
|
81
83
|
/** Whether the wrapping component is in multiple selection mode. */
|
|
82
84
|
get multiple(): boolean;
|
|
83
85
|
get id(): string;
|
|
@@ -127,7 +129,7 @@ export declare class KbqOption extends KbqOptionBase implements AfterViewChecked
|
|
|
127
129
|
getTabIndex(): string;
|
|
128
130
|
getHostElement(): HTMLElement;
|
|
129
131
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqOption, [null, null, { optional: true; }, { optional: true; }]>;
|
|
130
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqOption, "kbq-option", ["kbqOption"], { "value": { "alias": "value"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "userSelect": { "alias": "userSelect"; "required": false; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onSelectionChange": "onSelectionChange"; }, never, ["kbq-pseudo-checkbox", "*"], false, never>;
|
|
132
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqOption, "kbq-option", ["kbqOption"], { "value": { "alias": "value"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "userSelect": { "alias": "userSelect"; "required": false; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; }; "viewValue": { "alias": "viewValue"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onSelectionChange": "onSelectionChange"; }, never, ["kbq-pseudo-checkbox", "*"], false, never>;
|
|
131
133
|
static ngAcceptInputType_selectable: unknown;
|
|
132
134
|
static ngAcceptInputType_userSelect: unknown;
|
|
133
135
|
}
|
|
@@ -50,6 +50,8 @@ export declare abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy {
|
|
|
50
50
|
protected strategy: FlexibleConnectedPositionStrategy;
|
|
51
51
|
/** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger */
|
|
52
52
|
protected hideWithTimeout: boolean;
|
|
53
|
+
/** prevents closure by any event */
|
|
54
|
+
protected preventClose: boolean;
|
|
53
55
|
abstract updateClassMap(newPlacement?: string): void;
|
|
54
56
|
abstract updateData(): void;
|
|
55
57
|
abstract closingActions(): Observable<any>;
|
package/core/public-api.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './forms/index';
|
|
|
8
8
|
export * from './highlight/index';
|
|
9
9
|
export * from './line/line';
|
|
10
10
|
export * from './locales/index';
|
|
11
|
+
export * from './navbar/index';
|
|
11
12
|
export * from './option/index';
|
|
12
13
|
export * from './overlay/overlay-position-map';
|
|
13
14
|
export * from './pop-up/index';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Injects the ElementRef for the current component.
|
|
4
|
+
*/
|
|
5
|
+
export declare const kbqInjectElementRef: <T = HTMLElement>() => ElementRef<T>;
|
|
6
|
+
/**
|
|
7
|
+
* Injects the native element for the current component.
|
|
8
|
+
*/
|
|
9
|
+
export declare const kbqInjectNativeElement: <T = HTMLElement>() => T;
|
package/core/utils/index.d.ts
CHANGED
package/core/utils/utils.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export declare function isBoolean(value: unknown): value is boolean;
|
|
2
|
+
/** Whether the value is undefined. */
|
|
3
|
+
export declare const isUndefined: (value: unknown) => value is undefined;
|
|
4
|
+
/** Whether the value is null. */
|
|
5
|
+
export declare const isNull: (value: unknown) => value is null;
|
|
2
6
|
/**
|
|
3
7
|
* Will be removed in the next major release
|
|
4
8
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AfterContentInit, DoCheck, ElementRef, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';
|
|
1
|
+
import { AfterContentInit, DoCheck, ElementRef, EventEmitter, InjectionToken, OnDestroy, Renderer2 } from '@angular/core';
|
|
2
2
|
import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
|
|
3
|
-
import { DateAdapter, ErrorStateMatcher, KbqDateFormats
|
|
3
|
+
import { DateAdapter, ErrorStateMatcher, KbqDateFormats } from '@koobiq/components/core';
|
|
4
4
|
import { KbqFormFieldControl } from '@koobiq/components/form-field';
|
|
5
5
|
import { KbqWarningTooltipTrigger } from '@koobiq/components/tooltip';
|
|
6
6
|
import { Subject } from 'rxjs';
|
|
@@ -12,6 +12,15 @@ export declare const MAX_YEAR = 9999;
|
|
|
12
12
|
export declare const KBQ_DATEPICKER_VALUE_ACCESSOR: any;
|
|
13
13
|
/** @docs-private */
|
|
14
14
|
export declare const KBQ_DATEPICKER_VALIDATORS: any;
|
|
15
|
+
/** default configuration of datepicker */
|
|
16
|
+
/** @docs-private */
|
|
17
|
+
export declare const KBQ_DATEPICKER_DEFAULT_CONFIGURATION: {
|
|
18
|
+
placeholder: string;
|
|
19
|
+
dateInput: string;
|
|
20
|
+
};
|
|
21
|
+
/** Injection Token for providing configuration of datepicker */
|
|
22
|
+
/** @docs-private */
|
|
23
|
+
export declare const KBQ_DATEPICKER_CONFIGURATION: InjectionToken<unknown>;
|
|
15
24
|
/**
|
|
16
25
|
* An event used for datepicker input and change events. We don't always have access to a native
|
|
17
26
|
* input or change event because the event may have been triggered by the user clicking on the
|
|
@@ -36,7 +45,10 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
|
|
|
36
45
|
private readonly renderer;
|
|
37
46
|
readonly adapter: DateAdapter<D>;
|
|
38
47
|
private readonly dateFormats;
|
|
39
|
-
private
|
|
48
|
+
/** @docs-private */
|
|
49
|
+
protected readonly localeService: import("@koobiq/components/core").KbqLocaleService | null;
|
|
50
|
+
protected readonly externalConfiguration: unknown;
|
|
51
|
+
protected configuration: any;
|
|
40
52
|
readonly stateChanges: Subject<void>;
|
|
41
53
|
controlType: string;
|
|
42
54
|
focused: boolean;
|
|
@@ -102,7 +114,6 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
|
|
|
102
114
|
private control;
|
|
103
115
|
private readonly uid;
|
|
104
116
|
private datepickerSubscription;
|
|
105
|
-
private localeSubscription;
|
|
106
117
|
/** Whether the last value set on the input was valid. */
|
|
107
118
|
private lastValueValid;
|
|
108
119
|
/** The combined form control validator for this input. */
|
|
@@ -112,9 +123,8 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
|
|
|
112
123
|
private secondDigit;
|
|
113
124
|
private thirdDigit;
|
|
114
125
|
private separatorPositions;
|
|
115
|
-
private usePlaceholderFromInput;
|
|
116
126
|
private errorStateTracker;
|
|
117
|
-
constructor(elementRef: ElementRef<HTMLInputElement>, renderer: Renderer2, adapter: DateAdapter<D>, dateFormats: KbqDateFormats
|
|
127
|
+
constructor(elementRef: ElementRef<HTMLInputElement>, renderer: Renderer2, adapter: DateAdapter<D>, dateFormats: KbqDateFormats);
|
|
118
128
|
ngDoCheck(): void;
|
|
119
129
|
onContainerClick(): void;
|
|
120
130
|
focus(): void;
|
|
@@ -142,6 +152,7 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
|
|
|
142
152
|
updateErrorState(): void;
|
|
143
153
|
private saveTimePart;
|
|
144
154
|
private updateLocaleParams;
|
|
155
|
+
private initDefaultParams;
|
|
145
156
|
private setFormat;
|
|
146
157
|
private updateValue;
|
|
147
158
|
private isKeyForClose;
|
|
@@ -199,6 +210,6 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
|
|
|
199
210
|
private createDate;
|
|
200
211
|
private createDateTime;
|
|
201
212
|
private correctCursorPosition;
|
|
202
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<KbqDatepickerInput<any>, [null, null, { optional: true; }, { optional: true; }
|
|
213
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<KbqDatepickerInput<any>, [null, null, { optional: true; }, { optional: true; }]>;
|
|
203
214
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqDatepickerInput<any>, "input[kbqDatepicker], input[kbqCalendar]", ["kbqDatepickerInput"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "kbqDatepicker": { "alias": "kbqDatepicker"; "required": false; }; "kbqCalendar": { "alias": "kbqCalendar"; "required": false; }; "kbqDatepickerFilter": { "alias": "kbqDatepickerFilter"; "required": false; }; "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "kbqValidationTooltip": { "alias": "kbqValidationTooltip"; "required": false; }; }, { "incorrectInput": "incorrectInput"; "dateChange": "dateChange"; "dateInput": "dateInput"; }, never, never, false, never>;
|
|
204
215
|
}
|
|
@@ -36,6 +36,10 @@ export declare class KbqDropdownTrigger implements AfterContentInit, OnDestroy {
|
|
|
36
36
|
protected readonly isBrowser: boolean;
|
|
37
37
|
private readonly window;
|
|
38
38
|
lastDestroyReason: DropdownCloseReason;
|
|
39
|
+
/** Position offset of the dropdown in the X axis. */
|
|
40
|
+
offsetX: number;
|
|
41
|
+
/** Position offset of the dropdown in the Y axis. */
|
|
42
|
+
offsetY: number;
|
|
39
43
|
/** Data to be passed along to any lazily-rendered content. */
|
|
40
44
|
data: any;
|
|
41
45
|
openByArrowDown: boolean;
|
|
@@ -134,5 +138,7 @@ export declare class KbqDropdownTrigger implements AfterContentInit, OnDestroy {
|
|
|
134
138
|
private getPortal;
|
|
135
139
|
private getWidth;
|
|
136
140
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqDropdownTrigger, [null, null, null, null, { optional: true; }, { optional: true; self: true; }, { optional: true; }, null, null]>;
|
|
137
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqDropdownTrigger, "[kbqDropdownTriggerFor]", ["kbqDropdownTrigger"], { "data": { "alias": "kbqDropdownTriggerData"; "required": false; }; "openByArrowDown": { "alias": "openByArrowDown"; "required": false; }; "restoreFocus": { "alias": "kbqDropdownTriggerRestoreFocus"; "required": false; }; "dropdown": { "alias": "kbqDropdownTriggerFor"; "required": false; }; }, { "dropdownOpened": "dropdownOpened"; "dropdownClosed": "dropdownClosed"; }, never, never, false, never>;
|
|
141
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqDropdownTrigger, "[kbqDropdownTriggerFor]", ["kbqDropdownTrigger"], { "offsetX": { "alias": "offsetX"; "required": false; }; "offsetY": { "alias": "offsetY"; "required": false; }; "data": { "alias": "kbqDropdownTriggerData"; "required": false; }; "openByArrowDown": { "alias": "openByArrowDown"; "required": false; }; "restoreFocus": { "alias": "kbqDropdownTriggerRestoreFocus"; "required": false; }; "dropdown": { "alias": "kbqDropdownTriggerFor"; "required": false; }; }, { "dropdownOpened": "dropdownOpened"; "dropdownClosed": "dropdownClosed"; }, never, never, false, never>;
|
|
142
|
+
static ngAcceptInputType_offsetX: unknown;
|
|
143
|
+
static ngAcceptInputType_offsetY: unknown;
|
|
138
144
|
}
|
|
@@ -209,7 +209,7 @@ export class KbqBreadcrumbs {
|
|
|
209
209
|
return item ? item.nativeElement.offsetWidth : 0;
|
|
210
210
|
}
|
|
211
211
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqBreadcrumbs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
212
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KbqBreadcrumbs, isStandalone: true, selector: "kbq-breadcrumbs,[kbq-breadcrumbs]", inputs: { firstItemNegativeMargin: ["firstItemNegativeMargin", "firstItemNegativeMargin", booleanAttribute], size: "size", max: "max", disabled: ["disabled", "disabled", booleanAttribute], wrapMode: "wrapMode" }, host: { properties: { "class.kbq-breadcrumbs_compact": "size === \"compact\"", "class.kbq-breadcrumbs_normal": "size === \"normal\"", "class.kbq-breadcrumbs_big": "size === \"big\"", "class.kbq-breadcrumbs_wrap": "wrapMode === \"wrap\"", "class.kbq-breadcrumbs_first-item-negative-margin": "firstItemNegativeMargin", "attr.aria-label": "'breadcrumb'" }, classAttribute: "kbq-breadcrumbs" }, queries: [{ propertyName: "separator", first: true, predicate: KbqBreadcrumbsSeparator, descendants: true, read: TemplateRef }, { propertyName: "items", predicate: i0.forwardRef(() => KbqBreadcrumbItem) }], viewQueries: [{ propertyName: "result", first: true, predicate: KbqOverflowItemsResult, descendants: true, read: ElementRef }, { propertyName: "overflowItems", predicate: KbqOverflowItem, descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective }], ngImport: i0, template: "<!--\n@TODO: check when updated to Angular 20.x (#DS-4034)\nresolved SSR issue with official hack https://github.com/angular/angular/issues/50543#issuecomment-1572900259\n-->\n<ng-content />\n@if (items.length < minVisibleItems || wrapMode !== 'auto') {\n @for (item of items; track item; let last = $last) {\n <div class=\"kbq-breadcrumb-item__container\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: item, last: last }\" />\n @if (!last) {\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n }\n </div>\n }\n} @else {\n <div\n #kbqOverflowItems=\"kbqOverflowItems\"\n kbqOverflowItems\n reverseOverflowOrder\n class=\"layout-align-start-center\"\n [style.max-width.px]=\"maxWidth\"\n >\n <div class=\"kbq-breadcrumb-item__container\" [kbqOverflowItem]=\"0\" [order]=\"items.length\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: items.first, last: false }\" />\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n </div>\n <!-- @TODO delay rendering for proper elements order (#DS-3334)--->\n @if (true) {\n <div kbqOverflowItemsResult class=\"kbq-breadcrumb-item__container\">\n <button\n kbq-button\n kbqBreadcrumb\n class=\"kbq-breadcrumb__expand\"\n [kbqDropdownTriggerFor]=\"hiddenBreadcrumbsDropdown\"\n [kbqStyle]=\"KbqButtonStyles.Transparent\"\n [openByArrowDown]=\"false\"\n >\n <i kbq-icon=\"kbq-ellipsis-horizontal_16\" [color]=\"KbqComponentColors.ContrastFade\"></i>\n </button>\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n\n <kbq-dropdown #hiddenBreadcrumbsDropdown=\"kbqDropdown\">\n @for (item of items; track item) {\n @if (kbqOverflowItems.hiddenItemIDs().has($index)) {\n <a class=\"kbq-breadcrumb-item__link-behavior\" [routerLink]=\"item.routerLink?.urlTree\">\n <button kbq-dropdown-item [disabled]=\"item.disabled\">{{ item.text }}</button>\n </a>\n }\n }\n </kbq-dropdown>\n </div>\n }\n @for (item of itemsExcludingEdges; track item; let index = $index) {\n <div class=\"kbq-breadcrumb-item__container\" [kbqOverflowItem]=\"index + 1\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: item, last: false }\" />\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n </div>\n }\n <div alwaysVisible class=\"kbq-breadcrumb-item__container\" [kbqOverflowItem]=\"items.length - 1\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: items.last, last: true }\" />\n </div>\n </div>\n}\n\n<ng-template #breadcrumbTemplate let-item let-last=\"last\">\n @if (item.customTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"item.customTemplateRef\" />\n } @else {\n <a tabindex=\"-1\" class=\"kbq-breadcrumb-item__link-behavior\" [routerLink]=\"item.routerLink?.urlTree\">\n <button\n kbq-button\n kbq-title\n kbqBreadcrumb\n [attr.aria-current]=\"last ? 'page' : null\"\n [disabled]=\"item.disabled || last\"\n [kbqPlacementPriority]=\"PopUpPlacements.Bottom\"\n [kbqTooltipArrow]=\"false\"\n >\n {{ item.text }}\n </button>\n </a>\n }\n</ng-template>\n\n<ng-template #separatorTemplate>\n @if (separator) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n } @else {\n <i kbq-icon=\"\" class=\"kbq-breadcrumb__separator\" [color]=\"KbqComponentColors.ContrastFade\"> / </i>\n }\n</ng-template>\n", styles: [".kbq-breadcrumbs{display:flex;align-items:center;gap:var(--kbq-breadcrumbs-gap);flex-grow:1}.kbq-breadcrumbs .kbq-overflow-items{padding:1px}.kbq-breadcrumbs .kbq-breadcrumb-item__container{display:inline-flex;align-items:center}.kbq-breadcrumbs.kbq-breadcrumbs_first-item-negative-margin .kbq-overflow-items{margin-left:var(--kbq-breadcrumb-item-negative-margin)}.kbq-breadcrumbs.kbq-breadcrumbs_wrap{flex-wrap:wrap}.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button-icon{--kbq-breadcrumb-item-height: var(--kbq-size-xxl)}.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb__expand.kbq-button-icon{--kbq-breadcrumb-item-expand-horizontal-padding: var(--kbq-size-xxs)}.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button-icon{--kbq-button-size-horizontal-padding: var(--kbq-breadcrumb-item-horizontal-padding)}.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button-icon{--kbq-button-size-height: var(--kbq-breadcrumb-item-height)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon{--kbq-button-size-height: var(--kbq-breadcrumb-item-height);--kbq-button-size-horizontal-padding: var(--kbq-breadcrumb-item-horizontal-padding);--kbq-button-size-border-radius: var(--kbq-breadcrumb-item-border-radius)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon{--kbq-button-icon-size-horizontal-padding: var(--kbq-breadcrumb-item-expand-horizontal-padding)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon{--kbq-button-transparent-contrast-fade-on-foreground: var(--kbq-foreground-contrast-secondary);--kbq-button-transparent-contrast-fade-on-right-icon: var(--kbq-breadcrumb-item-icon-color);--kbq-button-transparent-contrast-fade-on-left-icon: var(--kbq-breadcrumb-item-icon-color)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button[aria-current=page],.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon[aria-current=page]{--kbq-button-transparent-contrast-fade-on-states-disabled-foreground: var(--kbq-foreground-contrast)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button[aria-current=page].kbq-disabled,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon[aria-current=page].kbq-disabled{--kbq-button-transparent-contrast-fade-on-states-disabled-left-icon: var( --kbq-breadcrumb-item-icon-color );--kbq-button-transparent-contrast-fade-on-states-disabled-right-icon: var( --kbq-breadcrumb-item-icon-color )}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled):hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled).kbq-hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled).cdk-keyboard-focused .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled):hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled).kbq-hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled).cdk-keyboard-focused .kbq-icon{--kbq-button-transparent-contrast-fade-on-left-icon: var( --kbq-states-icon-contrast-fade-hover );--kbq-button-transparent-contrast-fade-on-right-icon: var( --kbq-states-icon-contrast-fade-hover )}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled):active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled).kbq-active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled):active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled).kbq-active .kbq-icon{--kbq-button-transparent-contrast-fade-on-left-icon: var( --kbq-states-icon-contrast-fade-active );--kbq-button-transparent-contrast-fade-on-right-icon: var( --kbq-states-icon-contrast-fade-active )}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon{--kbq-button-transparent-contrast-fade-on-left-icon: var(--kbq-breadcrumb-expand-icon-color)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon .kbq-icon{--kbq-breadcrumb-expand-icon-color: var(--kbq-icon-contrast-fade)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled):hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled).kbq-hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled).cdk-keyboard-focused .kbq-icon{--kbq-breadcrumb-expand-icon-color: var(--kbq-states-icon-contrast-fade-hover)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled):active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled).kbq-active .kbq-icon{--kbq-breadcrumb-expand-icon-color: var(--kbq-states-icon-contrast-fade-active)}.kbq-breadcrumbs .kbq-breadcrumb_current{color:var(--kbq-foreground-contrast)}.kbq-breadcrumbs .kbq-breadcrumb_current .kbq-button.kbq-button_transparent.kbq-contrast,.kbq-breadcrumbs .kbq-breadcrumb_current .kbq-button-icon.kbq-button_transparent.kbq-contrast{--kbq-button-transparent-contrast-fade-on-foreground: var(--kbq-foreground-contrast)}.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button-icon{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button-icon{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button-icon{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-breadcrumbs .kbq-breadcrumb__separator{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-breadcrumb-item__link-behavior{text-decoration:none}\n", ":where(.kbq-breadcrumbs){--kbq-breadcrumb-item-horizontal-padding: var(--kbq-size-xs);--kbq-breadcrumb-item-height: var(--kbq-size-3xl);--kbq-breadcrumb-item-expand-horizontal-padding: var(--kbq-size-s);--kbq-breadcrumb-expand-icon-color: var(--kbq-icon-contrast-fade);--kbq-breadcrumb-item-border-radius: var(--kbq-size-xs);--kbq-breadcrumb-item-icon-color: var(--kbq-icon-contrast-fade);--kbq-breadcrumb-item-negative-margin: calc(-1 * var(--kbq-size-xs));--kbq-breadcrumbs-gap: 0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i3.KbqButtonDropdownTrigger, selector: "[kbq-button][kbqDropdownTriggerFor]" }, { kind: "ngmodule", type: KbqDropdownModule }, { kind: "component", type: i4.KbqDropdown, selector: "kbq-dropdown", inputs: ["navigationWithWrap", "xPosition", "yPosition", "overlapTriggerY", "overlapTriggerX", "hasBackdrop", "class", "backdropClass"], outputs: ["closed"], exportAs: ["kbqDropdown"] }, { kind: "component", type: i4.KbqDropdownItem, selector: "kbq-dropdown-item, [kbq-dropdown-item]", inputs: ["disabled"], exportAs: ["kbqDropdownItem"] }, { kind: "directive", type: i4.KbqDropdownTrigger, selector: "[kbqDropdownTriggerFor]", inputs: ["kbqDropdownTriggerData", "openByArrowDown", "kbqDropdownTriggerRestoreFocus", "kbqDropdownTriggerFor"], outputs: ["dropdownOpened", "dropdownClosed"], exportAs: ["kbqDropdownTrigger"] }, { kind: "directive", type: KbqBreadcrumbButton, selector: "[kbq-button][kbqBreadcrumb]" }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: i5.KbqTitleDirective, selector: "[kbq-title]", exportAs: ["kbqTitle"] }, { kind: "ngmodule", type: KbqOverflowItemsModule }, { kind: "directive", type: i6.KbqOverflowItems, selector: "[kbqOverflowItems]", inputs: ["reverseOverflowOrder", "debounceTime", "additionalResizeObserverTargets"], outputs: ["changes"], exportAs: ["kbqOverflowItems"] }, { kind: "directive", type: i6.KbqOverflowItem, selector: "[kbqOverflowItem]", inputs: ["kbqOverflowItem", "order", "alwaysVisible"], exportAs: ["kbqOverflowItem"] }, { kind: "directive", type: i6.KbqOverflowItemsResult, selector: "[kbqOverflowItemsResult]", exportAs: ["kbqOverflowItemsResult"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
212
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KbqBreadcrumbs, isStandalone: true, selector: "kbq-breadcrumbs,[kbq-breadcrumbs]", inputs: { firstItemNegativeMargin: ["firstItemNegativeMargin", "firstItemNegativeMargin", booleanAttribute], size: "size", max: "max", disabled: ["disabled", "disabled", booleanAttribute], wrapMode: "wrapMode" }, host: { properties: { "class.kbq-breadcrumbs_compact": "size === \"compact\"", "class.kbq-breadcrumbs_normal": "size === \"normal\"", "class.kbq-breadcrumbs_big": "size === \"big\"", "class.kbq-breadcrumbs_wrap": "wrapMode === \"wrap\"", "class.kbq-breadcrumbs_first-item-negative-margin": "firstItemNegativeMargin", "attr.aria-label": "'breadcrumb'" }, classAttribute: "kbq-breadcrumbs" }, queries: [{ propertyName: "separator", first: true, predicate: KbqBreadcrumbsSeparator, descendants: true, read: TemplateRef }, { propertyName: "items", predicate: i0.forwardRef(() => KbqBreadcrumbItem) }], viewQueries: [{ propertyName: "result", first: true, predicate: KbqOverflowItemsResult, descendants: true, read: ElementRef }, { propertyName: "overflowItems", predicate: KbqOverflowItem, descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective }], ngImport: i0, template: "<!--\n@TODO: check when updated to Angular 20.x (#DS-4034)\nresolved SSR issue with official hack https://github.com/angular/angular/issues/50543#issuecomment-1572900259\n-->\n<ng-content />\n@if (items.length < minVisibleItems || wrapMode !== 'auto') {\n @for (item of items; track item; let last = $last) {\n <div class=\"kbq-breadcrumb-item__container\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: item, last: last }\" />\n @if (!last) {\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n }\n </div>\n }\n} @else {\n <div\n #kbqOverflowItems=\"kbqOverflowItems\"\n kbqOverflowItems\n reverseOverflowOrder\n class=\"layout-align-start-center\"\n [style.max-width.px]=\"maxWidth\"\n >\n <div class=\"kbq-breadcrumb-item__container\" [kbqOverflowItem]=\"0\" [order]=\"items.length\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: items.first, last: false }\" />\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n </div>\n <!-- @TODO delay rendering for proper elements order (#DS-3334)--->\n @if (true) {\n <div kbqOverflowItemsResult class=\"kbq-breadcrumb-item__container\">\n <button\n kbq-button\n kbqBreadcrumb\n class=\"kbq-breadcrumb__expand\"\n [kbqDropdownTriggerFor]=\"hiddenBreadcrumbsDropdown\"\n [kbqStyle]=\"KbqButtonStyles.Transparent\"\n [openByArrowDown]=\"false\"\n >\n <i kbq-icon=\"kbq-ellipsis-horizontal_16\" [color]=\"KbqComponentColors.ContrastFade\"></i>\n </button>\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n\n <kbq-dropdown #hiddenBreadcrumbsDropdown=\"kbqDropdown\">\n @for (item of items; track item) {\n @if (kbqOverflowItems.hiddenItemIDs().has($index)) {\n <a class=\"kbq-breadcrumb-item__link-behavior\" [routerLink]=\"item.routerLink?.urlTree\">\n <button kbq-dropdown-item [disabled]=\"item.disabled\">{{ item.text }}</button>\n </a>\n }\n }\n </kbq-dropdown>\n </div>\n }\n @for (item of itemsExcludingEdges; track item; let index = $index) {\n <div class=\"kbq-breadcrumb-item__container\" [kbqOverflowItem]=\"index + 1\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: item, last: false }\" />\n <ng-container [ngTemplateOutlet]=\"separatorTemplate\" />\n </div>\n }\n <div alwaysVisible class=\"kbq-breadcrumb-item__container\" [kbqOverflowItem]=\"items.length - 1\">\n <ng-container *ngTemplateOutlet=\"breadcrumbTemplate; context: { $implicit: items.last, last: true }\" />\n </div>\n </div>\n}\n\n<ng-template #breadcrumbTemplate let-item let-last=\"last\">\n @if (item.customTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"item.customTemplateRef\" />\n } @else {\n <a tabindex=\"-1\" class=\"kbq-breadcrumb-item__link-behavior\" [routerLink]=\"item.routerLink?.urlTree\">\n <button\n kbq-button\n kbq-title\n kbqBreadcrumb\n [attr.aria-current]=\"last ? 'page' : null\"\n [disabled]=\"item.disabled || last\"\n [kbqPlacementPriority]=\"PopUpPlacements.Bottom\"\n [kbqTooltipArrow]=\"false\"\n >\n {{ item.text }}\n </button>\n </a>\n }\n</ng-template>\n\n<ng-template #separatorTemplate>\n @if (separator) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n } @else {\n <i kbq-icon=\"\" class=\"kbq-breadcrumb__separator\" [color]=\"KbqComponentColors.ContrastFade\"> / </i>\n }\n</ng-template>\n", styles: [".kbq-breadcrumbs{display:flex;align-items:center;gap:var(--kbq-breadcrumbs-gap);flex-grow:1}.kbq-breadcrumbs .kbq-overflow-items{padding:1px}.kbq-breadcrumbs .kbq-breadcrumb-item__container{display:inline-flex;align-items:center}.kbq-breadcrumbs.kbq-breadcrumbs_first-item-negative-margin .kbq-overflow-items{margin-left:var(--kbq-breadcrumb-item-negative-margin)}.kbq-breadcrumbs.kbq-breadcrumbs_wrap{flex-wrap:wrap}.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button-icon{--kbq-breadcrumb-item-height: var(--kbq-size-xxl)}.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb__expand.kbq-button-icon{--kbq-breadcrumb-item-expand-horizontal-padding: var(--kbq-size-xxs)}.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button-icon{--kbq-button-size-horizontal-padding: var(--kbq-breadcrumb-item-horizontal-padding)}.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button-icon{--kbq-button-size-height: var(--kbq-breadcrumb-item-height)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon{--kbq-button-size-height: var(--kbq-breadcrumb-item-height);--kbq-button-size-horizontal-padding: var(--kbq-breadcrumb-item-horizontal-padding);--kbq-button-size-border-radius: var(--kbq-breadcrumb-item-border-radius)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon{--kbq-button-icon-size-horizontal-padding: var(--kbq-breadcrumb-item-expand-horizontal-padding)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon{--kbq-button-transparent-contrast-fade-on-foreground: var(--kbq-foreground-contrast-secondary);--kbq-button-transparent-contrast-fade-on-right-icon: var(--kbq-breadcrumb-item-icon-color);--kbq-button-transparent-contrast-fade-on-left-icon: var(--kbq-breadcrumb-item-icon-color)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button[aria-current=page],.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon[aria-current=page]{--kbq-button-transparent-contrast-fade-on-states-disabled-foreground: var(--kbq-foreground-contrast)}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button[aria-current=page].kbq-disabled,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-button-icon[aria-current=page].kbq-disabled{--kbq-button-transparent-contrast-fade-on-states-disabled-left-icon: var( --kbq-breadcrumb-item-icon-color );--kbq-button-transparent-contrast-fade-on-states-disabled-right-icon: var( --kbq-breadcrumb-item-icon-color )}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled):hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled).kbq-hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled).cdk-keyboard-focused .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled):hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled).kbq-hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled).cdk-keyboard-focused .kbq-icon{--kbq-button-transparent-contrast-fade-on-left-icon: var( --kbq-states-icon-contrast-fade-hover );--kbq-button-transparent-contrast-fade-on-right-icon: var( --kbq-states-icon-contrast-fade-hover )}.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled):active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button:not(.kbq-disabled).kbq-active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled):active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb-item.kbq-dropdown-trigger.kbq-button-icon:not(.kbq-disabled).kbq-active .kbq-icon{--kbq-button-transparent-contrast-fade-on-left-icon: var( --kbq-states-icon-contrast-fade-active );--kbq-button-transparent-contrast-fade-on-right-icon: var( --kbq-states-icon-contrast-fade-active )}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon{--kbq-button-transparent-contrast-fade-on-left-icon: var(--kbq-breadcrumb-expand-icon-color)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon .kbq-icon{--kbq-breadcrumb-expand-icon-color: var(--kbq-icon-contrast-fade)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled):hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled).kbq-hover .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled).cdk-keyboard-focused .kbq-icon{--kbq-breadcrumb-expand-icon-color: var(--kbq-states-icon-contrast-fade-hover)}.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled):active .kbq-icon,.kbq-breadcrumbs .kbq-breadcrumb__expand.kbq-button-icon:not(.kbq-disabled).kbq-active .kbq-icon{--kbq-breadcrumb-expand-icon-color: var(--kbq-states-icon-contrast-fade-active)}.kbq-breadcrumbs .kbq-breadcrumb_current{color:var(--kbq-foreground-contrast)}.kbq-breadcrumbs .kbq-breadcrumb_current .kbq-button.kbq-button_transparent.kbq-contrast,.kbq-breadcrumbs .kbq-breadcrumb_current .kbq-button-icon.kbq-button_transparent.kbq-contrast{--kbq-button-transparent-contrast-fade-on-foreground: var(--kbq-foreground-contrast)}.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_compact .kbq-breadcrumb-item.kbq-button-icon{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_normal .kbq-breadcrumb-item.kbq-button-icon{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button,.kbq-breadcrumbs.kbq-breadcrumbs_big .kbq-button-icon{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-breadcrumbs .kbq-breadcrumb__separator{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-breadcrumb-item__link-behavior{text-decoration:none}\n", ":where(.kbq-breadcrumbs){--kbq-breadcrumb-item-horizontal-padding: var(--kbq-size-xs);--kbq-breadcrumb-item-height: var(--kbq-size-3xl);--kbq-breadcrumb-item-expand-horizontal-padding: var(--kbq-size-s);--kbq-breadcrumb-expand-icon-color: var(--kbq-icon-contrast-fade);--kbq-breadcrumb-item-border-radius: var(--kbq-size-xs);--kbq-breadcrumb-item-icon-color: var(--kbq-icon-contrast-fade);--kbq-breadcrumb-item-negative-margin: calc(-1 * var(--kbq-size-xs));--kbq-breadcrumbs-gap: 0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i3.KbqButtonDropdownTrigger, selector: "[kbq-button][kbqDropdownTriggerFor]" }, { kind: "ngmodule", type: KbqDropdownModule }, { kind: "component", type: i4.KbqDropdown, selector: "kbq-dropdown", inputs: ["navigationWithWrap", "xPosition", "yPosition", "overlapTriggerY", "overlapTriggerX", "hasBackdrop", "class", "backdropClass"], outputs: ["closed"], exportAs: ["kbqDropdown"] }, { kind: "component", type: i4.KbqDropdownItem, selector: "kbq-dropdown-item, [kbq-dropdown-item]", inputs: ["disabled"], exportAs: ["kbqDropdownItem"] }, { kind: "directive", type: i4.KbqDropdownTrigger, selector: "[kbqDropdownTriggerFor]", inputs: ["offsetX", "offsetY", "kbqDropdownTriggerData", "openByArrowDown", "kbqDropdownTriggerRestoreFocus", "kbqDropdownTriggerFor"], outputs: ["dropdownOpened", "dropdownClosed"], exportAs: ["kbqDropdownTrigger"] }, { kind: "directive", type: KbqBreadcrumbButton, selector: "[kbq-button][kbqBreadcrumb]" }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: i5.KbqTitleDirective, selector: "[kbq-title]", exportAs: ["kbqTitle"] }, { kind: "ngmodule", type: KbqOverflowItemsModule }, { kind: "directive", type: i6.KbqOverflowItems, selector: "[kbqOverflowItems]", inputs: ["reverseOverflowOrder", "debounceTime", "additionalResizeObserverTargets"], outputs: ["changes"], exportAs: ["kbqOverflowItems"] }, { kind: "directive", type: i6.KbqOverflowItem, selector: "[kbqOverflowItem]", inputs: ["kbqOverflowItem", "order", "alwaysVisible"], exportAs: ["kbqOverflowItem"] }, { kind: "directive", type: i6.KbqOverflowItemsResult, selector: "[kbqOverflowItemsResult]", exportAs: ["kbqOverflowItemsResult"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
213
213
|
}
|
|
214
214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqBreadcrumbs, decorators: [{
|
|
215
215
|
type: Component,
|
|
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
256
256
|
type: ViewChildren,
|
|
257
257
|
args: [KbqOverflowItem, { read: ElementRef }]
|
|
258
258
|
}] } });
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9icmVhZGNydW1icy9icmVhZGNydW1icy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFtQixlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUs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QUU7Z0JBTTdCLElBQUk7c0JBQVosS0FBSztnQkFNRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS2tDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSTdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR2EsU0FBUztzQkFEM0IsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXpDLEtBQUs7c0JBRHZCLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUluQyxNQUFNO3NCQUR0QixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJdEMsYUFBYTtzQkFEN0IsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBQcm92aWRlcixcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgS2JxQnV0dG9uLCBLYnFCdXR0b25Nb2R1bGUsIEticUJ1dHRvblN0eWxlcyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgS2JxQ29tcG9uZW50Q29sb3JzLCBLYnFEZWZhdWx0U2l6ZXMsIFBvcFVwUGxhY2VtZW50cyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticUljb25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFPdmVyZmxvd0l0ZW0sIEticU92ZXJmbG93SXRlbXNNb2R1bGUsIEticU92ZXJmbG93SXRlbXNSZXN1bHQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvb3ZlcmZsb3ctaXRlbXMnO1xuaW1wb3J0IHsgS2JxVGl0bGVNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGl0bGUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSwgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IEticUJyZWFkY3J1bWJzQ29uZmlndXJhdGlvbiwgS2JxQnJlYWRjcnVtYnNXcmFwTW9kZSB9IGZyb20gJy4vYnJlYWRjcnVtYnMudHlwZXMnO1xuXG5jb25zdCBLQlFfQlJFQURDUlVNQlNfREVGQVVMVF9DT05GSUdVUkFUSU9OOiBLYnFCcmVhZGNydW1ic0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgbWF4OiA0LFxuICAgIHNpemU6ICdub3JtYWwnLFxuICAgIGZpcnN0SXRlbU5lZ2F0aXZlTWFyZ2luOiB0cnVlLFxuICAgIHdyYXBNb2RlOiAnYXV0bydcbn07XG5cbi8qKiBCcmVhZGNydW1icyBvcHRpb25zIGdsb2JhbCBjb25maWd1cmF0aW9uIHByb3ZpZGVyLiAqL1xuZXhwb3J0IGNvbnN0IEtCUV9CUkVBRENSVU1CU19DT05GSUdVUkFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPEticUJyZWFkY3J1bWJzQ29uZmlndXJhdGlvbj4oXG4gICAgJ0tCUV9CUkVBRENSVU1CU19DT05GSUdVUkFUSU9OJyxcbiAgICB7IGZhY3Rvcnk6ICgpID0+IEtCUV9CUkVBRENSVU1CU19ERUZBVUxUX0NPTkZJR1VSQVRJT04gfVxuKTtcblxuLyoqIFV0aWxpdHkgcHJvdmlkZXIgZm9yIGBLQlFfQlJFQURDUlVNQlNfQ09ORklHVVJBVElPTmAuICovXG5leHBvcnQgY29uc3Qga2JxQnJlYWRjcnVtYnNDb25maWd1cmF0aW9uUHJvdmlkZXIgPSAoY29uZmlndXJhdGlvbjogUGFydGlhbDxLYnFCcmVhZGNydW1ic0NvbmZpZ3VyYXRpb24+KTogUHJvdmlkZXIgPT4gKHtcbiAgICBwcm92aWRlOiBLQlFfQlJFQURDUlVNQlNfQ09ORklHVVJBVElPTixcbiAgICB1c2VWYWx1ZTogeyAuLi5LQlFfQlJFQURDUlVNQlNfREVGQVVMVF9DT05GSUdVUkFUSU9OLCAuLi5jb25maWd1cmF0aW9uIH1cbn0pO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2ticUJyZWFkY3J1bWJzU2VwYXJhdG9yXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWJyZWFkY3J1bWJzLXNlcGFyYXRvcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUJyZWFkY3J1bWJzU2VwYXJhdG9yIHtcbiAgICByZWFkb25seSB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZik7XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIHN0eWxlIGFuZCBjb25maWd1cmUgYnV0dG9ucyB1c2VkIGFzIGJyZWFkY3J1bWIgaXRlbXMuXG4gKiAtIEluaGVyaXRzIGZvY3VzIG1hbmFnZW1lbnQgYmVoYXZpb3IgZnJvbSBgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlYC5cbiAqIC0gT3B0aW9uYWxseSBpbmplY3RzIGBLYnFCdXR0b25gIHRvIGN1c3RvbWl6ZSBpdHMgc3R5bGUgZm9yIGJyZWFkY3J1bWIgdXNhZ2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxLWJ1dHRvbl1ba2JxQnJlYWRjcnVtYl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtYnJlYWRjcnVtYi1pdGVtJyB9LFxuICAgIGhvc3REaXJlY3RpdmVzOiBbUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFCcmVhZGNydW1iQnV0dG9uIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvbiA9IGluamVjdChLYnFCdXR0b24sIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbi5jb2xvciA9IEticUNvbXBvbmVudENvbG9ycy5Db250cmFzdDtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uLmticVN0eWxlID0gS2JxQnV0dG9uU3R5bGVzLlRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIERpcmVjdGl2ZSBwcm92aWRlcyBhIHdheSB0byBkZWZpbmUgYSBjdXN0b20gdGVtcGxhdGUgZm9yIGJyZWFkY3J1bWIgcmVuZGVyaW5nLCBsZXZlcmFnaW5nIFRlbXBsYXRlUmVmXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUJyZWFkY3J1bWJWaWV3XSdcbn0pXG5leHBvcnQgY2xhc3MgS2JxQnJlYWRjcnVtYlZpZXcge1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgcmVwcmVzZW50cyBhbiBpbmRpdmlkdWFsIGJyZWFkY3J1bWIgaXRlbSB3aXRoIG9wdGlvbmFsIHN1cHBvcnQgZm9yIHJvdXRlciBuYXZpZ2F0aW9uIGFuZCBzdHlsaW5nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWJyZWFkY3J1bWItaXRlbScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEticUJyZWFkY3J1bWJJdGVtIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dCBkaXNwbGF5ZWQgZm9yIHRoZSBicmVhZGNydW1iIGl0ZW0uXG4gICAgICogVGhpcyB0ZXh0IHdpbGwgYmUgc2hvd24gaWYgYnJlYWRjcnVtYiBpdGVtIGlzIGhpZGRlbiBpbiBkcm9wZG93bi5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyZWFkY3J1bWIgaXRlbSBpcyBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyZWFkY3J1bWIgaXRlbSBpcyB0aGUgY3VycmVudC9hY3RpdmUgaXRlbS5cbiAgICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjdXJyZW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gYSBjdXN0b20gdGVtcGxhdGUgcHJvdmlkZWQgZm9yIHRoZSBicmVhZGNydW1iIGl0ZW0gY29udGVudC5cbiAgICAgKiBUaGUgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYXBwZWFyYW5jZSBvZiB0aGUgYnJlYWRjcnVtYi5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEticUJyZWFkY3J1bWJWaWV3LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGN1c3RvbVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIGBSb3V0ZXJMaW5rYCBpbnN0YW5jZSBmb3IgbmF2aWdhdGluZyB0byBhIHNwZWNpZmljIHJvdXRlLlxuICAgICAqIEluamVjdGVkIGZyb20gdGhlIGhvc3QgZWxlbWVudCwgaWYgYXZhaWxhYmxlIGFuZCBwcm9qZWN0aW5nIHRvIHRoZSBoaWRkZW4gYnJlYWRjcnVtYiBpdGVtIGluIGRyb3Bkb3duLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJvdXRlckxpbmsgPSBpbmplY3QoUm91dGVyTGluaywgeyBvcHRpb25hbDogdHJ1ZSwgaG9zdDogdHJ1ZSB9KTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1icmVhZGNydW1icyxba2JxLWJyZWFkY3J1bWJzXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLnNjc3MnLCAnLi9icmVhZGNydW1icy10b2tlbnMuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBSb3V0ZXJMaW5rLFxuICAgICAgICBLYnFJY29uTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticURyb3Bkb3duTW9kdWxlLFxuICAgICAgICBLYnFCcmVhZGNydW1iQnV0dG9uLFxuICAgICAgICBLYnFUaXRsZU1vZHVsZSxcbiAgICAgICAgS2JxT3ZlcmZsb3dJdGVtc01vZHVsZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1icmVhZGNydW1icycsXG4gICAgICAgICdbY2xhc3Mua2JxLWJyZWFkY3J1bWJzX2NvbXBhY3RdJzogJ3NpemUgPT09IFwiY29tcGFjdFwiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfbm9ybWFsXSc6ICdzaXplID09PSBcIm5vcm1hbFwiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfYmlnXSc6ICdzaXplID09PSBcImJpZ1wiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfd3JhcF0nOiAnd3JhcE1vZGUgPT09IFwid3JhcFwiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfZmlyc3QtaXRlbS1uZWdhdGl2ZS1tYXJnaW5dJzogJ2ZpcnN0SXRlbU5lZ2F0aXZlTWFyZ2luJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogXCInYnJlYWRjcnVtYidcIlxuICAgIH0sXG4gICAgLy8gQFRPRE8gYWRkIHN1cHBvcnQgZm9yIEhvbWUsRW5kIGtleXMgaW50ZXJhY3Rpb24gKCNEUy0zMzM0KVxuICAgIGhvc3REaXJlY3RpdmVzOiBbUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQnJlYWRjcnVtYnMgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlndXJhdGlvbiA9IGluamVjdChLQlFfQlJFQURDUlVNQlNfQ09ORklHVVJBVElPTik7XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhIG5lZ2F0aXZlIG1hcmdpbiBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgZmlyc3QgYnJlYWRjcnVtYiBpdGVtLlxuICAgICAqXG4gICAgICogQHNlZSBLYnFCcmVhZGNydW1ic0NvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZmlyc3RJdGVtTmVnYXRpdmVNYXJnaW46IGJvb2xlYW4gPVxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZmlyc3RJdGVtTmVnYXRpdmVNYXJnaW47XG4gICAgLyoqXG4gICAgICogU2l6ZSBvZiB0aGUgYnJlYWRjcnVtYnMuIEFmZmVjdHMgZm9udCBzaXplLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KCkgc2l6ZTogS2JxRGVmYXVsdFNpemVzID0gdGhpcy5jb25maWd1cmF0aW9uLnNpemU7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSBudW1iZXIgb2YgdmlzaWJsZSBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqIFJlbWFpbmluZyBpdGVtcyBhcmUgY29sbGFwc2VkIGludG8gYSBkcm9wZG93biBpZiB0aGUgdG90YWwgZXhjZWVkcyB0aGlzIHZhbHVlLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgfCBudWxsID0gdGhpcy5jb25maWd1cmF0aW9uLm1heDtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYnJlYWRjcnVtYnMgYXJlIGRpc2FibGVkLlxuICAgICAqIFdoZW4gZGlzYWJsZWQsIHVzZXIgaW50ZXJhY3Rpb25zIGFyZSBibG9ja2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdyYXBwaW5nIGJlaGF2aW9yIG9mIHRoZSBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHdyYXBNb2RlOiBLYnFCcmVhZGNydW1ic1dyYXBNb2RlID0gdGhpcy5jb25maWd1cmF0aW9uLndyYXBNb2RlO1xuXG4gICAgQENvbnRlbnRDaGlsZChLYnFCcmVhZGNydW1ic1NlcGFyYXRvciwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBzZXBhcmF0b3I/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEticUJyZWFkY3J1bWJJdGVtKSlcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxLYnFCcmVhZGNydW1iSXRlbT47XG5cbiAgICBAVmlld0NoaWxkKEticU92ZXJmbG93SXRlbXNSZXN1bHQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdWx0OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZHJlbihLYnFPdmVyZmxvd0l0ZW0sIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmZsb3dJdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgLyoqXG4gICAgICogRW5zdXJlcyBhdCBsZWFzdCBtaW5pbXVtIG51bWJlciBvZiBicmVhZGNydW1iIGl0ZW1zIGFyZSBzaG93bi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluVmlzaWJsZUl0ZW1zID0gMjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgS2JxQ29tcG9uZW50Q29sb3JzID0gS2JxQ29tcG9uZW50Q29sb3JzO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBLYnFCdXR0b25TdHlsZXMgPSBLYnFCdXR0b25TdHlsZXM7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFBvcFVwUGxhY2VtZW50cyA9IFBvcFVwUGxhY2VtZW50cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGl0ZW1zRXhjbHVkaW5nRWRnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLnRvQXJyYXkoKS5zbGljZSgxLCAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgd2lkdGggb2YgdmlzaWJsZSBpdGVtcyBiYXNlZCBvbiB0aGUgYG1heGAgdmFsdWUgYW5kIG92ZXJmbG93IGl0ZW1zLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXIgfCBudWxsfSBUaGUgY29tcHV0ZWQgbWF4IHdpZHRoIGZvciBvdmVyZmxvdyBpdGVtcyBvciBudWxsIGlmIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgbWF4V2lkdGgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLm92ZXJmbG93SXRlbXMgfHxcbiAgICAgICAgICAgICF0aGlzLm92ZXJmbG93SXRlbXMubGVuZ3RoIHx8XG4gICAgICAgICAgICB0aGlzLm1heCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy5tYXggPj0gdGhpcy5pdGVtcy5sZW5ndGggfHxcbiAgICAgICAgICAgIHRoaXMubWF4IDwgdGhpcy5taW5WaXNpYmxlSXRlbXNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2aXNpYmxlSXRlbXNXaWR0aCA9IHRoaXMuZ2V0SXRlbVdpZHRoKHRoaXMucmVzdWx0KTtcbiAgICAgICAgLy8gUmVvcmRlcnMgb3ZlcmZsb3cgaXRlbXMgdG8gcHJpb3JpdGl6ZSB0aGUgZmlyc3QgYW5kIGxhc3QgZWxlbWVudHNcbiAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLm92ZXJmbG93SXRlbXMudG9BcnJheSgpLnNsaWNlKDEsIC0xKSxcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dJdGVtcy5maXJzdCxcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dJdGVtcy5sYXN0XG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1heCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmlzaWJsZUl0ZW1zV2lkdGggKz0gdGhpcy5nZXRJdGVtV2lkdGgoc29ydGVkSXRlbXNbc29ydGVkSXRlbXMubGVuZ3RoIC0gaSAtIDFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2aXNpYmxlSXRlbXNXaWR0aDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SXRlbVdpZHRoKGl0ZW0/OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHJldHVybiBpdGVtID8gaXRlbS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG59XG4iLCI8IS0tXG5AVE9ETzogY2hlY2sgd2hlbiB1cGRhdGVkIHRvIEFuZ3VsYXIgMjAueCAoI0RTLTQwMzQpXG5yZXNvbHZlZCBTU1IgaXNzdWUgd2l0aCBvZmZpY2lhbCBoYWNrIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzUwNTQzI2lzc3VlY29tbWVudC0xNTcyOTAwMjU5XG4tLT5cbjxuZy1jb250ZW50IC8+XG5AaWYgKGl0ZW1zLmxlbmd0aCA8IG1pblZpc2libGVJdGVtcyB8fCB3cmFwTW9kZSAhPT0gJ2F1dG8nKSB7XG4gICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbTsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWJyZWFkY3J1bWItaXRlbV9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRjcnVtYlRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgbGFzdDogbGFzdCB9XCIgLz5cbiAgICAgICAgICAgIEBpZiAoIWxhc3QpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcGFyYXRvclRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgICAja2JxT3ZlcmZsb3dJdGVtcz1cImticU92ZXJmbG93SXRlbXNcIlxuICAgICAgICBrYnFPdmVyZmxvd0l0ZW1zXG4gICAgICAgIHJldmVyc2VPdmVyZmxvd09yZGVyXG4gICAgICAgIGNsYXNzPVwibGF5b3V0LWFsaWduLXN0YXJ0LWNlbnRlclwiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibWF4V2lkdGhcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1icmVhZGNydW1iLWl0ZW1fX2NvbnRhaW5lclwiIFtrYnFPdmVyZmxvd0l0ZW1dPVwiMFwiIFtvcmRlcl09XCJpdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZGNydW1iVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtcy5maXJzdCwgbGFzdDogZmFsc2UgfVwiIC8+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcGFyYXRvclRlbXBsYXRlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQFRPRE8gZGVsYXkgcmVuZGVyaW5nIGZvciBwcm9wZXIgZWxlbWVudHMgb3JkZXIgKCNEUy0zMzM0KS0tLT5cbiAgICAgICAgQGlmICh0cnVlKSB7XG4gICAgICAgICAgICA8ZGl2IGticU92ZXJmbG93SXRlbXNSZXN1bHQgY2xhc3M9XCJrYnEtYnJlYWRjcnVtYi1pdGVtX19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAga2JxQnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1icmVhZGNydW1iX19leHBhbmRcIlxuICAgICAgICAgICAgICAgICAgICBba2JxRHJvcGRvd25UcmlnZ2VyRm9yXT1cImhpZGRlbkJyZWFkY3J1bWJzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBba2JxU3R5bGVdPVwiS2JxQnV0dG9uU3R5bGVzLlRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW29wZW5CeUFycm93RG93bl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1lbGxpcHNpcy1ob3Jpem9udGFsXzE2XCIgW2NvbG9yXT1cIkticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZXBhcmF0b3JUZW1wbGF0ZVwiIC8+XG5cbiAgICAgICAgICAgICAgICA8a2JxLWRyb3Bkb3duICNoaWRkZW5CcmVhZGNydW1ic0Ryb3Bkb3duPVwia2JxRHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChrYnFPdmVyZmxvd0l0ZW1zLmhpZGRlbkl0ZW1JRHMoKS5oYXMoJGluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwia2JxLWJyZWFkY3J1bWItaXRlbV9fbGluay1iZWhhdmlvclwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGluaz8udXJsVHJlZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGticS1kcm9wZG93bi1pdGVtIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCI+e3sgaXRlbS50ZXh0IH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9rYnEtZHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zRXhjbHVkaW5nRWRnZXM7IHRyYWNrIGl0ZW07IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1icmVhZGNydW1iLWl0ZW1fX2NvbnRhaW5lclwiIFtrYnFPdmVyZmxvd0l0ZW1dPVwiaW5kZXggKyAxXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyZWFkY3J1bWJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGxhc3Q6IGZhbHNlIH1cIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VwYXJhdG9yVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBhbHdheXNWaXNpYmxlIGNsYXNzPVwia2JxLWJyZWFkY3J1bWItaXRlbV9fY29udGFpbmVyXCIgW2ticU92ZXJmbG93SXRlbV09XCJpdGVtcy5sZW5ndGggLSAxXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRjcnVtYlRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMubGFzdCwgbGFzdDogdHJ1ZSB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRjcnVtYlRlbXBsYXRlIGxldC1pdGVtIGxldC1sYXN0PVwibGFzdFwiPlxuICAgIEBpZiAoaXRlbS5jdXN0b21UZW1wbGF0ZVJlZikge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uY3VzdG9tVGVtcGxhdGVSZWZcIiAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8YSB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJrYnEtYnJlYWRjcnVtYi1pdGVtX19saW5rLWJlaGF2aW9yXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rPy51cmxUcmVlXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgICAgIGticS10aXRsZVxuICAgICAgICAgICAgICAgIGticUJyZWFkY3J1bWJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwibGFzdCA/ICdwYWdlJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkIHx8IGxhc3RcIlxuICAgICAgICAgICAgICAgIFtrYnFQbGFjZW1lbnRQcmlvcml0eV09XCJQb3BVcFBsYWNlbWVudHMuQm90dG9tXCJcbiAgICAgICAgICAgICAgICBba2JxVG9vbHRpcEFycm93XT1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2E+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZXBhcmF0b3JUZW1wbGF0ZT5cbiAgICBAaWYgKHNlcGFyYXRvcikge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcGFyYXRvclwiIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxpIGticS1pY29uPVwiXCIgY2xhc3M9XCJrYnEtYnJlYWRjcnVtYl9fc2VwYXJhdG9yXCIgW2NvbG9yXT1cIkticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGVcIj4mbmJzcDsvJm5ic3A7PC9pPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9icmVhZGNydW1icy9icmVhZGNydW1icy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFtQixlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUs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QUU7Z0JBTTdCLElBQUk7c0JBQVosS0FBSztnQkFNRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS2tDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSTdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR2EsU0FBUztzQkFEM0IsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXpDLEtBQUs7c0JBRHZCLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUluQyxNQUFNO3NCQUR0QixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJdEMsYUFBYTtzQkFEN0IsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBQcm92aWRlcixcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgS2JxQnV0dG9uLCBLYnFCdXR0b25Nb2R1bGUsIEticUJ1dHRvblN0eWxlcyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgS2JxQ29tcG9uZW50Q29sb3JzLCBLYnFEZWZhdWx0U2l6ZXMsIFBvcFVwUGxhY2VtZW50cyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticUljb25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFPdmVyZmxvd0l0ZW0sIEticU92ZXJmbG93SXRlbXNNb2R1bGUsIEticU92ZXJmbG93SXRlbXNSZXN1bHQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvb3ZlcmZsb3ctaXRlbXMnO1xuaW1wb3J0IHsgS2JxVGl0bGVNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGl0bGUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSwgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IEticUJyZWFkY3J1bWJzQ29uZmlndXJhdGlvbiwgS2JxQnJlYWRjcnVtYnNXcmFwTW9kZSB9IGZyb20gJy4vYnJlYWRjcnVtYnMudHlwZXMnO1xuXG5jb25zdCBLQlFfQlJFQURDUlVNQlNfREVGQVVMVF9DT05GSUdVUkFUSU9OOiBLYnFCcmVhZGNydW1ic0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgbWF4OiA0LFxuICAgIHNpemU6ICdub3JtYWwnLFxuICAgIGZpcnN0SXRlbU5lZ2F0aXZlTWFyZ2luOiB0cnVlLFxuICAgIHdyYXBNb2RlOiAnYXV0bydcbn07XG5cbi8qKiBCcmVhZGNydW1icyBvcHRpb25zIGdsb2JhbCBjb25maWd1cmF0aW9uIHByb3ZpZGVyLiAqL1xuZXhwb3J0IGNvbnN0IEtCUV9CUkVBRENSVU1CU19DT05GSUdVUkFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPEticUJyZWFkY3J1bWJzQ29uZmlndXJhdGlvbj4oXG4gICAgJ0tCUV9CUkVBRENSVU1CU19DT05GSUdVUkFUSU9OJyxcbiAgICB7IGZhY3Rvcnk6ICgpID0+IEtCUV9CUkVBRENSVU1CU19ERUZBVUxUX0NPTkZJR1VSQVRJT04gfVxuKTtcblxuLyoqIFV0aWxpdHkgcHJvdmlkZXIgZm9yIGBLQlFfQlJFQURDUlVNQlNfQ09ORklHVVJBVElPTmAuICovXG5leHBvcnQgY29uc3Qga2JxQnJlYWRjcnVtYnNDb25maWd1cmF0aW9uUHJvdmlkZXIgPSAoY29uZmlndXJhdGlvbjogUGFydGlhbDxLYnFCcmVhZGNydW1ic0NvbmZpZ3VyYXRpb24+KTogUHJvdmlkZXIgPT4gKHtcbiAgICBwcm92aWRlOiBLQlFfQlJFQURDUlVNQlNfQ09ORklHVVJBVElPTixcbiAgICB1c2VWYWx1ZTogeyAuLi5LQlFfQlJFQURDUlVNQlNfREVGQVVMVF9DT05GSUdVUkFUSU9OLCAuLi5jb25maWd1cmF0aW9uIH1cbn0pO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2ticUJyZWFkY3J1bWJzU2VwYXJhdG9yXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWJyZWFkY3J1bWJzLXNlcGFyYXRvcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUJyZWFkY3J1bWJzU2VwYXJhdG9yIHtcbiAgICByZWFkb25seSB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZik7XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIHN0eWxlIGFuZCBjb25maWd1cmUgYnV0dG9ucyB1c2VkIGFzIGJyZWFkY3J1bWIgaXRlbXMuXG4gKiAtIEluaGVyaXRzIGZvY3VzIG1hbmFnZW1lbnQgYmVoYXZpb3IgZnJvbSBgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlYC5cbiAqIC0gT3B0aW9uYWxseSBpbmplY3RzIGBLYnFCdXR0b25gIHRvIGN1c3RvbWl6ZSBpdHMgc3R5bGUgZm9yIGJyZWFkY3J1bWIgdXNhZ2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxLWJ1dHRvbl1ba2JxQnJlYWRjcnVtYl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtYnJlYWRjcnVtYi1pdGVtJyB9LFxuICAgIGhvc3REaXJlY3RpdmVzOiBbUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFCcmVhZGNydW1iQnV0dG9uIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1dHRvbiA9IGluamVjdChLYnFCdXR0b24sIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbi5jb2xvciA9IEticUNvbXBvbmVudENvbG9ycy5Db250cmFzdDtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uLmticVN0eWxlID0gS2JxQnV0dG9uU3R5bGVzLlRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIERpcmVjdGl2ZSBwcm92aWRlcyBhIHdheSB0byBkZWZpbmUgYSBjdXN0b20gdGVtcGxhdGUgZm9yIGJyZWFkY3J1bWIgcmVuZGVyaW5nLCBsZXZlcmFnaW5nIFRlbXBsYXRlUmVmXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2ticUJyZWFkY3J1bWJWaWV3XSdcbn0pXG5leHBvcnQgY2xhc3MgS2JxQnJlYWRjcnVtYlZpZXcge1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgcmVwcmVzZW50cyBhbiBpbmRpdmlkdWFsIGJyZWFkY3J1bWIgaXRlbSB3aXRoIG9wdGlvbmFsIHN1cHBvcnQgZm9yIHJvdXRlciBuYXZpZ2F0aW9uIGFuZCBzdHlsaW5nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWJyZWFkY3J1bWItaXRlbScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEticUJyZWFkY3J1bWJJdGVtIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGV4dCBkaXNwbGF5ZWQgZm9yIHRoZSBicmVhZGNydW1iIGl0ZW0uXG4gICAgICogVGhpcyB0ZXh0IHdpbGwgYmUgc2hvd24gaWYgYnJlYWRjcnVtYiBpdGVtIGlzIGhpZGRlbiBpbiBkcm9wZG93bi5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyZWFkY3J1bWIgaXRlbSBpcyBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyZWFkY3J1bWIgaXRlbSBpcyB0aGUgY3VycmVudC9hY3RpdmUgaXRlbS5cbiAgICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjdXJyZW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQSByZWZlcmVuY2UgdG8gYSBjdXN0b20gdGVtcGxhdGUgcHJvdmlkZWQgZm9yIHRoZSBicmVhZGNydW1iIGl0ZW0gY29udGVudC5cbiAgICAgKiBUaGUgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYXBwZWFyYW5jZSBvZiB0aGUgYnJlYWRjcnVtYi5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEticUJyZWFkY3J1bWJWaWV3LCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGN1c3RvbVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIGBSb3V0ZXJMaW5rYCBpbnN0YW5jZSBmb3IgbmF2aWdhdGluZyB0byBhIHNwZWNpZmljIHJvdXRlLlxuICAgICAqIEluamVjdGVkIGZyb20gdGhlIGhvc3QgZWxlbWVudCwgaWYgYXZhaWxhYmxlIGFuZCBwcm9qZWN0aW5nIHRvIHRoZSBoaWRkZW4gYnJlYWRjcnVtYiBpdGVtIGluIGRyb3Bkb3duLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJvdXRlckxpbmsgPSBpbmplY3QoUm91dGVyTGluaywgeyBvcHRpb25hbDogdHJ1ZSwgaG9zdDogdHJ1ZSB9KTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1icmVhZGNydW1icyxba2JxLWJyZWFkY3J1bWJzXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLnNjc3MnLCAnLi9icmVhZGNydW1icy10b2tlbnMuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBSb3V0ZXJMaW5rLFxuICAgICAgICBLYnFJY29uTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticURyb3Bkb3duTW9kdWxlLFxuICAgICAgICBLYnFCcmVhZGNydW1iQnV0dG9uLFxuICAgICAgICBLYnFUaXRsZU1vZHVsZSxcbiAgICAgICAgS2JxT3ZlcmZsb3dJdGVtc01vZHVsZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1icmVhZGNydW1icycsXG4gICAgICAgICdbY2xhc3Mua2JxLWJyZWFkY3J1bWJzX2NvbXBhY3RdJzogJ3NpemUgPT09IFwiY29tcGFjdFwiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfbm9ybWFsXSc6ICdzaXplID09PSBcIm5vcm1hbFwiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfYmlnXSc6ICdzaXplID09PSBcImJpZ1wiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfd3JhcF0nOiAnd3JhcE1vZGUgPT09IFwid3JhcFwiJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYnJlYWRjcnVtYnNfZmlyc3QtaXRlbS1uZWdhdGl2ZS1tYXJnaW5dJzogJ2ZpcnN0SXRlbU5lZ2F0aXZlTWFyZ2luJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogXCInYnJlYWRjcnVtYidcIlxuICAgIH0sXG4gICAgLy8gQFRPRE8gYWRkIHN1cHBvcnQgZm9yIEhvbWUsRW5kIGtleXMgaW50ZXJhY3Rpb24gKCNEUy0zMzM0KVxuICAgIGhvc3REaXJlY3RpdmVzOiBbUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQnJlYWRjcnVtYnMgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlndXJhdGlvbiA9IGluamVjdChLQlFfQlJFQURDUlVNQlNfQ09ORklHVVJBVElPTik7XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhIG5lZ2F0aXZlIG1hcmdpbiBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgZmlyc3QgYnJlYWRjcnVtYiBpdGVtLlxuICAgICAqXG4gICAgICogQHNlZSBLYnFCcmVhZGNydW1ic0NvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZmlyc3RJdGVtTmVnYXRpdmVNYXJnaW46IGJvb2xlYW4gPVxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZmlyc3RJdGVtTmVnYXRpdmVNYXJnaW47XG4gICAgLyoqXG4gICAgICogU2l6ZSBvZiB0aGUgYnJlYWRjcnVtYnMuIEFmZmVjdHMgZm9udCBzaXplLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KCkgc2l6ZTogS2JxRGVmYXVsdFNpemVzID0gdGhpcy5jb25maWd1cmF0aW9uLnNpemU7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSBudW1iZXIgb2YgdmlzaWJsZSBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqIFJlbWFpbmluZyBpdGVtcyBhcmUgY29sbGFwc2VkIGludG8gYSBkcm9wZG93biBpZiB0aGUgdG90YWwgZXhjZWVkcyB0aGlzIHZhbHVlLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgfCBudWxsID0gdGhpcy5jb25maWd1cmF0aW9uLm1heDtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYnJlYWRjcnVtYnMgYXJlIGRpc2FibGVkLlxuICAgICAqIFdoZW4gZGlzYWJsZWQsIHVzZXIgaW50ZXJhY3Rpb25zIGFyZSBibG9ja2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdyYXBwaW5nIGJlaGF2aW9yIG9mIHRoZSBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHdyYXBNb2RlOiBLYnFCcmVhZGNydW1ic1dyYXBNb2RlID0gdGhpcy5jb25maWd1cmF0aW9uLndyYXBNb2RlO1xuXG4gICAgQENvbnRlbnRDaGlsZChLYnFCcmVhZGNydW1ic1NlcGFyYXRvciwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBzZXBhcmF0b3I/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEticUJyZWFkY3J1bWJJdGVtKSlcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxLYnFCcmVhZGNydW1iSXRlbT47XG5cbiAgICBAVmlld0NoaWxkKEticU92ZXJmbG93SXRlbXNSZXN1bHQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdWx0OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZHJlbihLYnFPdmVyZmxvd0l0ZW0sIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmZsb3dJdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgLyoqXG4gICAgICogRW5zdXJlcyBhdCBsZWFzdCBtaW5pbXVtIG51bWJlciBvZiBicmVhZGNydW1iIGl0ZW1zIGFyZSBzaG93bi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluVmlzaWJsZUl0ZW1zID0gMjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgS2JxQ29tcG9uZW50Q29sb3JzID0gS2JxQ29tcG9uZW50Q29sb3JzO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBLYnFCdXR0b25TdHlsZXMgPSBLYnFCdXR0b25TdHlsZXM7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFBvcFVwUGxhY2VtZW50cyA9IFBvcFVwUGxhY2VtZW50cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGl0ZW1zRXhjbHVkaW5nRWRnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLnRvQXJyYXkoKS5zbGljZSgxLCAtMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgd2lkdGggb2YgdmlzaWJsZSBpdGVtcyBiYXNlZCBvbiB0aGUgYG1heGAgdmFsdWUgYW5kIG92ZXJmbG93IGl0ZW1zLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXIgfCBudWxsfSBUaGUgY29tcHV0ZWQgbWF4IHdpZHRoIGZvciBvdmVyZmxvdyBpdGVtcyBvciBudWxsIGlmIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgbWF4V2lkdGgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLm92ZXJmbG93SXRlbXMgfHxcbiAgICAgICAgICAgICF0aGlzLm92ZXJmbG93SXRlbXMubGVuZ3RoIHx8XG4gICAgICAgICAgICB0aGlzLm1heCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy5tYXggPj0gdGhpcy5pdGVtcy5sZW5ndGggfHxcbiAgICAgICAgICAgIHRoaXMubWF4IDwgdGhpcy5taW5WaXNpYmxlSXRlbXNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2aXNpYmxlSXRlbXNXaWR0aCA9IHRoaXMuZ2V0SXRlbVdpZHRoKHRoaXMucmVzdWx0KTtcbiAgICAgICAgLy8gUmVvcmRlcnMgb3ZlcmZsb3cgaXRlbXMgdG8gcHJpb3JpdGl6ZSB0aGUgZmlyc3QgYW5kIGxhc3QgZWxlbWVudHNcbiAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLm92ZXJmbG93SXRlbXMudG9BcnJheSgpLnNsaWNlKDEsIC0xKSxcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dJdGVtcy5maXJzdCxcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3dJdGVtcy5sYXN0XG4gICAgICAgIF07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1heCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmlzaWJsZUl0ZW1zV2lkdGggKz0gdGhpcy5nZXRJdGVtV2lkdGgoc29ydGVkSXRlbXNbc29ydGVkSXRlbXMubGVuZ3RoIC0gaSAtIDFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2aXNpYmxlSXRlbXNXaWR0aDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SXRlbVdpZHRoKGl0ZW0/OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHJldHVybiBpdGVtID8gaXRlbS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG59XG4iLCI8IS0tXG5AVE9ETzogY2hlY2sgd2hlbiB1cGRhdGVkIHRvIEFuZ3VsYXIgMjAueCAoI0RTLTQwMzQpXG5yZXNvbHZlZCBTU1IgaXNzdWUgd2l0aCBvZmZpY2lhbCBoYWNrIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzUwNTQzI2lzc3VlY29tbWVudC0xNTcyOTAwMjU5XG4tLT5cbjxuZy1jb250ZW50IC8+XG5AaWYgKGl0ZW1zLmxlbmd0aCA8IG1pblZpc2libGVJdGVtcyB8fCB3cmFwTW9kZSAhPT0gJ2F1dG8nKSB7XG4gICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbTsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWJyZWFkY3J1bWItaXRlbV9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRjcnVtYlRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgbGFzdDogbGFzdCB9XCIgLz5cbiAgICAgICAgICAgIEBpZiAoIWxhc3QpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcGFyYXRvclRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgICAja2JxT3ZlcmZsb3dJdGVtcz1cImticU92ZXJmbG93SXRlbXNcIlxuICAgICAgICBrYnFPdmVyZmxvd0l0ZW1zXG4gICAgICAgIHJldmVyc2VPdmVyZmxvd09yZGVyXG4gICAgICAgIGNsYXNzPVwibGF5b3V0LWFsaWduLXN0YXJ0LWNlbnRlclwiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibWF4V2lkdGhcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1icmVhZGNydW1iLWl0ZW1fX2NvbnRhaW5lclwiIFtrYnFPdmVyZmxvd0l0ZW1dPVwiMFwiIFtvcmRlcl09XCJpdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZGNydW1iVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtcy5maXJzdCwgbGFzdDogZmFsc2UgfVwiIC8+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcGFyYXRvclRlbXBsYXRlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQFRPRE8gZGVsYXkgcmVuZGVyaW5nIGZvciBwcm9wZXIgZWxlbWVudHMgb3JkZXIgKCNEUy0zMzM0KS0tLT5cbiAgICAgICAgQGlmICh0cnVlKSB7XG4gICAgICAgICAgICA8ZGl2IGticU92ZXJmbG93SXRlbXNSZXN1bHQgY2xhc3M9XCJrYnEtYnJlYWRjcnVtYi1pdGVtX19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAga2JxQnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1icmVhZGNydW1iX19leHBhbmRcIlxuICAgICAgICAgICAgICAgICAgICBba2JxRHJvcGRvd25UcmlnZ2VyRm9yXT1cImhpZGRlbkJyZWFkY3J1bWJzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICBba2JxU3R5bGVdPVwiS2JxQnV0dG9uU3R5bGVzLlRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW29wZW5CeUFycm93RG93bl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1lbGxpcHNpcy1ob3Jpem9udGFsXzE2XCIgW2NvbG9yXT1cIkticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZXBhcmF0b3JUZW1wbGF0ZVwiIC8+XG5cbiAgICAgICAgICAgICAgICA8a2JxLWRyb3Bkb3duICNoaWRkZW5CcmVhZGNydW1ic0Ryb3Bkb3duPVwia2JxRHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChrYnFPdmVyZmxvd0l0ZW1zLmhpZGRlbkl0ZW1JRHMoKS5oYXMoJGluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwia2JxLWJyZWFkY3J1bWItaXRlbV9fbGluay1iZWhhdmlvclwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGluaz8udXJsVHJlZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGticS1kcm9wZG93bi1pdGVtIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCI+e3sgaXRlbS50ZXh0IH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9rYnEtZHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zRXhjbHVkaW5nRWRnZXM7IHRyYWNrIGl0ZW07IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1icmVhZGNydW1iLWl0ZW1fX2NvbnRhaW5lclwiIFtrYnFPdmVyZmxvd0l0ZW1dPVwiaW5kZXggKyAxXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyZWFkY3J1bWJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGxhc3Q6IGZhbHNlIH1cIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VwYXJhdG9yVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBhbHdheXNWaXNpYmxlIGNsYXNzPVwia2JxLWJyZWFkY3J1bWItaXRlbV9fY29udGFpbmVyXCIgW2ticU92ZXJmbG93SXRlbV09XCJpdGVtcy5sZW5ndGggLSAxXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRjcnVtYlRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMubGFzdCwgbGFzdDogdHJ1ZSB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRjcnVtYlRlbXBsYXRlIGxldC1pdGVtIGxldC1sYXN0PVwibGFzdFwiPlxuICAgIEBpZiAoaXRlbS5jdXN0b21UZW1wbGF0ZVJlZikge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uY3VzdG9tVGVtcGxhdGVSZWZcIiAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8YSB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJrYnEtYnJlYWRjcnVtYi1pdGVtX19saW5rLWJlaGF2aW9yXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rPy51cmxUcmVlXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgICAgIGticS10aXRsZVxuICAgICAgICAgICAgICAgIGticUJyZWFkY3J1bWJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwibGFzdCA/ICdwYWdlJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkIHx8IGxhc3RcIlxuICAgICAgICAgICAgICAgIFtrYnFQbGFjZW1lbnRQcmlvcml0eV09XCJQb3BVcFBsYWNlbWVudHMuQm90dG9tXCJcbiAgICAgICAgICAgICAgICBba2JxVG9vbHRpcEFycm93XT1cImZhbHNlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2E+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZXBhcmF0b3JUZW1wbGF0ZT5cbiAgICBAaWYgKHNlcGFyYXRvcikge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcGFyYXRvclwiIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxpIGticS1pY29uPVwiXCIgY2xhc3M9XCJrYnEtYnJlYWRjcnVtYl9fc2VwYXJhdG9yXCIgW2NvbG9yXT1cIkticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGVcIj4mbmJzcDsvJm5ic3A7PC9pPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|