asksuite-citrus 1.5.8 → 1.5.10
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/esm2022/lib/components/autocomplete/autocomplete.component.mjs +13 -4
- package/esm2022/lib/directives/ask-dropdown.directive.mjs +24 -2
- package/fesm2022/asksuite-citrus.mjs +35 -4
- package/fesm2022/asksuite-citrus.mjs.map +1 -1
- package/lib/components/autocomplete/autocomplete.component.d.ts +4 -1
- package/lib/directives/ask-dropdown.directive.d.ts +8 -1
- package/package.json +1 -1
@@ -25,6 +25,7 @@ export class AutocompleteComponent {
|
|
25
25
|
this.change = change;
|
26
26
|
this.translate = translate;
|
27
27
|
this.inputControl = new FormControl("");
|
28
|
+
this.fixedOptionsItems = [];
|
28
29
|
this.filteredOptions = [];
|
29
30
|
this.paginatedFilteredOptions = [];
|
30
31
|
this.selection = [];
|
@@ -51,6 +52,7 @@ export class AutocompleteComponent {
|
|
51
52
|
this.multiple = false;
|
52
53
|
this.valueProp = '';
|
53
54
|
this.options = [];
|
55
|
+
this.fixedOptions = [];
|
54
56
|
this.placeholder = '';
|
55
57
|
this.emptyMessage = 'NO_OPTIONS';
|
56
58
|
this.selectAll = false;
|
@@ -62,8 +64,12 @@ export class AutocompleteComponent {
|
|
62
64
|
}
|
63
65
|
ngAfterViewInit() {
|
64
66
|
this.checkAllValue = this.isAllOptionsSelected;
|
67
|
+
this.checkFixedOptions();
|
65
68
|
this.handleInputChange();
|
66
69
|
}
|
70
|
+
checkFixedOptions() {
|
71
|
+
this.fixedOptionsItems = this.options.filter(option => this.fixedOptions.includes(option[this.valueProp]));
|
72
|
+
}
|
67
73
|
get isAllOptionsSelected() {
|
68
74
|
return this.selection.length === this.options.length;
|
69
75
|
}
|
@@ -71,7 +77,8 @@ export class AutocompleteComponent {
|
|
71
77
|
if (changes['options']) {
|
72
78
|
this._pageNumber = 1;
|
73
79
|
this.paginatedFilteredOptions = [];
|
74
|
-
this.filteredOptions = changes['options'].currentValue
|
80
|
+
this.filteredOptions = changes['options'].currentValue
|
81
|
+
.filter((option) => !this.fixedOptions.includes(option[this.valueProp]));
|
75
82
|
this.updateValidation();
|
76
83
|
}
|
77
84
|
}
|
@@ -280,11 +287,11 @@ export class AutocompleteComponent {
|
|
280
287
|
this.disabled = isDisabled;
|
281
288
|
}
|
282
289
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i1.FormBuilder }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
283
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AutocompleteComponent, selector: "ask-autocomplete", inputs: { filterFn: "filterFn", displayFn: "displayFn", multiple: "multiple", valueProp: "valueProp", options: "options", placeholder: "placeholder", emptyMessage: "emptyMessage", selectAll: "selectAll", allOptionsSelectedText: "allOptionsSelectedText", selectAllMessage: "selectAllMessage", iconPropReference: "iconPropReference" }, outputs: { itemCheck: "itemCheck" }, host: { listeners: { "window:mousedown": "handleClick($event)" } }, providers: [valueAccessor], viewQueries: [{ propertyName: "input", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }, { propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "overlayContent", first: true, predicate: ["overlayContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"autocomplete-wrapper\"\n data-testid=\"autocomplete-wrapper\"\n [class.-closed]=\"closed\"\n [class.-opened]=\"!closed\"\n #wrapper\n (click)=\"handleAutocompleteClick()\"\n>\n <div class=\"autocomplete\" #autocomplete>\n <input\n class=\"search-field\"\n askAutofocus\n *ngIf=\"!closed; else selectionOrPlaceholder\"\n (click)=\"$event.stopPropagation()\"\n [formControl]=\"inputControl\"\n [placeholder]=\"placeholder\"\n />\n <ng-template #selectionOrPlaceholder>\n <ng-container *ngIf=\"showChips\">\n <div\n class=\"chip-list\"\n [class.-collapsed]=\"chipsCollapsed\"\n [ngClass]=\"chipsContainerClasses\"\n >\n <ask-chips\n [style.max-width]=\"chipsCollapsed ? '85%' : '95%'\"\n [showAction]=\"true\"\n *ngFor=\"let option of selectedOptions\"\n (action)=\"handleChipAction(option)\"\n >\n {{ display(option) }}\n </ask-chips>\n <span\n class=\"expand\"\n data-testid=\"see-more\"\n *ngIf=\"showAllSelectionBtn\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n +{{ selection.length - 1 }}\n </span>\n </div>\n </ng-container>\n <span\n class=\"empty-placeholder\"\n data-testid=\"placeholder\"\n *ngIf=\"showPlaceholder\"\n >\n {{\n checkAllValue && allOptionsSelectedText\n ? allOptionsSelectedText\n : placeholder\n }}\n </span>\n </ng-template>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n *ngIf=\"chipsCollapsed\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n <div class=\"actions\" *ngIf=\"showExpandedSelectionActions\">\n <span\n class=\"see-more\"\n data-testid=\"see-less\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n {{ \"SEE_LESS\" | translate }}\n </span>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n</div>\n\n<ng-template #overlayContent>\n <div #list class=\"menu-container\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"!multiple; else multipleSelection\">\n <div class=\"list\" askScroll [askScrollThreshold]=\"50\">\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div\n class=\"option-item\"\n [class.-highlighted]=\"\n selectedOption && selectedOption[valueProp] === option[valueProp]\n \"\n (click)=\"handleOptionSelected(option)\"\n >\n <p class=\"text\">{{ display(option) }}</p>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #multipleSelection>\n <div class=\"option-item\" *ngIf=\"showSelectAllCheckbox\">\n <ask-checkbox\n (valueChange)=\"handleSelectAll($event)\"\n [(ngModel)]=\"checkAllValue\"\n >{{selectAllMessage}}</ask-checkbox\n >\n </div>\n <div\n askScroll\n [askScrollThreshold]=\"50\"\n (scrollEnd)=\"getMoreItems()\"\n data-testid=\"options-form\"\n class=\"options-form\"\n [class.-select-all]=\"showSelectAllCheckbox\"\n >\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div class=\"option-item\">\n <ask-checkbox\n [value]=\"optionsSelected[option[valueProp]]\"\n (valueChange)=\"valueChange(option, $event)\"\n >\n <div class=\"checkbox-content\">\n <img\n data-testid=\"checkbox-item-icon\"\n class=\"icon\"\n *ngIf=\"iconPropReference\"\n [src]=\"option[iconPropReference]\"\n alt=\"\"\n />\n {{ display(option) }}\n </div>\n </ask-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-template>\n <span class=\"empty\" *ngIf=\"!filteredOptions.length\">{{\n emptyMessage | translate\n }}</span>\n </div>\n</ng-template>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis,.option-item>.text,.option-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.autocomplete-wrapper{position:relative;border:1px solid #CBD2D9;border-radius:4px;padding:16px}.autocomplete-wrapper:hover{cursor:pointer}.autocomplete-wrapper>.autocomplete{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper>.actions{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper.-opened{border-bottom-right-radius:0;border-bottom-left-radius:0}.autocomplete-wrapper.-closed{transition:all ease-in-out .3s;min-height:54px}.search-field{font-style:inherit;width:100%;border:none;height:100%}.search-field:focus{border:none;outline:none}.search-field::placeholder{opacity:.6}.option-item{display:flex;flex-direction:row;align-items:center;padding-left:1rem;height:36px;width:100%}.option-item.-highlighted{background-color:#e4e7eb}.option-item:hover{cursor:pointer;background-color:#f5f7fa}.see-more,.chip-list>.expand{color:#616e7c;text-decoration:underline;font-size:.875rem;font-weight:500}.see-more:hover,.chip-list>.expand:hover{cursor:pointer}.chip-list{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:.5rem;flex:1;max-height:calc(120px + 2.5rem);transition:all ease-in-out .3s;max-width:100%}.chip-list.-collapsed{height:24px;overflow:hidden;transition:none}.chip-list.-two{height:calc(48px + 1rem)}.chip-list.-three{height:calc(72px + 1.5rem)}.chip-list.-four{height:calc(96px + 2rem)}.chip-list.-many{overflow-y:auto;height:calc(120px + 2.5rem)}.btn-expand:hover{cursor:pointer}.btn-expand.-disabled{color:#7b8794}.empty-placeholder{font-size:.875rem}.empty-placeholder:hover{cursor:pointer}.list-box,.menu-container>.list,.options-form{min-height:1rem;overflow-y:scroll;max-height:100%}.list-box.-select-all,.menu-container>.-select-all.list,.-select-all.options-form{max-height:80%}.checkbox-content{display:flex;gap:8px;align-items:center}.checkbox-content>.icon{width:16px;height:16px}.menu-container{width:100%;background:white;max-height:165px;border:1px solid #CBD2D9;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none;padding:8px 0}.menu-container>.empty{text-align:center;display:inline-block;width:100%}.menu-container.-multiple{max-height:228px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.ChipsComponent, selector: "ask-chips", inputs: ["appearance", "showAction", "size", "color"], outputs: ["action"] }, { kind: "component", type: i6.CheckboxComponent, selector: "ask-checkbox", inputs: ["value", "disabled"], outputs: ["valueChange", "change", "click", "focus"] }, { kind: "directive", type: i7.AutofocusDirective, selector: "[askAutofocus]" }, { kind: "directive", type: i8.ScrollDirective, selector: "[askScroll]", inputs: ["askScrollThreshold"], outputs: ["scrollEnd"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
290
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AutocompleteComponent, selector: "ask-autocomplete", inputs: { filterFn: "filterFn", displayFn: "displayFn", multiple: "multiple", valueProp: "valueProp", options: "options", fixedOptions: "fixedOptions", placeholder: "placeholder", emptyMessage: "emptyMessage", selectAll: "selectAll", allOptionsSelectedText: "allOptionsSelectedText", selectAllMessage: "selectAllMessage", iconPropReference: "iconPropReference" }, outputs: { itemCheck: "itemCheck" }, host: { listeners: { "window:mousedown": "handleClick($event)" } }, providers: [valueAccessor], viewQueries: [{ propertyName: "input", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true }, { propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "overlayContent", first: true, predicate: ["overlayContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"autocomplete-wrapper\"\n data-testid=\"autocomplete-wrapper\"\n [class.-closed]=\"closed\"\n [class.-opened]=\"!closed\"\n #wrapper\n (click)=\"handleAutocompleteClick()\"\n>\n <div class=\"autocomplete\" #autocomplete>\n <input\n class=\"search-field\"\n askAutofocus\n *ngIf=\"!closed; else selectionOrPlaceholder\"\n (click)=\"$event.stopPropagation()\"\n [formControl]=\"inputControl\"\n [placeholder]=\"placeholder\"\n />\n <ng-template #selectionOrPlaceholder>\n <ng-container *ngIf=\"showChips\">\n <div\n class=\"chip-list\"\n [class.-collapsed]=\"chipsCollapsed\"\n [ngClass]=\"chipsContainerClasses\"\n >\n <ask-chips\n [style.max-width]=\"chipsCollapsed ? '85%' : '95%'\"\n [showAction]=\"true\"\n *ngFor=\"let option of selectedOptions\"\n (action)=\"handleChipAction(option)\"\n >\n {{ display(option) }}\n </ask-chips>\n <span\n class=\"expand\"\n data-testid=\"see-more\"\n *ngIf=\"showAllSelectionBtn\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n +{{ selection.length - 1 }}\n </span>\n </div>\n </ng-container>\n <span\n class=\"empty-placeholder\"\n data-testid=\"placeholder\"\n *ngIf=\"showPlaceholder\"\n >\n {{\n checkAllValue && allOptionsSelectedText\n ? allOptionsSelectedText\n : placeholder\n }}\n </span>\n </ng-template>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n *ngIf=\"chipsCollapsed\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n <div class=\"actions\" *ngIf=\"showExpandedSelectionActions\">\n <span\n class=\"see-more\"\n data-testid=\"see-less\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n {{ \"SEE_LESS\" | translate }}\n </span>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n</div>\n\n<ng-template #overlayContent>\n <div #list class=\"menu-container\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"!multiple; else multipleSelection\">\n <div class=\"list\" askScroll [askScrollThreshold]=\"50\">\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div\n class=\"option-item\"\n [class.-highlighted]=\"\n selectedOption && selectedOption[valueProp] === option[valueProp]\n \"\n (click)=\"handleOptionSelected(option)\"\n >\n <p class=\"text\">{{ display(option) }}</p>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #multipleSelection>\n <div class=\"option-item\" *ngIf=\"showSelectAllCheckbox\">\n <ask-checkbox\n (valueChange)=\"handleSelectAll($event)\"\n [(ngModel)]=\"checkAllValue\"\n >{{selectAllMessage}}</ask-checkbox\n >\n </div>\n\n <ng-container *ngFor=\"let option of fixedOptionsItems\">\n <div class=\"option-item\">\n <ask-checkbox\n [value]=\"optionsSelected[option[valueProp]]\"\n (valueChange)=\"valueChange(option, $event)\"\n >\n <div class=\"checkbox-content\">\n <img\n data-testid=\"checkbox-item-icon\"\n class=\"icon\"\n *ngIf=\"iconPropReference\"\n [src]=\"option[iconPropReference]\"\n alt=\"\"\n />\n {{ display(option) }}\n </div>\n </ask-checkbox>\n </div>\n </ng-container>\n\n <div\n askScroll\n [askScrollThreshold]=\"50\"\n (scrollEnd)=\"getMoreItems()\"\n data-testid=\"options-form\"\n class=\"options-form\"\n [class.-select-all]=\"showSelectAllCheckbox\"\n >\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div class=\"option-item\">\n <ask-checkbox\n [value]=\"optionsSelected[option[valueProp]]\"\n (valueChange)=\"valueChange(option, $event)\"\n >\n <div class=\"checkbox-content\">\n <img\n data-testid=\"checkbox-item-icon\"\n class=\"icon\"\n *ngIf=\"iconPropReference\"\n [src]=\"option[iconPropReference]\"\n alt=\"\"\n />\n {{ display(option) }}\n </div>\n </ask-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-template>\n <span class=\"empty\" *ngIf=\"!filteredOptions.length\">{{\n emptyMessage | translate\n }}</span>\n </div>\n</ng-template>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis,.option-item>.text,.option-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.autocomplete-wrapper{position:relative;border:1px solid #CBD2D9;border-radius:4px;padding:16px}.autocomplete-wrapper:hover{cursor:pointer}.autocomplete-wrapper>.autocomplete{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper>.actions{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper.-opened{border-bottom-right-radius:0;border-bottom-left-radius:0}.autocomplete-wrapper.-closed{transition:all ease-in-out .3s;min-height:54px}.search-field{font-style:inherit;width:100%;border:none;height:100%}.search-field:focus{border:none;outline:none}.search-field::placeholder{opacity:.6}.option-item{display:flex;flex-direction:row;align-items:center;padding-left:1rem;height:36px;width:100%}.option-item.-highlighted{background-color:#e4e7eb}.option-item:hover{cursor:pointer;background-color:#f5f7fa}.see-more,.chip-list>.expand{color:#616e7c;text-decoration:underline;font-size:.875rem;font-weight:500}.see-more:hover,.chip-list>.expand:hover{cursor:pointer}.chip-list{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:.5rem;flex:1;max-height:calc(120px + 2.5rem);transition:all ease-in-out .3s;max-width:100%}.chip-list.-collapsed{height:24px;overflow:hidden;transition:none}.chip-list.-two{height:calc(48px + 1rem)}.chip-list.-three{height:calc(72px + 1.5rem)}.chip-list.-four{height:calc(96px + 2rem)}.chip-list.-many{overflow-y:auto;height:calc(120px + 2.5rem)}.btn-expand:hover{cursor:pointer}.btn-expand.-disabled{color:#7b8794}.empty-placeholder{font-size:.875rem}.empty-placeholder:hover{cursor:pointer}.list-box,.menu-container>.list,.options-form{min-height:1rem;overflow-y:scroll;max-height:100%}.list-box.-select-all,.menu-container>.-select-all.list,.-select-all.options-form{max-height:180px}.checkbox-content{display:flex;gap:8px;align-items:center}.checkbox-content>.icon{width:16px;height:16px}.menu-container{width:100%;background:white;border:1px solid #CBD2D9;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none;padding:8px 0}.menu-container>.list{max-height:180px}.menu-container>.empty{text-align:center;display:inline-block;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.ChipsComponent, selector: "ask-chips", inputs: ["appearance", "showAction", "size", "color"], outputs: ["action"] }, { kind: "component", type: i6.CheckboxComponent, selector: "ask-checkbox", inputs: ["value", "disabled"], outputs: ["valueChange", "change", "click", "focus"] }, { kind: "directive", type: i7.AutofocusDirective, selector: "[askAutofocus]" }, { kind: "directive", type: i8.ScrollDirective, selector: "[askScroll]", inputs: ["askScrollThreshold"], outputs: ["scrollEnd"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
284
291
|
}
|
285
292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
286
293
|
type: Component,
|
287
|
-
args: [{ selector: 'ask-autocomplete', providers: [valueAccessor], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"autocomplete-wrapper\"\n data-testid=\"autocomplete-wrapper\"\n [class.-closed]=\"closed\"\n [class.-opened]=\"!closed\"\n #wrapper\n (click)=\"handleAutocompleteClick()\"\n>\n <div class=\"autocomplete\" #autocomplete>\n <input\n class=\"search-field\"\n askAutofocus\n *ngIf=\"!closed; else selectionOrPlaceholder\"\n (click)=\"$event.stopPropagation()\"\n [formControl]=\"inputControl\"\n [placeholder]=\"placeholder\"\n />\n <ng-template #selectionOrPlaceholder>\n <ng-container *ngIf=\"showChips\">\n <div\n class=\"chip-list\"\n [class.-collapsed]=\"chipsCollapsed\"\n [ngClass]=\"chipsContainerClasses\"\n >\n <ask-chips\n [style.max-width]=\"chipsCollapsed ? '85%' : '95%'\"\n [showAction]=\"true\"\n *ngFor=\"let option of selectedOptions\"\n (action)=\"handleChipAction(option)\"\n >\n {{ display(option) }}\n </ask-chips>\n <span\n class=\"expand\"\n data-testid=\"see-more\"\n *ngIf=\"showAllSelectionBtn\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n +{{ selection.length - 1 }}\n </span>\n </div>\n </ng-container>\n <span\n class=\"empty-placeholder\"\n data-testid=\"placeholder\"\n *ngIf=\"showPlaceholder\"\n >\n {{\n checkAllValue && allOptionsSelectedText\n ? allOptionsSelectedText\n : placeholder\n }}\n </span>\n </ng-template>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n *ngIf=\"chipsCollapsed\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n <div class=\"actions\" *ngIf=\"showExpandedSelectionActions\">\n <span\n class=\"see-more\"\n data-testid=\"see-less\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n {{ \"SEE_LESS\" | translate }}\n </span>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n</div>\n\n<ng-template #overlayContent>\n <div #list class=\"menu-container\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"!multiple; else multipleSelection\">\n <div class=\"list\" askScroll [askScrollThreshold]=\"50\">\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div\n class=\"option-item\"\n [class.-highlighted]=\"\n selectedOption && selectedOption[valueProp] === option[valueProp]\n \"\n (click)=\"handleOptionSelected(option)\"\n >\n <p class=\"text\">{{ display(option) }}</p>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #multipleSelection>\n <div class=\"option-item\" *ngIf=\"showSelectAllCheckbox\">\n <ask-checkbox\n (valueChange)=\"handleSelectAll($event)\"\n [(ngModel)]=\"checkAllValue\"\n >{{selectAllMessage}}</ask-checkbox\n >\n </div>\n <div\n askScroll\n [askScrollThreshold]=\"50\"\n (scrollEnd)=\"getMoreItems()\"\n data-testid=\"options-form\"\n class=\"options-form\"\n [class.-select-all]=\"showSelectAllCheckbox\"\n >\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div class=\"option-item\">\n <ask-checkbox\n [value]=\"optionsSelected[option[valueProp]]\"\n (valueChange)=\"valueChange(option, $event)\"\n >\n <div class=\"checkbox-content\">\n <img\n data-testid=\"checkbox-item-icon\"\n class=\"icon\"\n *ngIf=\"iconPropReference\"\n [src]=\"option[iconPropReference]\"\n alt=\"\"\n />\n {{ display(option) }}\n </div>\n </ask-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-template>\n <span class=\"empty\" *ngIf=\"!filteredOptions.length\">{{\n emptyMessage | translate\n }}</span>\n </div>\n</ng-template>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis,.option-item>.text,.option-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.autocomplete-wrapper{position:relative;border:1px solid #CBD2D9;border-radius:4px;padding:16px}.autocomplete-wrapper:hover{cursor:pointer}.autocomplete-wrapper>.autocomplete{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper>.actions{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper.-opened{border-bottom-right-radius:0;border-bottom-left-radius:0}.autocomplete-wrapper.-closed{transition:all ease-in-out .3s;min-height:54px}.search-field{font-style:inherit;width:100%;border:none;height:100%}.search-field:focus{border:none;outline:none}.search-field::placeholder{opacity:.6}.option-item{display:flex;flex-direction:row;align-items:center;padding-left:1rem;height:36px;width:100%}.option-item.-highlighted{background-color:#e4e7eb}.option-item:hover{cursor:pointer;background-color:#f5f7fa}.see-more,.chip-list>.expand{color:#616e7c;text-decoration:underline;font-size:.875rem;font-weight:500}.see-more:hover,.chip-list>.expand:hover{cursor:pointer}.chip-list{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:.5rem;flex:1;max-height:calc(120px + 2.5rem);transition:all ease-in-out .3s;max-width:100%}.chip-list.-collapsed{height:24px;overflow:hidden;transition:none}.chip-list.-two{height:calc(48px + 1rem)}.chip-list.-three{height:calc(72px + 1.5rem)}.chip-list.-four{height:calc(96px + 2rem)}.chip-list.-many{overflow-y:auto;height:calc(120px + 2.5rem)}.btn-expand:hover{cursor:pointer}.btn-expand.-disabled{color:#7b8794}.empty-placeholder{font-size:.875rem}.empty-placeholder:hover{cursor:pointer}.list-box,.menu-container>.list,.options-form{min-height:1rem;overflow-y:scroll;max-height:100%}.list-box.-select-all,.menu-container>.-select-all.list,.-select-all.options-form{max-height:80%}.checkbox-content{display:flex;gap:8px;align-items:center}.checkbox-content>.icon{width:16px;height:16px}.menu-container{width:100%;background:white;max-height:165px;border:1px solid #CBD2D9;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none;padding:8px 0}.menu-container>.empty{text-align:center;display:inline-block;width:100%}.menu-container.-multiple{max-height:228px}\n"] }]
|
294
|
+
args: [{ selector: 'ask-autocomplete', providers: [valueAccessor], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"autocomplete-wrapper\"\n data-testid=\"autocomplete-wrapper\"\n [class.-closed]=\"closed\"\n [class.-opened]=\"!closed\"\n #wrapper\n (click)=\"handleAutocompleteClick()\"\n>\n <div class=\"autocomplete\" #autocomplete>\n <input\n class=\"search-field\"\n askAutofocus\n *ngIf=\"!closed; else selectionOrPlaceholder\"\n (click)=\"$event.stopPropagation()\"\n [formControl]=\"inputControl\"\n [placeholder]=\"placeholder\"\n />\n <ng-template #selectionOrPlaceholder>\n <ng-container *ngIf=\"showChips\">\n <div\n class=\"chip-list\"\n [class.-collapsed]=\"chipsCollapsed\"\n [ngClass]=\"chipsContainerClasses\"\n >\n <ask-chips\n [style.max-width]=\"chipsCollapsed ? '85%' : '95%'\"\n [showAction]=\"true\"\n *ngFor=\"let option of selectedOptions\"\n (action)=\"handleChipAction(option)\"\n >\n {{ display(option) }}\n </ask-chips>\n <span\n class=\"expand\"\n data-testid=\"see-more\"\n *ngIf=\"showAllSelectionBtn\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n +{{ selection.length - 1 }}\n </span>\n </div>\n </ng-container>\n <span\n class=\"empty-placeholder\"\n data-testid=\"placeholder\"\n *ngIf=\"showPlaceholder\"\n >\n {{\n checkAllValue && allOptionsSelectedText\n ? allOptionsSelectedText\n : placeholder\n }}\n </span>\n </ng-template>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n *ngIf=\"chipsCollapsed\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n <div class=\"actions\" *ngIf=\"showExpandedSelectionActions\">\n <span\n class=\"see-more\"\n data-testid=\"see-less\"\n (click)=\"handleChipsListActionClick($event)\"\n >\n {{ \"SEE_LESS\" | translate }}\n </span>\n <span\n class=\"btn-expand material-icons\"\n data-testid=\"btn-expand\"\n [class.-disabled]=\"disabled\"\n >\n {{ closed ? \"expand_more\" : \"expand_less\" }}\n </span>\n </div>\n</div>\n\n<ng-template #overlayContent>\n <div #list class=\"menu-container\" [class.-multiple]=\"multiple\">\n <ng-container *ngIf=\"!multiple; else multipleSelection\">\n <div class=\"list\" askScroll [askScrollThreshold]=\"50\">\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div\n class=\"option-item\"\n [class.-highlighted]=\"\n selectedOption && selectedOption[valueProp] === option[valueProp]\n \"\n (click)=\"handleOptionSelected(option)\"\n >\n <p class=\"text\">{{ display(option) }}</p>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #multipleSelection>\n <div class=\"option-item\" *ngIf=\"showSelectAllCheckbox\">\n <ask-checkbox\n (valueChange)=\"handleSelectAll($event)\"\n [(ngModel)]=\"checkAllValue\"\n >{{selectAllMessage}}</ask-checkbox\n >\n </div>\n\n <ng-container *ngFor=\"let option of fixedOptionsItems\">\n <div class=\"option-item\">\n <ask-checkbox\n [value]=\"optionsSelected[option[valueProp]]\"\n (valueChange)=\"valueChange(option, $event)\"\n >\n <div class=\"checkbox-content\">\n <img\n data-testid=\"checkbox-item-icon\"\n class=\"icon\"\n *ngIf=\"iconPropReference\"\n [src]=\"option[iconPropReference]\"\n alt=\"\"\n />\n {{ display(option) }}\n </div>\n </ask-checkbox>\n </div>\n </ng-container>\n\n <div\n askScroll\n [askScrollThreshold]=\"50\"\n (scrollEnd)=\"getMoreItems()\"\n data-testid=\"options-form\"\n class=\"options-form\"\n [class.-select-all]=\"showSelectAllCheckbox\"\n >\n <ng-container *ngFor=\"let option of paginatedFilteredOptions\">\n <div class=\"option-item\">\n <ask-checkbox\n [value]=\"optionsSelected[option[valueProp]]\"\n (valueChange)=\"valueChange(option, $event)\"\n >\n <div class=\"checkbox-content\">\n <img\n data-testid=\"checkbox-item-icon\"\n class=\"icon\"\n *ngIf=\"iconPropReference\"\n [src]=\"option[iconPropReference]\"\n alt=\"\"\n />\n {{ display(option) }}\n </div>\n </ask-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-template>\n <span class=\"empty\" *ngIf=\"!filteredOptions.length\">{{\n emptyMessage | translate\n }}</span>\n </div>\n</ng-template>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis,.option-item>.text,.option-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-in-center{animation:scale-in-center .3s ease-in-out both}@keyframes scale-in-center{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:1}}.scale-out-center{animation:scale-out-center .3s ease-in-out both}@keyframes scale-out-center{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:1}}.ask-tooltip{background-color:#7b8794;color:#fff;padding:4px;border-radius:8px;position:relative}.ask-tooltip>div{text-align:center!important}.ask-tooltip:after{position:absolute;content:\"\";width:10px;height:10px;background-color:inherit}.ask-tooltip.-above{margin-bottom:4px}.ask-tooltip.-above:after{bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-below{margin-top:4px}.ask-tooltip.-below:after{top:-5px;left:50%;transform:translate(-50%) rotate(45deg)}.ask-tooltip.-after,.ask-tooltip.-right{margin-left:4px}.ask-tooltip.-after:after,.ask-tooltip.-right:after{left:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-tooltip.-before,.ask-tooltip.-left{margin-right:4px}.ask-tooltip.-before:after,.ask-tooltip.-left:after{right:-5px;top:50%;transform:translateY(-50%) rotate(45deg)}.ask-button{padding:8px 24px;border-radius:6px;border:none;outline:none;height:48px;font-size:1rem;transition:background-color .1s,box-shadow .1s;cursor:pointer;font-weight:500;background:white;color:var(--grey-500)}.ask-button:not(.-primary,.-secondary){box-shadow:0 1px 2px #2a304229}.ask-button:not(.-primary):hover:not(:disabled){box-shadow:0 0 6px #2a304229}.ask-button:hover:not(:disabled){box-shadow:0 0 6px #ff572466}.ask-button:active:not(:disabled){background-color:#f34915}.ask-button:disabled{cursor:not-allowed;background-color:#9aa5b1}.ask-button.-primary{background:#FF5724;color:#fff}.ask-modal-header{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.ask-modal-body{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;padding:20px 24px;max-height:65vh;display:block}.ask-modal-footer{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.ask-badge{position:relative}.ask-badge>.badge{position:absolute;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);color:#fff;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-radius:50%;box-shadow:0 2px 6px -1px #00000080}.ask-badge>.badge.-primary{--bg-color: var(--asksuite-orange)}.ask-badge>.badge.-secondary{--bg-color: var(--grey-800)}.ask-badge>.badge.-top{top:-10px}.ask-badge>.badge.-bottom{bottom:-10px}.ask-badge>.badge.-left{left:-10px}.ask-badge>.badge.-right{right:-10px}.ask-badge>.badge.-small{width:18px;height:18px;font-size:10px}.ask-badge>.badge.-regular{width:22px;height:22px;font-size:11px}.ask-badge>.badge.-large{width:28px;height:28px;font-size:12px}.ask-dropdown-top-right{margin-left:8px}.ask-dropdown-top-left{margin-right:8px}.ask-dropdown-bottom-right,.ask-dropdown-bottom-left{margin-top:8px}.autocomplete-wrapper{position:relative;border:1px solid #CBD2D9;border-radius:4px;padding:16px}.autocomplete-wrapper:hover{cursor:pointer}.autocomplete-wrapper>.autocomplete{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper>.actions{width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.autocomplete-wrapper.-opened{border-bottom-right-radius:0;border-bottom-left-radius:0}.autocomplete-wrapper.-closed{transition:all ease-in-out .3s;min-height:54px}.search-field{font-style:inherit;width:100%;border:none;height:100%}.search-field:focus{border:none;outline:none}.search-field::placeholder{opacity:.6}.option-item{display:flex;flex-direction:row;align-items:center;padding-left:1rem;height:36px;width:100%}.option-item.-highlighted{background-color:#e4e7eb}.option-item:hover{cursor:pointer;background-color:#f5f7fa}.see-more,.chip-list>.expand{color:#616e7c;text-decoration:underline;font-size:.875rem;font-weight:500}.see-more:hover,.chip-list>.expand:hover{cursor:pointer}.chip-list{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap;gap:.5rem;flex:1;max-height:calc(120px + 2.5rem);transition:all ease-in-out .3s;max-width:100%}.chip-list.-collapsed{height:24px;overflow:hidden;transition:none}.chip-list.-two{height:calc(48px + 1rem)}.chip-list.-three{height:calc(72px + 1.5rem)}.chip-list.-four{height:calc(96px + 2rem)}.chip-list.-many{overflow-y:auto;height:calc(120px + 2.5rem)}.btn-expand:hover{cursor:pointer}.btn-expand.-disabled{color:#7b8794}.empty-placeholder{font-size:.875rem}.empty-placeholder:hover{cursor:pointer}.list-box,.menu-container>.list,.options-form{min-height:1rem;overflow-y:scroll;max-height:100%}.list-box.-select-all,.menu-container>.-select-all.list,.-select-all.options-form{max-height:180px}.checkbox-content{display:flex;gap:8px;align-items:center}.checkbox-content>.icon{width:16px;height:16px}.menu-container{width:100%;background:white;border:1px solid #CBD2D9;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none;padding:8px 0}.menu-container>.list{max-height:180px}.menu-container>.empty{text-align:center;display:inline-block;width:100%}\n"] }]
|
288
295
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i3.TranslateService }]; }, propDecorators: { input: [{
|
289
296
|
type: ViewChild,
|
290
297
|
args: ["autocomplete"]
|
@@ -307,6 +314,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
307
314
|
type: Input
|
308
315
|
}], options: [{
|
309
316
|
type: Input
|
317
|
+
}], fixedOptions: [{
|
318
|
+
type: Input
|
310
319
|
}], placeholder: [{
|
311
320
|
type: Input
|
312
321
|
}], emptyMessage: [{
|
@@ -325,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
325
334
|
type: HostListener,
|
326
335
|
args: ["window:mousedown", ['$event']]
|
327
336
|
}] } });
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUlOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9DLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBQyxZQUFZLEVBQWEsR0FBRyxFQUFnQixHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBRzlELE1BQU0sYUFBYSxHQUFhO0lBQzlCLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsS0FBSyxFQUFFLElBQUk7SUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO0NBQ3JELENBQUE7QUFTRCxNQUFNLE9BQU8scUJBQXFCO0lBMkVoQyxZQUFvQixXQUF3QixFQUN4QixPQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsTUFBeUIsRUFDekIsU0FBMkI7UUFKM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7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QUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixTQUFTO3NCQURSLE1BQU07Z0JBc0lQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBtYXAsIFN1YnNjcmlwdGlvbiwgdGFwfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtPdmVybGF5LCBPdmVybGF5UmVmfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7VGVtcGxhdGVQb3J0YWx9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmNvbnN0IHZhbHVlQWNjZXNzb3I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgbXVsdGk6IHRydWUsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9jb21wbGV0ZUNvbXBvbmVudCksXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Fzay1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3ZhbHVlQWNjZXNzb3JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcblxuICBAVmlld0NoaWxkKFwiYXV0b2NvbXBsZXRlXCIpIGlucHV0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoXCJsaXN0XCIpIGxpc3Q6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcbiAgQFZpZXdDaGlsZChcIndyYXBwZXJcIikgd3JhcHBlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKCdvdmVybGF5Q29udGVudCcpIG92ZXJsYXlDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgcHJvdGVjdGVkIGlucHV0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcIlwiKVxuICBwcm90ZWN0ZWQgZmlsdGVyZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwcm90ZWN0ZWQgcGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb24/OiBhbnk7XG4gIHByb3RlY3RlZCBzZWxlY3Rpb246IGFueVtdID0gW107XG4gIHByb3RlY3RlZCBjbG9zZWQgPSB0cnVlO1xuICBwcm90ZWN0ZWQgY2hpcHNDb2xsYXBzZWQgPSB0cnVlXG4gIHByb3RlY3RlZCBjaGVja0FsbFZhbHVlID0gZmFsc2VcbiAgcHJvdGVjdGVkIGRpc2FibGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93Q2hpcHMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dBbGxTZWxlY3Rpb25CdG4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dQbGFjZWhvbGRlciA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0V4cGFuZGVkU2VsZWN0aW9uQWN0aW9ucyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd1NlbGVjdEFsbENoZWNrYm94ID0gZmFsc2U7XG4gIHByb3RlY3RlZCBjaGlwc0NvbnRhaW5lckNsYXNzZXMgPSB7XG4gICAgXCItdHdvXCI6IGZhbHNlLFxuICAgIFwiLXRocmVlXCI6IGZhbHNlLFxuICAgIFwiLWZvdXJcIjogZmFsc2UsXG4gICAgXCItbWFueVwiOiBmYWxzZVxuICB9O1xuICBwcm90ZWN0ZWQgb3B0aW9uc1NlbGVjdGVkOiB7W2tleTogc3RyaW5nIHwgbnVtYmVyXTogYm9vbGVhbn0gPSB7fVxuXG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWw8YW55PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfZGVzdHJveSA9IGluamVjdChEZXN0cm95UmVmKVxuICBwcml2YXRlIHJlYWRvbmx5IElURU1TX1BFUl9QQUdFID0gNDBcbiAgcHJpdmF0ZSBfcGFnZU51bWJlciA9IDFcbiAgX3NlbGVjdEFsbE1lc3NhZ2UgPSAnJztcblxuICBwcml2YXRlIHNjcm9sbFN1Yj86IFN1YnNjcmlwdGlvbjtcblxuXG4gIEBJbnB1dCgpXG4gIGZpbHRlckZuPzogKGl0ZW06IHN0cmluZykgPT4gYW55W107XG5cbiAgQElucHV0KClcbiAgZGlzcGxheUZuPzogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgdmFsdWVQcm9wOiBzdHJpbmcgPSAnJ1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IGFueVtdID0gW11cblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlciA9ICcnXG5cbiAgQElucHV0KClcbiAgZW1wdHlNZXNzYWdlID0gJ05PX09QVElPTlMnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdEFsbCA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgYWxsT3B0aW9uc1NlbGVjdGVkVGV4dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0QWxsTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ1NFTEVDVF9BTEwnKTtcblxuICBASW5wdXQoKVxuICBpY29uUHJvcFJlZmVyZW5jZT86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgaXRlbUNoZWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjaGFuZ2U6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2hlY2tBbGxWYWx1ZSA9IHRoaXMuaXNBbGxPcHRpb25zU2VsZWN0ZWRcbiAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlKCk7XG4gIH1cblxuICBnZXQgaXNBbGxPcHRpb25zU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgIHRoaXMuX3BhZ2VOdW1iZXIgPSAxXG4gICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdXG5cbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gY2hhbmdlc1snb3B0aW9ucyddLmN1cnJlbnRWYWx1ZVxuICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUlucHV0Q2hhbmdlKCkge1xuICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9wYWdlTnVtYmVyID0gMVxuICAgICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdXG4gICAgICB9KSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLmZpbHRlckZuID8gdGhpcy5maWx0ZXJGbih2YWx1ZSB8fCAnJykgOiBbXSlcbiAgICApLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IGl0ZW1zXG4gICAgICB0aGlzLmdldE1vcmVJdGVtcygpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHZhbHVlczogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHZhbHVlc1xuICAgIHRoaXMuY2hlY2tBbGxWYWx1ZSA9IHRoaXMuaXNBbGxPcHRpb25zU2VsZWN0ZWRcblxuICAgIGlmICghdGhpcy5jaGlwc0NvbGxhcHNlZCkge1xuICAgICAgdGhpcy5jaGlwc0NvbGxhcHNlZCA9IHRoaXMuc2VsZWN0aW9uLmxlbmd0aCA8IDJcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKCkge1xuICAgIHRoaXMuY2hpcHNDb250YWluZXJDbGFzc2VzID0ge1xuICAgICAgXCItdHdvXCI6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMixcbiAgICAgIFwiLXRocmVlXCI6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PT0gMyxcbiAgICAgIFwiLWZvdXJcIjogdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSA0LFxuICAgICAgXCItbWFueVwiOiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPj0gNVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9wdGlvblNlbGVjdGVkKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBpdGVtO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbilcbiAgICB0aGlzLmhpZGVPcHRpb25zKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBoYW5kbGVBdXRvY29tcGxldGVDbGljayhldmVudD86IEV2ZW50KSB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNoaXBzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2VkXG4gICAgICAgID8gdGhpcy5zaG93T3B0aW9ucygpXG4gICAgICAgIDogdGhpcy5oaWRlT3B0aW9ucygpXG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDaGlwc0xpc3RBY3Rpb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHRoaXMuY2hpcHNDb2xsYXBzZWQgPSAhdGhpcy5jaGlwc0NvbGxhcHNlZDtcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKVxuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuXG4gIHNob3dPcHRpb25zKCkge1xuICAgIHRoaXMuY2xvc2VkID0gZmFsc2VcbiAgICBpZiAodGhpcy53cmFwcGVyKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5nZXRPdmVybGF5Q29uZmlnKHRoaXMud3JhcHBlcilcblxuICAgICAgdGhpcy5fcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMub3ZlcmxheUNvbnRlbnQhLCB0aGlzLnZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG5cbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICBpZiAodGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB0aGlzLmdldE1vcmVJdGVtcygpXG4gIH1cblxuICBwcml2YXRlIGdldE92ZXJsYXlDb25maWcod3JhcHBlcjogRWxlbWVudFJlZikge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIHdpZHRoOiB3cmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8od3JhcHBlci5uYXRpdmVFbGVtZW50KVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbe1xuICAgICAgICAgIG9yaWdpblg6IFwic3RhcnRcIixcbiAgICAgICAgICBvcmlnaW5ZOiBcImJvdHRvbVwiLFxuICAgICAgICAgIG92ZXJsYXlYOiBcInN0YXJ0XCIsXG4gICAgICAgICAgb3ZlcmxheVk6IFwidG9wXCJcbiAgICAgICAgfV0pXG4gICAgfSk7XG4gIH1cblxuICBoaWRlT3B0aW9ucygpIHtcbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgdGhpcy5jaGlwc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgICB0aGlzLl9wYWdlTnVtYmVyID0gMTtcbiAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMuc2Nyb2xsU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzptb3VzZWRvd25cIiwgWyckZXZlbnQnXSlcbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5jbG9zZWRcbiAgICAgICYmICF0aGlzLndyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICAgJiYgIXRoaXMubGlzdD8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmhpZGVPcHRpb25zKClcbiAgICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWxlY3RlZE9wdGlvbnMoKTogYW55W10ge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gPyBbdGhpcy5zZWxlY3RlZE9wdGlvbl0gOiBbXVxuXG4gICAgcmV0dXJuIHRoaXMuY2hpcHNDb2xsYXBzZWRcbiAgICAgID8gdGhpcy5zZWxlY3Rpb24uc2xpY2UoMCwgMSlcbiAgICAgIDogdGhpcy5zZWxlY3Rpb247XG4gIH1cblxuICBoYW5kbGVTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbikge1xuICAgIHRoaXMuc2VsZWN0QWxsT3B0aW9ucyhjaGVja2VkKTtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IGNoZWNrZWQgPyB0aGlzLm9wdGlvbnMgOiBbXVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3Rpb24pXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKClcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKClcbiAgICB0aGlzLml0ZW1DaGVjay5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlKG9wdGlvbjogYW55LCB2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMub3B0aW9uc1NlbGVjdGVkW29wdGlvblt0aGlzLnZhbHVlUHJvcF1dID0gdmFsdWVcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMub3B0aW9ucy5maWx0ZXIobyA9PiB0aGlzLm9wdGlvbnNTZWxlY3RlZFtvW3RoaXMudmFsdWVQcm9wXV0pXG4gICAgdGhpcy5jaGVja0FsbFZhbHVlID0gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGlvbilcbiAgICB0aGlzLm9uVG91Y2hlZCgpXG5cbiAgICB0aGlzLnVwZGF0ZUNoaXBzQ29udGFpbmVyQ2xhc3NlcygpXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuaXRlbUNoZWNrLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICB9XG5cbiAgc2VsZWN0QWxsT3B0aW9ucyhzZWxlY3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMub3B0aW9uc1NlbGVjdGVkID0gdGhpcy5vcHRpb25zXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgYWNjW2N1cnJbdGhpcy52YWx1ZVByb3BdXSA9IHNlbGVjdGVkXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSlcbiAgfVxuXG4gIGhhbmRsZUNoaXBBY3Rpb24ob3B0aW9uOiBhbnkpIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5vcHRpb25zU2VsZWN0ZWRbb3B0aW9uW3RoaXMudmFsdWVQcm9wXV0gPSBmYWxzZVxuICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbi5maWx0ZXIoc2VsZWN0ZWRPcHRpb24gPT5cbiAgICAgICAgc2VsZWN0ZWRPcHRpb25bdGhpcy52YWx1ZVByb3BdICE9PSBvcHRpb25bdGhpcy52YWx1ZVByb3BdKVxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLm9uQ2hhbmdlKFtdKVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkaXNwbGF5KG9wdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheUZuICYmIHRoaXMuZGlzcGxheUZuKG9wdGlvbilcbiAgfVxuXG4gIGdldE1vcmVJdGVtcygpIHtcbiAgICBjb25zdCBzb3J0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJlZE9wdGlvbnNdO1xuXG4gICAgdGhpcy5zb3J0U2VsZWN0ZWRGaXJzdChzb3J0ZWRGaWx0ZXJlZE9wdGlvbnMsIHRoaXMuc2VsZWN0aW9uLCB0aGlzLnZhbHVlUHJvcClcbiAgICBjb25zdCBuZXh0UGFnZUl0ZW1zID0gc29ydGVkRmlsdGVyZWRPcHRpb25zXG4gICAgICAuc2xpY2UoXG4gICAgICAgIHRoaXMuSVRFTVNfUEVSX1BBR0UgKiAodGhpcy5fcGFnZU51bWJlciAtIDEpLFxuICAgICAgICB0aGlzLklURU1TX1BFUl9QQUdFICogdGhpcy5fcGFnZU51bWJlclxuICAgICAgKTtcblxuICAgIGlmIChuZXh0UGFnZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMgPSBbLi4udGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMsIC4uLm5leHRQYWdlSXRlbXNdO1xuICAgICAgdGhpcy5fcGFnZU51bWJlciArPSAxXG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgc29ydFNlbGVjdGVkRmlyc3QoaXRlbXM6IEFycmF5PGFueT4sIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT4sIHByb3A6IHN0cmluZykge1xuICAgIGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFJc1NlbGVjdGVkID0gc2VsZWN0ZWRJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbVtwcm9wXSA9PT0gYVtwcm9wXSk7XG4gICAgICBjb25zdCBiSXNTZWxlY3RlZCA9IHNlbGVjdGVkSXRlbXMuc29tZShpdGVtID0+IGl0ZW1bcHJvcF0gPT09IGJbcHJvcF0pO1xuXG4gICAgICBpZiAoYUlzU2VsZWN0ZWQgJiYgIWJJc1NlbGVjdGVkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSBpZiAoIWFJc1NlbGVjdGVkICYmIGJJc1NlbGVjdGVkKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLmlzQWxsT3B0aW9uc1NlbGVjdGVkXG4gICAgdGhpcy5zaG93Q2hpcHMgPSBCb29sZWFuKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkgJiYgdGhpcy5jbG9zZWQgJiYgKFxuICAgICAgIXRoaXMubXVsdGlwbGUgfHwgIXRoaXMuY2hlY2tBbGxWYWx1ZSB8fCAodGhpcy5jaGVja0FsbFZhbHVlICYmICFCb29sZWFuKHRoaXMuYWxsT3B0aW9uc1NlbGVjdGVkVGV4dCkpXG4gICAgKTtcbiAgICB0aGlzLnNob3dBbGxTZWxlY3Rpb25CdG4gPSB0aGlzLm11bHRpcGxlICYmIEJvb2xlYW4odGhpcy5zZWxlY3Rpb24ubGVuZ3RoID4gMSkgJiYgdGhpcy5jaGlwc0NvbGxhcHNlZDtcbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRoaXMuY2xvc2VkICYmIChcbiAgICAgICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggfHwgKHRoaXMuY2hlY2tBbGxWYWx1ZSAmJiBCb29sZWFuKHRoaXMuYWxsT3B0aW9uc1NlbGVjdGVkVGV4dCkgJiYgdGhpcy5tdWx0aXBsZSlcbiAgICApO1xuICAgIHRoaXMuc2hvd0V4cGFuZGVkU2VsZWN0aW9uQWN0aW9ucyA9IHRoaXMubXVsdGlwbGUgJiYgIXRoaXMuY2hpcHNDb2xsYXBzZWQ7XG4gICAgdGhpcy5zaG93U2VsZWN0QWxsQ2hlY2tib3ggPSBCb29sZWFuKHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zLmxlbmd0aCkgJiYgdGhpcy5zZWxlY3RBbGw7XG4gIH1cblxuICAvLyBDb250cm9sIFZhbHVlIEFjY2Vzc29yXG5cbiAgd3JpdGVWYWx1ZShvYmo6IGFueVtdIHwgYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBbXTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIHRoaXMub3B0aW9uc1NlbGVjdGVkID0ge31cbiAgICAgIG9iai5mb3JFYWNoKG9wdGlvbiA9PiB0aGlzLm9wdGlvbnNTZWxlY3RlZFtvcHRpb25bdGhpcy52YWx1ZVByb3BdXSA9IHRydWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmpcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2Uob2JqKVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge31cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiXG4gIGRhdGEtdGVzdGlkPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXJcIlxuICBbY2xhc3MuLWNsb3NlZF09XCJjbG9zZWRcIlxuICBbY2xhc3MuLW9wZW5lZF09XCIhY2xvc2VkXCJcbiAgI3dyYXBwZXJcbiAgKGNsaWNrKT1cImhhbmRsZUF1dG9jb21wbGV0ZUNsaWNrKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlXCIgI2F1dG9jb21wbGV0ZT5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwic2VhcmNoLWZpZWxkXCJcbiAgICAgIGFza0F1dG9mb2N1c1xuICAgICAgKm5nSWY9XCIhY2xvc2VkOyBlbHNlIHNlbGVjdGlvbk9yUGxhY2Vob2xkZXJcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRDb250cm9sXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgLz5cbiAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGlvbk9yUGxhY2Vob2xkZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NoaXBzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNoaXAtbGlzdFwiXG4gICAgICAgICAgW2NsYXNzLi1jb2xsYXBzZWRdPVwiY2hpcHNDb2xsYXBzZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImNoaXBzQ29udGFpbmVyQ2xhc3Nlc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8YXNrLWNoaXBzXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNoaXBzQ29sbGFwc2VkID8gJzg1JScgOiAnOTUlJ1wiXG4gICAgICAgICAgICBbc2hvd0FjdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWRPcHRpb25zXCJcbiAgICAgICAgICAgIChhY3Rpb24pPVwiaGFuZGxlQ2hpcEFjdGlvbihvcHRpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkaXNwbGF5KG9wdGlvbikgfX1cbiAgICAgICAgICA8L2Fzay1jaGlwcz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJleHBhbmRcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtbW9yZVwiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dBbGxTZWxlY3Rpb25CdG5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNoaXBzTGlzdEFjdGlvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgICt7eyBzZWxlY3Rpb24ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiZW1wdHktcGxhY2Vob2xkZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXJcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIGNoZWNrQWxsVmFsdWUgJiYgYWxsT3B0aW9uc1NlbGVjdGVkVGV4dFxuICAgICAgICAgICAgPyBhbGxPcHRpb25zU2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICA6IHBsYWNlaG9sZGVyXG4gICAgICAgIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJidG4tZXhwYW5kIG1hdGVyaWFsLWljb25zXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwiYnRuLWV4cGFuZFwiXG4gICAgICBbY2xhc3MuLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICpuZ0lmPVwiY2hpcHNDb2xsYXBzZWRcIlxuICAgID5cbiAgICAgIHt7IGNsb3NlZCA/IFwiZXhwYW5kX21vcmVcIiA6IFwiZXhwYW5kX2xlc3NcIiB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCJzaG93RXhwYW5kZWRTZWxlY3Rpb25BY3Rpb25zXCI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwic2VlLW1vcmVcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtbGVzc1wiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2hpcHNMaXN0QWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAge3sgXCJTRUVfTEVTU1wiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImJ0bi1leHBhbmQgbWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJidG4tZXhwYW5kXCJcbiAgICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIHt7IGNsb3NlZCA/IFwiZXhwYW5kX21vcmVcIiA6IFwiZXhwYW5kX2xlc3NcIiB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNvdmVybGF5Q29udGVudD5cbiAgPGRpdiAjbGlzdCBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCIgW2NsYXNzLi1tdWx0aXBsZV09XCJtdWx0aXBsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGU7IGVsc2UgbXVsdGlwbGVTZWxlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0XCIgYXNrU2Nyb2xsIFthc2tTY3JvbGxUaHJlc2hvbGRdPVwiNTBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBhZ2luYXRlZEZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLi1oaWdobGlnaHRlZF09XCJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gJiYgc2VsZWN0ZWRPcHRpb25bdmFsdWVQcm9wXSA9PT0gb3B0aW9uW3ZhbHVlUHJvcF1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCI+e3sgZGlzcGxheShvcHRpb24pIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlwbGVTZWxlY3Rpb24+XG4gICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWl0ZW1cIiAqbmdJZj1cInNob3dTZWxlY3RBbGxDaGVja2JveFwiPlxuICAgICAgICA8YXNrLWNoZWNrYm94XG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbCgkZXZlbnQpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNrQWxsVmFsdWVcIlxuICAgICAgICAgID57e3NlbGVjdEFsbE1lc3NhZ2V9fTwvYXNrLWNoZWNrYm94XG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBhc2tTY3JvbGxcbiAgICAgICAgW2Fza1Njcm9sbFRocmVzaG9sZF09XCI1MFwiXG4gICAgICAgIChzY3JvbGxFbmQpPVwiZ2V0TW9yZUl0ZW1zKClcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9wdGlvbnMtZm9ybVwiXG4gICAgICAgIGNsYXNzPVwib3B0aW9ucy1mb3JtXCJcbiAgICAgICAgW2NsYXNzLi1zZWxlY3QtYWxsXT1cInNob3dTZWxlY3RBbGxDaGVja2JveFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxhc2stY2hlY2tib3hcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnNTZWxlY3RlZFtvcHRpb25bdmFsdWVQcm9wXV1cIlxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2Uob3B0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNoZWNrYm94LWl0ZW0taWNvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uUHJvcFJlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cIm9wdGlvbltpY29uUHJvcFJlZmVyZW5jZV1cIlxuICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHt7IGRpc3BsYXkob3B0aW9uKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXNrLWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPHNwYW4gY2xhc3M9XCJlbXB0eVwiICpuZ0lmPVwiIWZpbHRlcmVkT3B0aW9ucy5sZW5ndGhcIj57e1xuICAgICAgZW1wdHlNZXNzYWdlIHwgdHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUlOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9DLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBQyxZQUFZLEVBQWEsR0FBRyxFQUFnQixHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBRzlELE1BQU0sYUFBYSxHQUFhO0lBQzlCLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsS0FBSyxFQUFFLElBQUk7SUFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO0NBQ3JELENBQUE7QUFTRCxNQUFNLE9BQU8scUJBQXFCO0lBK0VoQyxZQUFvQixXQUF3QixFQUN4QixPQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsTUFBeUIsRUFDekIsU0FBMkI7UUFKM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBNUVyQyxpQkFBWSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2xDLHNCQUFpQixHQUFVLEVBQUUsQ0FBQztRQUM5QixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1Qiw2QkFBd0IsR0FBVSxFQUFFLENBQUM7UUFFckMsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUN0QixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsbUJBQWMsR0FBRyxJQUFJLENBQUE7UUFDckIsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFDckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixpQ0FBNEIsR0FBRyxLQUFLLENBQUM7UUFDckMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLDBCQUFxQixHQUFHO1lBQ2hDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUNRLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQTtRQUl6RCxhQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3BCLG1CQUFjLEdBQUcsRUFBRSxDQUFBO1FBQzVCLGdCQUFXLEdBQUcsQ0FBQyxDQUFBO1FBQ3ZCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQVl2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLGNBQVMsR0FBVyxFQUFFLENBQUE7UUFHdEIsWUFBTyxHQUFVLEVBQUUsQ0FBQTtRQUduQixpQkFBWSxHQUFVLEVBQUUsQ0FBQTtRQUd4QixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUdoQixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUc1QixjQUFTLEdBQUcsS0FBSyxDQUFBO1FBR2pCLDJCQUFzQixHQUFrQixJQUFJLENBQUM7UUFHN0MscUJBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFNeEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUErUS9CLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBTXpCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUE7SUE5UXBCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUE7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtJQUN0RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUE7WUFFbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWTtpQkFDbkQsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9FLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1NBQ3hCO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2pDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDakMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUE7WUFDcEIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQTtRQUNwQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzlELENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1lBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNyQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFhO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFBO1FBRTlDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRztZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUMxQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQztTQUMxQyxDQUFBO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQWE7UUFDbkMsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNO2dCQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRVMsMEJBQTBCLENBQUMsS0FBWTtRQUMvQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFdEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1NBQy9FO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3JFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFtQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDeEMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzFELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2lCQUN0QyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2lCQUMxQyxhQUFhLENBQUMsQ0FBQztvQkFDZCxPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLFFBQVEsRUFBRSxPQUFPO29CQUNqQixRQUFRLEVBQUUsS0FBSztpQkFDaEIsQ0FBQyxDQUFDO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFBO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUdELFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixJQUNFLENBQUMsSUFBSSxDQUFDLE1BQU07ZUFDVCxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2VBQ25ELENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUM1QjtJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBRTNFLE9BQU8sSUFBSSxDQUFDLGNBQWM7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVcsRUFBRSxLQUFjO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO1FBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUVoQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBaUI7UUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTzthQUNoQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDcEIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUE7WUFDcEMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBZ0MsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUN0RCxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtZQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUM5QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtTQUNsQjtRQUVELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM3RSxNQUFNLGFBQWEsR0FBRyxxQkFBcUI7YUFDeEMsS0FBSyxDQUNKLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3ZDLENBQUM7UUFFSixJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQTtTQUN0QjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsYUFBeUIsRUFBRSxJQUFZO1FBQzFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2RSxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRXZFLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMvQixPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7aUJBQU0sSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLENBQUM7YUFDVjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FDdEUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FDdkcsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUNwQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUM5RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDL0YsQ0FBQztJQUVELHlCQUF5QjtJQUV6QixVQUFVLENBQUMsR0FBZ0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUE7WUFDekIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1NBQzNFO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQTtTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDaEM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFJRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzhHQTFXVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixnZ0JBSHJCLENBQUMsYUFBYSxDQUFDLDZaQ3JDNUIscWhLQWlLQTs7MkZEekhhLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxrQkFBa0IsYUFHakIsQ0FBQyxhQUFhLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTtzTkFJcEIsS0FBSztzQkFBL0IsU0FBUzt1QkFBQyxjQUFjO2dCQUNOLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTTtnQkFDSyxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ1MsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBb0MzQixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsTUFBTTtnQkE0SVAsV0FBVztzQkFEVixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBmcm9tRXZlbnQsIG1hcCwgU3Vic2NyaXB0aW9uLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge092ZXJsYXksIE92ZXJsYXlSZWZ9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtUZW1wbGF0ZVBvcnRhbH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgdmFsdWVBY2Nlc3NvcjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBtdWx0aTogdHJ1ZSxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXNrLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbdmFsdWVBY2Nlc3Nvcl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuXG4gIEBWaWV3Q2hpbGQoXCJhdXRvY29tcGxldGVcIikgaW5wdXQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcbiAgQFZpZXdDaGlsZChcImxpc3RcIikgbGlzdDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKFwid3JhcHBlclwiKSB3cmFwcGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlDb250ZW50Jykgb3ZlcmxheUNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBwcm90ZWN0ZWQgaW5wdXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiXCIpXG4gIHByb3RlY3RlZCBmaXhlZE9wdGlvbnNJdGVtczogYW55W10gPSBbXTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHJvdGVjdGVkIHBhZ2luYXRlZEZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9uPzogYW55O1xuICBwcm90ZWN0ZWQgc2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xuICBwcm90ZWN0ZWQgY2xvc2VkID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIGNoaXBzQ29sbGFwc2VkID0gdHJ1ZVxuICBwcm90ZWN0ZWQgY2hlY2tBbGxWYWx1ZSA9IGZhbHNlXG4gIHByb3RlY3RlZCBkaXNhYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0NoaXBzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93QWxsU2VsZWN0aW9uQnRuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93UGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dFeHBhbmRlZFNlbGVjdGlvbkFjdGlvbnMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dTZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY2hpcHNDb250YWluZXJDbGFzc2VzID0ge1xuICAgIFwiLXR3b1wiOiBmYWxzZSxcbiAgICBcIi10aHJlZVwiOiBmYWxzZSxcbiAgICBcIi1mb3VyXCI6IGZhbHNlLFxuICAgIFwiLW1hbnlcIjogZmFsc2VcbiAgfTtcbiAgcHJvdGVjdGVkIG9wdGlvbnNTZWxlY3RlZDoge1trZXk6IHN0cmluZyB8IG51bWJlcl06IGJvb2xlYW59ID0ge31cblxuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9wb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBpbmplY3QoRGVzdHJveVJlZilcbiAgcHJpdmF0ZSByZWFkb25seSBJVEVNU19QRVJfUEFHRSA9IDQwXG4gIHByaXZhdGUgX3BhZ2VOdW1iZXIgPSAxXG4gIF9zZWxlY3RBbGxNZXNzYWdlID0gJyc7XG5cbiAgcHJpdmF0ZSBzY3JvbGxTdWI/OiBTdWJzY3JpcHRpb247XG5cblxuICBASW5wdXQoKVxuICBmaWx0ZXJGbj86IChpdGVtOiBzdHJpbmcpID0+IGFueVtdO1xuXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlGbj86IChpdGVtOiBhbnkpID0+IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlUHJvcDogc3RyaW5nID0gJydcblxuICBASW5wdXQoKVxuICBvcHRpb25zOiBhbnlbXSA9IFtdXG5cbiAgQElucHV0KClcbiAgZml4ZWRPcHRpb25zOiBhbnlbXSA9IFtdXG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIgPSAnJ1xuXG4gIEBJbnB1dCgpXG4gIGVtcHR5TWVzc2FnZSA9ICdOT19PUFRJT05TJztcblxuICBASW5wdXQoKVxuICBzZWxlY3RBbGwgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGFsbE9wdGlvbnNTZWxlY3RlZFRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdEFsbE1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTRUxFQ1RfQUxMJyk7XG5cbiAgQElucHV0KClcbiAgaWNvblByb3BSZWZlcmVuY2U/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIGl0ZW1DaGVjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLmlzQWxsT3B0aW9uc1NlbGVjdGVkXG4gICAgdGhpcy5jaGVja0ZpeGVkT3B0aW9ucygpO1xuICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGaXhlZE9wdGlvbnMoKSB7XG4gICAgdGhpcy5maXhlZE9wdGlvbnNJdGVtcyA9IHRoaXMub3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IHRoaXMuZml4ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvblt0aGlzLnZhbHVlUHJvcF0pKTtcbiAgfVxuXG4gIGdldCBpc0FsbE9wdGlvbnNTZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgdGhpcy5fcGFnZU51bWJlciA9IDFcbiAgICAgIHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zID0gW11cblxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlXG4gICAgICAgIC5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiAhdGhpcy5maXhlZE9wdGlvbnMuaW5jbHVkZXMob3B0aW9uW3RoaXMudmFsdWVQcm9wXSkpXG4gICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSW5wdXRDaGFuZ2UoKSB7XG4gICAgdGhpcy5pbnB1dENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3BhZ2VOdW1iZXIgPSAxXG4gICAgICAgIHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zID0gW11cbiAgICAgIH0pLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuZmlsdGVyRm4gPyB0aGlzLmZpbHRlckZuKHZhbHVlIHx8ICcnKSA6IFtdKVxuICAgICkuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gaXRlbXNcbiAgICAgIHRoaXMuZ2V0TW9yZUl0ZW1zKClcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UodmFsdWVzOiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gdmFsdWVzXG4gICAgdGhpcy5jaGVja0FsbFZhbHVlID0gdGhpcy5pc0FsbE9wdGlvbnNTZWxlY3RlZFxuXG4gICAgaWYgKCF0aGlzLmNoaXBzQ29sbGFwc2VkKSB7XG4gICAgICB0aGlzLmNoaXBzQ29sbGFwc2VkID0gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoIDwgMlxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGlwc0NvbnRhaW5lckNsYXNzZXMoKSB7XG4gICAgdGhpcy5jaGlwc0NvbnRhaW5lckNsYXNzZXMgPSB7XG4gICAgICBcIi10d29cIjogdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAyLFxuICAgICAgXCItdGhyZWVcIjogdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAzLFxuICAgICAgXCItZm91clwiOiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDQsXG4gICAgICBcIi1tYW55XCI6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+PSA1XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlT3B0aW9uU2VsZWN0ZWQoaXRlbTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IGl0ZW07XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9uKVxuICAgIHRoaXMuaGlkZU9wdGlvbnMoKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGhhbmRsZUF1dG9jb21wbGV0ZUNsaWNrKGV2ZW50PzogRXZlbnQpIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2hpcHNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZWRcbiAgICAgICAgPyB0aGlzLnNob3dPcHRpb25zKClcbiAgICAgICAgOiB0aGlzLmhpZGVPcHRpb25zKClcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy51cGRhdGVDaGlwc0NvbnRhaW5lckNsYXNzZXMoKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNoaXBzTGlzdEFjdGlvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgdGhpcy5jaGlwc0NvbGxhcHNlZCA9ICF0aGlzLmNoaXBzQ29sbGFwc2VkO1xuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpXG4gICAgdGhpcy51cGRhdGVDaGlwc0NvbnRhaW5lckNsYXNzZXMoKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgc2hvd09wdGlvbnMoKSB7XG4gICAgdGhpcy5jbG9zZWQgPSBmYWxzZVxuICAgIGlmICh0aGlzLndyYXBwZXIpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLmdldE92ZXJsYXlDb25maWcodGhpcy53cmFwcGVyKVxuXG4gICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5vdmVybGF5Q29udGVudCEsIHRoaXMudmlld0NvbnRhaW5lclJlZilcbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmPy5hdHRhY2godGhpcy5fcG9ydGFsKTtcblxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIGlmICh0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDApIHRoaXMuZ2V0TW9yZUl0ZW1zKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyh3cmFwcGVyOiBFbGVtZW50UmVmKSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgd2lkdGg6IHdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh3cmFwcGVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFt7XG4gICAgICAgICAgb3JpZ2luWDogXCJzdGFydFwiLFxuICAgICAgICAgIG9yaWdpblk6IFwiYm90dG9tXCIsXG4gICAgICAgICAgb3ZlcmxheVg6IFwic3RhcnRcIixcbiAgICAgICAgICBvdmVybGF5WTogXCJ0b3BcIlxuICAgICAgICB9XSlcbiAgICB9KTtcbiAgfVxuXG4gIGhpZGVPcHRpb25zKCkge1xuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNoaXBzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMuX3BhZ2VOdW1iZXIgPSAxO1xuICAgIHRoaXMucGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zID0gW107XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gICAgdGhpcy5zY3JvbGxTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93Om1vdXNlZG93blwiLCBbJyRldmVudCddKVxuICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmNsb3NlZFxuICAgICAgJiYgIXRoaXMud3JhcHBlcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAmJiAhdGhpcy5saXN0Py5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMoKVxuICAgICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkT3B0aW9ucygpOiBhbnlbXSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbiA/IFt0aGlzLnNlbGVjdGVkT3B0aW9uXSA6IFtdXG5cbiAgICByZXR1cm4gdGhpcy5jaGlwc0NvbGxhcHNlZFxuICAgICAgPyB0aGlzLnNlbGVjdGlvbi5zbGljZSgwLCAxKVxuICAgICAgOiB0aGlzLnNlbGVjdGlvbjtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEFsbChjaGVja2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxPcHRpb25zKGNoZWNrZWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gY2hlY2tlZCA/IHRoaXMub3B0aW9ucyA6IFtdXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGlvbilcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKVxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMuaXRlbUNoZWNrLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2Uob3B0aW9uOiBhbnksIHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcHRpb25zU2VsZWN0ZWRbb3B0aW9uW3RoaXMudmFsdWVQcm9wXV0gPSB2YWx1ZVxuICAgIHRoaXMuc2VsZWN0aW9uID0gdGhpcy5vcHRpb25zLmZpbHRlcihvID0+IHRoaXMub3B0aW9uc1NlbGVjdGVkW29bdGhpcy52YWx1ZVByb3BdXSlcbiAgICB0aGlzLmNoZWNrQWxsVmFsdWUgPSB0aGlzLnNlbGVjdGlvbi5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGhcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0aW9uKVxuICAgIHRoaXMub25Ub3VjaGVkKClcblxuICAgIHRoaXMudXBkYXRlQ2hpcHNDb250YWluZXJDbGFzc2VzKClcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5pdGVtQ2hlY2suZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gIH1cblxuICBzZWxlY3RBbGxPcHRpb25zKHNlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcHRpb25zU2VsZWN0ZWQgPSB0aGlzLm9wdGlvbnNcbiAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICBhY2NbY3Vyclt0aGlzLnZhbHVlUHJvcF1dID0gc2VsZWN0ZWRcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9KVxuICB9XG5cbiAgaGFuZGxlQ2hpcEFjdGlvbihvcHRpb246IGFueSkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLm9wdGlvbnNTZWxlY3RlZFtvcHRpb25bdGhpcy52YWx1ZVByb3BdXSA9IGZhbHNlXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmZpbHRlcihzZWxlY3RlZE9wdGlvbiA9PlxuICAgICAgICBzZWxlY3RlZE9wdGlvblt0aGlzLnZhbHVlUHJvcF0gIT09IG9wdGlvblt0aGlzLnZhbHVlUHJvcF0pXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMub25DaGFuZ2UoW10pXG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDaGlwc0NvbnRhaW5lckNsYXNzZXMoKVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGRpc3BsYXkob3B0aW9uOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm4gJiYgdGhpcy5kaXNwbGF5Rm4ob3B0aW9uKVxuICB9XG5cbiAgZ2V0TW9yZUl0ZW1zKCkge1xuICAgIGNvbnN0IHNvcnRlZEZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLmZpbHRlcmVkT3B0aW9uc107XG5cbiAgICB0aGlzLnNvcnRTZWxlY3RlZEZpcnN0KHNvcnRlZEZpbHRlcmVkT3B0aW9ucywgdGhpcy5zZWxlY3Rpb24sIHRoaXMudmFsdWVQcm9wKVxuICAgIGNvbnN0IG5leHRQYWdlSXRlbXMgPSBzb3J0ZWRGaWx0ZXJlZE9wdGlvbnNcbiAgICAgIC5zbGljZShcbiAgICAgICAgdGhpcy5JVEVNU19QRVJfUEFHRSAqICh0aGlzLl9wYWdlTnVtYmVyIC0gMSksXG4gICAgICAgIHRoaXMuSVRFTVNfUEVSX1BBR0UgKiB0aGlzLl9wYWdlTnVtYmVyXG4gICAgICApO1xuXG4gICAgaWYgKG5leHRQYWdlSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLnBhZ2luYXRlZEZpbHRlcmVkT3B0aW9ucywgLi4ubmV4dFBhZ2VJdGVtc107XG4gICAgICB0aGlzLl9wYWdlTnVtYmVyICs9IDFcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBzb3J0U2VsZWN0ZWRGaXJzdChpdGVtczogQXJyYXk8YW55Piwgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiwgcHJvcDogc3RyaW5nKSB7XG4gICAgaXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYUlzU2VsZWN0ZWQgPSBzZWxlY3RlZEl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtW3Byb3BdID09PSBhW3Byb3BdKTtcbiAgICAgIGNvbnN0IGJJc1NlbGVjdGVkID0gc2VsZWN0ZWRJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbVtwcm9wXSA9PT0gYltwcm9wXSk7XG5cbiAgICAgIGlmIChhSXNTZWxlY3RlZCAmJiAhYklzU2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIGlmICghYUlzU2VsZWN0ZWQgJiYgYklzU2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuY2hlY2tBbGxWYWx1ZSA9IHRoaXMuaXNBbGxPcHRpb25zU2VsZWN0ZWRcbiAgICB0aGlzLnNob3dDaGlwcyA9IEJvb2xlYW4odGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSAmJiB0aGlzLmNsb3NlZCAmJiAoXG4gICAgICAhdGhpcy5tdWx0aXBsZSB8fCAhdGhpcy5jaGVja0FsbFZhbHVlIHx8ICh0aGlzLmNoZWNrQWxsVmFsdWUgJiYgIUJvb2xlYW4odGhpcy5hbGxPcHRpb25zU2VsZWN0ZWRUZXh0KSlcbiAgICApO1xuICAgIHRoaXMuc2hvd0FsbFNlbGVjdGlvbkJ0biA9IHRoaXMubXVsdGlwbGUgJiYgQm9vbGVhbih0aGlzLnNlbGVjdGlvbi5sZW5ndGggPiAxKSAmJiB0aGlzLmNoaXBzQ29sbGFwc2VkO1xuICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gdGhpcy5jbG9zZWQgJiYgKFxuICAgICAgIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCB8fCAodGhpcy5jaGVja0FsbFZhbHVlICYmIEJvb2xlYW4odGhpcy5hbGxPcHRpb25zU2VsZWN0ZWRUZXh0KSAmJiB0aGlzLm11bHRpcGxlKVxuICAgICk7XG4gICAgdGhpcy5zaG93RXhwYW5kZWRTZWxlY3Rpb25BY3Rpb25zID0gdGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5jaGlwc0NvbGxhcHNlZDtcbiAgICB0aGlzLnNob3dTZWxlY3RBbGxDaGVja2JveCA9IEJvb2xlYW4odGhpcy5wYWdpbmF0ZWRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSAmJiB0aGlzLnNlbGVjdEFsbDtcbiAgfVxuXG4gIC8vIENvbnRyb2wgVmFsdWUgQWNjZXNzb3JcblxuICB3cml0ZVZhbHVlKG9iajogYW55W10gfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IFtdO1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgdGhpcy5vcHRpb25zU2VsZWN0ZWQgPSB7fVxuICAgICAgb2JqLmZvckVhY2gob3B0aW9uID0+IHRoaXMub3B0aW9uc1NlbGVjdGVkW29wdGlvblt0aGlzLnZhbHVlUHJvcF1dID0gdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9ialxuICAgIH1cblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLmhhbmRsZVNlbGVjdGlvbkNoYW5nZShvYmopXG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyXCJcbiAgZGF0YS10ZXN0aWQ9XCJhdXRvY29tcGxldGUtd3JhcHBlclwiXG4gIFtjbGFzcy4tY2xvc2VkXT1cImNsb3NlZFwiXG4gIFtjbGFzcy4tb3BlbmVkXT1cIiFjbG9zZWRcIlxuICAjd3JhcHBlclxuICAoY2xpY2spPVwiaGFuZGxlQXV0b2NvbXBsZXRlQ2xpY2soKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGVcIiAjYXV0b2NvbXBsZXRlPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgYXNrQXV0b2ZvY3VzXG4gICAgICAqbmdJZj1cIiFjbG9zZWQ7IGVsc2Ugc2VsZWN0aW9uT3JQbGFjZWhvbGRlclwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dENvbnRyb2xcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0aW9uT3JQbGFjZWhvbGRlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Q2hpcHNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2hpcC1saXN0XCJcbiAgICAgICAgICBbY2xhc3MuLWNvbGxhcHNlZF09XCJjaGlwc0NvbGxhcHNlZFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY2hpcHNDb250YWluZXJDbGFzc2VzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhc2stY2hpcHNcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY2hpcHNDb2xsYXBzZWQgPyAnODUlJyA6ICc5NSUnXCJcbiAgICAgICAgICAgIFtzaG93QWN0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvbik9XCJoYW5kbGVDaGlwQWN0aW9uKG9wdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGRpc3BsYXkob3B0aW9uKSB9fVxuICAgICAgICAgIDwvYXNrLWNoaXBzPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImV4cGFuZFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlZS1tb3JlXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0FsbFNlbGVjdGlvbkJ0blwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2hpcHNMaXN0QWN0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgK3t7IHNlbGVjdGlvbi5sZW5ndGggLSAxIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlclwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAqbmdJZj1cInNob3dQbGFjZWhvbGRlclwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgY2hlY2tBbGxWYWx1ZSAmJiBhbGxPcHRpb25zU2VsZWN0ZWRUZXh0XG4gICAgICAgICAgICA/IGFsbE9wdGlvbnNTZWxlY3RlZFRleHRcbiAgICAgICAgICAgIDogcGxhY2Vob2xkZXJcbiAgICAgICAgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImJ0bi1leHBhbmQgbWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJidG4tZXhwYW5kXCJcbiAgICAgIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKm5nSWY9XCJjaGlwc0NvbGxhcHNlZFwiXG4gICAgPlxuICAgICAge3sgY2xvc2VkID8gXCJleHBhbmRfbW9yZVwiIDogXCJleHBhbmRfbGVzc1wiIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiAqbmdJZj1cInNob3dFeHBhbmRlZFNlbGVjdGlvbkFjdGlvbnNcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJzZWUtbW9yZVwiXG4gICAgICBkYXRhLXRlc3RpZD1cInNlZS1sZXNzXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDaGlwc0xpc3RBY3Rpb25DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7eyBcIlNFRV9MRVNTXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiYnRuLWV4cGFuZCBtYXRlcmlhbC1pY29uc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImJ0bi1leHBhbmRcIlxuICAgICAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgY2xvc2VkID8gXCJleHBhbmRfbW9yZVwiIDogXCJleHBhbmRfbGVzc1wiIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlDb250ZW50PlxuICA8ZGl2ICNsaXN0IGNsYXNzPVwibWVudS1jb250YWluZXJcIiBbY2xhc3MuLW11bHRpcGxlXT1cIm11bHRpcGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZTsgZWxzZSBtdWx0aXBsZVNlbGVjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3RcIiBhc2tTY3JvbGwgW2Fza1Njcm9sbFRocmVzaG9sZF09XCI1MFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGFnaW5hdGVkRmlsdGVyZWRPcHRpb25zXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24taXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuLWhpZ2hsaWdodGVkXT1cIlxuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvblt2YWx1ZVByb3BdID09PSBvcHRpb25bdmFsdWVQcm9wXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZChvcHRpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHRcIj57eyBkaXNwbGF5KG9wdGlvbikgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVNlbGVjdGlvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbVwiICpuZ0lmPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCI+XG4gICAgICAgIDxhc2stY2hlY2tib3hcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tBbGxWYWx1ZVwiXG4gICAgICAgICAgPnt7c2VsZWN0QWxsTWVzc2FnZX19PC9hc2stY2hlY2tib3hcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaXhlZE9wdGlvbnNJdGVtc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWl0ZW1cIj5cbiAgICAgICAgICA8YXNrLWNoZWNrYm94XG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc1NlbGVjdGVkW29wdGlvblt2YWx1ZVByb3BdXVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2Uob3B0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGVudFwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjaGVja2JveC1pdGVtLWljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uUHJvcFJlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJvcHRpb25baWNvblByb3BSZWZlcmVuY2VdXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7eyBkaXNwbGF5KG9wdGlvbikgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXNrLWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGFza1Njcm9sbFxuICAgICAgICBbYXNrU2Nyb2xsVGhyZXNob2xkXT1cIjUwXCJcbiAgICAgICAgKHNjcm9sbEVuZCk9XCJnZXRNb3JlSXRlbXMoKVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3B0aW9ucy1mb3JtXCJcbiAgICAgICAgY2xhc3M9XCJvcHRpb25zLWZvcm1cIlxuICAgICAgICBbY2xhc3MuLXNlbGVjdC1hbGxdPVwic2hvd1NlbGVjdEFsbENoZWNrYm94XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBhZ2luYXRlZEZpbHRlcmVkT3B0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbVwiPlxuICAgICAgICAgICAgPGFzay1jaGVja2JveFxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uc1NlbGVjdGVkW29wdGlvblt2YWx1ZVByb3BdXVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZShvcHRpb24sICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2hlY2tib3gtaXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImljb25Qcm9wUmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwib3B0aW9uW2ljb25Qcm9wUmVmZXJlbmNlXVwiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge3sgZGlzcGxheShvcHRpb24pIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hc2stY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cImVtcHR5XCIgKm5nSWY9XCIhZmlsdGVyZWRPcHRpb25zLmxlbmd0aFwiPnt7XG4gICAgICBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGVcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -14,7 +14,9 @@ export class AskDropdownDirective {
|
|
14
14
|
this.dropdownName = '';
|
15
15
|
this.dropdownDisabled = false;
|
16
16
|
this.dropdownOpenOnHover = false;
|
17
|
+
this.mouseThreshold = 300;
|
17
18
|
this.askDropdownOnClose = new EventEmitter();
|
19
|
+
this.mouseLocation = { mouseX: 0, mouseY: 0 };
|
18
20
|
this._isRendered = false;
|
19
21
|
this.overlayConfig = {};
|
20
22
|
this.AVAILABLE_POSITIONS = {
|
@@ -75,6 +77,14 @@ export class AskDropdownDirective {
|
|
75
77
|
showOnHoverIn() {
|
76
78
|
if (this.dropdownOpenOnHover) {
|
77
79
|
this.show();
|
80
|
+
this.mouseLocation = this.onMouseMove(event);
|
81
|
+
this.mouseDistanceSubscription = fromEvent(document.body, 'mousemove').subscribe((e) => {
|
82
|
+
const mouseYCloseOn = Math.abs(this.mouseLocation.mouseY - e.pageY) <= this.mouseThreshold;
|
83
|
+
const mouseXCloseOn = Math.abs(this.mouseLocation.mouseX - e.pageX) <= this.mouseThreshold;
|
84
|
+
if (!(mouseYCloseOn && mouseXCloseOn)) {
|
85
|
+
this.close();
|
86
|
+
}
|
87
|
+
});
|
78
88
|
}
|
79
89
|
}
|
80
90
|
show() {
|
@@ -94,6 +104,13 @@ export class AskDropdownDirective {
|
|
94
104
|
}
|
95
105
|
this._isRendered = true;
|
96
106
|
}
|
107
|
+
onMouseMove(event) {
|
108
|
+
const location = {
|
109
|
+
mouseX: event.clientX,
|
110
|
+
mouseY: event.pageY
|
111
|
+
};
|
112
|
+
return location;
|
113
|
+
}
|
97
114
|
close() {
|
98
115
|
this.containerRef = undefined;
|
99
116
|
this.overlayRef.detach();
|
@@ -102,12 +119,15 @@ export class AskDropdownDirective {
|
|
102
119
|
if (this.mouseOutSubscription) {
|
103
120
|
this.mouseOutSubscription.unsubscribe();
|
104
121
|
}
|
122
|
+
if (this.mouseDistanceSubscription) {
|
123
|
+
this.mouseDistanceSubscription.unsubscribe();
|
124
|
+
}
|
105
125
|
}
|
106
126
|
get isRendered() {
|
107
127
|
return this._isRendered;
|
108
128
|
}
|
109
129
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AskDropdownDirective, deps: [{ token: i1.OverlayPositionBuilder }, { token: i0.ElementRef }, { token: i1.Overlay }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
110
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.6", type: AskDropdownDirective, selector: "[askDropdown]", inputs: { askDropdown: "askDropdown", dropdownName: "dropdownName", positions: "positions", dropdownDisabled: "dropdownDisabled", dropdownOpenOnHover: "dropdownOpenOnHover" }, outputs: { askDropdownOnClose: "askDropdownOnClose" }, host: { listeners: { "mouseenter": "showOnHoverIn()", "click": "show()" } }, ngImport: i0 }); }
|
130
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.6", type: AskDropdownDirective, selector: "[askDropdown]", inputs: { askDropdown: "askDropdown", dropdownName: "dropdownName", positions: "positions", dropdownDisabled: "dropdownDisabled", dropdownOpenOnHover: "dropdownOpenOnHover", mouseThreshold: "mouseThreshold" }, outputs: { askDropdownOnClose: "askDropdownOnClose" }, host: { listeners: { "mouseenter": "showOnHoverIn()", "click": "show()" } }, ngImport: i0 }); }
|
111
131
|
}
|
112
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AskDropdownDirective, decorators: [{
|
113
133
|
type: Directive,
|
@@ -124,6 +144,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
124
144
|
type: Input
|
125
145
|
}], dropdownOpenOnHover: [{
|
126
146
|
type: Input
|
147
|
+
}], mouseThreshold: [{
|
148
|
+
type: Input
|
127
149
|
}], askDropdownOnClose: [{
|
128
150
|
type: Output
|
129
151
|
}], showOnHoverIn: [{
|
@@ -133,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
133
155
|
type: HostListener,
|
134
156
|
args: ['click']
|
135
157
|
}] } });
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLWRyb3Bkb3duLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2RpcmVjdGl2ZXMvYXNrLWRyb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBRVosS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUV6RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFNBQVMsRUFBZSxNQUFNLE1BQU0sQ0FBQzs7O0FBSzdDLE1BQU0sT0FBTyxvQkFBb0I7SUF1Qi9CLFlBQ1Usc0JBQThDLEVBQzlDLFVBQXNCLEVBQ3RCLE9BQWdCLEVBQ2hCLFdBQXVCO1FBSHZCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBeEJ4QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRXBDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isa0JBQWEsR0FBa0IsRUFBRSxDQUFDO1FBS3pCLHdCQUFtQixHQUFvSTtZQUN0SyxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUs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QUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7OEdBaklVLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUhoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjtxTEFHVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFrRkEsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxZQUFZO2dCQVFuQixJQUFJO3NCQURWLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnRcIjtcbmltcG9ydCB7Q29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsIE92ZXJsYXlSZWZ9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQge2Zyb21FdmVudCwgU3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXNrRHJvcGRvd25dJ1xufSlcbmV4cG9ydCBjbGFzcyBBc2tEcm9wZG93bkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYXNrRHJvcGRvd24/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBkcm9wZG93bk5hbWUgPSAnJztcbiAgQElucHV0KCkgcG9zaXRpb25zPzogQXJyYXk8Q29ubmVjdGVkUG9zaXRpb24+IHwgJ1RPUF9SSUdIVCcgfCAnVE9QX0xFRlQnIHwgJ0JPVFRPTV9SSUdIVCcgfCAnQk9UVE9NX0xFRlQnO1xuICBASW5wdXQoKSBkcm9wZG93bkRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRyb3Bkb3duT3Blbk9uSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgYXNrRHJvcGRvd25PbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgX2lzUmVuZGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBvdmVybGF5Q29uZmlnOiBPdmVybGF5Q29uZmlnID0ge307XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgY29udGFpbmVyUmVmITogQ29tcG9uZW50UmVmPERyb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3VzZU91dFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IEFWQUlMQUJMRV9QT1NJVElPTlM6IHsgVE9QX1JJR0hUOiBDb25uZWN0ZWRQb3NpdGlvbjsgVE9QX0xFRlQ6IENvbm5lY3RlZFBvc2l0aW9uOyBCT1RUT01fUklHSFQ6IENvbm5lY3RlZFBvc2l0aW9uOyBCT1RUT01fTEVGVDogQ29ubmVjdGVkUG9zaXRpb247IH0gPSB7XG4gICAgVE9QX1JJR0hUOiB7IHBhbmVsQ2xhc3M6ICdhc2stZHJvcGRvd24tdG9wLXJpZ2h0Jywgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgVE9QX0xFRlQ6IHsgcGFuZWxDbGFzczogJ2Fzay1kcm9wZG93bi10b3AtbGVmdCcsIG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIEJPVFRPTV9SSUdIVDogeyBwYW5lbENsYXNzOiAnYXNrLWRyb3Bkb3duLWJvdHRvbS1yaWdodCcsIG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICBCT1RUT01fTEVGVDogeyBwYW5lbENsYXNzOiAnYXNrLWRyb3Bkb3duLWJvdHRvbS1sZWZ0Jywgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheVBvc2l0aW9uQnVpbGRlcjogT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRPdmVybGF5Q29uZmlnKCk7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgdGhpcy5saXN0ZW5PdXRzaWRlQ2xpY2tzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldE92ZXJsYXlDb25maWcoKSB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRPdmVybGF5UG9zaXRpb24oKSk7XG5cbiAgICBjb25zdCBzY3JvbGxTdHJhdGVneSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcblxuICAgIHRoaXMub3ZlcmxheUNvbmZpZyA9IHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh0aGlzLm92ZXJsYXlDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdmVybGF5UG9zaXRpb24oKTogQ29ubmVjdGVkUG9zaXRpb25bXSB7XG4gICAgaWYgKHRoaXMucG9zaXRpb25zKSB7XG4gICAgICBsZXQgY2hvc2VuUG9zaXRpb25zOiBBcnJheTxDb25uZWN0ZWRQb3NpdGlvbj4gPSBbXTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc2l0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2hvc2VuUG9zaXRpb25zLnB1c2godGhpcy5BVkFJTEFCTEVfUE9TSVRJT05TW3RoaXMucG9zaXRpb25zXSk7XG4gICAgICB9XG5cbiAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5wb3NpdGlvbnMpKSB7XG4gICAgICAgIGNob3NlblBvc2l0aW9ucyA9IFsuLi50aGlzLnBvc2l0aW9uc107XG4gICAgICB9XG5cbiAgICAgIGNob3NlblBvc2l0aW9ucyA9IGNob3NlblBvc2l0aW9ucy5maWx0ZXIocCA9PiAhIXApO1xuXG4gICAgICBpZiAoY2hvc2VuUG9zaXRpb25zLmxlbmd0aCkgcmV0dXJuIGNob3NlblBvc2l0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5BVkFJTEFCTEVfUE9TSVRJT05TLkJPVFRPTV9SSUdIVCxcbiAgICAgIHRoaXMuQVZBSUxBQkxFX1BPU0lUSU9OUy5CT1RUT01fTEVGVCxcbiAgICAgIHRoaXMuQVZBSUxBQkxFX1BPU0lUSU9OUy5UT1BfUklHSFQsXG4gICAgICB0aGlzLkFWQUlMQUJMRV9QT1NJVElPTlMuVE9QX0xFRlQsXG4gICAgXVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5PdXRzaWRlQ2xpY2tzKCkge1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH0pXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgcHVibGljIHNob3dPbkhvdmVySW4oKSB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25PcGVuT25Ib3Zlcikge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBwdWJsaWMgc2hvdygpIHtcbiAgICBpZiAoIXRoaXMuYXNrRHJvcGRvd24gfHwgdGhpcy5pc1JlbmRlcmVkIHx8IHRoaXMuZHJvcGRvd25EaXNhYmxlZCApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCkpO1xuICAgIHRoaXMuY29udGFpbmVyUmVmLmluc3RhbmNlLmNvbnRlbnQgPSB0aGlzLmFza0Ryb3Bkb3duO1xuICAgIGlmICh0aGlzLmRyb3Bkb3duT3Blbk9uSG92ZXIpIHtcbiAgICAgIHRoaXMubW91c2VPdXRTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQodGhpcy5jb250YWluZXJSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCwgJ21vdXNlb3V0JylcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0Py5jbGFzc0xpc3QuY29udGFpbnMoJ2Nkay1vdmVybGF5LWJhY2tkcm9wJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLl9pc1JlbmRlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgdGhpcy5faXNSZW5kZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuYXNrRHJvcGRvd25PbkNsb3NlLmVtaXQoKTtcblxuICAgIGlmICh0aGlzLm1vdXNlT3V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vdXNlT3V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpc1JlbmRlcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1JlbmRlcmVkO1xuICB9XG5cbn1cbiJdfQ==
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLWRyb3Bkb3duLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvbGliL2RpcmVjdGl2ZXMvYXNrLWRyb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBRVosS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUV6RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFNBQVMsRUFBMkIsTUFBTSxNQUFNLENBQUM7OztBQUt6RCxNQUFNLE9BQU8sb0JBQW9CO0lBd0IvQixZQUNVLHNCQUE4QyxFQUM5QyxVQUFzQixFQUN0QixPQUFnQixFQUNoQixXQUF1QjtRQUh2QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpCeEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUNyQyxtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUNwQix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLGtCQUFhLEdBQXFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFDekUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isa0JBQWEsR0FBa0IsRUFBRSxD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QUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzhHQXRKVSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7cUxBR1UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFtRkEsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxZQUFZO2dCQWtCbkIsSUFBSTtzQkFEVixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RHJvcGRvd25Db250YWluZXJDb21wb25lbnR9IGZyb20gXCIuLi9jb21wb25lbnRzL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50XCI7XG5pbXBvcnQge0Nvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UG9zaXRpb25CdWlsZGVyLCBPdmVybGF5UmVmfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7Q29tcG9uZW50UG9ydGFsfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHtmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Fza0Ryb3Bkb3duXSdcbn0pXG5leHBvcnQgY2xhc3MgQXNrRHJvcGRvd25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGFza0Ryb3Bkb3duPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgZHJvcGRvd25OYW1lID0gJyc7XG4gIEBJbnB1dCgpIHBvc2l0aW9ucz86IEFycmF5PENvbm5lY3RlZFBvc2l0aW9uPiB8ICdUT1BfUklHSFQnIHwgJ1RPUF9MRUZUJyB8ICdCT1RUT01fUklHSFQnIHwgJ0JPVFRPTV9MRUZUJztcbiAgQElucHV0KCkgZHJvcGRvd25EaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkcm9wZG93bk9wZW5PbkhvdmVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1vdXNlVGhyZXNob2xkID0gMzAwO1xuICBAT3V0cHV0KCkgYXNrRHJvcGRvd25PbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIG1vdXNlTG9jYXRpb246IHttb3VzZVg6IG51bWJlcjsgbW91c2VZOiBudW1iZXJ9ID0ge21vdXNlWDogMCwgbW91c2VZOiAwfTtcbiAgcHJpdmF0ZSBfaXNSZW5kZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWcgPSB7fTtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmITogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBjb250YWluZXJSZWYhOiBDb21wb25lbnRSZWY8RHJvcGRvd25Db250YWluZXJDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdXNlT3V0U3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG1vdXNlRGlzdGFuY2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBBVkFJTEFCTEVfUE9TSVRJT05TOiB7IFRPUF9SSUdIVDogQ29ubmVjdGVkUG9zaXRpb247IFRPUF9MRUZUOiBDb25uZWN0ZWRQb3NpdGlvbjsgQk9UVE9NX1JJR0hUOiBDb25uZWN0ZWRQb3NpdGlvbjsgQk9UVE9NX0xFRlQ6IENvbm5lY3RlZFBvc2l0aW9uOyB9ID0ge1xuICAgIFRPUF9SSUdIVDogeyBwYW5lbENsYXNzOiAnYXNrLWRyb3Bkb3duLXRvcC1yaWdodCcsIG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIFRPUF9MRUZUOiB7IHBhbmVsQ2xhc3M6ICdhc2stZHJvcGRvd24tdG9wLWxlZnQnLCBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICBCT1RUT01fUklHSFQ6IHsgcGFuZWxDbGFzczogJ2Fzay1kcm9wZG93bi1ib3R0b20tcmlnaHQnLCBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgQk9UVE9NX0xFRlQ6IHsgcGFuZWxDbGFzczogJ2Fzay1kcm9wZG93bi1ib3R0b20tbGVmdCcsIG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9kZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0T3ZlcmxheUNvbmZpZygpO1xuICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIHRoaXMubGlzdGVuT3V0c2lkZUNsaWNrcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPdmVybGF5Q29uZmlnKCkge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlQb3NpdGlvbkJ1aWxkZXJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgIC53aXRoUG9zaXRpb25zKHRoaXMuZ2V0T3ZlcmxheVBvc2l0aW9uKCkpO1xuXG4gICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG5cbiAgICB0aGlzLm92ZXJsYXlDb25maWcgPSB7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3lcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCkge1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUodGhpcy5vdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3ZlcmxheVBvc2l0aW9uKCk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgIGlmICh0aGlzLnBvc2l0aW9ucykge1xuICAgICAgbGV0IGNob3NlblBvc2l0aW9uczogQXJyYXk8Q29ubmVjdGVkUG9zaXRpb24+ID0gW107XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3NpdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNob3NlblBvc2l0aW9ucy5wdXNoKHRoaXMuQVZBSUxBQkxFX1BPU0lUSU9OU1t0aGlzLnBvc2l0aW9uc10pO1xuICAgICAgfVxuXG4gICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMucG9zaXRpb25zKSkge1xuICAgICAgICBjaG9zZW5Qb3NpdGlvbnMgPSBbLi4udGhpcy5wb3NpdGlvbnNdO1xuICAgICAgfVxuXG4gICAgICBjaG9zZW5Qb3NpdGlvbnMgPSBjaG9zZW5Qb3NpdGlvbnMuZmlsdGVyKHAgPT4gISFwKTtcblxuICAgICAgaWYgKGNob3NlblBvc2l0aW9ucy5sZW5ndGgpIHJldHVybiBjaG9zZW5Qb3NpdGlvbnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuQVZBSUxBQkxFX1BPU0lUSU9OUy5CT1RUT01fUklHSFQsXG4gICAgICB0aGlzLkFWQUlMQUJMRV9QT1NJVElPTlMuQk9UVE9NX0xFRlQsXG4gICAgICB0aGlzLkFWQUlMQUJMRV9QT1NJVElPTlMuVE9QX1JJR0hULFxuICAgICAgdGhpcy5BVkFJTEFCTEVfUE9TSVRJT05TLlRPUF9MRUZULFxuICAgIF1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuT3V0c2lkZUNsaWNrcygpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9KVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHB1YmxpYyBzaG93T25Ib3ZlckluKCkge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duT3Blbk9uSG92ZXIpIHtcblxuICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB0aGlzLm1vdXNlTG9jYXRpb24gPSB0aGlzLm9uTW91c2VNb3ZlKGV2ZW50KVxuICAgICAgdGhpcy5tb3VzZURpc3RhbmNlU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LmJvZHksICdtb3VzZW1vdmUnKS5zdWJzY3JpYmUoKGU6IGFueSkgPT4ge1xuXG4gICAgICAgIGNvbnN0IG1vdXNlWUNsb3NlT24gPSBNYXRoLmFicyh0aGlzLm1vdXNlTG9jYXRpb24ubW91c2VZIC0gZS5wYWdlWSkgPD0gdGhpcy5tb3VzZVRocmVzaG9sZDtcbiAgICAgICAgY29uc3QgbW91c2VYQ2xvc2VPbiA9IE1hdGguYWJzKHRoaXMubW91c2VMb2NhdGlvbi5tb3VzZVggLSBlLnBhZ2VYKSA8PSB0aGlzLm1vdXNlVGhyZXNob2xkO1xuICAgICAgICBpZiAoIShtb3VzZVlDbG9zZU9uICYmIG1vdXNlWENsb3NlT24pKXtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHVibGljIHNob3coKSB7XG4gICAgaWYgKCF0aGlzLmFza0Ryb3Bkb3duIHx8IHRoaXMuaXNSZW5kZXJlZCB8fCB0aGlzLmRyb3Bkb3duRGlzYWJsZWQgKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXJSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoRHJvcGRvd25Db250YWluZXJDb21wb25lbnQpKTtcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5pbnN0YW5jZS5jb250ZW50ID0gdGhpcy5hc2tEcm9wZG93bjtcbiAgICBpZiAodGhpcy5kcm9wZG93bk9wZW5PbkhvdmVyKSB7XG4gICAgICB0aGlzLm1vdXNlT3V0U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuY29udGFpbmVyUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsICdtb3VzZW91dCcpXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjZGstb3ZlcmxheS1iYWNrZHJvcCcpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5faXNSZW5kZXJlZCA9IHRydWU7XG4gIH1cbiAgcHVibGljIG9uTW91c2VNb3ZlKGV2ZW50OiBhbnkpOiB7bW91c2VYOiBudW1iZXI7IG1vdXNlWTogbnVtYmVyfSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgICBtb3VzZVg6IGV2ZW50LmNsaWVudFgsXG4gICAgICBtb3VzZVk6IGV2ZW50LnBhZ2VZXG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgdGhpcy5faXNSZW5kZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuYXNrRHJvcGRvd25PbkNsb3NlLmVtaXQoKTtcblxuICAgIGlmICh0aGlzLm1vdXNlT3V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vdXNlT3V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vdXNlRGlzdGFuY2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubW91c2VEaXN0YW5jZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZW5kZXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNSZW5kZXJlZDtcbiAgfVxuXG59XG4iXX0=
|